agentfootprint 2.2.0 → 2.4.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 (151) hide show
  1. package/AGENTS.md +52 -0
  2. package/CLAUDE.md +52 -0
  3. package/README.md +286 -209
  4. package/ai-instructions/claude-code/SKILL.md +24 -5
  5. package/ai-instructions/clinerules +22 -5
  6. package/ai-instructions/copilot-instructions.md +22 -5
  7. package/ai-instructions/cursor/agentfootprint.md +22 -5
  8. package/ai-instructions/kiro/agentfootprint.md +22 -5
  9. package/ai-instructions/windsurfrules +22 -5
  10. package/dist/adapters/llm/AnthropicProvider.js +0 -31
  11. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  12. package/dist/adapters/llm/BedrockProvider.js +2 -28
  13. package/dist/adapters/llm/BedrockProvider.js.map +1 -1
  14. package/dist/adapters/llm/BrowserAnthropicProvider.js +1 -31
  15. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  16. package/dist/adapters/llm/BrowserOpenAIProvider.js +1 -11
  17. package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  18. package/dist/adapters/llm/MockProvider.js +35 -1
  19. package/dist/adapters/llm/MockProvider.js.map +1 -1
  20. package/dist/adapters/llm/OpenAIProvider.js +3 -29
  21. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  22. package/dist/adapters/memory/agentcore.js +305 -0
  23. package/dist/adapters/memory/agentcore.js.map +1 -0
  24. package/dist/adapters/memory/redis.js +287 -0
  25. package/dist/adapters/memory/redis.js.map +1 -0
  26. package/dist/core/Agent.js +16 -0
  27. package/dist/core/Agent.js.map +1 -1
  28. package/dist/esm/adapters/llm/AnthropicProvider.js +0 -31
  29. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  30. package/dist/esm/adapters/llm/BedrockProvider.js +2 -28
  31. package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
  32. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +1 -31
  33. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  34. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +1 -11
  35. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  36. package/dist/esm/adapters/llm/MockProvider.js +35 -1
  37. package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
  38. package/dist/esm/adapters/llm/OpenAIProvider.js +3 -29
  39. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  40. package/dist/esm/adapters/memory/agentcore.js +301 -0
  41. package/dist/esm/adapters/memory/agentcore.js.map +1 -0
  42. package/dist/esm/adapters/memory/redis.js +283 -0
  43. package/dist/esm/adapters/memory/redis.js.map +1 -0
  44. package/dist/esm/core/Agent.js +16 -0
  45. package/dist/esm/core/Agent.js.map +1 -1
  46. package/dist/esm/index.js +3 -3
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/lib/injection-engine/SkillRegistry.js +83 -0
  49. package/dist/esm/lib/injection-engine/SkillRegistry.js.map +1 -0
  50. package/dist/esm/lib/injection-engine/factories/defineSkill.js +34 -0
  51. package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
  52. package/dist/esm/lib/injection-engine/index.js +2 -55
  53. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  54. package/dist/esm/lib/injection-engine/types.js.map +1 -1
  55. package/dist/esm/lib/mcp/index.js +1 -0
  56. package/dist/esm/lib/mcp/index.js.map +1 -1
  57. package/dist/esm/lib/mcp/mcpClient.js +29 -24
  58. package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
  59. package/dist/esm/lib/mcp/mockMcpClient.js +97 -0
  60. package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -0
  61. package/dist/esm/lib/rag/defineRAG.js +0 -18
  62. package/dist/esm/lib/rag/defineRAG.js.map +1 -1
  63. package/dist/esm/lib/rag/indexDocuments.js +39 -4
  64. package/dist/esm/lib/rag/indexDocuments.js.map +1 -1
  65. package/dist/esm/memory/causal/loadSnapshot.js +1 -1
  66. package/dist/esm/memory/define.js +0 -14
  67. package/dist/esm/memory/define.js.map +1 -1
  68. package/dist/esm/memory/define.types.js +0 -10
  69. package/dist/esm/memory/define.types.js.map +1 -1
  70. package/dist/esm/resilience/index.js +0 -44
  71. package/dist/esm/resilience/index.js.map +1 -1
  72. package/dist/esm/stream.js +0 -29
  73. package/dist/esm/stream.js.map +1 -1
  74. package/dist/index.js +4 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/lib/injection-engine/SkillRegistry.js +87 -0
  77. package/dist/lib/injection-engine/SkillRegistry.js.map +1 -0
  78. package/dist/lib/injection-engine/factories/defineSkill.js +36 -1
  79. package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
  80. package/dist/lib/injection-engine/index.js +4 -55
  81. package/dist/lib/injection-engine/index.js.map +1 -1
  82. package/dist/lib/injection-engine/types.js.map +1 -1
  83. package/dist/lib/mcp/index.js +3 -1
  84. package/dist/lib/mcp/index.js.map +1 -1
  85. package/dist/lib/mcp/mcpClient.js +29 -24
  86. package/dist/lib/mcp/mcpClient.js.map +1 -1
  87. package/dist/lib/mcp/mockMcpClient.js +101 -0
  88. package/dist/lib/mcp/mockMcpClient.js.map +1 -0
  89. package/dist/lib/rag/defineRAG.js +0 -18
  90. package/dist/lib/rag/defineRAG.js.map +1 -1
  91. package/dist/lib/rag/indexDocuments.js +39 -4
  92. package/dist/lib/rag/indexDocuments.js.map +1 -1
  93. package/dist/memory/causal/loadSnapshot.js +1 -1
  94. package/dist/memory/define.js +0 -14
  95. package/dist/memory/define.js.map +1 -1
  96. package/dist/memory/define.types.js +0 -10
  97. package/dist/memory/define.types.js.map +1 -1
  98. package/dist/resilience/index.js +0 -44
  99. package/dist/resilience/index.js.map +1 -1
  100. package/dist/stream.js +0 -29
  101. package/dist/stream.js.map +1 -1
  102. package/dist/types/adapters/llm/AnthropicProvider.d.ts +0 -31
  103. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  104. package/dist/types/adapters/llm/BedrockProvider.d.ts +2 -28
  105. package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
  106. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +1 -31
  107. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  108. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +1 -11
  109. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
  110. package/dist/types/adapters/llm/MockProvider.d.ts +45 -0
  111. package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
  112. package/dist/types/adapters/llm/OpenAIProvider.d.ts +3 -29
  113. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  114. package/dist/types/adapters/memory/agentcore.d.ts +157 -0
  115. package/dist/types/adapters/memory/agentcore.d.ts.map +1 -0
  116. package/dist/types/adapters/memory/redis.d.ts +126 -0
  117. package/dist/types/adapters/memory/redis.d.ts.map +1 -0
  118. package/dist/types/core/Agent.d.ts +14 -0
  119. package/dist/types/core/Agent.d.ts.map +1 -1
  120. package/dist/types/index.d.ts +3 -3
  121. package/dist/types/index.d.ts.map +1 -1
  122. package/dist/types/lib/injection-engine/SkillRegistry.d.ts +50 -0
  123. package/dist/types/lib/injection-engine/SkillRegistry.d.ts.map +1 -0
  124. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +72 -0
  125. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
  126. package/dist/types/lib/injection-engine/index.d.ts +2 -55
  127. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  128. package/dist/types/lib/injection-engine/types.d.ts +10 -0
  129. package/dist/types/lib/injection-engine/types.d.ts.map +1 -1
  130. package/dist/types/lib/mcp/index.d.ts +1 -0
  131. package/dist/types/lib/mcp/index.d.ts.map +1 -1
  132. package/dist/types/lib/mcp/mcpClient.d.ts +0 -17
  133. package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -1
  134. package/dist/types/lib/mcp/mockMcpClient.d.ts +66 -0
  135. package/dist/types/lib/mcp/mockMcpClient.d.ts.map +1 -0
  136. package/dist/types/lib/mcp/types.d.ts +2 -0
  137. package/dist/types/lib/mcp/types.d.ts.map +1 -1
  138. package/dist/types/lib/rag/defineRAG.d.ts +18 -21
  139. package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
  140. package/dist/types/lib/rag/indexDocuments.d.ts +30 -1
  141. package/dist/types/lib/rag/indexDocuments.d.ts.map +1 -1
  142. package/dist/types/memory/causal/loadSnapshot.d.ts +1 -1
  143. package/dist/types/memory/define.d.ts +0 -14
  144. package/dist/types/memory/define.d.ts.map +1 -1
  145. package/dist/types/memory/define.types.d.ts +2 -12
  146. package/dist/types/memory/define.types.d.ts.map +1 -1
  147. package/dist/types/resilience/index.d.ts +0 -44
  148. package/dist/types/resilience/index.d.ts.map +1 -1
  149. package/dist/types/stream.d.ts +0 -29
  150. package/dist/types/stream.d.ts.map +1 -1
  151. package/package.json +39 -1
