@corenel/harness 0.7.5 → 0.9.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.
Files changed (67) hide show
  1. package/dist/conversation.d.ts +15 -0
  2. package/dist/conversation.d.ts.map +1 -1
  3. package/dist/conversation.js +13 -1
  4. package/dist/conversation.js.map +1 -1
  5. package/dist/core/compactHistory.d.ts +84 -0
  6. package/dist/core/compactHistory.d.ts.map +1 -0
  7. package/dist/core/compactHistory.js +206 -0
  8. package/dist/core/compactHistory.js.map +1 -0
  9. package/dist/core/contextPressure.d.ts +45 -0
  10. package/dist/core/contextPressure.d.ts.map +1 -0
  11. package/dist/core/contextPressure.js +69 -0
  12. package/dist/core/contextPressure.js.map +1 -0
  13. package/dist/core/loop.d.ts +25 -0
  14. package/dist/core/loop.d.ts.map +1 -1
  15. package/dist/core/loop.js +176 -13
  16. package/dist/core/loop.js.map +1 -1
  17. package/dist/core/pricing.d.ts +30 -1
  18. package/dist/core/pricing.d.ts.map +1 -1
  19. package/dist/core/pricing.js +50 -21
  20. package/dist/core/pricing.js.map +1 -1
  21. package/dist/core/summarize.d.ts +10 -0
  22. package/dist/core/summarize.d.ts.map +1 -0
  23. package/dist/core/summarize.js +66 -0
  24. package/dist/core/summarize.js.map +1 -0
  25. package/dist/guardrail/builtins.d.ts.map +1 -1
  26. package/dist/guardrail/builtins.js +9 -3
  27. package/dist/guardrail/builtins.js.map +1 -1
  28. package/dist/guardrail/validate.d.ts.map +1 -1
  29. package/dist/guardrail/validate.js +6 -2
  30. package/dist/guardrail/validate.js.map +1 -1
  31. package/dist/prompts/host.d.ts +23 -0
  32. package/dist/prompts/host.d.ts.map +1 -1
  33. package/dist/prompts/host.js.map +1 -1
  34. package/dist/prompts/index.d.ts +14 -0
  35. package/dist/prompts/index.d.ts.map +1 -1
  36. package/dist/prompts/index.js +43 -2
  37. package/dist/prompts/index.js.map +1 -1
  38. package/dist/prompts/library/defaults.generated.js +5 -5
  39. package/dist/prompts/library/defaults.generated.js.map +1 -1
  40. package/dist/providers/contextWindow.d.ts +23 -4
  41. package/dist/providers/contextWindow.d.ts.map +1 -1
  42. package/dist/providers/contextWindow.js +25 -0
  43. package/dist/providers/contextWindow.js.map +1 -1
  44. package/dist/sessions/checkpointStore.d.ts +12 -0
  45. package/dist/sessions/checkpointStore.d.ts.map +1 -0
  46. package/dist/sessions/checkpointStore.js +48 -0
  47. package/dist/sessions/checkpointStore.js.map +1 -0
  48. package/dist/sessions/fileSessionStore.d.ts +4 -0
  49. package/dist/sessions/fileSessionStore.d.ts.map +1 -1
  50. package/dist/sessions/fileSessionStore.js +28 -2
  51. package/dist/sessions/fileSessionStore.js.map +1 -1
  52. package/dist/skillSource.d.ts +36 -0
  53. package/dist/skillSource.d.ts.map +1 -0
  54. package/dist/skillSource.js +105 -0
  55. package/dist/skillSource.js.map +1 -0
  56. package/dist/skills.d.ts +38 -2
  57. package/dist/skills.d.ts.map +1 -1
  58. package/dist/skills.js +64 -9
  59. package/dist/skills.js.map +1 -1
  60. package/dist/tools/builtins.d.ts.map +1 -1
  61. package/dist/tools/builtins.js +50 -2
  62. package/dist/tools/builtins.js.map +1 -1
  63. package/dist/tools/project.d.ts +11 -0
  64. package/dist/tools/project.d.ts.map +1 -0
  65. package/dist/tools/project.js +133 -0
  66. package/dist/tools/project.js.map +1 -0
  67. package/package.json +2 -2
package/dist/core/loop.js CHANGED
@@ -6,6 +6,8 @@ import { checkFeature } from '../guards.js';
6
6
  import { STANDARD_POLICY } from '../guardrail/builtins.js';
