agentfootprint 2.4.0 → 2.5.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 (187) hide show
  1. package/README.md +21 -3
  2. package/dist/adapters/llm/AnthropicProvider.js +2 -2
  3. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  4. package/dist/adapters/llm/BedrockProvider.js +2 -2
  5. package/dist/adapters/llm/BedrockProvider.js.map +1 -1
  6. package/dist/adapters/llm/BrowserAnthropicProvider.js +96 -28
  7. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  8. package/dist/adapters/llm/OpenAIProvider.js +2 -2
  9. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  10. package/dist/adapters/memory/agentcore.js +9 -3
  11. package/dist/adapters/memory/agentcore.js.map +1 -1
  12. package/dist/adapters/memory/redis.js +9 -3
  13. package/dist/adapters/memory/redis.js.map +1 -1
  14. package/dist/core/Agent.js +477 -79
  15. package/dist/core/Agent.js.map +1 -1
  16. package/dist/core/flowchartAsTool.js +188 -0
  17. package/dist/core/flowchartAsTool.js.map +1 -0
  18. package/dist/core/outputSchema.js +119 -0
  19. package/dist/core/outputSchema.js.map +1 -0
  20. package/dist/core/slots/buildSystemPromptSlot.js +8 -0
  21. package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
  22. package/dist/core/slots/buildToolsSlot.js +56 -5
  23. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  24. package/dist/esm/adapters/llm/AnthropicProvider.js +2 -2
  25. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  26. package/dist/esm/adapters/llm/BedrockProvider.js +2 -2
  27. package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
  28. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +96 -28
  29. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  30. package/dist/esm/adapters/llm/OpenAIProvider.js +2 -2
  31. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  32. package/dist/esm/adapters/memory/agentcore.js +9 -3
  33. package/dist/esm/adapters/memory/agentcore.js.map +1 -1
  34. package/dist/esm/adapters/memory/redis.js +9 -3
  35. package/dist/esm/adapters/memory/redis.js.map +1 -1
  36. package/dist/esm/core/Agent.js +476 -78
  37. package/dist/esm/core/Agent.js.map +1 -1
  38. package/dist/esm/core/flowchartAsTool.js +184 -0
  39. package/dist/esm/core/flowchartAsTool.js.map +1 -0
  40. package/dist/esm/core/outputSchema.js +113 -0
  41. package/dist/esm/core/outputSchema.js.map +1 -0
  42. package/dist/esm/core/slots/buildSystemPromptSlot.js +8 -0
  43. package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
  44. package/dist/esm/core/slots/buildToolsSlot.js +56 -5
  45. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  46. package/dist/esm/index.js +34 -5
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/lib/injection-engine/SkillRegistry.js +98 -0
  49. package/dist/esm/lib/injection-engine/SkillRegistry.js.map +1 -1
  50. package/dist/esm/lib/injection-engine/factories/defineSkill.js +1 -0
  51. package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
  52. package/dist/esm/lib/injection-engine/index.js +7 -0
  53. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  54. package/dist/esm/lib/injection-engine/skillTools.js +125 -0
  55. package/dist/esm/lib/injection-engine/skillTools.js.map +1 -0
  56. package/dist/esm/lib/injection-engine/types.js +8 -0
  57. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  58. package/dist/esm/lib/lazyRequire.js +33 -0
  59. package/dist/esm/lib/lazyRequire.js.map +1 -0
  60. package/dist/esm/lib/mcp/mcpClient.js +4 -6
  61. package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
  62. package/dist/esm/llm-providers.js +31 -0
  63. package/dist/esm/llm-providers.js.map +1 -0
  64. package/dist/esm/locales/index.js +144 -0
  65. package/dist/esm/locales/index.js.map +1 -0
  66. package/dist/esm/memory-providers.js +44 -0
  67. package/dist/esm/memory-providers.js.map +1 -0
  68. package/dist/esm/providers.js +11 -0
  69. package/dist/esm/providers.js.map +1 -1
  70. package/dist/esm/recorders/core/contextEngineering.js +155 -0
  71. package/dist/esm/recorders/core/contextEngineering.js.map +1 -0
  72. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +6 -1
  73. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  74. package/dist/esm/security/PermissionPolicy.js +135 -0
  75. package/dist/esm/security/PermissionPolicy.js.map +1 -0
  76. package/dist/esm/security/index.js +38 -0
  77. package/dist/esm/security/index.js.map +1 -0
  78. package/dist/esm/tool-providers/gatedTools.js +52 -0
  79. package/dist/esm/tool-providers/gatedTools.js.map +1 -0
  80. package/dist/esm/tool-providers/index.js +43 -0
  81. package/dist/esm/tool-providers/index.js.map +1 -0
  82. package/dist/esm/tool-providers/skillScopedTools.js +63 -0
  83. package/dist/esm/tool-providers/skillScopedTools.js.map +1 -0
  84. package/dist/esm/tool-providers/staticTools.js +33 -0
  85. package/dist/esm/tool-providers/staticTools.js.map +1 -0
  86. package/dist/esm/tool-providers/types.js +53 -0
  87. package/dist/esm/tool-providers/types.js.map +1 -0
  88. package/dist/index.js +55 -12
  89. package/dist/index.js.map +1 -1
  90. package/dist/lib/injection-engine/SkillRegistry.js +98 -0
  91. package/dist/lib/injection-engine/SkillRegistry.js.map +1 -1
  92. package/dist/lib/injection-engine/factories/defineSkill.js +1 -0
  93. package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
  94. package/dist/lib/injection-engine/index.js +11 -1
  95. package/dist/lib/injection-engine/index.js.map +1 -1
  96. package/dist/lib/injection-engine/skillTools.js +130 -0
  97. package/dist/lib/injection-engine/skillTools.js.map +1 -0
  98. package/dist/lib/injection-engine/types.js +8 -0
  99. package/dist/lib/injection-engine/types.js.map +1 -1
  100. package/dist/lib/lazyRequire.js +37 -0
  101. package/dist/lib/lazyRequire.js.map +1 -0
  102. package/dist/lib/mcp/mcpClient.js +4 -6
  103. package/dist/lib/mcp/mcpClient.js.map +1 -1
  104. package/dist/llm-providers.js +47 -0
  105. package/dist/llm-providers.js.map +1 -0
  106. package/dist/locales/index.js +149 -0
  107. package/dist/locales/index.js.map +1 -0
  108. package/dist/memory-providers.js +49 -0
  109. package/dist/memory-providers.js.map +1 -0
  110. package/dist/providers.js +11 -0
  111. package/dist/providers.js.map +1 -1
  112. package/dist/recorders/core/contextEngineering.js +161 -0
  113. package/dist/recorders/core/contextEngineering.js.map +1 -0
  114. package/dist/recorders/observability/commentary/commentaryTemplates.js +6 -1
  115. package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  116. package/dist/security/PermissionPolicy.js +139 -0
  117. package/dist/security/PermissionPolicy.js.map +1 -0
  118. package/dist/security/index.js +42 -0
  119. package/dist/security/index.js.map +1 -0
  120. package/dist/tool-providers/gatedTools.js +56 -0
  121. package/dist/tool-providers/gatedTools.js.map +1 -0
  122. package/dist/tool-providers/index.js +51 -0
  123. package/dist/tool-providers/index.js.map +1 -0
  124. package/dist/tool-providers/skillScopedTools.js +67 -0
  125. package/dist/tool-providers/skillScopedTools.js.map +1 -0
  126. package/dist/tool-providers/staticTools.js +37 -0
  127. package/dist/tool-providers/staticTools.js.map +1 -0
  128. package/dist/tool-providers/types.js +54 -0
  129. package/dist/tool-providers/types.js.map +1 -0
  130. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  131. package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
  132. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  133. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  134. package/dist/types/adapters/memory/agentcore.d.ts +7 -1
  135. package/dist/types/adapters/memory/agentcore.d.ts.map +1 -1
  136. package/dist/types/adapters/memory/redis.d.ts +7 -1
  137. package/dist/types/adapters/memory/redis.d.ts.map +1 -1
  138. package/dist/types/core/Agent.d.ts +202 -2
  139. package/dist/types/core/Agent.d.ts.map +1 -1
  140. package/dist/types/core/flowchartAsTool.d.ts +161 -0
  141. package/dist/types/core/flowchartAsTool.d.ts.map +1 -0
  142. package/dist/types/core/outputSchema.d.ts +128 -0
  143. package/dist/types/core/outputSchema.d.ts.map +1 -0
  144. package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
  145. package/dist/types/core/slots/buildToolsSlot.d.ts +10 -0
  146. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  147. package/dist/types/index.d.ts +8 -4
  148. package/dist/types/index.d.ts.map +1 -1
  149. package/dist/types/lib/injection-engine/SkillRegistry.d.ts +98 -0
  150. package/dist/types/lib/injection-engine/SkillRegistry.d.ts.map +1 -1
  151. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +33 -6
  152. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
  153. package/dist/types/lib/injection-engine/index.d.ts +5 -3
  154. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  155. package/dist/types/lib/injection-engine/skillTools.d.ts +73 -0
  156. package/dist/types/lib/injection-engine/skillTools.d.ts.map +1 -0
  157. package/dist/types/lib/injection-engine/types.d.ts +18 -0
  158. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  159. package/dist/types/lib/lazyRequire.d.ts +30 -0
  160. package/dist/types/lib/lazyRequire.d.ts.map +1 -0
  161. package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
  162. package/dist/types/llm-providers.d.ts +31 -0
  163. package/dist/types/llm-providers.d.ts.map +1 -0
  164. package/dist/types/locales/index.d.ts +133 -0
  165. package/dist/types/locales/index.d.ts.map +1 -0
  166. package/dist/types/memory-providers.d.ts +41 -0
  167. package/dist/types/memory-providers.d.ts.map +1 -0
  168. package/dist/types/providers.d.ts +11 -0
  169. package/dist/types/providers.d.ts.map +1 -1
  170. package/dist/types/recorders/core/contextEngineering.d.ts +137 -0
  171. package/dist/types/recorders/core/contextEngineering.d.ts.map +1 -0
  172. package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
  173. package/dist/types/security/PermissionPolicy.d.ts +125 -0
  174. package/dist/types/security/PermissionPolicy.d.ts.map +1 -0
  175. package/dist/types/security/index.d.ts +40 -0
  176. package/dist/types/security/index.d.ts.map +1 -0
  177. package/dist/types/tool-providers/gatedTools.d.ts +37 -0
  178. package/dist/types/tool-providers/gatedTools.d.ts.map +1 -0
  179. package/dist/types/tool-providers/index.d.ts +42 -0
  180. package/dist/types/tool-providers/index.d.ts.map +1 -0
  181. package/dist/types/tool-providers/skillScopedTools.d.ts +46 -0
  182. package/dist/types/tool-providers/skillScopedTools.d.ts.map +1 -0
  183. package/dist/types/tool-providers/staticTools.d.ts +22 -0
  184. package/dist/types/tool-providers/staticTools.d.ts.map +1 -0
  185. package/dist/types/tool-providers/types.d.ts +103 -0
  186. package/dist/types/tool-providers/types.d.ts.map +1 -0
  187. package/package.json +36 -2