@@ -14,50 +14,6 @@
14
14
  *
15
15
  * Reads as: try anthropic; on failure fall back to openai; the whole
16
16
  * chain is wrapped in retry with 5 attempts.
17
- *
18
- * ─── 7-panel design review (2026-04-28) ────────────────────────────
19
- *
20
- * LLM-AI system design ✓ Decorator pattern around the existing
21
- * `LLMProvider` port — no new contract.
22
- * Stacks naturally; observation hooks
23
- * (`onRetry`, `onFallback`) keep the
24
- * recorder ecosystem informed.
25
- * Performance ✓ Zero overhead on success path (one
26
- * `try/await` per call). Backoff delays
27
- * use AbortSignal-aware sleep — no busy
28
- * wait, no leaked timers.
29
- * Scalability ✓ Per-call state only. Composition is
30
- * constant-time per attempt; chain depth
31
- * doesn't grow runtime cost.
32
- * Research alignment ✓ Right-fold of `withFallback` matches
33
- * the standard chain-of-responsibility
34
- * shape. No exotic resumption — once a
35
- * stream yields, it commits.
36
- * Flexibility ✓ Predicates (`shouldRetry`,
37
- * `shouldFallback`) and hooks
38
- * (`onRetry`, `onFallback`) make every
39
- * policy decision overridable. Default
40
- * policies match common real-world signals
41
- * (4xx skip, 429 retry, AbortError pass).
42
- * Abstraction-modular ✓ Three primitives, one purpose each.
43
- * `fallbackProvider` is sugar over chained
44
- * `withFallback`. No surprises.
45
- * Software engineering ✓ Pure decorators — no shared state.
46
- * Every option has a documented default.
47
- * Tests cover unit + scenario + integration
48
- * + property + security + performance + ROI.
49
- *
50
- * ─── 7-pattern test coverage ───────────────────────────────────────
51
- *
52
- * Unit test/resilience/unit/withRetry.test.ts
53
- * test/resilience/unit/withFallback.test.ts
54
- * test/resilience/unit/fallbackProvider.test.ts
55
- * Scenario resilience-patterns.test.ts → "production recipes"
56
- * Integration resilience-patterns.test.ts → "Agent + resilient provider"
57
- * Property resilience-patterns.test.ts → "invariants"
58
- * Security resilience-patterns.test.ts → "hostile inputs"
59
- * Performance resilience-patterns.test.ts → "performance"
60
- * ROI resilience-patterns.test.ts → "realistic SLO budgets"
61
17
  */
