agentfootprint 8.3.0 → 8.5.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 (86) hide show
  1. package/AGENTS.md +11 -8
  2. package/CLAUDE.md +4 -3
  3. package/ai-instructions/setup.sh +0 -0
  4. package/bin/agentfootprint-lint-tools.mjs +0 -0
  5. package/dist/core/Agent.js +107 -2
  6. package/dist/core/Agent.js.map +1 -1
  7. package/dist/core/agent/AgentBuilder.js +47 -5
  8. package/dist/core/agent/AgentBuilder.js.map +1 -1
  9. package/dist/core/agent/buildAgentChart.js +5 -0
  10. package/dist/core/agent/buildAgentChart.js.map +1 -1
  11. package/dist/core/agent/buildDynamicAgentChart.js +6 -0
  12. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  13. package/dist/core/agent/stages/toolCalls.js +53 -7
  14. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  15. package/dist/core/slots/buildToolsSlot.js +9 -1
  16. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  17. package/dist/esm/core/Agent.d.ts +62 -2
  18. package/dist/esm/core/Agent.js +107 -2
  19. package/dist/esm/core/Agent.js.map +1 -1
  20. package/dist/esm/core/agent/AgentBuilder.d.ts +30 -1
  21. package/dist/esm/core/agent/AgentBuilder.js +47 -5
  22. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  23. package/dist/esm/core/agent/buildAgentChart.js +5 -0
  24. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  25. package/dist/esm/core/agent/buildDynamicAgentChart.js +6 -0
  26. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  27. package/dist/esm/core/agent/stages/toolCalls.d.ts +17 -0
  28. package/dist/esm/core/agent/stages/toolCalls.js +53 -7
  29. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  30. package/dist/esm/core/slots/buildToolsSlot.d.ts +13 -0
  31. package/dist/esm/core/slots/buildToolsSlot.js +9 -1
  32. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  33. package/dist/esm/events/payloads.d.ts +17 -0
  34. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.d.ts +12 -0
  35. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js +28 -4
  36. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  37. package/dist/esm/lib/injection-engine/index.d.ts +1 -1
  38. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  39. package/dist/esm/lib/injection-engine/skillBodyDelivery.d.ts +65 -0
  40. package/dist/esm/lib/injection-engine/skillBodyDelivery.js +110 -0
  41. package/dist/esm/lib/injection-engine/skillBodyDelivery.js.map +1 -0
  42. package/dist/esm/lib/injection-engine/skillGraph.d.ts +138 -39
  43. package/dist/esm/lib/injection-engine/skillGraph.js +178 -33
  44. package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
  45. package/dist/esm/lib/injection-engine/skillTools.d.ts +22 -1
  46. package/dist/esm/lib/injection-engine/skillTools.js +39 -7
  47. package/dist/esm/lib/injection-engine/skillTools.js.map +1 -1
  48. package/dist/esm/recorders/observability/RouteRecorder.d.ts +11 -2
  49. package/dist/esm/recorders/observability/RouteRecorder.js +58 -6
  50. package/dist/esm/recorders/observability/RouteRecorder.js.map +1 -1
  51. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js +28 -4
  52. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  53. package/dist/lib/injection-engine/index.js.map +1 -1
  54. package/dist/lib/injection-engine/skillBodyDelivery.js +116 -0
  55. package/dist/lib/injection-engine/skillBodyDelivery.js.map +1 -0
  56. package/dist/lib/injection-engine/skillGraph.js +178 -33
  57. package/dist/lib/injection-engine/skillGraph.js.map +1 -1
  58. package/dist/lib/injection-engine/skillTools.js +39 -7
  59. package/dist/lib/injection-engine/skillTools.js.map +1 -1
  60. package/dist/recorders/observability/RouteRecorder.js +58 -6
  61. package/dist/recorders/observability/RouteRecorder.js.map +1 -1
  62. package/dist/types/core/Agent.d.ts +62 -2
  63. package/dist/types/core/Agent.d.ts.map +1 -1
  64. package/dist/types/core/agent/AgentBuilder.d.ts +30 -1
  65. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  66. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  67. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  68. package/dist/types/core/agent/stages/toolCalls.d.ts +17 -0
  69. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  70. package/dist/types/core/slots/buildToolsSlot.d.ts +13 -0
  71. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  72. package/dist/types/events/payloads.d.ts +17 -0
  73. package/dist/types/events/payloads.d.ts.map +1 -1
  74. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts +12 -0
  75. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
  76. package/dist/types/lib/injection-engine/index.d.ts +1 -1
  77. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  78. package/dist/types/lib/injection-engine/skillBodyDelivery.d.ts +66 -0
  79. package/dist/types/lib/injection-engine/skillBodyDelivery.d.ts.map +1 -0
  80. package/dist/types/lib/injection-engine/skillGraph.d.ts +138 -39
  81. package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
  82. package/dist/types/lib/injection-engine/skillTools.d.ts +22 -1
  83. package/dist/types/lib/injection-engine/skillTools.d.ts.map +1 -1
  84. package/dist/types/recorders/observability/RouteRecorder.d.ts +11 -2
  85. package/dist/types/recorders/observability/RouteRecorder.d.ts.map +1 -1
  86. package/package.json +1 -1
