agentfootprint 9.35.0 → 9.36.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/core/agent/AgentBuilder.js +85 -0
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/buildToolRegistry.js +7 -0
- package/dist/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/core/agent/toolsFromActiveSkill.js +79 -0
- package/dist/core/agent/toolsFromActiveSkill.js.map +1 -0
- package/dist/esm/core/agent/AgentBuilder.d.ts +62 -0
- package/dist/esm/core/agent/AgentBuilder.js +85 -0
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/buildToolRegistry.js +7 -0
- package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/esm/core/agent/toolsFromActiveSkill.d.ts +55 -0
- package/dist/esm/core/agent/toolsFromActiveSkill.js +75 -0
- package/dist/esm/core/agent/toolsFromActiveSkill.js.map +1 -0
- package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +7 -0
- package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +80 -17
- package/dist/esm/lib/injection-engine/skillsFromDir.js +348 -46
- package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/lib/injection-engine/skillsFromDir.js +348 -46
- package/dist/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +62 -0
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
- package/dist/types/core/agent/toolsFromActiveSkill.d.ts +56 -0
- package/dist/types/core/agent/toolsFromActiveSkill.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +7 -0
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts +80 -17
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* toolsFromActiveSkill — the AGENT-level tool posture (9.36.0).
|
|
3
|
+
*
|
|
4
|
+
* Pattern: pure fold over the final injection list, run once at `Agent.build()`.
|
|
5
|
+
* Role: core/ layer. One declaration replaces a per-skill discipline.
|
|
6
|
+
* Emits: nothing. It changes what the OFFER contains, and the tools slot
|
|
7
|
+
* already records every offered tool and the skill that unlocked it.
|
|
8
|
+
*
|
|
9
|
+
* ── The defect this exists for ───────────────────────────────────────────
|
|
10
|
+
* `buildToolRegistry` pre-loads a skill's `inject.tools` into the STATIC
|
|
11
|
+
* registry unless that skill declared `autoActivate: 'currentSkill'`. Static
|
|
12
|
+
* means on the wire from iteration 1, whatever the cursor says. So "only the
|
|
13
|
+
* active skill's tools are offered" was a promise you had to keep on EVERY
|
|
14
|
+
* skill, one field at a time, and the first skill you forgot leaked its tools
|
|
15
|
+
* for the life of the agent — silently, because a tool that is offered too
|
|
16
|
+
* early looks exactly like a tool that is offered.
|
|
17
|
+
*
|
|
18
|
+
* A skill graph can already say it once for the skills it WIRES
|
|
19
|
+
* (`skillGraph({ scopeTools: true })`, which stamps the same field at graph
|
|
20
|
+
* compile). Three kinds of skill fall outside that: a skill the graph lists
|
|
21
|
+
* but never routes to, a skill registered beside the graph, and every skill on
|
|
22
|
+
* an agent with no graph at all — including a whole directory loaded through
|
|
23
|
+
* `skillsFromDir`. This is the same decision made where every skill is in
|
|
24
|
+
* hand: at the agent.
|
|
25
|
+
*
|
|
26
|
+
* ── Why it stamps the shipped field instead of adding a second gate ──────
|
|
27
|
+
* The alternative was a flag threaded into `buildToolRegistry`. That would
|
|
28
|
+
* have created TWO ways for a tool to be held out, and only one of them
|
|
29
|
+
* visible to everyone else who asks the question: `ActiveInjection.autoActivate`
|
|
30
|
+
* (which the boundary projects), a consumer's own `ToolProvider`, a lens
|
|
31
|
+
* drawing the graph, `warnRedundantSkillScopedTools`. Stamping the declared
|
|
32
|
+
* field keeps ONE mechanism and one answer.
|
|
33
|
+
*
|
|
34
|
+
* ── Which wins: the per-skill flag or the agent posture ──────────────────
|
|
35
|
+
* Neither overrides the other, because they cannot disagree. `autoActivate`
|
|
36
|
+
* has exactly one legal value (`'currentSkill'`), so a skill can ask to be
|
|
37
|
+
* scoped and cannot ask to be exempt. The stamp is `existing ?? 'currentSkill'`
|
|
38
|
+
* — a DEFAULT, never an override — the same sentence `skillGraph`'s
|
|
39
|
+
* `scopeTools` already lives by. The result is monotone: turning the posture
|
|
40
|
+
* on can only ever REMOVE tools from the static registry, never add one.
|
|
41
|
+
*/
|
|
42
|
+
import type { Injection } from '../../lib/injection-engine/types.js';
|
|
43
|
+
/**
|
|
44
|
+
* Stamp `autoActivate: 'currentSkill'` on every skill that carries tools and
|
|
45
|
+
* has not already declared the field.
|
|
46
|
+
*
|
|
47
|
+
* Only skills WITH tools are touched: `autoActivate` says where a skill's
|
|
48
|
+
* tools appear, and a skill with none has nothing to say — stamping it would
|
|
49
|
+
* put a field on the record that decides nothing, which is exactly the kind of
|
|
50
|
+
* metadata a reader later has to disprove.
|
|
51
|
+
*
|
|
52
|
+
* Called only from `Agent.build()` and only under the opt-in, so an agent that
|
|
53
|
+
* never asks for it never runs this code.
|
|
54
|
+
*/
|
|
55
|
+
export declare function scopeToolsToActiveSkill(injections: readonly Injection[]): Injection[];
|
|
56
|
+
//# sourceMappingURL=toolsFromActiveSkill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolsFromActiveSkill.d.ts","sourceRoot":"","sources":["../../../../src/core/agent/toolsFromActiveSkill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAKrE;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,CAerF"}
|
|
@@ -151,6 +151,13 @@ export interface DefineSkillOptions {
|
|
|
151
151
|
* agent's registry at BUILD time and the model can see and call them
|
|
152
152
|
* from iteration 1, activated or not.
|
|
153
153
|
*
|
|
154
|
+
* Saying it once for the whole agent instead of once per skill:
|
|
155
|
+
* `.toolsFromActiveSkill()` on the builder (9.36.0) stamps this field on
|
|
156
|
+
* every tool-carrying skill, and `skillGraph({ scopeTools: true })` stamps it
|
|
157
|
+
* on the skills a graph wires. Both are DEFAULTS — a skill that declared its
|
|
158
|
+
* own keeps it — and since `'currentSkill'` is the only legal value, none of
|
|
159
|
+
* the three can contradict another.
|
|
160
|
+
*
|
|
154
161
|
* Wired at runtime since v2.5: `buildToolRegistry` holds these tools out of the
|
|
155
162
|
* static registry and `buildToolsSlot` readmits them per-iteration from the
|
|
156
163
|
* active injections. Dispatch is unaffected either way — an autoActivate tool
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineSkill.d.ts","sourceRoot":"","sources":["../../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAsB,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,MAAM,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;gDAM4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC
|
|
1
|
+
{"version":3,"file":"defineSkill.d.ts","sourceRoot":"","sources":["../../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAsB,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,MAAM,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;gDAM4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,4BAA4B,EAAE,WAAW,CAAC;IACrE;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAahF;AAqDD,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,CA2E/D"}
|
|
@@ -29,21 +29,56 @@
|
|
|
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
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
32
|
+
* ── What a SKILL.md can carry (9.36.0: the whole runbook) ────────────────────
|
|
33
|
+
* A runbook you already have on disk is three things — what to do (prose),
|
|
34
|
+
* what to do it WITH (tools), and in what order (steps). This door used to
|
|
35
|
+
* carry the first and drop the other two, so the one thing the library exists
|
|
36
|
+
* to say ("extract the workflow you already have") arrived two-thirds empty.
|
|
37
|
+
* All three now cross:
|
|
38
|
+
*
|
|
39
|
+
* ---
|
|
40
|
+
* name: billing
|
|
41
|
+
* description: Use for refunds, charges and billing questions.
|
|
42
|
+
* tools: lookup_order, issue_refund
|
|
43
|
+
* steps:
|
|
44
|
+
* - lookup_order: look up the order before touching money
|
|
45
|
+
* - issue_refund: refund only what the lookup found
|
|
46
|
+
* onSkip: hold
|
|
47
|
+
* ---
|
|
48
|
+
* When handling billing: confirm identity first, then …
|
|
49
|
+
*
|
|
50
|
+
* const skills = await skillsFromDir('./skills', {
|
|
51
|
+
* tools: [lookupOrder, issueRefund], // the real Tools, from YOUR code
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* The remaining limits, and why each one is a decision rather than an
|
|
55
|
+
* oversight:
|
|
56
|
+
*
|
|
57
|
+
* - **the file names a tool; it never defines one.** A tool is code with an
|
|
58
|
+
* `execute`, and a markdown file has none. `tools:` is a list of NAMES,
|
|
59
|
+
* resolved against the `tools` registry the CALLER passes — so the file
|
|
60
|
+
* can only ever pick from capabilities you already handed in, and reading a
|
|
61
|
+
* directory can never introduce one. See "why this is not a code-execution
|
|
62
|
+
* vector" below.
|
|
63
|
+
* - **a name the registry does not carry is refused BY NAME at load** —
|
|
64
|
+
* never a skill that quietly loads without the tool it asked for, because
|
|
65
|
+
* that skill runs, sounds confident, and cannot do the job.
|
|
66
|
+
* - **no per-step `produces` / `consumes`** — the artifact vocabularies
|
|
67
|
+
* (9.25.0) are a build-time contract between skills, not runbook prose;
|
|
68
|
+
* declare them with `defineSkill` where the rest of the agent is declared.
|
|
69
|
+
* - **no `autoActivate`** — a directory does not decide the agent's tool
|
|
70
|
+
* posture. Say it once on the agent with `.toolsFromActiveSkill()`
|
|
71
|
+
* (9.36.0), which scopes every skill's tools to that skill's activation.
|
|
72
|
+
* Without it, a loaded skill's tools are on the wire from iteration 1, the
|
|
73
|
+
* same as any hand-written `defineSkill({ tools })`.
|
|
74
|
+
* - **no per-file `surfaceMode`, `cache` or `refreshPolicy`** — `surfaceMode`
|
|
75
|
+
* is settable for the WHOLE directory via `opts`, all of them or none; the
|
|
76
|
+
* others take `defineSkill`'s defaults.
|
|
77
|
+
* - unknown frontmatter keys are still IGNORED, not rejected, so a file
|
|
78
|
+
* carrying another tool's metadata still loads here. `name`,
|
|
79
|
+
* `description`, `tools`, `steps` and `onSkip` are the KNOWN keys — a file
|
|
80
|
+
* that used one of those five for something else is the one case this
|
|
81
|
+
* release can change, and it changes it loudly.
|
|
47
82
|
*
|
|
48
83
|
* A worked example feeding this into a graph:
|
|
49
84
|
* `examples/features/47-skills-from-dir-graph.ts`.
|
|
@@ -57,12 +92,24 @@
|
|
|
57
92
|
* only make about a path on your own disk at build time. Each file is read
|
|
58
93
|
* ONCE, here; a later edit does not reach a run already in flight.
|
|
59
94
|
*
|
|
95
|
+
* ── Why carrying tools is not a code-execution vector ───────────────────────
|
|
96
|
+
* Nothing in a SKILL.md is evaluated, imported, required or resolved as a
|
|
97
|
+
* path. `tools:` is a list of strings, and the only thing a string can do here
|
|
98
|
+
* is MATCH — against `tool.schema.name` in a registry the caller constructed in
|
|
99
|
+
* their own source, from their own imports. A hostile file can therefore ask
|
|
100
|
+
* for a tool you already gave the agent (and it would have to guess the name);
|
|
101
|
+
* it can never name a module, widen the agent's capabilities, or cause one byte
|
|
102
|
+
* of new code to run. The set of things this directory can do is a SUBSET of
|
|
103
|
+
* what the calling file already decided to do, which is the same property the
|
|
104
|
+
* local-path rule above buys for bodies.
|
|
105
|
+
*
|
|
60
106
|
* Node-only. `node:fs/promises` and `node:path` are imported lazily inside the
|
|
61
107
|
* call, the same gating `lib/tool-lint/cli.ts` uses: this module is reachable
|
|
62
108
|
* from the `agentfootprint/context` barrel, and a TOP-LEVEL node:fs
|
|
63
109
|
* import detonates a browser bundle at module-eval even when nothing calls it.
|
|
64
110
|
*/
|
|
65
111
|
import type { Injection } from './types.js';
|
|
112
|
+
import type { Tool } from '../../core/tools.js';
|
|
66
113
|
import { type SurfaceMode } from './factories/defineSkill.js';
|
|
67
114
|
export interface SkillsFromDirOptions {
|
|
68
115
|
/**
|
|
@@ -70,6 +117,21 @@ export interface SkillsFromDirOptions {
|
|
|
70
117
|
* `defineSkill`'s own default, `'auto'`. See {@link SurfaceMode}.
|
|
71
118
|
*/
|
|
72
119
|
readonly surfaceMode?: SurfaceMode;
|
|
120
|
+
/**
|
|
121
|
+
* The tools a file may NAME (9.36.0) — the resolution registry for every
|
|
122
|
+
* `tools:` declaration in the directory, matched by `tool.schema.name`.
|
|
123
|
+
*
|
|
124
|
+
* This is the half a markdown file cannot supply. The file picks; you decide
|
|
125
|
+
* what there is to pick FROM, in your own source, from your own imports. A
|
|
126
|
+
* declared name that is not in here is refused at load, naming the file, the
|
|
127
|
+
* name, and what this registry does carry.
|
|
128
|
+
*
|
|
129
|
+
* Pass every tool the directory might use; a tool nothing names is simply
|
|
130
|
+
* unused (no skill gets it, and no error). Omit the option entirely on a
|
|
131
|
+
* prose-only directory — a file that declares `tools:` with no registry
|
|
132
|
+
* passed is refused rather than loaded without them.
|
|
133
|
+
*/
|
|
134
|
+
readonly tools?: readonly Tool[];
|
|
73
135
|
}
|
|
74
136
|
/**
|
|
75
137
|
* Load every `SKILL.md` under `dir` as a Skill Injection.
|
|
@@ -88,8 +150,9 @@ export interface SkillsFromDirOptions {
|
|
|
88
150
|
*
|
|
89
151
|
* @throws when `dir` is not a local path, does not exist, is not a directory,
|
|
90
152
|
* or contains no `SKILL.md` at all; when a file's frontmatter is malformed
|
|
91
|
-
* (the message names the file);
|
|
92
|
-
* (the message names both)
|
|
153
|
+
* (the message names the file); when two files claim the same skill name
|
|
154
|
+
* (the message names both); or when a file names a tool the `tools` registry
|
|
155
|
+
* does not carry, or sequences a tool the file itself did not declare.
|
|
93
156
|
*/
|
|
94
157
|
export declare function skillsFromDir(dir: string, opts?: SkillsFromDirOptions): Promise<readonly Injection[]>;
|
|
95
158
|
//# sourceMappingURL=skillsFromDir.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillsFromDir.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillsFromDir.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"skillsFromDir.d.ts","sourceRoot":"","sources":["../../../../src/lib/injection-engine/skillsFromDir.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6GG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAmB3E,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;CAClC;AAsBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAyF/B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.36.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",
|