@x-code-cli/core 0.1.8 → 0.1.10

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.
Files changed (67) hide show
  1. package/dist/agent/api-errors.d.ts.map +1 -1
  2. package/dist/agent/api-errors.js +63 -20
  3. package/dist/agent/api-errors.js.map +1 -1
  4. package/dist/agent/loop-guard.d.ts +17 -8
  5. package/dist/agent/loop-guard.d.ts.map +1 -1
  6. package/dist/agent/loop-guard.js +12 -8
  7. package/dist/agent/loop-guard.js.map +1 -1
  8. package/dist/agent/loop-state.js +1 -1
  9. package/dist/agent/loop-state.js.map +1 -1
  10. package/dist/agent/loop.d.ts.map +1 -1
  11. package/dist/agent/loop.js +21 -1
  12. package/dist/agent/loop.js.map +1 -1
  13. package/dist/agent/provider-compat.d.ts.map +1 -1
  14. package/dist/agent/provider-compat.js +26 -2
  15. package/dist/agent/provider-compat.js.map +1 -1
  16. package/dist/agent/stream-utils.d.ts +7 -0
  17. package/dist/agent/stream-utils.d.ts.map +1 -1
  18. package/dist/agent/stream-utils.js.map +1 -1
  19. package/dist/agent/tool-execution.js +2 -2
  20. package/dist/agent/tool-execution.js.map +1 -1
  21. package/dist/config/index.d.ts +1 -0
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/knowledge/session-usage.d.ts +24 -0
  29. package/dist/knowledge/session-usage.d.ts.map +1 -0
  30. package/dist/knowledge/session-usage.js +86 -0
  31. package/dist/knowledge/session-usage.js.map +1 -0
  32. package/dist/providers/thinking.d.ts +19 -0
  33. package/dist/providers/thinking.d.ts.map +1 -0
  34. package/dist/providers/thinking.js +108 -0
  35. package/dist/providers/thinking.js.map +1 -0
  36. package/dist/tools/glob.d.ts.map +1 -1
  37. package/dist/tools/glob.js +2 -2
  38. package/dist/tools/glob.js.map +1 -1
  39. package/dist/tools/grep.d.ts.map +1 -1
  40. package/dist/tools/grep.js +2 -2
  41. package/dist/tools/grep.js.map +1 -1
  42. package/dist/tools/list-dir.d.ts.map +1 -1
  43. package/dist/tools/list-dir.js +2 -2
  44. package/dist/tools/list-dir.js.map +1 -1
  45. package/dist/tools/read-file.d.ts.map +1 -1
  46. package/dist/tools/read-file.js +2 -2
  47. package/dist/tools/read-file.js.map +1 -1
  48. package/dist/tools/save-knowledge.d.ts.map +1 -1
  49. package/dist/tools/save-knowledge.js +2 -2
  50. package/dist/tools/save-knowledge.js.map +1 -1
  51. package/dist/tools/web-fetch.d.ts.map +1 -1
  52. package/dist/tools/web-fetch.js +2 -2
  53. package/dist/tools/web-fetch.js.map +1 -1
  54. package/dist/tools/web-search.d.ts.map +1 -1
  55. package/dist/tools/web-search.js +2 -2
  56. package/dist/tools/web-search.js.map +1 -1
  57. package/dist/types/index.d.ts +13 -0
  58. package/dist/types/index.d.ts.map +1 -1
  59. package/dist/types/index.js.map +1 -1
  60. package/dist/utils/tool-errors.d.ts +5 -0
  61. package/dist/utils/tool-errors.d.ts.map +1 -0
  62. package/dist/utils/tool-errors.js +15 -0
  63. package/dist/utils/tool-errors.js.map +1 -0
  64. package/dist/utils.d.ts.map +1 -1
  65. package/dist/utils.js +104 -10
  66. package/dist/utils.js.map +1 -1
  67. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"api-errors.d.ts","sourceRoot":"","sources":["../../src/agent/api-errors.ts"],"names":[],"mappings":"AAaA,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM3D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;CACnB;AAwBD,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAgG9D"}
1
+ {"version":3,"file":"api-errors.d.ts","sourceRoot":"","sources":["../../src/agent/api-errors.ts"],"names":[],"mappings":"AAaA,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM3D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;CACnB;AA2FD,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAiF9D"}
@@ -23,6 +23,58 @@ export function isContextTooLongError(err) {
23
23
  }