@@ -0,0 +1,43 @@
1
+ /**
2
+ * agentfootprint/tool-providers — chainable tool dispatch + tool sources.
3
+ *
4
+ * Two layers under one subpath:
5
+ *
6
+ * 1. Tool dispatch (this folder)
7
+ * - `staticTools(arr)` — wrap a flat tool list
8
+ * - `gatedTools(inner, predicate)` — decorator that filters
9
+ * - `ToolProvider` interface — the contract
10
+ * - `ToolDispatchContext` — read-only context per iteration
11
+ *
12
+ * 2. Tool sources (re-exported from existing modules)
13
+ * - `mcpClient(opts)` — connect to an MCP server (real)
14
+ * - `mockMcpClient({ tools })` — in-memory MCP source for dev / tests
15
+ *
16
+ * Compose freely. The dispatch layer is decorator-shaped (mirroring
17
+ * `withRetry` / `withFallback` over LLMProvider). Tool sources produce
18
+ * `Tool[]` that flow into a `staticTools(arr)` provider, which can
19
+ * then be wrapped by `gatedTools(...)` for permission gating or
20
+ * per-skill filtering.
21
+ *
22
+ * @example Static (90% case — what `agent.tools(arr)` does today)
23
+ * const provider = staticTools([weatherTool, lookupTool]);
24
+ *
25
+ * @example Read-only enforcement
26
+ * const readOnly = gatedTools(
27
+ * staticTools(allTools),
28
+ * (name) => policy.isAllowed(name),
29
+ * );
30
+ *
31
+ * @example MCP source + permission gate
32
+ * const slack = await mcpClient({ transport: ... });
33
+ * const slackTools = await slack.tools();
34
+ * const provider = gatedTools(staticTools(slackTools), (name) => allowed(name));
35
+ */
36
+ export { staticTools } from './staticTools.js';
37
+ export { gatedTools } from './gatedTools.js';
38
+ export { skillScopedTools } from './skillScopedTools.js';
39
+ // Re-export tool sources from the MCP module so consumers find them in
40
+ // one place. The top-level barrel still exports `mcpClient` for v2.2
41
+ // back-compat.
42
+ export { mcpClient, mockMcpClient } from '../lib/mcp/index.js';
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,uEAAuE;AACvE,qEAAqE;AACrE,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * skillScopedTools — ToolProvider that exposes a tool subset only when
3
+ * a specific Skill is active in the current iteration's context.
4
+ *
5
+ * The Block A5 piece. Pairs with `defineSkill({ autoActivate: 'currentSkill' })`
6
+ * to give the LLM a sharper choice space: when `billing` activates, the
7
+ * tool list flips from "all 25 agent tools" to "the 7 billing tools" +
8
+ * any baseline (always-on) tools the consumer composes alongside.
9
+ *
10
+ * Pattern: gated ToolProvider keyed by `ctx.activeSkillId`. Pure compute;
11
+ * no Agent-runtime dependency. Composes freely with `staticTools`
12
+ * for the always-on baseline.
13
+ *
14
+ * @example One skill's tools, scoped by activation
15
+ * const billingTools = skillScopedTools('billing', [refundTool, chargeTool]);
16
+ * billingTools.list({ iteration: 1, activeSkillId: 'billing', identity: ... });
17
+ * // → [refundTool, chargeTool]
18
+ * billingTools.list({ iteration: 1, activeSkillId: 'refund', identity: ... });
19
+ * // → [] (different skill active)
20
+ * billingTools.list({ iteration: 1, identity: ... });
21
+ * // → [] (no skill active)
22
+ *
23
+ * @example Compose with baseline + multiple skills
24
+ * const baseline = staticTools([lookupOrderTool, listSkills, readSkill]);
25
+ * const billingTbx = skillScopedTools('billing', [refundTool, chargeTool]);
26
+ * const refundTbx = skillScopedTools('refund', [reverseTool]);
27
+ *
28
+ * // Wrap each scope-provider in a gatedTools for downstream composition,
29
+ * // OR build a small wrapper that concatenates list(ctx) outputs:
30
+ * const provider: ToolProvider = {
31
+ * id: 'composite',
32
+ * list: (ctx) => [
33
+ * ...baseline.list(ctx),
34
+ * ...billingTbx.list(ctx),
35
+ * ...refundTbx.list(ctx),
36
+ * ],
37
+ * };
38
+ *
39
+ * Note: the runtime that POPULATES `ctx.activeSkillId` from
40
+ * `scope.activatedInjectionIds` lands in Block C / v2.5+. Today,
41
+ * consumers can drive it manually for tests + design-time inspection.
42
+ */
43
+ // #region skillScopedTools
44
+ export function skillScopedTools(skillId, tools) {
45
+ if (!skillId || skillId.trim().length === 0) {
46
+ throw new Error('skillScopedTools: `skillId` is required and must be non-empty.');
47
+ }
48
+ // Capture the tool list once. `list()` returns a fresh array each
49
+ // call (matches the staticTools / gatedTools convention so the
50
+ // agent's reference-equality check always sees an update).
51
+ const captured = [...tools];
52
+ return {
53
+ id: `skill-scoped:${skillId}`,
54
+ list(ctx) {
55
+ // Empty list when the skill is not active.
56
+ if (ctx.activeSkillId !== skillId)
57
+ return [];
58
+ return [...captured];
59
+ },
60
+ };
61
+ }
62
+ // #endregion skillScopedTools
63
+ //# sourceMappingURL=skillScopedTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillScopedTools.js","sourceRoot":"","sources":["../../../src/tool-providers/skillScopedTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,2BAA2B;AAC3B,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAsB;IACtE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,kEAAkE;IAClE,+DAA+D;IAC/D,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,OAAO;QACL,EAAE,EAAE,gBAAgB,OAAO,EAAE;QAC7B,IAAI,CAAC,GAAwB;YAC3B,2CAA2C;YAC3C,IAAI,GAAG,CAAC,aAAa,KAAK,OAAO;gBAAE,OAAO,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AACD,8BAA8B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * staticTools — the simplest ToolProvider. Wraps a fixed Tool[] list.
3
+ *
4
+ * 90% case. What `agent.tools(arr)` does today, made composable.
5
+ * Equivalent to passing `arr` directly EXCEPT that `staticTools(arr)`
6
+ * is now a `ToolProvider` you can wrap with `gatedTools(...)` for
7
+ * permission filtering or per-skill gating.
8
+ *
9
+ * Pattern: identity ToolProvider — no filtering, just exposes the
10
+ * underlying list verbatim.
11
+ *
12
+ * @example
13
+ * const provider = staticTools([weatherTool, lookupTool]);
14
+ * // Materialize the visible list and register via .tools(...).
15
+ * // Direct .toolProvider(...) wiring on the builder lands in Block A5 / v2.5+.
16
+ * const visible = provider.list({ iteration: 0, identity: { conversationId: '_' } });
17
+ * const agent = Agent.create({ provider: llm, model }).tools(visible).build();
18
+ */
19
+ // #region staticTools
20
+ export function staticTools(tools) {
21
+ // Capture the input list once. `list()` returns a fresh array each
22
+ // call so the agent's reference-equality check always sees an update
23
+ // (matches the `gatedTools` decorator's per-call recomputation).
24
+ const captured = [...tools];
25
+ return {
26
+ id: 'static',
27
+ list(_ctx) {
28
+ return [...captured];
29
+ },
30
+ };
31
+ }
32
+ // #endregion staticTools
33
+ //# sourceMappingURL=staticTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staticTools.js","sourceRoot":"","sources":["../../../src/tool-providers/staticTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,sBAAsB;AACtB,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,mEAAmE;IACnE,qEAAqE;IACrE,iEAAiE;IACjE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,IAAI,CAAC,IAAyB;YAC5B,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AACD,yBAAyB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * ToolProvider — abstraction over tool dispatch.
3
+ *
4
+ * v2.4 shipped tools as a flat array on the agent (registered via
5
+ * `agent.tool(t)` / `agent.tools(arr)`). That model breaks down once
6
+ * production agents need:
7
+ * 1. Permission gating per-tool, per-caller (read-only roles, etc.)
8
+ * 2. Per-skill tool gating (only show the active skill's tools to
9
+ * the LLM each turn)
10
+ * 3. Composable filters (a `withReadonly` decorator over a `withSkill`
11
+ * decorator over the base tool list)
12
+ *
13
+ * `ToolProvider` is the answer: a chainable abstraction over "what
14
+ * tools does the LLM see right now?". The agent asks the provider
15
+ * each iteration; the provider returns the visible tool set computed
16
+ * from whatever predicates / role gates / skill filters the consumer
17
+ * composed.
18
+ *
19
+ * Pattern: Strategy (GoF) — each ToolProvider is a strategy for
20
+ * "compute the visible tool list given current context".
21
+ * Decorator (GoF) — `gatedTools(inner, predicate)` wraps any
22
+ * provider with an additional filter, mirroring how `withRetry`
23
+ * / `withFallback` decorate `LLMProvider`.
24
+ * Role: Layer-3 tool-dispatch primitive. Agent calls `provider.list(ctx)`
25
+ * each iteration to compute the visible tool set.
26
+ * Emits: N/A (pure compute; permission denials emit elsewhere via the
27
+ * permission subsystem).
28
+ *
29
+ * @example Static tool list (90% case — what `.tools(arr)` does today)
30
+ * const provider = staticTools([weather, lookupOrder]);
31
+ *
32
+ * @example Read-only enforcement (role-based gate)
33
+ * const readOnlyProvider = gatedTools(
34
+ * staticTools([weather, lookupOrder, processRefund]),
35
+ * (toolName) => policy.isAllowed(toolName),
36
+ * );
37
+ *
38
+ * @example Skill-gated dispatch (only active skill's tools visible)
39
+ * const skillGated = gatedTools(
40
+ * staticTools(allTools),
41
+ * (toolName, ctx) => ctx.activeSkillId
42
+ * ? skillsToolMap[ctx.activeSkillId].includes(toolName)
43
+ * : alwaysVisible.includes(toolName),
44
+ * );
45
+ *
46
+ * @example Stack: read-only over skill-gated
47
+ * const provider = gatedTools(
48
+ * gatedTools(staticTools(allTools), readOnlyPredicate),
49
+ * skillGatePredicate,
50
+ * );
51
+ */
52
+ export {};
53
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tool-providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG"}
package/dist/index.js CHANGED
@@ -21,8 +21,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
21
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.ConditionalBuilder = exports.Conditional = exports.ParallelBuilder = exports.Parallel = exports.SequenceBuilder = exports.Sequence = exports.defineTool = exports.AgentBuilder = exports.Agent = exports.LLMCallBuilder = exports.LLMCall = exports.renderThinkingLine = exports.selectThinkingState = exports.defaultThinkingTemplates = exports.renderCommentary = exports.extractCommentaryVars = exports.selectCommentaryKey = exports.defaultCommentaryTemplates = exports.boundaryRecorder = exports.BoundaryRecorder = exports.attachFlowchart = exports.LoggingDomains = exports.attachLogging = exports.attachThinking = exports.isPaused = exports.isPauseRequest = exports.askHuman = exports.pauseHere = exports.makeRunId = exports.RunnerBase = exports.typedEmit = exports.skillRecorder = exports.memoryRecorder = exports.evalRecorder = exports.permissionRecorder = exports.costRecorder = exports.compositionRecorder = exports.agentRecorder = exports.streamRecorder = exports.EmitBridge = exports.ContextRecorder = exports.parseSubflowPath = exports.buildEventMeta = exports.COMPOSITION_KEYS = exports.isInjectionKey = exports.injectionKeyForSlot = exports.INJECTION_KEYS = exports.EventDispatcher = exports.ALL_EVENT_TYPES = exports.EVENT_NAMES = void 0;
25
- exports.mockMcpClient = exports.mcpClient = exports.indexDocuments = exports.defineRAG = exports.identityNamespace = exports.mockEmbedder = exports.InMemoryStore = exports.SNAPSHOT_PROJECTIONS = exports.MEMORY_TIMING = exports.MEMORY_STRATEGIES = exports.MEMORY_TYPES = exports.defineMemory = exports.llmFactExtractor = exports.patternFactExtractor = exports.llmExtractor = exports.heuristicExtractor = exports.autoPipeline = exports.semanticPipeline = exports.narrativePipeline = exports.factPipeline = exports.ephemeralPipeline = exports.defaultPipeline = exports.defineFact = exports.defineSteering = exports.SkillRegistry = exports.resolveSurfaceMode = exports.defineSkill = exports.defineInstruction = exports.buildInjectionEngineSubflow = exports.evaluateInjections = exports.encodeSSE = exports.SSEFormatter = exports.toSSE = exports.createProvider = exports.BrowserOpenAIProvider = exports.browserOpenai = exports.BrowserAnthropicProvider = exports.browserAnthropic = exports.BedrockProvider = exports.bedrock = exports.ollama = exports.OpenAIProvider = exports.openai = exports.AnthropicProvider = exports.anthropic = exports.mock = exports.MockProvider = exports.LoopBuilder = exports.Loop = void 0;
24
+ exports.applyOutputSchema = exports.OutputSchemaError = exports.AgentBuilder = exports.Agent = exports.LLMCallBuilder = exports.LLMCall = exports.renderThinkingLine = exports.selectThinkingState = exports.defaultThinkingTemplates = exports.renderCommentary = exports.extractCommentaryVars = exports.selectCommentaryKey = exports.defaultCommentaryTemplates = exports.boundaryRecorder = exports.BoundaryRecorder = exports.attachFlowchart = exports.LoggingDomains = exports.attachLogging = exports.attachThinking = exports.isPaused = exports.isPauseRequest = exports.askHuman = exports.pauseHere = exports.makeRunId = exports.RunnerBase = exports.typedEmit = exports.skillRecorder = exports.memoryRecorder = exports.evalRecorder = exports.permissionRecorder = exports.costRecorder = exports.compositionRecorder = exports.agentRecorder = exports.streamRecorder = exports.EmitBridge = exports.BASELINE_SOURCES = exports.ENGINEERED_SOURCES = exports.isBaselineSource = exports.isEngineeredSource = exports.contextEngineering = exports.ContextRecorder = exports.parseSubflowPath = exports.buildEventMeta = exports.COMPOSITION_KEYS = exports.isInjectionKey = exports.injectionKeyForSlot = exports.INJECTION_KEYS = exports.EventDispatcher = exports.ALL_EVENT_TYPES = exports.EVENT_NAMES = void 0;
25
+ exports.identityNamespace = exports.mockEmbedder = exports.InMemoryStore = exports.SNAPSHOT_PROJECTIONS = exports.MEMORY_TIMING = exports.MEMORY_STRATEGIES = exports.MEMORY_TYPES = exports.defineMemory = exports.llmFactExtractor = exports.patternFactExtractor = exports.llmExtractor = exports.heuristicExtractor = exports.autoPipeline = exports.semanticPipeline = exports.narrativePipeline = exports.factPipeline = exports.ephemeralPipeline = exports.defaultPipeline = exports.defineFact = exports.defineSteering = exports.buildReadSkillTool = exports.buildListSkillsTool = exports.SkillRegistry = exports.resolveSurfaceMode = exports.defineSkill = exports.defineInstruction = exports.projectActiveInjection = exports.buildInjectionEngineSubflow = exports.evaluateInjections = exports.encodeSSE = exports.SSEFormatter = exports.toSSE = exports.createProvider = exports.BrowserOpenAIProvider = exports.browserOpenai = exports.BrowserAnthropicProvider = exports.browserAnthropic = exports.mock = exports.MockProvider = exports.LoopBuilder = exports.Loop = exports.ConditionalBuilder = exports.Conditional = exports.ParallelBuilder = exports.Parallel = exports.SequenceBuilder = exports.Sequence = exports.defineTool = exports.flowchartAsTool = exports.buildDefaultInstruction = void 0;
26
+ exports.validateMessages = exports.composeMessages = exports.defaultThinkingMessages = exports.defaultCommentaryMessages = exports.PermissionPolicy = exports.skillScopedTools = exports.gatedTools = exports.staticTools = exports.mockMcpClient = exports.mcpClient = exports.indexDocuments = exports.defineRAG = void 0;
26
27
  // Events — registry, types, payloads
27
28
  __exportStar(require("./events/types.js"), exports);
28
29
  __exportStar(require("./events/payloads.js"), exports);
@@ -54,6 +55,12 @@ Object.defineProperty(exports, "parseSubflowPath", { enumerable: true, get: func
54
55
  // Core recorders
55
56
  var ContextRecorder_js_1 = require("./recorders/core/ContextRecorder.js");
56
57
  Object.defineProperty(exports, "ContextRecorder", { enumerable: true, get: function () { return ContextRecorder_js_1.ContextRecorder; } });
58
+ var contextEngineering_js_1 = require("./recorders/core/contextEngineering.js");
59
+ Object.defineProperty(exports, "contextEngineering", { enumerable: true, get: function () { return contextEngineering_js_1.contextEngineering; } });
60
+ Object.defineProperty(exports, "isEngineeredSource", { enumerable: true, get: function () { return contextEngineering_js_1.isEngineeredSource; } });
61
+ Object.defineProperty(exports, "isBaselineSource", { enumerable: true, get: function () { return contextEngineering_js_1.isBaselineSource; } });
62
+ Object.defineProperty(exports, "ENGINEERED_SOURCES", { enumerable: true, get: function () { return contextEngineering_js_1.ENGINEERED_SOURCES; } });
63
+ Object.defineProperty(exports, "BASELINE_SOURCES", { enumerable: true, get: function () { return contextEngineering_js_1.BASELINE_SOURCES; } });
57
64
  var EmitBridge_js_1 = require("./recorders/core/EmitBridge.js");
58
65
  Object.defineProperty(exports, "EmitBridge", { enumerable: true, get: function () { return EmitBridge_js_1.EmitBridge; } });
59
66
  var StreamRecorder_js_1 = require("./recorders/core/StreamRecorder.js");
@@ -123,6 +130,12 @@ Object.defineProperty(exports, "LLMCallBuilder", { enumerable: true, get: functi
123
130
  var Agent_js_1 = require("./core/Agent.js");
124
131
  Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return Agent_js_1.Agent; } });
125
132
  Object.defineProperty(exports, "AgentBuilder", { enumerable: true, get: function () { return Agent_js_1.AgentBuilder; } });
133
+ var outputSchema_js_1 = require("./core/outputSchema.js");
134
+ Object.defineProperty(exports, "OutputSchemaError", { enumerable: true, get: function () { return outputSchema_js_1.OutputSchemaError; } });
135
+ Object.defineProperty(exports, "applyOutputSchema", { enumerable: true, get: function () { return outputSchema_js_1.applyOutputSchema; } });
136
+ Object.defineProperty(exports, "buildDefaultInstruction", { enumerable: true, get: function () { return outputSchema_js_1.buildDefaultInstruction; } });
137
+ var flowchartAsTool_js_1 = require("./core/flowchartAsTool.js");
138
+ Object.defineProperty(exports, "flowchartAsTool", { enumerable: true, get: function () { return flowchartAsTool_js_1.flowchartAsTool; } });
126
139
  var tools_js_1 = require("./core/tools.js");
127
140
  Object.defineProperty(exports, "defineTool", { enumerable: true, get: function () { return tools_js_1.defineTool; } });
128
141
  // Slot subflow builders are intentionally NOT exported. They are
@@ -149,19 +162,24 @@ Object.defineProperty(exports, "LoopBuilder", { enumerable: true, get: function
149
162
  // Adapters — LLM providers
150
163
  // `mock(...)` is the lowercase factory equivalent to `new MockProvider(...)`.
151
164
  // `anthropic(...)` is the real Claude provider via `@anthropic-ai/sdk`.
165
+ // Zero-peer-dep providers — safe to re-export from the main barrel
166
+ // because bundlers walking these never touch optional peer-dep code.
167
+ //
168
+ // Vendor-SDK-backed providers (AnthropicProvider, OpenAIProvider,
169
+ // BedrockProvider) live ONLY at `agentfootprint/llm-providers` (or
170
+ // the legacy `agentfootprint/providers` alias). That subpath
171
+ // segregation means bundlers walking from `agentfootprint` main
172
+ // never see the lazy peer-dep requires for `@anthropic-ai/sdk`,
173
+ // `openai`, `@aws-sdk/client-bedrock-runtime`, etc. — automatic
174
+ // tree-shaking, no bundler-side workarounds.
175
+ //
176
+ // Migration (v2.4 → v2.5):
177
+ // import { AnthropicProvider } from 'agentfootprint'; // ❌ removed
178
+ // import { AnthropicProvider } from 'agentfootprint/llm-providers'; // ✓ canonical
179
+ // import { AnthropicProvider } from 'agentfootprint/providers'; // ✓ legacy alias
152
180
  var MockProvider_js_1 = require("./adapters/llm/MockProvider.js");
153
181
  Object.defineProperty(exports, "MockProvider", { enumerable: true, get: function () { return MockProvider_js_1.MockProvider; } });
154
182
  Object.defineProperty(exports, "mock", { enumerable: true, get: function () { return MockProvider_js_1.mock; } });
155
- var AnthropicProvider_js_1 = require("./adapters/llm/AnthropicProvider.js");
156
- Object.defineProperty(exports, "anthropic", { enumerable: true, get: function () { return AnthropicProvider_js_1.anthropic; } });
157
- Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return AnthropicProvider_js_1.AnthropicProvider; } });
158
- var OpenAIProvider_js_1 = require("./adapters/llm/OpenAIProvider.js");
159
- Object.defineProperty(exports, "openai", { enumerable: true, get: function () { return OpenAIProvider_js_1.openai; } });
160
- Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return OpenAIProvider_js_1.OpenAIProvider; } });
161
- Object.defineProperty(exports, "ollama", { enumerable: true, get: function () { return OpenAIProvider_js_1.ollama; } });
162
- var BedrockProvider_js_1 = require("./adapters/llm/BedrockProvider.js");
163
- Object.defineProperty(exports, "bedrock", { enumerable: true, get: function () { return BedrockProvider_js_1.bedrock; } });
164
- Object.defineProperty(exports, "BedrockProvider", { enumerable: true, get: function () { return BedrockProvider_js_1.BedrockProvider; } });
165
183
  var BrowserAnthropicProvider_js_1 = require("./adapters/llm/BrowserAnthropicProvider.js");
