agentfootprint 2.1.0 → 2.3.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 (164) hide show
  1. package/AGENTS.md +80 -0
  2. package/CLAUDE.md +80 -0
  3. package/README.md +51 -1
  4. package/README.proposed.md +258 -0
  5. package/ai-instructions/claude-code/SKILL.md +56 -5
  6. package/ai-instructions/clinerules +44 -5
  7. package/ai-instructions/copilot-instructions.md +44 -5
  8. package/ai-instructions/cursor/agentfootprint.md +44 -5
  9. package/ai-instructions/kiro/agentfootprint.md +44 -5
  10. package/ai-instructions/windsurfrules +44 -5
  11. package/dist/adapters/llm/AnthropicProvider.js +0 -31
  12. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  13. package/dist/adapters/llm/BedrockProvider.js +2 -28
  14. package/dist/adapters/llm/BedrockProvider.js.map +1 -1
  15. package/dist/adapters/llm/BrowserAnthropicProvider.js +1 -31
  16. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  17. package/dist/adapters/llm/BrowserOpenAIProvider.js +1 -11
  18. package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  19. package/dist/adapters/llm/MockProvider.js +35 -1
  20. package/dist/adapters/llm/MockProvider.js.map +1 -1
  21. package/dist/adapters/llm/OpenAIProvider.js +3 -29
  22. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  23. package/dist/adapters/memory/agentcore.js +305 -0
  24. package/dist/adapters/memory/agentcore.js.map +1 -0
  25. package/dist/adapters/memory/redis.js +287 -0
  26. package/dist/adapters/memory/redis.js.map +1 -0
  27. package/dist/core/Agent.js +11 -0
  28. package/dist/core/Agent.js.map +1 -1
  29. package/dist/esm/adapters/llm/AnthropicProvider.js +0 -31
  30. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  31. package/dist/esm/adapters/llm/BedrockProvider.js +2 -28
  32. package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
  33. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +1 -31
  34. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  35. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +1 -11
  36. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  37. package/dist/esm/adapters/llm/MockProvider.js +35 -1
  38. package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
  39. package/dist/esm/adapters/llm/OpenAIProvider.js +3 -29
  40. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  41. package/dist/esm/adapters/memory/agentcore.js +301 -0
  42. package/dist/esm/adapters/memory/agentcore.js.map +1 -0
  43. package/dist/esm/adapters/memory/redis.js +283 -0
  44. package/dist/esm/adapters/memory/redis.js.map +1 -0
  45. package/dist/esm/core/Agent.js +11 -0
  46. package/dist/esm/core/Agent.js.map +1 -1
  47. package/dist/esm/index.js +6 -1
  48. package/dist/esm/index.js.map +1 -1
  49. package/dist/esm/lib/injection-engine/index.js +0 -54
  50. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  51. package/dist/esm/lib/mcp/index.js +9 -0
  52. package/dist/esm/lib/mcp/index.js.map +1 -0
  53. package/dist/esm/lib/mcp/mcpClient.js +176 -0
  54. package/dist/esm/lib/mcp/mcpClient.js.map +1 -0
  55. package/dist/esm/lib/mcp/mockMcpClient.js +97 -0
  56. package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -0
  57. package/dist/esm/lib/mcp/types.js +24 -0
  58. package/dist/esm/lib/mcp/types.js.map +1 -0
  59. package/dist/esm/lib/rag/defineRAG.js +0 -18
  60. package/dist/esm/lib/rag/defineRAG.js.map +1 -1
  61. package/dist/esm/lib/rag/indexDocuments.js +39 -4
  62. package/dist/esm/lib/rag/indexDocuments.js.map +1 -1
  63. package/dist/esm/memory/causal/loadSnapshot.js +1 -1
  64. package/dist/esm/memory/define.js +0 -14
  65. package/dist/esm/memory/define.js.map +1 -1
  66. package/dist/esm/memory/define.types.js +0 -10
  67. package/dist/esm/memory/define.types.js.map +1 -1
  68. package/dist/esm/resilience/index.js +0 -44
  69. package/dist/esm/resilience/index.js.map +1 -1
  70. package/dist/esm/stream.js +0 -29
  71. package/dist/esm/stream.js.map +1 -1
  72. package/dist/index.js +8 -1
  73. package/dist/index.js.map +1 -1
  74. package/dist/instructions.js +21 -0
  75. package/dist/instructions.js.map +1 -0
  76. package/dist/lib/injection-engine/index.js +0 -54
  77. package/dist/lib/injection-engine/index.js.map +1 -1
  78. package/dist/lib/instructions/defineInstruction.js +35 -0
  79. package/dist/lib/instructions/defineInstruction.js.map +1 -0
  80. package/dist/lib/instructions/evaluator.js +38 -0
  81. package/dist/lib/instructions/evaluator.js.map +1 -0
  82. package/dist/lib/instructions/index.js +48 -0
  83. package/dist/lib/instructions/index.js.map +1 -0
  84. package/dist/lib/instructions/types.js +22 -0
  85. package/dist/lib/instructions/types.js.map +1 -0
  86. package/dist/lib/mcp/index.js +14 -0
  87. package/dist/lib/mcp/index.js.map +1 -0
  88. package/dist/lib/mcp/mcpClient.js +180 -0
  89. package/dist/lib/mcp/mcpClient.js.map +1 -0
  90. package/dist/lib/mcp/mockMcpClient.js +101 -0
  91. package/dist/lib/mcp/mockMcpClient.js.map +1 -0
  92. package/dist/lib/mcp/types.js +25 -0
  93. package/dist/lib/mcp/types.js.map +1 -0
  94. package/dist/lib/rag/defineRAG.js +0 -18
  95. package/dist/lib/rag/defineRAG.js.map +1 -1
  96. package/dist/lib/rag/indexDocuments.js +39 -4
  97. package/dist/lib/rag/indexDocuments.js.map +1 -1
  98. package/dist/memory/causal/loadSnapshot.js +1 -1
  99. package/dist/memory/conversationHelpers.js +39 -0
  100. package/dist/memory/conversationHelpers.js.map +1 -0
  101. package/dist/memory/define.js +0 -14
  102. package/dist/memory/define.js.map +1 -1
  103. package/dist/memory/define.types.js +0 -10
  104. package/dist/memory/define.types.js.map +1 -1
  105. package/dist/resilience/index.js +0 -44
  106. package/dist/resilience/index.js.map +1 -1
  107. package/dist/stream.js +0 -29
  108. package/dist/stream.js.map +1 -1
  109. package/dist/types/adapters/llm/AnthropicProvider.d.ts +0 -31
  110. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  111. package/dist/types/adapters/llm/BedrockProvider.d.ts +2 -28
  112. package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
  113. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +1 -31
  114. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  115. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +1 -11
  116. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
  117. package/dist/types/adapters/llm/MockProvider.d.ts +45 -0
  118. package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
  119. package/dist/types/adapters/llm/OpenAIProvider.d.ts +3 -29
  120. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  121. package/dist/types/adapters/memory/agentcore.d.ts +157 -0
  122. package/dist/types/adapters/memory/agentcore.d.ts.map +1 -0
  123. package/dist/types/adapters/memory/redis.d.ts +126 -0
  124. package/dist/types/adapters/memory/redis.d.ts.map +1 -0
  125. package/dist/types/core/Agent.d.ts +7 -0
  126. package/dist/types/core/Agent.d.ts.map +1 -1
  127. package/dist/types/index.d.ts +2 -1
  128. package/dist/types/index.d.ts.map +1 -1
  129. package/dist/types/instructions.d.ts +5 -0
  130. package/dist/types/instructions.d.ts.map +1 -0
  131. package/dist/types/lib/injection-engine/index.d.ts +0 -54
  132. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  133. package/dist/types/lib/instructions/defineInstruction.d.ts +22 -0
  134. package/dist/types/lib/instructions/defineInstruction.d.ts.map +1 -0
  135. package/dist/types/lib/instructions/evaluator.d.ts +11 -0
  136. package/dist/types/lib/instructions/evaluator.d.ts.map +1 -0
  137. package/dist/types/lib/instructions/index.d.ts +44 -0
  138. package/dist/types/lib/instructions/index.d.ts.map +1 -0
  139. package/dist/types/lib/instructions/types.d.ts +100 -0
  140. package/dist/types/lib/instructions/types.d.ts.map +1 -0
  141. package/dist/types/lib/mcp/index.d.ts +10 -0
  142. package/dist/types/lib/mcp/index.d.ts.map +1 -0
  143. package/dist/types/lib/mcp/mcpClient.d.ts +47 -0
  144. package/dist/types/lib/mcp/mcpClient.d.ts.map +1 -0
  145. package/dist/types/lib/mcp/mockMcpClient.d.ts +66 -0
  146. package/dist/types/lib/mcp/mockMcpClient.d.ts.map +1 -0
  147. package/dist/types/lib/mcp/types.d.ts +134 -0
  148. package/dist/types/lib/mcp/types.d.ts.map +1 -0
  149. package/dist/types/lib/rag/defineRAG.d.ts +18 -21
  150. package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
  151. package/dist/types/lib/rag/indexDocuments.d.ts +30 -1
  152. package/dist/types/lib/rag/indexDocuments.d.ts.map +1 -1
  153. package/dist/types/memory/causal/loadSnapshot.d.ts +1 -1
  154. package/dist/types/memory/conversationHelpers.d.ts +19 -0
  155. package/dist/types/memory/conversationHelpers.d.ts.map +1 -0
  156. package/dist/types/memory/define.d.ts +0 -14
  157. package/dist/types/memory/define.d.ts.map +1 -1
  158. package/dist/types/memory/define.types.d.ts +2 -12
  159. package/dist/types/memory/define.types.d.ts.map +1 -1
  160. package/dist/types/resilience/index.d.ts +0 -44
  161. package/dist/types/resilience/index.d.ts.map +1 -1
  162. package/dist/types/stream.d.ts +0 -29
  163. package/dist/types/stream.d.ts.map +1 -1
  164. package/package.json +20 -1
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
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.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.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);
@@ -229,4 +229,11 @@ Object.defineProperty(exports, "identityNamespace", { enumerable: true, get: fun
229
229
  var index_js_6 = require("./lib/rag/index.js");
230
230
  Object.defineProperty(exports, "defineRAG", { enumerable: true, get: function () { return index_js_6.defineRAG; } });
231
231
  Object.defineProperty(exports, "indexDocuments", { enumerable: true, get: function () { return index_js_6.indexDocuments; } });
232
+ // MCP — Model Context Protocol client. Connect to MCP servers and
233
+ // expose their tools as agentfootprint Tool[] for `agent.tools(...)`.
234
+ // `@modelcontextprotocol/sdk` is a lazy-required peer-dep (no runtime
235
+ // cost when MCP isn't used).
236
+ var index_js_7 = require("./lib/mcp/index.js");
237
+ Object.defineProperty(exports, "mcpClient", { enumerable: true, get: function () { return index_js_7.mcpClient; } });
238
+ Object.defineProperty(exports, "mockMcpClient", { enumerable: true, get: function () { return index_js_7.mockMcpClient; } });
232
239
  //# 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,21 @@
1
+ "use strict";
2
+ /**
3
+ * agentfootprint/instructions — public re-export for the Instructions subsystem.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./lib/instructions/index.js"), exports);
21
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,8DAA4C"}
@@ -5,60 +5,6 @@
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
10
  exports.defineFact = exports.defineSteering = exports.defineSkill = exports.defineInstruction = exports.buildInjectionEngineSubflow = exports.evaluateInjections = void 0;
@@ -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,6DAAkF;AAAzE,6GAAA,WAAW,OAAA;AAEpB,mEAA2F;AAAlF,mHAAA,cAAc,OAAA;AAEvB,2DAA+E;AAAtE,2GAAA,UAAU,OAAA"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * defineInstruction — ergonomic builder for `Instruction`.
4
+ *
5
+ * Pattern: Builder pattern (GoF) for the Strategy interface.
6
+ * Role: Public surface — used by consumers to declare instructions.
7
+ *
8
+ * @example
9
+ * import { defineInstruction } from 'agentfootprint';
10
+ * import type { InstructionContext } from 'agentfootprint';
11
+ *
12
+ * const refundEmpathy = defineInstruction({
13
+ * id: 'refund-empathy',
14
+ * description: 'Calm tone for refund denials.',
15
+ * activeWhen: (ctx) => ctx.lastToolResult?.toolName === 'check_refund'
16
+ * && ctx.lastToolResult.result.includes('denied'),
17
+ * prompt: 'Be empathetic. Do NOT promise refund reversal.',
18
+ * });
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.defineInstruction = void 0;
22
+ function defineInstruction(options) {
23
+ if (!options.id || options.id.trim().length === 0) {
24
+ throw new Error('defineInstruction: `id` is required and must be non-empty.');
25
+ }
26
+ if (options.prompt === undefined
27
+ && (!options.tools || options.tools.length === 0)) {
28
+ throw new Error(`defineInstruction(${options.id}): instruction must declare at least one of \`prompt\` or \`tools\`.`);
29
+ }
30
+ // Freeze for consumer protection — instructions should be immutable
31
+ // after construction so the agent can cache evaluations.
32
+ return Object.freeze({ ...options });
33
+ }
34
+ exports.defineInstruction = defineInstruction;
35
+ //# sourceMappingURL=defineInstruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineInstruction.js","sourceRoot":"","sources":["../../../src/lib/instructions/defineInstruction.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAMH,SAAgB,iBAAiB,CAAC,OAAiC;IACjE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,IACE,OAAO,CAAC,MAAM,KAAK,SAAS;WACzB,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EACjD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,CAAC,EAAE,sEAAsE,CACtG,CAAC;IACJ,CAAC;IACD,oEAAoE;IACpE,yDAAyD;IACzD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAgB,CAAC;AACtD,CAAC;AAfD,8CAeC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Instruction evaluator — runs the `activeWhen` predicates and
4
+ * returns the active set + any skipped predicates.
5
+ *
6
+ * Pattern: Pure function. Stateless.
7
+ * Role: Internal helper used by Agent during pre-LLM stage.
8
+ * Emits: N/A — caller handles emit + observability.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.evaluateInstructions = void 0;
12
+ function evaluateInstructions(instructions, ctx) {
13
+ const active = [];
14
+ const skipped = [];
15
+ for (const inst of instructions) {
16
+ if (!inst.activeWhen) {
17
+ // No predicate → always active (unconditional injection).
18
+ active.push(inst);
19
+ continue;
20
+ }
21
+ let matched = false;
22
+ try {
23
+ matched = inst.activeWhen(ctx);
24
+ }
25
+ catch (err) {
26
+ skipped.push({
27
+ id: inst.id,
28
+ error: err instanceof Error ? err.message : String(err),
29
+ });
30
+ continue;
31
+ }
32
+ if (matched)
33
+ active.push(inst);
34
+ }
35
+ return { active, skipped };
36
+ }
37
+ exports.evaluateInstructions = evaluateInstructions;
38
+ //# sourceMappingURL=evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/lib/instructions/evaluator.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAQH,SAAgB,oBAAoB,CAClC,YAAoC,EACpC,GAAuB;IAEvB,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAoC,EAAE,CAAC;IAEpD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,0DAA0D;YAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AA3BD,oDA2BC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * Instructions — declarative rule-based system-prompt injection.
4
+ *
5
+ * Public API for the v2 Instructions subsystem. See `types.ts` for the
6
+ * full interface + the unified context-engineering model placement.
7
+ *
8
+ * ─── 7-panel design review (2026-04-28) ─────────────────────────────
9
+ *
10
+ * LLM-AI system design ✓ Maps cleanly to the unified context-
11
+ * engineering model: slot=system-prompt
12
+ * (+optional tools), role=system, timing=
13
+ * per-iteration, decision=rule.
14
+ * Performance ✓ Predicates run once per iteration (not
15
+ * per token / per event). O(N) in number
16
+ * of instructions; typical N ≤ 20.
17
+ * Scalability ✓ Stateless evaluator; many concurrent
18
+ * agents share the same instruction list
19
+ * via Object.freeze.
20
+ * Research alignment ✓ Mirrors v1 AgentInstruction's `activeWhen`
21
+ * shape (origin/main `c6e11d0`) but drops
22
+ * `onToolResult`, `safety`, decision-scope
23
+ * wrapping for v2 simplicity. Equivalent
24
+ * tool-result-driven behavior is expressed
25
+ * via `activeWhen: (ctx) =>
26
+ * ctx.lastToolResult?.toolName === 'X'`.
27
+ * Flexibility ✓ Same Instruction can be active across
28
+ * multiple iterations; can inject tools
29
+ * in addition to prompt; predicates can
30
+ * inspect history + last tool result.
31
+ * Abstraction-modular ✓ Three small files: types, builder,
32
+ * evaluator. Agent integration is one
33
+ * call into `evaluateInstructions()`.
34
+ * Software engineering ✓ Predicate errors are caught + surfaced
35
+ * (no crash). Frozen instructions prevent
36
+ * mutation. 7-pattern test coverage.
37
+ *
38
+ * ─── 7-pattern test coverage ────────────────────────────────────────
39
+ *
40
+ * See `test/lib/instructions/*.test.ts`.
41
+ */
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.evaluateInstructions = exports.defineInstruction = void 0;
44
+ var defineInstruction_js_1 = require("./defineInstruction.js");
45
+ Object.defineProperty(exports, "defineInstruction", { enumerable: true, get: function () { return defineInstruction_js_1.defineInstruction; } });
46
+ var evaluator_js_1 = require("./evaluator.js");
47
+ Object.defineProperty(exports, "evaluateInstructions", { enumerable: true, get: function () { return evaluator_js_1.evaluateInstructions; } });
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/instructions/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;;;AAEH,+DAGgC;AAF9B,yHAAA,iBAAiB,OAAA;AAInB,+CAEwB;AADtB,oHAAA,oBAAoB,OAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Instructions — types.
4
+ *
5
+ * An Instruction is a declarative rule for conditional system-prompt
6
+ * injection. The agent evaluates each Instruction's `activeWhen`
7
+ * predicate at the start of every iteration; matching instructions'
8
+ * `prompt` text is prepended to the system prompt for that iteration.
9
+ *
10
+ * This is the rule-based flavor of the unified context-engineering
11
+ * model: slot=system-prompt, role=system, timing=per-iteration,
12
+ * decision=rule. (Compare with Skills: timing=on-activation,
13
+ * decision=LLM-guided.)
14
+ *
15
+ * Pattern: Strategy (GoF) — each Instruction is a strategy for
16
+ * "should I add this prompt to the next iteration?"
17
+ * Role: Consumer-facing shape. Agent.create(...).instruction(...).
18
+ * Emits: `agentfootprint.context.injected` with source='instruction'
19
+ * when an instruction activates.
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/instructions/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockMcpClient = exports.mcpClient = void 0;
4
+ /**
5
+ * MCP — Model Context Protocol client integration. Connect to an MCP
6
+ * server, register its tools on your Agent. Server-side support is
7
+ * separate (consumer exposes their agent as an MCP tool — different
8
+ * use case, not yet shipped).
9
+ */
10
+ var mcpClient_js_1 = require("./mcpClient.js");
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; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ /**
3
+ * mcpClient — connect to an MCP server, expose its tools to your Agent.
4
+ *
5
+ * const slack = await mcpClient({
6
+ * name: 'slack',
7
+ * transport: { transport: 'stdio', command: 'npx', args: ['@example/slack-mcp'] },
8
+ * });
9
+ *
10
+ * const tools = await slack.tools(); // → readonly Tool[]
11
+ * const agent = Agent.create({ ... }).tools(tools).build();
12
+ *
13
+ * // ...
14
+ *
15
+ * await slack.close();
16
+ *
17
+ * Pattern: Adapter (GoF) — translates MCP `listTools()` / `callTool()`
18
+ * into agentfootprint's `Tool` interface (schema + execute).
19
+ * Each MCP tool becomes ONE agentfootprint Tool. The agent's
20
+ * existing tool-call handler invokes `client.callTool()`
21
+ * inside the wrapped `execute`.
22
+ *
23
+ * Role: Layer-3 integration. Sits next to `defineTool` — same
24
+ * shape, different source. Once tools land on the agent,
25
+ * the rest of the library doesn't know they came from MCP.
26
+ *
27
+ * Emits: N/A — wrapped tools emit the standard
28
+ * `agentfootprint.stream.tool_start` / `tool_end` events
29
+ * when the agent calls them. Add `name: '<mcp-server>'` to
30
+ * `McpClientOptions` so observability surfaces can group
31
+ * tool calls by server.
32
+ *
33
+ * Lazy-require pattern: the `@modelcontextprotocol/sdk` peer-dep
34
+ * loads only when a consumer actually constructs a client. Tests
35
+ * inject `_client` and skip the import path entirely.
36
+ */
37
+ Object.defineProperty(exports, "__esModule", { value: true });
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.
42
+ const DEFAULT_CLIENT_INFO = {
43
+ name: 'agentfootprint',
44
+ version: '0.0.0',
45
+ };
46
+ /**
47
+ * Connect to an MCP server. Returns an `McpClient` that exposes the
48
+ * server's tools as agentfootprint `Tool[]` and a `close()` to tear
49
+ * down the transport.
50
+ *
51
+ * @throws when `@modelcontextprotocol/sdk` is not installed (see
52
+ * error message for `npm install` hint), or when the transport
53
+ * fails to connect.
54
+ */
55
+ async function mcpClient(opts) {
56
+ const name = opts.name ?? 'mcp';
57
+ const sdk = opts._client ?? (await resolveClient(opts.transport, opts.clientInfo));
58
+ // Tool cache so consumers calling `.tools()` more than once don't
59
+ // hammer the server. `.refresh()` invalidates it.
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
+ };
67
+ const buildTools = async () => {
68
+ const listed = await sdk.listTools();
69
+ return listed.tools.map((t) => wrapMcpTool(name, sdk, t, opts.signal));
70
+ };
71
+ return {
72
+ name,
73
+ async tools() {
74
+ ensureOpen('tools');
75
+ if (!cache)
76
+ cache = await buildTools();
77
+ return cache;
78
+ },
79
+ async refresh() {
80
+ ensureOpen('refresh');
81
+ cache = await buildTools();
82
+ return cache;
83
+ },
84
+ async close() {
85
+ if (closed)
86
+ return;
87
+ closed = true;
88
+ cache = null;
89
+ await sdk.close();
90
+ },
91
+ };
92
+ }
93
+ exports.mcpClient = mcpClient;
94
+ // ─── SDK construction (lazy require) ───────────────────────────────
95
+ async function resolveClient(transport, clientInfo) {
96
+ let mod;
97
+ try {
98
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
99
+ mod = require('@modelcontextprotocol/sdk/client/index.js');
100
+ }
101
+ catch {
102
+ throw new Error('mcpClient requires @modelcontextprotocol/sdk.\n' +
103
+ ' Install: npm install @modelcontextprotocol/sdk\n' +
104
+ ' Or pass `_client` for test injection.');
105
+ }
106
+ const client = new mod.Client(clientInfo ?? DEFAULT_CLIENT_INFO, {
107
+ capabilities: {},
108
+ });
109
+ const transportImpl = await buildTransport(transport);
110
+ await client.connect(transportImpl);
111
+ return client;
112
+ }
113
+ async function buildTransport(t) {
114
+ if (t.transport === 'stdio') {
115
+ let stdioMod;
116
+ try {
117
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
118
+ stdioMod = require('@modelcontextprotocol/sdk/client/stdio.js');
119
+ }
120
+ catch {
121
+ throw new Error('mcpClient(stdio) requires @modelcontextprotocol/sdk/client/stdio.js — ' +
122
+ 'check that @modelcontextprotocol/sdk is installed at the latest version.');
123
+ }
124
+ return new stdioMod.StdioClientTransport({
125
+ command: t.command,
126
+ args: t.args ? [...t.args] : [],
127
+ ...(t.env && { env: { ...t.env } }),
128
+ ...(t.cwd !== undefined && { cwd: t.cwd }),
129
+ });
130
+ }
131
+ // http transport
132
+ let httpMod;
133
+ try {
134
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
135
+ httpMod = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
136
+ }
137
+ catch {
138
+ throw new Error('mcpClient(http) requires @modelcontextprotocol/sdk/client/streamableHttp.js — ' +
139
+ 'check that @modelcontextprotocol/sdk is installed at the latest version.');
140
+ }
141
+ return new httpMod.StreamableHTTPClientTransport(new URL(t.url), {
142
+ ...(t.headers && { requestInit: { headers: { ...t.headers } } }),
143
+ });
144
+ }
145
+ // ─── Tool wrapping ─────────────────────────────────────────────────
146
+ function wrapMcpTool(serverName, sdk, mcp, signal) {
147
+ const tool = {
148
+ schema: {
149
+ name: mcp.name,
150
+ description: mcp.description ?? `MCP tool: ${mcp.name}`,
151
+ inputSchema: mcp.inputSchema,
152
+ },
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
+ : {};
160
+ const result = await sdk.callTool({
161
+ name: mcp.name,
162
+ arguments: argsObj,
163
+ ...(signal && { signal }),
164
+ });
165
+ // MCP returns content blocks. We concatenate text blocks into
166
+ // a single string for the agent's tool-result event payload.
167
+ // Non-text blocks (images, resources) are summarized with their
168
+ // type — full multi-modal mapping is a future-release follow-up.
169
+ const text = result.content
170
+ .map((c) => (c.type === 'text' && c.text ? c.text : `[${c.type}]`))
171
+ .join('\n');
172
+ if (result.isError) {
173
+ throw new Error(`MCP tool '${mcp.name}' (server '${serverName}') returned an error: ${text}`);
174
+ }
175
+ return text;
176
+ },
177
+ };
178
+ return tool;
179
+ }
180
+ //# sourceMappingURL=mcpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../../src/lib/mcp/mcpClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ /**
3
+ * mockMcpClient — in-memory MCP client for development and tests.
4
+ *
5
+ * const slack = mockMcpClient({
6
+ * tools: [
7
+ * {
8
+ * name: 'send_message',
9
+ * description: 'Post a message to a channel',
10
+ * inputSchema: { type: 'object' },
11
+ * handler: async ({ text }) => `Posted: ${text}`,
12
+ * },
13
+ * ],
14
+ * });
15
+ *
16
+ * const agent = Agent.create({ provider: mock({ reply: 'ok' }) })
17
+ * .tools(await slack.tools())
18
+ * .build();
19
+ *
20
+ * Pattern: Adapter (GoF) — produces an `McpClient` with the same shape
21
+ * as `mcpClient(opts)` but driven by an in-memory tool table
22
+ * instead of the MCP SDK + transport. Drop-in for development:
23
+ * start with `mockMcpClient`, swap to `mcpClient` once the
24
+ * real server is ready.
25
+ *
26
+ * Why public: `mcpClient`'s `_client` injection is `@internal` because
27
+ * the SDK shape isn't a stable public surface. `mockMcpClient` exposes
28
+ * a curated tool-handler shape that's tied to OUR Tool contract instead
29
+ * — stable, documented, and the right level of abstraction for
30
+ * mock-first development.
31
+ */
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.mockMcpClient = void 0;
34
+ /**
35
+ * Build an in-memory `McpClient`. Useful when you want to develop
36
+ * against MCP semantics without spawning subprocesses, hitting the
37
+ * network, or installing `@modelcontextprotocol/sdk`. Same `McpClient`
38
+ * shape as `mcpClient(opts)` — code that consumes one accepts the other.
39
+ */
40
+ function mockMcpClient(options) {
41
+ const name = options.name ?? 'mock-mcp';
42
+ const toolMap = new Map(options.tools.map((t) => [t.name, t]));
43
+ let cache = null;
44
+ let closed = false;
45
+ const ensureOpen = (op) => {
46
+ if (closed) {
47
+ throw new Error(`mockMcpClient[${name}].${op}() called after close(). Construct a new client to reuse.`);
48
+ }
49
+ };
50
+ const buildTools = () => options.tools.map((mcp) => wrapMockTool(name, toolMap, mcp));
51
+ return {
52
+ name,
53
+ async tools() {
54
+ ensureOpen('tools');
55
+ if (!cache)
56
+ cache = buildTools();
57
+ return cache;
58
+ },
59
+ async refresh() {
60
+ ensureOpen('refresh');
61
+ cache = buildTools();
62
+ return cache;
63
+ },
64
+ async close() {
65
+ if (closed)
66
+ return;
67
+ closed = true;
68
+ cache = null;
69
+ },
70
+ };
71
+ }
72
+ exports.mockMcpClient = mockMcpClient;
73
+ function wrapMockTool(serverName, toolMap, mcp) {
74
+ const tool = {
75
+ schema: {
76
+ name: mcp.name,
77
+ description: mcp.description ?? `Mock MCP tool: ${mcp.name}`,
78
+ inputSchema: mcp.inputSchema,
79
+ },
80
+ execute: async (args) => {
81
+ const argsObj = args !== null && typeof args === 'object' && !Array.isArray(args)
82
+ ? args
83
+ : {};
84
+ // Look up by name at call time so mid-test handler swaps via a
85
+ // mutable Map could be supported later. For now `toolMap` is
86
+ // built once at factory time.
87
+ const handler = toolMap.get(mcp.name)?.handler;
88
+ if (!handler)
89
+ return '[mock result]';
90
+ try {
91
+ return await handler(argsObj);
92
+ }
93
+ catch (err) {
94
+ const msg = err instanceof Error ? err.message : String(err);
95
+ throw new Error(`Mock MCP tool '${mcp.name}' (server '${serverName}') threw: ${msg}`);
96
+ }
97
+ },
98
+ };
99
+ return tool;
100
+ }
101
+ //# sourceMappingURL=mockMcpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockMcpClient.js","sourceRoot":"","sources":["../../../src/lib/mcp/mockMcpClient.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAkCH;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAA6B;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAsB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpF,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,UAAU,GAAG,CAAC,EAAU,EAAQ,EAAE;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,KAAK,EAAE,2DAA2D,CACxF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAoB,EAAE,CACvC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAE/D,OAAO;QACL,IAAI;QACJ,KAAK,CAAC,KAAK;YACT,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,UAAU,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,OAAO;YACX,UAAU,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,GAAG,UAAU,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,KAAK;YACT,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AApCD,sCAoCC;AAED,SAAS,YAAY,CACnB,UAAkB,EAClB,OAAyC,EACzC,GAAgB;IAEhB,MAAM,IAAI,GAAS;QACjB,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,kBAAkB,GAAG,CAAC,IAAI,EAAE;YAC5D,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GACX,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/D,CAAC,CAAE,IAAgC;gBACnC,CAAC,CAAC,EAAE,CAAC;YACT,+DAA+D;YAC/D,6DAA6D;YAC7D,8BAA8B;YAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YAC/C,IAAI,CAAC,OAAO;gBAAE,OAAO,eAAe,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,IAAI,cAAc,UAAU,aAAa,GAAG,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;KACF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}