24
24
  return false;
25
25
  }
26
+ // ── Error-shape predicates ───────────────────────────────────────────────
27
+ // Each predicate matches one provider failure mode. Keeping them as named
28
+ // helpers keeps classifyApiError() readable and gives unit tests a clean
29
+ // hook to assert on individual cases without driving the full classifier.
30
+ function isReasoningContentError(msg) {
31
+ // DeepSeek Reasoner requires reasoning_content on assistant messages
32
+ // during tool-call chains; both phrasings appear in the wild.
33
+ return msg.includes('Missing `reasoning_content`') || msg.includes('reasoning_content');
34
+ }
35
+ function isMissingApiKeyError(msg) {
36
+ return msg.includes('API key is missing') || msg.includes('API_KEY');
37
+ }
38
+ function isUnauthorizedError(msg, status) {
39
+ return status === 401 || msg.includes('Unauthorized') || msg.includes('Invalid API Key');
40
+ }
41
+ function isInsufficientBalanceError(msg, status) {
42
+ return (status === 402 ||
43
+ msg.includes('Insufficient Balance') ||
44
+ msg.includes('insufficient_balance') ||
45
+ msg.includes('insufficient_quota') ||
46
+ msg.includes('exceeded your current quota'));
47
+ }
48
+ function isForbiddenError(msg, status) {
49
+ return status === 403 || msg.includes('Forbidden');
50
+ }
51
+ function isMaxTokensError(msg) {
52
+ if (msg.includes('Invalid max_tokens') || msg.includes('Range of max_tokens') || msg.includes('InvalidParameter')) {
53
+ return true;
54
+ }
55
+ // Catch-all: any "max_tokens" reference combined with an invalid/range marker.
56
+ if (!msg.includes('max_tokens'))
57
+ return false;
58
+ return /invalid|range/i.test(msg);
59
+ }
60
+ function isServiceUnavailableError(msg, status) {
61
+ return status === 503 || msg.includes('Service Unavailable') || msg.includes('overloaded');
62
+ }
63
+ function isRateLimitedError(msg, status) {
64
+ return status === 429 || /rate limit/i.test(msg);
65
+ }
66
+ function isNetworkError(msg) {
67
+ return msg.includes('timeout') || msg.includes('ETIMEDOUT') || msg.includes('ECONNRESET');
68
+ }
69
+ function isTypeValidationError(err, msg) {
70
+ return ((err instanceof Error && err.constructor.name === 'AI_TypeValidationError') ||
71
+ msg.includes('Type validation failed'));
72
+ }
73
+ /** Pull a provider name out of "Anthropic API key is missing" → "Anthropic". */
74
+ function extractProviderName(msg) {
75
+ const m = msg.match(/^(\w+)\s+API key/i);
76
+ return m ? m[1] : 'Provider';
77
+ }
26
78
  /**
27
79
  * Extract a meaningful error message from AI SDK errors. TypeValidationError
28
80
  * (thrown when a provider returns non-standard JSON — e.g. Alibaba returning
@@ -56,64 +108,56 @@ export function classifyApiError(err) {
56
108
  retryable: false,
57
109
  };
58
110
  }
59
- if (msg.includes('Missing `reasoning_content`') || msg.includes('reasoning_content')) {
111
+ if (isReasoningContentError(msg)) {
60
112
  return {
61
113
  message: 'DeepSeek Reasoner requires reasoning_content in assistant messages during tool-call chains. This is usually an SDK compatibility issue — please report it.',
62
114
  retryable: false,
63
115
  };
64
116
  }
65
- if (msg.includes('API key is missing') || msg.includes('API_KEY')) {
66
- const providerMatch = msg.match(/^(\w+)\s+API key/i);
67
- const provider = providerMatch ? providerMatch[1] : 'Provider';
117
+ if (isMissingApiKeyError(msg)) {
118
+ const provider = extractProviderName(msg);
68
119
  return {
69
120
  message: `${provider} API key is not set. Please set the corresponding environment variable (e.g. ${provider.toUpperCase()}_API_KEY).`,
70
121
  retryable: false,
71
122
  };
72
123
  }
73
- if (status === 401 || msg.includes('Unauthorized') || msg.includes('Invalid API Key')) {
124
+ if (isUnauthorizedError(msg, status)) {
74
125
  return {
75
126
  message: 'API authentication failed (401). Please check your API key with /model or reconfigure with `xc init`.',
76
127
  retryable: false,
77
128
  };
78
129
  }
79
- if (status === 402 ||
80
- msg.includes('Insufficient Balance') ||
81
- msg.includes('insufficient_balance') ||
82
- msg.includes('insufficient_quota') ||
83
- msg.includes('exceeded your current quota')) {
130
+ if (isInsufficientBalanceError(msg, status)) {
84
131
  return {
85
132
  message: 'API account balance insufficient (402). Top up your provider account, or switch to a different provider with /model.',
86
133
  retryable: false,
87
134
  };
88
135
  }
89
- if (status === 403 || msg.includes('Forbidden')) {
136
+ if (isForbiddenError(msg, status)) {
90
137
  return {
91
138
  message: 'API access forbidden (403). Your API key may not have permission for this model.',
92
139
  retryable: false,
93
140
  };
94
141
  }
95
- if (msg.includes('Invalid max_tokens') ||
96
- msg.includes('Range of max_tokens') ||
97
- msg.includes('InvalidParameter') ||
98
- (msg.includes('max_tokens') && (msg.includes('invalid') || msg.includes('Invalid') || msg.includes('range') || msg.includes('Range')))) {
142
+ if (isMaxTokensError(msg)) {
99
143
  return {
100
144
  message: 'The configured max_tokens exceeds this model\'s limit. Try switching to a different model with /model, or report this issue so we can add the correct ceiling.',
101
145
  retryable: false,
102
146
  };
103
147
  }
104
- if (status === 503 || msg.includes('Service Unavailable') || msg.includes('overloaded')) {
148
+ if (isServiceUnavailableError(msg, status)) {
105
149
  return {
106
150
  message: 'Model service unavailable (503). Try switching to a different model with /model.',
107
151
  retryable: false,
108
152
  };
109
153
  }
110
- if (status === 429 || msg.includes('rate limit') || msg.includes('Rate limit')) {
154
+ if (isRateLimitedError(msg, status)) {
111
155
  return {
112
156
  message: 'Rate limited (429). Waiting for retry... (AI SDK handles exponential backoff automatically with maxRetries: 3)',
113
157
  retryable: true,
114
158
  };
115
159
  }
116
- if (msg.includes('timeout') || msg.includes('ETIMEDOUT') || msg.includes('ECONNRESET')) {
160
+ if (isNetworkError(msg)) {
117
161
  return {
118
162
  message: `Network error: ${msg}. Retrying...`,
119
163
  retryable: true,
@@ -122,8 +166,7 @@ export function classifyApiError(err) {
122
166
  // AI SDK TypeValidationError — provider returned a non-standard response
123
167
  // (e.g. an error JSON body instead of a valid SSE stream). Surface the
124
168
  // provider's error message rather than the raw Zod validation dump.
125
- if ((err instanceof Error && err.constructor.name === 'AI_TypeValidationError') ||
126
- msg.includes('Type validation failed')) {
169
+ if (isTypeValidationError(err, msg)) {
127
170
  return {
128
171
  message: `Provider returned an error: ${msg}. Try a different model with /model.`,
129
172
  retryable: false,
@@ -1 +1 @@
1
- {"version":3,"file":"api-errors.js","sourceRoot":"","sources":["../../src/agent/api-errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-errors.js","sourceRoot":"","sources":["../../src/agent/api-errors.ts"],"names":[],"mappings":"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"}
@@ -10,30 +10,37 @@ export declare const LOOP_WINDOW_SIZE = 8;
10
10
  * collision probability at that length is vanishingly small for the 8-entry
11
11
  * window we're comparing against. */
