agentfootprint 8.6.0 → 8.7.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 (94) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +1 -1
  4. package/ai-instructions/claude-code/SKILL.md +1 -1
  5. package/dist/core/agent/AgentBuilder.js +104 -0
  6. package/dist/core/agent/AgentBuilder.js.map +1 -1
  7. package/dist/core/slots/buildToolsSlot.js +77 -0
  8. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  9. package/dist/esm/core/agent/AgentBuilder.js +104 -0
  10. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  11. package/dist/esm/core/slots/buildToolsSlot.js +78 -1
  12. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  13. package/dist/esm/events/payloads.d.ts +29 -0
  14. package/dist/esm/events/registry.d.ts +3 -1
  15. package/dist/esm/events/registry.js +2 -0
  16. package/dist/esm/events/registry.js.map +1 -1
  17. package/dist/esm/lib/injection-engine/factories/defineRelevanceHint.d.ts +15 -0
  18. package/dist/esm/lib/injection-engine/factories/defineRelevanceHint.js +16 -0
  19. package/dist/esm/lib/injection-engine/factories/defineRelevanceHint.js.map +1 -1
  20. package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +9 -0
  21. package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
  22. package/dist/esm/lib/injection-engine/index.d.ts +3 -3
  23. package/dist/esm/lib/injection-engine/index.js +8 -3
  24. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  25. package/dist/esm/lib/injection-engine/skillContract.d.ts +25 -2
  26. package/dist/esm/lib/injection-engine/skillContract.js +11 -4
  27. package/dist/esm/lib/injection-engine/skillContract.js.map +1 -1
  28. package/dist/esm/lib/injection-engine/skillGraph.d.ts +65 -4
  29. package/dist/esm/lib/injection-engine/skillGraph.js +36 -11
  30. package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
  31. package/dist/esm/lib/injection-engine/skillGraphCheckup.d.ts +47 -7
  32. package/dist/esm/lib/injection-engine/skillGraphCheckup.js +165 -13
  33. package/dist/esm/lib/injection-engine/skillGraphCheckup.js.map +1 -1
  34. package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +24 -0
  35. package/dist/esm/lib/injection-engine/skillsFromDir.js +19 -0
  36. package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -1
  37. package/dist/esm/lib/injection-engine/types.d.ts +8 -0
  38. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  39. package/dist/esm/tool-providers/index.d.ts +1 -1
  40. package/dist/esm/tool-providers/index.js +4 -1
  41. package/dist/esm/tool-providers/index.js.map +1 -1
  42. package/dist/esm/tool-providers/skillScopedTools.d.ts +4 -0
  43. package/dist/esm/tool-providers/skillScopedTools.js +33 -2
  44. package/dist/esm/tool-providers/skillScopedTools.js.map +1 -1
  45. package/dist/esm/tool-providers/types.d.ts +25 -0
  46. package/dist/events/registry.js +2 -0
  47. package/dist/events/registry.js.map +1 -1
  48. package/dist/lib/injection-engine/factories/defineRelevanceHint.js +17 -1
  49. package/dist/lib/injection-engine/factories/defineRelevanceHint.js.map +1 -1
  50. package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
  51. package/dist/lib/injection-engine/index.js +7 -1
  52. package/dist/lib/injection-engine/index.js.map +1 -1
  53. package/dist/lib/injection-engine/skillContract.js +11 -4
  54. package/dist/lib/injection-engine/skillContract.js.map +1 -1
  55. package/dist/lib/injection-engine/skillGraph.js +37 -11
  56. package/dist/lib/injection-engine/skillGraph.js.map +1 -1
  57. package/dist/lib/injection-engine/skillGraphCheckup.js +165 -13
  58. package/dist/lib/injection-engine/skillGraphCheckup.js.map +1 -1
  59. package/dist/lib/injection-engine/skillsFromDir.js +19 -0
  60. package/dist/lib/injection-engine/skillsFromDir.js.map +1 -1
  61. package/dist/lib/injection-engine/types.js.map +1 -1
  62. package/dist/tool-providers/index.js +5 -1
  63. package/dist/tool-providers/index.js.map +1 -1
  64. package/dist/tool-providers/skillScopedTools.js +35 -3
  65. package/dist/tool-providers/skillScopedTools.js.map +1 -1
  66. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  67. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  68. package/dist/types/events/payloads.d.ts +29 -0
  69. package/dist/types/events/payloads.d.ts.map +1 -1
  70. package/dist/types/events/registry.d.ts +3 -1
  71. package/dist/types/events/registry.d.ts.map +1 -1
  72. package/dist/types/lib/injection-engine/factories/defineRelevanceHint.d.ts +15 -0
  73. package/dist/types/lib/injection-engine/factories/defineRelevanceHint.d.ts.map +1 -1
  74. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +9 -0
  75. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
  76. package/dist/types/lib/injection-engine/index.d.ts +3 -3
  77. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  78. package/dist/types/lib/injection-engine/skillContract.d.ts +25 -2
  79. package/dist/types/lib/injection-engine/skillContract.d.ts.map +1 -1
  80. package/dist/types/lib/injection-engine/skillGraph.d.ts +65 -4
  81. package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
  82. package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts +47 -7
  83. package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts.map +1 -1
  84. package/dist/types/lib/injection-engine/skillsFromDir.d.ts +24 -0
  85. package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -1
  86. package/dist/types/lib/injection-engine/types.d.ts +8 -0
  87. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  88. package/dist/types/tool-providers/index.d.ts +1 -1
  89. package/dist/types/tool-providers/index.d.ts.map +1 -1
  90. package/dist/types/tool-providers/skillScopedTools.d.ts +4 -0
  91. package/dist/types/tool-providers/skillScopedTools.d.ts.map +1 -1
  92. package/dist/types/tool-providers/types.d.ts +25 -0
  93. package/dist/types/tool-providers/types.d.ts.map +1 -1
  94. package/package.json +1 -1
