agentfootprint 9.17.0 → 9.19.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 (216) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +4 -2
  3. package/README.md +21 -0
  4. package/ai-instructions/claude-code/SKILL.md +1 -1
  5. package/dist/conventions.js +14 -0
  6. package/dist/conventions.js.map +1 -1
  7. package/dist/core/Agent.js +102 -2
  8. package/dist/core/Agent.js.map +1 -1
  9. package/dist/core/agent/AgentBuilder.js +173 -1
  10. package/dist/core/agent/AgentBuilder.js.map +1 -1
  11. package/dist/core/agent/buildAgentChart.js +45 -0
  12. package/dist/core/agent/buildAgentChart.js.map +1 -1
  13. package/dist/core/agent/buildDynamicAgentChart.js +74 -0
  14. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  15. package/dist/core/agent/buildToolRegistry.js +23 -0
  16. package/dist/core/agent/buildToolRegistry.js.map +1 -1
  17. package/dist/core/agent/skillBrains.js +216 -0
  18. package/dist/core/agent/skillBrains.js.map +1 -0
  19. package/dist/core/agent/stages/callLLM.js +29 -9
  20. package/dist/core/agent/stages/callLLM.js.map +1 -1
  21. package/dist/core/agent/stages/route.js +130 -4
  22. package/dist/core/agent/stages/route.js.map +1 -1
  23. package/dist/core/agent/stages/routeTurn.js +123 -3
  24. package/dist/core/agent/stages/routeTurn.js.map +1 -1
  25. package/dist/core/agent/stages/seed.js +20 -0
  26. package/dist/core/agent/stages/seed.js.map +1 -1
  27. package/dist/core/agent/stages/stepNudge.js +82 -0
  28. package/dist/core/agent/stages/stepNudge.js.map +1 -0
  29. package/dist/core/agent/stages/toolCalls.js +504 -13
  30. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  31. package/dist/core/agent/toolEffects.js +242 -0
  32. package/dist/core/agent/toolEffects.js.map +1 -0
  33. package/dist/core/slots/buildToolsSlot.js +106 -7
  34. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  35. package/dist/esm/conventions.d.ts +6 -0
  36. package/dist/esm/conventions.js +14 -0
  37. package/dist/esm/conventions.js.map +1 -1
  38. package/dist/esm/core/Agent.d.ts +6 -1
  39. package/dist/esm/core/Agent.js +102 -2
  40. package/dist/esm/core/Agent.js.map +1 -1
  41. package/dist/esm/core/agent/AgentBuilder.d.ts +43 -3
  42. package/dist/esm/core/agent/AgentBuilder.js +173 -1
  43. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  44. package/dist/esm/core/agent/buildAgentChart.d.ts +33 -0
  45. package/dist/esm/core/agent/buildAgentChart.js +45 -0
  46. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  47. package/dist/esm/core/agent/buildDynamicAgentChart.js +74 -0
  48. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  49. package/dist/esm/core/agent/buildToolRegistry.js +23 -0
  50. package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
  51. package/dist/esm/core/agent/skillBrains.d.ts +144 -0
  52. package/dist/esm/core/agent/skillBrains.js +209 -0
  53. package/dist/esm/core/agent/skillBrains.js.map +1 -0
  54. package/dist/esm/core/agent/stages/callLLM.d.ts +24 -0
  55. package/dist/esm/core/agent/stages/callLLM.js +29 -9
  56. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  57. package/dist/esm/core/agent/stages/route.d.ts +3 -2
  58. package/dist/esm/core/agent/stages/route.js +130 -4
  59. package/dist/esm/core/agent/stages/route.js.map +1 -1
  60. package/dist/esm/core/agent/stages/routeTurn.d.ts +23 -0
  61. package/dist/esm/core/agent/stages/routeTurn.js +123 -3
  62. package/dist/esm/core/agent/stages/routeTurn.js.map +1 -1
  63. package/dist/esm/core/agent/stages/seed.d.ts +15 -0
  64. package/dist/esm/core/agent/stages/seed.js +20 -0
  65. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  66. package/dist/esm/core/agent/stages/stepNudge.d.ts +29 -0
  67. package/dist/esm/core/agent/stages/stepNudge.js +78 -0
  68. package/dist/esm/core/agent/stages/stepNudge.js.map +1 -0
  69. package/dist/esm/core/agent/stages/toolCalls.d.ts +57 -0
  70. package/dist/esm/core/agent/stages/toolCalls.js +504 -13
  71. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  72. package/dist/esm/core/agent/toolEffects.d.ts +202 -0
  73. package/dist/esm/core/agent/toolEffects.js +234 -0
  74. package/dist/esm/core/agent/toolEffects.js.map +1 -0
  75. package/dist/esm/core/agent/types.d.ts +54 -0
  76. package/dist/esm/core/slots/buildToolsSlot.d.ts +22 -0
  77. package/dist/esm/core/slots/buildToolsSlot.js +106 -7
  78. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  79. package/dist/esm/events/payloads.d.ts +183 -4
  80. package/dist/esm/events/registry.d.ts +11 -1
  81. package/dist/esm/events/registry.js +10 -0
  82. package/dist/esm/events/registry.js.map +1 -1
  83. package/dist/esm/index.d.ts +2 -1
  84. package/dist/esm/index.js +6 -0
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.d.ts +10 -0
  87. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js +88 -6
  88. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  89. package/dist/esm/lib/injection-engine/constrainedEnumPick.d.ts +52 -0
  90. package/dist/esm/lib/injection-engine/constrainedEnumPick.js +101 -0
  91. package/dist/esm/lib/injection-engine/constrainedEnumPick.js.map +1 -0
  92. package/dist/esm/lib/injection-engine/evaluator.d.ts +7 -0
  93. package/dist/esm/lib/injection-engine/evaluator.js +16 -0
  94. package/dist/esm/lib/injection-engine/evaluator.js.map +1 -1
  95. package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +56 -0
  96. package/dist/esm/lib/injection-engine/factories/defineSkill.js +24 -0
  97. package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
  98. package/dist/esm/lib/injection-engine/factories/defineStepsHint.d.ts +39 -0
  99. package/dist/esm/lib/injection-engine/factories/defineStepsHint.js +51 -0
  100. package/dist/esm/lib/injection-engine/factories/defineStepsHint.js.map +1 -0
  101. package/dist/esm/lib/injection-engine/index.d.ts +3 -0
  102. package/dist/esm/lib/injection-engine/index.js +10 -0
  103. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  104. package/dist/esm/lib/injection-engine/llmClassifier.d.ts +11 -8
  105. package/dist/esm/lib/injection-engine/llmClassifier.js +27 -84
  106. package/dist/esm/lib/injection-engine/llmClassifier.js.map +1 -1
  107. package/dist/esm/lib/injection-engine/routingPolicy.d.ts +10 -3
  108. package/dist/esm/lib/injection-engine/routingPolicy.js.map +1 -1
  109. package/dist/esm/lib/injection-engine/skillGraph.d.ts +28 -3
  110. package/dist/esm/lib/injection-engine/skillGraph.js +80 -12
  111. package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
  112. package/dist/esm/lib/injection-engine/skillSteps.d.ts +185 -0
  113. package/dist/esm/lib/injection-engine/skillSteps.js +276 -0
  114. package/dist/esm/lib/injection-engine/skillSteps.js.map +1 -0
  115. package/dist/esm/lib/injection-engine/types.d.ts +47 -2
  116. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  117. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js +16 -1
  118. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -1
  119. package/dist/esm/recorders/observability/RouteRecorder.d.ts +6 -1
  120. package/dist/esm/recorders/observability/RouteRecorder.js +10 -0
  121. package/dist/esm/recorders/observability/RouteRecorder.js.map +1 -1
  122. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +251 -8
  123. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  124. package/dist/events/registry.js +10 -0
  125. package/dist/events/registry.js.map +1 -1
  126. package/dist/index.js +11 -2
  127. package/dist/index.js.map +1 -1
  128. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js +88 -6
  129. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  130. package/dist/lib/injection-engine/constrainedEnumPick.js +105 -0
  131. package/dist/lib/injection-engine/constrainedEnumPick.js.map +1 -0
  132. package/dist/lib/injection-engine/evaluator.js +16 -0
  133. package/dist/lib/injection-engine/evaluator.js.map +1 -1
  134. package/dist/lib/injection-engine/factories/defineSkill.js +24 -0
  135. package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
  136. package/dist/lib/injection-engine/factories/defineStepsHint.js +55 -0
  137. package/dist/lib/injection-engine/factories/defineStepsHint.js.map +1 -0
  138. package/dist/lib/injection-engine/index.js +17 -1
  139. package/dist/lib/injection-engine/index.js.map +1 -1
  140. package/dist/lib/injection-engine/llmClassifier.js +27 -84
  141. package/dist/lib/injection-engine/llmClassifier.js.map +1 -1
  142. package/dist/lib/injection-engine/routingPolicy.js.map +1 -1
  143. package/dist/lib/injection-engine/skillGraph.js +80 -12
  144. package/dist/lib/injection-engine/skillGraph.js.map +1 -1
  145. package/dist/lib/injection-engine/skillSteps.js +297 -0
  146. package/dist/lib/injection-engine/skillSteps.js.map +1 -0
  147. package/dist/lib/injection-engine/types.js.map +1 -1
  148. package/dist/recorders/observability/AgentThinkingTraceRecorder.js +16 -1
  149. package/dist/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -1
  150. package/dist/recorders/observability/RouteRecorder.js +10 -0
  151. package/dist/recorders/observability/RouteRecorder.js.map +1 -1
  152. package/dist/recorders/observability/commentary/commentaryTemplates.js +251 -8
  153. package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  154. package/dist/types/conventions.d.ts +6 -0
  155. package/dist/types/conventions.d.ts.map +1 -1
  156. package/dist/types/core/Agent.d.ts +6 -1
  157. package/dist/types/core/Agent.d.ts.map +1 -1
  158. package/dist/types/core/agent/AgentBuilder.d.ts +43 -3
  159. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  160. package/dist/types/core/agent/buildAgentChart.d.ts +33 -0
  161. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  162. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  163. package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
  164. package/dist/types/core/agent/skillBrains.d.ts +145 -0
  165. package/dist/types/core/agent/skillBrains.d.ts.map +1 -0
  166. package/dist/types/core/agent/stages/callLLM.d.ts +24 -0
  167. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  168. package/dist/types/core/agent/stages/route.d.ts +3 -2
  169. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  170. package/dist/types/core/agent/stages/routeTurn.d.ts +23 -0
  171. package/dist/types/core/agent/stages/routeTurn.d.ts.map +1 -1
  172. package/dist/types/core/agent/stages/seed.d.ts +15 -0
  173. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  174. package/dist/types/core/agent/stages/stepNudge.d.ts +30 -0
  175. package/dist/types/core/agent/stages/stepNudge.d.ts.map +1 -0
  176. package/dist/types/core/agent/stages/toolCalls.d.ts +57 -0
  177. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  178. package/dist/types/core/agent/toolEffects.d.ts +203 -0
  179. package/dist/types/core/agent/toolEffects.d.ts.map +1 -0
  180. package/dist/types/core/agent/types.d.ts +54 -0
  181. package/dist/types/core/agent/types.d.ts.map +1 -1
  182. package/dist/types/core/slots/buildToolsSlot.d.ts +22 -0
  183. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  184. package/dist/types/events/payloads.d.ts +183 -4
  185. package/dist/types/events/payloads.d.ts.map +1 -1
  186. package/dist/types/events/registry.d.ts +11 -1
  187. package/dist/types/events/registry.d.ts.map +1 -1
  188. package/dist/types/index.d.ts +2 -1
  189. package/dist/types/index.d.ts.map +1 -1
  190. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts +10 -0
  191. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
  192. package/dist/types/lib/injection-engine/constrainedEnumPick.d.ts +53 -0
  193. package/dist/types/lib/injection-engine/constrainedEnumPick.d.ts.map +1 -0
  194. package/dist/types/lib/injection-engine/evaluator.d.ts +7 -0
  195. package/dist/types/lib/injection-engine/evaluator.d.ts.map +1 -1
  196. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +56 -0
  197. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
  198. package/dist/types/lib/injection-engine/factories/defineStepsHint.d.ts +40 -0
  199. package/dist/types/lib/injection-engine/factories/defineStepsHint.d.ts.map +1 -0
  200. package/dist/types/lib/injection-engine/index.d.ts +3 -0
  201. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  202. package/dist/types/lib/injection-engine/llmClassifier.d.ts +11 -8
  203. package/dist/types/lib/injection-engine/llmClassifier.d.ts.map +1 -1
  204. package/dist/types/lib/injection-engine/routingPolicy.d.ts +10 -3
  205. package/dist/types/lib/injection-engine/routingPolicy.d.ts.map +1 -1
  206. package/dist/types/lib/injection-engine/skillGraph.d.ts +28 -3
  207. package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
  208. package/dist/types/lib/injection-engine/skillSteps.d.ts +186 -0
  209. package/dist/types/lib/injection-engine/skillSteps.d.ts.map +1 -0
  210. package/dist/types/lib/injection-engine/types.d.ts +47 -2
  211. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  212. package/dist/types/recorders/observability/AgentThinkingTraceRecorder.d.ts.map +1 -1
  213. package/dist/types/recorders/observability/RouteRecorder.d.ts +6 -1
  214. package/dist/types/recorders/observability/RouteRecorder.d.ts.map +1 -1
  215. package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
  216. package/package.json +1 -1