12
12
  export declare function hashToolCall(toolName: string, input: unknown): string;
13
+ /** Common header carrying the precomputed call hash. Threaded through the
14
+ * result so {@link recordToolCall} can reuse it instead of hashing twice. */
15
+ interface LoopCheckBase {
16
+ hash: string;
17
+ }
13
18
  export type LoopCheck =
14
19
  /** No loop detected — dispatch this tool call normally. */
15
- {
20
+ (LoopCheckBase & {
16
21
  kind: 'ok';
17
- }
22
+ })
18
23
  /** Loop detected at soft threshold — inject a synthetic tool-result that
19
24
  * tells the model to stop, and SKIP actually running the tool this round.
20
25
  * `toolCallId` is the id of the current call so the synthetic result
21
26
  * reads as the response to it. */
22
- | {
27
+ | (LoopCheckBase & {
23
28
  kind: 'soft-block';
24
29
  toolCallId: string;
25
30
  message: string;
26
- }
31
+ })
27
32
  /** Loop detected at hard threshold — abort the turn and prompt the user. */
28
- | {
33
+ | (LoopCheckBase & {
29
34
  kind: 'hard-block';
30
35
  toolName: string;
31
36
  message: string;
32
- };
37
+ });
33
38
  /**
34
39
  * Check whether the incoming tool call is a duplicate of recent calls in the
35
40
  * window, and report what the caller should do. Does NOT mutate state — the
36
41
  * caller commits the hash via {@link recordToolCall} once the call proceeds.
42
+ * The returned `hash` should be passed to `recordToolCall` to avoid a second
43
+ * SHA256 of the same input.
37
44
  *
38
45
  * We only count matches that share the same hash AND the same toolName; a
39
46
  * fresh command with identical-looking args under a different tool never
@@ -41,10 +48,12 @@ export type LoopCheck =
41
48
  */