62
18
  export { withRetry } from './withRetry.js';
63
19
  export { withFallback } from './withFallback.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resilience/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resilience/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC"}
@@ -7,35 +7,6 @@
7
7
  * framework that accepts an async iterable response body
8
8
  * (Fetch Response, Express res.write, Hono streaming, etc.).
9
9
  * Emits: N/A — observes only.
10
- *
11
- * ─── 7-panel design review (2026-04-28) ─────────────────────────────
12
- *
13
- * LLM-AI system design ✓ One-line-per-event SSE format. Each
14
- * event = one observation; each chunk
15
- * includes the `runtimeStageId` for
16
- * cross-view binding.
17
- * Performance ✓ AsyncIterable<string> — no buffering;
18
- * yields each event as it arrives. Stops
19
- * naturally when the run completes.
20
- * Scalability ✓ Per-run instance. No shared state;
21
- * many concurrent SSE streams safe.
22
- * Research alignment ✓ Standard SSE wire format
23
- * (text/event-stream). Browsers'
24
- * native EventSource API consumes directly.
25
- * Flexibility ✓ `format` option for full event payload
26
- * vs slim text-only mode (chat UIs that
27
- * only want token deltas). `filter`
28
- * predicate gates events.
29
- * Abstraction-modular ✓ One function (`toSSE`) + one class
30
- * (`SSEFormatter`); class is sugar for
31
- * consumers who prefer .pipeTo() shape.
32
- * Software engineering ✓ Pure observer. No global state. Tests
33
- * cover unit + scenario + property +
34
- * security + performance.
35
- *
36
- * ─── 7-pattern test coverage ────────────────────────────────────────
37
- *
38
- * See `test/stream/unit/SSEFormatter.test.ts`.
39
10
  */
