agentfootprint 9.55.0 → 9.57.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 (172) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +8 -1
  3. package/ai-instructions/claude-code/SKILL.md +1 -1
  4. package/dist/cache/CacheDecisionSubflow.js +2 -1
  5. package/dist/cache/CacheDecisionSubflow.js.map +1 -1
  6. package/dist/conventions.js +16 -0
  7. package/dist/conventions.js.map +1 -1
  8. package/dist/core/Agent.js +43 -1
  9. package/dist/core/Agent.js.map +1 -1
  10. package/dist/core/agent/buildAgentChart.js +12 -0
  11. package/dist/core/agent/buildAgentChart.js.map +1 -1
  12. package/dist/core/agent/buildDynamicAgentChart.js +17 -0
  13. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  14. package/dist/core/agent/stages/callLLM.js +20 -2
  15. package/dist/core/agent/stages/callLLM.js.map +1 -1
  16. package/dist/core/agent/stages/prepareFinal.js +15 -0
  17. package/dist/core/agent/stages/prepareFinal.js.map +1 -1
  18. package/dist/core/agent/stages/route.js +168 -27
  19. package/dist/core/agent/stages/route.js.map +1 -1
  20. package/dist/core/agent/stages/window.js +75 -3
  21. package/dist/core/agent/stages/window.js.map +1 -1
  22. package/dist/core/agent/stages/wrapUp.js +101 -0
  23. package/dist/core/agent/stages/wrapUp.js.map +1 -0
  24. package/dist/core/agent/window/index.js.map +1 -1
  25. package/dist/core/agent/window/lastToolResult.js +123 -0
  26. package/dist/core/agent/window/lastToolResult.js.map +1 -0
  27. package/dist/core/agent/window/notice.js +58 -6
  28. package/dist/core/agent/window/notice.js.map +1 -1
  29. package/dist/core/agent/window/options.js +31 -1
  30. package/dist/core/agent/window/options.js.map +1 -1
  31. package/dist/core/agent/window/strategies/drop.js +73 -17
  32. package/dist/core/agent/window/strategies/drop.js.map +1 -1
  33. package/dist/core/agent/window/toolNames.js +81 -0
  34. package/dist/core/agent/window/toolNames.js.map +1 -0
  35. package/dist/core/agent/window/turns.js +50 -2
  36. package/dist/core/agent/window/turns.js.map +1 -1
  37. package/dist/esm/cache/CacheDecisionSubflow.js +2 -1
  38. package/dist/esm/cache/CacheDecisionSubflow.js.map +1 -1
  39. package/dist/esm/conventions.d.ts +8 -0
  40. package/dist/esm/conventions.js +16 -0
  41. package/dist/esm/conventions.js.map +1 -1
  42. package/dist/esm/core/Agent.d.ts +6 -0
  43. package/dist/esm/core/Agent.js +43 -1
  44. package/dist/esm/core/Agent.js.map +1 -1
  45. package/dist/esm/core/agent/buildAgentChart.d.ts +14 -0
  46. package/dist/esm/core/agent/buildAgentChart.js +12 -0
  47. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  48. package/dist/esm/core/agent/buildDynamicAgentChart.js +17 -0
  49. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  50. package/dist/esm/core/agent/stages/callLLM.js +20 -2
  51. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  52. package/dist/esm/core/agent/stages/prepareFinal.js +15 -0
  53. package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
  54. package/dist/esm/core/agent/stages/route.d.ts +8 -2
  55. package/dist/esm/core/agent/stages/route.js +168 -26
  56. package/dist/esm/core/agent/stages/route.js.map +1 -1
  57. package/dist/esm/core/agent/stages/window.d.ts +10 -0
  58. package/dist/esm/core/agent/stages/window.js +75 -3
  59. package/dist/esm/core/agent/stages/window.js.map +1 -1
  60. package/dist/esm/core/agent/stages/wrapUp.d.ts +64 -0
  61. package/dist/esm/core/agent/stages/wrapUp.js +97 -0
  62. package/dist/esm/core/agent/stages/wrapUp.js.map +1 -0
  63. package/dist/esm/core/agent/types.d.ts +116 -0
  64. package/dist/esm/core/agent/window/index.d.ts +1 -1
  65. package/dist/esm/core/agent/window/index.js.map +1 -1
  66. package/dist/esm/core/agent/window/lastToolResult.d.ts +96 -0
  67. package/dist/esm/core/agent/window/lastToolResult.js +119 -0
  68. package/dist/esm/core/agent/window/lastToolResult.js.map +1 -0
  69. package/dist/esm/core/agent/window/notice.d.ts +14 -4
  70. package/dist/esm/core/agent/window/notice.js +58 -6
  71. package/dist/esm/core/agent/window/notice.js.map +1 -1
  72. package/dist/esm/core/agent/window/options.d.ts +21 -0
  73. package/dist/esm/core/agent/window/options.js +29 -0
  74. package/dist/esm/core/agent/window/options.js.map +1 -1
  75. package/dist/esm/core/agent/window/strategies/drop.d.ts +20 -0
  76. package/dist/esm/core/agent/window/strategies/drop.js +73 -17
  77. package/dist/esm/core/agent/window/strategies/drop.js.map +1 -1
  78. package/dist/esm/core/agent/window/toolNames.d.ts +53 -0
  79. package/dist/esm/core/agent/window/toolNames.js +76 -0
  80. package/dist/esm/core/agent/window/toolNames.js.map +1 -0
  81. package/dist/esm/core/agent/window/turns.d.ts +23 -1
  82. package/dist/esm/core/agent/window/turns.js +50 -2
  83. package/dist/esm/core/agent/window/turns.js.map +1 -1
  84. package/dist/esm/core/agent/window/types.d.ts +84 -0
  85. package/dist/esm/events/payloads.d.ts +67 -3
  86. package/dist/esm/events/registry.d.ts +3 -1
  87. package/dist/esm/events/registry.js +2 -0
  88. package/dist/esm/events/registry.js.map +1 -1
  89. package/dist/esm/index.d.ts +1 -1
  90. package/dist/esm/index.js.map +1 -1
  91. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js +12 -1
  92. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  93. package/dist/esm/lib/injection-engine/evaluator.js +31 -6
  94. package/dist/esm/lib/injection-engine/evaluator.js.map +1 -1
  95. package/dist/esm/lib/injection-engine/factories/defineInstruction.d.ts +45 -3
  96. package/dist/esm/lib/injection-engine/factories/defineInstruction.js +38 -4
  97. package/dist/esm/lib/injection-engine/factories/defineInstruction.js.map +1 -1
  98. package/dist/esm/lib/injection-engine/promptTemplate.d.ts +76 -0
  99. package/dist/esm/lib/injection-engine/promptTemplate.js +124 -0
  100. package/dist/esm/lib/injection-engine/promptTemplate.js.map +1 -0
  101. package/dist/esm/lib/injection-engine/types.d.ts +60 -3
  102. package/dist/esm/lib/injection-engine/types.js +25 -3
  103. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  104. package/dist/esm/lib/iterationBudget.d.ts +28 -0
  105. package/dist/esm/lib/iterationBudget.js +31 -0
  106. package/dist/esm/lib/iterationBudget.js.map +1 -0
  107. package/dist/events/registry.js +2 -0
  108. package/dist/events/registry.js.map +1 -1
  109. package/dist/index.js.map +1 -1
  110. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js +12 -1
  111. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  112. package/dist/lib/injection-engine/evaluator.js +31 -6
  113. package/dist/lib/injection-engine/evaluator.js.map +1 -1
  114. package/dist/lib/injection-engine/factories/defineInstruction.js +38 -4
  115. package/dist/lib/injection-engine/factories/defineInstruction.js.map +1 -1
  116. package/dist/lib/injection-engine/promptTemplate.js +132 -0
  117. package/dist/lib/injection-engine/promptTemplate.js.map +1 -0
  118. package/dist/lib/injection-engine/types.js +25 -3
  119. package/dist/lib/injection-engine/types.js.map +1 -1
  120. package/dist/lib/iterationBudget.js +35 -0
  121. package/dist/lib/iterationBudget.js.map +1 -0
  122. package/dist/types/cache/CacheDecisionSubflow.d.ts.map +1 -1
  123. package/dist/types/conventions.d.ts +8 -0
  124. package/dist/types/conventions.d.ts.map +1 -1
  125. package/dist/types/core/Agent.d.ts +6 -0
  126. package/dist/types/core/Agent.d.ts.map +1 -1
  127. package/dist/types/core/agent/buildAgentChart.d.ts +14 -0
  128. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  129. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  130. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  131. package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
  132. package/dist/types/core/agent/stages/route.d.ts +8 -2
  133. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  134. package/dist/types/core/agent/stages/window.d.ts +10 -0
  135. package/dist/types/core/agent/stages/window.d.ts.map +1 -1
  136. package/dist/types/core/agent/stages/wrapUp.d.ts +65 -0
  137. package/dist/types/core/agent/stages/wrapUp.d.ts.map +1 -0
  138. package/dist/types/core/agent/types.d.ts +116 -0
  139. package/dist/types/core/agent/types.d.ts.map +1 -1
  140. package/dist/types/core/agent/window/index.d.ts +1 -1
  141. package/dist/types/core/agent/window/index.d.ts.map +1 -1
  142. package/dist/types/core/agent/window/lastToolResult.d.ts +97 -0
  143. package/dist/types/core/agent/window/lastToolResult.d.ts.map +1 -0
  144. package/dist/types/core/agent/window/notice.d.ts +14 -4
  145. package/dist/types/core/agent/window/notice.d.ts.map +1 -1
  146. package/dist/types/core/agent/window/options.d.ts +21 -0
  147. package/dist/types/core/agent/window/options.d.ts.map +1 -1
  148. package/dist/types/core/agent/window/strategies/drop.d.ts +20 -0
  149. package/dist/types/core/agent/window/strategies/drop.d.ts.map +1 -1
  150. package/dist/types/core/agent/window/toolNames.d.ts +54 -0
  151. package/dist/types/core/agent/window/toolNames.d.ts.map +1 -0
  152. package/dist/types/core/agent/window/turns.d.ts +23 -1
  153. package/dist/types/core/agent/window/turns.d.ts.map +1 -1
  154. package/dist/types/core/agent/window/types.d.ts +84 -0
  155. package/dist/types/core/agent/window/types.d.ts.map +1 -1
  156. package/dist/types/events/payloads.d.ts +67 -3
  157. package/dist/types/events/payloads.d.ts.map +1 -1
  158. package/dist/types/events/registry.d.ts +3 -1
  159. package/dist/types/events/registry.d.ts.map +1 -1
  160. package/dist/types/index.d.ts +1 -1
  161. package/dist/types/index.d.ts.map +1 -1
  162. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
  163. package/dist/types/lib/injection-engine/evaluator.d.ts.map +1 -1
  164. package/dist/types/lib/injection-engine/factories/defineInstruction.d.ts +45 -3
  165. package/dist/types/lib/injection-engine/factories/defineInstruction.d.ts.map +1 -1
  166. package/dist/types/lib/injection-engine/promptTemplate.d.ts +77 -0
  167. package/dist/types/lib/injection-engine/promptTemplate.d.ts.map +1 -0
  168. package/dist/types/lib/injection-engine/types.d.ts +60 -3
  169. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  170. package/dist/types/lib/iterationBudget.d.ts +29 -0
  171. package/dist/types/lib/iterationBudget.d.ts.map +1 -0
  172. package/package.json +1 -1