42
49
  export declare function checkForLoop(state: LoopState, toolName: string, input: unknown, toolCallId: string): LoopCheck;
43
50
  /** Commit a tool call to the rolling window. Bound size so the array doesn't
44
- * grow for long sessions. */
45
- export declare function recordToolCall(state: LoopState, toolName: string, input: unknown): void;
51
+ * grow for long sessions. Pass the `hash` returned by {@link checkForLoop}
52
+ * to skip recomputing it; omit only when called outside the check path. */
53
+ export declare function recordToolCall(state: LoopState, toolName: string, input: unknown, hash?: string): void;
46
54
  /** Build a synthetic tool-result message telling the model the call was
47
55
  * blocked by the loop guard. The model sees this as if the tool returned it
48
56
  * and usually adjusts on the next turn. */
49
57
  export declare function syntheticLoopBlockResult(toolName: string, toolCallId: string, message: string): import("ai").ModelMessage;
58
+ export {};
50
59
  //# sourceMappingURL=loop-guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-guard.d.ts","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD;uBACuB;AACvB,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAWjC;;sCAEsC;AACtC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAGrE;AAED,MAAM,MAAM,SAAS;AACnB,2DAA2D;AACzD;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE;AAChB;;;mCAGmC;GACjC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAC7D,4EAA4E;GAC1E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAgC9G;AAED;8BAC8B;AAC9B,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAUvF;AAED;;4CAE4C;AAC5C,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,6BAE7F"}