166
184
  Object.defineProperty(exports, "browserAnthropic", { enumerable: true, get: function () { return BrowserAnthropicProvider_js_1.browserAnthropic; } });
167
185
  Object.defineProperty(exports, "BrowserAnthropicProvider", { enumerable: true, get: function () { return BrowserAnthropicProvider_js_1.BrowserAnthropicProvider; } });
@@ -181,11 +199,14 @@ var index_js_1 = require("./lib/injection-engine/index.js");
181
199
  // Engine
182
200
  Object.defineProperty(exports, "evaluateInjections", { enumerable: true, get: function () { return index_js_1.evaluateInjections; } });
183
201
  Object.defineProperty(exports, "buildInjectionEngineSubflow", { enumerable: true, get: function () { return index_js_1.buildInjectionEngineSubflow; } });
202
+ Object.defineProperty(exports, "projectActiveInjection", { enumerable: true, get: function () { return index_js_1.projectActiveInjection; } });
184
203
  // Sugar factories — one per injection flavor
185
204
  Object.defineProperty(exports, "defineInstruction", { enumerable: true, get: function () { return index_js_1.defineInstruction; } });
186
205
  Object.defineProperty(exports, "defineSkill", { enumerable: true, get: function () { return index_js_1.defineSkill; } });
187
206
  Object.defineProperty(exports, "resolveSurfaceMode", { enumerable: true, get: function () { return index_js_1.resolveSurfaceMode; } });