40
11
  /**
41
12
  * Subscribe to a runner's `EventDispatcher` and yield SSE-formatted
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAsDH;;;GAGG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,KAAK,CAC1B,MAA6B,EAC7B,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IAE7C,+DAA+D;IAC/D,+DAA+D;IAC/D,0DAA0D;IAC1D,MAAM,UAAU,GAAI,MAAqD,CAAC,UAAU,CAAC;IAErF,0DAA0D;IAC1D,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,IAAI,MAAM,GAAmC,IAAI,CAAC;IAClD,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,MAAM,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;YACd,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAgB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QACtD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO;QACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,EAAE,CAAC;QACT,iEAAiE;QACjE,iEAAiE;QACjE,6BAA6B;QAC7B,IACE,KAAK,CAAC,IAAI,KAAK,+BAA+B;YAC9C,KAAK,CAAC,IAAI,KAAK,4BAA4B,EAC3C,CAAC;YACD,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,SAAqD,CAAC;IAC1D,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAW,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC;QACX,CAAC,EAAE,WAAW,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;gBAC7B,IAAK,KAAK,CAAC,IAAe,KAAK,aAAa,EAAE,CAAC;oBAC7C,MAAM,YAAY,CAAC;oBACnB,SAAS;gBACX,CAAC;gBACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,6BAA6B,EAAE,CAAC;wBACjD,MAAM,OAAO,GAAI,KAA4C,CAAC,OAAO,CAAC;wBACtE,IAAI,OAAO,EAAE,OAAO;4BAAE,MAAM,OAAO,CAAC,OAAO,CAAC;oBAC9C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;QACR,IAAI,SAAS;YAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,YAAY;IAEJ;IACA;IAFnB,YACmB,MAA6B,EAC7B,UAAwB,EAAE;QAD1B,WAAM,GAAN,MAAM,CAAuB;QAC7B,YAAO,GAAP,OAAO,CAAmB;IAC1C,CAAC;IAEJ,8DAA8D;IAC9D,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,OAAgB;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,sEAAsE;IACtE,gEAAgE;IAChE,qCAAqC;IACrC,OAAO,UAAU,SAAS,WAAW,IAAI,MAAM,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsDH;;;GAGG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,KAAK,CAC1B,MAA6B,EAC7B,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IAE7C,+DAA+D;IAC/D,+DAA+D;IAC/D,0DAA0D;IAC1D,MAAM,UAAU,GAAI,MAAqD,CAAC,UAAU,CAAC;IAErF,0DAA0D;IAC1D,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,IAAI,MAAM,GAAmC,IAAI,CAAC;IAClD,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,MAAM,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;YACd,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAgB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QACtD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO;QACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,EAAE,CAAC;QACT,iEAAiE;QACjE,iEAAiE;QACjE,6BAA6B;QAC7B,IACE,KAAK,CAAC,IAAI,KAAK,+BAA+B;YAC9C,KAAK,CAAC,IAAI,KAAK,4BAA4B,EAC3C,CAAC;YACD,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,SAAqD,CAAC;IAC1D,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAW,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC;QACX,CAAC,EAAE,WAAW,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;gBAC7B,IAAK,KAAK,CAAC,IAAe,KAAK,aAAa,EAAE,CAAC;oBAC7C,MAAM,YAAY,CAAC;oBACnB,SAAS;gBACX,CAAC;gBACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,6BAA6B,EAAE,CAAC;wBACjD,MAAM,OAAO,GAAI,KAA4C,CAAC,OAAO,CAAC;wBACtE,IAAI,OAAO,EAAE,OAAO;4BAAE,MAAM,OAAO,CAAC,OAAO,CAAC;oBAC9C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;QACR,IAAI,SAAS;YAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,YAAY;IAEJ;IACA;IAFnB,YACmB,MAA6B,EAC7B,UAAwB,EAAE;QAD1B,WAAM,GAAN,MAAM,CAAuB;QAC7B,YAAO,GAAP,OAAO,CAAmB;IAC1C,CAAC;IAEJ,8DAA8D;IAC9D,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,OAAgB;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,sEAAsE;IACtE,gEAAgE;IAChE,qCAAqC;IACrC,OAAO,UAAU,SAAS,WAAW,IAAI,MAAM,CAAC;AAClD,CAAC"}
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
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.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.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;
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;
26
26
  // Events — registry, types, payloads
27
27
  __exportStar(require("./events/types.js"), exports);
28
28
  __exportStar(require("./events/payloads.js"), exports);
@@ -184,6 +184,8 @@ Object.defineProperty(exports, "buildInjectionEngineSubflow", { enumerable: true
184
184
  // Sugar factories — one per injection flavor
185
185
  Object.defineProperty(exports, "defineInstruction", { enumerable: true, get: function () { return index_js_1.defineInstruction; } });
186
186
  Object.defineProperty(exports, "defineSkill", { enumerable: true, get: function () { return index_js_1.defineSkill; } });
187
+ Object.defineProperty(exports, "resolveSurfaceMode", { enumerable: true, get: function () { return index_js_1.resolveSurfaceMode; } });
188
+ Object.defineProperty(exports, "SkillRegistry", { enumerable: true, get: function () { return index_js_1.SkillRegistry; } });
187
189
  Object.defineProperty(exports, "defineSteering", { enumerable: true, get: function () { return index_js_1.defineSteering; } });
188
190
  Object.defineProperty(exports, "defineFact", { enumerable: true, get: function () { return index_js_1.defineFact; } });
189
191
  // Patterns — factory functions composing primitives + core-flow into
@@ -235,4 +237,5 @@ Object.defineProperty(exports, "indexDocuments", { enumerable: true, get: functi
235
237
  // cost when MCP isn't used).
236
238
  var index_js_7 = require("./lib/mcp/index.js");
237
239
  Object.defineProperty(exports, "mcpClient", { enumerable: true, get: function () { return index_js_7.mcpClient; } });
240
+ Object.defineProperty(exports, "mockMcpClient", { enumerable: true, get: function () { return index_js_7.mockMcpClient; } });
238
241
  //# 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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"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * SkillRegistry — centralized governance for Skills across one or
4
+ * more Agents.
5
+ *
6
+ * Most apps register Skills directly on the Agent via `.skill(s)`.
7
+ * Once you have multiple Agents that share a common skill catalog
8
+ * (a customer-support pool, a research team, a multi-step workflow
9
+ * where each step uses different overlapping skills), hand-syncing
10
+ * `.skill()` calls per Agent gets fragile.
11
+ *
12
+ * `SkillRegistry` is the answer: register once, attach to many
13
+ * Agents via `.skills(registry)`. Add a Skill to the registry and
14
+ * every consumer Agent picks it up at next build.
15
+ *
16
+ * @example
17
+ * const registry = new SkillRegistry();
18
+ * registry.register(billingSkill);
19
+ * registry.register(refundSkill);
20
+ *
21
+ * const supportAgent = Agent.create({ provider }).skills(registry).build();
22
+ * const escalationAgent = Agent.create({ provider }).skills(registry).build();
23
+ *
24
+ * // Add a new skill — both agents pick it up at next build.
25
+ * registry.register(complianceSkill);
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.SkillRegistry = void 0;
29
+ class SkillRegistry {
30
+ skills = new Map();
31
+ /**
32
+ * Register a skill. Throws if `skill.flavor !== 'skill'` or if a
33
+ * skill with the same id is already registered (use `.replace(...)`
34
+ * to overwrite intentionally).
35
+ */
36
+ register(skill) {
37
+ if (skill.flavor !== 'skill') {
38
+ throw new Error(`SkillRegistry.register: expected a Skill (flavor: 'skill'), got flavor: '${skill.flavor}' (id: '${skill.id}'). Use defineSkill(...) to construct.`);
39
+ }
40
+ if (this.skills.has(skill.id)) {
41
+ throw new Error(`SkillRegistry.register: skill '${skill.id}' is already registered. Use .replace('${skill.id}', skill) to overwrite.`);
42
+ }
43
+ this.skills.set(skill.id, skill);
44
+ return this;
45
+ }
46
+ /** Replace an existing skill by id. Throws if id is not registered. */
47
+ replace(id, skill) {
48
+ if (!this.skills.has(id)) {
49
+ throw new Error(`SkillRegistry.replace: no skill registered at '${id}'. Use .register(...) for new skills.`);
50
+ }
51
+ if (skill.flavor !== 'skill') {
52
+ throw new Error(`SkillRegistry.replace: expected a Skill (flavor: 'skill'), got '${skill.flavor}'.`);
53
+ }
54
+ if (skill.id !== id) {
55
+ throw new Error(`SkillRegistry.replace: skill.id ('${skill.id}') does not match the slot id ('${id}'). Either use .register(...) for the new id or pass a skill with the matching id.`);
56
+ }
57
+ this.skills.set(id, skill);
58
+ return this;
59
+ }
60
+ /** Remove a skill by id. No-op if not registered. */
61
+ unregister(id) {
62
+ this.skills.delete(id);
63
+ return this;
64
+ }
65
+ /** Look up by id. Returns undefined if not registered. */
66
+ get(id) {
67
+ return this.skills.get(id);
68
+ }
69
+ /** True iff a skill with the given id is registered. */
70
+ has(id) {
71
+ return this.skills.has(id);
72
+ }
73
+ /** All registered skills. Order matches registration order. */
74
+ list() {
75
+ return [...this.skills.values()];
76
+ }
77
+ /** Number of registered skills. */
78
+ get size() {
79
+ return this.skills.size;
80
+ }
81
+ /** Drop all registrations. */
82
+ clear() {
83
+ this.skills.clear();
84
+ }
85
+ }
86
+ exports.SkillRegistry = SkillRegistry;
87
+ //# sourceMappingURL=SkillRegistry.js.map
@@ -0,0 +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"}
@@ -28,7 +28,34 @@
28
28
  * });