@@ -13,8 +13,9 @@
13
13
  *
14
14
  * **v2 keystone — `from` IS enforced (a sticky cursor state machine).** A skill
15
15
  * graph is a state machine over skills; the engine tracks which node it is in via
16
- * `InjectionContext.currentSkillId` (the cursor). One pure resolver — `nextSkill(ctx)`
17
- * (see `makeNextSkill`) — is the single source of truth: each route target B
16
+ * `InjectionContext.currentSkillId` (the cursor). One pure resolver — `resolveCursor`
17
+ * (see `makeResolveCursor`), of which `nextSkill(ctx)` is the `.to` projection — is the
18
+ * single source of truth: each route target B
18
19
  * compiles to the trigger `nextSkill(ctx) === B`, which delivers `from`-gating
19
20
  * (an edge `A→B` fires only while the cursor is on A — no cross-skill edge bleed),
20
21
  * stickiness (the cursor stays on B until an edge leaves B), and a clean handoff
@@ -25,16 +26,26 @@
25
26
  * compiled trigger is always a `rule`. `toMermaid()` renders declared === drawn.
26
27
  *
27
28
  * A decision `tree()` routes per-iteration by stable `ctx` predicates (no cursor)
28
- * and is unaffected by `from`-gating.
29
+ * and is unaffected by `from`-gating. It has no cursor for `read_skill` to move
30
+ * either, so `reachableSkills()` is EMPTY there and the gate refuses a leaf pick
31
+ * (8.5.0) — see `reachableSkills` for why honouring it would break three of this
32
+ * module's own invariants.
29
33
  *
30
34
  * **The model moves too (`read_skill`).** Scoped `read_skill` bounds the model to
31
35
  * `reachableSkills(cursor)` — the declared successors of where it stands, plus the
32
36
  * entries. A pick the gate ACCEPTS moves the cursor exactly like a declared edge
33
- * does (`ctx.pendingSkillPick`, honoured in `makeNextSkill`), so what the gate
37
+ * does (`ctx.pendingSkillPick`, honoured in `makeResolveCursor`), so what the gate
34
38
  * allows and what actually takes effect are the same set. A declared edge that
35
39
  * fires the same turn wins (`D1 > D2`, docs/design/skill-graph.md §4A.1) and the
36
40
  * run emits `agentfootprint.skill.reroute_superseded` rather than leaving the
37
41
  * model's answered-"activated" claim quietly unmet.
