@xoxoai/checkmate 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +244 -0
- package/dist/ai/client.d.ts +49 -0
- package/dist/ai/client.d.ts.map +1 -0
- package/dist/ai/client.js +244 -0
- package/dist/ai/client.js.map +1 -0
- package/dist/ai/message-handler.d.ts +11 -0
- package/dist/ai/message-handler.d.ts.map +1 -0
- package/dist/ai/message-handler.js +33 -0
- package/dist/ai/message-handler.js.map +1 -0
- package/dist/ai/message-history.d.ts +19 -0
- package/dist/ai/message-history.d.ts.map +1 -0
- package/dist/ai/message-history.js +48 -0
- package/dist/ai/message-history.js.map +1 -0
- package/dist/ai/prompts.d.ts +4 -0
- package/dist/ai/prompts.d.ts.map +1 -0
- package/dist/ai/prompts.js +24 -0
- package/dist/ai/prompts.js.map +1 -0
- package/dist/ai/rate-limit-policy.d.ts +7 -0
- package/dist/ai/rate-limit-policy.d.ts.map +1 -0
- package/dist/ai/rate-limit-policy.js +17 -0
- package/dist/ai/rate-limit-policy.js.map +1 -0
- package/dist/ai/response-processor.d.ts +20 -0
- package/dist/ai/response-processor.d.ts.map +1 -0
- package/dist/ai/response-processor.js +62 -0
- package/dist/ai/response-processor.js.map +1 -0
- package/dist/ai/token-pricing.d.ts +13 -0
- package/dist/ai/token-pricing.d.ts.map +1 -0
- package/dist/ai/token-pricing.js +348 -0
- package/dist/ai/token-pricing.js.map +1 -0
- package/dist/ai/token-tracker.d.ts +33 -0
- package/dist/ai/token-tracker.d.ts.map +1 -0
- package/dist/ai/token-tracker.js +138 -0
- package/dist/ai/token-tracker.js.map +1 -0
- package/dist/ai/tool-response-handler.d.ts +21 -0
- package/dist/ai/tool-response-handler.d.ts.map +1 -0
- package/dist/ai/tool-response-handler.js +54 -0
- package/dist/ai/tool-response-handler.js.map +1 -0
- package/dist/config/runtime-config.d.ts +21 -0
- package/dist/config/runtime-config.d.ts.map +1 -0
- package/dist/config/runtime-config.js +98 -0
- package/dist/config/runtime-config.js.map +1 -0
- package/dist/core.d.ts +8 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +4 -0
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/salesforce/authenticator.d.ts +27 -0
- package/dist/integrations/salesforce/authenticator.d.ts.map +1 -0
- package/dist/integrations/salesforce/authenticator.js +27 -0
- package/dist/integrations/salesforce/authenticator.js.map +1 -0
- package/dist/integrations/salesforce/cli-handler.d.ts +14 -0
- package/dist/integrations/salesforce/cli-handler.d.ts.map +1 -0
- package/dist/integrations/salesforce/cli-handler.js +50 -0
- package/dist/integrations/salesforce/cli-handler.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +4 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +5 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +15 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/playwright.d.ts +102 -0
- package/dist/playwright.d.ts.map +1 -0
- package/dist/playwright.js +116 -0
- package/dist/playwright.js.map +1 -0
- package/dist/runtime/extension.d.ts +274 -0
- package/dist/runtime/extension.d.ts.map +1 -0
- package/dist/runtime/extension.js +171 -0
- package/dist/runtime/extension.js.map +1 -0
- package/dist/runtime/runner.d.ts +94 -0
- package/dist/runtime/runner.d.ts.map +1 -0
- package/dist/runtime/runner.js +86 -0
- package/dist/runtime/runner.js.map +1 -0
- package/dist/runtime/step-execution.d.ts +17 -0
- package/dist/runtime/step-execution.d.ts.map +1 -0
- package/dist/runtime/step-execution.js +49 -0
- package/dist/runtime/step-execution.js.map +1 -0
- package/dist/runtime/types.d.ts +79 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/salesforce.d.ts +71 -0
- package/dist/salesforce.d.ts.map +1 -0
- package/dist/salesforce.js +73 -0
- package/dist/salesforce.js.map +1 -0
- package/dist/tools/browser/screenshot-service.d.ts +10 -0
- package/dist/tools/browser/screenshot-service.d.ts.map +1 -0
- package/dist/tools/browser/screenshot-service.js +23 -0
- package/dist/tools/browser/screenshot-service.js.map +1 -0
- package/dist/tools/browser/snapshot-filter/index.d.ts +4 -0
- package/dist/tools/browser/snapshot-filter/index.d.ts.map +1 -0
- package/dist/tools/browser/snapshot-filter/index.js +4 -0
- package/dist/tools/browser/snapshot-filter/index.js.map +1 -0
- package/dist/tools/browser/snapshot-filter/semantic-scorer.d.ts +15 -0
- package/dist/tools/browser/snapshot-filter/semantic-scorer.d.ts.map +1 -0
- package/dist/tools/browser/snapshot-filter/semantic-scorer.js +99 -0
- package/dist/tools/browser/snapshot-filter/semantic-scorer.js.map +1 -0
- package/dist/tools/browser/snapshot-filter/snapshot-filter.d.ts +4 -0
- package/dist/tools/browser/snapshot-filter/snapshot-filter.d.ts.map +1 -0
- package/dist/tools/browser/snapshot-filter/snapshot-filter.js +57 -0
- package/dist/tools/browser/snapshot-filter/snapshot-filter.js.map +1 -0
- package/dist/tools/browser/snapshot-filter/tree-reconstructor.d.ts +3 -0
- package/dist/tools/browser/snapshot-filter/tree-reconstructor.d.ts.map +1 -0
- package/dist/tools/browser/snapshot-filter/tree-reconstructor.js +85 -0
- package/dist/tools/browser/snapshot-filter/tree-reconstructor.js.map +1 -0
- package/dist/tools/browser/snapshot-service.d.ts +19 -0
- package/dist/tools/browser/snapshot-service.d.ts.map +1 -0
- package/dist/tools/browser/snapshot-service.js +67 -0
- package/dist/tools/browser/snapshot-service.js.map +1 -0
- package/dist/tools/browser/tool.d.ts +34 -0
- package/dist/tools/browser/tool.d.ts.map +1 -0
- package/dist/tools/browser/tool.js +226 -0
- package/dist/tools/browser/tool.js.map +1 -0
- package/dist/tools/browser/transient-state-tracker.d.ts +16 -0
- package/dist/tools/browser/transient-state-tracker.d.ts.map +1 -0
- package/dist/tools/browser/transient-state-tracker.js +266 -0
- package/dist/tools/browser/transient-state-tracker.js.map +1 -0
- package/dist/tools/define-agent-tool.d.ts +45 -0
- package/dist/tools/define-agent-tool.d.ts.map +1 -0
- package/dist/tools/define-agent-tool.js +55 -0
- package/dist/tools/define-agent-tool.js.map +1 -0
- package/dist/tools/dispatcher.d.ts +11 -0
- package/dist/tools/dispatcher.d.ts.map +1 -0
- package/dist/tools/dispatcher.js +49 -0
- package/dist/tools/dispatcher.js.map +1 -0
- package/dist/tools/loop-detector.d.ts +27 -0
- package/dist/tools/loop-detector.d.ts.map +1 -0
- package/dist/tools/loop-detector.js +76 -0
- package/dist/tools/loop-detector.js.map +1 -0
- package/dist/tools/registry.d.ts +21 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +46 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/salesforce/login-tool.d.ts +7 -0
- package/dist/tools/salesforce/login-tool.d.ts.map +1 -0
- package/dist/tools/salesforce/login-tool.js +25 -0
- package/dist/tools/salesforce/login-tool.js.map +1 -0
- package/dist/tools/step/result-tool.d.ts +7 -0
- package/dist/tools/step/result-tool.d.ts.map +1 -0
- package/dist/tools/step/result-tool.js +32 -0
- package/dist/tools/step/result-tool.js.map +1 -0
- package/dist/tools/tool-contract.d.ts +3 -0
- package/dist/tools/tool-contract.d.ts.map +1 -0
- package/dist/tools/tool-contract.js +2 -0
- package/dist/tools/tool-contract.js.map +1 -0
- package/dist/tools/types.d.ts +139 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +4 -0
- package/dist/tools/types.js.map +1 -0
- package/docs/EXTENSIONS.md +233 -0
- package/docs/GUIDE.md +467 -0
- package/docs/ROADMAP.md +47 -0
- package/package.json +106 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export class MessageHistory {
|
|
2
|
+
static SNAPSHOT_IDENTIFIER = 'this is a current page snapshot';
|
|
3
|
+
static SCREENSHOT_IDENTIFIER = 'this is a current screenshot of the page';
|
|
4
|
+
static TOOL_EXECUTION_SUMMARY_IDENTIFIER = 'tool execution summary';
|
|
5
|
+
buildInitialMessages(config) {
|
|
6
|
+
return [
|
|
7
|
+
{
|
|
8
|
+
role: 'system',
|
|
9
|
+
content: [{ type: 'text', text: config.systemPrompt }],
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
role: 'user',
|
|
13
|
+
content: [{ type: 'text', text: config.userPrompt }],
|
|
14
|
+
},
|
|
15
|
+
...(config.contextMessages ?? []),
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
createSnapshotMessage(snapshotContent) {
|
|
19
|
+
return {
|
|
20
|
+
role: 'user',
|
|
21
|
+
content: [{ type: 'text', text: `${MessageHistory.SNAPSHOT_IDENTIFIER}:\n${snapshotContent}` }],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
createScreenshotMessage(base64Data, mimeType = 'image/png') {
|
|
25
|
+
return {
|
|
26
|
+
role: 'user',
|
|
27
|
+
content: [
|
|
28
|
+
{ type: 'text', text: MessageHistory.SCREENSHOT_IDENTIFIER },
|
|
29
|
+
{ type: 'image_url', image_url: { url: `data:${mimeType};base64,${base64Data}`, detail: 'high' } },
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
removeEphemeralStateMessages(aiClient) {
|
|
34
|
+
aiClient.replaceHistory(aiClient.getMessages().filter((message) => !this.isEphemeralStateMessage(message)));
|
|
35
|
+
}
|
|
36
|
+
isEphemeralStateMessage(message) {
|
|
37
|
+
if (message.role !== 'user' || !Array.isArray(message.content) || message.content.length === 0) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const firstPart = message.content[0];
|
|
41
|
+
if (!('text' in firstPart) || typeof firstPart.text !== 'string') {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return (firstPart.text.startsWith(`${MessageHistory.SNAPSHOT_IDENTIFIER}:`) ||
|
|
45
|
+
firstPart.text === MessageHistory.SCREENSHOT_IDENTIFIER);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=message-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-history.js","sourceRoot":"","sources":["../../src/ai/message-history.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,cAAc;IAC1B,MAAM,CAAU,mBAAmB,GAAG,iCAAiC,CAAA;IACvE,MAAM,CAAU,qBAAqB,GAAG,0CAA0C,CAAA;IAClF,MAAM,CAAU,iCAAiC,GAAG,wBAAwB,CAAA;IAE5E,oBAAoB,CAAC,MAAgC;QACpD,OAAO;YACN;gBACC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;aACtD;YACD;gBACC,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;aACpD;YACD,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;SACjC,CAAA;IACF,CAAC;IAED,qBAAqB,CAAC,eAA8B;QACnD,OAAO;YACN,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,mBAAmB,MAAM,eAAe,EAAE,EAAE,CAAC;SAC/F,CAAA;IACF,CAAC;IAED,uBAAuB,CAAC,UAAkB,EAAE,WAAmB,WAAW;QACzE,OAAO;YACN,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,qBAAqB,EAAE;gBAC5D,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,QAAQ,WAAW,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;aAClG;SACD,CAAA;IACF,CAAC;IAED,4BAA4B,CAAC,QAAkB;QAC9C,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5G,CAAC;IAEO,uBAAuB,CAAC,OAAmC;QAClE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChG,OAAO,KAAK,CAAA;QACb,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACpC,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClE,OAAO,KAAK,CAAA;QACb,CAAC;QAED,OAAO,CACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,mBAAmB,GAAG,CAAC;YACnE,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB,CACvD,CAAA;IACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAGvC,eAAO,MAAM,kBAAkB,GAAI,eAAc,MAAM,EAAO,WAkB7D,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,MAAM,IAAI,WAIhD,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StepResultTool } from '../tools/step/result-tool';
|
|
2
|
+
export const STEP_SYSTEM_PROMPT = (instructions = []) => {
|
|
3
|
+
const extensionInstructions = instructions.length > 0
|
|
4
|
+
? `
|
|
5
|
+
|
|
6
|
+
# EXTENSIONS:
|
|
7
|
+
${instructions.join('\n')}`
|
|
8
|
+
: '';
|
|
9
|
+
return `You are a quality assurance assistant executing test steps.
|
|
10
|
+
|
|
11
|
+
# RULES:
|
|
12
|
+
Be objective when asserting if expected results are met and focus on executing all the actions.
|
|
13
|
+
Never ask for user input. Use only tools to proceed with the step.
|
|
14
|
+
If you cannot proceed, fail the step and provide the reason as the actual result.
|
|
15
|
+
If the step fails, call '${StepResultTool.TOOL_FAIL_TEST_STEP}' with the actual result.
|
|
16
|
+
If the step succeeds, call '${StepResultTool.TOOL_PASS_TEST_STEP}' with the actual result.
|
|
17
|
+
${extensionInstructions}`;
|
|
18
|
+
};
|
|
19
|
+
export const STEP_START_USER_PROMPT = (step) => `Here is the test step I want you to execute.
|
|
20
|
+
|
|
21
|
+
# STEP:
|
|
22
|
+
${JSON.stringify(step, null, 2)}
|
|
23
|
+
`;
|
|
24
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,eAAyB,EAAE,EAAE,EAAE;IACjE,MAAM,qBAAqB,GAC1B,YAAY,CAAC,MAAM,GAAG,CAAC;QACtB,CAAC,CAAC;;;EAGH,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACxB,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;;;;;;2BAMmB,cAAc,CAAC,mBAAmB;8BAC/B,cAAc,CAAC,mBAAmB;EAC9D,qBAAqB,EAAE,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC;;;EAGpD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;CAC9B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit-policy.d.ts","sourceRoot":"","sources":["../../src/ai/rate-limit-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD,qBAAa,eAAe;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,gBAAsB;IAEnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RuntimeConfig } from '../config/runtime-config';
|
|
2
|
+
import { logger } from '../logging';
|
|
3
|
+
export class RateLimitPolicy {
|
|
4
|
+
config;
|
|
5
|
+
constructor(config = new RuntimeConfig()) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
}
|
|
8
|
+
async wait() {
|
|
9
|
+
const delay = this.config.getApiRateLimitDelayMs();
|
|
10
|
+
if (delay <= 0) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
logger.warn(`waiting: ${Math.floor(delay / 1000)} seconds to avoid rate limit`);
|
|
14
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=rate-limit-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit-policy.js","sourceRoot":"","sources":["../../src/ai/rate-limit-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,MAAM,OAAO,eAAe;IACE;IAA7B,YAA6B,SAAS,IAAI,aAAa,EAAE;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAG,CAAC;IAE7D,KAAK,CAAC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAA;QAClD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChB,OAAM;QACP,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC/E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAC3D,CAAC;CACD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChatCompletion } from 'openai/resources/chat/completions';
|
|
2
|
+
import { Step, ResolveStepResult } from '../runtime/types';
|
|
3
|
+
import { AiClient } from './client';
|
|
4
|
+
import { ExtensionHost } from '../runtime/extension';
|
|
5
|
+
export type ResponseProcessorDependencies = {
|
|
6
|
+
aiClient: AiClient;
|
|
7
|
+
extensionHost: ExtensionHost;
|
|
8
|
+
};
|
|
9
|
+
export declare class ResponseProcessor {
|
|
10
|
+
private readonly tokenTracker;
|
|
11
|
+
private readonly toolDispatcher;
|
|
12
|
+
private readonly toolResponseHandler;
|
|
13
|
+
private readonly rateLimitPolicy;
|
|
14
|
+
private readonly messageHandler;
|
|
15
|
+
private readonly aiClient;
|
|
16
|
+
constructor({ aiClient, extensionHost }: ResponseProcessorDependencies);
|
|
17
|
+
resetStepTokens(): void;
|
|
18
|
+
handleResponse(response: ChatCompletion, step: Step, resolveStepResult: ResolveStepResult): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=response-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-processor.d.ts","sourceRoot":"","sources":["../../src/ai/response-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAI1D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAMnC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,MAAM,6BAA6B,GAAG;IAC3C,QAAQ,EAAE,QAAQ,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;CAC5B,CAAA;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEvB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,6BAA6B;IAOtE,eAAe,IAAI,IAAI;IAIjB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CA+C/G"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ToolDispatcher } from '../tools/dispatcher';
|
|
2
|
+
import { MessageHandler } from './message-handler';
|
|
3
|
+
import { MessageHistory } from './message-history';
|
|
4
|
+
import { RateLimitPolicy } from './rate-limit-policy';
|
|
5
|
+
import { TokenTracker } from './token-tracker';
|
|
6
|
+
import { ToolResponseHandler } from './tool-response-handler';
|
|
7
|
+
export class ResponseProcessor {
|
|
8
|
+
tokenTracker = new TokenTracker();
|
|
9
|
+
toolDispatcher;
|
|
10
|
+
toolResponseHandler;
|
|
11
|
+
rateLimitPolicy = new RateLimitPolicy();
|
|
12
|
+
messageHandler;
|
|
13
|
+
aiClient;
|
|
14
|
+
constructor({ aiClient, extensionHost }) {
|
|
15
|
+
this.aiClient = aiClient;
|
|
16
|
+
this.toolDispatcher = new ToolDispatcher(aiClient.getToolRegistry());
|
|
17
|
+
this.toolResponseHandler = new ToolResponseHandler(aiClient, new MessageHistory(), this, extensionHost);
|
|
18
|
+
this.messageHandler = new MessageHandler(aiClient, this);
|
|
19
|
+
}
|
|
20
|
+
resetStepTokens() {
|
|
21
|
+
this.tokenTracker.resetStep();
|
|
22
|
+
}
|
|
23
|
+
async handleResponse(response, step, resolveStepResult) {
|
|
24
|
+
await this.rateLimitPolicy.wait();
|
|
25
|
+
const historyTokenCount = this.aiClient.countHistoryTokens();
|
|
26
|
+
this.tokenTracker.log(response, historyTokenCount, this.aiClient.getRuntimeConfig().getModel());
|
|
27
|
+
if (!response.choices || response.choices.length === 0) {
|
|
28
|
+
throw new Error(`No choices found in response:\n${JSON.stringify(response, null, 2)}`);
|
|
29
|
+
}
|
|
30
|
+
for (const choice of response.choices) {
|
|
31
|
+
if (!choice.message.tool_calls || choice.message.tool_calls.length === 0) {
|
|
32
|
+
await this.messageHandler.handle(choice, step, resolveStepResult);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const toolResponses = [];
|
|
36
|
+
let dispatchedToolCall = false;
|
|
37
|
+
for (const toolCall of choice.message.tool_calls) {
|
|
38
|
+
if (toolCall.type !== 'function') {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
dispatchedToolCall = true;
|
|
42
|
+
const parsedToolCall = {
|
|
43
|
+
name: toolCall.function.name,
|
|
44
|
+
arguments: JSON.parse(toolCall.function.arguments || '{}'),
|
|
45
|
+
};
|
|
46
|
+
const toolResponse = await this.toolDispatcher.dispatch(parsedToolCall, { step, resolveStepResult });
|
|
47
|
+
if (toolResponse) {
|
|
48
|
+
toolResponses.push({ toolCallId: toolCall.id, toolCall: parsedToolCall, toolResponse });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (toolResponses.length > 0) {
|
|
52
|
+
await this.toolResponseHandler.handleMultiple(toolResponses, step, resolveStepResult);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (dispatchedToolCall) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
await this.messageHandler.handle(choice, step, resolveStepResult);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=response-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-processor.js","sourceRoot":"","sources":["../../src/ai/response-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TokenPricing estimates provider token costs in USD.
|
|
3
|
+
*/
|
|
4
|
+
export declare class TokenPricing {
|
|
5
|
+
private static roundToCents;
|
|
6
|
+
private static inputPricePerMillionUSD;
|
|
7
|
+
private static outputPricePerMillionUSD;
|
|
8
|
+
static inputPriceUSD(model: string, tokens: number): number;
|
|
9
|
+
static cachedInputPriceUSD(model: string, tokens: number): number;
|
|
10
|
+
static outputPriceUSD(model: string, tokens: number): number;
|
|
11
|
+
static totalPriceUSD(model: string, inputTokens: number, outputTokens: number, cachedInputTokens?: number): number;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=token-pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-pricing.d.ts","sourceRoot":"","sources":["../../src/ai/token-pricing.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAqKtC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAiKvC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAI3D,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAIjE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5D,MAAM,CAAC,aAAa,CACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,iBAAiB,GAAE,MAAU,GAC3B,MAAM;CAQT"}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TokenPricing estimates provider token costs in USD.
|
|
3
|
+
*/
|
|
4
|
+
export class TokenPricing {
|
|
5
|
+
static roundToCents(price) {
|
|
6
|
+
return Math.round(price * 1000) / 1000;
|
|
7
|
+
}
|
|
8
|
+
static inputPricePerMillionUSD(model) {
|
|
9
|
+
switch (model) {
|
|
10
|
+
case 'gpt-5.4':
|
|
11
|
+
return this.roundToCents(2.5);
|
|
12
|
+
case 'gpt-5.3-instant':
|
|
13
|
+
case 'gpt-5.3-codex':
|
|
14
|
+
return this.roundToCents(1.5);
|
|
15
|
+
case 'gpt-5.2':
|
|
16
|
+
return this.roundToCents(1.75);
|
|
17
|
+
case 'gpt-5.2-pro':
|
|
18
|
+
return this.roundToCents(21.0);
|
|
19
|
+
case 'gpt-5-mini':
|
|
20
|
+
return this.roundToCents(0.25);
|
|
21
|
+
case 'gpt-5.1':
|
|
22
|
+
return this.roundToCents(1.25);
|
|
23
|
+
case 'gpt-5-nano':
|
|
24
|
+
return this.roundToCents(0.05);
|
|
25
|
+
case 'gpt-5-pro':
|
|
26
|
+
return this.roundToCents(15.0);
|
|
27
|
+
case 'gpt-4.1':
|
|
28
|
+
return this.roundToCents(3.0);
|
|
29
|
+
case 'gpt-4.1-mini':
|
|
30
|
+
return this.roundToCents(0.8);
|
|
31
|
+
case 'gpt-4.1-nano':
|
|
32
|
+
return this.roundToCents(0.2);
|
|
33
|
+
case 'gpt-4o':
|
|
34
|
+
case 'gpt-4o-2024-11-20':
|
|
35
|
+
return this.roundToCents(2.5);
|
|
36
|
+
case 'gpt-4o-mini':
|
|
37
|
+
case 'gpt-4o-mini-2024-07-18':
|
|
38
|
+
return this.roundToCents(0.15);
|
|
39
|
+
case 'gpt-4-turbo':
|
|
40
|
+
case 'gpt-4-turbo-preview':
|
|
41
|
+
return this.roundToCents(10.0);
|
|
42
|
+
case 'gpt-4':
|
|
43
|
+
return this.roundToCents(30.0);
|
|
44
|
+
case 'gpt-3.5-turbo':
|
|
45
|
+
return this.roundToCents(0.5);
|
|
46
|
+
case 'o4-mini':
|
|
47
|
+
return this.roundToCents(4.0);
|
|
48
|
+
case 'o3-mini':
|
|
49
|
+
return this.roundToCents(1.1);
|
|
50
|
+
case 'o1':
|
|
51
|
+
case 'o1-2024-12-17':
|
|
52
|
+
return this.roundToCents(15.0);
|
|
53
|
+
case 'o1-mini':
|
|
54
|
+
case 'o1-mini-2024-09-12':
|
|
55
|
+
return this.roundToCents(3.0);
|
|
56
|
+
case 'claude-3-5-sonnet-20241022':
|
|
57
|
+
case 'claude-3-5-sonnet-latest':
|
|
58
|
+
case 'claude-4-sonnet':
|
|
59
|
+
case 'claude-4.5-sonnet':
|
|
60
|
+
case 'claude-4.6-sonnet':
|
|
61
|
+
return this.roundToCents(3.0);
|
|
62
|
+
case 'claude-3-5-haiku-20241022':
|
|
63
|
+
case 'claude-3-5-haiku-latest':
|
|
64
|
+
return this.roundToCents(0.25);
|
|
65
|
+
case 'claude-4.5-haiku':
|
|
66
|
+
return this.roundToCents(1.0);
|
|
67
|
+
case 'claude-3-opus-20240229':
|
|
68
|
+
case 'claude-3-opus-latest':
|
|
69
|
+
return this.roundToCents(15.0);
|
|
70
|
+
case 'claude-4.6-opus':
|
|
71
|
+
return this.roundToCents(5.0);
|
|
72
|
+
case 'claude-opus-4.5':
|
|
73
|
+
case 'claude-opus-4-5':
|
|
74
|
+
return this.roundToCents(5.0);
|
|
75
|
+
case 'claude-opus-4.1':
|
|
76
|
+
case 'claude-opus-4-1':
|
|
77
|
+
case 'claude-opus-4':
|
|
78
|
+
return this.roundToCents(15.0);
|
|
79
|
+
case 'claude-sonnet-4.5':
|
|
80
|
+
case 'claude-sonnet-4-5':
|
|
81
|
+
case 'claude-sonnet-4':
|
|
82
|
+
case 'claude-sonnet-3.7':
|
|
83
|
+
return this.roundToCents(3.0);
|
|
84
|
+
case 'claude-haiku-4.5':
|
|
85
|
+
case 'claude-haiku-4-5':
|
|
86
|
+
return this.roundToCents(1.0);
|
|
87
|
+
case 'claude-haiku-3.5':
|
|
88
|
+
return this.roundToCents(0.8);
|
|
89
|
+
case 'claude-haiku-3':
|
|
90
|
+
return this.roundToCents(0.25);
|
|
91
|
+
case 'gemini-3.1-pro-preview':
|
|
92
|
+
return this.roundToCents(2.0);
|
|
93
|
+
case 'gemini-3.1-flash-lite-preview':
|
|
94
|
+
return this.roundToCents(0.25);
|
|
95
|
+
case 'gemini-3.1-flash-image-preview':
|
|
96
|
+
return this.roundToCents(0.5);
|
|
97
|
+
case 'gemini-3-pro-preview':
|
|
98
|
+
return this.roundToCents(2.0);
|
|
99
|
+
case 'gemini-2.5-pro':
|
|
100
|
+
return this.roundToCents(1.25);
|
|
101
|
+
case 'gemini-2.5-flash':
|
|
102
|
+
case 'gemini-2.5-flash-preview-09-2025':
|
|
103
|
+
return this.roundToCents(0.3);
|
|
104
|
+
case 'gemini-2.5-flash-lite':
|
|
105
|
+
case 'gemini-2.5-flash-lite-preview-09-2025':
|
|
106
|
+
return this.roundToCents(0.1);
|
|
107
|
+
case 'gemini-3-flash-preview':
|
|
108
|
+
case 'gemini-3-flash':
|
|
109
|
+
return this.roundToCents(0.5);
|
|
110
|
+
case 'gemini-3-pro-image-preview':
|
|
111
|
+
case 'gemini-3-pro-image':
|
|
112
|
+
return this.roundToCents(2.0);
|
|
113
|
+
case 'gemini-2.0-flash':
|
|
114
|
+
return this.roundToCents(0.1);
|
|
115
|
+
case 'gemini-2.0-flash-lite':
|
|
116
|
+
return this.roundToCents(0.075);
|
|
117
|
+
case 'grok-4.20':
|
|
118
|
+
case 'grok-4.20-latest':
|
|
119
|
+
return this.roundToCents(3.0);
|
|
120
|
+
case 'grok-4':
|
|
121
|
+
case 'grok-4-0709':
|
|
122
|
+
case 'grok-4-latest':
|
|
123
|
+
return this.roundToCents(3.0);
|
|
124
|
+
case 'grok-4-1-fast':
|
|
125
|
+
case 'grok-4-1-fast-reasoning':
|
|
126
|
+
case 'grok-4-1-fast-reasoning-latest':
|
|
127
|
+
case 'grok-4-1-fast-non-reasoning':
|
|
128
|
+
case 'grok-4-fast-reasoning':
|
|
129
|
+
case 'grok-4-fast-non-reasoning':
|
|
130
|
+
return this.roundToCents(0.2);
|
|
131
|
+
case 'grok-code-fast-1':
|
|
132
|
+
return this.roundToCents(0.2);
|
|
133
|
+
case 'grok-2-vision-1212':
|
|
134
|
+
return this.roundToCents(2.0);
|
|
135
|
+
case 'grok-3':
|
|
136
|
+
case 'grok-3-latest':
|
|
137
|
+
case 'grok-3-beta':
|
|
138
|
+
case 'grok-3-fast':
|
|
139
|
+
case 'grok-3-fast-latest':
|
|
140
|
+
case 'grok-3-fast-beta':
|
|
141
|
+
return this.roundToCents(3.0);
|
|
142
|
+
case 'grok-3-mini':
|
|
143
|
+
case 'grok-3-mini-latest':
|
|
144
|
+
case 'grok-3-mini-beta':
|
|
145
|
+
case 'grok-3-mini-fast':
|
|
146
|
+
case 'grok-3-mini-fast-latest':
|
|
147
|
+
case 'grok-3-mini-fast-beta':
|
|
148
|
+
return this.roundToCents(0.3);
|
|
149
|
+
case 'openai/gpt-oss-20b':
|
|
150
|
+
case 'openai/gpt-oss-safeguard-20b':
|
|
151
|
+
return this.roundToCents(0.075);
|
|
152
|
+
case 'openai/gpt-oss-120b':
|
|
153
|
+
return this.roundToCents(0.15);
|
|
154
|
+
case 'moonshotai/kimi-k2-instruct-0905':
|
|
155
|
+
return this.roundToCents(1.0);
|
|
156
|
+
case 'meta-llama/llama-4-scout-17b-16e-instruct':
|
|
157
|
+
return this.roundToCents(0.11);
|
|
158
|
+
case 'meta-llama/llama-4-maverick-17b-128e-instruct':
|
|
159
|
+
return this.roundToCents(0.2);
|
|
160
|
+
case 'meta-llama/llama-guard-4-12b':
|
|
161
|
+
return this.roundToCents(0.2);
|
|
162
|
+
case 'qwen/qwen3-32b':
|
|
163
|
+
return this.roundToCents(0.29);
|
|
164
|
+
case 'llama-3.3-70b-versatile':
|
|
165
|
+
return this.roundToCents(0.59);
|
|
166
|
+
case 'llama-3.1-8b-instant':
|
|
167
|
+
return this.roundToCents(0.05);
|
|
168
|
+
default:
|
|
169
|
+
return this.roundToCents(1.0);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
static outputPricePerMillionUSD(model) {
|
|
173
|
+
switch (model) {
|
|
174
|
+
case 'gpt-5.4':
|
|
175
|
+
return this.roundToCents(10.0);
|
|
176
|
+
case 'gpt-5.3-instant':
|
|
177
|
+
case 'gpt-5.3-codex':
|
|
178
|
+
return this.roundToCents(6.0);
|
|
179
|
+
case 'gpt-5.2':
|
|
180
|
+
return this.roundToCents(7.0);
|
|
181
|
+
case 'gpt-5.2-pro':
|
|
182
|
+
return this.roundToCents(84.0);
|
|
183
|
+
case 'gpt-5-mini':
|
|
184
|
+
return this.roundToCents(2.0);
|
|
185
|
+
case 'gpt-5.1':
|
|
186
|
+
return this.roundToCents(10.0);
|
|
187
|
+
case 'gpt-5-nano':
|
|
188
|
+
return this.roundToCents(0.4);
|
|
189
|
+
case 'gpt-5-pro':
|
|
190
|
+
return this.roundToCents(120.0);
|
|
191
|
+
case 'gpt-4.1':
|
|
192
|
+
return this.roundToCents(12.0);
|
|
193
|
+
case 'gpt-4.1-mini':
|
|
194
|
+
return this.roundToCents(3.2);
|
|
195
|
+
case 'gpt-4.1-nano':
|
|
196
|
+
return this.roundToCents(0.8);
|
|
197
|
+
case 'gpt-4o':
|
|
198
|
+
case 'gpt-4o-2024-11-20':
|
|
199
|
+
return this.roundToCents(10.0);
|
|
200
|
+
case 'gpt-4o-mini':
|
|
201
|
+
case 'gpt-4o-mini-2024-07-18':
|
|
202
|
+
return this.roundToCents(0.6);
|
|
203
|
+
case 'gpt-4-turbo':
|
|
204
|
+
case 'gpt-4-turbo-preview':
|
|
205
|
+
return this.roundToCents(30.0);
|
|
206
|
+
case 'gpt-4':
|
|
207
|
+
return this.roundToCents(60.0);
|
|
208
|
+
case 'gpt-3.5-turbo':
|
|
209
|
+
return this.roundToCents(1.5);
|
|
210
|
+
case 'o4-mini':
|
|
211
|
+
return this.roundToCents(16.0);
|
|
212
|
+
case 'o3-mini':
|
|
213
|
+
return this.roundToCents(4.4);
|
|
214
|
+
case 'o1':
|
|
215
|
+
case 'o1-2024-12-17':
|
|
216
|
+
return this.roundToCents(60.0);
|
|
217
|
+
case 'o1-mini':
|
|
218
|
+
case 'o1-mini-2024-09-12':
|
|
219
|
+
return this.roundToCents(12.0);
|
|
220
|
+
case 'claude-3-5-sonnet-20241022':
|
|
221
|
+
case 'claude-3-5-sonnet-latest':
|
|
222
|
+
case 'claude-4-sonnet':
|
|
223
|
+
case 'claude-4.5-sonnet':
|
|
224
|
+
case 'claude-4.6-sonnet':
|
|
225
|
+
case 'claude-sonnet-4.5':
|
|
226
|
+
case 'claude-sonnet-4-5':
|
|
227
|
+
case 'claude-sonnet-4':
|
|
228
|
+
case 'claude-sonnet-3.7':
|
|
229
|
+
return this.roundToCents(15.0);
|
|
230
|
+
case 'claude-3-5-haiku-20241022':
|
|
231
|
+
case 'claude-3-5-haiku-latest':
|
|
232
|
+
return this.roundToCents(1.25);
|
|
233
|
+
case 'claude-4.5-haiku':
|
|
234
|
+
case 'claude-haiku-4.5':
|
|
235
|
+
case 'claude-haiku-4-5':
|
|
236
|
+
return this.roundToCents(5.0);
|
|
237
|
+
case 'claude-haiku-3.5':
|
|
238
|
+
return this.roundToCents(4.0);
|
|
239
|
+
case 'claude-haiku-3':
|
|
240
|
+
return this.roundToCents(1.25);
|
|
241
|
+
case 'claude-3-opus-20240229':
|
|
242
|
+
case 'claude-3-opus-latest':
|
|
243
|
+
return this.roundToCents(75.0);
|
|
244
|
+
case 'claude-4.6-opus':
|
|
245
|
+
case 'claude-opus-4.5':
|
|
246
|
+
case 'claude-opus-4-5':
|
|
247
|
+
return this.roundToCents(25.0);
|
|
248
|
+
case 'claude-opus-4.1':
|
|
249
|
+
case 'claude-opus-4-1':
|
|
250
|
+
case 'claude-opus-4':
|
|
251
|
+
return this.roundToCents(75.0);
|
|
252
|
+
case 'gemini-3.1-pro-preview':
|
|
253
|
+
return this.roundToCents(10.0);
|
|
254
|
+
case 'gemini-3.1-flash-lite-preview':
|
|
255
|
+
return this.roundToCents(1.0);
|
|
256
|
+
case 'gemini-3.1-flash-image-preview':
|
|
257
|
+
return this.roundToCents(2.0);
|
|
258
|
+
case 'gemini-3-pro-preview':
|
|
259
|
+
return this.roundToCents(10.0);
|
|
260
|
+
case 'gemini-2.5-pro':
|
|
261
|
+
return this.roundToCents(10.0);
|
|
262
|
+
case 'gemini-2.5-flash':
|
|
263
|
+
case 'gemini-2.5-flash-preview-09-2025':
|
|
264
|
+
return this.roundToCents(2.5);
|
|
265
|
+
case 'gemini-2.5-flash-lite':
|
|
266
|
+
case 'gemini-2.5-flash-lite-preview-09-2025':
|
|
267
|
+
return this.roundToCents(0.4);
|
|
268
|
+
case 'gemini-3-flash-preview':
|
|
269
|
+
case 'gemini-3-flash':
|
|
270
|
+
return this.roundToCents(2.0);
|
|
271
|
+
case 'gemini-3-pro-image-preview':
|
|
272
|
+
case 'gemini-3-pro-image':
|
|
273
|
+
return this.roundToCents(10.0);
|
|
274
|
+
case 'gemini-2.0-flash':
|
|
275
|
+
return this.roundToCents(0.4);
|
|
276
|
+
case 'gemini-2.0-flash-lite':
|
|
277
|
+
return this.roundToCents(0.3);
|
|
278
|
+
case 'grok-4.20':
|
|
279
|
+
case 'grok-4.20-latest':
|
|
280
|
+
return this.roundToCents(15.0);
|
|
281
|
+
case 'grok-4':
|
|
282
|
+
case 'grok-4-0709':
|
|
283
|
+
case 'grok-4-latest':
|
|
284
|
+
return this.roundToCents(15.0);
|
|
285
|
+
case 'grok-4-1-fast':
|
|
286
|
+
case 'grok-4-1-fast-reasoning':
|
|
287
|
+
case 'grok-4-1-fast-reasoning-latest':
|
|
288
|
+
case 'grok-4-1-fast-non-reasoning':
|
|
289
|
+
case 'grok-4-fast-reasoning':
|
|
290
|
+
case 'grok-4-fast-non-reasoning':
|
|
291
|
+
case 'grok-code-fast-1':
|
|
292
|
+
return this.roundToCents(0.5);
|
|
293
|
+
case 'grok-2-vision-1212':
|
|
294
|
+
return this.roundToCents(10.0);
|
|
295
|
+
case 'grok-3':
|
|
296
|
+
case 'grok-3-latest':
|
|
297
|
+
case 'grok-3-beta':
|
|
298
|
+
case 'grok-3-fast':
|
|
299
|
+
case 'grok-3-fast-latest':
|
|
300
|
+
case 'grok-3-fast-beta':
|
|
301
|
+
return this.roundToCents(15.0);
|
|
302
|
+
case 'grok-3-mini':
|
|
303
|
+
case 'grok-3-mini-latest':
|
|
304
|
+
case 'grok-3-mini-beta':
|
|
305
|
+
case 'grok-3-mini-fast':
|
|
306
|
+
case 'grok-3-mini-fast-latest':
|
|
307
|
+
case 'grok-3-mini-fast-beta':
|
|
308
|
+
return this.roundToCents(0.5);
|
|
309
|
+
case 'openai/gpt-oss-20b':
|
|
310
|
+
case 'openai/gpt-oss-safeguard-20b':
|
|
311
|
+
return this.roundToCents(0.3);
|
|
312
|
+
case 'openai/gpt-oss-120b':
|
|
313
|
+
return this.roundToCents(0.6);
|
|
314
|
+
case 'moonshotai/kimi-k2-instruct-0905':
|
|
315
|
+
return this.roundToCents(3.0);
|
|
316
|
+
case 'meta-llama/llama-4-scout-17b-16e-instruct':
|
|
317
|
+
return this.roundToCents(0.34);
|
|
318
|
+
case 'meta-llama/llama-4-maverick-17b-128e-instruct':
|
|
319
|
+
return this.roundToCents(0.6);
|
|
320
|
+
case 'meta-llama/llama-guard-4-12b':
|
|
321
|
+
return this.roundToCents(0.6);
|
|
322
|
+
case 'qwen/qwen3-32b':
|
|
323
|
+
return this.roundToCents(0.59);
|
|
324
|
+
case 'llama-3.3-70b-versatile':
|
|
325
|
+
return this.roundToCents(0.79);
|
|
326
|
+
case 'llama-3.1-8b-instant':
|
|
327
|
+
return this.roundToCents(0.08);
|
|
328
|
+
default:
|
|
329
|
+
return this.roundToCents(2.0);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
static inputPriceUSD(model, tokens) {
|
|
333
|
+
return this.roundToCents((this.inputPricePerMillionUSD(model) * tokens) / 1_000_000);
|
|
334
|
+
}
|
|
335
|
+
static cachedInputPriceUSD(model, tokens) {
|
|
336
|
+
return this.roundToCents(this.inputPriceUSD(model, tokens) / 10);
|
|
337
|
+
}
|
|
338
|
+
static outputPriceUSD(model, tokens) {
|
|
339
|
+
return this.roundToCents((this.outputPricePerMillionUSD(model) * tokens) / 1_000_000);
|
|
340
|
+
}
|
|
341
|
+
static totalPriceUSD(model, inputTokens, outputTokens, cachedInputTokens = 0) {
|
|
342
|
+
const uncachedInputTokens = Math.max(inputTokens - cachedInputTokens, 0);
|
|
343
|
+
return this.roundToCents(this.inputPriceUSD(model, uncachedInputTokens) +
|
|
344
|
+
this.cachedInputPriceUSD(model, cachedInputTokens) +
|
|
345
|
+
this.outputPriceUSD(model, outputTokens));
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
//# sourceMappingURL=token-pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-pricing.js","sourceRoot":"","sources":["../../src/ai/token-pricing.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,YAAY;IAChB,MAAM,CAAC,YAAY,CAAC,KAAa;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACvC,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,KAAa;QACnD,QAAQ,KAAK,EAAE,CAAC;YACf,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,iBAAiB,CAAC;YACvB,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,aAAa;gBACjB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,YAAY;gBAChB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,YAAY;gBAChB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,WAAW;gBACf,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,cAAc;gBAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,cAAc;gBAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,QAAQ,CAAC;YACd,KAAK,mBAAmB;gBACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,aAAa,CAAC;YACnB,KAAK,wBAAwB;gBAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,aAAa,CAAC;YACnB,KAAK,qBAAqB;gBACzB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,OAAO;gBACX,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,IAAI,CAAC;YACV,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,SAAS,CAAC;YACf,KAAK,oBAAoB;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,4BAA4B,CAAC;YAClC,KAAK,0BAA0B,CAAC;YAChC,KAAK,iBAAiB,CAAC;YACvB,KAAK,mBAAmB,CAAC;YACzB,KAAK,mBAAmB;gBACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,2BAA2B,CAAC;YACjC,KAAK,yBAAyB;gBAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,wBAAwB,CAAC;YAC9B,KAAK,sBAAsB;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,iBAAiB;gBACrB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB;gBACrB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB,CAAC;YACvB,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,mBAAmB,CAAC;YACzB,KAAK,mBAAmB,CAAC;YACzB,KAAK,iBAAiB,CAAC;YACvB,KAAK,mBAAmB;gBACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,wBAAwB;gBAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,+BAA+B;gBACnC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,gCAAgC;gBACpC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,sBAAsB;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,kBAAkB,CAAC;YACxB,KAAK,kCAAkC;gBACtC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,uBAAuB,CAAC;YAC7B,KAAK,uCAAuC;gBAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,wBAAwB,CAAC;YAC9B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,4BAA4B,CAAC;YAClC,KAAK,oBAAoB;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,uBAAuB;gBAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAChC,KAAK,WAAW,CAAC;YACjB,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,QAAQ,CAAC;YACd,KAAK,aAAa,CAAC;YACnB,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,eAAe,CAAC;YACrB,KAAK,yBAAyB,CAAC;YAC/B,KAAK,gCAAgC,CAAC;YACtC,KAAK,6BAA6B,CAAC;YACnC,KAAK,uBAAuB,CAAC;YAC7B,KAAK,2BAA2B;gBAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,oBAAoB;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,QAAQ,CAAC;YACd,KAAK,eAAe,CAAC;YACrB,KAAK,aAAa,CAAC;YACnB,KAAK,aAAa,CAAC;YACnB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,aAAa,CAAC;YACnB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB,CAAC;YACxB,KAAK,yBAAyB,CAAC;YAC/B,KAAK,uBAAuB;gBAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,8BAA8B;gBAClC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAChC,KAAK,qBAAqB;gBACzB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,kCAAkC;gBACtC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,2CAA2C;gBAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,+CAA+C;gBACnD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,8BAA8B;gBAClC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,yBAAyB;gBAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,sBAAsB;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B;gBACC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;IACF,CAAC;IAEO,MAAM,CAAC,wBAAwB,CAAC,KAAa;QACpD,QAAQ,KAAK,EAAE,CAAC;YACf,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,iBAAiB,CAAC;YACvB,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,aAAa;gBACjB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,YAAY;gBAChB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,YAAY;gBAChB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,WAAW;gBACf,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAChC,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,cAAc;gBAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,cAAc;gBAClB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,QAAQ,CAAC;YACd,KAAK,mBAAmB;gBACvB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,aAAa,CAAC;YACnB,KAAK,wBAAwB;gBAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,aAAa,CAAC;YACnB,KAAK,qBAAqB;gBACzB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,OAAO;gBACX,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,SAAS;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,IAAI,CAAC;YACV,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,SAAS,CAAC;YACf,KAAK,oBAAoB;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,4BAA4B,CAAC;YAClC,KAAK,0BAA0B,CAAC;YAChC,KAAK,iBAAiB,CAAC;YACvB,KAAK,mBAAmB,CAAC;YACzB,KAAK,mBAAmB,CAAC;YACzB,KAAK,mBAAmB,CAAC;YACzB,KAAK,mBAAmB,CAAC;YACzB,KAAK,iBAAiB,CAAC;YACvB,KAAK,mBAAmB;gBACvB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,2BAA2B,CAAC;YACjC,KAAK,yBAAyB;gBAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,wBAAwB,CAAC;YAC9B,KAAK,sBAAsB;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB;gBACrB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB,CAAC;YACvB,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,wBAAwB;gBAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,+BAA+B;gBACnC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,gCAAgC;gBACpC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,sBAAsB;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,kBAAkB,CAAC;YACxB,KAAK,kCAAkC;gBACtC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,uBAAuB,CAAC;YAC7B,KAAK,uCAAuC;gBAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,wBAAwB,CAAC;YAC9B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,4BAA4B,CAAC;YAClC,KAAK,oBAAoB;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,uBAAuB;gBAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,WAAW,CAAC;YACjB,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,QAAQ,CAAC;YACd,KAAK,aAAa,CAAC;YACnB,KAAK,eAAe;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,eAAe,CAAC;YACrB,KAAK,yBAAyB,CAAC;YAC/B,KAAK,gCAAgC,CAAC;YACtC,KAAK,6BAA6B,CAAC;YACnC,KAAK,uBAAuB,CAAC;YAC7B,KAAK,2BAA2B,CAAC;YACjC,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,oBAAoB;gBACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,QAAQ,CAAC;YACd,KAAK,eAAe,CAAC;YACrB,KAAK,aAAa,CAAC;YACnB,KAAK,aAAa,CAAC;YACnB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,kBAAkB;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,aAAa,CAAC;YACnB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB,CAAC;YACxB,KAAK,yBAAyB,CAAC;YAC/B,KAAK,uBAAuB;gBAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,oBAAoB,CAAC;YAC1B,KAAK,8BAA8B;gBAClC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,qBAAqB;gBACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,kCAAkC;gBACtC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,2CAA2C;gBAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,+CAA+C;gBACnD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,8BAA8B;gBAClC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,KAAK,gBAAgB;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,yBAAyB;gBAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,KAAK,sBAAsB;gBAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B;gBACC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;IACF,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,MAAc;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IACrF,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,KAAa,EAAE,MAAc;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAa,EAAE,MAAc;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,CAAC,aAAa,CACnB,KAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,oBAA4B,CAAC;QAE7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAA;QACxE,OAAO,IAAI,CAAC,YAAY,CACvB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC;YAC7C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC;YAClD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CACzC,CAAA;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ChatCompletion } from 'openai/resources/chat/completions';
|
|
2
|
+
import { RuntimeConfig } from '../config/runtime-config';
|
|
3
|
+
export declare class TokenTracker {
|
|
4
|
+
private config;
|
|
5
|
+
private _inputTokensUsedForTest;
|
|
6
|
+
private _inputTokensUsedForStep;
|
|
7
|
+
private _cachedInputTokensUsedForTest;
|
|
8
|
+
private _cachedInputTokensUsedForStep;
|
|
9
|
+
private _cacheMetricsUnavailableForTest;
|
|
10
|
+
private _cacheMetricsUnavailableForStep;
|
|
11
|
+
private _outputTokensUsedForTest;
|
|
12
|
+
private _outputTokensUsedForStep;
|
|
13
|
+
constructor(config?: RuntimeConfig);
|
|
14
|
+
private get inputTokensUsedForTest();
|
|
15
|
+
private set inputTokensUsedForTest(value);
|
|
16
|
+
private get inputTokensUsedForStep();
|
|
17
|
+
private set inputTokensUsedForStep(value);
|
|
18
|
+
private get cachedInputTokensUsedForTest();
|
|
19
|
+
private set cachedInputTokensUsedForTest(value);
|
|
20
|
+
private get cachedInputTokensUsedForStep();
|
|
21
|
+
private set cachedInputTokensUsedForStep(value);
|
|
22
|
+
private get outputTokensUsedForTest();
|
|
23
|
+
private set outputTokensUsedForTest(value);
|
|
24
|
+
private get outputTokensUsedForStep();
|
|
25
|
+
private set outputTokensUsedForStep(value);
|
|
26
|
+
private checkBudget;
|
|
27
|
+
resetStep(): void;
|
|
28
|
+
log(response: ChatCompletion, historyTokenCount: number, model: string): void;
|
|
29
|
+
private inputCostUSD;
|
|
30
|
+
private formatCachedUsage;
|
|
31
|
+
private formatUSD;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=token-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-tracker.d.ts","sourceRoot":"","sources":["../../src/ai/token-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAIxD,qBAAa,YAAY;IAUZ,OAAO,CAAC,MAAM;IAT1B,OAAO,CAAC,uBAAuB,CAAI;IACnC,OAAO,CAAC,uBAAuB,CAAI;IACnC,OAAO,CAAC,6BAA6B,CAAI;IACzC,OAAO,CAAC,6BAA6B,CAAI;IACzC,OAAO,CAAC,+BAA+B,CAAQ;IAC/C,OAAO,CAAC,+BAA+B,CAAQ;IAC/C,OAAO,CAAC,wBAAwB,CAAI;IACpC,OAAO,CAAC,wBAAwB,CAAI;gBAEhB,MAAM,gBAAsB;IAEhD,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,sBAAsB,QAGjC;IAED,OAAO,KAAK,sBAAsB,GAEjC;IAED,OAAO,KAAK,sBAAsB,QAGjC;IAED,OAAO,KAAK,4BAA4B,GAEvC;IAED,OAAO,KAAK,4BAA4B,QAGvC;IAED,OAAO,KAAK,4BAA4B,GAEvC;IAED,OAAO,KAAK,4BAA4B,QAGvC;IAED,OAAO,KAAK,uBAAuB,GAElC;IAED,OAAO,KAAK,uBAAuB,QAGlC;IAED,OAAO,KAAK,uBAAuB,GAElC;IAED,OAAO,KAAK,uBAAuB,QAGlC;IAED,OAAO,CAAC,WAAW;IA6BnB,SAAS,IAAI,IAAI;IAOjB,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAuE7E,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,SAAS;CAGjB"}
|