zelari-code 1.34.0 → 1.35.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.
@@ -1,11 +1,17 @@
1
+ import { resolvePromptCacheTtl } from '../hooks/chatStats.js';
1
2
  const ANTHROPIC_VERSION = '2023-06-01';
2
3
  const ANTHROPIC_BETA = 'oauth-2025-04-20';
3
- function authHeaders(apiKey) {
4
+ /** Required to activate the extended (1h) prompt-cache TTL. */
5
+ const ANTHROPIC_BETA_EXTENDED_CACHE_TTL = 'extended-cache-ttl-2025-04-11';
6
+ function authHeaders(apiKey, longCacheTtl) {
7
+ const beta = longCacheTtl
8
+ ? `${ANTHROPIC_BETA},${ANTHROPIC_BETA_EXTENDED_CACHE_TTL}`
9
+ : ANTHROPIC_BETA;
4
10
  return {
5
11
  'Content-Type': 'application/json',
6
12
  Accept: 'application/json',
7
13
  'anthropic-version': ANTHROPIC_VERSION,
8
- 'anthropic-beta': ANTHROPIC_BETA,
14
+ 'anthropic-beta': beta,
9
15
  Authorization: `Bearer ${apiKey}`,
10
16
  'x-api-key': apiKey,
11
17
  };
@@ -49,19 +55,53 @@ function splitMessages(messages) {
49
55
  }
50
56
  rest.push({ role: m.role, content: m.content ?? '' });
51
57
  }
52
- return { system: systemParts.join('\n\n'), rest };
58
+ return { systemParts, rest };
59
+ }
60
+ /**
61
+ * Tag the last content block of a message with `cache_control` — the
62
+ * rolling conversation breakpoint. Anthropic caches the longest previously
63
+ * seen prefix ending at a breakpoint, so each turn's final message extends
64
+ * the cached prefix instead of re-billing the whole transcript.
65
+ */
66
+ function withRollingCacheBreakpoint(msg, cacheControl) {
67
+ const content = msg.content;
68
+ if (typeof content === 'string') {
69
+ return { ...msg, content: [{ type: 'text', text: content, cache_control: cacheControl }] };
70
+ }
71
+ if (Array.isArray(content) && content.length > 0) {
72
+ const blocks = content.slice();
73
+ const last = blocks[blocks.length - 1];
74
+ blocks[blocks.length - 1] = { ...last, cache_control: cacheControl };
75
+ return { ...msg, content: blocks };
76
+ }
77
+ return msg;
53
78
  }