188
207
  Object.defineProperty(exports, "SkillRegistry", { enumerable: true, get: function () { return index_js_1.SkillRegistry; } });
208
+ Object.defineProperty(exports, "buildListSkillsTool", { enumerable: true, get: function () { return index_js_1.buildListSkillsTool; } });
209
+ Object.defineProperty(exports, "buildReadSkillTool", { enumerable: true, get: function () { return index_js_1.buildReadSkillTool; } });
189
210
  Object.defineProperty(exports, "defineSteering", { enumerable: true, get: function () { return index_js_1.defineSteering; } });
190
211
  Object.defineProperty(exports, "defineFact", { enumerable: true, get: function () { return index_js_1.defineFact; } });
191
212
  // Patterns — factory functions composing primitives + core-flow into
@@ -238,4 +259,26 @@ Object.defineProperty(exports, "indexDocuments", { enumerable: true, get: functi
238
259
  var index_js_7 = require("./lib/mcp/index.js");
239
260
  Object.defineProperty(exports, "mcpClient", { enumerable: true, get: function () { return index_js_7.mcpClient; } });
240
261
  Object.defineProperty(exports, "mockMcpClient", { enumerable: true, get: function () { return index_js_7.mockMcpClient; } });
262
+ // Tool dispatch primitives (v2.5+). New `agentfootprint/tool-providers`
263
+ // subpath bundles tool sources (mcpClient / mockMcpClient) with tool
264
+ // dispatch primitives (staticTools / gatedTools) so consumers find
265
+ // "everything tool-related" in one place. Top-level barrel re-exports
266
+ // the dispatch primitives too — `mcpClient` already re-exports above.
267
+ var index_js_8 = require("./tool-providers/index.js");
268
+ Object.defineProperty(exports, "staticTools", { enumerable: true, get: function () { return index_js_8.staticTools; } });
269
+ Object.defineProperty(exports, "gatedTools", { enumerable: true, get: function () { return index_js_8.gatedTools; } });
270
+ Object.defineProperty(exports, "skillScopedTools", { enumerable: true, get: function () { return index_js_8.skillScopedTools; } });
271
+ // Cross-cutting authorization (v2.5+). `agentfootprint/security` is the
272
+ // dedicated subpath; the root barrel also re-exports `PermissionPolicy`
273
+ // so existing v2.4 consumers find it at the top level.
274
+ var index_js_9 = require("./security/index.js");
275
+ Object.defineProperty(exports, "PermissionPolicy", { enumerable: true, get: function () { return index_js_9.PermissionPolicy; } });
276
+ // Message Catalog Pattern (v2.5+). `agentfootprint/locales` is the
277
+ // dedicated subpath; the root barrel also re-exports the helpers so
278
+ // existing v2.4 consumers find them at the top level.
279
+ var index_js_10 = require("./locales/index.js");
280
+ Object.defineProperty(exports, "defaultCommentaryMessages", { enumerable: true, get: function () { return index_js_10.defaultCommentaryMessages; } });
281
+ Object.defineProperty(exports, "defaultThinkingMessages", { enumerable: true, get: function () { return index_js_10.defaultThinkingMessages; } });
282
+ Object.defineProperty(exports, "composeMessages", { enumerable: true, get: function () { return index_js_10.composeMessages; } });
283
+ Object.defineProperty(exports, "validateMessages", { enumerable: true, get: function () { return index_js_10.validateMessages; } });
241
284
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -26,8 +26,27 @@
26
26
  */
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.SkillRegistry = void 0;
29
+ const skillTools_js_1 = require("./skillTools.js");
30
+ const defineSkill_js_1 = require("./factories/defineSkill.js");
29
31
  class SkillRegistry {
30
32
  skills = new Map();
33
+ opts;
34
+ /**
35
+ * Construct an empty registry. Optional `{ surfaceMode, providerHint }`
36
+ * fields set registry-level defaults; absent both, the registry is a
37
+ * pure container (the v2.4 surface).
38
+ */
39
+ constructor(opts = {}) {
40
+ this.opts = Object.freeze({ ...opts });
41
+ }
42
+ /** Registry-level default `surfaceMode`, or `undefined` if unset. */
43
+ get surfaceMode() {
44
+ return this.opts.surfaceMode;
45
+ }
46
+ /** Registry-level provider hint, or `undefined` if unset. */
47
+ get providerHint() {
48
+ return this.opts.providerHint;
49
+ }
31
50
  /**
32
51
  * Register a skill. Throws if `skill.flavor !== 'skill'` or if a
33
52
  * skill with the same id is already registered (use `.replace(...)`
@@ -82,6 +101,85 @@ class SkillRegistry {
82
101
  clear() {
83
102
  this.skills.clear();
84
103
  }
104
+ /**
105
+ * Materialize the LLM-facing skill discovery tools from the current
106
+ * registry contents. Returns `{ listSkills, readSkill }`:
107
+ *
108
+ * - `list_skills` — no-arg tool the LLM calls to enumerate
109
+ * `{ id, description }` for every registered skill. Lets the
110
+ * LLM discover skills without paying the prompt-token cost of
111
+ * a static catalog in the system prompt.
112
+ *
113
+ * - `read_skill({ id })` — activates the named skill for the
114
+ * NEXT iteration. The Agent's tool-calls subflow inspects this
115
+ * tool call by name and updates `scope.activatedInjectionIds`
116
+ * so the InjectionEngine on iter N+1 includes the skill in the
117
+ * active set (body lands in the system slot; gated tools land
118
+ * in the tools slot).
119
+ *
120
+ * Both entries are `undefined` when the registry is empty — filter
121
+ * before adding to a tool list:
122
+ *
123
+ * const { listSkills, readSkill } = registry.toTools();
124
+ * const tools = [listSkills, readSkill, ...other].filter(Boolean) as Tool[];
125
+ *
126
+ * Composes with `gatedTools` from `agentfootprint/tool-providers`
127
+ * so PermissionPolicy can scope which roles see the skill discovery
128
+ * surface.
129
+ *
130
+ * @returns A `SkillToolPair` (`{ listSkills, readSkill }`).
131
+ */
132
+ toTools() {
133
+ const skills = this.list();
134
+ return {
135
+ listSkills: (0, skillTools_js_1.buildListSkillsTool)(skills),
136
+ readSkill: (0, skillTools_js_1.buildReadSkillTool)(skills),
137
+ };
138
+ }
139
+ /**
140
+ * Resolve the effective `surfaceMode` for a skill, applying the
141
+ * cascade:
142
+ *
143
+ * 1. If the skill's own `metadata.surfaceMode` is concrete
144
+ * (`'system-prompt'` / `'tool-only'` / `'both'`), return it.
145
+ * Per-skill explicit choice always wins.
146
+ * 2. Else if the registry was constructed with a concrete
147
+ * `surfaceMode`, return that.
148
+ * 3. Else delegate to `resolveSurfaceMode(provider, model)` using
149
+ * the explicit `provider` arg (or `this.providerHint` if
150
+ * omitted). Falls back to `'tool-only'` when no provider is
151
+ * known.
152
+ *
153
+ * Forward-compat for Block C / v2.5 per-mode runtime routing: the
154
+ * runtime calls this with the agent's provider + model to decide
155
+ * how to materialize the skill's body into slots.
156
+ *
157
+ * Throws if the skill is not registered (catches typos at the
158
+ * caller site rather than silently resolving against a stranger).
159
+ *
160
+ * @param skillOrId A registered Skill `Injection` OR its `id`.
161
+ * @param provider Provider name override (wins over `providerHint`).
162
+ * @param model Model name for the per-provider attention rule.
163
+ */
164
+ resolveForSkill(skillOrId, provider, model) {
165
+ const skill = typeof skillOrId === 'string' ? this.get(skillOrId) : skillOrId;
166
+ if (!skill) {
167
+ const id = typeof skillOrId === 'string' ? skillOrId : skillOrId.id;
168
+ throw new Error(`SkillRegistry.resolveForSkill: no skill registered at id '${id}'.`);
169
+ }
170
+ if (skill.flavor !== 'skill') {
171
+ throw new Error(`SkillRegistry.resolveForSkill: '${skill.id}' has flavor '${skill.flavor}', expected 'skill'.`);
172
+ }
173
+ const meta = skill.metadata;
174
+ const skillMode = meta?.surfaceMode;
175
+ if (skillMode && skillMode !== 'auto')
176
+ return skillMode;
177
+ if (this.opts.surfaceMode && this.opts.surfaceMode !== 'auto') {
178
+ return this.opts.surfaceMode;
179
+ }
180
+ const effectiveProvider = provider ?? this.opts.providerHint ?? 'unknown';
181
+ return (0, defineSkill_js_1.resolveSurfaceMode)(effectiveProvider, model);
182
+ }
85
183
  }
86
184
  exports.SkillRegistry = SkillRegistry;
87
185
  //# sourceMappingURL=SkillRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkillRegistry.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/SkillRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAIH,MAAa,aAAa;IACP,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEvD;;;;OAIG;IACH,QAAQ,CAAC,KAAgB;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,4EAA4E,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,EAAE,wCAAwC,CACpJ,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,CAAC,EAAE,0CAA0C,KAAK,CAAC,EAAE,yBAAyB,CACtH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uEAAuE;IACvE,OAAO,CAAC,EAAU,EAAE,KAAgB;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,kDAAkD,EAAE,uCAAuC,CAC5F,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,mEAAmE,KAAK,CAAC,MAAM,IAAI,CACpF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,CAAC,EAAE,mCAAmC,EAAE,oFAAoF,CACvK,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAqD;IACrD,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0DAA0D;IAC1D,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,wDAAwD;IACxD,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,+DAA+D;IAC/D,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,8BAA8B;IAC9B,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AA1ED,sCA0EC"}
1
+ {"version":3,"file":"SkillRegistry.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/SkillRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAGH,mDAA8F;AAC9F,+DAAkF;AAkClF,MAAa,aAAa;IACP,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IACtC,IAAI,CAAuB;IAE5C;;;;OAIG;IACH,YAAY,OAA6B,EAAE;QACzC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,6DAA6D;IAC7D,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,KAAgB;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,4EAA4E,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,EAAE,wCAAwC,CACpJ,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,CAAC,EAAE,0CAA0C,KAAK,CAAC,EAAE,yBAAyB,CACtH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uEAAuE;IACvE,OAAO,CAAC,EAAU,EAAE,KAAgB;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,kDAAkD,EAAE,uCAAuC,CAC5F,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,mEAAmE,KAAK,CAAC,MAAM,IAAI,CACpF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,CAAC,EAAE,mCAAmC,EAAE,oFAAoF,CACvK,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAqD;IACrD,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0DAA0D;IAC1D,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,wDAAwD;IACxD,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,+DAA+D;IAC/D,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,8BAA8B;IAC9B,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO;YACL,UAAU,EAAE,IAAA,mCAAmB,EAAC,MAAM,CAAC;YACvC,SAAS,EAAE,IAAA,kCAAkB,EAAC,MAAM,CAAC;SACtC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,eAAe,CACb,SAA6B,EAC7B,QAAiB,EACjB,KAAc;QAEd,MAAM,KAAK,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,6DAA6D,EAAE,IAAI,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,CAAC,EAAE,iBAAiB,KAAK,CAAC,MAAM,sBAAsB,CAC/F,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,QAAqD,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,EAAE,WAAW,CAAC;QACpC,IAAI,SAAS,IAAI,SAAS,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAExD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/B,CAAC;QAED,MAAM,iBAAiB,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC;QAC1E,OAAO,IAAA,mCAAkB,EAAC,iBAAiB,EAAE,KAAK,CAAiC,CAAC;IACtF,CAAC;CACF;AAvLD,sCAuLC"}
@@ -85,6 +85,7 @@ function defineSkill(opts) {
85
85
  metadata: Object.freeze({
86
86
  surfaceMode: opts.surfaceMode ?? 'auto',
87
87
  ...(opts.refreshPolicy && { refreshPolicy: opts.refreshPolicy }),
88
+ ...(opts.autoActivate && { autoActivate: opts.autoActivate }),
88
89
  }),
89
90
  });
90
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"defineSkill.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAkFH;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,KAAc;IACjE,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;QACtB,2CAA2C;QAC3C,4CAA4C;QAC5C,+EAA+E;QAC/E,gFAAgF;QAChF,IAAI,KAAK,IAAI,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3F,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAbD,gDAaC;AAED,SAAgB,WAAW,CAAC,IAAwB;IAClD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,CAAC,EAAE,0EAA0E,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,OAAgB;QACxB,OAAO,EAAE;YACP,IAAI,EAAE,eAAwB;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,YAAY;SAC9C;QACD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAClE;QACD,iEAAiE;QACjE,oEAAoE;QACpE,iEAAiE;QACjE,mCAAmC;QACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,MAAM;YACvC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACjE,CAAC;KACH,CAAyB,CAAC;AAC7B,CAAC;AAjCD,kCAiCC"}
1
+ {"version":3,"file":"defineSkill.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AA8GH;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,KAAc;IACjE,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;QACtB,2CAA2C;QAC3C,4CAA4C;QAC5C,+EAA+E;QAC/E,gFAAgF;QAChF,IAAI,KAAK,IAAI,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3F,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAbD,gDAaC;AAED,SAAgB,WAAW,CAAC,IAAwB;IAClD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,CAAC,EAAE,0EAA0E,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,OAAgB;QACxB,OAAO,EAAE;YACP,IAAI,EAAE,eAAwB;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,YAAY;SAC9C;QACD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAClE;QACD,iEAAiE;QACjE,oEAAoE;QACpE,iEAAiE;QACjE,mCAAmC;QACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,MAAM;YACvC,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;SAC9D,CAAC;KACH,CAAyB,CAAC;AAC7B,CAAC;AAlCD,kCAkCC"}
@@ -7,7 +7,10 @@
7
7
  * factories. See `README.md` in this folder for the full concept.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.defineFact = exports.defineSteering = exports.SkillRegistry = exports.resolveSurfaceMode = exports.defineSkill = exports.defineInstruction = exports.buildInjectionEngineSubflow = exports.evaluateInjections = void 0;
