agentfootprint 9.32.0 → 9.34.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/dist/adapters/hosting/firestoreSessions.js +813 -0
- package/dist/adapters/hosting/firestoreSessions.js.map +1 -0
- package/dist/core/agent/buildToolRegistry.js +1 -1
- package/dist/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/core/agent/toolEffects.js +4 -10
- package/dist/core/agent/toolEffects.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +2 -1
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/doors/skill-graph.js +109 -0
- package/dist/doors/skill-graph.js.map +1 -0
- package/dist/esm/adapters/hosting/firestoreSessions.d.ts +474 -0
- package/dist/esm/adapters/hosting/firestoreSessions.js +803 -0
- package/dist/esm/adapters/hosting/firestoreSessions.js.map +1 -0
- package/dist/esm/core/agent/buildToolRegistry.js +2 -2
- package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/esm/core/agent/toolEffects.d.ts +15 -7
- package/dist/esm/core/agent/toolEffects.js +2 -9
- package/dist/esm/core/agent/toolEffects.js.map +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js +2 -1
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/doors/skill-graph.d.ts +70 -0
- package/dist/esm/doors/skill-graph.js +77 -0
- package/dist/esm/doors/skill-graph.js.map +1 -0
- package/dist/esm/hosting-providers.d.ts +22 -0
- package/dist/esm/hosting-providers.js +27 -0
- package/dist/esm/hosting-providers.js.map +1 -1
- package/dist/esm/lib/injection-engine/devWarn.d.ts +47 -0
- package/dist/esm/lib/injection-engine/devWarn.js +57 -0
- package/dist/esm/lib/injection-engine/devWarn.js.map +1 -0
- package/dist/esm/lib/injection-engine/devWarnHost.d.ts +16 -0
- package/dist/esm/lib/injection-engine/devWarnHost.js +19 -0
- package/dist/esm/lib/injection-engine/devWarnHost.js.map +1 -0
- package/dist/esm/lib/injection-engine/hostContract.d.ts +211 -0
- package/dist/esm/lib/injection-engine/hostContract.js +37 -0
- package/dist/esm/lib/injection-engine/hostContract.js.map +1 -0
- package/dist/esm/lib/injection-engine/index.d.ts +7 -2
- package/dist/esm/lib/injection-engine/index.js +18 -2
- package/dist/esm/lib/injection-engine/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraph.d.ts +3 -2
- package/dist/esm/lib/injection-engine/skillGraph.js +7 -12
- package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillIntent.js +4 -7
- package/dist/esm/lib/injection-engine/skillIntent.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillSteps.d.ts +18 -10
- package/dist/esm/lib/injection-engine/skillSteps.js +17 -12
- package/dist/esm/lib/injection-engine/skillSteps.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillToolDescriptors.d.ts +119 -0
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js +182 -0
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -0
- package/dist/esm/lib/injection-engine/skillTools.d.ts +41 -79
- package/dist/esm/lib/injection-engine/skillTools.js +61 -137
- package/dist/esm/lib/injection-engine/skillTools.js.map +1 -1
- package/dist/esm/lib/injection-engine/toolOutcome.d.ts +30 -0
- package/dist/esm/lib/injection-engine/toolOutcome.js +31 -0
- package/dist/esm/lib/injection-engine/toolOutcome.js.map +1 -0
- package/dist/esm/lib/injection-engine/types.d.ts +38 -14
- package/dist/esm/lib/injection-engine/types.js.map +1 -1
- package/dist/hosting-providers.js +34 -1
- package/dist/hosting-providers.js.map +1 -1
- package/dist/lib/injection-engine/devWarn.js +63 -0
- package/dist/lib/injection-engine/devWarn.js.map +1 -0
- package/dist/lib/injection-engine/devWarnHost.js +21 -0
- package/dist/lib/injection-engine/devWarnHost.js.map +1 -0
- package/dist/lib/injection-engine/hostContract.js +38 -0
- package/dist/lib/injection-engine/hostContract.js.map +1 -0
- package/dist/lib/injection-engine/index.js +23 -2
- package/dist/lib/injection-engine/index.js.map +1 -1
- package/dist/lib/injection-engine/skillGraph.js +7 -12
- package/dist/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/lib/injection-engine/skillIntent.js +4 -7
- package/dist/lib/injection-engine/skillIntent.js.map +1 -1
- package/dist/lib/injection-engine/skillSteps.js +19 -14
- package/dist/lib/injection-engine/skillSteps.js.map +1 -1
- package/dist/lib/injection-engine/skillToolDescriptors.js +187 -0
- package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -0
- package/dist/lib/injection-engine/skillTools.js +63 -138
- package/dist/lib/injection-engine/skillTools.js.map +1 -1
- package/dist/lib/injection-engine/toolOutcome.js +34 -0
- package/dist/lib/injection-engine/toolOutcome.js.map +1 -0
- package/dist/lib/injection-engine/types.js.map +1 -1
- package/dist/types/adapters/hosting/firestoreSessions.d.ts +475 -0
- package/dist/types/adapters/hosting/firestoreSessions.d.ts.map +1 -0
- package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
- package/dist/types/core/agent/toolEffects.d.ts +15 -7
- package/dist/types/core/agent/toolEffects.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/doors/skill-graph.d.ts +71 -0
- package/dist/types/doors/skill-graph.d.ts.map +1 -0
- package/dist/types/hosting-providers.d.ts +22 -0
- package/dist/types/hosting-providers.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/devWarn.d.ts +48 -0
- package/dist/types/lib/injection-engine/devWarn.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/devWarnHost.d.ts +17 -0
- package/dist/types/lib/injection-engine/devWarnHost.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/hostContract.d.ts +212 -0
- package/dist/types/lib/injection-engine/hostContract.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/index.d.ts +7 -2
- package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraph.d.ts +3 -2
- package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillIntent.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillSteps.d.ts +18 -10
- package/dist/types/lib/injection-engine/skillSteps.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts +120 -0
- package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/skillTools.d.ts +41 -79
- package/dist/types/lib/injection-engine/skillTools.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/toolOutcome.d.ts +31 -0
- package/dist/types/lib/injection-engine/toolOutcome.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/types.d.ts +38 -14
- package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
- package/package.json +20 -2
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* declarations `skillGraph.ts` hands it; imports no engine machinery beyond
|
|
11
11
|
* the injection-context type.
|
|
12
12
|
*/
|
|
13
|
-
import { isDevMode } from 'footprintjs';
|
|
14
13
|
import { validateIntentScores } from './intentScorer.js';
|
|
14
|
+
import { devWarn } from './devWarn.js';
|
|
15
15
|
import { decideTier2 } from './routingPolicy.js';
|
|
16
16
|
/** Build the plan. `describeFor` resolves a skill id to its description (the
|
|
17
17
|
* incumbent's fallback intent text). */
|
|
@@ -44,12 +44,9 @@ export function buildTurnRoutingPlan(input) {
|
|
|
44
44
|
return { id: e.id, ...(witness !== undefined && { witness }) };
|
|
45
45
|
}
|
|
46
46
|
catch (err) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
`turn-start cascade — treated as no-match. Predicates must be pure + total. ` +
|
|
51
|
-
`${err instanceof Error ? err.message : String(err)}`);
|
|
52
|
-
}
|
|
47
|
+
devWarn(`agentfootprint skillGraph: entry "${e.id}" predicate threw during the ` +
|
|
48
|
+
`turn-start cascade — treated as no-match. Predicates must be pure + total. ` +
|
|
49
|
+
`${err instanceof Error ? err.message : String(err)}`);
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
52
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillIntent.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillIntent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"skillIntent.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillIntent.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
* `[]` = the feature is on and no procedure is active; the key is absent
|
|
39
39
|
* entirely on agents with no stepped skill (zero-cost-when-unused).
|
|
40
40
|
*/
|
|
41
|
-
import type {
|
|
41
|
+
import type { SkillToolDescriptor } from './hostContract.js';
|
|
42
42
|
import type { Injection } from './types.js';
|
|
43
43
|
/** One step of a declared procedure. */
|
|
44
44
|
export interface SkillStep {
|
|
@@ -160,16 +160,24 @@ export declare function rekeyStepPointer(args: {
|
|
|
160
160
|
readonly stepPlanFor: StepPlanFor;
|
|
161
161
|
}): StepPointerCarrier;
|
|
162
162
|
/**
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
163
|
+
* DESCRIBE the `skip_step` tool — name, schema, and the placeholder result.
|
|
164
|
+
*
|
|
165
|
+
* A description, not a tool: this module owns every sentence the model reads
|
|
166
|
+
* about a procedure, and that includes this one, but building the framework's
|
|
167
|
+
* tool object would mean importing the framework's tool factory into the
|
|
168
|
+
* grammar. `skillTools.ts#buildSkipStepTool` does the wrapping (9.34.0).
|
|
169
|
+
*
|
|
170
|
+
* The tool is auto-attached to the dispatch registry when ≥1 registered skill
|
|
171
|
+
* declares steps (the `read_skill` auto-attach seam) — always dispatchable,
|
|
172
|
+
* but OFFERED (schema in the request) only while a stepped tenure is active
|
|
173
|
+
* and unfinished. Its execute returns a placeholder; the tool-calls stage
|
|
174
|
+
* overwrites the model-visible result with the authoritative sentence,
|
|
175
|
+
* exactly as the skill-graph gate overwrites `read_skill` refusals —
|
|
176
|
+
* bookkeeping lives where the batch order lives.
|
|
171
177
|
*/
|
|
172
|
-
export declare function
|
|
178
|
+
export declare function skipStepDescriptor(): SkillToolDescriptor<{
|
|
179
|
+
reason: string;
|
|
180
|
+
}, string>;
|
|
173
181
|
/** `[Step 3 of 6 — <note>] ` — prefixed onto the current step's tool
|
|
174
182
|
* description in the offer (a rebuilt schema copy, substituted by name). */
|
|
175
183
|
export declare function stepBannerPrefix(ptr: StepPointer, step: SkillStep): string;
|
|
@@ -38,7 +38,6 @@
|
|
|
38
38
|
* `[]` = the feature is on and no procedure is active; the key is absent
|
|
39
39
|
* entirely on agents with no stepped skill (zero-cost-when-unused).
|
|
40
40
|
*/
|
|
41
|
-
import { defineTool } from '../../core/tools.js';
|
|
42
41
|
import { assertArtifactVocabulary } from './skillVocabulary.js';
|
|
43
42
|
/** The integrity tool's reserved name. Auto-attached (dispatchable) when
|
|
44
43
|
* ≥1 registered skill declares steps; OFFERED only while a stepped tenure
|
|
@@ -168,17 +167,23 @@ export function rekeyStepPointer(args) {
|
|
|
168
167
|
}
|
|
169
168
|
// ─── The skip_step integrity tool ─────────────────────────────────────
|
|
170
169
|
/**
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
170
|
+
* DESCRIBE the `skip_step` tool — name, schema, and the placeholder result.
|
|
171
|
+
*
|
|
172
|
+
* A description, not a tool: this module owns every sentence the model reads
|
|
173
|
+
* about a procedure, and that includes this one, but building the framework's
|
|
174
|
+
* tool object would mean importing the framework's tool factory into the
|
|
175
|
+
* grammar. `skillTools.ts#buildSkipStepTool` does the wrapping (9.34.0).
|
|
176
|
+
*
|
|
177
|
+
* The tool is auto-attached to the dispatch registry when ≥1 registered skill
|
|
178
|
+
* declares steps (the `read_skill` auto-attach seam) — always dispatchable,
|
|
179
|
+
* but OFFERED (schema in the request) only while a stepped tenure is active
|
|
180
|
+
* and unfinished. Its execute returns a placeholder; the tool-calls stage
|
|
181
|
+
* overwrites the model-visible result with the authoritative sentence,
|
|
182
|
+
* exactly as the skill-graph gate overwrites `read_skill` refusals —
|
|
183
|
+
* bookkeeping lives where the batch order lives.
|
|
179
184
|
*/
|
|
180
|
-
export function
|
|
181
|
-
return
|
|
185
|
+
export function skipStepDescriptor() {
|
|
186
|
+
return {
|
|
182
187
|
name: SKIP_STEP_TOOL_NAME,
|
|
183
188
|
description: 'Skip the current step of the active skill procedure, with the reason on the record. ' +
|
|
184
189
|
'Use it when the step cannot or should not run for this input.',
|
|
@@ -196,7 +201,7 @@ export function buildSkipStepTool() {
|
|
|
196
201
|
execute: () => 'skip_step noted. (Raw placeholder — the agent loop replaces this result with the ' +
|
|
197
202
|
'authoritative step record; reading it verbatim means the runner that dispatched ' +
|
|
198
203
|
'skip_step does not track step procedures.)',
|
|
199
|
-
}
|
|
204
|
+
};
|
|
200
205
|
}
|
|
201
206
|
// ─── Every sentence the model reads ───────────────────────────────────
|
|
202
207
|
/** `[Step 3 of 6 — <note>] ` — prefixed onto the current step's tool
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillSteps.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillSteps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;
|
|
1
|
+
{"version":3,"file":"skillSteps.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillSteps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* skillToolDescriptors — the graph DESCRIBING the tools it needs (9.34.0).
|
|
3
|
+
*
|
|
4
|
+
* `read_skill` is not an ordinary tool. It is how the model asks to move the
|
|
5
|
+
* skill-graph cursor: its enum is the catalog, its description is the offer
|
|
6
|
+
* (what is reachable from here, what will be refused, what this turn's menu
|
|
7
|
+
* proposes), and its result is what the model reads about the skill it just
|
|
8
|
+
* activated. Every one of those sentences is the GRAPH's to write.
|
|
9
|
+
*
|
|
10
|
+
* What the graph must NOT do is construct a framework's tool object. That is
|
|
11
|
+
* why this module produces {@link SkillToolDescriptor} POJOs — name,
|
|
12
|
+
* description, input schema, a pure `execute` — and `skillTools.ts` (the host
|
|
13
|
+
* adapter) is the one line that turns each into an agentfootprint `Tool` with
|
|
14
|
+
* `defineTool`. A host on another framework calls the same functions and
|
|
15
|
+
* wraps the result in its own tool type instead.
|
|
16
|
+
*
|
|
17
|
+
* ONE catalog, ONE grammar: the Agent's auto-attach path, `SkillRegistry`
|
|
18
|
+
* and any foreign host all read the descriptions from here, so they cannot
|
|
19
|
+
* drift the way a second hand-written `read_skill` would.
|
|
20
|
+
*
|
|
21
|
+
* Zone: PURE CORE. Pinned by
|
|
22
|
+
* `test/lib/injection-engine/skill-graph-fence.test.ts`.
|
|
23
|
+
*/
|
|
24
|
+
import type { SkillToolDescriptor } from './hostContract.js';
|
|
25
|
+
import type { Injection } from './types.js';
|
|
26
|
+
/**
|
|
27
|
+
* What the gate will ACTUALLY grant right now — the ids `read_skill` should be
|
|
28
|
+
* offering, as opposed to the ids it can dispatch (8.5.0).
|
|
29
|
+
*
|
|
30
|
+
* Without this the tool enumerated every registered skill while the skill-graph gate
|
|
31
|
+
* admitted only `reachableSkills(cursor) ∪ open`, so a route target the cursor cannot
|
|
32
|
+
* reach was advertised on every iteration and refused on every call. The model was
|
|
33
|
+
* being asked to choose from a menu the library knew it would reject.
|
|
34
|
+
*/
|
|
35
|
+
export interface ReadSkillOffer {
|
|
36
|
+
/**
|
|
37
|
+
* Ids the gate will grant from the current cursor. Omit when there is no
|
|
38
|
+
* graph — then the description is the plain catalog it has always been,
|
|
39
|
+
* minus anything {@link ReadSkillOffer.hiddenIds} removes.
|
|
40
|
+
*/
|
|
41
|
+
readonly grantable?: readonly string[];
|
|
42
|
+
/** Say the rest are refusable rather than hiding them. Hiding a skill it can see
|
|
43
|
+
* in `list_skills` (and in the enum) would just move the confusion; naming the
|
|
44
|
+
* boundary lets the model route around it in one step instead of guessing. */
|
|
45
|
+
readonly showRefusable?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Ids removed from the description ENTIRELY — not listed as reachable, not
|
|
48
|
+
* listed as refusable, not named at all (9.11.0).
|
|
49
|
+
*
|
|
50
|
+
* The opposite treatment from the graph's `shut` set above, and deliberately
|
|
51
|
+
* so. A graph refusal is about WHERE THE CURSOR IS: the skill exists for this
|
|
52
|
+
* caller, it is simply not reachable from here, so naming it lets the model
|
|
53
|
+
* route to it in one step. A hidden skill is about WHO IS ASKING: no cursor
|
|
54
|
+
* move makes it available, and naming it would tell a role about a capability
|
|
55
|
+
* it will never be allowed to use — leaking the shape of somebody else's
|
|
56
|
+
* permissions into this model's prompt.
|
|
57
|
+
*
|
|
58
|
+
* The ENUM keeps the full catalog either way (see below). Narrowing it would
|
|
59
|
+
* turn a policy refusal into a generic schema error, and the model would
|
|
60
|
+
* never read the policy's own message.
|
|
61
|
+
*/
|
|
62
|
+
readonly hiddenIds?: readonly string[];
|
|
63
|
+
/**
|
|
64
|
+
* Turn-start MENU (SG-C): when set, the description LEADS with these
|
|
65
|
+
* candidates (id + one-line description; advisory relevance %s beside
|
|
66
|
+
* near-tie candidates), names the cursor, and states STAY as a first-class
|
|
67
|
+
* option ("answer without calling read_skill to stay in '<cursor>'").
|
|
68
|
+
*
|
|
69
|
+
* Set only while the turn's menu verdict is outstanding (turn start, before
|
|
70
|
+
* any accepted pick) — the tools slot reads it off the SAME verdict the
|
|
71
|
+
* record carries, so the offer can never drift from `turn_routed.offered`.
|
|
72
|
+
* The enum stays the full catalog (the 8.5.0 law below — narrowing it would
|
|
73
|
+
* retire four honesty mechanisms), and {@link ReadSkillOffer.hiddenIds}
|
|
74
|
+
* filters menu rows exactly as it filters every other list: a role-hidden
|
|
75
|
+
* skill is never NAMED, menu or no menu.
|
|
76
|
+
*/
|
|
77
|
+
readonly menu?: {
|
|
78
|
+
readonly candidates: ReadonlyArray<{
|
|
79
|
+
readonly id: string;
|
|
80
|
+
readonly relevance?: number;
|
|
81
|
+
}>;
|
|
82
|
+
/** Names the cursor the STAY sentence refers to ("you are in billing"). */
|
|
83
|
+
readonly cursorId?: string;
|
|
84
|
+
/** STAY spelled out as a first-class option (mid-conversation menus). */
|
|
85
|
+
readonly stay?: boolean;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Describe the `list_skills` tool — a no-arg tool that returns the registered
|
|
90
|
+
* skills as `{ id, description }[]`. Lets the LLM discover skills without
|
|
91
|
+
* paying the prompt-token cost of embedding the catalog into every system
|
|
92
|
+
* prompt.
|
|
93
|
+
*
|
|
94
|
+
* Pairs with {@link readSkillDescriptor} (which actually activates a skill by
|
|
95
|
+
* id). Returns `undefined` when there are no skills — a tool offering an
|
|
96
|
+
* empty catalog is noise.
|
|
97
|
+
*/
|
|
98
|
+
export declare function listSkillsDescriptor(skills: readonly Injection[]): SkillToolDescriptor<Record<string, never>, string> | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Describe the `read_skill` tool — THE cursor door. The LLM picks WHICH skill
|
|
101
|
+
* via the `id` argument; the host's loop is what turns an accepted pick into a
|
|
102
|
+
* cursor move (see `SkillGraphHost`, obligations 2 and 3).
|
|
103
|
+
*
|
|
104
|
+
* `execute` returns a confirmation string, or the skill body verbatim for the
|
|
105
|
+
* `'tool-only'` / `'both'` surface modes (recency-first delivery). The actual
|
|
106
|
+
* bookkeeping — appending the requested id to the activated set, gating it
|
|
107
|
+
* against `reachableSkills`, publishing the accepted pick — is the HOST's,
|
|
108
|
+
* because only the host sees the tool call.
|
|
109
|
+
*
|
|
110
|
+
* Pass `offer` to scope the DESCRIPTION to what the graph's gate will actually
|
|
111
|
+
* grant from the current cursor (8.5.0); the enum stays the full catalog
|
|
112
|
+
* either way. Omit it and the description is byte-identical to the plain
|
|
113
|
+
* catalog it has always been.
|
|
114
|
+
*
|
|
115
|
+
* Returns `undefined` when there are no skills.
|
|
116
|
+
*/
|
|
117
|
+
export declare function readSkillDescriptor(skills: readonly Injection[], offer?: ReadSkillOffer): SkillToolDescriptor<{
|
|
118
|
+
id: string;
|
|
119
|
+
}, string> | undefined;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* skillToolDescriptors — the graph DESCRIBING the tools it needs (9.34.0).
|
|
3
|
+
*
|
|
4
|
+
* `read_skill` is not an ordinary tool. It is how the model asks to move the
|
|
5
|
+
* skill-graph cursor: its enum is the catalog, its description is the offer
|
|
6
|
+
* (what is reachable from here, what will be refused, what this turn's menu
|
|
7
|
+
* proposes), and its result is what the model reads about the skill it just
|
|
8
|
+
* activated. Every one of those sentences is the GRAPH's to write.
|
|
9
|
+
*
|
|
10
|
+
* What the graph must NOT do is construct a framework's tool object. That is
|
|
11
|
+
* why this module produces {@link SkillToolDescriptor} POJOs — name,
|
|
12
|
+
* description, input schema, a pure `execute` — and `skillTools.ts` (the host
|
|
13
|
+
* adapter) is the one line that turns each into an agentfootprint `Tool` with
|
|
14
|
+
* `defineTool`. A host on another framework calls the same functions and
|
|
15
|
+
* wraps the result in its own tool type instead.
|
|
16
|
+
*
|
|
17
|
+
* ONE catalog, ONE grammar: the Agent's auto-attach path, `SkillRegistry`
|
|
18
|
+
* and any foreign host all read the descriptions from here, so they cannot
|
|
19
|
+
* drift the way a second hand-written `read_skill` would.
|
|
20
|
+
*
|
|
21
|
+
* Zone: PURE CORE. Pinned by
|
|
22
|
+
* `test/lib/injection-engine/skill-graph-fence.test.ts`.
|
|
23
|
+
*/
|
|
24
|
+
/** Compose the tool description: one catalog, or the offer split in two. */
|
|
25
|
+
function describeOffer(allSkills, line, fullCatalog, offer) {
|
|
26
|
+
const tail = `Pass the skill's id. The skill's body becomes part of the system prompt and any ` +
|
|
27
|
+
`gated tools become available on the next call.`;
|
|
28
|
+
if (!offer) {
|
|
29
|
+
return `Activate a skill for the next iteration. Available skills:\n${fullCatalog}\n\n${tail}`;
|
|
30
|
+
}
|
|
31
|
+
// Hidden first, so nothing below can name one — the menu, the graph split,
|
|
32
|
+
// the "not reachable" list and the plain catalog all read from this.
|
|
33
|
+
const hidden = new Set(offer.hiddenIds ?? []);
|
|
34
|
+
const skills = hidden.size > 0 ? allSkills.filter((s) => !hidden.has(s.id)) : allSkills;
|
|
35
|
+
// The turn-start MENU leads (SG-C) — rendered from the turn verdict, ids
|
|
36
|
+
// resolved against the (hidden-filtered) catalog so an id this description
|
|
37
|
+
// may not name, or one that is not a skill here, is silently skipped rather
|
|
38
|
+
// than fabricated into a row.
|
|
39
|
+
const byId = new Map(skills.map((s) => [s.id, s]));
|
|
40
|
+
const menuRows = (offer.menu?.candidates ?? [])
|
|
41
|
+
.filter((c) => byId.has(c.id))
|
|
42
|
+
.map((c) => {
|
|
43
|
+
const pct = c.relevance !== undefined ? ` (relevance ~${Math.round(c.relevance * 100)}%)` : '';
|
|
44
|
+
return `${line(byId.get(c.id))}${pct}`;
|
|
45
|
+
});
|
|
46
|
+
const menuLead = offer.menu !== undefined && menuRows.length > 0
|
|
47
|
+
? `This turn needs a routing choice — no declared rule or intent decisively matched. ` +
|
|
48
|
+
`Closest candidates (advisory; an offline scorer ranked them and cannot see the ` +
|
|
49
|
+
`conversation):\n${menuRows.join('\n')}\n` +
|
|
50
|
+
(offer.menu.stay === true && offer.menu.cursorId !== undefined
|
|
51
|
+
? `You are in '${offer.menu.cursorId}'. Staying is a first-class option: answer ` +
|
|
52
|
+
`WITHOUT calling read_skill to stay in '${offer.menu.cursorId}'.\n\n`
|
|
53
|
+
: `Answering WITHOUT calling read_skill is also allowed.\n\n`)
|
|
54
|
+
: '';
|
|
55
|
+
if (offer.grantable === undefined) {
|
|
56
|
+
// No graph — the plain catalog, filtered. A role with nothing left is told
|
|
57
|
+
// plainly rather than handed an empty list to interpret.
|
|
58
|
+
return skills.length === 0
|
|
59
|
+
? `Activate a skill for the next iteration. No skills are available to you — ` +
|
|
60
|
+
`answer without one, or say what you are unable to do.\n\n${tail}`
|
|
61
|
+
: `${menuLead}Activate a skill for the next iteration. Available skills:\n${skills
|
|
62
|
+
.map(line)
|
|
63
|
+
.join('\n')}\n\n${tail}`;
|
|
64
|
+
}
|
|
65
|
+
const grantable = new Set(offer.grantable);
|
|
66
|
+
const open = skills.filter((s) => grantable.has(s.id));
|
|
67
|
+
const shut = skills.filter((s) => !grantable.has(s.id));
|
|
68
|
+
const parts = [
|
|
69
|
+
open.length > 0
|
|
70
|
+
? `Reachable from here:\n${open.map(line).join('\n')}`
|
|
71
|
+
: 'Nothing is reachable from here — answer with the skill you are in, or finish.',
|
|
72
|
+
];
|
|
73
|
+
if (offer.showRefusable !== false && shut.length > 0) {
|
|
74
|
+
parts.push(`Not reachable from here (read_skill for these will be refused):\n${shut
|
|
75
|
+
.map(line)
|
|
76
|
+
.join('\n')}`);
|
|
77
|
+
}
|
|
78
|
+
return `${menuLead}Activate a skill for the next iteration.\n\n${parts.join('\n\n')}\n\n${tail}`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Describe the `list_skills` tool — a no-arg tool that returns the registered
|
|
82
|
+
* skills as `{ id, description }[]`. Lets the LLM discover skills without
|
|
83
|
+
* paying the prompt-token cost of embedding the catalog into every system
|
|
84
|
+
* prompt.
|
|
85
|
+
*
|
|
86
|
+
* Pairs with {@link readSkillDescriptor} (which actually activates a skill by
|
|
87
|
+
* id). Returns `undefined` when there are no skills — a tool offering an
|
|
88
|
+
* empty catalog is noise.
|
|
89
|
+
*/
|
|
90
|
+
export function listSkillsDescriptor(skills) {
|
|
91
|
+
if (skills.length === 0)
|
|
92
|
+
return undefined;
|
|
93
|
+
// Capture a stable snapshot — the registry/agent calls this at
|
|
94
|
+
// build time, so the tool reflects the catalog as of registration.
|
|
95
|
+
const catalog = skills.map((s) => ({
|
|
96
|
+
id: s.id,
|
|
97
|
+
description: s.description ?? '(no description)',
|
|
98
|
+
}));
|
|
99
|
+
return {
|
|
100
|
+
name: 'list_skills',
|
|
101
|
+
description: 'List all available skills with their ids and descriptions. ' +
|
|
102
|
+
'Use this to discover what skills exist before calling read_skill.',
|
|
103
|
+
inputSchema: { type: 'object', properties: {}, additionalProperties: false },
|
|
104
|
+
execute: () => {
|
|
105
|
+
// Return as a JSON-serialized string so the LLM can parse easily.
|
|
106
|
+
return JSON.stringify(catalog, null, 2);
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Describe the `read_skill` tool — THE cursor door. The LLM picks WHICH skill
|
|
112
|
+
* via the `id` argument; the host's loop is what turns an accepted pick into a
|
|
113
|
+
* cursor move (see `SkillGraphHost`, obligations 2 and 3).
|
|
114
|
+
*
|
|
115
|
+
* `execute` returns a confirmation string, or the skill body verbatim for the
|
|
116
|
+
* `'tool-only'` / `'both'` surface modes (recency-first delivery). The actual
|
|
117
|
+
* bookkeeping — appending the requested id to the activated set, gating it
|
|
118
|
+
* against `reachableSkills`, publishing the accepted pick — is the HOST's,
|
|
119
|
+
* because only the host sees the tool call.
|
|
120
|
+
*
|
|
121
|
+
* Pass `offer` to scope the DESCRIPTION to what the graph's gate will actually
|
|
122
|
+
* grant from the current cursor (8.5.0); the enum stays the full catalog
|
|
123
|
+
* either way. Omit it and the description is byte-identical to the plain
|
|
124
|
+
* catalog it has always been.
|
|
125
|
+
*
|
|
126
|
+
* Returns `undefined` when there are no skills.
|
|
127
|
+
*/
|
|
128
|
+
export function readSkillDescriptor(skills, offer) {
|
|
129
|
+
if (skills.length === 0)
|
|
130
|
+
return undefined;
|
|
131
|
+
const skillIds = skills.map((s) => s.id);
|
|
132
|
+
const line = (s) => ` - ${s.id}: ${s.description ?? '(no description)'}`;
|
|
133
|
+
const skillCatalog = skills.map(line).join('\n');
|
|
134
|
+
const byId = new Map();
|
|
135
|
+
for (const s of skills) {
|
|
136
|
+
const meta = s.metadata;
|
|
137
|
+
byId.set(s.id, {
|
|
138
|
+
body: s.inject.systemPrompt ?? '',
|
|
139
|
+
surfaceMode: meta?.surfaceMode ?? 'auto',
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
name: 'read_skill',
|
|
144
|
+
description: describeOffer(skills, line, skillCatalog, offer),
|
|
145
|
+
inputSchema: {
|
|
146
|
+
type: 'object',
|
|
147
|
+
properties: {
|
|
148
|
+
id: {
|
|
149
|
+
type: 'string',
|
|
150
|
+
// The FULL catalog, always — deliberately NOT narrowed to the reachable
|
|
151
|
+
// set (8.5.0). `toolArgValidation` defaults to `'enforce'` and runs BEFORE
|
|
152
|
+
// the skill-graph gate, rejecting an off-enum id with a generic schema
|
|
153
|
+
// error and `error = true`, which the gate then skips. Narrowing this
|
|
154
|
+
// would silently retire the gate's teaching refusal, the
|
|
155
|
+
// `agentfootprint.skill.rejected` event, `routeRecorder`'s rejection hops
|
|
156
|
+
// and the rejected-cap governor's only input — four honesty mechanisms
|
|
157
|
+
// traded for one. The OFFER is narrowed in the description instead, which
|
|
158
|
+
// is what the model actually reads to choose.
|
|
159
|
+
enum: skillIds,
|
|
160
|
+
description: 'The skill id to activate.',
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
required: ['id'],
|
|
164
|
+
},
|
|
165
|
+
execute: ({ id }) => {
|
|
166
|
+
const entry = byId.get(id);
|
|
167
|
+
if (!entry) {
|
|
168
|
+
return `Unknown skill '${id}'. Available: ${skillIds.join(', ')}`;
|
|
169
|
+
}
|
|
170
|
+
// Block C — per-mode tool-result dispatch:
|
|
171
|
+
// - 'tool-only' / 'both' → return body verbatim (recency-first
|
|
172
|
+
// delivery; LLM sees it as the most recent tool result).
|
|
173
|
+
// - 'system-prompt' / 'auto' / unspecified → return confirmation
|
|
174
|
+
// only; body lands via system slot on the next iteration.
|
|
175
|
+
if ((entry.surfaceMode === 'tool-only' || entry.surfaceMode === 'both') && entry.body) {
|
|
176
|
+
return entry.body;
|
|
177
|
+
}
|
|
178
|
+
return `Skill '${id}' activated for the next iteration.`;
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=skillToolDescriptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillToolDescriptors.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillToolDescriptors.ts"],"names":[],"mappings":"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"}
|