1
+ {"version":3,"file":"loop-guard.d.ts","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD;uBACuB;AACvB,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,IAAI,CAAA;AAWjC;;sCAEsC;AACtC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAGrE;AAED;8EAC8E;AAC9E,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,SAAS;AACnB,2DAA2D;AACzD,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAClC;;;mCAGmC;GACjC,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/E,4EAA4E;GAC1E,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE/E;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAiC9G;AAED;;4EAE4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAUtG;AAED;;4CAE4C;AAC5C,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,6BAE7F"}
@@ -52,6 +52,8 @@ export function hashToolCall(toolName, input) {
52
52
  * Check whether the incoming tool call is a duplicate of recent calls in the
53
53
  * window, and report what the caller should do. Does NOT mutate state — the
54
54
  * caller commits the hash via {@link recordToolCall} once the call proceeds.
55
+ * The returned `hash` should be passed to `recordToolCall` to avoid a second
56
+ * SHA256 of the same input.
55
57
  *
56
58
  * We only count matches that share the same hash AND the same toolName; a
57
59
  * fresh command with identical-looking args under a different tool never
@@ -60,17 +62,17 @@ export function hashToolCall(toolName, input) {
60
62
  export function checkForLoop(state, toolName, input, toolCallId) {
61
63
  const hash = hashToolCall(toolName, input);
62
64
  const window = state.recentToolCalls.slice(-LOOP_WINDOW_SIZE);
63
- let identical = 0;
65
+ let priorMatches = 0;
64
66
  for (const entry of window) {
65
67
  if (entry.toolName === toolName && entry.hash === hash)
66
- identical++;
68
+ priorMatches++;
67
69
  }
68
70
  // The current incoming call is what pushes us over the threshold, so we
69
71
  // compare against N-1 prior matches.
70
- const priorMatches = identical;
71
72
  if (priorMatches + 1 >= HARD_LOOP_THRESHOLD) {
72
73
  return {
73
74
  kind: 'hard-block',
75
+ hash,
74
76
  toolName,
75
77
  message: `Tool ${toolName} has been called with identical arguments ${priorMatches + 1} times in a row. The model is looping; aborting this turn.`,
76
78
  };
@@ -78,18 +80,20 @@ export function checkForLoop(state, toolName, input, toolCallId) {
78
80
  if (priorMatches + 1 >= SOFT_LOOP_THRESHOLD) {
79
81
  return {
80
82
  kind: 'soft-block',
83
+ hash,
81
84
  toolCallId,
82
85
  message: `This exact ${toolName} call (same arguments) has already been attempted ${priorMatches + 1} times this session with the same result. ` +
83
86
  'DO NOT retry it. Change your approach — alter the arguments meaningfully, try a different tool, or ask the user what to do instead.',
84
87
  };
85
88
  }
86
- return { kind: 'ok' };
89
+ return { kind: 'ok', hash };
87
90
  }
88
91
  /** Commit a tool call to the rolling window. Bound size so the array doesn't
89
- * grow for long sessions. */
90
- export function recordToolCall(state, toolName, input) {
91
- const hash = hashToolCall(toolName, input);
92
- state.recentToolCalls.push({ toolName, hash });
92
+ * grow for long sessions. Pass the `hash` returned by {@link checkForLoop}
93
+ * to skip recomputing it; omit only when called outside the check path. */
94
+ export function recordToolCall(state, toolName, input, hash) {
95
+ const h = hash ?? hashToolCall(toolName, input);
96
+ state.recentToolCalls.push({ toolName, hash: h });
93
97
  // Keep 2x the window to give checkForLoop some history beyond the active
94
98
  // comparison window (lets us tune LOOP_WINDOW_SIZE without changing the
95
99
  // persistence footprint).
@@ -1 +1 @@
1
- {"version":3,"file":"loop-guard.js","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-guard.js","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,2EAA2E;AAC3E,kCAAkC;AAClC,EAAE;AACF,cAAc;AACd,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,sEAAsE;AACtE,6EAA6E;AAC7E,yEAAyE;AACzE,yEAAyE;AAEzE,OAAO,MAAM,MAAM,aAAa,CAAA;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD;uBACuB;AACvB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAEjC;uEACuE;AACvE,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACjF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjH,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;AACpG,CAAC;AAED;;sCAEsC;AACtC,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAc;IAC3D,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAC1D,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC/E,CAAC;AAmBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgB,EAAE,QAAgB,EAAE,KAAc,EAAE,UAAkB;IACjG,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAA;IAE7D,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAAE,YAAY,EAAE,CAAA;IACxE,CAAC;IAED,wEAAwE;IACxE,qCAAqC;IAErC,IAAI,YAAY,GAAG,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,IAAI;YACJ,QAAQ;YACR,OAAO,EAAE,QAAQ,QAAQ,6CAA6C,YAAY,GAAG,CAAC,4DAA4D;SACnJ,CAAA;IACH,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,IAAI;YACJ,UAAU;YACV,OAAO,EACL,cAAc,QAAQ,qDAAqD,YAAY,GAAG,CAAC,4CAA4C;gBACvI,qIAAqI;SACxI,CAAA;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC7B,CAAC;AAED;;4EAE4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAgB,EAAE,QAAgB,EAAE,KAAc,EAAE,IAAa;IAC9F,MAAM,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC/C,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;IACjD,yEAAyE;IACzE,wEAAwE;IACxE,0BAA0B;IAC1B,MAAM,GAAG,GAAG,gBAAgB,GAAG,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACvC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED;;4CAE4C;AAC5C,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,UAAkB,EAAE,OAAe;IAC5F,OAAO,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,OAAO,EAAE,CAAC,CAAA;AAC3E,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export function createLoopState() {
2
2
  return {
3
3
  messages: [],
4
- tokenUsage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
4
+ tokenUsage: { inputTokens: 0, outputTokens: 0, totalTokens: 0, cacheReadTokens: 0, cacheCreationTokens: 0 },
5
5
  lastInputTokens: 0,
6
6
  sessionId: Date.now().toString(36),
7
7
  startedAt: new Date().toISOString(),
@@ -1 +1 @@
1
- {"version":3,"file":"loop-state.js","sourceRoot":"","sources":["../../src/agent/loop-state.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;QAC/D,eAAe,EAAE,CAAC;QAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,IAAI;KACxB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"loop-state.js","sourceRoot":"","sources":["../../src/agent/loop-state.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE;QAC3G,eAAe,EAAE,CAAC;QAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,IAAI;KACxB,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAOlE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQhD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAKhD,4CAA4C;AAC5C,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAc9G;AAmOD,uBAAuB;AACvB,wBAAsB,SAAS,CAC7B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,cAAc,EACzB,aAAa,CAAC,EAAE,SAAS,GACxB,OAAO,CAAC,SAAS,CAAC,CA2GpB;AAED;;;;8BAI8B;AAC9B,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzG"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AASlE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQhD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAKhD,4CAA4C;AAC5C,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAc9G;AAsPD,uBAAuB;AACvB,wBAAsB,SAAS,CAC7B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,cAAc,EACzB,aAAa,CAAC,EAAE,SAAS,GACxB,OAAO,CAAC,SAAS,CAAC,CA2GpB;AAED;;;;8BAI8B;AAC9B,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzG"}
@@ -4,7 +4,9 @@ import path from 'node:path';
4
4
  import { generateText, streamText } from 'ai';
5
5
  import { buildKnowledgeContext } from '../knowledge/loader.js';
6
6
  import { generateSessionSummary, saveSessionSummary } from '../knowledge/session.js';
7
+ import { persistUsageSnapshot } from '../knowledge/session-usage.js';
7
8
  import { applyCacheControl } from '../providers/cache-control.js';
9
+ import { getThinkingProviderOptions, mergeThinkingOptions } from '../providers/thinking.js';
8
10
  import { clearProgressReporter, setProgressReporter } from '../tools/progress.js';
9
11
  import { toolRegistry, truncateToolResult } from '../tools/index.js';
10
12
  import { debugLog } from '../utils.js';
@@ -138,10 +140,17 @@ async function collectTurnResponse(result, state, modelId, callbacks) {
138
140
  if (usage) {
139
141
  state.tokenUsage.inputTokens += usage.inputTokens ?? 0;
140
142
  state.tokenUsage.outputTokens += usage.outputTokens ?? 0;
143
+ // AI SDK v6 normalizes provider cache fields into inputTokenDetails:
144
+ // cacheReadTokens ← Anthropic cache_read_input_tokens / OpenAI cached_tokens
145
+ // cacheWriteTokens ← Anthropic cache_creation_input_tokens (others: 0)
146
+ // Both are subsets of inputTokens, so we don't double-count into total.
147
+ state.tokenUsage.cacheReadTokens += usage.inputTokenDetails?.cacheReadTokens ?? 0;
148
+ state.tokenUsage.cacheCreationTokens += usage.inputTokenDetails?.cacheWriteTokens ?? 0;
141
149
  state.tokenUsage.totalTokens = state.tokenUsage.inputTokens + state.tokenUsage.outputTokens;
142
150
  if (usage.inputTokens != null)
143
151
  state.lastInputTokens = usage.inputTokens;
144
152
  callbacks.onUsageUpdate(state.tokenUsage);
153
+ void persistUsageSnapshot(state, modelId);
145
154
  }
146
155
  return result.finishReason;
147
156
  }
@@ -162,6 +171,17 @@ async function runTurn(state, model, options, systemPrompt, callbacks) {
162
171
  modelId: options.modelId,
163
172
  sessionId: state.sessionId,
164
173
  });
174
+ // Extended-thinking / reasoning toggle. The user-facing `/thinking on|off`
175
+ // command (App.tsx) flips `options.thinking`; we translate that flag into
176
+ // the provider-specific switch (Anthropic `thinking`, Google
177
+ // `thinkingConfig`, Alibaba `enableThinking`, etc.) and merge it into the
178
+ // existing per-call providerOptions. Models with no thinking concept
179
+ // (gpt-4.1, grok-3, glm-4-plus) get an empty entry — the SDK silently
180
+ // ignores the unrelated keys. Defaults to off when undefined so a stale
181
+ // config without the new field doesn't surprise users with a quality /
182
+ // latency change on launch.
183
+ const thinkingOptions = getThinkingProviderOptions(options.modelId, options.thinking ?? false);
184
+ const mergedProviderOptions = mergeThinkingOptions(cached.providerOptions, thinkingOptions);
165
185
  let result;
166
186
  try {
167
187
  result = streamText({
@@ -181,7 +201,7 @@ async function runTurn(state, model, options, systemPrompt, callbacks) {
181
201
  // `Record<string, unknown>` shape because provider-specific field sets
182
202
  // drift too fast to keep a strict union in sync. The runtime contract
183
203
  // is narrow JSON and we cast here at the single call site.
184
- providerOptions: cached.providerOptions,
204
+ providerOptions: mergedProviderOptions,
185
205
  });
186
206
  }
187
207
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-compat.d.ts","sourceRoot":"","sources":["../../src/agent/provider-compat.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAKtC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAc3F;AA0DD;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAoEf"}
1
+ {"version":3,"file":"provider-compat.d.ts","sourceRoot":"","sources":["../../src/agent/provider-compat.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAKtC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAc3F;AAiFD;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAoEf"}
@@ -34,10 +34,34 @@ export function ensureReasoningContentParts(messages, modelId) {
34
34
  }
35
35
  }
36
36
  }
37
+ // Cap OCR cache so a long session that pages through many distinct images
38
+ // doesn't grow the heap unboundedly. Map preserves insertion order, so we
39
+ // can evict the oldest entry by reading `keys().next()` — that's our LRU.
40
+ // Re-inserting a hit (via delete+set) bumps it to the most-recent slot.
41
+ const OCR_CACHE_LIMIT = 50;
37
42
  const ocrCache = new Map();
43
+ function ocrCacheGet(key) {
44
+ const hit = ocrCache.get(key);
45
+ if (hit === undefined)
46
+ return undefined;
47
+ // Touch: move to most-recent slot.
48
+ ocrCache.delete(key);
49
+ ocrCache.set(key, hit);
50
+ return hit;
51
+ }
52
+ function ocrCacheSet(key, value) {
53
+ if (ocrCache.has(key))
54
+ ocrCache.delete(key);
55
+ ocrCache.set(key, value);
56
+ if (ocrCache.size > OCR_CACHE_LIMIT) {
57
+ const oldest = ocrCache.keys().next().value;
58
+ if (oldest !== undefined)
59
+ ocrCache.delete(oldest);
60
+ }
61
+ }
38
62
  async function ocrBuffer(buffer) {
39
63
  const key = `${buffer.length}:${buffer.subarray(0, 64).toString('base64')}`;
40
- const cached = ocrCache.get(key);
64
+ const cached = ocrCacheGet(key);
41
65
  if (cached != null)
42
66
  return cached;
43
67
  // tesseract.js takes a path, URL, or Buffer. Buffers work but some
@@ -46,7 +70,7 @@ async function ocrBuffer(buffer) {
46
70
  try {
47
71
  await fs.writeFile(tmp, buffer);
48
72
  const text = await ocrImage(tmp);
49
- ocrCache.set(key, text);
73
+ ocrCacheSet(key, text);
50
74
  return text;
51
75
  }
52
76
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"provider-compat.js","sourceRoot":"","sources":["../../src/agent/provider-compat.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAI5B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAwB,EAAE,OAAe;IACnF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAM;IAE5C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAQ;QAEtC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,SAAQ;QAErC,MAAM,YAAY,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;QAC7F,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,CAAC;YAAC,OAAkD,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC;AACH,CAAC;AAqBD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;AAE1C,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAA;IAEjC,mEAAmE;IACnE,wEAAwE;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACtG,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;QAChC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA4C;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;IACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IACpC,IAAI,GAAG,YAAY,UAAU;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,iFAAiF;QACjF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACpF,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,QAAwB,EACxB,OAAe;IAEf,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;QAAE,OAAM;IAElC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,8EAA8E;QAC9E,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,MAAM,SAAS,GAAuB,EAAE,CAAA;YACxC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAA8C,CAAC,CAAA;oBAChF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;oBACjE,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iHAAiH,IAAI,EAAE;qBAC9H,CAAC,CAAA;oBACF,SAAQ;gBACV,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACtC,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kBAAmB,IAA8B,CAAC,QAAQ,IAAI,SAAS,qDAAqD;qBACnI,CAAC,CAAA;oBACF,SAAQ;gBACV,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;YACD,CAAC;YAAC,GAAqC,CAAC,OAAO,GAAG,SAAS,CAAA;YAC3D,SAAQ;QACV,CAAC;QAED,0EAA0E;QAC1E,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;oBAAE,SAAQ;gBACzC,MAAM,MAAM,GAAI,IAAiC,CAAC,MAAM,CAAA;gBACxD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBAElF,MAAM,SAAS,GAAc,EAAE,CAAA;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAqG,EAAE,CAAC;oBACjI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;wBAC7B,IAAI,IAAI,GAAG,iBAAiB,CAAA;wBAC5B,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;4BAC1C,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;wBAChC,CAAC;wBAAC,MAAM,CAAC;4BACP,gCAAgC;wBAClC,CAAC;wBACD,SAAS,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,kFAAkF,IAAI,EAAE;yBAC/F,CAAC,CAAA;wBACF,SAAQ;oBACV,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;wBACvG,SAAS,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,6BAA6B,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,IAAI,QAAQ,sDAAsD;yBACvI,CAAC,CAAA;wBACF,SAAQ;oBACV,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACvB,CAAC;gBACD,CAAC;gBAAC,MAAsB,CAAC,KAAK,GAAG,SAAS,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"provider-compat.js","sourceRoot":"","sources":["../../src/agent/provider-compat.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,13 @@ export interface StreamResult {
15
15
  usage: Promise<{
16
16
  inputTokens?: number;
17
17
  outputTokens?: number;
18
+ /** AI SDK v6 normalizes provider cache fields here. cacheReadTokens
19
+ * is a subset of inputTokens (don't double-count); cacheWriteTokens
20
+ * is what Anthropic charges as cache_creation_input_tokens. */
21
+ inputTokenDetails?: {
22
+ cacheReadTokens?: number;
23
+ cacheWriteTokens?: number;
24
+ };
18
25
  } | undefined>;
19
26
  finishReason: Promise<string>;
20
27
  toolCalls: Promise<Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../src/agent/stream-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAEtC,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,aAAa,CAAC;QACxB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,QAAQ,EAAE,OAAO,CAAC;QAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAA;IAC/C,KAAK,EAAE,OAAO,CAAC;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IAC3E,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,SAAS,EAAE,OAAO,CAChB,KAAK,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/B,CAAC,CACH,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAM5D"}
1
+ {"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../src/agent/stream-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAEtC,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,aAAa,CAAC;QACxB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,QAAQ,EAAE,OAAO,CAAC;QAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAA;IAC/C,KAAK,EAAE,OAAO,CACV;QACE,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB;;wEAEgE;QAChE,iBAAiB,CAAC,EAAE;YAClB,eAAe,CAAC,EAAE,MAAM,CAAA;YACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;SAC1B,CAAA;KACF,GACD,SAAS,CACZ,CAAA;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,SAAS,EAAE,OAAO,CAChB,KAAK,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/B,CAAC,CACH,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAM5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../src/agent/stream-utils.ts"],"names":[],"mappings":"AAyBA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;IACrB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC"}
1
+ {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../src/agent/stream-utils.ts"],"names":[],"mappings":"AAsCA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;IACrB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC"}
@@ -128,7 +128,7 @@ async function handleToolCall(tc, state, options, callbacks) {
128
128
  const isAutoExecuted = AUTO_EXECUTED_TOOLS.has(toolName);
129
129
  const loopCheck = checkForLoop(state, toolName, input, toolCallId);
130
130
  if (loopCheck.kind !== 'ok') {
131
- recordToolCall(state, toolName, input);
131
+ recordToolCall(state, toolName, input, loopCheck.hash);
132
132
  if (isAutoExecuted) {
133
133
  // The tool result already exists in state.messages. Append a follow-up
134
134
  // user-role notice so the model's next step has explicit context that
@@ -164,7 +164,7 @@ async function handleToolCall(tc, state, options, callbacks) {
164
164
  }
165
165
  return;
166
166
  }
167
- recordToolCall(state, toolName, input);
167
+ recordToolCall(state, toolName, input, loopCheck.hash);
168
168
  // ── Permission check for write tools and shell ──
169
169
  if (toolName === 'writeFile' || toolName === 'edit' || toolName === 'shell') {
170
170
  const approved = await checkPermission({ toolCallId, toolName, input }, options.trustMode, callbacks.onAskPermission);