agentfootprint 9.30.0 → 9.31.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/CLAUDE.md +2 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +5 -3
- package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +74 -2
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/azureUrl.js +48 -0
- package/dist/adapters/llm/azureUrl.js.map +1 -0
- package/dist/adapters/llm/createProvider.js +25 -6
- package/dist/adapters/llm/createProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +5 -3
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.d.ts +15 -2
- package/dist/esm/adapters/llm/OpenAIProvider.js +74 -2
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/azureUrl.d.ts +36 -0
- package/dist/esm/adapters/llm/azureUrl.js +43 -0
- package/dist/esm/adapters/llm/azureUrl.js.map +1 -0
- package/dist/esm/adapters/llm/createProvider.d.ts +5 -1
- package/dist/esm/adapters/llm/createProvider.js +25 -6
- package/dist/esm/adapters/llm/createProvider.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillExamples.d.ts +168 -0
- package/dist/esm/lib/injection-engine/skillExamples.js +435 -0
- package/dist/esm/lib/injection-engine/skillExamples.js.map +1 -0
- package/dist/esm/lib/injection-engine/skillGraph.d.ts +63 -0
- package/dist/esm/lib/injection-engine/skillGraph.js +40 -2
- package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraphCheckup.d.ts +25 -2
- package/dist/esm/lib/injection-engine/skillGraphCheckup.js +11 -2
- package/dist/esm/lib/injection-engine/skillGraphCheckup.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillMatch.d.ts +7 -0
- package/dist/esm/lib/injection-engine/skillMatch.js +9 -4
- package/dist/esm/lib/injection-engine/skillMatch.js.map +1 -1
- package/dist/lib/injection-engine/skillExamples.js +440 -0
- package/dist/lib/injection-engine/skillExamples.js.map +1 -0
- package/dist/lib/injection-engine/skillGraph.js +40 -2
- package/dist/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/lib/injection-engine/skillGraphCheckup.js +11 -2
- package/dist/lib/injection-engine/skillGraphCheckup.js.map +1 -1
- package/dist/lib/injection-engine/skillMatch.js +11 -5
- package/dist/lib/injection-engine/skillMatch.js.map +1 -1
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +15 -2
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/azureUrl.d.ts +37 -0
- package/dist/types/adapters/llm/azureUrl.d.ts.map +1 -0
- package/dist/types/adapters/llm/createProvider.d.ts +5 -1
- package/dist/types/adapters/llm/createProvider.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillExamples.d.ts +169 -0
- package/dist/types/lib/injection-engine/skillExamples.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/skillGraph.d.ts +63 -0
- package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts +25 -2
- package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillMatch.d.ts +7 -0
- package/dist/types/lib/injection-engine/skillMatch.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* skillExamples — the EXAMPLES side of a start rule: the phrasings a rule says
|
|
3
|
+
* it claims, and the three things a build-time check-up can then PROVE about
|
|
4
|
+
* them by RUNNING the compiled matchers instead of comparing them.
|
|
5
|
+
*
|
|
6
|
+
* ## Why this exists (two field failures, one evening)
|
|
7
|
+
*
|
|
8
|
+
* `compareMatchers` (skillMatch.ts) answers only what matcher-vs-matcher
|
|
9
|
+
* analysis can prove, and says so out loud: two DIFFERENT regex sources return
|
|
10
|
+
* `undefined` ("regex intersection is not decided here — only identity is
|
|
11
|
+
* provable"). That honesty left two real production failures unreportable:
|
|
12
|
+
*
|
|
13
|
+
* A. SHADOWING BY DIFFERENT REGEXES — an earlier rule matching one product
|
|
14
|
+
* name sat above an inventory rule whose matcher is a longer alternation.
|
|
15
|
+
* A real phrase ("what's running on <host-looking-name>") was claimed by
|
|
16
|
+
* the earlier rule, so the later rule could never win on its own
|
|
17
|
+
* phrasings. Two different regexes: the check-up was correctly silent.
|
|
18
|
+
* B. ABSENCE — a second phrase matched NO rule at all, fell through to the
|
|
19
|
+
* model tier, and the model picked the wrong skill because an array name
|
|
20
|
+
* looked like a hostname. Not shadowing: absence. No amount of
|
|
21
|
+
* matcher-vs-matcher analysis can ever catch it.
|
|
22
|
+
*
|
|
23
|
+
* A declared example turns both into arithmetic. Run the compiled predicates
|
|
24
|
+
* over one concrete phrase, in declaration order, exactly as the cold start
|
|
25
|
+
* does — and the answer is a WITNESS, not a theory: this phrase, this rule,
|
|
26
|
+
* this winner. No regex intersection is decided anywhere in this file.
|
|
27
|
+
*
|
|
28
|
+
* ## The tier difference (read this before writing `examples` anywhere)
|
|
29
|
+
*
|
|
30
|
+
* Two different lists spell the same author-facing sentence — "the phrasings
|
|
31
|
+
* this rule claims" — and they have DIFFERENT RUNTIME ROLES:
|
|
32
|
+
*
|
|
33
|
+
* • TIER 2, `match: { intent, examples }` — SCORING material. The classifier
|
|
34
|
+
* reads those examples AT RUN TIME to judge every new message
|
|
35
|
+
* (`skillIntent.ts`); they are part of how the graph routes.
|
|
36
|
+
* • TIER 1, a rule-level `examples: [...]` (this file) — TEST material. Read
|
|
37
|
+
* at BUILD time by the check-up and fed to nothing, ever. They do not
|
|
38
|
+
* widen, soften or otherwise touch matching: a rule with examples routes
|
|
39
|
+
* byte-identically to the same rule without them.
|
|
40
|
+
*
|
|
41
|
+
* One rule may not carry both lists (a teaching refusal names the difference):
|
|
42
|
+
* two example lists with two different jobs under one rule is exactly the
|
|
43
|
+
* confusion this note exists to prevent.
|
|
44
|
+
*
|
|
45
|
+
* ## The two start laws, and why one of them is only a WARNING
|
|
46
|
+
*
|
|
47
|
+
* Which rule claims a phrase is decided by one of TWO laws, and the graph does
|
|
48
|
+
* not know which one it will be mounted under:
|
|
49
|
+
*
|
|
50
|
+
* • the declaration-order COLD WALK (`makeResolveCursor`, the default mount)
|
|
51
|
+
* returns at the first entry with no condition or the first whose condition
|
|
52
|
+
* passes — so an UNCONDITIONAL entry claims every message from its position
|
|
53
|
+
* onward;
|
|
54
|
+
* • the turn-start CASCADE's tier 1 (`firstRuleMatch`, skillIntent.ts) reads
|
|
55
|
+
* the CONDITIONAL non-intent entries only — an unconditional entry is a
|
|
56
|
+
* default, not a rule, and never wins the turn there. That cascade is
|
|
57
|
+
* mounted by `.classify()` AND by `.skillGraph(g, { continuity:
|
|
58
|
+
* 'conversation' })`, and continuity is an AGENT-MOUNT option that does not
|
|
59
|
+
* exist yet when this check runs.
|
|
60
|
+
*
|
|
61
|
+
* The two laws differ in exactly one place: whether an unconditional entry
|
|
62
|
+
* claims. So when the earlier claimant is unconditional, the check-up cannot
|
|
63
|
+
* say which law will apply — it reports BOTH readings as a WARNING
|
|
64
|
+
* (`example-shadowed-by-default`) instead of asserting one as an ERROR. A
|
|
65
|
+
* check-up that disagrees with the router is worse than no check-up: the router
|
|
66
|
+
* really does start that turn on the later rule under a `continuity:
|
|
67
|
+
* 'conversation'` mount. The ERROR (`example-shadowed-by-earlier`) is kept for
|
|
68
|
+
* what both laws agree on.
|
|
69
|
+
*
|
|
70
|
+
* ## The context a rule is judged in, and what that makes provable
|
|
71
|
+
*
|
|
72
|
+
* Every predicate here runs on ONE context: {@link coldContext} — iteration 1,
|
|
73
|
+
* the phrase as `userMessage`, empty `history`, no cursor. That is a real
|
|
74
|
+
* context (the first iteration of a turn), but it is not the only one a start
|
|
75
|
+
* rule ever sees: turn 2 of a conversation also starts cold in cursor terms
|
|
76
|
+
* while carrying HISTORY. So:
|
|
77
|
+
*
|
|
78
|
+
* • a DATA matcher (`match:`) reads `userMessage` and nothing else, so a
|
|
79
|
+
* no-match here is a no-match under every context — ERROR;
|
|
80
|
+
* • an opaque `when` may legitimately be gated on conversation state
|
|
81
|
+
* (`ctx.history.length > 0`) and claim the phrase on a later turn — the
|
|
82
|
+
* check cannot run that turn, so a no-match is a WARNING, and the message
|
|
83
|
+
* names the context it judged under rather than leaving the author to guess.
|
|
84
|
+
*
|
|
85
|
+
* A THROW stays an ERROR either way: a predicate must be pure and total, and
|
|
86
|
+
* the context it threw on is one every turn 1 really hands it.
|
|
87
|
+
*
|
|
88
|
+
* ## The boundary, and why it is on the report itself
|
|
89
|
+
*
|
|
90
|
+
* These checks prove things about the phrases the author DECLARED and nothing
|
|
91
|
+
* about phrases nobody wrote. No warning is NOT proof of coverage. That
|
|
92
|
+
* sentence ships as {@link EXAMPLES_BOUNDARY} on `GraphCheckup.notes` —
|
|
93
|
+
* visible wherever the graph reports its problems — because a reader who meets
|
|
94
|
+
* it only in prose docs will meet a clean report first.
|
|
95
|
+
*
|
|
96
|
+
* Composed into `graph.checkup()` by `skillGraph.ts`, exactly like
|
|
97
|
+
* `skillContract`/`skillIntent`/`skillVocabulary`: this module owns the rule
|
|
98
|
+
* AND its boundaries, and reports in the shared `GraphProblem` voice.
|
|
99
|
+
*/
|
|
100
|
+
import type { InjectionContext } from './types.js';
|
|
101
|
+
import { type SkillMatchData } from './skillMatch.js';
|
|
102
|
+
import type { GraphProblem } from './skillGraphCheckup.js';
|
|
103
|
+
/**
|
|
104
|
+
* The statement the check-up makes about its own reach, carried on
|
|
105
|
+
* `GraphCheckup.notes` whenever any rule declared examples. Same voice as the
|
|
106
|
+
* ingress ticket's "absence of a refusal is not consent": a clean report is
|
|
107
|
+
* evidence about the phrases you wrote, and about nothing else.
|
|
108
|
+
*/
|
|
109
|
+
export declare const EXAMPLES_BOUNDARY: string;
|
|
110
|
+
/** The note added when declaration order does not decide the turn start, so
|
|
111
|
+
* only the order-independent check (self-match) could run. */
|
|
112
|
+
export declare const EXAMPLES_ORDER_NOT_CHECKED: string;
|
|
113
|
+
/**
|
|
114
|
+
* The slice of an entry declaration this module reads — structural, so
|
|
115
|
+
* `skillGraph.ts`'s module-private `EntryDecl` satisfies it unchanged (the
|
|
116
|
+
* same trick `skillIntent.ts` uses).
|
|
117
|
+
*/
|
|
118
|
+
export interface ExampleRuleDecl {
|
|
119
|
+
readonly id: string;
|
|
120
|
+
/** The compiled condition (from `match:`) or the author's `when`. Absent on
|
|
121
|
+
* an unconditional entry and on an intent rule (no sync predicate). */
|
|
122
|
+
readonly when?: (ctx: InjectionContext) => boolean;
|
|
123
|
+
/** The serializable matcher behind `when`, when declared as data — quoted
|
|
124
|
+
* back in the messages, and the one way to spot the intent arm. */
|
|
125
|
+
readonly match?: SkillMatchData;
|
|
126
|
+
/** The phrasings this rule claims (build-time TEST material). */
|
|
127
|
+
readonly examples?: readonly string[];
|
|
128
|
+
}
|
|
129
|
+
/** What {@link checkStartRuleExamples} found, plus what it wants to say about
|
|
130
|
+
* its own reach. Both empty when no rule declared examples. */
|
|
131
|
+
export interface ExamplesCheckup {
|
|
132
|
+
readonly problems: readonly GraphProblem[];
|
|
133
|
+
readonly notes: readonly string[];
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Validate a rule-level `examples` list at DECLARATION time, refusing every
|
|
137
|
+
* shape whose check-up answer could only mislead — each refusal naming the fix:
|
|
138
|
+
*
|
|
139
|
+
* • not an array / an EMPTY array — nothing to prove, and a check-up that
|
|
140
|
+
* passes in silence reads as coverage;
|
|
141
|
+
* • a non-string or blank entry — there is no phrase to run a matcher on;
|
|
142
|
+
* • examples on an UNCONDITIONAL entry — it claims every message, so every
|
|
143
|
+
* example passes by construction and proves nothing;
|
|
144
|
+
* • examples beside `match: { intent, examples }` — two lists, two jobs (see
|
|
145
|
+
* the tier note in this file's header).
|
|
146
|
+
*
|
|
147
|
+
* Returns a frozen copy (or `undefined` when nothing was declared), so the
|
|
148
|
+
* stored list cannot drift from the validated one.
|
|
149
|
+
*/
|
|
150
|
+
export declare function validateStartRuleExamples(examples: unknown, where: string, rule: {
|
|
151
|
+
readonly hasCondition: boolean;
|
|
152
|
+
readonly isIntent: boolean;
|
|
153
|
+
}): readonly string[] | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* Run the three example properties. Pure, and byte-identically silent when no
|
|
156
|
+
* rule declared examples (one `Array.some` and out).
|
|
157
|
+
*
|
|
158
|
+
* `orderDecides` mirrors the gate the pairwise rule checks already use
|
|
159
|
+
* (`!exclusiveEntries || hasClassifier`): declaration order decides the turn
|
|
160
|
+
* start under the default form and under a classifier's tier 1, and does NOT
|
|
161
|
+
* under a scorer or `.entryByRead()`. Where it does not hold, only the
|
|
162
|
+
* order-independent property (self-match) is claimed and a note says so.
|
|
163
|
+
*/
|
|
164
|
+
export declare function checkStartRuleExamples(input: {
|
|
165
|
+
readonly entries: readonly ExampleRuleDecl[];
|
|
166
|
+
readonly orderDecides: boolean;
|
|
167
|
+
readonly hasClassifier: boolean;
|
|
168
|
+
}): ExamplesCheckup;
|
|
169
|
+
//# sourceMappingURL=skillExamples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillExamples.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillExamples.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAEsC,CAAC;AAErE;+DAC+D;AAC/D,eAAO,MAAM,0BAA0B,QAG4B,CAAC;AAEpE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;4EACwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACnD;wEACoE;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAChC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;gEACgE;AAChE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAOD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACnE,SAAS,MAAM,EAAE,GAAG,SAAS,CAgD/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC,GAAG,eAAe,CAwMlB"}
|
|
@@ -141,11 +141,17 @@ export type SkillStartRule = {
|
|
|
141
141
|
/** The code form — an opaque predicate over the iteration context. */
|
|
142
142
|
readonly when: (ctx: InjectionContext) => boolean;
|
|
143
143
|
readonly match?: never;
|
|
144
|
+
/** The phrasings this rule claims — build-time TEST material. See
|
|
145
|
+
* {@link SkillEntryOptions.examples}. */
|
|
146
|
+
readonly examples?: readonly string[];
|
|
144
147
|
} | {
|
|
145
148
|
readonly use: string;
|
|
146
149
|
/** The data form — comparable, drawable, stored. See {@link SkillMatch}. */
|
|
147
150
|
readonly match: SkillMatch;
|
|
148
151
|
readonly when?: never;
|
|
152
|
+
/** The phrasings this rule claims — build-time TEST material. See
|
|
153
|
+
* {@link SkillEntryOptions.examples}. */
|
|
154
|
+
readonly examples?: readonly string[];
|
|
149
155
|
};
|
|
150
156
|
/** Where a turn starts, in the object-literal (flat) form. */
|
|
151
157
|
export type SkillGraphStart = string | {
|
|
@@ -302,6 +308,63 @@ export interface SkillEntryOptions {
|
|
|
302
308
|
* exactly as before.
|
|
303
309
|
*/
|
|
304
310
|
readonly match?: SkillMatch;
|
|
311
|
+
/**
|
|
312
|
+
* The phrasings this rule CLAIMS — real messages a user would type that
|
|
313
|
+
* should start the turn here. Optional, additive, and **fed to nothing at
|
|
314
|
+
* run time**: the check-up reads them at build time and the routing never
|
|
315
|
+
* sees them, so a rule with examples routes byte-identically to the same
|
|
316
|
+
* rule without them.
|
|
317
|
+
*
|
|
318
|
+
* Things become PROVABLE once a phrase is declared, by RUNNING the compiled
|
|
319
|
+
* matchers rather than comparing them:
|
|
320
|
+
*
|
|
321
|
+
* • `example-misses-own-rule` — this rule does not claim its own example.
|
|
322
|
+
* An ERROR for a data `match` (it reads the user message and nothing
|
|
323
|
+
* else, so the no-match holds under every context) or for a predicate
|
|
324
|
+
* that THREW; a WARNING for an opaque `when` that returned false, which
|
|
325
|
+
* may be gated on conversation state and claim the phrase on a later
|
|
326
|
+
* turn (see the context note below);
|
|
327
|
+
* • `example-shadowed-by-earlier` (error) — an EARLIER rule claims the
|
|
328
|
+
* phrase first, so the turn starts somewhere your own example denies.
|
|
329
|
+
* This is the one `rules-shadowed-by-order` must stay silent about when
|
|
330
|
+
* the two rules use different regexes (intersection is not decided
|
|
331
|
+
* anywhere in this library) — a witness phrase decides it instead;
|
|
332
|
+
* • `example-shadowed-by-default` (warning) — the earlier claimant is an
|
|
333
|
+
* UNCONDITIONAL entry. The declaration-order cold start stops at a
|
|
334
|
+
* default; the turn-start cascade (a classifier, or `continuity:
|
|
335
|
+
* 'conversation'`) reads the conditional rules only and skips it — and
|
|
336
|
+
* which one applies is decided at AGENT MOUNT, so the report names both
|
|
337
|
+
* readings instead of asserting one against the router;
|
|
338
|
+
* • `example-unclaimed` (warning) — NO rule claims the phrase, so the turn
|
|
339
|
+
* falls through to the model tier. Absence, which no matcher-vs-matcher
|
|
340
|
+
* analysis can catch.
|
|
341
|
+
*
|
|
342
|
+
* **The context they are judged on.** Every condition here runs on ONE
|
|
343
|
+
* context — iteration 1, the phrase as `userMessage`, empty `history`, no
|
|
344
|
+
* cursor — the context a turn's FIRST iteration hands a start rule. Turn 2 of
|
|
345
|
+
* a conversation also starts cold in cursor terms while CARRYING history, so
|
|
346
|
+
* a `when` gated on conversation state may claim the phrase on a turn this
|
|
347
|
+
* check cannot run. That is why its no-match is a warning, and why every
|
|
348
|
+
* message names the context it judged under.
|
|
349
|
+
*
|
|
350
|
+
* **Tier difference, and it matters.** In `match: { intent, examples }`
|
|
351
|
+
* (tier 2) the examples are SCORING material: the classifier reads them at
|
|
352
|
+
* RUN time to judge new messages. Here (tier 1) they are TEST material only.
|
|
353
|
+
* The author-facing meaning is the same — "the phrasings this rule claims" —
|
|
354
|
+
* the runtime role is not, and a rule may not carry both lists (refused at
|
|
355
|
+
* build, naming the difference).
|
|
356
|
+
*
|
|
357
|
+
* The boundary: these checks prove things about the phrases you declared and
|
|
358
|
+
* nothing about phrases nobody wrote. No warning is not proof of coverage —
|
|
359
|
+
* `graph.checkup().notes` says so on the report itself.
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* .entry(arrayInventory, {
|
|
363
|
+
* match: /\b(array|volume|pool)\b/i,
|
|
364
|
+
* examples: ["what's running on shpstrprncl101"],
|
|
365
|
+
* })
|
|
366
|
+
*/
|
|
367
|
+
readonly examples?: readonly string[];
|
|
305
368
|
readonly label?: string;
|
|
306
369
|
}
|
|
307
370
|
/** Options for a decision `tree()`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillGraph.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"skillGraph.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ import { type SkillMatchData } from './skillMatch.js';
|
|
|
34
34
|
* engine-type-free, which is what keeps that law intact here).
|
|
35
35
|
*/
|
|
36
36
|
export type CheckupTriggerKind = 'always' | 'rule' | 'on-tool-return' | 'llm-activated';
|
|
37
|
-
export type GraphProblemCode = 'unknown-skill' | 'no-entry' | 'unreachable-skill' | 'model-edge-only' | 'multi-entry-fanout' | 'dead-entry-step' | 'ambiguous-routes' | 'self-loop' | 'rule-id-exists' | 'overlapping-rules' | 'rules-shadowed-by-order' | 'intent-without-classify' | 'duplicate-intent-example' | 'overlapping-intents' | 'body-foreign-tool' | 'body-unknown-tool' | 'artifact-kind-unsatisfied';
|
|
37
|
+
export type GraphProblemCode = 'unknown-skill' | 'no-entry' | 'unreachable-skill' | 'model-edge-only' | 'multi-entry-fanout' | 'dead-entry-step' | 'ambiguous-routes' | 'self-loop' | 'rule-id-exists' | 'overlapping-rules' | 'rules-shadowed-by-order' | 'intent-without-classify' | 'duplicate-intent-example' | 'overlapping-intents' | 'body-foreign-tool' | 'body-unknown-tool' | 'example-misses-own-rule' | 'example-shadowed-by-earlier' | 'example-shadowed-by-default' | 'example-unclaimed' | 'artifact-kind-unsatisfied';
|
|
38
38
|
/** One issue found by the check-up. `kind: 'error'` fails `ok` (and `'throw'`). */
|
|
39
39
|
export interface GraphProblem {
|
|
40
40
|
readonly kind: 'error' | 'warning';
|
|
@@ -44,11 +44,28 @@ export interface GraphProblem {
|
|
|
44
44
|
readonly skill?: string;
|
|
45
45
|
readonly from?: string;
|
|
46
46
|
readonly to?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The declared example phrase this problem is about — present only on the
|
|
49
|
+
* `example-*` codes, which are the only checks that reason about a concrete
|
|
50
|
+
* phrase. The message always quotes it too; this is the same string as data,
|
|
51
|
+
* so a tool can group by phrase without parsing prose.
|
|
52
|
+
*/
|
|
53
|
+
readonly example?: string;
|
|
47
54
|
}
|
|
48
55
|
/** Result of `graph.checkup()`. `ok` is false iff there is ≥1 `error`. */
|
|
49
56
|
export interface GraphCheckup {
|
|
50
57
|
readonly ok: boolean;
|
|
51
58
|
readonly problems: readonly GraphProblem[];
|
|
59
|
+
/**
|
|
60
|
+
* What this report does NOT cover — present only when a check ran whose
|
|
61
|
+
* SILENCE could be misread as proof. Today that is the start-rule examples
|
|
62
|
+
* (skillExamples.ts): they prove things about the phrases the author
|
|
63
|
+
* declared and nothing about phrases nobody wrote, so a clean report is not
|
|
64
|
+
* proof of coverage — and the report says so itself rather than leaving it
|
|
65
|
+
* to prose docs. Absent (not empty) when nothing needed saying, so a graph
|
|
66
|
+
* that never heard of examples reports the exact same object as always.
|
|
67
|
+
*/
|
|
68
|
+
readonly notes?: readonly string[];
|
|
52
69
|
}
|
|
53
70
|
/** One declared entry, in declaration order. */
|
|
54
71
|
export interface CheckupEntry {
|
|
@@ -103,6 +120,12 @@ export interface CheckupInput {
|
|
|
103
120
|
}
|
|
104
121
|
/** Run the check-up. Pure. */
|
|
105
122
|
export declare function checkupGraph(input: CheckupInput): GraphCheckup;
|
|
106
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* Format a check-up for a thrown error / console warning.
|
|
125
|
+
*
|
|
126
|
+
* Notes render AFTER the problems, tagged `[note]`: they are statements about
|
|
127
|
+
* the report's own reach, not findings. A check-up with no notes formats
|
|
128
|
+
* byte-identically to every version before them.
|
|
129
|
+
*/
|
|
107
130
|
export declare function formatCheckup(checkup: GraphCheckup): string;
|
|
108
131
|
//# sourceMappingURL=skillGraphCheckup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillGraphCheckup.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraphCheckup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAExF,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,UAAU,GACV,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,WAAW,GAEX,gBAAgB,GAKhB,mBAAmB,GACnB,yBAAyB,GAIzB,yBAAyB,GAIzB,0BAA0B,GAG1B,qBAAqB,GAIrB,mBAAmB,GACnB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"skillGraphCheckup.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillGraphCheckup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,MAAM,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAExF,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,UAAU,GACV,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,WAAW,GAEX,gBAAgB,GAKhB,mBAAmB,GACnB,yBAAyB,GAIzB,yBAAyB,GAIzB,0BAA0B,GAG1B,qBAAqB,GAIrB,mBAAmB,GACnB,mBAAmB,GAInB,yBAAyB,GAKzB,6BAA6B,GAO7B,6BAA6B,GAO7B,mBAAmB,GAInB,2BAA2B,CAAC;AAMhC,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;qDACiD;IACjD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;;+EAG2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzF,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC/D;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,8BAA8B;AAC9B,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAwV9D;AA2CD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAI3D"}
|
|
@@ -207,4 +207,11 @@ export declare function compareMatchers(earlier: SkillMatchData, later: SkillMat
|
|
|
207
207
|
* before.
|
|
208
208
|
*/
|
|
209
209
|
export declare function mermaidMatchCaption(m: SkillMatchData): string;
|
|
210
|
+
/**
|
|
211
|
+
* The UNESCAPED caption — one grammar for naming a matcher, shared by the
|
|
212
|
+
* mermaid label (which escapes it once, at the top) and by prose that quotes a
|
|
213
|
+
* matcher back to its author (`skillExamples.ts`'s messages). Recursion for the
|
|
214
|
+
* `all` arm happens here so the escaping stays a single outer pass.
|
|
215
|
+
*/
|
|
216
|
+
export declare function plainMatchCaption(m: SkillMatchData): string;
|
|
210
217
|
//# sourceMappingURL=skillMatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillMatch.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillMatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1F;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,CAAC;AAExE;+EAC+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;wBACwB;AACxB,eAAO,MAAM,iBAAiB,KAAK,CAAC;AA6BpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,GACZ;IACD,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5D,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,YAAY,GAAG,SAAS,CAAC;CAC/D,CAuFA;AA4GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,cAAc,GACpB;IAAE,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmC/D;AAwED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAE7D"}
|
|
1
|
+
{"version":3,"file":"skillMatch.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillMatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1F;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,CAAC;AAExE;+EAC+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;wBACwB;AACxB,eAAO,MAAM,iBAAiB,KAAK,CAAC;AA6BpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,GACZ;IACD,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5D,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,YAAY,GAAG,SAAS,CAAC;CAC/D,CAuFA;AA4GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,cAAc,GACpB;IAAE,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmC/D;AAwED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAU3D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.31.0",
|
|
4
4
|
"description": "The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -373,6 +373,7 @@
|
|
|
373
373
|
"footprintjs": "^9.15.0",
|
|
374
374
|
"google-auth-library": "^11.0.1",
|
|
375
375
|
"jose": "^6.2.7",
|
|
376
|
+
"openai": "^7.4.0",
|
|
376
377
|
"prettier": "^2.8.1",
|
|
377
378
|
"publint": "^0.3.0",
|
|
378
379
|
"typedoc": "^0.28.19",
|