29
29
  */
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.defineSkill = void 0;
31
+ exports.defineSkill = exports.resolveSurfaceMode = void 0;
32
+ /**
33
+ * Resolve `surfaceMode: 'auto'` to a concrete mode based on provider
34
+ * + model. The defaults match the per-provider attention profile
35
+ * documented in the Skills, explained essay:
36
+ *
37
+ * - Claude >= 3.5 → 'both' (cheap to cache, high adherence)
38
+ * - Claude pre-3.5 → 'tool-only' (recency-first more reliable)
39
+ * - OpenAI / Bedrock / Ollama / Mock / unknown → 'tool-only'
40
+ *
41
+ * Pure function — no side effects. Consumers can call directly to
42
+ * inspect what `'auto'` will resolve to in their stack.
43
+ */
44
+ function resolveSurfaceMode(provider, model) {
45
+ const p = provider.toLowerCase();
46
+ if (p === 'anthropic') {
47
+ // Match both naming styles in current use:
48
+ // - claude-3-5-sonnet-..., claude-3.5-...
49
+ // - claude-sonnet-4-..., claude-haiku-4-..., claude-opus-4-..., claude-4-...
50
+ // Anything matching "Claude >= 3.5" gets 'both'; older Claudes get 'tool-only'.
51
+ if (model && /(claude-3-5|claude-3\.5|claude-(?:opus-|sonnet-|haiku-)?[4-9])/i.test(model)) {
52
+ return 'both';
53
+ }
54
+ return 'tool-only';
55
+ }
56
+ return 'tool-only';
57
+ }
58
+ exports.resolveSurfaceMode = resolveSurfaceMode;
32
59
  function defineSkill(opts) {
33
60
  if (!opts.id || opts.id.trim().length === 0) {
34
61
  throw new Error('defineSkill: `id` is required and must be non-empty.');
@@ -51,6 +78,14 @@ function defineSkill(opts) {
51
78
  systemPrompt: opts.body,
52
79
  ...(opts.tools && opts.tools.length > 0 && { tools: opts.tools }),
53
80
  },
81
+ // Skill-specific options live in metadata. The engine reads them
82
+ // when present; absent metadata = current behavior. Forward-compat:
83
+ // when v2.5 implements per-mode routing diversity, this field is
84
+ // already where the runtime looks.
85
+ metadata: Object.freeze({
86
+ surfaceMode: opts.surfaceMode ?? 'auto',
87
+ ...(opts.refreshPolicy && { refreshPolicy: opts.refreshPolicy }),
88
+ }),
54
89
  });