7
7
  import { toolAddress } from '../tools/namespaces.js';
8
8
  import { effectiveThreshold, formatOffloadRef, isOffloadPointer } from '../compression.js';
9
+ import { compactHistory, compactionDecision, estimateFill, isCompactionMarker } from './compactHistory.js';
10
+ import { contextNote, contextWindowLine, initialPressureGate, pressureDecision } from './contextPressure.js';
9
11
  import { fillToolsMarker } from '../prompts/toolsMarker.js';
10
12
  import { createToolLoader, serverIndex } from '../tools/toolSearch.js';
11
13
  /** The most tools one request may carry.
@@ -29,6 +31,16 @@ export async function runAgent(args) {
29
31
  const ctxWindow = compression?.contextWindow;
30
32
  const compressionStrategy = compression?.strategy ?? 'eager';
31
33
  let fill = 0; // window fill ratio; drives the adaptive offload threshold
34
+ /* Which context-pressure band the agent has already been told about. A latch
35
+ * like compactGate below, for the same reason: the interesting event is the
36
+ * CROSSING, and repeating "the window is filling" every turn would be both
37
+ * noise and a per-turn token cost on exactly the runs that can least afford
38
+ * one. See core/contextPressure.ts. */
39
+ let pressureGate = initialPressureGate;
40
+ /* Compaction is a LATCH, not a per-turn predicate -- see compactionDecision.
41
+ * Armed at the start of a run; disarmed by a compaction; re-armed once the
42
+ * window has drained, or has refilled past where that compaction left it. */
43
+ let compactGate = { armed: true, floor: null };
32
44
  // 'deferred' strategy only: results offloaded THIS turn, awaiting the ONE
33
45
  // streamCompletion call that sends them in full (the turn right after
34
46
  // they're produced — the model that asked for the result reads it). As soon