@@ -17,8 +17,11 @@ const footprintjs_1 = require("footprintjs");
17
17
  const conventions_js_1 = require("../../conventions.js");
18
18
  const types_js_1 = require("../../recorders/core/types.js");
19
19
  const routingPolicy_js_1 = require("../../lib/injection-engine/routingPolicy.js");
20
+ const skillSteps_js_1 = require("../../lib/injection-engine/skillSteps.js");
20
21
  const typedEmit_js_1 = require("../../recorders/core/typedEmit.js");
21
22
  const helpers_js_1 = require("./helpers.js");
23
+ /** Shared empty hold-out — the no-step iterations never allocate. */
24
+ const EMPTY_NAME_SET = new Set();
22
25
  /**
23
26
  * Build the Tools slot subflow.
24
27
  *
@@ -35,6 +38,10 @@ function buildToolsSlot(config) {
35
38
  const toolProvider = config.toolProvider;
36
39
  const providerToolCache = config.providerToolCache;
37
40
  const hiddenSkillIdsFor = config.hiddenSkillIds;
41
+ const stepPlanFor = config.stepPlanFor;
42
+ // The skip_step schema template — description is rebuilt per iteration
43
+ // (it names the current step), everything else is static.
44
+ const skipStepSchemaTemplate = stepPlanFor ? (0, skillSteps_js_1.buildSkipStepTool)().schema : undefined;
38
45
  // Written by Discover (async), read by Compose (sync) — see the config note.
39
46
  //
40
47
  // Chart-scoped, and the chart is built ONCE at Agent construction — so this
@@ -147,6 +154,59 @@ function buildToolsSlot(config) {
147
154
  const composeStage = (scope) => {
148
155
  const args = scope.$getArgs();
149
156
  const iteration = args.iteration ?? 1;
157
+ // Active Injections — read once, up front: the step hold-out's ownership
158
+ // rule and the per-skill schema readmission below both consume it.
159
+ const activeInjections = scope.$getValue('activeInjections') ?? [];
160
+ // ── Per-step narrowing (9.18.0) ──────────────────────────────────
161
+ // The pointer arriving here is THIS iteration's: the Injection Engine
162
+ // re-keyed it and the mount mappers carry the fresh alias
163
+ // (`nextStepPointer ?? stepPointer` — the nextSkillCursor pattern), so
164
+ // the offer narrows on the very iteration a tenure begins. Absent
165
+ // plan/pointer, or a complete procedure → every variable below is
166
+ // undefined/empty and the compose path is byte-identical to today.
167
+ const stepPointer = stepPlanFor ? (0, skillSteps_js_1.pointerOf)(args.stepPointer) : undefined;
168
+ const stepPlan = stepPointer !== undefined ? stepPlanFor?.(stepPointer.skillId) : undefined;
169
+ const stepNow = stepPlan !== undefined && (0, skillSteps_js_1.stepInProgress)(stepPointer)
170
+ ? (0, skillSteps_js_1.currentStepOf)(stepPointer, stepPlan)
171
+ : undefined;
172
+ // The hold-out: the stepped skill's own tools that are not the current
173
+ // step's tool — MINUS every name another ACTIVE source also carries.
174
+ // A shared name is somebody's escape hatch; the sequence owns only what
175
+ // the stepped skill alone brought (the escape-hatches-stay house law).
176
+ // The two live co-owners are OTHER active skills (the same Tool
177
+ // reference shared across `tools:[]` arrays) and provider tools; a
178
+ // baseline `.tool()` sharing a skill tool's name is REFUSED at Agent
179
+ // build (`validateToolNameUniqueness` — ambiguous dispatch), so it can
180
+ // never reach this rule.
181
+ let stepHoldOut = EMPTY_NAME_SET;
182
+ if (stepNow !== undefined && stepPointer !== undefined && stepPlan !== undefined) {
183
+ const ownedByOthers = new Set();
184
+ for (const inj of activeInjections) {
185
+ if (inj.id === stepPointer.skillId)
186
+ continue;
187
+ for (const t of inj.inject.tools ?? [])
188
+ ownedByOthers.add(t.schema.name);
189
+ }
190
+ if (toolProvider && providerToolCache) {
191
+ for (const t of providerToolCache.current)
192
+ ownedByOthers.add(t.schema.name);
193
+ }
194
+ const holdOut = new Set();
195
+ for (const name of stepPlan.toolNames) {
196
+ if (name !== stepNow.tool && !ownedByOthers.has(name))
197
+ holdOut.add(name);
198
+ }
199
+ stepHoldOut = holdOut;
200
+ }
201
+ // The banner — a rebuilt schema copy substituted BY NAME (the
202
+ // `read_skill` precedent), so dispatch is untouched and nothing else in
203
+ // the list moves.
204
+ const bannered = (schema) => stepNow !== undefined && schema.name === stepNow.tool
205
+ ? {
206
+ ...schema,
207
+ description: `${(0, skillSteps_js_1.stepBannerPrefix)(stepPointer, stepNow)}${schema.description}`,
208
+ }
209
+ : schema;
150
210
  // The turn-start MENU (SG-C) — composed from the SAME verdict the record
151
211
  // carries (`scope.turnRoute`, threaded by the mount mappers), and only
152
212
  // while it is OUTSTANDING: once an accepted pick moves the cursor, the
@@ -168,7 +228,7 @@ function buildToolsSlot(config) {
168
228
  // the Injection Engine already advanced it and its outputMapper wrote it to the
169
229
  // parent before this slot mounts — the same value the read_skill gate will read
170
230
  // when the model answers. Substituted by name so nothing else in the list moves.
171
- const tools = readSkillFor
231
+ const substituted = readSkillFor
172
232
  ? staticTools.map((t) => t.name === 'read_skill'
173
233
  ? readSkillFor({
174
234
  ...(args.currentSkillId !== undefined && { currentSkillId: args.currentSkillId }),
@@ -177,6 +237,13 @@ function buildToolsSlot(config) {
177
237
  })
178
238
  : t)
179
239
  : staticTools;
240
+ // Step narrowing over the STATIC list (9.18.0): hold out the stepped
241
+ // skill's other tools (sole-owner names only — see stepHoldOut), lead the
242
+ // current step's tool with the banner. No step in progress → the exact
243
+ // array from the line above, untouched.
244
+ const tools = stepNow !== undefined
245
+ ? substituted.filter((t) => !stepHoldOut.has(t.name)).map(bannered)
246
+ : substituted;
180
247
  const injections = tools.map((t, i) => {
181
248
  const summary = `${t.name}: ${t.description}`;
182
249
  // `source: 'registry'` — tools configured at build time via
@@ -198,7 +265,10 @@ function buildToolsSlot(config) {
198
265
  const providerSchemas = [];
199
266
  if (toolProvider && providerToolCache) {
200
267
  for (const t of providerToolCache.current) {
201
- const schema = t.schema;
268
+ // Never held out (a provider is an active owner, so its names are
269
+ // excluded from stepHoldOut by construction) — but a provider serving
270
+ // the CURRENT step's tool still gets the banner the model reads.
271
+ const schema = bannered(t.schema);
202
272
  providerSchemas.push(schema);
203
273
  const summary = `${schema.name}: ${schema.description}`;
204
274
  injections.push({
@@ -213,16 +283,19 @@ function buildToolsSlot(config) {
213
283
  });
214
284
  }
215
285
  }
216
- // Active Injections targeting the tools slot (Skills with tools=[…]).
217
- // Filter activeInjections by `inject.tools`.
218
- const activeInjections = scope.$getValue('activeInjections') ?? [];
286
+ // Active Injections targeting the tools slot (Skills with tools=[…]),
287
+ // read up top. An autoActivate STEPPED skill readmits through here, so
288
+ // the step hold-out filters this source too — by the same sole-owner
289
+ // rule (a name in stepHoldOut is provably the stepped skill's alone).
219
290
  const dynamicSchemas = [];
220
291
  for (const inj of activeInjections) {
221
292
  const injTools = inj.inject.tools;
222
293
  if (!injTools || injTools.length === 0)
223
294
  continue;
224
295
  for (const tool of injTools) {
225
- const schema = tool.schema;
296
+ if (stepNow !== undefined && stepHoldOut.has(tool.schema.name))
297
+ continue;
298
+ const schema = bannered(tool.schema);
226
299
  dynamicSchemas.push(schema);
227
300
  const summary = `${schema.name}: ${schema.description}`;
228
301
  injections.push({
@@ -237,6 +310,32 @@ function buildToolsSlot(config) {
237
310
  });
238
311
  }
239
312
  }
313
+ // ── skip_step: offered ONLY while a step is in progress (9.18.0) ──
314
+ // Dispatchable all along (buildToolRegistry auto-attached it), but its
315
+ // schema enters the request here, description naming the current step,
316
+ // the remaining count and the declared onSkip policy. No step → no
317
+ // schema, no record — an agent between procedures offers exactly what
318
+ // it always did.
319
+ const stepSchemas = [];
320
+ if (stepNow !== undefined && stepPointer !== undefined && stepPlan !== undefined) {
321
+ const skipSchema = {
322
+ ...skipStepSchemaTemplate,
323
+ description: (0, skillSteps_js_1.skipStepDescription)(stepPointer, stepPlan),
324
+ };
325
+ stepSchemas.push(skipSchema);
326
+ const summary = `${skipSchema.name}: ${skipSchema.description}`;
327
+ injections.push({
328
+ contentSummary: (0, helpers_js_1.truncate)(summary, 80),
329
+ contentHash: (0, helpers_js_1.fnv1a)(`tool:skill:${stepPointer.skillId}:${skipSchema.name}`),
330
+ slot: 'tools',
331
+ source: 'skill',
332
+ sourceId: stepPointer.skillId,
333
+ reason: `skill '${stepPointer.skillId}' step ${stepPointer.step} of ${stepPointer.total} ` +
334
+ `— skip_step offered (procedure integrity)`,
335
+ rawContent: summary,
336
+ position: tools.length + providerSchemas.length + dynamicSchemas.length,
337
+ });
338
+ }
240
339
  scope.$setValue(conventions_js_1.INJECTION_KEYS.TOOLS, injections);
241
340
  // Merge schemas from all three sources, deduping by tool name.
242
341
  // Order: static .tool() registry FIRST (auto-attached read_skill /
@@ -252,7 +351,7 @@ function buildToolsSlot(config) {
252
351
  // "tools: Tool names must be unique."
253
352
  const seen = new Set();
254
353
  const merged = [];
255
- for (const t of [...tools, ...providerSchemas, ...dynamicSchemas]) {
354
+ for (const t of [...tools, ...providerSchemas, ...dynamicSchemas, ...stepSchemas]) {
256
355
  if (seen.has(t.name))
257
356
  continue;
258
357
  seen.add(t.name);
@@ -1 +1 @@
1
- {"version":3,"file":"buildToolsSlot.js","sourceRoot":"","sources":["../../../src/core/slots/buildToolsSlot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildToolsSlot.js","sourceRoot":"","sources":["../../../src/core/slots/buildToolsSlot.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,12 @@ export declare const STAGE_IDS: {
89
89
  * with `.outputSchema(parser, { retries })`. It writes the corrective turn
90
90
  * and loops back — a re-ask is an ordinary iteration, not a mode. */