55
90
  }
56
91
  exports.defineSkill = defineSkill;
@@ -1 +1 @@
1
- {"version":3,"file":"defineSkill.js","sourceRoot":"","sources":["../../../../src/lib/injection-engine/factories/defineSkill.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAqBH,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;KACF,CAAyB,CAAC;AAC7B,CAAC;AAzBD,kCAyBC"}
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"}
@@ -5,63 +5,9 @@
5
5
  * The unifying primitive of agentfootprint context engineering.
6
6
  * One `Injection` type. One `InjectionEngine` subflow. N typed sugar
7
7
  * factories. See `README.md` in this folder for the full concept.
8
- *
9
- * ─── 7-panel design review (2026-04-28) ─────────────────────────────
10
- *
11
- * LLM-AI system design ✓ ONE primitive replaces N feature-specific
12
- * subsystems. Skill, Steering, Instruction,
13
- * Context (and RAG, Memory, Guardrail)
14
- * are typed sugar producing the same shape.
15
- * Engine is shared; observability is shared;
16
- * Lens chips are shared.
17
- *
18
- * Performance ✓ Trigger evaluation O(N) per iteration.
19
- * Subflow ceremony ~50µs per iteration.
20
- * Negligible. Active set materialized once,
21
- * consumed by 3 slot subflows.
22
- *
23
- * Scalability ✓ Adding a flavor = adding a sugar factory
24
- * file. Zero engine change. Library scales
25
- * to 50+ flavors without bloating the
26
- * engine. The "narrow waist" pattern.
27
- *
28
- * Research alignment ✓ Maps to "Augmented LM" framing
29
- * (Mialon et al. 2023): every external
30
- * input is an augmentation; agentfootprint
31
- * calls them Injections. Factory names
32
- * preserve research vocabulary (Skill, RAG,
33
- * Memory, Steering) at the API surface.
34
- *
35
- * Flexibility ✓ Discriminated `trigger` union handles
36
- * always / rule / on-tool-return /
37
- * llm-activated. New trigger kinds extend
38
- * cleanly. Multi-slot per Injection covers
39
- * Skills (system-prompt + tools).
40
- *
41
- * Abstraction-modular ✓ Engine = subflow (drill-able). Factories
42
- * = small files (one per flavor). Slot
43
- * subflows are unchanged consumers.
44
- * Textbook narrow-waist architecture.
45
- *
46
- * Software engineering ✓ Predicate exceptions caught + reported
47
- * via `skipped[]`, never propagate. Frozen
48
- * Injections. Validation in factories.
49
- * 7-pattern test coverage. Subpath export
50
- * for tree-shake.
51
- *
52
- * Plus footprintjs integration check ✓ — uses existing slot subflow
53
- * convention (writes activeInjections to scope; slots filter by
54
- * targeted slot) + ContextRecorder picks up source field zero-change.
55
- *
56
- * Plus TypeScript engineer check ✓ — discriminated union, no `any`,
57
- * frozen returns, exhaustiveness check on trigger kind.
58
- *
59
- * ─── 7-pattern test coverage ────────────────────────────────────────
60
- *
61
- * See `test/lib/injection-engine/*.test.ts`.
62
8
  */
63
9
  Object.defineProperty(exports, "__esModule", { value: true });
64
- exports.defineFact = exports.defineSteering = exports.defineSkill = exports.defineInstruction = exports.buildInjectionEngineSubflow = exports.evaluateInjections = void 0;
10
+ exports.defineFact = exports.defineSteering = exports.SkillRegistry = exports.resolveSurfaceMode = exports.defineSkill = exports.defineInstruction = exports.buildInjectionEngineSubflow = exports.evaluateInjections = void 0;
65
11
  // Engine
66
12
  var evaluator_js_1 = require("./evaluator.js");
67
13
  Object.defineProperty(exports, "evaluateInjections", { enumerable: true, get: function () { return evaluator_js_1.evaluateInjections; } });
@@ -72,6 +18,9 @@ var defineInstruction_js_1 = require("./factories/defineInstruction.js");
72
18
  Object.defineProperty(exports, "defineInstruction", { enumerable: true, get: function () { return defineInstruction_js_1.defineInstruction; } });
73
19
  var defineSkill_js_1 = require("./factories/defineSkill.js");
74
20
  Object.defineProperty(exports, "defineSkill", { enumerable: true, get: function () { return defineSkill_js_1.defineSkill; } });
21
+ Object.defineProperty(exports, "resolveSurfaceMode", { enumerable: true, get: function () { return defineSkill_js_1.resolveSurfaceMode; } });
22
+ var SkillRegistry_js_1 = require("./SkillRegistry.js");
23
+ Object.defineProperty(exports, "SkillRegistry", { enumerable: true, get: function () { return SkillRegistry_js_1.SkillRegistry; } });
75
24
  var defineSteering_js_1 = require("./factories/defineSteering.js");
76
25
  Object.defineProperty(exports, "defineSteering", { enumerable: true, get: function () { return defineSteering_js_1.defineSteering; } });
77
26
  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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;;;AAWH,SAAS;AACT,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAC3B,mFAG0C;AAFxC,6IAAA,2BAA2B,OAAA;AAI7B,gFAAgF;AAChF,yEAAoG;AAA3F,yHAAA,iBAAiB,OAAA;AAE1B,6DAAkF;AAAzE,6GAAA,WAAW,OAAA;AAEpB,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;;;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 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AA2KH,wEAAwE;AACxE,SAAgB,sBAAsB,CAAC,GAAc;IACnD,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,EAAE;YACN,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;oBACvB,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAjBD,wDAiBC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAqLH,wEAAwE;AACxE,SAAgB,sBAAsB,CAAC,GAAc;IACnD,MAAM,GAAG,GAAoB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,EAAE;YACN,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;oBACvB,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAjBD,wDAiBC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mcpClient = void 0;
3
+ exports.mockMcpClient = exports.mcpClient = void 0;
4
4
  /**
5
5
  * MCP — Model Context Protocol client integration. Connect to an MCP
6
6
  * server, register its tools on your Agent. Server-side support is
@@ -9,4 +9,6 @@ exports.mcpClient = void 0;
9
9
  */
10
10
  var mcpClient_js_1 = require("./mcpClient.js");
11
11
  Object.defineProperty(exports, "mcpClient", { enumerable: true, get: function () { return mcpClient_js_1.mcpClient; } });
12
+ var mockMcpClient_js_1 = require("./mockMcpClient.js");
13
+ Object.defineProperty(exports, "mockMcpClient", { enumerable: true, get: function () { return mockMcpClient_js_1.mockMcpClient; } });
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/mcp/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,+CAA2C;AAAlC,yGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/mcp/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAClB,uDAAgG;AAAvF,iHAAA,aAAa,OAAA"}
@@ -30,32 +30,18 @@
30
30
  * `McpClientOptions` so observability surfaces can group
31
31
  * tool calls by server.
32
32
  *
33
- * 7-panel review (2026-04-29):
34
- * - LLM Systems ✅ inputSchema preserved verbatim — the LLM sees
35
- * the same tool schema MCP advertised
36
- * - Architect ✅ pure adapter; no engine code. New tool sources
37
- * slot in via the same `Tool` interface
38
- * - API Designer ✅ three methods (.tools / .refresh / .close)
39
- * mirror the MCP SDK lifecycle
40
- * - Performance ✅ tool list cached after first fetch; .refresh
41
- * is opt-in. callTool round-trip is one network
42
- * hop per tool call (same as direct LLM-tool flow)
43
- * - Privacy ✅ no implicit logging; consumer controls auth
44
- * via transport headers
45
- * - SoftEng ✅ lazy-required SDK + friendly install error;
46
- * mock injection point for tests
47
- * - TS Engineer ✅ structural McpSdkClient shim — works against
48
- * any future SDK version with the same shape
49
- *
50
33
  * Lazy-require pattern: the `@modelcontextprotocol/sdk` peer-dep
51
34
  * loads only when a consumer actually constructs a client. Tests
52
35
  * inject `_client` and skip the import path entirely.
53
36
  */
54
37
  Object.defineProperty(exports, "__esModule", { value: true });
55
38
  exports.mcpClient = void 0;
39
+ // Version-less identity. The MCP `clientInfo` field is informational
40
+ // (server logs it); a hardcoded number drifts every release. Consumers
41
+ // who care about wire-level identity pass `clientInfo` explicitly.
56
42
  const DEFAULT_CLIENT_INFO = {
57
43
  name: 'agentfootprint',
58
- version: '2.1.0', // bumped per release
44
+ version: '0.0.0',
59
45
  };
60
46
  /**
61
47
  * Connect to an MCP server. Returns an `McpClient` that exposes the
@@ -72,22 +58,33 @@ async function mcpClient(opts) {
72
58
  // Tool cache so consumers calling `.tools()` more than once don't
73
59
  // hammer the server. `.refresh()` invalidates it.
74
60
  let cache = null;
61
+ let closed = false;
62
+ const ensureOpen = (op) => {
63
+ if (closed) {
64
+ throw new Error(`mcpClient[${name}].${op}() called after close(). Construct a new client to reconnect.`);
65
+ }
66
+ };
75
67
  const buildTools = async () => {
76
68
  const listed = await sdk.listTools();
77
- return listed.tools.map((t) => wrapMcpTool(sdk, t));
69
+ return listed.tools.map((t) => wrapMcpTool(name, sdk, t, opts.signal));
78
70
  };
79
71
  return {
80
72
  name,
81
73
  async tools() {
74
+ ensureOpen('tools');
82
75
  if (!cache)
83
76
  cache = await buildTools();
84
77
  return cache;
85
78
  },
86
79
  async refresh() {
80
+ ensureOpen('refresh');
87
81
  cache = await buildTools();
88
82
  return cache;
89
83
  },
90
84
  async close() {
85
+ if (closed)
86
+ return;
87
+ closed = true;
91
88
  cache = null;
92
89
  await sdk.close();
93
90
  },
@@ -146,30 +143,38 @@ async function buildTransport(t) {
146
143
  });
147
144
  }
148
145
  // ─── Tool wrapping ─────────────────────────────────────────────────
149
- function wrapMcpTool(sdk, mcp) {
150
- return {
146
+ function wrapMcpTool(serverName, sdk, mcp, signal) {
147
+ const tool = {
151
148
  schema: {
152
149
  name: mcp.name,
153
150
  description: mcp.description ?? `MCP tool: ${mcp.name}`,
154
151
  inputSchema: mcp.inputSchema,
155
152
  },
156
153
  execute: async (args) => {
154
+ // The agent passes args as `unknown` per Tool contract. MCP
155
+ // expects a JSON object — non-object inputs become `{}` rather
156
+ // than failing the SDK call.
157
+ const argsObj = args !== null && typeof args === 'object' && !Array.isArray(args)
158
+ ? args
159
+ : {};
157
160
  const result = await sdk.callTool({
158
161
  name: mcp.name,
159
- arguments: args ?? {},
162
+ arguments: argsObj,
163
+ ...(signal && { signal }),
160
164
  });
161
165
  // MCP returns content blocks. We concatenate text blocks into
162
166
  // a single string for the agent's tool-result event payload.
163
167
  // Non-text blocks (images, resources) are summarized with their
164
- // type — full multi-modal mapping is a v2.x follow-up.
168
+ // type — full multi-modal mapping is a future-release follow-up.
165
169
  const text = result.content
166
170
  .map((c) => (c.type === 'text' && c.text ? c.text : `[${c.type}]`))
167
171
  .join('\n');
168
172
  if (result.isError) {
169
- throw new Error(`MCP tool '${mcp.name}' returned an error: ${text}`);
173
+ throw new Error(`MCP tool '${mcp.name}' (server '${serverName}') returned an error: ${text}`);
170
174
  }
171
175
  return text;
172
176
  },
173
177
  };
178
+ return tool;
174
179
  }
175
180
  //# sourceMappingURL=mcpClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../../src/lib/mcp/mcpClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../../src/lib/mcp/mcpClient.ts"],"names":[],"mappings":"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"}