10
+ exports.defineFact = exports.defineSteering = exports.buildReadSkillTool = exports.buildListSkillsTool = exports.SkillRegistry = exports.resolveSurfaceMode = exports.defineSkill = exports.defineInstruction = exports.buildInjectionEngineSubflow = exports.evaluateInjections = exports.projectActiveInjection = void 0;
11
+ // POJO projection — used by slot subflows + advanced consumers
12
+ var types_js_1 = require("./types.js");
13
+ Object.defineProperty(exports, "projectActiveInjection", { enumerable: true, get: function () { return types_js_1.projectActiveInjection; } });
11
14
  // Engine
12
15
  var evaluator_js_1 = require("./evaluator.js");
13
16
  Object.defineProperty(exports, "evaluateInjections", { enumerable: true, get: function () { return evaluator_js_1.evaluateInjections; } });
@@ -21,6 +24,13 @@ Object.defineProperty(exports, "defineSkill", { enumerable: true, get: function
21
24
  Object.defineProperty(exports, "resolveSurfaceMode", { enumerable: true, get: function () { return defineSkill_js_1.resolveSurfaceMode; } });
22
25
  var SkillRegistry_js_1 = require("./SkillRegistry.js");
23
26
  Object.defineProperty(exports, "SkillRegistry", { enumerable: true, get: function () { return SkillRegistry_js_1.SkillRegistry; } });
27
+ // Skill-tool builders — used by SkillRegistry.toTools() and the Agent's
28
+ // auto-attach path. Exported so consumers building custom tool wiring
29
+ // (e.g., gatedTools chains) can compose the same `list_skills` /
30
+ // `read_skill` tools directly.
31
+ var skillTools_js_1 = require("./skillTools.js");
32
+ Object.defineProperty(exports, "buildListSkillsTool", { enumerable: true, get: function () { return skillTools_js_1.buildListSkillsTool; } });
33
+ Object.defineProperty(exports, "buildReadSkillTool", { enumerable: true, get: function () { return skillTools_js_1.buildReadSkillTool; } });
24
34
  var defineSteering_js_1 = require("./factories/defineSteering.js");
25
35
  Object.defineProperty(exports, "defineSteering", { enumerable: true, get: function () { return defineSteering_js_1.defineSteering; } });
26
36
  var defineFact_js_1 = require("./factories/defineFact.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAWH,SAAS;AACT,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAC3B,mFAG0C;AAFxC,6IAAA,2BAA2B,OAAA;AAI7B,gFAAgF;AAChF,yEAAoG;AAA3F,yHAAA,iBAAiB,OAAA;AAE1B,6DAMoC;AALlC,6GAAA,WAAW,OAAA;AACX,oHAAA,kBAAkB,OAAA;AAMpB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,mEAA2F;AAAlF,mHAAA,cAAc,OAAA;AAEvB,2DAA+E;AAAtE,2GAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAYH,+DAA+D;AAC/D,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAE/B,SAAS;AACT,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAC3B,mFAG0C;AAFxC,6IAAA,2BAA2B,OAAA;AAI7B,gFAAgF;AAChF,yEAAoG;AAA3F,yHAAA,iBAAiB,OAAA;AAE1B,6DAOoC;AANlC,6GAAA,WAAW,OAAA;AACX,oHAAA,kBAAkB,OAAA;AAOpB,uDAA8E;AAArE,iHAAA,aAAa,OAAA;AAEtB,wEAAwE;AACxE,sEAAsE;AACtE,iEAAiE;AACjE,+BAA+B;AAC/B,iDAA8F;AAArF,oHAAA,mBAAmB,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AAEhD,mEAA2F;AAAlF,mHAAA,cAAc,OAAA;AAEvB,2DAA+E;AAAtE,2GAAA,UAAU,OAAA"}