91
91
  readonly OUTPUT_RETRY: "output-retry";
92
+ /** The Route decider's unfinished-steps branch (9.18.0), mounted ONLY on an
93
+ * agent with ≥1 stepped skill. When a would-be-final answer leaves declared
94
+ * steps unrun, ONE teaching nudge goes back and the loop turns once more —
95
+ * the SchemaRetry mechanism verbatim (an ordinary iteration, not a mode).
96
+ * At most once per turn; never a forced continue. */
97
+ readonly STEP_NUDGE: "step-nudge";
92
98
  readonly FORMAT_MERGE: "format-merge";
93
99
  readonly MERGE_LLM: "merge-llm";
94
100
  readonly EXTRACT_MERGE: "extract-merge";
@@ -88,6 +88,12 @@ export const STAGE_IDS = {
88
88
  * with `.outputSchema(parser, { retries })`. It writes the corrective turn
89
89
  * and loops back — a re-ask is an ordinary iteration, not a mode. */
90
90
  OUTPUT_RETRY: 'output-retry',
91
+ /** The Route decider's unfinished-steps branch (9.18.0), mounted ONLY on an
92
+ * agent with ≥1 stepped skill. When a would-be-final answer leaves declared
93
+ * steps unrun, ONE teaching nudge goes back and the loop turns once more —
94
+ * the SchemaRetry mechanism verbatim (an ordinary iteration, not a mode).
95
+ * At most once per turn; never a forced continue. */
96
+ STEP_NUDGE: 'step-nudge',
91
97
  FORMAT_MERGE: 'format-merge',
92
98
  MERGE_LLM: 'merge-llm',
93
99
  EXTRACT_MERGE: 'extract-merge',
@@ -206,6 +212,9 @@ const BOUNDARY_LOCAL_IDS = new Set([
206
212
  // answer was not good enough, which is exactly the kind of thing a reader
207
213
  // came to see. Muting it would hide the reason a run took three turns.
208
214
  STAGE_IDS.OUTPUT_RETRY,
215
+ // Same reasoning for the unfinished-steps nudge (9.18.0): the run telling
216
+ // the model its declared procedure is not done is a stop worth reading.
217
+ STAGE_IDS.STEP_NUDGE,
209
218
  ]);
210
219
  /**
211
220
  * Classify a stage id into its {@link StageRole}. Accepts a path-qualified id
@@ -275,6 +284,11 @@ export function milestoneFor(id) {
275
284
  // scrubbing to, because everything after it is a second attempt.
276
285
  case STAGE_IDS.OUTPUT_RETRY:
277
286
  return { kind: 'decision', label: 'Schema retry' };
287
+ // The answer left declared steps unrun and the one teaching nudge went
288
+ // back (9.18.0) — everything after it is the model finishing (or
289
+ // explaining) its procedure.
290
+ case STAGE_IDS.STEP_NUDGE:
291
+ return { kind: 'decision', label: 'Step nudge' };
278
292
  default:
279
293
  return null;
280
294
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/conventions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/conventions.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ import type { AgentInput, AgentOptions, AgentOutput, AgentState, ObserverDeliver
35
35
  import type { MessageMiddleware, ToolMiddleware } from './agent/middleware/types.js';
36
36
  import { AgentBuilder } from './agent/AgentBuilder.js';
37
37
  export type { SkillGraphOptions } from './agent/AgentBuilder.js';
38
+ export type { ProviderChoice, EscalationPolicy } from './agent/skillBrains.js';
38
39
  import type { ThinkingHandler } from '../thinking/types.js';
39
40
  export { AgentBuilder };
40
41
  export type { AgentInput, AgentOptions, AgentOutput, ObserverDeliveryOptions, RunConfig, RunConfigContext, RunConfigFn, WriteProvenanceMode, };
@@ -167,6 +168,10 @@ export declare class Agent extends RunnerBase<AgentInput, AgentOutput> {
167
168
  * against. Absent (every graph without the new options) → RouteTurn never
168
169
  * mounts, the gate never postures, seed never restores a cursor, and the
169
170
  * checkpoint shape is byte-identical. */
171
+ /** The folded per-skill brains + escalation + decider (9.19.0) —
172
+ * validated at `AgentBuilder.build()`. Undefined = no brain anywhere:
173
+ * callLLM, the gate, seed and RouteTurn wire nothing new. */
174
+ private readonly skillBrains?;
170
175
  private readonly skillGraphCascade?;
171
176
  /** Side channel for the conversation's inherited skill cursor (SG-C) —
172
177
  * stashed by `applyContinuation`, consumed-and-cleared by seed. */
@@ -374,7 +379,7 @@ export declare class Agent extends RunnerBase<AgentInput, AgentOutput> {
374
379
  readonly strictness: 'assist' | 'guard' | 'rails';
375
380
  readonly continuity: 'turn' | 'conversation';
376
381
  readonly nodeIds: ReadonlySet<string>;
377
- });
382
+ }, skillBrains?: import('./agent/skillBrains.js').FoldedSkillBrains);
378
383
  static create(opts: AgentOptions): AgentBuilder;