@@ -3,19 +3,33 @@
3
3
  *
4
4
  * Pure + side-effect-free. Catches wiring mistakes at authoring time instead of
5
5
  * mid-run: a skill nobody can reach, an edge to a skill that isn't in the graph,
6
- * two un-prioritized edges leaving one skill, a graph with no start, a self-loop.
6
+ * two un-prioritized edges leaving one skill, a graph with no start, a self-loop,
7
+ * an entry menu with no way to choose from it, a transition the cursor can never take.
7
8
  *
8
9
  * Surfaced two ways:
9
10
  * • `graph.checkup()` → `{ ok, problems }` — always available, call it whenever.
10
11
  * • `.build({ check: 'throw' | 'warn' | 'off' })` — run it at build time.
11
12
  *
12
- * `unreachable-skill` is a WARNING, not an error: a skill with no incoming edge is
13
- * still legitimately reachable by the model via `read_skill`. Only `unknown-skill`
14
- * and `no-entry` are true errors.
13
+ * **Only `unknown-skill` and `no-entry` are ERRORS.** Everything else is a WARNING,
14
+ * and deliberately so: this file reports what it can PROVE from the declaration, and
15
+ * a graph the model can still navigate is not a broken graph. `unreachable-skill`,
16
+ * `model-edge-only` and `dead-entry-step` all describe skills or transitions that
17
+ * deterministic routing cannot reach — but `read_skill` can, so calling them errors
18
+ * would claim more than the declaration supports.
19
+ *
20
+ * ## What "reachable" means here (8.7.0)
21
+ *
22
+ * The BFS walks **deterministic** edges only — an edge with a `when` or an
23
+ * `onToolReturn`. A bare `.route(a, b)` compiles to no trigger at all (`b` keeps its
24
+ * `llm-activated` default), so counting it as reachability answered a question nobody
25
+ * asked: the graph does not route there, the model does. Bare edges get their own
26
+ * code, `model-edge-only`, which says exactly that and names the one cursor position
27
+ * the gate will grant the jump from.
15
28
  */
16
29
  /** Run the check-up. Pure. */