@@ -36,7 +36,15 @@ function decideBranch(scope) {
36
36
  // A limit only CUT SHORT a turn if the model still wanted to do something.
37
37
  // A turn that ended because the model was done is not an early stop, however
38
38
  // many iterations it spent getting there.
39
- const earlyStop = chosen === 'final' && toolCalls.length > 0
39
+ //
40
+ // 9.56.0 — with ONE addition: a turn that already spent its wrap-up is cut
41
+ // short for every judge downstream, whether or not this last answer still
42
+ // asked for tools. The budget that forced the wrap-up has not come back, and
43
+ // the wrap-up call is the last one this turn buys — a step nudge or an
44
+ // evidence revision here would loop past a limit that already fired. (It
45
+ // does not double-record: `settleWrapUp` sees the latch first and corrects
46
+ // the existing record instead of writing a second one.)
47
+ const earlyStop = chosen === 'final' && (toolCalls.length > 0 || scope.wrapUpAsked === true)
40
48
  ? outOfIterations
41
49
  ? 'max-iterations'
42
50
  : costHalt
@@ -86,7 +94,10 @@ function decideBranch(scope) {
86
94
  * is sometimes a real one (a model can return content AND tool calls). Raising
87
95
  * would reject good answers to fix a bad one.
88
96
  */
89
- function recordEarlyStop(scope, reason) {
97
+ function recordEarlyStop(scope, reason,
98
+ /** True when the WrapUp branch is about to run, so the answer the caller
99
+ * receives is not the one being measured here yet (9.56.0). */
100
+ wrapUp) {
90
101
  const toolCalls = scope.llmLatestToolCalls;
91
102
  const iteration = scope.iteration;
92
103
  const answerWasEmpty = (scope.llmLatestContent ?? '') === '';
@@ -104,7 +115,29 @@ function recordEarlyStop(scope, reason) {
104
115
  action: 'abort',
105
116
  });
106
117
  }
107
- if (answerWasEmpty) {
118
+ // 9.56.0 — a FOURTH channel, and the one a dashboard reads. `limit_hit`
119
+ // reports a limit being crossed and has to stay exactly that (it is the
120
+ // reserved cost vocabulary, and a cost budget fires its own). This one
121
+ // reports what the run DID about the crossing, which is the difference
122
+ // between an outcome chip that says "answered" and one that says "answered
123
+ // after the budget ran out". Emitted for BOTH limits: the fact is true
124
+ // either way, and only `action` differs.
125
+ typedEmit(scope, 'agentfootprint.agent.budget_exhausted', {
126
+ reason,
127
+ iteration,
128
+ // `limit` only where the run actually HOLDS the limit. For a cost budget it
129
+ // holds the cumulative spend instead, and reporting spend as a limit is the
130
+ // exact mistake the `cost.limit_hit` comment above exists to avoid.
131
+ ...(reason === 'max-iterations' && { limit: scope.maxIterations }),
132
+ pendingToolCalls: toolCalls.length,
133
+ action: wrapUp ? 'wrapped-up' : 'cut-short',
134
+ });
135
+ // Held back when a wrap-up is about to run: the answer this warning is
136
+ // about does not exist yet, and warning about a string that is being
137
+ // replaced would be the library complaining about its own draft.
138
+ // `settleWrapUp` warns on the pass after, if the wrap-up came back empty
139
+ // too.
140
+ if (answerWasEmpty && !wrapUp) {
108
141
  // eslint-disable-next-line no-console
109
142
  console.warn(`[agentfootprint] this turn stopped at iteration ${iteration} because ` +
110
143
  `${reason === 'max-iterations' ? 'maxIterations was reached' : 'costBudget was reached'}, ` +
@@ -114,6 +147,66 @@ function recordEarlyStop(scope, reason) {
114
147
  `show.`);
115
148
  }
116
149
  }
150
+ /**
151
+ * Is this would-be-final turn going to be WRAPPED UP instead (9.56.0)?
152
+ *
153
+ * Pure, so the four deciders can announce the branch they are really taking
154
+ * before anything is recorded — the ordering every one of them already has
155
+ * (`route_decided`, then the early-stop record).
156
+ *
157
+ * Only the ITERATION budget is wrapped up. A halting `costBudget` capped the
158
+ * MONEY, and one more call would spend past the cap the person set; an action
159
+ * cap says nothing about a call that takes no action. `wrapUpAsked` is the
160
+ * one-per-turn latch: the wrap-up call itself can never buy a second one.
161
+ */
162
+ function wantsWrapUp(scope, earlyStop, hasWrapUp) {
163
+ return hasWrapUp && earlyStop === 'max-iterations' && scope.wrapUpAsked !== true;
164
+ }
165
+ /**
166
+ * File what a limit did to this turn (9.56.0) — called at every moment the
167
+ * four deciders answer `'final'` or `'wrap-up'`. Three outcomes:
168
+ *
169
+ * • the wrap-up already ran → its answer IS the turn's answer: correct the
170
+ * committed record to describe that string (not the fragment it replaced),
171
+ * mark it `wrappedUp`, and warn only if even the wrap-up came back empty.
172
+ * Never a second `limit_hit`, never a second `budget_exhausted` — one
173
+ * crossing, one report;
174
+ * • a limit just fired → today's `recordEarlyStop`, told whether a wrap-up
175
+ * is about to run (which holds back the empty-answer warning, since the
176
+ * answer it is about does not exist yet);
177
+ * • neither → nothing, after one `undefined` check.
178
+ */
179
+ function settleWrapUp(scope, earlyStop, wrapUp) {
180
+ if (scope.wrapUpAsked === true) {
181
+ const cut = scope.stoppedEarly;
182
+ // Unreachable through the decider (the branch only runs after the record
183
+ // is written), but a hand-built chart mounting the branch without the
184
+ // decider must not take down a run — the SchemaRetry discipline.
185
+ if (cut === undefined)
186
+ return;
187
+ const answer = scope.llmLatestContent ?? '';
188
+ scope.stoppedEarly = { ...cut, answerWasEmpty: answer === '', wrappedUp: true };
189
+ if (answer === '') {
190
+ // eslint-disable-next-line no-console
191
+ console.warn(`[agentfootprint] this turn stopped at iteration ${cut.iteration} because ` +
192
+ `maxIterations was reached, while the model was still asking for ` +
193
+ `${cut.pendingToolCalls} tool call(s). One more call went out with the tools ` +
194
+ `withheld, asking for a final summary, and it came back EMPTY — so the answer ` +
195
+ `handed back is still the empty string. Raise the limit, or read ` +
196
+ `agent.stoppedEarly() and decide what to show.`);
197
+ }
198
+ return;
199
+ }
200
+ if (earlyStop === undefined)
201
+ return;
202
+ recordEarlyStop(scope, earlyStop, wrapUp);
203
+ }
204
+ /** The `route_decided` rationale for a wrap-up. */
205
+ function wrapUpRationale(scope) {
206
+ const pending = scope.llmLatestToolCalls.length;
207
+ return (`maxIterations reached with ${pending} tool call(s) still pending — asking once more ` +
208
+ `with the tools withheld, so the turn ends with a summary instead of a fragment`);
209
+ }
117
210
  function emitRouteDecided(scope, chosen, rationale) {
118
211
  typedEmit(scope, 'agentfootprint.agent.route_decided', {
119
212
  turnIndex: 0,
@@ -296,13 +389,33 @@ function stepNudgeRationale(scope) {
296
389
  return (`final answer left ${remaining} declared step(s) of '${ptr.skillId}' unrun — ` +
297
390
  `one teaching nudge goes back (at most once per turn)`);
298
391
  }
299
- export const routeDeciderStage = (scope) => {
300
- const { chosen, rationale, earlyStop } = decideBranch(scope);
301
- emitRouteDecided(scope, chosen, rationale);
302
- if (earlyStop !== undefined)
303
- recordEarlyStop(scope, earlyStop);
304
- return chosen;
305
- };
392
+ /**
393
+ * The decider every plain agent runs: decide, announce, file whatever a limit
394
+ * did. `hasWrapUp` is the ONE build-time fact it needs — a decider may never
395
+ * name a branch the chart did not mount.
396
+ */
397
+ function buildSimpleDecider(hasWrapUp) {
398
+ return (scope) => {
399
+ const { chosen, rationale, earlyStop } = decideBranch(scope);
400
+ // ── The out-of-budget wrap-up (9.56.0) ─────────────────────────────
401
+ // FIRST, and before the output chain or any judge: a fragment the loop is
402
+ // about to replace is not the final answer, so it is not middlewared, not
403
+ // schema-judged and not grounded — the step nudge's reasoning, one branch
404
+ // over. `false` for hasWrapUp short-circuits here in one comparison.
405
+ if (chosen === 'final' && wantsWrapUp(scope, earlyStop, hasWrapUp)) {
406
+ emitRouteDecided(scope, 'wrap-up', wrapUpRationale(scope));
407
+ settleWrapUp(scope, earlyStop, true);
408
+ return 'wrap-up';
409
+ }
410
+ emitRouteDecided(scope, chosen, rationale);
411
+ if (chosen === 'final')
412
+ settleWrapUp(scope, earlyStop, false);
413
+ return chosen;
414
+ };
415
+ }
416
+ /** The wrap-up-less decider, kept as a module constant because it is the exact
417
+ * function reference every pre-9.56.0 chart was handed. */
418
+ export const routeDeciderStage = buildSimpleDecider(false);
306
419
  /**
307
420
  * Build the Route decider, optionally carrying the `'output'` half of the
308
421
  * message chain.
@@ -345,20 +458,34 @@ export const routeDeciderStage = (scope) => {
345
458
  * never judged or retried: it was withheld on purpose, and re-asking for it
346
459
  * would be the library working around a rule the app wrote.
347
460
  */
348
- export function buildRouteDeciderStage(messageMiddleware, enforcement, stepPlanFor, evidence) {
461
+ export function buildRouteDeciderStage(messageMiddleware, enforcement, stepPlanFor, evidence,
462
+ /** Whether the chart mounted the WrapUp branch (9.56.0). A decider may never
463
+ * name a branch that does not exist, so this is build-time knowledge, not a
464
+ * scope read. `false` reproduces every earlier release exactly. */
465
+ hasWrapUp = false) {
349
466
  const chain = messageMiddleware ?? [];
350
467
  if (chain.length === 0 &&
351
468
  enforcement === undefined &&
352
469
  stepPlanFor === undefined &&
353
470
  evidence === undefined) {
354
- return routeDeciderStage;
471
+ return hasWrapUp ? buildSimpleDecider(true) : routeDeciderStage;
355
472
  }
356
473
  if (enforcement !== undefined)
357
- return buildEnforcingDecider(chain, enforcement, stepPlanFor, evidence);
474
+ return buildEnforcingDecider(chain, enforcement, stepPlanFor, evidence, hasWrapUp);
358
475
  if (stepPlanFor !== undefined || evidence !== undefined)
359
- return buildJudgingDecider(chain, stepPlanFor, evidence);
476
+ return buildJudgingDecider(chain, stepPlanFor, evidence, hasWrapUp);
360
477
  return async (scope) => {
361
478
  const { chosen, rationale, earlyStop } = decideBranch(scope);
479
+ // ── The out-of-budget wrap-up (9.56.0) ─────────────────────────────
480
+ // FIRST, and before the output chain or any judge: a fragment the loop is
481
+ // about to replace is not the final answer, so it is not middlewared, not
482
+ // schema-judged and not grounded — the step nudge's reasoning, one branch
483
+ // over. `false` for hasWrapUp short-circuits here in one comparison.
484
+ if (chosen === 'final' && wantsWrapUp(scope, earlyStop, hasWrapUp)) {
485
+ emitRouteDecided(scope, 'wrap-up', wrapUpRationale(scope));
486
+ settleWrapUp(scope, earlyStop, true);
487
+ return 'wrap-up';
488
+ }
362
489
  emitRouteDecided(scope, chosen, rationale);
363
490
  if (chosen !== 'final')
364
491
  return chosen;
@@ -384,8 +511,7 @@ export function buildRouteDeciderStage(messageMiddleware, enforcement, stepPlanF
384
511
  scope.llmLatestContent = verdict.content;
385
512
  // AFTER the chain: `answerWasEmpty` has to be judged on the string the
386
513
  // caller will actually receive, and the chain may have rewritten it.
387
- if (earlyStop !== undefined)
388
- recordEarlyStop(scope, earlyStop);
514
+ settleWrapUp(scope, earlyStop, false);
389
515
  return chosen;
390
516
  };
391
517
  }
@@ -402,13 +528,23 @@ export function buildRouteDeciderStage(messageMiddleware, enforcement, stepPlanF
402
528
  * Only agents that asked for one of those two receive this function —
403
529
  * everyone else keeps the exact decider (and event timing) they always had.
404
530
  */
405
- function buildJudgingDecider(chain, stepPlanFor, evidence) {
531
+ function buildJudgingDecider(chain, stepPlanFor, evidence, hasWrapUp) {
406
532
  return async (scope) => {
407
533
  const { chosen, rationale, earlyStop } = decideBranch(scope);
408
534
  if (chosen !== 'final') {
409
535
  emitRouteDecided(scope, chosen, rationale);
410
536
  return chosen;
411
537
  }
538
+ // ── The out-of-budget wrap-up (9.56.0) ─────────────────────────────
539
+ // FIRST, and before the output chain or any judge: a fragment the loop is
540
+ // about to replace is not the final answer, so it is not middlewared, not
541
+ // schema-judged and not grounded — the step nudge's reasoning, one branch
542
+ // over. `false` for hasWrapUp short-circuits here in one comparison.
543
+ if (wantsWrapUp(scope, earlyStop, hasWrapUp)) {
544
+ emitRouteDecided(scope, 'wrap-up', wrapUpRationale(scope));
545
+ settleWrapUp(scope, earlyStop, true);
546
+ return 'wrap-up';
547
+ }
412
548
  let denied = false;
413
549
  if (chain.length > 0) {
414
550
  const verdict = await runMessageChain(chain, {
@@ -438,8 +574,7 @@ function buildJudgingDecider(chain, stepPlanFor, evidence) {
438
574
  return 'evidence-recheck';
439
575
  }
440
576
  emitRouteDecided(scope, 'final', rationale);
441
- if (earlyStop !== undefined)
442
- recordEarlyStop(scope, earlyStop);
577
+ settleWrapUp(scope, earlyStop, false);
443
578
  return 'final';
444
579
  };
445
580
  }
@@ -449,13 +584,23 @@ function buildJudgingDecider(chain, stepPlanFor, evidence) {
449
584
  * announce the branch — so `route_decided` names the branch the run actually
450
585
  * took rather than the one it was heading for.
451
586
  */
452
- function buildEnforcingDecider(chain, enforcement, stepPlanFor, evidence) {
587
+ function buildEnforcingDecider(chain, enforcement, stepPlanFor, evidence, hasWrapUp) {
453
588
  return async (scope) => {
454
589
  const base = decideBranch(scope);
455
590
  if (base.chosen !== 'final') {
456
591
  emitRouteDecided(scope, base.chosen, base.rationale);
457
592
  return base.chosen;
458
593
  }
594
+ // ── The out-of-budget wrap-up (9.56.0) ─────────────────────────────
595
+ // FIRST, and before the output chain or any judge: a fragment the loop is
596
+ // about to replace is not the final answer, so it is not middlewared, not
597
+ // schema-judged and not grounded — the step nudge's reasoning, one branch
598
+ // over. `false` for hasWrapUp short-circuits here in one comparison.
599
+ if (wantsWrapUp(scope, base.earlyStop, hasWrapUp)) {
600
+ emitRouteDecided(scope, 'wrap-up', wrapUpRationale(scope));
601
+ settleWrapUp(scope, base.earlyStop, true);
602
+ return 'wrap-up';
603
+ }
459
604
  let denied = false;
460
605
  // Who, if anyone, rewrote the answer on its way out — and whether the
461
606
  // answer they rewrote was already good. See `brokenBy` below.
@@ -489,8 +634,7 @@ function buildEnforcingDecider(chain, enforcement, stepPlanFor, evidence) {
489
634
  // of it would be the library routing around that decision.
490
635
  if (denied) {
491
636
  emitRouteDecided(scope, 'final', base.rationale);
492
- if (base.earlyStop !== undefined)
493
- recordEarlyStop(scope, base.earlyStop);
637
+ settleWrapUp(scope, base.earlyStop, false);
494
638
  return 'final';
495
639
  }
496
640
  const attempt = (scope.outputAttempts?.length ?? 0) + 1;
@@ -515,8 +659,7 @@ function buildEnforcingDecider(chain, enforcement, stepPlanFor, evidence) {
515
659
  return 'evidence-recheck';
516
660
  }
517
661
  emitRouteDecided(scope, 'final', base.rationale);
518
- if (base.earlyStop !== undefined)
519
- recordEarlyStop(scope, base.earlyStop);
662
+ settleWrapUp(scope, base.earlyStop, false);
520
663
  return 'final';
521
664
  }
522
665
  // Did the OUTPUT CHAIN break an answer the model got right? (8.18.0)
@@ -580,8 +723,7 @@ function buildEnforcingDecider(chain, enforcement, stepPlanFor, evidence) {
580
723
  `rewrote it (${failure.stage}) — not re-asked, because the model's answer was fine`
581
724
  : `final answer failed the output schema (${failure.stage}) and ` +
582
725
  `${enforcement.retries} retry/retries were spent`);
583
- if (base.earlyStop !== undefined)
584
- recordEarlyStop(scope, base.earlyStop);
726
+ settleWrapUp(scope, base.earlyStop, false);
585
727
  return 'final';
586
728
  };
587
729
  }
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/core/agent/stages/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../src/core/agent/stages/route.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,16 @@ export interface WindowStageDeps {
70
70
  readonly pricingTable?: PricingTable;
71
71
  /** Optional cumulative USD cap per run. */
72
72
  readonly costBudget?: ResolvedCostBudget;
73
+ /**
74
+ * How many tools' most recent results stay in the window beyond
75
+ * `keepRecentTurns` (9.57.0). `false` (or 0) switches the pin off entirely
76
+ * and reproduces 9.56.0 byte for byte.
77
+ *
78
+ * Threaded value-conditionally by `Agent` — the `repeatedCallNudge`
79
+ * grammar — so an agent on the default hands this stage exactly the deps
80
+ * object it always did.
81
+ */
82
+ readonly keepLastToolResults?: number | false;
73
83
  /** Injectable clock (tests pin survivalMs). */
74
84
  readonly now?: () => number;
75
85
  }
@@ -48,8 +48,33 @@ import { typedEmit } from '../../../recorders/core/typedEmit.js';
48
48
  import { fnv1a } from '../../slots/helpers.js';
49
49
  import { emitCostTick } from '../../cost.js';
50
50
  import { currentRequestIndexOf } from '../window/currentRequest.js';
51
+ import { toolResultPinsOf } from '../window/lastToolResult.js';
52
+ import { DEFAULT_KEEP_LAST_TOOL_RESULTS } from '../window/options.js';
51
53
  import { removalFacts } from '../window/removal.js';
52
54
  import { answeredCallIds, planRemoval, segmentTurns } from '../window/turns.js';
55
+ import { droppedToolNames } from '../window/toolNames.js';
56
+ /**
57
+ * True when the pin is PROVABLY what is stopping the window from shrinking:
58
+ * the two most recent visits both removed nothing AND both named
59
+ * `'last-tool-result'`.
60
+ *
61
+ * Two, not one: a single blocked boundary is ordinary (the next tool result
62
+ * arrives and the pin moves). Two in a row with the pin named in both is
63
+ * non-progress, and the pin releases for one visit rather than let a window
64
+ * grow without bound — which is reachable under `summarizeOldest`, where a
65
+ * lone existing summary sitting in front of a pinned turn short-circuits the
66
+ * whole plan to "remove nothing" for ever.
67
+ *
68
+ * Deliberately a release-under-PROVEN-NON-PROGRESS rule and not a
69
+ * release-under-budget-pressure one: budget pressure peaks exactly when the
70
+ * model is most likely to fabricate, which is the worst moment to throw its
71
+ * evidence away.
72
+ */
73
+ function pinIsBlocking(records) {
74
+ const recent = records.slice(-2);
75
+ return (recent.length === 2 &&
76
+ recent.every((r) => r.removedMessageCount === 0 && r.refusals.some((f) => f.reason === 'last-tool-result')));
77
+ }
53
78
  /** Build the window stage. */
54
79
  export function buildWindowStage(deps) {
55
80
  const { strategy, meter } = deps;
@@ -84,18 +109,38 @@ export function buildWindowStage(deps) {
84
109
  `being managed. Use a provider that reports usage, or remove the window strategy.`);
85
110
  }
86
111
  const origins = meter.origins();
112
+ // Read once, used twice: the append below, and the pin's stand-down check
113
+ // (9.57.0). One tracked read of the same key either way.
114
+ const priorRecords = scope.compactions ?? [];
87
115
  const pausedToolCallId = scope.pausedToolCallId;
88
116
  // The one message this run is executing (9.55.0). `scope.userMessage` is
89
117
  // what the seed stage committed, so the match is against the run's own
90
118
  // copy rather than a guess from position — see window/currentRequest.ts
91
119
  // for what happens when the window was seeded from somewhere else.
92
120
  const currentRequestIndex = currentRequestIndexOf(history, scope.userMessage);
121
+ // The last-tool-result pin (9.57.0). Candidates are resolved here, in the
122
+ // stage, for the same reason the anchor is: this is the one place holding
123
+ // the window, the anchor and the run's own state together. The CEILING is
124
+ // spent inside `planRemoval`, where the keep window is known — a pin that
125
+ // is already safe must not spend a slot.
126
+ const limit = deps.keepLastToolResults === false
127
+ ? 0
128
+ : deps.keepLastToolResults ?? DEFAULT_KEEP_LAST_TOOL_RESULTS;
129
+ const standDown = limit > 0 && pinIsBlocking(priorRecords);
130
+ const pins = limit > 0 && !standDown ? toolResultPinsOf(turns, history, currentRequestIndex) : [];
93
131
  const guards = {
94
132
  answeredCallIds: answeredCallIds(history),
95
133
  ...(currentRequestIndex >= 0 && { currentRequestIndex }),
96
134
  ...(pausedToolCallId !== undefined && { pausedToolCallId }),
97
135
  ...(scope.pausedCheckIn === true && { pausedCheckIn: true }),
136
+ // Value-conditional: with no pinnable result the guards are the exact
137
+ // object this stage has always built.
138
+ ...(pins.length > 0 && { toolResultPins: pins, keepLastToolResults: limit }),
98
139
  };
140
+ // What the pin actually did, captured off the plan the strategy asked
141
+ // for. A strategy may ask more than once; the last answer is the one that
142
+ // decided the window.
143
+ let observed;
99
144
  const result = await strategy.plan({
100
145
  history,
101
146
  turns,
@@ -110,7 +155,12 @@ export function buildWindowStage(deps) {
110
155
  now,
111
156
  // The refusal engine, bound. A strategy cannot skip it: it never
112
157
  // receives the guards, only the answer.
113
- planRemoval: (keepRecentTurns, isExistingSummary) => planRemoval(turns, keepRecentTurns, guards, isExistingSummary),
158
+ planRemoval: (keepRecentTurns, isExistingSummary) => {
159
+ const plan = planRemoval(turns, keepRecentTurns, guards, isExistingSummary);
160
+ if (plan.observations !== undefined)
161
+ observed = plan.observations;
162
+ return plan;
163
+ },
114
164
  removalFacts: (indices, atMs) => removalFacts(origins, indices, atMs),
115
165
  });
116
166
  // `undefined` = this strategy did not engage this iteration. Nothing to
@@ -124,8 +174,30 @@ export function buildWindowStage(deps) {
124
174
  meter.rebaseForWindowChange(result.rebase.headCount, result.rebase.keptTailCount, result.rebase.insertedAtMs);
125
175
  scope.history = result.window;
126
176
  }
127
- const prior = scope.compactions ?? [];
128
- scope.compactions = [...prior, result.record];
177
+ // The record's honesty pass (9.57.0). The strategy files WHAT it did; the
178
+ // stage — which is the one place that holds the pre-change window and the
179
+ // eviction indices together — files WHOSE EVIDENCE left. It is stamped
180
+ // here rather than inside a strategy so a strategy a consumer wrote gets
181
+ // it too, and so it is filed on the removals that authored no notice at
182
+ // all: a drop further into the window tells the model nothing, and then
183
+ // the record is the only place the fact exists.
184
+ const evicted = result.evictions
185
+ .map((e) => history[e.index])
186
+ .filter((m) => m !== undefined);
187
+ const droppedObservations = droppedToolNames(evicted, history);
188
+ // A stand-down is a decision, so it is filed even though it kept nothing.
189
+ const observations = standDown
190
+ ? { pinned: [], yielded: 0, limit, standDown: true }
191
+ : observed;
192
+ const record = droppedObservations.length > 0 || observations !== undefined
193
+ ? {
194
+ ...result.record,
195
+ ...(droppedObservations.length > 0 && { droppedObservations }),
196
+ ...(observations !== undefined && { observations }),
197
+ }
198
+ : result.record;
199
+ const prior = priorRecords;
200
+ scope.compactions = [...prior, record];
129
201
  // The durable half, written in the SAME commit as the window change and
130
202
  // the record above. That co-location is the guarantee: there is no state,
131
203
  // and no failure, in which messages left the window and the record of what
@@ -1 +1 @@
1
- {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../../../src/core/agent/stages/window.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../../../src/core/agent/stages/window.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * wrapUp — the branch that asks for a real answer when the action budget
3
+ * runs out mid-task (9.56.0).
4
+ *
5
+ * Mounted as a branch of the Route decider on any agent that can call tools,
6
+ * unless `wrapUpAtMaxIterations: false` turned it off. It carries `{ loopTo }`
7
+ * to the same target the `tool-calls` branch loops to — the SchemaRetry
8
+ * mechanism verbatim: a wrap-up is not a special mode, it is one more ordinary
9
+ * turn of the ReAct loop, with its own `iteration_start` / `llm_start` /
10
+ * `llm_end` bracket and its own `cost.tick` against `costBudget`.
11
+ *
12
+ * ## What it exists to stop
13
+ *
14
+ * `maxIterations` is a cap on ACTIONS, and the model does not know it is about
15
+ * to be hit. Before this, a turn that reached the cap while the model was
16
+ * still asking for tools handed back whatever text happened to ride that last
17
+ * call — which, mid-task, is a fragment:
18
+ *
19
+ * > "The third finding focus is not settling… Let me check what's on screen
20
+ * > now:"
21
+ *
22
+ * That sentence reached the person as if it were the answer, under an `'ok'`
23
+ * status, with nothing anywhere saying the budget had run out. Two recorded
24
+ * runs of exactly that shape are why this branch exists.
25
+ *
26
+ * ## Why the tools come off
27
+ *
28
+ * The one thing the run must not do is spend this call the way it spent the
29
+ * last ten. Withholding the tools is what makes the call terminal BY
30
+ * CONSTRUCTION rather than by another rule: with nothing to ask for, the model
31
+ * can only answer, so the wrap-up is exempt from `maxIterations` without any
32
+ * risk of looping past it. The withholding itself happens at request assembly
33
+ * in `callLLM` (the one seam that decides what goes on the wire); this stage
34
+ * only raises the flag.
35
+ *
36
+ * ## What it appends
37
+ *
38
+ * One `role: 'user'` message, authored by the framework, and NOT the fragment
39
+ * that preceded it. The model's tool-asking turn was never appended to history
40
+ * (nothing ran, so nothing round-tripped), and putting the half-sentence back
41
+ * as an assistant turn would invite the model to continue it — which is the
42
+ * opposite of the ask. The fragment is not lost: it is committed as
43
+ * `llmLatestContent`, where the run's own record keeps it.
44
+ *
45
+ * Pure function — no closure over Agent class state, no deps.
46
+ */
47
+ import type { TypedScope } from 'footprintjs';
48
+ import type { AgentState } from '../types.js';
49
+ /**
50
+ * The instruction the wrap-up call carries, verbatim.
51
+ *
52
+ * Exported so tests, docs and consumers read the one string the wire reads —
53
+ * a sentence quoted in three places and defined in none is how documentation
54
+ * starts lying. It is written to be answerable from what the turn already
55
+ * has: no new lookups, an honest split between done and not-done, and room
56
+ * for the thing the person most needs to hear.
57
+ */
58
+ export declare const WRAP_UP_INSTRUCTION: string;
59
+ /**
60
+ * The stage body. The decider has already established the whole table (the
61
+ * iteration budget ran out, tool calls were pending, the wrap-up is unspent)
62
+ * immediately before routing here — this stage does the work of asking.
63
+ */
64
+ export declare const wrapUpStage: (scope: TypedScope<AgentState>) => void;