@@ -40,7 +52,26 @@ export async function runAgent(args) {
40
52
  // common case), not only when a further call happens to follow within the
41
53
  // same run.
42
54
  const deferredOffloads = [];
43
- const maxTurns = policy.maxTurns ?? args.maxTurns ?? 8;
55
+ /* maxTurns counts ITERATIONS WITHIN ONE USER MESSAGE (one model call plus its
56
+ * tool round-trip), not messages across a conversation -- the old default of
57
+ * 8 could be exhausted inside a single tool-heavy reply. 40 gives normal work
58
+ * real headroom; explicit 0 means UNLIMITED (no turn cap at all -- the run is
59
+ * still bounded by the budget gate and the run/abort ceiling, which is what
60
+ * makes "unlimited" safe rather than runaway).
61
+ *
62
+ * `??` is the wrong operator here: it treats an explicit 0 the same as
63
+ * absent, which is exactly the bug -- "0 turns" silently replaced by the
64
+ * default and the loop never running. Absent must still fall through to the
65
+ * default (unlimited is opt-in, never implicit), so each level is checked
66
+ * for "was this actually set" rather than "is this falsy". Precedence is
67
+ * unchanged: policy.maxTurns wins over args.maxTurns wins over the default,
68
+ * and an explicit policy 0 must win over a non-zero args.maxTurns. */
69
+ const maxTurns = policy.maxTurns !== undefined
70
+ ? policy.maxTurns
71
+ : args.maxTurns !== undefined
72
+ ? args.maxTurns
73
+ : 40;
74
+ const unlimitedTurns = maxTurns === 0;
44
75
  const signal = args.signal ?? new AbortController().signal;
45
76
  const emit = (e) => args.onEvent?.(e);
46
77
  const gstate = initialState();
@@ -54,6 +85,24 @@ export async function runAgent(args) {
54
85
  signal.addEventListener('abort', () => { turnAc?.abort(); });
55
86
  args.registerInterrupt?.(() => { interrupted = true; turnAc?.abort(); });
56
87
  const messages = [...args.messages];
88
+ /* The messages that came IN, by identity. Everything this run appends is a
89
+ * fresh object, and everything that survives a compaction from the input is
90
+ * the same object, so walking back from the tail until an input message
91
+ * appears is an exact count of what this run added -- maintained by nothing,
92
+ * and therefore impossible for a later `push` site to get wrong. */
93
+ const incoming = new Set(args.messages);
94
+ const appendedFromTail = () => {
95
+ let n = 0;
96
+ for (let i = messages.length - 1; i >= 0; i--) {
97
+ const m = messages[i];
98
+ // A compaction's own checkpoint/anchor, and the system prompt unshifted
99
+ // below, are fresh objects too -- and neither is something this run said.
100
+ if (incoming.has(m) || m.role === 'system' || isCompactionMarker(m))
101
+ break;
102
+ n++;
103
+ }
104
+ return n;
105
+ };
57
106
  /* DEFERRED TOOLS: sent only once found. The loader owns the loaded set;
58
107
  * `activeTools` is what one request may carry right now -- the eager tools,
59
108
  * `tool_search`, then the loaded ones, capped. Eager first so a full loaded
@@ -66,7 +115,14 @@ export async function runAgent(args) {
66
115
  const capped = (list) => (list.length > MAX_PROVIDER_TOOLS ? list.slice(0, MAX_PROVIDER_TOOLS) : list);
67
116
  const activeTools = () => capped(loader ? [...eager, ...loader.loaded()] : eager);
68
117
  let sent = activeTools();
69
- const indexedSystem = loader ? (system ? `${system}\n\n${serverIndex(deferred)}` : serverIndex(deferred)) : system;
118
+ /* The window SIZE, stated once. Static for the run, so it rides in the
119
+ * system message and the cached prefix stays intact -- the live fill is
120
+ * delivered separately, at the tail, only when it crosses a band (see
121
+ * core/contextPressure.ts). Added HERE rather than in composeAgentSystem
122
+ * because a host resolves its window after composing, and the loop is the
123
+ * one place that always knows it. */
124
+ const systemParts = [system, loader ? serverIndex(deferred) : '', contextWindowLine(ctxWindow)].filter(Boolean);
125
+ const indexedSystem = systemParts.length ? systemParts.join('\n\n') : system;
70
126
  const filledSystem = indexedSystem ? fillToolsMarker(indexedSystem, sent) : indexedSystem;
71
127
  if (filledSystem && !messages.some((m) => m.role === 'system')) {
72
128
  messages.unshift({ role: 'system', content: filledSystem });
@@ -123,7 +179,7 @@ export async function runAgent(args) {
123
179
  let stopReason = 'stop';
124
180
  let lastToolSig = null;
125
181
  let lastStreamErr = ''; // the blip a stream retry recovered from (for the heal record)
126
- for (let turn = 1; turn <= maxTurns; turn++) {
182
+ for (let turn = 1; unlimitedTurns || turn <= maxTurns; turn++) {
127
183
  if (signal.aborted) {
128
184
  stopReason = 'aborted';
129
185
  break;
@@ -138,14 +194,115 @@ export async function runAgent(args) {
138
194
  emit({ type: 'injected', content: typeof m.content === 'string' ? m.content : '' });
139
195
  }
140
196
  }
141
- // Turn-budget guardrail (gstate.turn = completed turns).
142
- gstate.turn = turn - 1;
143
- const turnGate = evaluateTurnStart(policy, gstate);
144
- if (!turnGate.ok) {
145
- emit({ type: 'policy-violation', kind: turnGate.violation.kind, message: turnGate.violation.message, action: turnGate.action, tool: turnGate.violation.tool });
146
- if (turnGate.action === 'stop') {
147
- stopReason = 'policy';
148
- break;
197
+ /* Rung-2 history compaction, BEFORE the request is built so the compacted
198
+ * array is what goes on the wire. `fill` is last turn's prompt/window
199
+ * ratio; shouldCompact refuses below the threshold and refuses again when
200
+ * there is nothing collapsible, because a compaction that removes nothing
201
+ * still rewrites the cached prefix and re-bills everything after it.
202
+ * Rebuilt in place: callers (and `res.messages`) hold this array. */
203
+ /* On turn 1 there is no usage reading yet, so `fill` is 0 and the gate
204
+ * could not fire before the first request -- which is precisely how a run
205
+ * resuming an already-oversized conversation put it on the wire and took
206
+ * the fatal 400. Fall back to reading the window off the messages. Only as
207
+ * a fallback: a real reading is always better than an estimate that cannot
208
+ * see the tool schemas. */
209
+ const gateFill = fill || estimateFill(messages, ctxWindow);
210
+ const gate = compactionDecision(gateFill, messages, compactGate);
211
+ compactGate = gate.next;
212
+ if (args.compaction && gate.compact) {
213
+ const before = messages.length;
214
+ /* A summarizer failure is the same shape as a persist failure: the window
215
+ * is full, the model call meant to compress it did not come back, and the
216
+ * honest response is to carry on UNCOMPACTED rather than end the run on
217
+ * the recovery path. The turn then proceeds with the history it had,
218
+ * which is exactly what would have happened without compaction at all. */
219
+ try {
220
+ const out = await compactHistory(messages, {
221
+ summarize: args.compaction.summarize,
222
+ anchor: args.compaction.anchor,
223
+ offloadOverBytes: compression && compression.mode !== 'off'
224
+ ? effectiveThreshold(compression.mode, gateFill)
225
+ : undefined,
226
+ offload: toolCtx.recall
227
+ // Recorded under 'user' rather than a tool name: the RecallStore is
228
+ // indifferent to who authored the bulk, but the transcript should not
229
+ // claim a tool produced what a person pasted.
230
+ ? async (content) => formatOffloadRef(await toolCtx.recall.record('user', content))
231
+ : undefined,
232
+ });
233
+ messages.splice(0, messages.length, ...out.messages);
234
+ /* The 'deferred' strategy holds ABSOLUTE indices into `messages`, to
235
+ * rewrite those entries once the model has seen them in full. The splice
236
+ * above just invalidated every one of them, and the rewrite pass read
237
+ * `.role` off the resulting undefined -- a crash in the interactive
238
+ * CLI's shipping configuration ('deferred' + compaction). Nothing is
239
+ * lost by dropping them: the tool results they point at were collapsed
240
+ * into the checkpoint and are not in `messages` any more. */
241
+ deferredOffloads.length = 0;
242
+ /* The compaction has ALREADY happened by this point. Failing to RECORD it
243
+ * must not take the run with it -- checkpointStore.append deliberately
244
+ * rejects rather than risk clobbering an existing CHECKPOINT.md, and a
245
+ * read-only workspace rejects too. Dying here would lose the whole
246
+ * conversation in order to save nothing. */
247
+ try {
248
+ await args.compaction.onCheckpoint?.(out.checkpoint);
249
+ }
250
+ catch (e) {
251
+ alog('checkpoint persist failed', e instanceof Error ? e.message : String(e));
252
+ }
253
+ emit({ type: 'checkpoint', collapsed: before - messages.length, checkpoint: out.checkpoint });
254
+ }
255
+ catch (e) {
256
+ /* Compaction failed (most likely the summarizer's own model call). The
257
+ * turn proceeds with the history it had -- exactly what would have
258
+ * happened had compaction never been configured. Re-arm so a later turn
259
+ * may try again rather than giving up on the run for good. */
260
+ /* The floor is left as it was: it describes where the last SUCCESSFUL
261
+ * compaction landed, and a failed attempt moved nothing. */
262
+ compactGate = { ...compactGate, armed: true };
263
+ alog('compaction failed', e instanceof Error ? e.message : String(e));
264
+ }
265
+ }
266
+ /* CONTEXT PRESSURE. After the compaction block, deliberately: if a
267
+ * compaction just ran, the window it drained is the one the agent should
268
+ * be told about, not the full one that triggered it.
269
+ *
270
+ * `gateFill` is re-read rather than reused -- a compaction rewrote
271
+ * `messages` in place, so the number computed above describes a history
272
+ * that no longer exists. Turn 1 has no usage reading yet and falls back to
273
+ * the same estimate the compaction gate uses, which is what lets a RESUMED
274
+ * conversation be warned before its first request rather than after it.
275
+ *
276
+ * The notice goes at the TAIL, so every earlier message -- and therefore
277
+ * the cached prefix -- is untouched. See core/contextPressure.ts for why
278
+ * this is not simply a line in the system prompt. */
279
+ const pressureFill = fill || estimateFill(messages, ctxWindow);
280
+ const pressure = pressureDecision(pressureFill, pressureGate);
281
+ pressureGate = pressure.next;
282
+ if (pressure.band !== null && ctxWindow) {
283
+ messages.push(contextNote(pressure.band, pressureFill));
284
+ emit({
285
+ type: 'context-pressure',
286
+ band: pressure.band,
287
+ fill: pressureFill,
288
+ contextWindow: ctxWindow,
289
+ promptTokens: Math.round(pressureFill * ctxWindow),
290
+ });
291
+ }
292
+ // Turn-budget guardrail (gstate.turn = completed turns). Skipped entirely
293
+ // when unlimited: evaluateTurnStart reads policy.maxTurns directly and has
294
+ // no notion of "explicit 0 means unlimited" -- calling it unguarded would
295
+ // reintroduce the same bug this run resolved above (turn 0 >= maxTurns 0
296
+ // firing on the very first turn).
297
+ if (!unlimitedTurns) {
298
+ gstate.turn = turn - 1;
299
+ const turnGate = evaluateTurnStart(policy, gstate);
300
+ if (!turnGate.ok) {
301
+ emit({ type: 'policy-violation', kind: turnGate.violation.kind, message: turnGate.violation.message, action: turnGate.action, tool: turnGate.violation.tool });
302
+ if (turnGate.action === 'stop') {
303
+ stopReason = 'policy';
304
+ break;
305
+ }
149
306
  }
150
307
  }
151
308
  // Stream the model turn, self-healing a transient gateway/network failure with
@@ -263,6 +420,12 @@ export async function runAgent(args) {
263
420
  usage.completionTokens += streamed.usage.completionTokens;
264
421
  if (ctxWindow && ctxWindow > 0 && streamed.usage.promptTokens) {
265
422
  fill = Math.min(1, streamed.usage.promptTokens / ctxWindow);
423
+ /* The first real reading after a compaction is how far down that
424
+ * compaction actually got, and re-arming is judged against it from here
425
+ * on. Measured, never estimated: it is compared with later readings of
426
+ * the same kind. */
427
+ if (!compactGate.armed && compactGate.floor === null)
428
+ compactGate = { armed: false, floor: fill };
266
429
  }
267
430
  emit({ type: 'usage', usage: streamed.usage });
268
431
  // Commit the assistant message to history (with tool_calls if any).
@@ -439,7 +602,7 @@ export async function runAgent(args) {
439
602
  stopReason = 'policy';
440
603
  break;
441
604
  }
442
- if (turn === maxTurns)
605
+ if (!unlimitedTurns && turn === maxTurns)
443
606
  stopReason = 'max_turns';
444
607
  }
445
608
  // A stop that breaks AFTER committing the assistant tool_calls message but
@@ -454,7 +617,7 @@ export async function runAgent(args) {
454
617
  }
455
618
  alog('done', stopReason, 'tokens', usage);
456
619
  emit({ type: 'done', reason: stopReason });
457
- return { messages, text, usage, stopReason };
620
+ return { messages, text, usage, stopReason, appended: appendedFromTail() };
458
621
  }
459
622
  /** 'deferred' strategy: compact any ALREADY-oversized tool result already
460
623
  * sitting in the incoming history — i.e. produced by an earlier `runAgent()`
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"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"}
@@ -13,10 +13,39 @@ export type PriceTable = Map<string, ModelRates>;
13
13
  * crew-run guard (executor.ts), the room guard (roomDeps.ts), and `corenel
14
14
  * run`. */
15
15
  export declare function pricedForUsd(rates: ModelRates | null): boolean;
16
+ /** Model id -> context window in tokens, from the SAME hydration as
17
+ * `PriceTable`. Deliberately a SEPARATE map rather than a field added to
18
+ * `ModelRates`: `ModelRates` is the fail-closed usd-guard's contract
19
+ * (`pricedForUsd`) -- an entry existing there means "this model can be
20
+ * priced," and every caller of that guard (executor.ts, roomDeps.ts, `corenel
21
+ * run`) relies on absence-of-prices meaning "cannot enforce a usd cap."
22
+ * Folding `contextWindow` into that struct would mean a model with a window
23
+ * and NO prices either (a) still can't get in -- so its window is lost for no
24
+ * reason, since a window has nothing to do with pricing -- or (b) gets a
25
+ * `ModelRates` entry with a fabricated/zero price just to carry the window,
26
+ * which is exactly the "zero entry makes the guard pass and prices everything
27
+ * at $0" bug `pricedForUsd`'s own comment warns about. Two independent facts
28
+ * about a model (can it be priced; how big is its window) get two independent
29
+ * maps, each keyed the same way, so a model can have a window without a
30
+ * price, a price without a window, both, or neither. */
31
+ export type WindowTable = Map<string, number>;
32
+ export interface HydratedCatalog {
33
+ prices: PriceTable;
34
+ windows: WindowTable;
35
+ }
36
+ /** Hydrate BOTH tables from one fetch -- prefer this over `hydratePrices`
37
+ * alone when the caller also needs context windows (see `WindowTable` above),
38
+ * so a window-aware caller does not pay for a second round-trip to the same
39
+ * endpoint. */
40
+ export declare function hydrateCatalog(endpoint: string, getToken: () => Promise<string | null>, fetchImpl?: typeof fetch): Promise<HydratedCatalog>;
16
41
  /** Hydrate the rate table from the SAME backend the app uses (GET
17
42
  * <endpoint>/llm-providers/available, Bearer login token), so prices are the
18
43
  * current ones rather than a drifting static copy. An empty table means
19
44
  * "cannot price" -- every caller must fail closed on a usd cap rather than
20
- * treat unknown as free. */
45
+ * treat unknown as free.
46
+ *
47
+ * A thin wrapper over `hydrateCatalog` so every existing caller (executor.ts,
48
+ * roomDeps.ts, runnerService.ts, the CLI's budget guard) keeps its exact
49
+ * signature and behavior unchanged. */
21
50
  export declare function hydratePrices(endpoint: string, getToken: () => Promise<string | null>, fetchImpl?: typeof fetch): Promise<PriceTable>;
22
51
  //# sourceMappingURL=pricing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../core/pricing.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,UAAU;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACjE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQpF;AAYD,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD;;;;;WAKW;AACX,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAG9D;AASD;;;;4BAI4B;AAC5B,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,UAAU,CAAC,CAuBrB"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../core/pricing.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,UAAU;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACjE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQpF;AAYD,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD;;;;;WAKW;AACX,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAG9D;AAmBD;;;;;;;;;;;;;;wDAcwD;AACxD,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB;AA6BD;;;eAGe;AACf,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED;;;;;;;;uCAQuC;AACvC,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,UAAU,CAAC,CAErB"}
@@ -20,13 +20,12 @@ export function pricedForUsd(rates) {
20
20
  return false;
21
21
  return rates.inPrice > 0 || rates.outPrice > 0;
22
22
  }
23
- /** Hydrate the rate table from the SAME backend the app uses (GET
24
- * <endpoint>/llm-providers/available, Bearer login token), so prices are the
25
- * current ones rather than a drifting static copy. An empty table means
26
- * "cannot price" -- every caller must fail closed on a usd cap rather than
27
- * treat unknown as free. */
28
- export async function hydratePrices(endpoint, getToken, fetchImpl = fetch) {
29
- const table = new Map();
23
+ /** Shared fetch for both tables below: one call to
24
+ * <endpoint>/llm-providers/available, Bearer login token. Returns `[]` on any
25
+ * failure (no token, non-2xx, network error, bad JSON) -- every caller here
26
+ * treats an empty list the same way `hydratePrices` always has: fail closed,
27
+ * never guess. */
28
+ async function fetchAvailableModels(endpoint, getToken, fetchImpl) {
30
29
  let token = null;
31
30
  try {
32
31
  token = await getToken();
@@ -35,27 +34,57 @@ export async function hydratePrices(endpoint, getToken, fetchImpl = fetch) {
35
34
  token = null;
36
35
  }
37
36
  if (!token)
38
- return table;
37
+ return [];
39
38
  try {
40
39
  const res = await fetchImpl(`${endpoint.replace(/\/$/, '')}/llm-providers/available`, {
41
40
  headers: { Authorization: `Bearer ${token}` },
42
41
  });
43
42
  if (!res.ok)
44
- return table;
43
+ return [];
45
44
  const json = (await res.json());
46
- for (const p of json.providers ?? []) {
47
- for (const m of p.models ?? []) {
48
- // An UNPRICED model must stay ABSENT from the table, never entered at
49
- // rate 0: a zero entry is truthy, so a fail-closed usd guard would pass
50
- // and then price every turn at $0, making `maxUsd` unenforceable.
51
- // Absence is what makes the guard trip.
52
- if (m.inputPrice == null || m.outputPrice == null)
53
- continue;
54
- table.set(m.model, { inPrice: m.inputPrice, outPrice: m.outputPrice });
55
- }
45
+ const out = [];
46
+ for (const p of json.providers ?? [])
47
+ out.push(...(p.models ?? []));
48
+ return out;
49
+ }
50
+ catch {
51
+ return [];
52
+ }
53
+ }
54
+ /** Hydrate BOTH tables from one fetch -- prefer this over `hydratePrices`
55
+ * alone when the caller also needs context windows (see `WindowTable` above),
56
+ * so a window-aware caller does not pay for a second round-trip to the same
57
+ * endpoint. */
58
+ export async function hydrateCatalog(endpoint, getToken, fetchImpl = fetch) {
59
+ const prices = new Map();
60
+ const windows = new Map();
61
+ const models = await fetchAvailableModels(endpoint, getToken, fetchImpl);
62
+ for (const m of models) {
63
+ // An UNPRICED model must stay ABSENT from the table, never entered at
64
+ // rate 0: a zero entry is truthy, so a fail-closed usd guard would pass
65
+ // and then price every turn at $0, making `maxUsd` unenforceable.
66
+ // Absence is what makes the guard trip.
67
+ if (m.inputPrice != null && m.outputPrice != null) {
68
+ prices.set(m.model, { inPrice: m.inputPrice, outPrice: m.outputPrice });
69
+ }
70
+ // A window contributes independently of whether the model is priced --
71
+ // see the `WindowTable` comment above for why this is a separate map.
72
+ if (typeof m.contextWindow === 'number' && m.contextWindow > 0) {
73
+ windows.set(m.model, m.contextWindow);
56
74
  }
57
75
  }
58
- catch { /* leave the table empty -> caller fails closed on a usd cap */ }
59
- return table;
76
+ return { prices, windows };
77
+ }
78
+ /** Hydrate the rate table from the SAME backend the app uses (GET
79
+ * <endpoint>/llm-providers/available, Bearer login token), so prices are the
80
+ * current ones rather than a drifting static copy. An empty table means
81
+ * "cannot price" -- every caller must fail closed on a usd cap rather than
82
+ * treat unknown as free.
83
+ *
84
+ * A thin wrapper over `hydrateCatalog` so every existing caller (executor.ts,
85
+ * roomDeps.ts, runnerService.ts, the CLI's budget guard) keeps its exact
86
+ * signature and behavior unchanged. */
87
+ export async function hydratePrices(endpoint, getToken, fetchImpl = fetch) {
88
+ return (await hydrateCatalog(endpoint, getToken, fetchImpl)).prices;
60
89
  }
61
90
  //# sourceMappingURL=pricing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../core/pricing.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,KAAwB;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAS,CAAC;IACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO;UACjC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,qBAAqB;UACvD,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;AACvD,CAAC;AAcD;;;;;WAKW;AACX,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjD,CAAC;AASD;;;;4BAI4B;AAC5B,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,QAAsC,EACtC,YAA0B,KAAK;IAE/B,MAAM,KAAK,GAAe,IAAI,GAAG,EAAE,CAAC;IACpC,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,CAAC;QAAC,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC;IAAC,CAAC;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,EAAE;YACpF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwC,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC/B,sEAAsE;gBACtE,wEAAwE;gBACxE,kEAAkE;gBAClE,wCAAwC;gBACxC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI;oBAAE,SAAS;gBAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,+DAA+D,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../core/pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type OpenAI from 'openai';
2
+ import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions';
3
+ export interface SummarizerOptions {
4
+ /** Ceiling on the rendered transcript handed to the model. */
5
+ maxChars?: number;
6
+ }
7
+ /** Default ceiling on the rendered collapse. Generous, but finite. */
8
+ export declare const SUMMARY_INPUT_CHARS = 60000;
9
+ export declare function makeSummarizer(client: OpenAI, model: string, opts?: SummarizerOptions): (collapsed: ChatCompletionMessageParam[]) => Promise<string>;
10
+ //# sourceMappingURL=summarize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../core/summarize.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAU1C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,iBAAsB,GAC3B,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAe9D"}
@@ -0,0 +1,66 @@
1
+ /* The one model call a compaction costs.
2
+ *
3
+ * Lives in the kernel so every host compresses a conversation the same way:
4
+ * the CLI, the daemon and the browser must not each grow their own idea of
5
+ * what is worth keeping across a boundary. */
6
+ /** Marks a message the renderer had to cut, so the model knows it is partial. */
7
+ const TRUNCATION_NOTE = ' …[truncated]';
8
+ /** Below this much room a truncated line carries nothing useful; send none. */
9
+ const MIN_KEEP = 200;
10
+ /** Default ceiling on the rendered collapse. Generous, but finite. */
11
+ export const SUMMARY_INPUT_CHARS = 60000;
12
+ const SYSTEM = [
13
+ 'You are compacting an agent conversation that is about to lose its middle.',
14
+ 'Write a dense record of what was DECIDED and what the current state is:',
15
+ 'conclusions reached, constraints the user set, files and artifacts touched,',
16
+ 'and anything still open. Omit narration, pleasantries and tool mechanics.',
17
+ 'Write plain prose or short bullets. No preamble.',
18
+ ].join(' ');
19
+ export function makeSummarizer(client, model, opts = {}) {
20
+ const maxChars = opts.maxChars ?? SUMMARY_INPUT_CHARS;
21
+ return async (collapsed) => {
22
+ const rendered = renderTail(collapsed, maxChars);
23
+ const res = await client.chat.completions.create({
24
+ model,
25
+ messages: [
26
+ { role: 'system', content: SYSTEM },
27
+ { role: 'user', content: rendered },
28
+ ],
29
+ stream: false,
30
+ });
31
+ return res.choices[0]?.message?.content ?? '';
32
+ };
33
+ }
34
+ /* A compaction fires BECAUSE the window is nearly full, so this function is
35
+ * handed the largest input in the run. Sending it whole is how a
36
+ * context-overflow becomes a second context-overflow inside the recovery path.
37
+ * Oldest content goes first: the newest turns carry the decisions still in
38
+ * play, and the older ones are more likely already reflected in an earlier
39
+ * checkpoint. */
40
+ function renderTail(messages, maxChars) {
41
+ const lines = [];
42
+ let used = 0;
43
+ for (let i = messages.length - 1; i >= 0; i--) {
44
+ const m = messages[i];
45
+ const text = typeof m.content === 'string' ? m.content : JSON.stringify(m.content ?? '');
46
+ const line = `${m.role}: ${text}`;
47
+ const room = maxChars - used;
48
+ if (line.length > room) {
49
+ /* TRUNCATE the newest message rather than drop it, and stop.
50
+ *
51
+ * Breaking here instead returned '' whenever one message alone exceeded
52
+ * the budget -- which is ordinary, not exotic: the daemon hosts run
53
+ * compression `off`, so a 60K-character tool result is never offloaded.
54
+ * The summarizer then sent an EMPTY prompt (a 400 on Anthropic-backed
55
+ * gateways) and produced an empty checkpoint while the whole history was
56
+ * thrown away. Part of the newest turn is worth more than none of it. */
57
+ if (room > MIN_KEEP)
58
+ lines.unshift(line.slice(0, room - TRUNCATION_NOTE.length) + TRUNCATION_NOTE);
59
+ break;
60
+ }
61
+ lines.unshift(line);
62
+ used += line.length;
63
+ }
64
+ return lines.join('\n\n');
65
+ }
66
+ //# sourceMappingURL=summarize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../core/summarize.ts"],"names":[],"mappings":"AAAA;;;;8CAI8C;AAU9C,iFAAiF;AACjF,MAAM,eAAe,GAAG,eAAe,CAAC;AACxC,+EAA+E;AAC/E,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAM,CAAC;AAE1C,MAAM,MAAM,GAAG;IACb,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,kDAAkD;CACnD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,KAAa,EACb,OAA0B,EAAE;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC;IAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC/C,KAAK;YACL,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;gBACnC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;aACpC;YACD,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;iBAKiB;AACjB,SAAS,UAAU,CAAC,QAAsC,EAAE,QAAgB;IAC1E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACvB;;;;;;;qFAOyE;YACzE,IAAI,IAAI,GAAG,QAAQ;gBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC;YACnG,MAAM;QACR,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../guardrail/builtins.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,MAW7B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,EAAE,MA+B9B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,EAAE,MAU/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAInD,CAAC"}
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../guardrail/builtins.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,MAe7B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,EAAE,MA+B9B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,EAAE,MAY/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAInD,CAAC"}