42
+ *
43
+ * **The resolver says WHY, it is not asked to be guessed.** `explainNextSkill(ctx)`
44
+ * returns the destination AND the winning clause (`CursorMove`), decided at the same
45
+ * `return`. The agent stamps it on `context.evaluated` as `cursorMove`, which is how
46
+ * `routeRecorder()` can tell a model pick from a declared edge that happens to point
47
+ * at the same skill (8.5.0 — before, the drawn build-time provenance was read as the
48
+ * per-hop cause, so a model pick was recorded under a declared edge's label).
38
49
  */
39
50
  Object.defineProperty(exports, "__esModule", { value: true });
40
51
  exports.skillGraph = exports.SKILL_GRAPH_METADATA_KEY = exports.decideSkill = void 0;
@@ -61,6 +72,14 @@ function nodeId(id) {
61
72
  function toolMatcher(toolName) {
62
73
  return typeof toolName === 'string' ? (n) => n === toolName : (n) => toolName.test(n);
63
74
  }
75
+ /** How a skill is identified back to its author in a refusal — the description is
76
+ * what tells two same-id skills apart (mirrors skillsFromDir naming both files). */
77
+ function describe(skill) {
78
+ return skill.description ?? '(no description)';
79
+ }
80
+ function plural(n, one, many) {
81
+ return `${n} ${n === 1 ? one : many}`;
82
+ }
64
83
  function skillGraph(config) {
65
84
  const skillsById = new Map();
66
85
  const entries = [];
@@ -69,10 +88,32 @@ function skillGraph(config) {
69
88
  let treeScopeTools = true;
70
89
  let entryScorer;
71
90
  let entryByReadFlag = false;
91
+ /**
92
+ * Register a skill under its id, refusing a second DIFFERENT skill under an id
93
+ * already taken (8.4.0). Until then this was a bare `Map.set` — last write won,
94
+ * silently, and the loser vanished from the compiled graph entirely: the flat
95
+ * form kept the LAST body under the FIRST declaration's routing, the config form
96
+ * dropped the first skill outright, and a tree kept the FIRST body and discarded
97
+ * the second. `skillsFromDir` has always refused a collision inside its own
98
+ * directory and `Agent.injection()` has always refused one on the agent, so the
99
+ * graph was the only place in the library where two skills could quietly claim
100
+ * one id — the id `read_skill` dispatches by and every edge routes by.
101
+ *
102
+ * Identity-based, deliberately: re-registering the SAME object is how the fluent
103
+ * form works (`.entry(a).route(a, b)` remembers `a` twice) and how one skill sits
104
+ * at two tree leaves (the compiler merges those into one ORed trigger).
105
+ */
72
106
  const remember = (skill) => {
73
107
  if (skill.flavor !== 'skill') {
74
108
  throw new Error(`skillGraph: "${skill.id}" is not a skill (flavor='${skill.flavor}').`);
75
109
  }
110
+ const claimed = skillsById.get(skill.id);
111
+ if (claimed && claimed !== skill) {
112
+ throw new Error(`skillGraph: two different skills claim the id "${skill.id}" — ` +
113
+ `"${describe(claimed)}" and "${describe(skill)}". Skill ids must be unique ` +
114
+ `(read_skill dispatches by id, and every edge routes by id); rename one, or ` +
115
+ `pass the SAME skill object to both places.`);
116
+ }
76
117
  skillsById.set(skill.id, skill);
77
118
  return skill.id;
78
119
  };
@@ -128,6 +169,22 @@ function skillGraph(config) {
128
169
  throw new Error('skillGraph: .entryBy()/.entryByRelevance() is for flat entry/route graphs; a ' +
129
170
  '.tree() already routes by predicate (the scorer would be ignored).');
130
171
  }
172
+ // A tree and the flat entry/route wiring are two ways to declare the same
173
+ // thing, and only ONE of them compiles: the tree branch below never reads
174
+ // `entries` or `routes`. Until 8.4.0 that was silent — the tree won and every
175
+ // declared entry and route was dropped without a word, `checkup()` answered
176
+ // `{ ok: true, problems: [] }` because its tree arm short-circuits, and the
177
+ // author's flat wiring simply never existed at runtime.
178
+ if (treeRoot && (entries.length > 0 || routes.length > 0)) {
179
+ const dropped = [
180
+ ...(entries.length > 0 ? [plural(entries.length, 'entry', 'entries')] : []),
181
+ ...(routes.length > 0 ? [plural(routes.length, 'route', 'routes')] : []),
182
+ ].join(' and ');
183
+ throw new Error('skillGraph: .tree() and .entry()/.route() both declare the routing and only one ' +
184
+ `can compile — the tree wins, so the ${dropped} declared here would be silently ` +
185
+ 'dropped. tree() owns the graph: remove the .entry()/.route() calls, or drop ' +
186
+ '.tree() and route with the flat entry/route form.');
187
+ }
131
188
  const skills = [];
132
189
  const nodes = [];
133
190
  const edges = [];
@@ -152,7 +209,14 @@ function skillGraph(config) {
152
209
  // routing. Flat mode wires it into each route target's trigger AND returns it
153
210
  // for the loop's cursor-update stage. Tree mode has no cursor (per-iteration
154
211
  // predicate routing), so it stays a no-op there.
155
- let nextSkill = (ctx) => ctx.currentSkillId;
212
+ //
213
+ // It resolves to a `CursorMove` — where AND by which clause — and `nextSkill`
214
+ // is the `.to` projection of it (8.5.0). ONE resolver still: the cause is
215
+ // decided at the same `return` that decides the destination, so an observer
216
+ // can never disagree with the routing about why the cursor moved.
217
+ let resolveCursor = (ctx) => ctx.currentSkillId === undefined
218
+ ? { by: 'none' }
219
+ : { from: ctx.currentSkillId, to: ctx.currentSkillId, by: 'stay' };
156
220
  // The reachable-set resolver — what `read_skill` may jump to from the cursor
157
221
  // (the runtime gate enforces it). Default empty; set per mode below.
158
222
  let reachableSkills = () => [];
@@ -160,23 +224,63 @@ function skillGraph(config) {
160
224
  let scoreEntries;
161
225
  if (treeRoot) {
162
226
  // Decision-tree mode (v3): compile each leaf to a path-conjunction trigger.
163
- compileTree(treeRoot, () => true, { skills, nodes, edges }, null, { n: 0 }, [], treeScopeTools);
227
+ // Every leaf is REGISTERED as it compiles (8.4.0). Two things ride on that:
228
+ // the duplicate-id refusal now covers leaves (before, two different skills
229
+ // sharing an id as two leaves merged, first body wins, silently), and the
230
+ // skill-CONTRACT checks finally run for a fluent `.tree()` graph — until
231
+ // 8.4.0 `skillsById` stayed empty there, so `checkup()` answered
232
+ // `{ ok: true, problems: [] }` for a tree whose body called a tool that
233
+ // does not exist, while the byte-identical config-form graph reported it.
234
+ compileTree(treeRoot, () => true, { skills, nodes, edges }, null, { n: 0 }, [], treeScopeTools, remember);
164
235
  attachExactlyOneLeafMonitor(skills);
165
- // Tree mode has no cursor — `read_skill` stays a full escape hatch (all leaves).
166
236
  const leafIds = skills.map((s) => s.id);
167
- reachableSkills = () => leafIds;
237
+ // A tree routes to its LEAVES and to nothing else, so a skill listed in
238
+ // `skills[]` that is not a leaf is compiled out of the graph entirely — it
239
+ // never reaches the agent, so no trigger, no `read_skill`, no body, ever.
240
+ // Refused by name rather than dropped (8.4.0).
241
+ const leafSet = new Set(leafIds);
242
+ for (const id of skillsById.keys()) {
243
+ if (leafSet.has(id))
244
+ continue;
245
+ throw new Error(`skillGraph({ tree }): skill "${id}" is listed in skills[] but is not a leaf of ` +
246
+ 'the tree, so it would never load — a tree routes only to its leaves. Add it ' +
247
+ `to the tree as a leaf, drop it from skills[], or register it on the agent ` +
248
+ `with .skill(${id}) to keep it read_skill-reachable.`);
249
+ }
250
+ // Tree mode has no cursor, so `read_skill` has nothing to jump — EMPTY (8.5.0).
251
+ //
252
+ // Until 8.5.0 this answered `leafIds`, which made the gate accept a leaf pick
253
+ // that could never take effect: a leaf compiles to `{ kind: 'rule', activeWhen:
254
+ // pathCond }`, and a `read_skill` call writes only `activatedInjectionIds`,
255
+ // which no `rule` trigger reads. The pick was accepted, the tool answered
256
+ // "Skill 'x' activated for the next iteration", the tree re-decided by
257
+ // predicate, and `reroute_superseded` fired naming a winner that did not exist
258
+ // (tree mode never writes a cursor at all). Three of the library's own
259
+ // invariants say the pick cannot be honoured here instead: exactly ONE leaf
260
+ // fires per iteration (`attachExactlyOneLeafMonitor` warns otherwise), each
261
+ // leaf's tools are scoped on that basis (`TreeOptions.scopeTools`), and
262
+ // `toMermaid()` draws what is declared — a model lever over predicate routing
263
+ // is not on the drawing. So the gate refuses, in the same terms 8.4.0 already
264
+ // uses for every other rule-triggered skill.
265
+ //
266
+ // `read_skill` is not dead under a tree: the OPEN skills (anything registered
267
+ // beside the graph — `.skill(x)`, `.skills(reg)`, `.selfExplain()`) are still
268
+ // admitted from any cursor by the agent's gate, which is the only place that
269
+ // knows what else is registered.
270
+ reachableSkills = () => [];
168
271
  }
169
272
  else {
170
273
  // Flat entry/route mode (v1 + v2 keystone). `from`-gating + sticky cursor
171
274
  // both derive from one pure resolver so they can never diverge.
172
275
  // `.entryByRead()` makes the entries EXCLUSIVE (like `.entryByRelevance()`),
173
276
  // but the cold-start pick is the model's: no entry auto-loads — the LLM picks
174
- // one via `read_skill`, and that choice becomes the cursor (see makeNextSkill).
277
+ // one via `read_skill`, and that choice becomes the cursor (see
278
+ // makeResolveCursor).
175
279
  const llmReadEntry = entryByReadFlag;
176
- nextSkill = makeNextSkill(entries, routes, llmReadEntry);
280
+ resolveCursor = makeResolveCursor(entries, routes, llmReadEntry);
177
281
  // Triggers share ONE memoized view of the resolver per evaluation pass —
178
- // see memoizePerPass. `nextSkill` (public, one call per iteration) stays raw.
179
- const nextSkillForTriggers = memoizePerPass(nextSkill);
282
+ // see memoizePerPass. The public resolvers (one call per iteration) stay raw.
283
+ const nextSkillForTriggers = memoizePerPass(resolveCursor);
180
284
  reachableSkills = makeReachableSkills(entries, routes);
181
285
  if (entryScorer)
182
286
  scoreEntries = makeScoreEntries(entries, skillsById, entryScorer);
@@ -215,7 +319,10 @@ function skillGraph(config) {
215
319
  edges,
216
320
  nodes,
217
321
  toMermaid: () => renderMermaid(nodes, edges),
218
- nextSkill: (ctx) => nextSkill(ctx),
322
+ // `nextSkill` is the `.to` PROJECTION of the one resolver, not a second
323
+ // implementation — the two cannot answer differently.
324
+ nextSkill: (ctx) => resolveCursor(ctx).to,
325
+ explainNextSkill: (ctx) => resolveCursor(ctx),
219
326
  reachableSkills: (currentSkillId) => reachableSkills(currentSkillId),
220
327
  checkup,
221
328
  ...(scoreEntries && { scoreEntries }),
@@ -226,6 +333,24 @@ function skillGraph(config) {
226
333
  // independently of the wiring is what lets the check-up flag a listed-but-unwired
227
334
  // skill (every config skill is registered, even if no edge references it).
228
335
  if (config) {
336
+ // `tree` and `start`/`steps` are two ways to declare the routing and only one
337
+ // compiles. The TYPE already refuses the pair (SkillGraphConfig is a union with
338
+ // `tree?: never` on the flat arm), so this is the runtime half of the same
339
+ // refusal — for JavaScript callers and for a config assembled through `any`.
340
+ // Until 8.4.0 `start` was skipped by an `else if` and `steps` were compiled into
341
+ // routes the tree branch then ignored: both vanished without a word.
342
+ const overruled = [
343
+ ...(config.start !== undefined ? ['start'] : []),
344
+ ...(config.steps !== undefined ? ['steps'] : []),
345
+ ];
346
+ if (config.tree !== undefined && overruled.length > 0) {
347
+ const quoted = overruled.map((k) => `\`${k}\``).join(' and ');
348
+ const one = overruled.length === 1;
349
+ throw new Error(`skillGraph({ tree, ${overruled.join(', ')} }): ${quoted} declare${one ? 's' : ''} the ` +
350
+ `routing that \`tree\` already owns, so ${one ? 'it' : 'they'} would be silently ` +
351
+ 'ignored — a tree routes by predicate on every iteration and has no entry menu ' +
352
+ `and no cursor. Remove ${quoted}, or drop \`tree\` and route with the flat form.`);
353
+ }
229
354
  for (const s of config.skills)
230
355
  remember(s);
231
356
  const resolve = (id) => {
@@ -334,7 +459,8 @@ function routeMatches(r, ctx) {
334
459
  }
335
460
  /**
336
461
  * The cursor resolver (the keystone). Pure + deterministic. Given the iteration
337
- * context, returns the skill the graph should be *in* after this iteration:
462
+ * context, returns the skill the graph should be *in* after this iteration AND the
463
+ * clause that decided it (`CursorMove`; `nextSkill` is the `.to` projection):
338
464
  * • cold start (`currentSkillId` unset) → first `entry` whose `when` passes
339
465
  * (an `always`-entry — no `when` — matches unconditionally), else the entry
340
466
  * the MODEL picked with `read_skill` (see "the model's pick" below);
@@ -359,11 +485,17 @@ function routeMatches(r, ctx) {
359
485
  * Each candidate predicate runs in its OWN try/catch so one throwing edge can't
360
486
  * block its siblings or crash the loop — a throw is treated as "no match" and,
361
487
  * in dev mode, warned. This is the design's `routeForResult` pin-table target.
488
+ *
489
+ * The `by` on each return is decided at the same statement as the destination
490
+ * (8.5.0). That matters most in the case an outside observer cannot reconstruct:
491
+ * a declared edge and a same-turn model pick naming the SAME target. `D1 > D2`
492
+ * makes it a `'route'`, and only this function knows.
362
493
  */
363
- function makeNextSkill(entries, routes, llmReadEntry = false) {
494
+ function makeResolveCursor(entries, routes, llmReadEntry = false) {
364
495
  const isEntry = (id) => entries.some((e) => e.id === id);
365
496
  return (ctx) => {
366
497
  const cur = ctx.currentSkillId;
498
+ const from = cur !== undefined ? { from: cur } : {};
367
499
  if (cur === undefined) {
368
500
  // Cold start: declaration-order first entry whose intent predicate passes.
369
501
  // `.entryByRead()` skips this — there the library deliberately does NOT
@@ -372,10 +504,10 @@ function makeNextSkill(entries, routes, llmReadEntry = false) {
372
504
  if (!llmReadEntry) {
373
505
  for (const e of entries) {
374
506
  if (!e.when)
375
- return e.id;
507
+ return { to: e.id, by: 'entry' };
376
508
  try {
377
509
  if (e.when(ctx))
378
- return e.id;
510
+ return { to: e.id, by: 'entry' };
379
511
  }
380
512
  catch (err) {
381
513
  warnMatcherThrew(`entry "${e.id}"`, err);
@@ -389,16 +521,18 @@ function makeNextSkill(entries, routes, llmReadEntry = false) {
389
521
  // AUTOMATIC pick's condition, not a lock on the manual one: the model asked
390
522
  // for this skill by name and the gate allowed it.
391
523
  if (ctx.pendingSkillPick !== undefined && isEntry(ctx.pendingSkillPick)) {
392
- return ctx.pendingSkillPick;
524
+ return { to: ctx.pendingSkillPick, by: 'model-pick' };
393
525
  }
394
526
  for (const e of entries) {
395
527
  if (ctx.activatedInjectionIds.includes(e.id))
396
- return e.id;
528
+ return { to: e.id, by: 'model-pick' };
397
529
  }
398
- return undefined;
530
+ return { by: 'none' };
399
531
  }
400
532
  // D1 — transition: first from-gated deterministic edge that fires. Wins over
401
- // a same-turn model pick (the author's declared edge is never overridden).
533
+ // a same-turn model pick (the author's declared edge is never overridden) —
534
+ // INCLUDING when both name the same target, which is why the cause is decided
535
+ // here and not inferred downstream from the destination.
402
536
  for (const r of routes) {
403
537
  if (r.fromId !== cur)
404
538
  continue;
@@ -406,7 +540,7 @@ function makeNextSkill(entries, routes, llmReadEntry = false) {
406
540
  continue; // model edges don't auto-fire
407
541
  try {
408
542
  if (routeMatches(r, ctx))
409
- return r.toId;
543
+ return { ...from, to: r.toId, by: 'route' };
410
544
  }
411
545
  catch (err) {
412
546
  warnMatcherThrew(`route ${r.fromId}→${r.toId}`, err);
@@ -416,9 +550,9 @@ function makeNextSkill(entries, routes, llmReadEntry = false) {
416
550
  // (already gated) pick moves the cursor. A pick of the CURRENT skill is a
417
551
  // no-op stay, not a hop.
418
552
  if (ctx.pendingSkillPick !== undefined && ctx.pendingSkillPick !== cur) {
419
- return ctx.pendingSkillPick;
553
+ return { ...from, to: ctx.pendingSkillPick, by: 'model-pick' };
420
554
  }
421
- return cur; // sticky stay — no edge out of the current skill fired
555
+ return { ...from, to: cur, by: 'stay' }; // sticky stay — no edge out of cur fired
422
556
  };
423
557
  }
424
558
  /**
@@ -431,19 +565,23 @@ function makeNextSkill(entries, routes, llmReadEntry = false) {
431
565
  * regex router would re-run all 15 regexes 15 times per turn.
432
566
  *
433
567
  * Keyed on ctx IDENTITY in a WeakMap, so entries vanish with the context object
434
- * and a fresh iteration always recomputes. Safe because `nextSkill` is pure over
568
+ * and a fresh iteration always recomputes. Safe because the resolver is pure over
435
569
  * `ctx` (route/entry predicates are documented as "pure + total"); the memo can
436
- * only make a pass MORE self-consistent, never less. `graph.nextSkill` itself is
437
- * left un-memoized — it is public API called once per iteration, and a consumer
438
- * that mutates a ctx object between calls must still get a fresh answer.
570
+ * only make a pass MORE self-consistent, never less. `graph.nextSkill` and
571
+ * `graph.explainNextSkill` are left un-memoized — they are public API called once
572
+ * per iteration, and a consumer that mutates a ctx object between calls must still
573
+ * get a fresh answer.
574
+ *
575
+ * Memoizes the whole `CursorMove` and projects `.to` for the triggers (8.5.0), so
576
+ * one pass computes the destination and the cause together, exactly once.
439
577
  */
440
- function memoizePerPass(nextSkill) {
578
+ function memoizePerPass(resolveCursor) {
441
579
  const cache = new WeakMap();
442
580
  return (ctx) => {
443
581
  const hit = cache.get(ctx);
444
582
  if (hit)
445
583
  return hit.value;
446
- const value = nextSkill(ctx);
584
+ const value = resolveCursor(ctx).to;
447
585
  cache.set(ctx, { value });
448
586
  return value;
449
587
  };
@@ -507,7 +645,10 @@ function deriveTrigger(id, _skill, entries, routes, nextSkill, exclusiveEntries)
507
645
  /** Walk a decision tree → push each leaf skill (with its path-conjunction trigger,
508
646
  * earlier-sibling negation baked into the path) plus predicate/skill nodes +
509
647
  * branch edges for drawing. */
510
- function compileTree(node, pathCond, out, parent, counter, path, scopeTools) {
648
+ function compileTree(node, pathCond, out, parent, counter, path, scopeTools,
649
+ /** Registers each leaf under its id — the duplicate-id refusal and the
650
+ * skill-contract checks both read that registry (8.4.0). */
651
+ register) {
511
652
  if (isDecisionNode(node)) {
512
653
  const id = `d${counter.n++}`;
513
654
  const label = node.label ?? 'decide';
@@ -518,13 +659,17 @@ function compileTree(node, pathCond, out, parent, counter, path, scopeTools) {
518
659
  kind: 'predicate',
519
660
  label: parent?.branch,
520
661
  });
521
- compileTree(node.whenTrue, (ctx) => pathCond(ctx) && node.predicate(ctx), out, { id, branch: 'yes' }, counter, [...path, { label, branch: 'yes' }], scopeTools);
522
- compileTree(node.whenFalse, (ctx) => pathCond(ctx) && !node.predicate(ctx), out, { id, branch: 'no' }, counter, [...path, { label, branch: 'no' }], scopeTools);
662
+ compileTree(node.whenTrue, (ctx) => pathCond(ctx) && node.predicate(ctx), out, { id, branch: 'yes' }, counter, [...path, { label, branch: 'yes' }], scopeTools, register);
663
+ compileTree(node.whenFalse, (ctx) => pathCond(ctx) && !node.predicate(ctx), out, { id, branch: 'no' }, counter, [...path, { label, branch: 'no' }], scopeTools, register);
523
664
  }
524
665
  else {
525
666
  if (node.flavor !== 'skill') {
526
667
  throw new Error(`skillGraph.tree: leaf "${node.id}" is not a skill (flavor='${node.flavor}').`);
527
668
  }
669
+ // Claim the id. The SAME object at two leaves is the merge below; two DIFFERENT
670
+ // skills under one id is refused here rather than merged (8.4.0) — the merge
671
+ // kept the first body and dropped the second one's silently.
672
+ register(node);
528
673
  // The SAME skill may be the leaf of several branches ("ESXi questions" and
529
674
  // "io questions" both route to the io-profile bundle). Compile it ONCE:
530
675
  // merge repeated leaves into one injection whose trigger ORs the path
@@ -1 +1 @@
1
- {"version":3,"file":"skillGraph.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/skillGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillGraph.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/skillGraph.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,28 @@ function buildListSkillsTool(skills) {
56
56
  });
57
57
  }
58
58
  exports.buildListSkillsTool = buildListSkillsTool;
59
+ /** Compose the tool description: one catalog, or the offer split in two. */
60
+ function describeOffer(skills, line, fullCatalog, offer) {
61
+ const tail = `Pass the skill's id. The skill's body becomes part of the system prompt and any ` +
62
+ `gated tools become available on the next call.`;
63
+ if (!offer) {
64
+ return `Activate a skill for the next iteration. Available skills:\n${fullCatalog}\n\n${tail}`;
65
+ }
66
+ const grantable = new Set(offer.grantable);
67
+ const open = skills.filter((s) => grantable.has(s.id));
68
+ const shut = skills.filter((s) => !grantable.has(s.id));
69
+ const parts = [
70
+ open.length > 0
71
+ ? `Reachable from here:\n${open.map(line).join('\n')}`
72
+ : 'Nothing is reachable from here — answer with the skill you are in, or finish.',
73
+ ];
74
+ if (offer.showRefusable !== false && shut.length > 0) {
75
+ parts.push(`Not reachable from here (read_skill for these will be refused):\n${shut
76
+ .map(line)
77
+ .join('\n')}`);
78
+ }
79
+ return `Activate a skill for the next iteration.\n\n${parts.join('\n\n')}\n\n${tail}`;
80
+ }
59
81
  /**
60
82
  * Build the `read_skill` tool — activates a skill for the next
61
83
  * iteration. The LLM picks WHICH skill via the `id` argument.
@@ -77,14 +99,17 @@ exports.buildListSkillsTool = buildListSkillsTool;
77
99
  *
78
100
  * Returns `undefined` when there are no skills — callers should
79
101
  * guard or filter undefined out of their tool list.
102
+ *
103
+ * Pass `offer` to scope the DESCRIPTION to what the graph's gate will actually
104
+ * grant from the current cursor (8.5.0); the enum stays the full catalog either
105
+ * way. Omit it and the tool is byte-identical to what it has always been.
80
106
  */
81
- function buildReadSkillTool(skills) {
107
+ function buildReadSkillTool(skills, offer) {
82
108
  if (skills.length === 0)
83
109
  return undefined;
84
110
  const skillIds = skills.map((s) => s.id);
85
- const skillCatalog = skills
86
- .map((s) => ` - ${s.id}: ${s.description ?? '(no description)'}`)
87
- .join('\n');
111
+ const line = (s) => ` - ${s.id}: ${s.description ?? '(no description)'}`;
112
+ const skillCatalog = skills.map(line).join('\n');
88
113
  const byId = new Map();
89
114
  for (const s of skills) {
90
115
  const meta = s.metadata;
@@ -95,14 +120,21 @@ function buildReadSkillTool(skills) {
95
120
  }
96
121
  return (0, tools_js_1.defineTool)({
97
122
  name: 'read_skill',
98
- description: `Activate a skill for the next iteration. Available skills:\n${skillCatalog}\n\n` +
99
- `Pass the skill's id. The skill's body becomes part of the system prompt and any ` +
100
- `gated tools become available on the next call.`,
123
+ description: describeOffer(skills, line, skillCatalog, offer),
101
124
  inputSchema: {
102
125
  type: 'object',
103
126
  properties: {
104
127
  id: {
105
128
  type: 'string',
129
+ // The FULL catalog, always — deliberately NOT narrowed to the reachable
130
+ // set (8.5.0). `toolArgValidation` defaults to `'enforce'` and runs BEFORE
131
+ // the skill-graph gate, rejecting an off-enum id with a generic schema
132
+ // error and `error = true`, which the gate then skips. Narrowing this
133
+ // would silently retire the gate's teaching refusal, the
134
+ // `agentfootprint.skill.rejected` event, `routeRecorder`'s rejection hops
135
+ // and the rejected-cap governor's only input — four honesty mechanisms
136
+ // traded for one. The OFFER is narrowed in the description instead, which
137
+ // is what the model actually reads to choose.
106
138
  enum: skillIds,
107
139
  description: 'The skill id to activate.',
108
140
  },
@@ -1 +1 @@
1
- {"version":3,"file":"skillTools.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/skillTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillTools.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/skillTools.ts"],"names":[],"mappings":"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"}