agentfootprint 8.5.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.
- package/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +1 -1
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/core/Agent.js +62 -1
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/RunnerBase.js +7 -1
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +104 -0
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +136 -5
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +77 -0
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +15 -0
- package/dist/esm/core/Agent.js +62 -1
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/RunnerBase.js +7 -1
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.js +104 -0
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +35 -0
- package/dist/esm/core/agent/stages/toolCalls.js +136 -5
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +26 -0
- package/dist/esm/core/slots/buildToolsSlot.js +78 -1
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +29 -0
- package/dist/esm/events/registry.d.ts +3 -1
- package/dist/esm/events/registry.js +2 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/identity/CredentialConsentRequiredError.d.ts +63 -0
- package/dist/esm/identity/CredentialConsentRequiredError.js +65 -0
- package/dist/esm/identity/CredentialConsentRequiredError.js.map +1 -0
- package/dist/esm/identity/consent.d.ts +81 -0
- package/dist/esm/identity/consent.js +85 -0
- package/dist/esm/identity/consent.js.map +1 -0
- package/dist/esm/identity.d.ts +2 -0
- package/dist/esm/identity.js +1 -0
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/lib/injection-engine/factories/defineRelevanceHint.d.ts +15 -0
- package/dist/esm/lib/injection-engine/factories/defineRelevanceHint.js +16 -0
- package/dist/esm/lib/injection-engine/factories/defineRelevanceHint.js.map +1 -1
- package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +9 -0
- package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/esm/lib/injection-engine/index.d.ts +3 -3
- package/dist/esm/lib/injection-engine/index.js +8 -3
- package/dist/esm/lib/injection-engine/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillContract.d.ts +25 -2
- package/dist/esm/lib/injection-engine/skillContract.js +11 -4
- package/dist/esm/lib/injection-engine/skillContract.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraph.d.ts +65 -4
- package/dist/esm/lib/injection-engine/skillGraph.js +36 -11
- package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraphCheckup.d.ts +47 -7
- package/dist/esm/lib/injection-engine/skillGraphCheckup.js +165 -13
- package/dist/esm/lib/injection-engine/skillGraphCheckup.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +24 -0
- package/dist/esm/lib/injection-engine/skillsFromDir.js +19 -0
- package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/esm/lib/injection-engine/types.d.ts +8 -0
- package/dist/esm/lib/injection-engine/types.js.map +1 -1
- package/dist/esm/lib/mcp/mcpServe.js +11 -1
- package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
- package/dist/esm/tool-providers/index.d.ts +1 -1
- package/dist/esm/tool-providers/index.js +4 -1
- package/dist/esm/tool-providers/index.js.map +1 -1
- package/dist/esm/tool-providers/skillScopedTools.d.ts +4 -0
- package/dist/esm/tool-providers/skillScopedTools.js +33 -2
- package/dist/esm/tool-providers/skillScopedTools.js.map +1 -1
- package/dist/esm/tool-providers/types.d.ts +25 -0
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/identity/CredentialConsentRequiredError.js +69 -0
- package/dist/identity/CredentialConsentRequiredError.js.map +1 -0
- package/dist/identity/consent.js +91 -0
- package/dist/identity/consent.js.map +1 -0
- package/dist/identity.js +3 -1
- package/dist/identity.js.map +1 -1
- package/dist/lib/injection-engine/factories/defineRelevanceHint.js +17 -1
- package/dist/lib/injection-engine/factories/defineRelevanceHint.js.map +1 -1
- package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/lib/injection-engine/index.js +7 -1
- package/dist/lib/injection-engine/index.js.map +1 -1
- package/dist/lib/injection-engine/skillContract.js +11 -4
- package/dist/lib/injection-engine/skillContract.js.map +1 -1
- package/dist/lib/injection-engine/skillGraph.js +37 -11
- package/dist/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/lib/injection-engine/skillGraphCheckup.js +165 -13
- package/dist/lib/injection-engine/skillGraphCheckup.js.map +1 -1
- package/dist/lib/injection-engine/skillsFromDir.js +19 -0
- package/dist/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/lib/injection-engine/types.js.map +1 -1
- package/dist/lib/mcp/mcpServe.js +11 -1
- package/dist/lib/mcp/mcpServe.js.map +1 -1
- package/dist/tool-providers/index.js +5 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/tool-providers/skillScopedTools.js +35 -3
- package/dist/tool-providers/skillScopedTools.js.map +1 -1
- package/dist/types/core/Agent.d.ts +15 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +35 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +26 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +29 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +3 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/identity/CredentialConsentRequiredError.d.ts +64 -0
- package/dist/types/identity/CredentialConsentRequiredError.d.ts.map +1 -0
- package/dist/types/identity/consent.d.ts +82 -0
- package/dist/types/identity/consent.d.ts.map +1 -0
- package/dist/types/identity.d.ts +2 -0
- package/dist/types/identity.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/factories/defineRelevanceHint.d.ts +15 -0
- package/dist/types/lib/injection-engine/factories/defineRelevanceHint.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +9 -0
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/index.d.ts +3 -3
- package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillContract.d.ts +25 -2
- package/dist/types/lib/injection-engine/skillContract.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraph.d.ts +65 -4
- package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts +47 -7
- package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts +24 -0
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/types.d.ts +8 -0
- package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
- package/dist/types/tool-providers/index.d.ts +1 -1
- package/dist/types/tool-providers/index.d.ts.map +1 -1
- package/dist/types/tool-providers/skillScopedTools.d.ts +4 -0
- package/dist/types/tool-providers/skillScopedTools.d.ts.map +1 -1
- package/dist/types/tool-providers/types.d.ts +25 -0
- package/dist/types/tool-providers/types.d.ts.map +1 -1
- 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
|
-
* `
|
|
13
|
-
*
|
|
14
|
-
*
|
|
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,
|
|
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 (
|
|
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.
|
|
52
|
-
// a
|
|
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 (
|
|
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: '
|
|
77
|
-
message: `Skill "${id}" is not reachable from any entry
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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":"AAAA
|
|
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":"AAAA
|
|
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;
|
|
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"}
|
|
@@ -268,9 +268,19 @@ async function buildExecutionContext(tool, toolCallId, wiring) {
|
|
|
268
268
|
});
|
|
269
269
|
// Fail-closed, mirroring the Agent's tool-call stage: a tool that
|
|
270
270
|
// asked for a credential never runs without one.
|
|
271
|
+
//
|
|
272
|
+
// The consent URL is NOT returned (8.6.0). Out here there is no run to
|
|
273
|
+
// pause and no caller to hand a `PendingAsk` — the only channel is the MCP
|
|
274
|
+
// tool result, which lands in some other agent's transcript, across a
|
|
275
|
+
// process boundary this library has no record of and no reach into. That
|
|
276
|
+
// is the widest possible audience for a bearer capability carrying a
|
|
277
|
+
// session-correlating `state`, so the client is told WHAT is missing and
|
|
278
|
+
// WHO can fix it, and the URL stays with the operator of this server.
|
|
271
279
|
if (resolved.status !== 'issued') {
|
|
272
280
|
return {
|
|
273
|
-
blocked: `authorization required for '${need.credential}':
|
|
281
|
+
blocked: `authorization required for '${need.credential}': a person must consent ` +
|
|
282
|
+
`before this tool can run. The consent link is not returned over MCP — ` +
|
|
283
|
+
`ask the operator of this server to authorize '${need.credential}'.`,
|
|
274
284
|
};
|
|
275
285
|
}
|
|
276
286
|
credential = resolved.credential;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpServe.js","sourceRoot":"","sources":["../../../../src/lib/mcp/mcpServe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcpServe.js","sourceRoot":"","sources":["../../../../src/lib/mcp/mcpServe.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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,
|
|
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:
|
|
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;
|
|
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`
|