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.
Files changed (32) hide show
  1. package/dist/core/agent/AgentBuilder.js +85 -0
  2. package/dist/core/agent/AgentBuilder.js.map +1 -1
  3. package/dist/core/agent/buildToolRegistry.js +7 -0
  4. package/dist/core/agent/buildToolRegistry.js.map +1 -1
  5. package/dist/core/agent/toolsFromActiveSkill.js +79 -0
  6. package/dist/core/agent/toolsFromActiveSkill.js.map +1 -0
  7. package/dist/esm/core/agent/AgentBuilder.d.ts +62 -0
  8. package/dist/esm/core/agent/AgentBuilder.js +85 -0
  9. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  10. package/dist/esm/core/agent/buildToolRegistry.js +7 -0
  11. package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
  12. package/dist/esm/core/agent/toolsFromActiveSkill.d.ts +55 -0
  13. package/dist/esm/core/agent/toolsFromActiveSkill.js +75 -0
  14. package/dist/esm/core/agent/toolsFromActiveSkill.js.map +1 -0
  15. package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +7 -0
  16. package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
  17. package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +80 -17
  18. package/dist/esm/lib/injection-engine/skillsFromDir.js +348 -46
  19. package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -1
  20. package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
  21. package/dist/lib/injection-engine/skillsFromDir.js +348 -46
  22. package/dist/lib/injection-engine/skillsFromDir.js.map +1 -1
  23. package/dist/types/core/agent/AgentBuilder.d.ts +62 -0
  24. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  25. package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
  26. package/dist/types/core/agent/toolsFromActiveSkill.d.ts +56 -0
  27. package/dist/types/core/agent/toolsFromActiveSkill.d.ts.map +1 -0
  28. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +7 -0
  29. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
  30. package/dist/types/lib/injection-engine/skillsFromDir.d.ts +80 -17
  31. package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -1
  32. 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;;;;;;;;;;;;;;;;;;OAkBG;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"}
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 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.
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); or when two files claim the same skill name
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAe3E,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAeD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CA+E/B"}
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.35.0",
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",