UNPKG

@autobe/agent

Version:

AI backend server code generator

160 lines 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AutoBeTokenUsageComponent = void 0; /** * Token usage component for individual AI agents in the vibe coding pipeline. * * Represents detailed token consumption statistics for a specific processing * phase (facade, analyze, prisma, interface, test, or realize). This class * tracks both input and output token usage with granular breakdowns, enabling * precise cost analysis and performance optimization for each agent. * * The component structure includes: * * - Total token count for quick cost calculations * - Input token breakdown with cache efficiency metrics * - Output token categorization by generation type * * This granular tracking helps identify optimization opportunities and * understand the computational characteristics of each agent phase. * * @author SunRabbit123 */ class AutoBeTokenUsageComponent { /** * Total token count combining all input and output tokens. * * Represents the complete token consumption for this component, providing a * single metric for overall resource utilization. This value is critical for * cost calculations and comparing efficiency across different agents or * processing phases. */ get total() { return this.input.total + this.output.total; } constructor(props) { if (props === undefined) { this.input = { total: 0, cached: 0 }; this.output = { total: 0, reasoning: 0, accepted_prediction: 0, rejected_prediction: 0, }; } else { this.input = props.input; this.output = props.output; } } assign(props) { this.input.total = props.input.total; this.input.cached = props.input.cached; this.output.total = props.output.total; this.output.reasoning = props.output.reasoning; this.output.accepted_prediction = props.output.accepted_prediction; this.output.rejected_prediction = props.output.rejected_prediction; } /** * Export token usage data as JSON. * * Converts the component's token usage statistics to the standardized * IAutoBeTokenUsageJson.IComponent format. This serialization maintains the * complete structure including total counts and detailed breakdowns for both * input and output tokens. * * @returns JSON representation of the token usage component */ toJSON() { return { total: this.total, input: { total: this.input.total, cached: this.input.cached, }, output: { total: this.output.total, reasoning: this.output.reasoning, accepted_prediction: this.output.accepted_prediction, rejected_prediction: this.output.rejected_prediction, }, }; } /* ----------------------------------------------------------- OPERATORS ----------------------------------------------------------- */ /** * Add token usage data to current statistics. * * Increments all token counters in this component by the corresponding values * from the provided component data. This method performs in-place updates, * modifying the current instance rather than creating a new one. * * Updates include: * * - Total token count * - Input tokens (both total and cached) * - Output tokens (reasoning, accepted/rejected predictions) * * @param props - Token usage component data to add to current values */ increment(props) { this.input.total += props.input.total; this.input.cached += props.input.cached; this.output.total += props.output.total; this.output.reasoning += props.output.reasoning; this.output.accepted_prediction += props.output.accepted_prediction; this.output.rejected_prediction += props.output.rejected_prediction; } /** @internal */ decrement(props) { this.input.total -= props.input.total; this.input.cached -= props.input.cached; this.output.total -= props.output.total; this.output.reasoning -= props.output.reasoning; this.output.accepted_prediction -= props.output.accepted_prediction; this.output.rejected_prediction -= props.output.rejected_prediction; } /** * Create new component combining two token usage statistics. * * Performs element-wise addition of all token counters from two components, * creating a new AutoBeTokenUsageComponent instance with the combined totals. * This static method is useful for aggregating token usage across multiple * agent invocations or combining statistics from parallel processing. * * @param a - First token usage component * @param b - Second token usage component * @returns New component with combined token statistics */ static plus(a, b) { return new AutoBeTokenUsageComponent({ input: { total: a.input.total + b.input.total, cached: a.input.cached + b.input.cached, }, output: { total: a.output.total + b.output.total, reasoning: a.output.reasoning + b.output.reasoning, accepted_prediction: a.output.accepted_prediction + b.output.accepted_prediction, rejected_prediction: a.output.rejected_prediction + b.output.rejected_prediction, }, }); } static minus(a, b) { return new AutoBeTokenUsageComponent({ input: { total: a.input.total - b.input.total, cached: a.input.cached - b.input.cached, }, output: { total: a.output.total - b.output.total, reasoning: a.output.reasoning - b.output.reasoning, accepted_prediction: a.output.accepted_prediction - b.output.accepted_prediction, rejected_prediction: a.output.rejected_prediction - b.output.rejected_prediction, }, }); } } exports.AutoBeTokenUsageComponent = AutoBeTokenUsageComponent; //# sourceMappingURL=AutoBeTokenUsageComponent.js.map