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