17
30
  export function checkupGraph(input) {
18
- const { skillIds, entryIds, routes, isTree } = input;
31
+ const { skillIds, entries, routes, isTree, exclusiveEntries, triggerKinds } = input;
32
+ const entryIds = entries.map((e) => e.id);
19
33
  const problems = [];
20
34
  // 1. unknown-skill (ERROR) — an entry/edge references a skill not in the graph.
21
35
  // Vacuous under the fluent builder (every edge registers its skills); the real
@@ -41,17 +55,22 @@ export function checkupGraph(input) {
41
55
  return { ok: !problems.some((p) => p.kind === 'error'), problems };
42
56
  }
43
57
  // 2. no-entry (ERROR) — a flat graph with no entry can never start.
44
- if (entryIds.length === 0) {
58
+ if (entries.length === 0) {
45
59
  problems.push({
46
60
  kind: 'error',
47
61
  code: 'no-entry',
48
62
  message: 'The graph has no entry skill — declare at least one `.entry(...)`.',
49
63
  });
50
64
  }
51
- // 3. unreachable-skill (WARNING) — BFS from the entries over the declared edges;
52
- // a skill never reached is read_skill-only (legitimate, but often a mistake).
65
+ // 3. reachability — BFS from the entries over the DETERMINISTIC edges only (8.7.0).
66
+ // A bare `.route(a, b)` compiles to no trigger; `b` keeps `llm-activated` and is
67
+ // reached by a model pick, not by routing. Counting it here reported "reachable"
68
+ // for a skill the graph never activates, which is the question this check exists
69
+ // to answer. Bare-edge targets fall through to `model-edge-only` below.
53
70
  const successors = new Map();
54
71
  for (const r of routes) {
72
+ if (!r.deterministic)
73
+ continue;
55
74
  const list = successors.get(r.fromId);
56
75
  if (list)
57
76
  list.push(r.toId);
@@ -61,6 +80,7 @@ export function checkupGraph(input) {
61
80
  const reached = new Set(entryIds);
62
81
  const queue = [...entryIds];
63
82
  while (queue.length > 0) {
83
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
64
84
  const cur = queue.shift();
65
85
  for (const to of successors.get(cur) ?? []) {
66
86
  if (!reached.has(to)) {
@@ -70,16 +90,110 @@ export function checkupGraph(input) {
70
90
  }
71
91
  }
72
92
  for (const id of skillIds) {
73
- if (!reached.has(id)) {
93
+ if (reached.has(id))
94
+ continue;
95
+ // A bare (model) edge INTO this skill is a declared, drawn way in — just not a
96
+ // deterministic one. Report it as itself rather than as "unreachable", and name
97
+ // the cursor positions the gate will actually grant the jump from: the runtime
98
+ // gate's allowed set is `reachableSkills(cursor)`, which includes every declared
99
+ // successor of the cursor, bare edges included.
100
+ const incoming = routes.filter((r) => r.toId === id);
101
+ const bareSources = dedupe(incoming.filter((r) => !r.deterministic).map((r) => r.fromId));
102
+ // Deterministic edges into an UNREACHED skill necessarily come from skills that are
103
+ // themselves unreached (otherwise the BFS would have arrived). Named rather than
104
+ // omitted: "the way in is a bare route" would be false while one of these exists.
105
+ const deadSources = dedupe(incoming.filter((r) => r.deterministic).map((r) => r.fromId));
106
+ if (bareSources.length > 0) {
74
107
  problems.push({
75
108
  kind: 'warning',
76
- code: 'unreachable-skill',
77
- message: `Skill "${id}" is not reachable from any entry — it can only be reached by the model via read_skill.`,
109
+ code: 'model-edge-only',
110
+ message: `Skill "${id}" is not reachable from any entry over the graph's deterministic edges. ` +
111
+ `The declared way in is ${bareSources.length === 1 ? 'a bare route' : `${bareSources.length} bare routes`} from ${quoteList(bareSources)}, and a bare route compiles to no trigger — so ` +
112
+ `nothing in the graph activates it: the model has to ask for it with read_skill, and ` +
113
+ `the gate grants that only while the cursor is on ${quoteList(bareSources)} (never at ` +
114
+ `cold start).` +
115
+ (deadSources.length > 0
116
+ ? ` (It also has ${deadSources.length === 1
117
+ ? 'a deterministic route'
118
+ : `${deadSources.length} deterministic routes`} in, from ${quoteList(deadSources)} — but nothing reaches ${deadSources.length === 1 ? 'that skill' : 'those skills'} either.)`
119
+ : '') +
120
+ ` Add a \`when\`/\`onToolReturn\` to route there deterministically, or keep the bare ` +
121
+ `edge if a model pick is what you meant.`,
78
122
  skill: id,
123
+ ...(bareSources[0] !== undefined && { from: bareSources[0] }),
79
124
  });
125
+ continue;
126
+ }
127
+ problems.push({
128
+ kind: 'warning',
129
+ code: 'unreachable-skill',
130
+ message: unreachableMessage(id, triggerKinds.get(id)),
131
+ skill: id,
132
+ });
133
+ }
134
+ // 4. multi-entry-fanout (WARNING) — an entry MENU with no way to choose from it.
135
+ // Provable without running a predicate: an entry's compiled trigger is
136
+ // cursor-INDEPENDENT (no `when` → `{ kind: 'always' }`; a `when` → active whenever
137
+ // its own rule matches), so every matching entry is on the wire at once — while
138
+ // exactly ONE of them can be the cursor, the first whose `when` passes. The extras
139
+ // pay tokens on every call and route nothing. `.entryBy()`/`.entryByRead()` exist
140
+ // to make the menu exclusive, which is why this is silent under either.
141
+ if (!exclusiveEntries && entries.length >= 2) {
142
+ const unconditional = entries.filter((e) => !e.conditional).map((e) => e.id);
143
+ problems.push({
144
+ kind: 'warning',
145
+ code: 'multi-entry-fanout',
146
+ message: `The graph declares ${plural(entries.length, 'entry', 'entries')} ` +
147
+ `(${quoteList(entryIds)}) and no way to choose between them, so every entry whose ` +
148
+ `trigger matches is active at once` +
149
+ (unconditional.length > 0
150
+ ? ` — and ${quoteList(unconditional)} ${unconditional.length === 1 ? 'has' : 'have'} no \`when\`, so ${unconditional.length === 1 ? 'it is' : 'they are'} active on ` +
151
+ `every iteration`
152
+ : '') +
153
+ `. Only ONE of them can be the cursor (the first whose \`when\` passes), so the others ` +
154
+ `load their body and tools without routing anything. Rank them with ` +
155
+ `.entryBy(keywordScorer()), let the model choose with .entryByRead(), give the extras a ` +
156
+ `\`when\`, or make them route targets instead of entries.`,
157
+ skill: entryIds[0],
158
+ });
159
+ }
160
+ // 5. dead-entry-step (WARNING) — a transition declared out of an entry the cold-start
161
+ // cursor can never be on. The resolver returns at the FIRST entry with no `when`
162
+ // (declaration order), so every entry after it loses the cold start outright.
163
+ // A warning, not an error: entries are always in the read_skill reachable set, so
164
+ // a model pick can still put the cursor there — the message says so rather than
165
+ // claiming the step is dead.
166
+ if (!exclusiveEntries) {
167
+ const firstUnconditional = entries.findIndex((e) => !e.conditional);
168
+ if (firstUnconditional >= 0) {
169
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
170
+ const winner = entries[firstUnconditional].id;
171
+ for (let i = firstUnconditional + 1; i < entries.length; i++) {
172
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
173
+ const entry = entries[i];
174
+ const outgoing = routes.filter((r) => r.fromId === entry.id && r.deterministic);
175
+ if (outgoing.length === 0)
176
+ continue;
177
+ // A deterministic edge INTO it is a real way for the cursor to arrive, so the
178
+ // step is not stranded at all — say nothing.
179
+ if (routes.some((r) => r.toId === entry.id && r.deterministic))
180
+ continue;
181
+ problems.push({
182
+ kind: 'warning',
183
+ code: 'dead-entry-step',
184
+ message: `Entry "${entry.id}" is declared after "${winner}", which has no \`when\` and ` +
185
+ `therefore always wins the cold-start cursor — so "${entry.id}" can never be the ` +
186
+ `cursor at the start of a turn, and the ${plural(outgoing.length, 'route', 'routes')} out of it (${quoteList(outgoing.map((r) => r.toId))}) can never fire from there. ` +
187
+ `The one remaining path is a read_skill pick onto "${entry.id}" mid-run (entries are ` +
188
+ `always offered), because nothing routes into it either. Reorder the entries, give ` +
189
+ `"${winner}" a \`when\`, or route out of "${winner}" instead.`,
190
+ skill: entry.id,
191
+ from: entry.id,
192
+ });
193
+ }
80
194
  }
81
195
  }
82
- // 4. ambiguous-routes (WARNING) — ≥2 deterministic edges share a source skill with
196
+ // 6. ambiguous-routes (WARNING) — ≥2 deterministic edges share a source skill with
83
197
  // no priority field (there is none yet), so the first by declaration order wins.
84
198
  const deterministicByFrom = new Map();
85
199
  for (const r of routes) {
@@ -96,7 +210,7 @@ export function checkupGraph(input) {
96
210
  });
97
211
  }
98
212
  }
99
- // 5. self-loop (WARNING) — an edge from a skill back to itself (rarely intended).
213
+ // 7. self-loop (WARNING) — an edge from a skill back to itself (rarely intended).
100
214
  for (const r of routes) {
101
215
  if (r.fromId === r.toId) {
102
216
  problems.push({
@@ -110,6 +224,44 @@ export function checkupGraph(input) {
110
224
  }
111
225
  return { ok: !problems.some((p) => p.kind === 'error'), problems };
112
226
  }
227
+ /**
228
+ * The `unreachable-skill` sentence, told per TRIGGER KIND (8.7.0).
229
+ *
230
+ * "It can only be reached by the model via read_skill" is true for an `llm-activated`
231
+ * skill and for no other kind — `Agent.openSkillIds()` admits an open pick only for
232
+ * that trigger. An unwired skill keeps whatever trigger it arrived with
233
+ * (`deriveTrigger` returns null when nothing routes in), so a hand-authored `rule`
234
+ * trigger produced a skill the old sentence described wrongly: read_skill would be
235
+ * refused, and what actually activates it is its own predicate, outside the graph.
236
+ */
237
+ function unreachableMessage(id, kind) {
238
+ const head = `Skill "${id}" is not reachable from any entry over the graph's deterministic edges`;
239
+ if (kind === 'llm-activated' || kind === undefined) {
240
+ // Safe to promise read_skill here. A skill with a deterministic edge into it —
241
+ // even a DEAD one, out of a skill nothing reaches — compiles to a `rule` trigger
242
+ // (`deriveTrigger` returns null only when `incoming` is empty), so it lands in the
243
+ // branch below instead. `llm-activated` and "no incoming deterministic edge" are
244
+ // the same statement here, which is exactly what `openSkillIds()` keys on.
245
+ return `${head} — the model can still open it by name with read_skill (it is an OPEN skill: the agent's gate admits it from any cursor). Wire an edge to it if the graph is meant to route there.`;
246
+ }
247
+ if (kind === 'always') {
248
+ return `${head}, and its trigger is \`always\` — so instead of being routed it loads on EVERY iteration, cursor or no cursor. Make it an \`.entry()\` if that is what you meant, or wire an edge to it.`;
249
+ }
250
+ return `${head}, and its trigger is \`${kind}\`, not \`llm-activated\` — so read_skill cannot open it either (the agent's gate admits an open pick only for \`llm-activated\`). It activates only when its own trigger fires, outside the graph. Wire an edge to it, or drop it from the graph and register it on the agent.`;
251
+ }
252
+ function dedupe(ids) {
253
+ return [...new Set(ids)];
254
+ }
255
+ function plural(n, one, many) {
256
+ return `${n} ${n === 1 ? one : many}`;
257
+ }
258
+ /** `"a"`, `"a" and "b"`, `"a", "b" and "c"` — a list a human reads aloud. */
259
+ function quoteList(ids) {
260
+ const quoted = ids.map((id) => `"${id}"`);
261
+ if (quoted.length <= 1)
262
+ return quoted[0] ?? '';
263
+ return `${quoted.slice(0, -1).join(', ')} and ${quoted[quoted.length - 1]}`;
264
+ }
113
265
  /** Format a check-up for a thrown error / console warning. */
114
266
  export function formatCheckup(checkup) {
115
267
  return checkup.problems.map((p) => ` [${p.kind}] ${p.code}: ${p.message}`).join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"skillGraphCheckup.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraphCheckup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillGraphCheckup.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraphCheckup.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,25 @@
29
29
  * body (what it reads after deciding). That is the same file convention Claude
30
30
  * Code made familiar, so a skill folder is portable between the two.
31
31
  *
32
+ * ── What a SKILL.md can and cannot carry ─────────────────────────────────────
33
+ * `name`, `description`, the body. That is the whole per-file surface, and the
34
+ * limits follow from it rather than from an oversight:
35
+ *
36
+ * - **no `tools`** — a tool is code with an `execute`, and a markdown file has
37
+ * none. Every loaded skill is body-only. To give one tools, define that skill
38
+ * with `defineSkill` and mix the lists (`[...loaded, codeAuthored]`), or put
39
+ * the tools on the route target you declare in code.
40
+ * - **no `autoActivate`** — so a loaded skill never scopes the agent's tool list
41
+ * on its own (it has no tools to scope).
42
+ * - **no per-file `surfaceMode`, `cache` or `refreshPolicy`** — `surfaceMode` is
43
+ * settable for the WHOLE directory via `opts`, all of them or none; the others
44
+ * take `defineSkill`'s defaults.
45
+ * - unknown frontmatter keys are IGNORED, not rejected, so a file carrying
46
+ * another tool's metadata still loads here.
47
+ *
48
+ * A worked example feeding this into a graph:
49
+ * `examples/features/47-skills-from-dir-graph.ts`.
50
+ *
32
51
  * ── Why authorship is decided here, at load time ─────────────────────────────
33
52
  * A Skill body is *instructions to a model*. Where it came from is therefore a
34
53
  * security property, not a convenience: content fetched at run time from
@@ -49,6 +68,11 @@ export interface SkillsFromDirOptions {
49
68
  /**
50
69
  * Override the activation tool name for every loaded skill. Defaults to
51
70
  * `defineSkill`'s own default, `'read_skill'`.
71
+ *
72
+ * @deprecated Since 8.7.0 — see {@link DefineSkillOptions.viaToolName}. Nothing has
73
+ * ever read the field, and mounting a skill that carries another value is now
74
+ * refused, so a directory loaded with this option produces skills no agent will
75
+ * accept. Removed in 9.0.0.
52
76
  */
53
77
  readonly viaToolName?: string;
54
78
  /**
@@ -29,6 +29,25 @@
29
29
  * body (what it reads after deciding). That is the same file convention Claude
30
30
  * Code made familiar, so a skill folder is portable between the two.
31
31
  *
32
+ * ── What a SKILL.md can and cannot carry ─────────────────────────────────────
33
+ * `name`, `description`, the body. That is the whole per-file surface, and the
34
+ * limits follow from it rather than from an oversight:
35
+ *
36
+ * - **no `tools`** — a tool is code with an `execute`, and a markdown file has
37
+ * none. Every loaded skill is body-only. To give one tools, define that skill
38
+ * with `defineSkill` and mix the lists (`[...loaded, codeAuthored]`), or put
39
+ * the tools on the route target you declare in code.
40
+ * - **no `autoActivate`** — so a loaded skill never scopes the agent's tool list
41
+ * on its own (it has no tools to scope).
42
+ * - **no per-file `surfaceMode`, `cache` or `refreshPolicy`** — `surfaceMode` is
43
+ * settable for the WHOLE directory via `opts`, all of them or none; the others
44
+ * take `defineSkill`'s defaults.
45
+ * - unknown frontmatter keys are IGNORED, not rejected, so a file carrying
46
+ * another tool's metadata still loads here.
47
+ *
48
+ * A worked example feeding this into a graph:
49
+ * `examples/features/47-skills-from-dir-graph.ts`.
50
+ *
32
51
  * ── Why authorship is decided here, at load time ─────────────────────────────
33
52
  * A Skill body is *instructions to a model*. Where it came from is therefore a
34
53
  * security property, not a convenience: content fetched at run time from
@@ -1 +1 @@
1
- {"version":3,"file":"skillsFromDir.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillsFromDir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillsFromDir.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillsFromDir.ts"],"names":[],"mappings":"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"}
@@ -128,6 +128,14 @@ export interface InjectionContext {
128
128
  * Set by the loop's cursor-update stage to `graph.nextSkill(ctx)` each
129
129
  * iteration; absent for agents that don't use `skillGraph()`. Plain
130
130
  * `rule`/`always`/`on-tool-return` predicates may ignore it.
131
+ *
132
+ * **Scope: ONE run.** "Persisted across iterations" means across the iterations of
133
+ * a single `agent.run()`. It lives in that run's state, so a second `run()` on the
134
+ * same agent begins cold — at the entry, not at the skill the previous turn ended
135
+ * on. That is deliberate: a skill graph declares how ONE turn is routed, and a
136
+ * cursor that survived would silently make turn 2 start somewhere the author never
137
+ * declared. To carry a position between turns, persist the id in your own store and
138
+ * start the next turn's graph from it.
131
139
  */
132
140
  readonly currentSkillId?: string;
133
141
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAqRH,wEAAwE;AACxE,MAAM,UAAU,sBAAsB,CAAC,GAAc;IACnD,qEAAqE;IACrE,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,IAAI,GAAG,GAAG,CAAC,QAEJ,CAAC;IACd,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAA6C,EAAE,CAAC;QAC7F,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI;YACxB,YAAY,EAAE,IAAI,CAAC,YAA+C;SACnE,CAAC;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAiC;SAC9C,CAAC;QACF,MAAM,EAAE;YACN,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;oBACvB,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA6RH,wEAAwE;AACxE,MAAM,UAAU,sBAAsB,CAAC,GAAc;IACnD,qEAAqE;IACrE,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,IAAI,GAAG,GAAG,CAAC,QAEJ,CAAC;IACd,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAA6C,EAAE,CAAC;QAC7F,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI;YACxB,YAAY,EAAE,IAAI,CAAC,YAA+C;SACnE,CAAC;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAiC;SAC9C,CAAC;QACF,MAAM,EAAE;YACN,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;oBACvB,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -49,7 +49,7 @@
49
49
  */
50
50
  export { staticTools } from './staticTools.js';
51
51
  export { gatedTools } from './gatedTools.js';
52
- export { skillScopedTools } from './skillScopedTools.js';
52
+ export { skillScopedTools, skillScopedToolsTarget, SKILL_SCOPED_TOOLS_ID_PREFIX, } from './skillScopedTools.js';
53
53
  export type { ToolProvider, ToolDispatchContext, ToolGatePredicate } from './types.js';
54
54
  export { mcpClient, mcpServe, mockMcpClient, gatewayTransport, GatewayAuthorizationRequiredError, } from '../lib/mcp/index.js';
55
55
  export type { GatewayTransportOptions, McpCallToolResult, McpClient, McpClientOptions, McpSdkClient, McpTransport, McpStdioTransport, McpHttpTransport, McpGatewayTransport, MockMcpClientOptions, MockMcpTool, McpServeOptions, McpServeHandle, McpServeTransport, McpStdioServeTransport, McpHttpServeTransport, McpSdkServer, } from '../lib/mcp/index.js';
@@ -49,7 +49,10 @@
49
49
  */
50
50
  export { staticTools } from './staticTools.js';
51
51
  export { gatedTools } from './gatedTools.js';
52
- export { skillScopedTools } from './skillScopedTools.js';
52
+ export { skillScopedTools,
53
+ // 8.7.0 — the provider-id convention, readable by anyone composing providers (and
54
+ // by the agent builder, which uses it to name a redundant pairing at build time).
55
+ skillScopedToolsTarget, SKILL_SCOPED_TOOLS_ID_PREFIX, } from './skillScopedTools.js';
53
56
  // Re-export tool sources from the MCP module so consumers find them in
54
57
  // one place. This subpath is the ONLY place `mcpClient` is public — the
55
58
  // top-level barrel does not re-export it.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,uEAAuE;AACvE,wEAAwE;AACxE,0CAA0C;AAC1C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,iCAAiC,GAClC,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB;AAChB,kFAAkF;AAClF,kFAAkF;AAClF,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAG/B,uEAAuE;AACvE,wEAAwE;AACxE,0CAA0C;AAC1C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,iCAAiC,GAClC,MAAM,qBAAqB,CAAC"}
@@ -49,4 +49,8 @@
49
49
  */
50
50
  import type { Tool } from '../core/tools.js';
51
51
  import type { ToolProvider } from './types.js';
52
+ /** The `ToolProvider.id` prefix every `skillScopedTools(...)` carries. */
53
+ export declare const SKILL_SCOPED_TOOLS_ID_PREFIX = "skill-scoped:";
54
+ /** Recover the skill id from a `skillScopedTools` provider id, or `undefined`. */
55
+ export declare function skillScopedToolsTarget(providerId: string | undefined): string | undefined;
52
56
  export declare function skillScopedTools(skillId: string, tools: readonly Tool[]): ToolProvider;
@@ -47,6 +47,16 @@
47
47
  * };
48
48
  * Agent.create({ provider: llm, model }).toolProvider(provider).build();
49
49
  */
50
+ import { isDevMode } from 'footprintjs';
51
+ /** The `ToolProvider.id` prefix every `skillScopedTools(...)` carries. */
52
+ export const SKILL_SCOPED_TOOLS_ID_PREFIX = 'skill-scoped:';
53
+ /** Recover the skill id from a `skillScopedTools` provider id, or `undefined`. */
54
+ export function skillScopedToolsTarget(providerId) {
55
+ if (!providerId?.startsWith(SKILL_SCOPED_TOOLS_ID_PREFIX))
56
+ return undefined;
57
+ const id = providerId.slice(SKILL_SCOPED_TOOLS_ID_PREFIX.length);
58
+ return id.length > 0 ? id : undefined;
59
+ }
50
60
  // #region skillScopedTools
51
61
  export function skillScopedTools(skillId, tools) {
52
62
  if (!skillId || skillId.trim().length === 0) {
@@ -56,12 +66,33 @@ export function skillScopedTools(skillId, tools) {
56
66
  // call (matches the staticTools / gatedTools convention so the
57
67
  // agent's reference-equality check always sees an update).
58
68
  const captured = [...tools];
69
+ // Dev-mode latch: fact 1 above is a one-time lesson, not a per-iteration one.
70
+ let warnedNotByReadSkill = false;
59
71
  return {
60
- id: `skill-scoped:${skillId}`,
72
+ id: `${SKILL_SCOPED_TOOLS_ID_PREFIX}${skillId}`,
61
73
  list(ctx) {
62
74
  // Empty list when the skill is not active.
63
- if (ctx.activeSkillId !== skillId)
75
+ if (ctx.activeSkillId !== skillId) {
76
+ // The silent-empty this provider is most often wired into (8.7.0): the skill
77
+ // IS loaded this iteration — an entry rule matched, or a skillGraph() edge
78
+ // routed into it — but it did not arrive by `read_skill`, and `activeSkillId`
79
+ // only ever reports a `read_skill` activation. Fact 1 in the header says so;
80
+ // nothing said it at the moment it happened, so the tools simply never
81
+ // appeared and the run looked fine. `activeSkillIds` (8.7.0) is the real
82
+ // active set, which is what makes this detectable from inside the provider —
83
+ // composed into a bigger provider or not.
84
+ if (isDevMode() && !warnedNotByReadSkill && ctx.activeSkillIds?.includes(skillId)) {
85
+ warnedNotByReadSkill = true;
86
+ // eslint-disable-next-line no-console
87
+ console.warn(`agentfootprint skillScopedTools('${skillId}'): skill '${skillId}' IS active on ` +
88
+ `iteration ${ctx.iteration}, but it was not activated by read_skill — so ` +
89
+ `ctx.activeSkillId does not name it and this provider returned NO tools. That is ` +
90
+ `what happens to a skill an entry rule or a skillGraph() edge activates. Put the ` +
91
+ `tools on the skill itself (defineSkill({ tools, autoActivate: 'currentSkill' })), ` +
92
+ `or scope on ctx.activeSkillIds, which follows the graph's position.`);
93
+ }
64
94
  return [];
95
+ }
65
96
  return [...captured];
66
97
  },
67
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"skillScopedTools.js","sourceRoot":"","sources":["../../../src/tool-providers/skillScopedTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAKH,2BAA2B;AAC3B,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAsB;IACtE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,kEAAkE;IAClE,+DAA+D;IAC/D,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,OAAO;QACL,EAAE,EAAE,gBAAgB,OAAO,EAAE;QAC7B,IAAI,CAAC,GAAwB;YAC3B,2CAA2C;YAC3C,IAAI,GAAG,CAAC,aAAa,KAAK,OAAO;gBAAE,OAAO,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AACD,8BAA8B"}
1
+ {"version":3,"file":"skillScopedTools.js","sourceRoot":"","sources":["../../../src/tool-providers/skillScopedTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAE5D,kFAAkF;AAClF,MAAM,UAAU,sBAAsB,CAAC,UAA8B;IACnE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,4BAA4B,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACjE,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAsB;IACtE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,kEAAkE;IAClE,+DAA+D;IAC/D,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,8EAA8E;IAC9E,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,OAAO;QACL,EAAE,EAAE,GAAG,4BAA4B,GAAG,OAAO,EAAE;QAC/C,IAAI,CAAC,GAAwB;YAC3B,2CAA2C;YAC3C,IAAI,GAAG,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBAClC,6EAA6E;gBAC7E,2EAA2E;gBAC3E,8EAA8E;gBAC9E,6EAA6E;gBAC7E,uEAAuE;gBACvE,yEAAyE;gBACzE,6EAA6E;gBAC7E,0CAA0C;gBAC1C,IAAI,SAAS,EAAE,IAAI,CAAC,oBAAoB,IAAI,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClF,oBAAoB,GAAG,IAAI,CAAC;oBAC5B,sCAAsC;oBACtC,OAAO,CAAC,IAAI,CACV,oCAAoC,OAAO,cAAc,OAAO,iBAAiB;wBAC/E,aAAa,GAAG,CAAC,SAAS,gDAAgD;wBAC1E,kFAAkF;wBAClF,kFAAkF;wBAClF,oFAAoF;wBACpF,qEAAqE,CACxE,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AACD,8BAA8B"}
@@ -62,8 +62,33 @@ export interface ToolDispatchContext {
62
62
  * The id of the currently-activated Skill, if any.
63
63
  * Set by `read_skill(id)` activation; cleared between turns.
64
64
  * Used by `autoActivate`-driven per-skill tool gating.
65
+ *
66
+ * **This is the last `read_skill` activation, not the graph's position.** It is
67
+ * filled from the tail of `activatedInjectionIds`, which only `read_skill` ever
68
+ * appends to. For "which skills are actually loaded right now", including the ones
69
+ * an entry rule or a `skillGraph()` edge activated, read {@link activeSkillIds}.
65
70
  */
66
71
  readonly activeSkillId?: string;
72
+ /**
73
+ * **Every skill active on this iteration** — the real active set, however each one
74
+ * got there: a `read_skill` activation, an entry rule, a `skillGraph()` route, a
75
+ * decision-tree leaf. Added in 8.7.0.
76
+ *
77
+ * `activeSkillId` answers "what did the model most recently open"; this answers
78
+ * "what is loaded". A provider that wants to follow the graph's POSITION — which
79
+ * `skillScopedTools`' own docs said was impossible — reads this one:
80
+ *
81
+ * ```ts
82
+ * const graphScoped = (id: string, tools: Tool[]): ToolProvider => ({
83
+ * id: `graph-scoped:${id}`,
84
+ * list: (ctx) => (ctx.activeSkillIds?.includes(id) ? tools : []),
85
+ * });
86
+ * ```
87
+ *
88
+ * Optional for forward-compat: a provider written before 8.7.0 sees `undefined` and
89
+ * behaves exactly as it always did.
90
+ */
91
+ readonly activeSkillIds?: readonly string[];
67
92
  /**
68
93
  * Caller identity tuple — passed through from `agent.run({ identity })`.
69
94
  * Permission predicates can role-check based on `identity.principal`
@@ -72,6 +72,7 @@ exports.EVENT_NAMES = {
72
72
  discoveryStarted: 'agentfootprint.tools.discovery_started',
73
73
  discoveryCompleted: 'agentfootprint.tools.discovery_completed',
74
74
  discoveryFailed: 'agentfootprint.tools.discovery_failed',
75
+ shadowed: 'agentfootprint.tools.shadowed',
75
76
  },
76
77
  skill: {
77
78
  activated: 'agentfootprint.skill.activated',
@@ -177,6 +178,7 @@ exports.ALL_EVENT_TYPES = [
177
178
  'agentfootprint.tools.discovery_started',
178
179
  'agentfootprint.tools.discovery_completed',
179
180
  'agentfootprint.tools.discovery_failed',
181
+ 'agentfootprint.tools.shadowed',
180
182
  'agentfootprint.validation.args_invalid',
181
183
  'agentfootprint.skill.activated',
182
184
  'agentfootprint.skill.deactivated',
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/events/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/events/registry.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,22 @@
15
15
  * Add it explicitly: `Agent.create(...).skillGraph(graph).injection(defineRelevanceHint())`.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.defineRelevanceHint = void 0;
18
+ exports.defineRelevanceHint = exports.READS_ENTRY_SCORES_METADATA_KEY = void 0;
19
+ /**
20
+ * The metadata marker that says "this injection reads `ctx.entryScores`" (8.7.0).
21
+ *
22
+ * Only `.entryBy()` / `.entryByRelevance()` ever write `entryScores` — the PickEntry
23
+ * stage runs a scorer and stamps them. Mounted on a graph with no scorer, the hint's
24
+ * trigger simply can never be true, and nothing said so: the injection registered,
25
+ * evaluated false on every iteration for the life of the agent, and the author saw a
26
+ * feature that was configured and inert.
27
+ *
28
+ * A marker rather than an id match, because the id is the caller's to choose
29
+ * (`defineRelevanceHint({ id })`) — matching on `'relevance-hint'` would miss every
30
+ * renamed one and would false-positive on anybody else's injection of that name.
31
+ * `AgentBuilder.build()` reads it and dev-warns.
32
+ */
33
+ exports.READS_ENTRY_SCORES_METADATA_KEY = 'readsEntryScores';
19
34
  /** Is the top entry a near-tie with the runner-up? */
20
35
  function isNearTie(scores, threshold) {
21
36
  if (!scores || scores.length < 2)
@@ -33,6 +48,7 @@ function defineRelevanceHint(options = {}) {
33
48
  kind: 'rule',
34
49
  activeWhen: (ctx) => ctx.iteration === 1 && isNearTie(ctx.entryScores, threshold),
35
50
  },
51
+ metadata: { [exports.READS_ENTRY_SCORES_METADATA_KEY]: true },
36
52
  inject: {
37
53
  systemPrompt: 'Note: an offline relevance scorer found two or more starting skills nearly tied for ' +
38
54
  'this request. That scorer only matches description keywords and cannot see the ' +
@@ -1 +1 @@
1
- {"version":3,"file":"defineRelevanceHint.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineRelevanceHint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAcH,sDAAsD;AACtD,SAAS,SAAS,CAAC,MAAuC,EAAE,SAAiB;IAC3E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,SAAS,CAAC;AACjE,CAAC;AAED,SAAgB,mBAAmB,CAAC,UAAgC,EAAE;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,gBAAgB;QAClC,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,8EAA8E;QAC3F,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;SAClF;QACD,MAAM,EAAE;YACN,YAAY,EACV,sFAAsF;gBACtF,iFAAiF;gBACjF,sFAAsF;gBACtF,uFAAuF;gBACvF,uBAAuB;SAC1B;KACF,CAAC;AACJ,CAAC;AAnBD,kDAmBC"}
1
+ {"version":3,"file":"defineRelevanceHint.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineRelevanceHint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAcH;;;;;;;;;;;;;GAaG;AACU,QAAA,+BAA+B,GAAG,kBAA2B,CAAC;AAE3E,sDAAsD;AACtD,SAAS,SAAS,CAAC,MAAuC,EAAE,SAAiB;IAC3E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,GAAG,SAAS,CAAC;AACjE,CAAC;AAED,SAAgB,mBAAmB,CAAC,UAAgC,EAAE;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,gBAAgB;QAClC,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,8EAA8E;QAC3F,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;SAClF;QACD,QAAQ,EAAE,EAAE,CAAC,uCAA+B,CAAC,EAAE,IAAI,EAAE;QACrD,MAAM,EAAE;YACN,YAAY,EACV,sFAAsF;gBACtF,iFAAiF;gBACjF,sFAAsF;gBACtF,uFAAuF;gBACvF,uBAAuB;SAC1B;KACF,CAAC;AACJ,CAAC;AApBD,kDAoBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defineSkill.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAIH,4EAAwE;AA0HxE;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,KAAc;IACjE,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;QACtB,2CAA2C;QAC3C,4CAA4C;QAC5C,+EAA+E;QAC/E,gFAAgF;QAChF,IAAI,KAAK,IAAI,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3F,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAbD,gDAaC;AAED,SAAgB,WAAW,CAAC,IAAwB;IAClD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,CAAC,EAAE,0EAA0E,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,OAAgB;QACxB,OAAO,EAAE;YACP,IAAI,EAAE,eAAwB;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,YAAY;SAC9C;QACD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAClE;QACD,iEAAiE;QACjE,oEAAoE;QACpE,iEAAiE;QACjE,mCAAmC;QACnC,EAAE;QACF,iEAAiE;QACjE,iEAAiE;QACjE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,MAAM;YACvC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7D,KAAK,EAAE,IAAA,wCAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;SAC/C,CAAC;KACH,CAAyB,CAAC;AAC7B,CAAC;AAtCD,kCAsCC"}
1
+ {"version":3,"file":"defineSkill.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAIH,4EAAwE;AAmIxE;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,KAAc;IACjE,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;QACtB,2CAA2C;QAC3C,4CAA4C;QAC5C,+EAA+E;QAC/E,gFAAgF;QAChF,IAAI,KAAK,IAAI,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3F,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAbD,gDAaC;AAED,SAAgB,WAAW,CAAC,IAAwB;IAClD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,CAAC,EAAE,0EAA0E,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,OAAgB;QACxB,OAAO,EAAE;YACP,IAAI,EAAE,eAAwB;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,YAAY;SAC9C;QACD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAClE;QACD,iEAAiE;QACjE,oEAAoE;QACpE,iEAAiE;QACjE,mCAAmC;QACnC,EAAE;QACF,iEAAiE;QACjE,iEAAiE;QACjE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,MAAM;YACvC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7D,KAAK,EAAE,IAAA,wCAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;SAC/C,CAAC;KACH,CAAyB,CAAC;AAC7B,CAAC;AAtCD,kCAsCC"}