379
384
  /**
380
385
  * Cache policy for the base system prompt. Read by the CacheDecision
@@ -19,6 +19,7 @@ import { extractSequence } from '../security/extractSequence.js';
19
19
  import { PolicyHaltError } from '../security/PolicyHaltError.js';
20
20
  import { updateSkillHistory as updateSkillHistoryStage } from '../cache/CacheGateDecider.js';
21
21
  import { getDefaultCacheStrategy } from '../cache/strategyRegistry.js';
22
+ import { buildBrainFor, describeServingBrain } from './agent/skillBrains.js';
22
23
  import { SUBFLOW_IDS } from '../conventions.js';
23
24
  import { DecisionRequiredError, isPaused, pauseDemandsDecision, } from './pause.js';
24
25
  import { CredentialConsentRequiredError } from '../identity/CredentialConsentRequiredError.js';
@@ -67,6 +68,8 @@ import { buildMessagesSlot } from './slots/buildMessagesSlot.js';
67
68
  import { buildToolsSlot } from './slots/buildToolsSlot.js';
68
69
  import { isDevMode } from 'footprintjs';
69
70
  import { buildReadSkillTool } from '../lib/injection-engine/skillTools.js';
71
+ import { foldStepPlans } from '../lib/injection-engine/skillSteps.js';
72
+ import { buildStepNudgeStage } from './agent/stages/stepNudge.js';
70
73
  import { checkerGoverns } from '../adapters/types.js';
71
74
  import { skillTarget } from '../security/skillTarget.js';
72
75
  import { buildInjectionEngineSubflow } from '../lib/injection-engine/buildInjectionEngineSubflow.js';
@@ -169,6 +172,10 @@ export class Agent extends RunnerBase {
169
172
  * against. Absent (every graph without the new options) → RouteTurn never
170
173
  * mounts, the gate never postures, seed never restores a cursor, and the
171
174
  * checkpoint shape is byte-identical. */