54
79
  export function anthropicMessagesProvider(config) {
55
80
  return async function* (params) {
56
- const { system, rest } = splitMessages(params.messages);
81
+ const { systemParts, rest } = splitMessages(params.messages);
82
+ // Explicit prompt-cache breakpoints (Anthropic-only mechanism; the
83
+ // OpenAI-compatible path relies on automatic server-side caching).
84
+ // Two breakpoints of the four allowed:
85
+ // 1. last STABLE system block — caches tools + stable prompt prefix.
86
+ // systemMessagesFromSplit emits [stable, volatile?] in that order,
87
+ // so with 2+ system messages the stable boundary is the penultimate.
88
+ // 2. last conversation message — rolling prefix over the transcript.
89
+ const ttlPref = resolvePromptCacheTtl();
90
+ const cacheControl = ttlPref === '1h' ? { type: 'ephemeral', ttl: '1h' } : { type: 'ephemeral' };
57
91
  const body = {
58
92
  model: params.model,
59
93
  max_tokens: 16_384,
60
- messages: rest,
94
+ messages: rest.length > 0
95
+ ? rest.map((m, i) => (i === rest.length - 1 ? withRollingCacheBreakpoint(m, cacheControl) : m))
96
+ : rest,
61
97
  stream: true,
62
98
  };
63
- if (system)
64
- body.system = system;
99
+ if (systemParts.length > 0) {
100
+ const stableIdx = systemParts.length >= 2 ? systemParts.length - 2 : 0;
101
+ body.system = systemParts.map((text, i) => i === stableIdx
102
+ ? { type: 'text', text, cache_control: cacheControl }
103
+ : { type: 'text', text });
104
+ }
65
105
  if (params.tools && params.tools.length > 0) {
66
106
  body.tools = params.tools.map((t) => ({
67
107
  name: t.name,
@@ -75,7 +115,7 @@ export function anthropicMessagesProvider(config) {
75
115
  try {
76
116
  response = await fetch(url, {
77
117
  method: 'POST',
78
- headers: authHeaders(config.apiKey),
118
+ headers: authHeaders(config.apiKey, ttlPref === '1h'),
79
119
  body: JSON.stringify(body),
80
120
  signal: params.signal,
81
121
  });
@@ -97,6 +137,10 @@ export function anthropicMessagesProvider(config) {
97
137
  let buffer = '';
98
138
  let currentTool = null;
99
139
  let emittedTool = false;
140
+ // Prompt-side usage arrives on `message_start` (input + cache fields);
141
+ // completion tokens arrive later on `message_delta.usage`. Held here so
142
+ // the single emitted usage delta reports the full picture.
143
+ let startUsage = null;
100
144
  const flushTool = function* () {
101
145
  if (!currentTool?.name)
102
146
  return;
@@ -165,15 +209,36 @@ export function anthropicMessagesProvider(config) {
165
209
  else if (type === 'content_block_stop') {
166
210
  yield* flushTool();
167
211
  }
212
+ else if (type === 'message_start') {
213
+ const usage = ev.message?.usage;
214
+ if (usage) {
215
+ const num = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : 0;
216
+ startUsage = {
217
+ inputTokens: num(usage.input_tokens),
218
+ cacheReadTokens: num(usage.cache_read_input_tokens),
219
+ cacheCreationTokens: num(usage.cache_creation_input_tokens),
220
+ };
221
+ }
222
+ }
168
223
  else if (type === 'message_delta') {
169
224
  const usage = (ev.usage ?? ev.delta?.usage);
170
225
  if (usage) {
226
+ // Anthropic reports uncached input separately from cache
227
+ // read/creation tokens; promptTokens must include all three to
228
+ // match the OpenAI-compatible path (where prompt_tokens already
229
+ // contains cached tokens) so cost accounting stays consistent.
230
+ const uncachedInput = startUsage?.inputTokens ?? (usage.input_tokens ?? 0);
231
+ const cacheRead = startUsage?.cacheReadTokens ?? 0;
232
+ const cacheCreation = startUsage?.cacheCreationTokens ?? 0;
233
+ const promptTokens = uncachedInput + cacheRead + cacheCreation;
234
+ const completionTokens = usage.output_tokens ?? 0;
171
235
  yield {
172
236
  kind: 'usage',
173
237
  usage: {
174
- promptTokens: usage.input_tokens ?? 0,
175
- completionTokens: usage.output_tokens ?? 0,
176
- totalTokens: (usage.input_tokens ?? 0) + (usage.output_tokens ?? 0),
238
+ promptTokens,
239
+ completionTokens,
240
+ totalTokens: promptTokens + completionTokens,
241
+ ...(cacheRead > 0 ? { cachedPromptTokens: cacheRead } : {}),
177
242
  },
178
243
  };
179
244
  }
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/cli/provider/anthropic.ts"],"names":[],"mappings":"AAMA,MAAM,iBAAiB,GAAG,YAAY,CAAC;AACvC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO;QACL,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,kBAAkB;QAC1B,mBAAmB,EAAE,iBAAiB;QACtC,gBAAgB,EAAE,cAAc;QAChC,aAAa,EAAE,UAAU,MAAM,EAAE;QACjC,WAAW,EAAE,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAAwB;IAI7C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,IAAI,GAAmC,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,OAAO;gBAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,aAAa;wBACnB,WAAW,EAAE,CAAC,CAAC,UAAU;wBACzB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;qBACzB;iBACF;aACF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,OAAO,GAAmC,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,UAAU;oBAChB,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA8B;IACtE,OAAO,KAAK,SAAS,CAAC,EAAE,MAAM;QAC5B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;SACb,CAAC;QACF,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,YAAY,EAAE,CAAC,CAAC,UAAU;aAC3B,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,GAAG,IAAI,cAAc,CAAC;QAClC,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aAC9E,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;YACnF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAA0D,IAAI,CAAC;QAC9E,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,MAAM,SAAS,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE,IAAI;gBAAE,OAAO;YAC/B,IAAI,IAAI,GAA4B,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAA4B,CAAC;YAC7E,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,EAAE,CAAC;YACZ,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;YACnB,MAAM;gBACJ,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,WAAW,CAAC,EAAE;gBAC1B,QAAQ,EAAE,WAAW,CAAC,IAAI;gBAC1B,IAAI;aACL,CAAC;YACF,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAChB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;wBAAE,SAAS;oBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ;wBAAE,SAAS;oBACzC,IAAI,EAA2B,CAAC;oBAChC,IAAI,CAAC;wBACH,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;oBACnD,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;oBACD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;oBACrB,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;wBACnC,MAAM,KAAK,GAAG,EAAE,CAAC,KAA4C,CAAC;wBAC9D,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC5C,CAAC;6BAAM,IAAI,KAAK,EAAE,IAAI,KAAK,gBAAgB,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;4BAClF,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACpD,CAAC;6BAAM,IAAI,KAAK,EAAE,IAAI,KAAK,kBAAkB,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;4BACxF,IAAI,WAAW;gCAAE,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC;wBAC9D,CAAC;oBACH,CAAC;yBAAM,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;wBAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,aAAoD,CAAC;wBACtE,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;4BAC/B,WAAW,GAAG;gCACZ,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;gCAChE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gCACtD,QAAQ,EAAE,EAAE;6BACb,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;wBACzC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;oBACrB,CAAC;yBAAM,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;wBACpC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,IAAK,EAAE,CAAC,KAAyC,EAAE,KAAK,CAElE,CAAC;wBACd,IAAI,KAAK,EAAE,CAAC;4BACV,MAAM;gCACJ,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;oCACrC,gBAAgB,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;oCAC1C,WAAW,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;iCACpE;6BACF,CAAC;wBACJ,CAAC;wBACD,MAAM,IAAI,GAAI,EAAE,CAAC,KAA8C,EAAE,WAAW,CAAC;wBAC7E,IAAI,IAAI,EAAE,CAAC;4BACT,MAAM;gCACJ,IAAI,EAAE,QAAQ;gCACd,MAAM,EAAE,IAAI,KAAK,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;6BACnE,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5B,MAAM,GAAG,GACP,OAAQ,EAAE,CAAC,KAA0C,EAAE,OAAO,KAAK,QAAQ;4BACzE,CAAC,CAAE,EAAE,CAAC,KAA6B,CAAC,OAAO;4BAC3C,CAAC,CAAC,wBAAwB,CAAC;wBAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;wBACtC,OAAO;oBACT,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACxE,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/cli/provider/anthropic.ts"],"names":[],"mappings":"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"}
@@ -247,6 +247,84 @@ export function resolveBaseUrl(providerId) {
247
247
  }
248
248
  return PROVIDER_ENDPOINTS[providerId];
249
249
  }
250
+ /**
251
+ * Identity-keyed memo of AgentMessage → OpenAI wire-format mapping.
252
+ * The harness treats messages as append-only within a run (compaction
253
+ * rebuilds arrays with fresh objects), so each message object maps exactly
254
+ * once and every subsequent provider call — one per tool-loop iteration —
255
+ * reuses the cached form instead of re-stringifying every past tool-call's
256
+ * args each time. Image-bearing user messages are excluded because their
257
+ * mapping depends on the per-call vision capability of the active model.
258
+ */
259
+ const messageMappingCache = new WeakMap();
260
+ function mapAgentMessage(m, vision) {
261
+ if (m.role === 'tool') {
262
+ return {
263
+ role: 'tool',
264
+ tool_call_id: m.toolCallId,
265
+ content: m.content,
266
+ };
267
+ }
268
+ if (m.role === 'assistant' && m.toolCalls && m.toolCalls.length > 0) {
269
+ // DeepSeek thinking mode: when an assistant turn issued tool_calls,
270
+ // `reasoning_content` MUST be echoed on every subsequent request or
271
+ // the API returns HTTP 400. Other providers ignore the extra field.
272
+ const msg = {
273
+ role: 'assistant',
274
+ content: m.content ?? '',
275
+ tool_calls: m.toolCalls.map((tc) => ({
276
+ id: tc.id,
277
+ type: 'function',
278
+ function: {
279
+ name: tc.name,
280
+ arguments: JSON.stringify(tc.args ?? {}),
281
+ },
282
+ })),
283
+ };
284
+ if (m.reasoningContent && m.reasoningContent.length > 0) {
285
+ msg.reasoning_content = m.reasoningContent;
286
+ }
287
+ return msg;
288
+ }
289
+ // Assistant text-only turns may still carry reasoning_content for
290
+ // multi-turn continuity on some providers; include when present.
291
+ if (m.role === 'assistant' &&
292
+ m.reasoningContent &&
293
+ m.reasoningContent.length > 0) {
294
+ return {
295
+ role: 'assistant',
296
+ content: m.content ?? '',
297
+ reasoning_content: m.reasoningContent,
298
+ };
299
+ }
300
+ // Vision: user turns may carry inline images. When the active model is
301
+ // vision-capable we send OpenAI content blocks (image_url data URI) —
302
+ // same provider key, no third-party API. Otherwise keep the text and
303
+ // annotate that pixels were NOT sent.
304
+ if (m.role === 'user' && m.images && m.images.length > 0) {
305
+ if (vision) {
306
+ return {
307
+ role: 'user',
308
+ content: [
309
+ { type: 'text', text: m.content ?? '' },
310
+ ...m.images.map((img) => ({
311
+ type: 'image_url',
312
+ image_url: { url: dataUriFromImage(img) },
313
+ })),
314
+ ],
315
+ };
316
+ }
317
+ const notes = m.images
318
+ .map((img) => `[Immagine allegata: ${img.alt ?? img.mime}]`)
319
+ .join('\n');
320
+ return {
321
+ role: 'user',
322
+ content: `${m.content ?? ''}\n\n${notes}\n\n` +
323
+ '(Il modello attivo non supporta input visivi: i pixel non sono stati inviati.)',
324
+ };
325
+ }
326
+ return { role: m.role, content: m.content };
327
+ }
250
328
  export function openaiCompatibleProvider(config) {
251
329
  return async function* (params) {
252
330
  // Map the provider-neutral AgentMessage[] into the OpenAI chat format.
@@ -255,76 +333,20 @@ export function openaiCompatibleProvider(config) {
255
333
  // toolCalls: [{id,name,args}] } (see AgentHarness accumulation). Here we
256
334
  // translate both into the shape OpenAI expects:
257
335
  // - assistant with tool_calls: { role:'assistant', content, tool_calls:[{id,type:'function',function:{name,arguments}}] }
258
- // - tool result: { role:'tool', tool_call_id, content }
336
+ // - tool result: { role: 'tool', tool_call_id, content }
259
337
  // Resolve vision capability once per call (model may vary per call).
260
338
  const vision = modelSupportsVision(params.model);
261
339
  const messages = params.messages.map((m) => {
262
- if (m.role === 'tool') {
263
- return {
264
- role: 'tool',
265
- tool_call_id: m.toolCallId,
266
- content: m.content,
267
- };
340
+ const cacheable = !(m.role === 'user' && m.images && m.images.length > 0);
341
+ if (cacheable) {
342
+ const cached = messageMappingCache.get(m);
343
+ if (cached)
344
+ return cached;
268
345
  }
269
- if (m.role === 'assistant' && m.toolCalls && m.toolCalls.length > 0) {
270
- // DeepSeek thinking mode: when an assistant turn issued tool_calls,
271
- // `reasoning_content` MUST be echoed on every subsequent request or
272
- // the API returns HTTP 400. Other providers ignore the extra field.
273
- const msg = {
274
- role: 'assistant',
275
- content: m.content ?? '',
276
- tool_calls: m.toolCalls.map((tc) => ({
277
- id: tc.id,
278
- type: 'function',
279
- function: {
280
- name: tc.name,
281
- arguments: JSON.stringify(tc.args ?? {}),
282
- },
283
- })),
284
- };
285
- if (m.reasoningContent && m.reasoningContent.length > 0) {
286
- msg.reasoning_content = m.reasoningContent;
287
- }
288
- return msg;
289
- }
290
- // Assistant text-only turns may still carry reasoning_content for
291
- // multi-turn continuity on some providers; include when present.
292
- if (m.role === 'assistant' &&
293
- m.reasoningContent &&
294
- m.reasoningContent.length > 0) {
295
- return {
296
- role: 'assistant',
297
- content: m.content ?? '',
298
- reasoning_content: m.reasoningContent,
299
- };
300
- }
301
- // Vision: user turns may carry inline images. When the active model is
302
- // vision-capable we send OpenAI content blocks (image_url data URI) —
303
- // same provider key, no third-party API. Otherwise keep the text and
304
- // annotate that pixels were NOT sent.
305
- if (m.role === 'user' && m.images && m.images.length > 0) {
306
- if (vision) {
307
- return {
308
- role: 'user',
309
- content: [
310
- { type: 'text', text: m.content ?? '' },
311
- ...m.images.map((img) => ({
312
- type: 'image_url',
313
- image_url: { url: dataUriFromImage(img) },
314
- })),
315
- ],
316
- };
317
- }
318
- const notes = m.images
319
- .map((img) => `[Immagine allegata: ${img.alt ?? img.mime}]`)
320
- .join('\n');
321
- return {
322
- role: 'user',
323
- content: `${m.content ?? ''}\n\n${notes}\n\n` +
324
- '(Il modello attivo non supporta input visivi: i pixel non sono stati inviati.)',
325
- };
326
- }
327
- return { role: m.role, content: m.content };
346
+ const mapped = mapAgentMessage(m, vision);
347
+ if (cacheable)
348
+ messageMappingCache.set(m, mapped);
349
+ return mapped;
328
350
  });
329
351
  const body = {
330
352
  // Use `params.model` (per-call override from AgentHarness, e.g. for
@@ -620,6 +642,13 @@ export function openaiCompatibleProvider(config) {
620
642
  // OpenAI tool_calls are streamed incrementally — accumulate args
621
643
  // per index and emit a tool_call delta when the args JSON closes.
622
644
  if (Array.isArray(delta?.tool_calls)) {
645
+ // Accumulate args fragments only — parsing happens once at
646
+ // flush time (finish_reason / [DONE] / stream end). The old
647
+ // heuristic re-parsed the whole accumulated buffer on every
648
+ // fragment ending in `}`, which is O(n²) for brace-laden
649
+ // args (e.g. write_file content containing JSON). The
650
+ // harness executes tools only on finish, so deferring the
651
+ // parse has no behavioral effect.
623
652
  for (const tc of delta.tool_calls) {
624
653
  const idx = tc.index ?? 0;
625
654
  const existing = toolCallAccumulator.get(idx) ?? {
@@ -634,22 +663,6 @@ export function openaiCompatibleProvider(config) {
634
663
  if (tc.function?.arguments)
635
664
  existing.argsJson += tc.function.arguments;
636
665
  toolCallAccumulator.set(idx, existing);
637
- // Heuristic: when argsJson parses as a complete JSON object, emit.
638
- // Do NOT emit on empty args mid-stream (name often arrives first;
639
- // empty `{}` is flushed on finish/[DONE] instead).
640
- if (existing.argsJson.trim().endsWith('}')) {
641
- const parsedArgs = tryParseArgs(existing.argsJson);
642
- if (parsedArgs !== null && existing.name) {
643
- toolCallAccumulator.delete(idx);
644
- emittedToolCall = true;
645
- yield {
646
- kind: 'tool_call',
647
- toolCallId: existing.id || `tc-${idx}`,
648
- toolName: existing.name,
649
- args: parsedArgs,
650
- };
651
- }
652
- }
653
666
  }
654
667
  }
655
668
  // Final chunk: flush any leftover complete tool calls, then surface
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../../src/cli/provider/openai-compatible.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../../src/cli/provider/openai-compatible.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@
13
13
  */
14
14
  import { homedir } from 'node:os';
15
15
  import { join } from 'node:path';
16
+ import { readdirSync, statSync } from 'node:fs';
16
17
  import { LifecycleHookRunner } from '@zelari/core/harness';
17
18
  import { isFolderTrusted } from './folderTrust.js';
18
19
  /** ~/.zelari-code/hooks — user-global hooks (always active). */
@@ -23,21 +24,77 @@ export function globalHooksDir() {
23
24
  export function projectHooksDir(projectRoot) {
24
25
  return join(projectRoot, '.zelari', 'hooks');
25
26
  }
27
+ /**
28
+ * Snapshot hook dirs so we reload only when a `*.json` file is added,
29
+ * removed, or rewritten. Directory mtime alone misses in-place edits on
30
+ * Windows; per-file mtime+size is cheap compared to re-reading contents.
31
+ */
32
+ export function fingerprintHookDirs(dirs) {
33
+ const parts = [];
34
+ for (const dir of dirs) {
35
+ let names;
36
+ try {
37
+ names = readdirSync(dir).filter((f) => f.endsWith('.json')).sort();
38
+ }
39
+ catch {
40
+ parts.push(`${dir}:missing`);
41
+ continue;
42
+ }
43
+ if (names.length === 0) {
44
+ try {
45
+ parts.push(`${dir}:empty:${statSync(dir).mtimeMs}`);
46
+ }
47
+ catch {
48
+ parts.push(`${dir}:empty`);
49
+ }
50
+ continue;
51
+ }
52
+ for (const name of names) {
53
+ const full = join(dir, name);
54
+ try {
55
+ const st = statSync(full);
56
+ parts.push(`${full}:${st.mtimeMs}:${st.size}`);
57
+ }
58
+ catch {
59
+ parts.push(`${full}:gone`);
60
+ }
61
+ }
62
+ }
63
+ return parts.join('\0');
64
+ }
26
65
  /**
27
66
  * Create the runner with the standard dir layout:
28
67
  * global hooks always; project hooks only when `projectRoot` is trusted.
68
+ *
69
+ * v1.35: this runs on every user turn and used to readdir+readFile both
70
+ * hook dirs with sync fs each time. The built runner is cached until the
71
+ * hook-file fingerprint changes. Single-slot cache: one cwd per process.
29
72
  */
30
- export function createDefaultLifecycleHooks(projectRoot = process.cwd()) {
31
- const runner = new LifecycleHookRunner();
32
- const dirs = [globalHooksDir()];
33
- if (isFolderTrusted(projectRoot)) {
34
- dirs.push(projectHooksDir(projectRoot));
73
+ let runnerCache = null;
74
+ /** Build (or reuse) a runner from an explicit dir list. Exported for tests. */
75
+ export function createLifecycleHooksFromDirs(dirs) {
76
+ const fingerprint = fingerprintHookDirs(dirs);
77
+ if (runnerCache && runnerCache.fingerprint === fingerprint) {
78
+ return runnerCache.runner;
35
79
  }
80
+ const runner = new LifecycleHookRunner();
36
81
  for (const dir of dirs) {
37
82
  runner.loadDir(dir);
38
83
  }
84
+ runnerCache = { fingerprint, runner };
39
85
  return runner;
40
86
  }
87
+ export function createDefaultLifecycleHooks(projectRoot = process.cwd()) {
88
+ const dirs = [globalHooksDir()];
89
+ if (isFolderTrusted(projectRoot)) {
90
+ dirs.push(projectHooksDir(projectRoot));
91
+ }
92
+ return createLifecycleHooksFromDirs(dirs);
93
+ }
94
+ /** Drop the cached runner (tests + /hooks reload flows). */
95
+ export function resetLifecycleHookCache() {
96
+ runnerCache = null;
97
+ }
41
98
  /**
42
99
  * Describe hook sources for /inspect: each dir + whether it is active
43
100
  * (global always; project only when trusted).
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycleHooks.js","sourceRoot":"","sources":["../../../src/cli/safety/lifecycleHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,gEAAgE;AAChE,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAChC,IAAI,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAKrE,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7C,OAAO;QACL,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;QACzD,EAAE,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;KAC1E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lifecycleHooks.js","sourceRoot":"","sources":["../../../src/cli/safety/lifecycleHooks.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  * reveals user prompts. This matches v3-C's privacy stance for the
13
13
  * history log.
14
14
  *
15
- * Storage: `~/.tmp/anathema-coder/skill-cache.json` (override via
15
+ * Storage: `~/.tmp/zelari-code/skill-cache.json` (override via
16
16
  * `ANATHEMA_SKILL_CACHE_FILE` env var). Bounded size: callers should
17
17
  * purge periodically; the file grows by entry size, no rotation.
18
18
  *
@@ -39,6 +39,7 @@ import { providerFromEnv, providerConfigFor, } from './provider/openai-compatibl
39
39
  import { buildProviderStream } from './provider/resolveStream.js';
40
40
  import { defaultPermissionPolicy, resolveToolPermission, } from './safety/toolPermissions.js';
41
41
  import { createDefaultLifecycleHooks } from './safety/lifecycleHooks.js';
42
+ import { withResultCache } from './toolResultCache.js';
42
43
  import { typedErr } from '@zelari/core/harness/tools/toolTypes';
43
44
  import { cliToolToEnhanced, registerCustomTool } from '@zelari/core/skills';
44
45
  /**
@@ -64,11 +65,13 @@ export function createBuiltinToolRegistry(options = {}) {
64
65
  // the model sees compiler feedback in the same turn (opt out: ZELARI_DIAGNOSTICS=0).
65
66
  const diagnosticsOn = options.diagnostics ?? process.env.ZELARI_DIAGNOSTICS !== '0';
66
67
  const withDiag = (t) => diagnosticsOn ? wrapWithDiagnostics(t, root, options.diagnosticsRunner) : t;
67
- const safeReadFile = wrapWithSandbox(readFileTool, ['path'], root, audit, sessionId);
68
+ // Cache sits inside the sandbox wrap so permission + path checks still
69
+ // run on every call; only the disk/search work is skipped on a hit.
70
+ const safeReadFile = wrapWithSandbox(withResultCache(readFileTool, { kind: 'stat' }), ['path'], root, audit, sessionId);
68
71
  const safeWriteFile = withDiag(wrapWithSandbox(writeFileTool, ['path'], root, audit, sessionId));
69
72
  const safeEditFile = withDiag(wrapWithSandbox(editFileTool, ['path'], root, audit, sessionId));
70
- const safeGrepContent = wrapWithSandbox(grepContentTool, ['path'], root, audit, sessionId);
71
- const safeListFiles = wrapWithSandbox(listFilesTool, ['path'], root, audit, sessionId);
73
+ const safeGrepContent = wrapWithSandbox(withResultCache(grepContentTool, { kind: 'ttl' }), ['path'], root, audit, sessionId);
74
+ const safeListFiles = wrapWithSandbox(withResultCache(listFilesTool, { kind: 'ttl' }), ['path'], root, audit, sessionId);
72
75
  const safeShowDiff = wrapWithSandbox(showDiffTool, ['path'], root, audit, sessionId);
73
76
  const safeApplyDiff = withDiag(wrapWithSandbox(applyDiffTool, ['path'], root, audit, sessionId));
74
77
  // Wrap bash: shell blocklist + audit.