175
+ /** The folded per-skill brains + escalation + decider (9.19.0) —
176
+ * validated at `AgentBuilder.build()`. Undefined = no brain anywhere:
177
+ * callLLM, the gate, seed and RouteTurn wire nothing new. */
178
+ skillBrains;
172
179
  skillGraphCascade;
173
180
  /** Side channel for the conversation's inherited skill cursor (SG-C) —
174
181
  * stashed by `applyContinuation`, consumed-and-cleared by seed. */
@@ -381,7 +388,7 @@ export class Agent extends RunnerBase {
381
388
  * sf-llm-call subflow for richer Lens grouping). Set from `opts.reactMode`.
382
389
  * See AgentOptions. */
383
390
  reactMode;
384
- constructor(opts, systemPromptValue, registry, voice, injections = [], memories = [], outputSchemaParser, toolProvider, systemPromptCachePolicy = 'always', cachingDisabled = false, cacheStrategy, outputFallbackCfg, reliabilityConfig, thinkingHandlerValue, thinkingBudgetValue, skillGraphNextSkill, skillGraphReachable, skillGraphScoreEntries, checkInOptions, runConfigFn, windowStrategy, toolMiddleware, messageMiddleware, outputEnforcement, skillGraphEdgeTargets, skillGraphExplainNextSkill, skillGraphIsTree, skillGraphSupersededEntries, skillGraphCascade) {
391
+ constructor(opts, systemPromptValue, registry, voice, injections = [], memories = [], outputSchemaParser, toolProvider, systemPromptCachePolicy = 'always', cachingDisabled = false, cacheStrategy, outputFallbackCfg, reliabilityConfig, thinkingHandlerValue, thinkingBudgetValue, skillGraphNextSkill, skillGraphReachable, skillGraphScoreEntries, checkInOptions, runConfigFn, windowStrategy, toolMiddleware, messageMiddleware, outputEnforcement, skillGraphEdgeTargets, skillGraphExplainNextSkill, skillGraphIsTree, skillGraphSupersededEntries, skillGraphCascade, skillBrains) {
385
392
  super();
386
393
  this.provider = opts.provider;
387
394
  this.name = opts.name ?? 'Agent';
@@ -411,6 +418,7 @@ export class Agent extends RunnerBase {
411
418
  this.skillGraphSupersededEntries = skillGraphSupersededEntries;
412
419
  this.skillGraphIsTree = skillGraphIsTree ?? false;
413
420
  this.skillGraphCascade = skillGraphCascade;
421
+ this.skillBrains = skillBrains;
414
422
  this.memories = memories;
415
423
  this.outputSchemaParser = outputSchemaParser;
416
424
  this.outputEnforcement = outputEnforcement;
@@ -2131,6 +2139,14 @@ export class Agent extends RunnerBase {
2131
2139
  const systemPromptCachePolicy = this.systemPromptCachePolicy;
2132
2140
  const cachingDisabled = this.cachingDisabledValue;
2133
2141
  const cacheStrategy = this.cacheStrategy;
2142
+ // ── Steps-as-data (9.18.0): fold the declared procedures ONCE ──────
2143
+ // One frozen plan per stepped skill, threaded as closures into the four
2144
+ // seams that consult it (Evaluate re-key, tools-slot narrowing,
2145
+ // tool-calls advance/skip, the Route step judge + nudge). Empty →
2146
+ // `stepPlanFor` stays undefined and not one of those seams runs a new
2147
+ // line (zero-cost-when-unused).
2148
+ const stepPlans = foldStepPlans(this.injections);
2149
+ const stepPlanFor = stepPlans.size > 0 ? (skillId) => stepPlans.get(skillId) : undefined;
2134
2150
  // seed extracted to ./agent/stages/seed.ts (v2.11.2). Factory takes
2135
2151
  // chart-build-time constants + per-run mutable accessors so the
2136
2152
  // resume side-channel and current run id remain dynamic.
@@ -2171,6 +2187,12 @@ export class Agent extends RunnerBase {
2171
2187
  return c;
2172
2188
  },
2173
2189
  restoreSkillCursor: this.skillGraphCascade?.continuity === 'conversation',
2190
+ // Steps (9.18.0): gate the per-run stepPointer/stepNudgeSpent reset on
2191
+ // the feature, so every other agent seeds exactly the keys it always did.
2192
+ ...(stepPlanFor !== undefined && { hasSteps: true }),
2193
+ // Escalation (9.19.0): same gate discipline — the per-run counter/flip
2194
+ // reset exists only when the policy does (de-escalation IS the seed).
2195
+ ...(this.skillBrains?.escalation !== undefined && { hasEscalation: true }),
2174
2196
  getCurrentRunId: () => this.currentRunContext?.runId,
2175
2197
  // WHO this run is for, when the caller named nobody (9.10.0). Seed uses
2176
2198
  // it for exactly one rung of the identity ladder — see `seedFrom` — and
@@ -2221,6 +2243,8 @@ export class Agent extends RunnerBase {
2221
2243
  ...(this.skillGraphSupersededEntries && {
2222
2244
  supersededEntries: this.skillGraphSupersededEntries,
2223
2245
  }),
2246
+ // Steps (9.18.0): the Evaluate stage owns the pointer's tenure re-key.
2247
+ ...(stepPlanFor !== undefined && { stepPlanFor }),
2224
2248
  });
2225
2249
  // The turn-start slot's occupant (SG-C). RouteTurn — the cascade — mounts
2226
2250
  // ONLY when the graph runs it: a classifier is configured, or the mount
@@ -2240,6 +2264,19 @@ export class Agent extends RunnerBase {
2240
2264
  strictness: cascade.strictness,
2241
2265
  isNode: (id) => cascade.nodeIds.has(id),
2242
2266
  ...(hiddenSkillIdsForRouting && { hiddenSkillIds: hiddenSkillIdsForRouting }),
2267
+ // The tier-3 decider (9.19.0) — the out-of-band menu resolver.
2268
+ // `AgentBuilder.build()` already refused a decider on a mount
2269
+ // that never runs the cascade, so it always reaches its stage.
2270
+ ...(this.skillBrains?.decider !== undefined && {
2271
+ decider: {
2272
+ provider: this.skillBrains.decider.provider,
2273
+ ...(this.skillBrains.decider.model !== undefined && {
2274
+ model: this.skillBrains.decider.model,
2275
+ }),
2276
+ defaultModel: model,
2277
+ runConfigured: this.runConfigFn !== undefined,
2278
+ },
2279
+ }),
2243
2280
  })
2244
2281
  : undefined;
2245
2282
  // Relevance entry router — a once-per-turn stage (off the ReAct loop) that
@@ -2288,6 +2325,8 @@ export class Agent extends RunnerBase {
2288
2325
  ...(readSkillFor && { readSkillFor }),
2289
2326
  ...(hiddenSkillIds && { hiddenSkillIds }),
2290
2327
  ...(budget?.tools !== undefined && { budgetCap: budget.tools }),
2328
+ // Steps (9.18.0): per-step narrowing + banner + the skip_step offer.
2329
+ ...(stepPlanFor !== undefined && { stepPlanFor }),
2291
2330
  });
2292
2331
  // callLLM extracted to ./agent/stages/callLLM.ts (v2.11.2). Same
2293
2332
  // late-binding pattern as seed for toolSchemas (computed below).
@@ -2315,6 +2354,21 @@ export class Agent extends RunnerBase {
2315
2354
  // Only a configured agent reads `scope.resolvedModel` — see the dep's
2316
2355
  // JSDoc for why this is a build-time flag and not a runtime fallback.
2317
2356
  ...(this.runConfigFn && { runConfigured: true }),
2357
+ // "The cursor picks the brain" (9.19.0) — wired only when a per-skill
2358
+ // brain or an escalation exists, so every other agent's stage reads no
2359
+ // new scope key and resolves on the exact line it always did. The
2360
+ // per-brain cache strategies resolve HERE, once, where the agent's own
2361
+ // strategy (override included) is known: same-name brains keep it,
2362
+ // foreign providers get their registry default (markers are
2363
+ // provider-aware — the one genuinely risky seam, resolved statically).
2364
+ ...(this.skillBrains !== undefined &&
2365
+ (this.skillBrains.bySkill.size > 0 || this.skillBrains.escalation !== undefined) && {
2366
+ brainFor: buildBrainFor({
2367
+ brains: this.skillBrains,
2368
+ agentProviderName: provider.name,
2369
+ agentCacheStrategy: cacheStrategy,
2370
+ }),
2371
+ }),
2318
2372
  });
2319
2373
  // Window stage (7.16 as compaction; the strategy family since 7.17) —
2320
2374
  // built ONLY when `.window()` / `.compaction()` was called. When present
@@ -2344,7 +2398,11 @@ export class Agent extends RunnerBase {
2344
2398
  // the agent opted into enforcement, because it is the last stage that
2345
2399
  // still has a loop to send the answer back around. Without enforcement
2346
2400
  // this is the same function reference the chart has always been handed.
2347
- const routeDecider = buildRouteDeciderStage(this.messageMiddleware, this.outputEnforcement);
2401
+ // 9.18.0 — the decider also judges a would-be-final answer against the
2402
+ // active step procedure (nudge once / accept / cut-short) when a stepped
2403
+ // skill is registered. Without steps this is the same function reference
2404
+ // the chart has always been handed.
2405
+ const routeDecider = buildRouteDeciderStage(this.messageMiddleware, this.outputEnforcement, stepPlanFor);
2348
2406
  // toolCallsHandler extracted to ./agent/stages/toolCalls.ts (v2.11.2).
2349
2407
  const toolCallsHandler = buildToolCallsHandler({
2350
2408
  registryByName,
@@ -2369,6 +2427,39 @@ export class Agent extends RunnerBase {
2369
2427
  this.skillGraphCascade.strictness !== 'assist' && {
2370
2428
  skillStrictness: this.skillGraphCascade.strictness,
2371
2429
  }),
2430
+ // Steps (9.18.0): advance/skip at the result boundary — the batch loop
2431
+ // AND every pausable resume path (an askHuman step advances on resume).
2432
+ ...(stepPlanFor !== undefined && { stepPlanFor }),
2433
+ // Escalate-on-evidence (9.19.0): the refusal budget + flip, wired only
2434
+ // when the policy exists. `describeFrom` resolves the event's honest
2435
+ // `from` by the same chain callLLM applies.
2436
+ ...(this.skillBrains?.escalation !== undefined && {
2437
+ escalation: {
2438
+ afterRefusals: this.skillBrains.escalation.afterRefusals,
2439
+ to: {
2440
+ provider: this.skillBrains.escalation.provider.name,
2441
+ ...(this.skillBrains.escalation.model !== undefined && {
2442
+ model: this.skillBrains.escalation.model,
2443
+ }),
2444
+ },
2445
+ describeFrom: (cursor, resolvedModel) => describeServingBrain({
2446
+ brains: this.skillBrains,
2447
+ cursor,
2448
+ agentProviderName: provider.name,
2449
+ defaultModel: model,
2450
+ ...(resolvedModel !== undefined && { resolvedModel }),
2451
+ }),
2452
+ },
2453
+ }),
2454
+ // The require-instruction catalog (9.19.0): every registered injection
2455
+ // id + the one delivery fact its check-up needs. Wired whenever
2456
+ // injections exist; nothing runs until a tool returns an effect.
2457
+ ...(this.injections.length > 0 && {
2458
+ leaseTargets: new Map(this.injections.map((inj) => {
2459
+ const surfaceMode = inj.metadata?.surfaceMode;
2460
+ return [inj.id, { ...(surfaceMode !== undefined && { surfaceMode }) }];
2461
+ })),
2462
+ }),
2372
2463
  // Check-in (evidence-carrying human consent). Always threaded (resolved
2373
2464
  // default); the gate fires only for tools that declared `checkIn`.
2374
2465
  checkIn: this.checkInConfig,
@@ -2428,6 +2519,15 @@ export class Agent extends RunnerBase {
2428
2519
  this.outputEnforcement.retries > 0 && {
2429
2520
  outputRetryStage: buildOutputRetryStage(this.outputEnforcement),
2430
2521
  }),
2522
+ // The unfinished-steps nudge branch (9.18.0) — mounted only when a
2523
+ // stepped skill exists, same conditional-mount law as the re-ask above.
2524
+ ...(stepPlanFor !== undefined && {
2525
+ hasSteps: true,
2526
+ stepNudgeStage: buildStepNudgeStage(stepPlanFor),
2527
+ }),
2528
+ // Escalation (9.19.0): the grouped chart threads `skillEscalated`
2529
+ // across the sf-llm-call boundary only when the policy exists.
2530
+ ...(this.skillBrains?.escalation !== undefined && { hasEscalation: true }),
2431
2531
  injectionEngineSubflow,
2432
2532
  ...(pickEntryStage && { pickEntryStage }),
2433
2533
  ...(routeTurnStage && { routeTurnStage: routeTurnStage }),