agentfootprint 1.0.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 (960) hide show
  1. package/AGENTS.md +297 -0
  2. package/CLAUDE.md +297 -0
  3. package/LICENSE +21 -0
  4. package/README.md +339 -0
  5. package/ai-instructions/claude-code/SKILL.md +597 -0
  6. package/ai-instructions/clinerules +85 -0
  7. package/ai-instructions/copilot-instructions.md +109 -0
  8. package/ai-instructions/cursor/agentfootprint.md +101 -0
  9. package/ai-instructions/kiro/agentfootprint.md +101 -0
  10. package/ai-instructions/setup.sh +140 -0
  11. package/ai-instructions/windsurfrules +85 -0
  12. package/dist/adapters/a2a/a2aRunner.js +36 -0
  13. package/dist/adapters/a2a/a2aRunner.js.map +1 -0
  14. package/dist/adapters/anthropic/AnthropicAdapter.js +293 -0
  15. package/dist/adapters/anthropic/AnthropicAdapter.js.map +1 -0
  16. package/dist/adapters/bedrock/BedrockAdapter.js +313 -0
  17. package/dist/adapters/bedrock/BedrockAdapter.js.map +1 -0
  18. package/dist/adapters/browser/BrowserAnthropicAdapter.js +349 -0
  19. package/dist/adapters/browser/BrowserAnthropicAdapter.js.map +1 -0
  20. package/dist/adapters/browser/BrowserOpenAIAdapter.js +303 -0
  21. package/dist/adapters/browser/BrowserOpenAIAdapter.js.map +1 -0
  22. package/dist/adapters/browser/index.js +8 -0
  23. package/dist/adapters/browser/index.js.map +1 -0
  24. package/dist/adapters/createAdapterSubflow.js +46 -0
  25. package/dist/adapters/createAdapterSubflow.js.map +1 -0
  26. package/dist/adapters/createProvider.js +107 -0
  27. package/dist/adapters/createProvider.js.map +1 -0
  28. package/dist/adapters/fallbackProvider.js +94 -0
  29. package/dist/adapters/fallbackProvider.js.map +1 -0
  30. package/dist/adapters/index.js +47 -0
  31. package/dist/adapters/index.js.map +1 -0
  32. package/dist/adapters/mcp/mcpToolProvider.js +44 -0
  33. package/dist/adapters/mcp/mcpToolProvider.js.map +1 -0
  34. package/dist/adapters/memory/inMemory.js +38 -0
  35. package/dist/adapters/memory/inMemory.js.map +1 -0
  36. package/dist/adapters/memory/index.js +6 -0
  37. package/dist/adapters/memory/index.js.map +1 -0
  38. package/dist/adapters/memory/stores.js +137 -0
  39. package/dist/adapters/memory/stores.js.map +1 -0
  40. package/dist/adapters/memory/types.js +14 -0
  41. package/dist/adapters/memory/types.js.map +1 -0
  42. package/dist/adapters/mock/MockAdapter.js +66 -0
  43. package/dist/adapters/mock/MockAdapter.js.map +1 -0
  44. package/dist/adapters/mock/MockRetriever.js +61 -0
  45. package/dist/adapters/mock/MockRetriever.js.map +1 -0
  46. package/dist/adapters/openai/OpenAIAdapter.js +276 -0
  47. package/dist/adapters/openai/OpenAIAdapter.js.map +1 -0
  48. package/dist/adapters/resilientProvider.js +93 -0
  49. package/dist/adapters/resilientProvider.js.map +1 -0
  50. package/dist/compositions/index.js +17 -0
  51. package/dist/compositions/index.js.map +1 -0
  52. package/dist/compositions/withCircuitBreaker.js +84 -0
  53. package/dist/compositions/withCircuitBreaker.js.map +1 -0
  54. package/dist/compositions/withFallback.js +33 -0
  55. package/dist/compositions/withFallback.js.map +1 -0
  56. package/dist/compositions/withRetry.js +59 -0
  57. package/dist/compositions/withRetry.js.map +1 -0
  58. package/dist/concepts/FlowChart.js +205 -0
  59. package/dist/concepts/FlowChart.js.map +1 -0
  60. package/dist/concepts/LLMCall.js +160 -0
  61. package/dist/concepts/LLMCall.js.map +1 -0
  62. package/dist/concepts/Parallel.js +254 -0
  63. package/dist/concepts/Parallel.js.map +1 -0
  64. package/dist/concepts/RAG.js +198 -0
  65. package/dist/concepts/RAG.js.map +1 -0
  66. package/dist/concepts/Swarm.js +270 -0
  67. package/dist/concepts/Swarm.js.map +1 -0
  68. package/dist/concepts/index.js +23 -0
  69. package/dist/concepts/index.js.map +1 -0
  70. package/dist/concepts/specIcons.js +48 -0
  71. package/dist/concepts/specIcons.js.map +1 -0
  72. package/dist/core/config.js +7 -0
  73. package/dist/core/config.js.map +1 -0
  74. package/dist/core/index.js +14 -0
  75. package/dist/core/index.js.map +1 -0
  76. package/dist/core/providers.js +19 -0
  77. package/dist/core/providers.js.map +1 -0
  78. package/dist/core/recorders.js +7 -0
  79. package/dist/core/recorders.js.map +1 -0
  80. package/dist/esm/adapters/a2a/a2aRunner.js +32 -0
  81. package/dist/esm/adapters/a2a/a2aRunner.js.map +1 -0
  82. package/dist/esm/adapters/anthropic/AnthropicAdapter.js +289 -0
  83. package/dist/esm/adapters/anthropic/AnthropicAdapter.js.map +1 -0
  84. package/dist/esm/adapters/bedrock/BedrockAdapter.js +309 -0
  85. package/dist/esm/adapters/bedrock/BedrockAdapter.js.map +1 -0
  86. package/dist/esm/adapters/browser/BrowserAnthropicAdapter.js +345 -0
  87. package/dist/esm/adapters/browser/BrowserAnthropicAdapter.js.map +1 -0
  88. package/dist/esm/adapters/browser/BrowserOpenAIAdapter.js +299 -0
  89. package/dist/esm/adapters/browser/BrowserOpenAIAdapter.js.map +1 -0
  90. package/dist/esm/adapters/browser/index.js +3 -0
  91. package/dist/esm/adapters/browser/index.js.map +1 -0
  92. package/dist/esm/adapters/createAdapterSubflow.js +42 -0
  93. package/dist/esm/adapters/createAdapterSubflow.js.map +1 -0
  94. package/dist/esm/adapters/createProvider.js +101 -0
  95. package/dist/esm/adapters/createProvider.js.map +1 -0
  96. package/dist/esm/adapters/fallbackProvider.js +90 -0
  97. package/dist/esm/adapters/fallbackProvider.js.map +1 -0
  98. package/dist/esm/adapters/index.js +23 -0
  99. package/dist/esm/adapters/index.js.map +1 -0
  100. package/dist/esm/adapters/mcp/mcpToolProvider.js +40 -0
  101. package/dist/esm/adapters/mcp/mcpToolProvider.js.map +1 -0
  102. package/dist/esm/adapters/memory/inMemory.js +34 -0
  103. package/dist/esm/adapters/memory/inMemory.js.map +1 -0
  104. package/dist/esm/adapters/memory/index.js +2 -0
  105. package/dist/esm/adapters/memory/index.js.map +1 -0
  106. package/dist/esm/adapters/memory/stores.js +131 -0
  107. package/dist/esm/adapters/memory/stores.js.map +1 -0
  108. package/dist/esm/adapters/memory/types.js +13 -0
  109. package/dist/esm/adapters/memory/types.js.map +1 -0
  110. package/dist/esm/adapters/mock/MockAdapter.js +61 -0
  111. package/dist/esm/adapters/mock/MockAdapter.js.map +1 -0
  112. package/dist/esm/adapters/mock/MockRetriever.js +56 -0
  113. package/dist/esm/adapters/mock/MockRetriever.js.map +1 -0
  114. package/dist/esm/adapters/openai/OpenAIAdapter.js +272 -0
  115. package/dist/esm/adapters/openai/OpenAIAdapter.js.map +1 -0
  116. package/dist/esm/adapters/resilientProvider.js +89 -0
  117. package/dist/esm/adapters/resilientProvider.js.map +1 -0
  118. package/dist/esm/compositions/index.js +10 -0
  119. package/dist/esm/compositions/index.js.map +1 -0
  120. package/dist/esm/compositions/withCircuitBreaker.js +79 -0
  121. package/dist/esm/compositions/withCircuitBreaker.js.map +1 -0
  122. package/dist/esm/compositions/withFallback.js +29 -0
  123. package/dist/esm/compositions/withFallback.js.map +1 -0
  124. package/dist/esm/compositions/withRetry.js +55 -0
  125. package/dist/esm/compositions/withRetry.js.map +1 -0
  126. package/dist/esm/concepts/FlowChart.js +200 -0
  127. package/dist/esm/concepts/FlowChart.js.map +1 -0
  128. package/dist/esm/concepts/LLMCall.js +155 -0
  129. package/dist/esm/concepts/LLMCall.js.map +1 -0
  130. package/dist/esm/concepts/Parallel.js +249 -0
  131. package/dist/esm/concepts/Parallel.js.map +1 -0
  132. package/dist/esm/concepts/RAG.js +193 -0
  133. package/dist/esm/concepts/RAG.js.map +1 -0
  134. package/dist/esm/concepts/Swarm.js +265 -0
  135. package/dist/esm/concepts/Swarm.js.map +1 -0
  136. package/dist/esm/concepts/index.js +8 -0
  137. package/dist/esm/concepts/index.js.map +1 -0
  138. package/dist/esm/concepts/specIcons.js +44 -0
  139. package/dist/esm/concepts/specIcons.js.map +1 -0
  140. package/dist/esm/core/config.js +6 -0
  141. package/dist/esm/core/config.js.map +1 -0
  142. package/dist/esm/core/index.js +13 -0
  143. package/dist/esm/core/index.js.map +1 -0
  144. package/dist/esm/core/providers.js +18 -0
  145. package/dist/esm/core/providers.js.map +1 -0
  146. package/dist/esm/core/recorders.js +6 -0
  147. package/dist/esm/core/recorders.js.map +1 -0
  148. package/dist/esm/executor/agentLoop.js +150 -0
  149. package/dist/esm/executor/agentLoop.js.map +1 -0
  150. package/dist/esm/executor/index.js +5 -0
  151. package/dist/esm/executor/index.js.map +1 -0
  152. package/dist/esm/explain.barrel.js +19 -0
  153. package/dist/esm/explain.barrel.js.map +1 -0
  154. package/dist/esm/index.js +29 -0
  155. package/dist/esm/index.js.map +1 -0
  156. package/dist/esm/instructions.barrel.js +22 -0
  157. package/dist/esm/instructions.barrel.js.map +1 -0
  158. package/dist/esm/lib/call/callLLMStage.js +64 -0
  159. package/dist/esm/lib/call/callLLMStage.js.map +1 -0
  160. package/dist/esm/lib/call/handleResponseStage.js +49 -0
  161. package/dist/esm/lib/call/handleResponseStage.js.map +1 -0
  162. package/dist/esm/lib/call/helpers.js +164 -0
  163. package/dist/esm/lib/call/helpers.js.map +1 -0
  164. package/dist/esm/lib/call/index.js +7 -0
  165. package/dist/esm/lib/call/index.js.map +1 -0
  166. package/dist/esm/lib/call/parseResponseStage.js +48 -0
  167. package/dist/esm/lib/call/parseResponseStage.js.map +1 -0
  168. package/dist/esm/lib/call/streamingCallLLMStage.js +103 -0
  169. package/dist/esm/lib/call/streamingCallLLMStage.js.map +1 -0
  170. package/dist/esm/lib/call/toolExecutionSubflow.js +87 -0
  171. package/dist/esm/lib/call/toolExecutionSubflow.js.map +1 -0
  172. package/dist/esm/lib/call/types.js +10 -0
  173. package/dist/esm/lib/call/types.js.map +1 -0
  174. package/dist/esm/lib/concepts/Agent.js +7 -0
  175. package/dist/esm/lib/concepts/Agent.js.map +1 -0
  176. package/dist/esm/lib/concepts/AgentBuilder.js +224 -0
  177. package/dist/esm/lib/concepts/AgentBuilder.js.map +1 -0
  178. package/dist/esm/lib/concepts/AgentRunner.js +337 -0
  179. package/dist/esm/lib/concepts/AgentRunner.js.map +1 -0
  180. package/dist/esm/lib/concepts/index.js +2 -0
  181. package/dist/esm/lib/concepts/index.js.map +1 -0
  182. package/dist/esm/lib/instructions/InstructionRecorder.js +121 -0
  183. package/dist/esm/lib/instructions/InstructionRecorder.js.map +1 -0
  184. package/dist/esm/lib/instructions/agentInstruction.js +139 -0
  185. package/dist/esm/lib/instructions/agentInstruction.js.map +1 -0
  186. package/dist/esm/lib/instructions/buildInstructionsToLLMSubflow.js +83 -0
  187. package/dist/esm/lib/instructions/buildInstructionsToLLMSubflow.js.map +1 -0
  188. package/dist/esm/lib/instructions/evaluator.js +196 -0
  189. package/dist/esm/lib/instructions/evaluator.js.map +1 -0
  190. package/dist/esm/lib/instructions/index.js +10 -0
  191. package/dist/esm/lib/instructions/index.js.map +1 -0
  192. package/dist/esm/lib/instructions/inject.js +55 -0
  193. package/dist/esm/lib/instructions/inject.js.map +1 -0
  194. package/dist/esm/lib/instructions/preview.js +88 -0
  195. package/dist/esm/lib/instructions/preview.js.map +1 -0
  196. package/dist/esm/lib/instructions/strictFollowUp.js +125 -0
  197. package/dist/esm/lib/instructions/strictFollowUp.js.map +1 -0
  198. package/dist/esm/lib/instructions/template.js +82 -0
  199. package/dist/esm/lib/instructions/template.js.map +1 -0
  200. package/dist/esm/lib/instructions/types.js +83 -0
  201. package/dist/esm/lib/instructions/types.js.map +1 -0
  202. package/dist/esm/lib/loop/buildAgentLoop.js +401 -0
  203. package/dist/esm/lib/loop/buildAgentLoop.js.map +1 -0
  204. package/dist/esm/lib/loop/index.js +3 -0
  205. package/dist/esm/lib/loop/index.js.map +1 -0
  206. package/dist/esm/lib/loop/types.js +71 -0
  207. package/dist/esm/lib/loop/types.js.map +1 -0
  208. package/dist/esm/lib/narrative/agentRenderer.js +293 -0
  209. package/dist/esm/lib/narrative/agentRenderer.js.map +1 -0
  210. package/dist/esm/lib/narrative/groundingHelpers.js +136 -0
  211. package/dist/esm/lib/narrative/groundingHelpers.js.map +1 -0
  212. package/dist/esm/lib/narrative/index.js +3 -0
  213. package/dist/esm/lib/narrative/index.js.map +1 -0
  214. package/dist/esm/lib/slots/helpers.js +23 -0
  215. package/dist/esm/lib/slots/helpers.js.map +1 -0
  216. package/dist/esm/lib/slots/index.js +4 -0
  217. package/dist/esm/lib/slots/index.js.map +1 -0
  218. package/dist/esm/lib/slots/messages/buildMessagesSubflow.js +108 -0
  219. package/dist/esm/lib/slots/messages/buildMessagesSubflow.js.map +1 -0
  220. package/dist/esm/lib/slots/messages/index.js +2 -0
  221. package/dist/esm/lib/slots/messages/index.js.map +1 -0
  222. package/dist/esm/lib/slots/messages/types.js +10 -0
  223. package/dist/esm/lib/slots/messages/types.js.map +1 -0
  224. package/dist/esm/lib/slots/system-prompt/buildSystemPromptSubflow.js +64 -0
  225. package/dist/esm/lib/slots/system-prompt/buildSystemPromptSubflow.js.map +1 -0
  226. package/dist/esm/lib/slots/system-prompt/index.js +2 -0
  227. package/dist/esm/lib/slots/system-prompt/index.js.map +1 -0
  228. package/dist/esm/lib/slots/system-prompt/types.js +9 -0
  229. package/dist/esm/lib/slots/system-prompt/types.js.map +1 -0
  230. package/dist/esm/lib/slots/tools/buildToolsSubflow.js +67 -0
  231. package/dist/esm/lib/slots/tools/buildToolsSubflow.js.map +1 -0
  232. package/dist/esm/lib/slots/tools/index.js +2 -0
  233. package/dist/esm/lib/slots/tools/index.js.map +1 -0
  234. package/dist/esm/lib/slots/tools/types.js +11 -0
  235. package/dist/esm/lib/slots/tools/types.js.map +1 -0
  236. package/dist/esm/lib/swarm/buildSwarmRouting.js +207 -0
  237. package/dist/esm/lib/swarm/buildSwarmRouting.js.map +1 -0
  238. package/dist/esm/lib/swarm/index.js +2 -0
  239. package/dist/esm/lib/swarm/index.js.map +1 -0
  240. package/dist/esm/memory/conversationHelpers.js +56 -0
  241. package/dist/esm/memory/conversationHelpers.js.map +1 -0
  242. package/dist/esm/memory/index.js +2 -0
  243. package/dist/esm/memory/index.js.map +1 -0
  244. package/dist/esm/models/index.js +3 -0
  245. package/dist/esm/models/index.js.map +1 -0
  246. package/dist/esm/models/pricing.js +23 -0
  247. package/dist/esm/models/pricing.js.map +1 -0
  248. package/dist/esm/models/providers.js +42 -0
  249. package/dist/esm/models/providers.js.map +1 -0
  250. package/dist/esm/models/types.js +6 -0
  251. package/dist/esm/models/types.js.map +1 -0
  252. package/dist/esm/observe.barrel.js +18 -0
  253. package/dist/esm/observe.barrel.js.map +1 -0
  254. package/dist/esm/providers/index.js +12 -0
  255. package/dist/esm/providers/index.js.map +1 -0
  256. package/dist/esm/providers/messages/charBudget.js +39 -0
  257. package/dist/esm/providers/messages/charBudget.js.map +1 -0
  258. package/dist/esm/providers/messages/compositeMessages.js +33 -0
  259. package/dist/esm/providers/messages/compositeMessages.js.map +1 -0
  260. package/dist/esm/providers/messages/fullHistory.js +15 -0
  261. package/dist/esm/providers/messages/fullHistory.js.map +1 -0
  262. package/dist/esm/providers/messages/index.js +11 -0
  263. package/dist/esm/providers/messages/index.js.map +1 -0
  264. package/dist/esm/providers/messages/persistentHistory.js +40 -0
  265. package/dist/esm/providers/messages/persistentHistory.js.map +1 -0
  266. package/dist/esm/providers/messages/slidingWindow.js +24 -0
  267. package/dist/esm/providers/messages/slidingWindow.js.map +1 -0
  268. package/dist/esm/providers/messages/summaryStrategy.js +41 -0
  269. package/dist/esm/providers/messages/summaryStrategy.js.map +1 -0
  270. package/dist/esm/providers/messages/withToolPairSafety.js +76 -0
  271. package/dist/esm/providers/messages/withToolPairSafety.js.map +1 -0
  272. package/dist/esm/providers/prompt/compositePrompt.js +28 -0
  273. package/dist/esm/providers/prompt/compositePrompt.js.map +1 -0
  274. package/dist/esm/providers/prompt/index.js +8 -0
  275. package/dist/esm/providers/prompt/index.js.map +1 -0
  276. package/dist/esm/providers/prompt/skillBasedPrompt.js +37 -0
  277. package/dist/esm/providers/prompt/skillBasedPrompt.js.map +1 -0
  278. package/dist/esm/providers/prompt/static.js +9 -0
  279. package/dist/esm/providers/prompt/static.js.map +1 -0
  280. package/dist/esm/providers/prompt/template.js +20 -0
  281. package/dist/esm/providers/prompt/template.js.map +1 -0
  282. package/dist/esm/providers/tools/PermissionPolicy.js +100 -0
  283. package/dist/esm/providers/tools/PermissionPolicy.js.map +1 -0
  284. package/dist/esm/providers/tools/agentAsTool.js +47 -0
  285. package/dist/esm/providers/tools/agentAsTool.js.map +1 -0
  286. package/dist/esm/providers/tools/compositeTools.js +49 -0
  287. package/dist/esm/providers/tools/compositeTools.js.map +1 -0
  288. package/dist/esm/providers/tools/dynamicTools.js +41 -0
  289. package/dist/esm/providers/tools/dynamicTools.js.map +1 -0
  290. package/dist/esm/providers/tools/gatedTools.js +90 -0
  291. package/dist/esm/providers/tools/gatedTools.js.map +1 -0
  292. package/dist/esm/providers/tools/index.js +11 -0
  293. package/dist/esm/providers/tools/index.js.map +1 -0
  294. package/dist/esm/providers/tools/noTools.js +9 -0
  295. package/dist/esm/providers/tools/noTools.js.map +1 -0
  296. package/dist/esm/providers/tools/staticTools.js +25 -0
  297. package/dist/esm/providers/tools/staticTools.js.map +1 -0
  298. package/dist/esm/providers.barrel.js +32 -0
  299. package/dist/esm/providers.barrel.js.map +1 -0
  300. package/dist/esm/recorders/index.js +5 -0
  301. package/dist/esm/recorders/index.js.map +1 -0
  302. package/dist/esm/recorders/v2/CompositeRecorder.js +65 -0
  303. package/dist/esm/recorders/v2/CompositeRecorder.js.map +1 -0
  304. package/dist/esm/recorders/v2/CostRecorder.js +47 -0
  305. package/dist/esm/recorders/v2/CostRecorder.js.map +1 -0
  306. package/dist/esm/recorders/v2/ExplainRecorder.js +93 -0
  307. package/dist/esm/recorders/v2/ExplainRecorder.js.map +1 -0
  308. package/dist/esm/recorders/v2/GuardrailRecorder.js +58 -0
  309. package/dist/esm/recorders/v2/GuardrailRecorder.js.map +1 -0
  310. package/dist/esm/recorders/v2/OTelRecorder.js +79 -0
  311. package/dist/esm/recorders/v2/OTelRecorder.js.map +1 -0
  312. package/dist/esm/recorders/v2/PermissionRecorder.js +86 -0
  313. package/dist/esm/recorders/v2/PermissionRecorder.js.map +1 -0
  314. package/dist/esm/recorders/v2/QualityRecorder.js +48 -0
  315. package/dist/esm/recorders/v2/QualityRecorder.js.map +1 -0
  316. package/dist/esm/recorders/v2/RecorderBridge.js +85 -0
  317. package/dist/esm/recorders/v2/RecorderBridge.js.map +1 -0
  318. package/dist/esm/recorders/v2/TokenRecorder.js +72 -0
  319. package/dist/esm/recorders/v2/TokenRecorder.js.map +1 -0
  320. package/dist/esm/recorders/v2/ToolUsageRecorder.js +54 -0
  321. package/dist/esm/recorders/v2/ToolUsageRecorder.js.map +1 -0
  322. package/dist/esm/recorders/v2/TurnRecorder.js +83 -0
  323. package/dist/esm/recorders/v2/TurnRecorder.js.map +1 -0
  324. package/dist/esm/recorders/v2/agentObservability.js +62 -0
  325. package/dist/esm/recorders/v2/agentObservability.js.map +1 -0
  326. package/dist/esm/recorders/v2/index.js +13 -0
  327. package/dist/esm/recorders/v2/index.js.map +1 -0
  328. package/dist/esm/resilience.barrel.js +16 -0
  329. package/dist/esm/resilience.barrel.js.map +1 -0
  330. package/dist/esm/scope/AgentScope.js +153 -0
  331. package/dist/esm/scope/AgentScope.js.map +1 -0
  332. package/dist/esm/scope/index.js +2 -0
  333. package/dist/esm/scope/index.js.map +1 -0
  334. package/dist/esm/scope/types.js +37 -0
  335. package/dist/esm/scope/types.js.map +1 -0
  336. package/dist/esm/security.barrel.js +17 -0
  337. package/dist/esm/security.barrel.js.map +1 -0
  338. package/dist/esm/stages/augmentPrompt.js +28 -0
  339. package/dist/esm/stages/augmentPrompt.js.map +1 -0
  340. package/dist/esm/stages/callLLM.js +15 -0
  341. package/dist/esm/stages/callLLM.js.map +1 -0
  342. package/dist/esm/stages/commitMemory.js +94 -0
  343. package/dist/esm/stages/commitMemory.js.map +1 -0
  344. package/dist/esm/stages/finalize.js +12 -0
  345. package/dist/esm/stages/finalize.js.map +1 -0
  346. package/dist/esm/stages/helpers.js +58 -0
  347. package/dist/esm/stages/helpers.js.map +1 -0
  348. package/dist/esm/stages/index.js +9 -0
  349. package/dist/esm/stages/index.js.map +1 -0
  350. package/dist/esm/stages/parseResponse.js +25 -0
  351. package/dist/esm/stages/parseResponse.js.map +1 -0
  352. package/dist/esm/stages/retrieve.js +18 -0
  353. package/dist/esm/stages/retrieve.js.map +1 -0
  354. package/dist/esm/stages/runnerAsStage.js +66 -0
  355. package/dist/esm/stages/runnerAsStage.js.map +1 -0
  356. package/dist/esm/stream.barrel.js +18 -0
  357. package/dist/esm/stream.barrel.js.map +1 -0
  358. package/dist/esm/streaming/StreamEmitter.js +43 -0
  359. package/dist/esm/streaming/StreamEmitter.js.map +1 -0
  360. package/dist/esm/streaming/index.js +2 -0
  361. package/dist/esm/streaming/index.js.map +1 -0
  362. package/dist/esm/subflows/index.js +2 -0
  363. package/dist/esm/subflows/index.js.map +1 -0
  364. package/dist/esm/subflows/prepareMemory.js +83 -0
  365. package/dist/esm/subflows/prepareMemory.js.map +1 -0
  366. package/dist/esm/tools/ToolRegistry.js +84 -0
  367. package/dist/esm/tools/ToolRegistry.js.map +1 -0
  368. package/dist/esm/tools/askHuman.js +63 -0
  369. package/dist/esm/tools/askHuman.js.map +1 -0
  370. package/dist/esm/tools/index.js +3 -0
  371. package/dist/esm/tools/index.js.map +1 -0
  372. package/dist/esm/tools/validateInput.js +56 -0
  373. package/dist/esm/tools/validateInput.js.map +1 -0
  374. package/dist/esm/tools/zodToJsonSchema.js +65 -0
  375. package/dist/esm/tools/zodToJsonSchema.js.map +1 -0
  376. package/dist/esm/types/adapter.js +11 -0
  377. package/dist/esm/types/adapter.js.map +1 -0
  378. package/dist/esm/types/agent.js +5 -0
  379. package/dist/esm/types/agent.js.map +1 -0
  380. package/dist/esm/types/content.js +82 -0
  381. package/dist/esm/types/content.js.map +1 -0
  382. package/dist/esm/types/errors.js +74 -0
  383. package/dist/esm/types/errors.js.map +1 -0
  384. package/dist/esm/types/index.js +5 -0
  385. package/dist/esm/types/index.js.map +1 -0
  386. package/dist/esm/types/llm.js +6 -0
  387. package/dist/esm/types/llm.js.map +1 -0
  388. package/dist/esm/types/messages.js +24 -0
  389. package/dist/esm/types/messages.js.map +1 -0
  390. package/dist/esm/types/multiAgent.js +5 -0
  391. package/dist/esm/types/multiAgent.js.map +1 -0
  392. package/dist/esm/types/retriever.js +6 -0
  393. package/dist/esm/types/retriever.js.map +1 -0
  394. package/dist/esm/types/tools.js +5 -0
  395. package/dist/esm/types/tools.js.map +1 -0
  396. package/dist/executor/agentLoop.js +154 -0
  397. package/dist/executor/agentLoop.js.map +1 -0
  398. package/dist/executor/index.js +9 -0
  399. package/dist/executor/index.js.map +1 -0
  400. package/dist/explain.barrel.js +27 -0
  401. package/dist/explain.barrel.js.map +1 -0
  402. package/dist/index.js +74 -0
  403. package/dist/index.js.map +1 -0
  404. package/dist/instructions.barrel.js +30 -0
  405. package/dist/instructions.barrel.js.map +1 -0
  406. package/dist/lib/call/callLLMStage.js +68 -0
  407. package/dist/lib/call/callLLMStage.js.map +1 -0
  408. package/dist/lib/call/handleResponseStage.js +53 -0
  409. package/dist/lib/call/handleResponseStage.js.map +1 -0
  410. package/dist/lib/call/helpers.js +169 -0
  411. package/dist/lib/call/helpers.js.map +1 -0
  412. package/dist/lib/call/index.js +17 -0
  413. package/dist/lib/call/index.js.map +1 -0
  414. package/dist/lib/call/parseResponseStage.js +52 -0
  415. package/dist/lib/call/parseResponseStage.js.map +1 -0
  416. package/dist/lib/call/streamingCallLLMStage.js +107 -0
  417. package/dist/lib/call/streamingCallLLMStage.js.map +1 -0
  418. package/dist/lib/call/toolExecutionSubflow.js +91 -0
  419. package/dist/lib/call/toolExecutionSubflow.js.map +1 -0
  420. package/dist/lib/call/types.js +11 -0
  421. package/dist/lib/call/types.js.map +1 -0
  422. package/dist/lib/concepts/Agent.js +12 -0
  423. package/dist/lib/concepts/Agent.js.map +1 -0
  424. package/dist/lib/concepts/AgentBuilder.js +228 -0
  425. package/dist/lib/concepts/AgentBuilder.js.map +1 -0
  426. package/dist/lib/concepts/AgentRunner.js +341 -0
  427. package/dist/lib/concepts/AgentRunner.js.map +1 -0
  428. package/dist/lib/concepts/index.js +7 -0
  429. package/dist/lib/concepts/index.js.map +1 -0
  430. package/dist/lib/instructions/InstructionRecorder.js +125 -0
  431. package/dist/lib/instructions/InstructionRecorder.js.map +1 -0
  432. package/dist/lib/instructions/agentInstruction.js +144 -0
  433. package/dist/lib/instructions/agentInstruction.js.map +1 -0
  434. package/dist/lib/instructions/buildInstructionsToLLMSubflow.js +87 -0
  435. package/dist/lib/instructions/buildInstructionsToLLMSubflow.js.map +1 -0
  436. package/dist/lib/instructions/evaluator.js +202 -0
  437. package/dist/lib/instructions/evaluator.js.map +1 -0
  438. package/dist/lib/instructions/index.js +27 -0
  439. package/dist/lib/instructions/index.js.map +1 -0
  440. package/dist/lib/instructions/inject.js +59 -0
  441. package/dist/lib/instructions/inject.js.map +1 -0
  442. package/dist/lib/instructions/preview.js +92 -0
  443. package/dist/lib/instructions/preview.js.map +1 -0
  444. package/dist/lib/instructions/strictFollowUp.js +130 -0
  445. package/dist/lib/instructions/strictFollowUp.js.map +1 -0
  446. package/dist/lib/instructions/template.js +86 -0
  447. package/dist/lib/instructions/template.js.map +1 -0
  448. package/dist/lib/instructions/types.js +88 -0
  449. package/dist/lib/instructions/types.js.map +1 -0
  450. package/dist/lib/loop/buildAgentLoop.js +405 -0
  451. package/dist/lib/loop/buildAgentLoop.js.map +1 -0
  452. package/dist/lib/loop/index.js +9 -0
  453. package/dist/lib/loop/index.js.map +1 -0
  454. package/dist/lib/loop/types.js +74 -0
  455. package/dist/lib/loop/types.js.map +1 -0
  456. package/dist/lib/narrative/agentRenderer.js +297 -0
  457. package/dist/lib/narrative/agentRenderer.js.map +1 -0
  458. package/dist/lib/narrative/groundingHelpers.js +142 -0
  459. package/dist/lib/narrative/groundingHelpers.js.map +1 -0
  460. package/dist/lib/narrative/index.js +10 -0
  461. package/dist/lib/narrative/index.js.map +1 -0
  462. package/dist/lib/slots/helpers.js +28 -0
  463. package/dist/lib/slots/helpers.js.map +1 -0
  464. package/dist/lib/slots/index.js +10 -0
  465. package/dist/lib/slots/index.js.map +1 -0
  466. package/dist/lib/slots/messages/buildMessagesSubflow.js +112 -0
  467. package/dist/lib/slots/messages/buildMessagesSubflow.js.map +1 -0
  468. package/dist/lib/slots/messages/index.js +6 -0
  469. package/dist/lib/slots/messages/index.js.map +1 -0
  470. package/dist/lib/slots/messages/types.js +11 -0
  471. package/dist/lib/slots/messages/types.js.map +1 -0
  472. package/dist/lib/slots/system-prompt/buildSystemPromptSubflow.js +68 -0
  473. package/dist/lib/slots/system-prompt/buildSystemPromptSubflow.js.map +1 -0
  474. package/dist/lib/slots/system-prompt/index.js +6 -0
  475. package/dist/lib/slots/system-prompt/index.js.map +1 -0
  476. package/dist/lib/slots/system-prompt/types.js +10 -0
  477. package/dist/lib/slots/system-prompt/types.js.map +1 -0
  478. package/dist/lib/slots/tools/buildToolsSubflow.js +71 -0
  479. package/dist/lib/slots/tools/buildToolsSubflow.js.map +1 -0
  480. package/dist/lib/slots/tools/index.js +6 -0
  481. package/dist/lib/slots/tools/index.js.map +1 -0
  482. package/dist/lib/slots/tools/types.js +12 -0
  483. package/dist/lib/slots/tools/types.js.map +1 -0
  484. package/dist/lib/swarm/buildSwarmRouting.js +211 -0
  485. package/dist/lib/swarm/buildSwarmRouting.js.map +1 -0
  486. package/dist/lib/swarm/index.js +6 -0
  487. package/dist/lib/swarm/index.js.map +1 -0
  488. package/dist/memory/conversationHelpers.js +66 -0
  489. package/dist/memory/conversationHelpers.js.map +1 -0
  490. package/dist/memory/index.js +12 -0
  491. package/dist/memory/index.js.map +1 -0
  492. package/dist/models/index.js +12 -0
  493. package/dist/models/index.js.map +1 -0
  494. package/dist/models/pricing.js +27 -0
  495. package/dist/models/pricing.js.map +1 -0
  496. package/dist/models/providers.js +49 -0
  497. package/dist/models/providers.js.map +1 -0
  498. package/dist/models/types.js +7 -0
  499. package/dist/models/types.js.map +1 -0
  500. package/dist/observe.barrel.js +31 -0
  501. package/dist/observe.barrel.js.map +1 -0
  502. package/dist/providers/index.js +34 -0
  503. package/dist/providers/index.js.map +1 -0
  504. package/dist/providers/messages/charBudget.js +43 -0
  505. package/dist/providers/messages/charBudget.js.map +1 -0
  506. package/dist/providers/messages/compositeMessages.js +37 -0
  507. package/dist/providers/messages/compositeMessages.js.map +1 -0
  508. package/dist/providers/messages/fullHistory.js +19 -0
  509. package/dist/providers/messages/fullHistory.js.map +1 -0
  510. package/dist/providers/messages/index.js +22 -0
  511. package/dist/providers/messages/index.js.map +1 -0
  512. package/dist/providers/messages/persistentHistory.js +45 -0
  513. package/dist/providers/messages/persistentHistory.js.map +1 -0
  514. package/dist/providers/messages/slidingWindow.js +28 -0
  515. package/dist/providers/messages/slidingWindow.js.map +1 -0
  516. package/dist/providers/messages/summaryStrategy.js +45 -0
  517. package/dist/providers/messages/summaryStrategy.js.map +1 -0
  518. package/dist/providers/messages/withToolPairSafety.js +80 -0
  519. package/dist/providers/messages/withToolPairSafety.js.map +1 -0
  520. package/dist/providers/prompt/compositePrompt.js +32 -0
  521. package/dist/providers/prompt/compositePrompt.js.map +1 -0
  522. package/dist/providers/prompt/index.js +15 -0
  523. package/dist/providers/prompt/index.js.map +1 -0
  524. package/dist/providers/prompt/skillBasedPrompt.js +41 -0
  525. package/dist/providers/prompt/skillBasedPrompt.js.map +1 -0
  526. package/dist/providers/prompt/static.js +13 -0
  527. package/dist/providers/prompt/static.js.map +1 -0
  528. package/dist/providers/prompt/template.js +24 -0
  529. package/dist/providers/prompt/template.js.map +1 -0
  530. package/dist/providers/tools/PermissionPolicy.js +104 -0
  531. package/dist/providers/tools/PermissionPolicy.js.map +1 -0
  532. package/dist/providers/tools/agentAsTool.js +51 -0
  533. package/dist/providers/tools/agentAsTool.js.map +1 -0
  534. package/dist/providers/tools/compositeTools.js +53 -0
  535. package/dist/providers/tools/compositeTools.js.map +1 -0
  536. package/dist/providers/tools/dynamicTools.js +45 -0
  537. package/dist/providers/tools/dynamicTools.js.map +1 -0
  538. package/dist/providers/tools/gatedTools.js +94 -0
  539. package/dist/providers/tools/gatedTools.js.map +1 -0
  540. package/dist/providers/tools/index.js +21 -0
  541. package/dist/providers/tools/index.js.map +1 -0
  542. package/dist/providers/tools/noTools.js +13 -0
  543. package/dist/providers/tools/noTools.js.map +1 -0
  544. package/dist/providers/tools/staticTools.js +29 -0
  545. package/dist/providers/tools/staticTools.js.map +1 -0
  546. package/dist/providers.barrel.js +61 -0
  547. package/dist/providers.barrel.js.map +1 -0
  548. package/dist/recorders/index.js +17 -0
  549. package/dist/recorders/index.js.map +1 -0
  550. package/dist/recorders/v2/CompositeRecorder.js +69 -0
  551. package/dist/recorders/v2/CompositeRecorder.js.map +1 -0
  552. package/dist/recorders/v2/CostRecorder.js +51 -0
  553. package/dist/recorders/v2/CostRecorder.js.map +1 -0
  554. package/dist/recorders/v2/ExplainRecorder.js +97 -0
  555. package/dist/recorders/v2/ExplainRecorder.js.map +1 -0
  556. package/dist/recorders/v2/GuardrailRecorder.js +62 -0
  557. package/dist/recorders/v2/GuardrailRecorder.js.map +1 -0
  558. package/dist/recorders/v2/OTelRecorder.js +83 -0
  559. package/dist/recorders/v2/OTelRecorder.js.map +1 -0
  560. package/dist/recorders/v2/PermissionRecorder.js +90 -0
  561. package/dist/recorders/v2/PermissionRecorder.js.map +1 -0
  562. package/dist/recorders/v2/QualityRecorder.js +52 -0
  563. package/dist/recorders/v2/QualityRecorder.js.map +1 -0
  564. package/dist/recorders/v2/RecorderBridge.js +89 -0
  565. package/dist/recorders/v2/RecorderBridge.js.map +1 -0
  566. package/dist/recorders/v2/TokenRecorder.js +76 -0
  567. package/dist/recorders/v2/TokenRecorder.js.map +1 -0
  568. package/dist/recorders/v2/ToolUsageRecorder.js +58 -0
  569. package/dist/recorders/v2/ToolUsageRecorder.js.map +1 -0
  570. package/dist/recorders/v2/TurnRecorder.js +87 -0
  571. package/dist/recorders/v2/TurnRecorder.js.map +1 -0
  572. package/dist/recorders/v2/agentObservability.js +66 -0
  573. package/dist/recorders/v2/agentObservability.js.map +1 -0
  574. package/dist/recorders/v2/index.js +25 -0
  575. package/dist/recorders/v2/index.js.map +1 -0
  576. package/dist/resilience.barrel.js +25 -0
  577. package/dist/resilience.barrel.js.map +1 -0
  578. package/dist/scope/AgentScope.js +156 -0
  579. package/dist/scope/AgentScope.js.map +1 -0
  580. package/dist/scope/index.js +10 -0
  581. package/dist/scope/index.js.map +1 -0
  582. package/dist/scope/types.js +40 -0
  583. package/dist/scope/types.js.map +1 -0
  584. package/dist/security.barrel.js +22 -0
  585. package/dist/security.barrel.js.map +1 -0
  586. package/dist/stages/augmentPrompt.js +32 -0
  587. package/dist/stages/augmentPrompt.js.map +1 -0
  588. package/dist/stages/callLLM.js +19 -0
  589. package/dist/stages/callLLM.js.map +1 -0
  590. package/dist/stages/commitMemory.js +98 -0
  591. package/dist/stages/commitMemory.js.map +1 -0
  592. package/dist/stages/finalize.js +16 -0
  593. package/dist/stages/finalize.js.map +1 -0
  594. package/dist/stages/helpers.js +63 -0
  595. package/dist/stages/helpers.js.map +1 -0
  596. package/dist/stages/index.js +21 -0
  597. package/dist/stages/index.js.map +1 -0
  598. package/dist/stages/parseResponse.js +29 -0
  599. package/dist/stages/parseResponse.js.map +1 -0
  600. package/dist/stages/retrieve.js +22 -0
  601. package/dist/stages/retrieve.js.map +1 -0
  602. package/dist/stages/runnerAsStage.js +70 -0
  603. package/dist/stages/runnerAsStage.js.map +1 -0
  604. package/dist/stream.barrel.js +23 -0
  605. package/dist/stream.barrel.js.map +1 -0
  606. package/dist/streaming/StreamEmitter.js +48 -0
  607. package/dist/streaming/StreamEmitter.js.map +1 -0
  608. package/dist/streaming/index.js +7 -0
  609. package/dist/streaming/index.js.map +1 -0
  610. package/dist/subflows/index.js +6 -0
  611. package/dist/subflows/index.js.map +1 -0
  612. package/dist/subflows/prepareMemory.js +87 -0
  613. package/dist/subflows/prepareMemory.js.map +1 -0
  614. package/dist/tools/ToolRegistry.js +89 -0
  615. package/dist/tools/ToolRegistry.js.map +1 -0
  616. package/dist/tools/askHuman.js +68 -0
  617. package/dist/tools/askHuman.js.map +1 -0
  618. package/dist/tools/index.js +9 -0
  619. package/dist/tools/index.js.map +1 -0
  620. package/dist/tools/validateInput.js +61 -0
  621. package/dist/tools/validateInput.js.map +1 -0
  622. package/dist/tools/zodToJsonSchema.js +70 -0
  623. package/dist/tools/zodToJsonSchema.js.map +1 -0
  624. package/dist/types/adapter.js +14 -0
  625. package/dist/types/adapter.js.map +1 -0
  626. package/dist/types/adapters/a2a/a2aRunner.d.ts +40 -0
  627. package/dist/types/adapters/a2a/a2aRunner.d.ts.map +1 -0
  628. package/dist/types/adapters/anthropic/AnthropicAdapter.d.ts +37 -0
  629. package/dist/types/adapters/anthropic/AnthropicAdapter.d.ts.map +1 -0
  630. package/dist/types/adapters/bedrock/BedrockAdapter.d.ts +44 -0
  631. package/dist/types/adapters/bedrock/BedrockAdapter.d.ts.map +1 -0
  632. package/dist/types/adapters/browser/BrowserAnthropicAdapter.d.ts +40 -0
  633. package/dist/types/adapters/browser/BrowserAnthropicAdapter.d.ts.map +1 -0
  634. package/dist/types/adapters/browser/BrowserOpenAIAdapter.d.ts +46 -0
  635. package/dist/types/adapters/browser/BrowserOpenAIAdapter.d.ts.map +1 -0
  636. package/dist/types/adapters/browser/index.d.ts +5 -0
  637. package/dist/types/adapters/browser/index.d.ts.map +1 -0
  638. package/dist/types/adapters/createAdapterSubflow.d.ts +36 -0
  639. package/dist/types/adapters/createAdapterSubflow.d.ts.map +1 -0
  640. package/dist/types/adapters/createProvider.d.ts +47 -0
  641. package/dist/types/adapters/createProvider.d.ts.map +1 -0
  642. package/dist/types/adapters/fallbackProvider.d.ts +45 -0
  643. package/dist/types/adapters/fallbackProvider.d.ts.map +1 -0
  644. package/dist/types/adapters/index.d.ts +30 -0
  645. package/dist/types/adapters/index.d.ts.map +1 -0
  646. package/dist/types/adapters/mcp/mcpToolProvider.d.ts +41 -0
  647. package/dist/types/adapters/mcp/mcpToolProvider.d.ts.map +1 -0
  648. package/dist/types/adapters/memory/inMemory.d.ts +22 -0
  649. package/dist/types/adapters/memory/inMemory.d.ts.map +1 -0
  650. package/dist/types/adapters/memory/index.d.ts +3 -0
  651. package/dist/types/adapters/memory/index.d.ts.map +1 -0
  652. package/dist/types/adapters/memory/stores.d.ts +92 -0
  653. package/dist/types/adapters/memory/stores.d.ts.map +1 -0
  654. package/dist/types/adapters/memory/types.d.ts +74 -0
  655. package/dist/types/adapters/memory/types.d.ts.map +1 -0
  656. package/dist/types/adapters/mock/MockAdapter.d.ts +51 -0
  657. package/dist/types/adapters/mock/MockAdapter.d.ts.map +1 -0
  658. package/dist/types/adapters/mock/MockRetriever.d.ts +43 -0
  659. package/dist/types/adapters/mock/MockRetriever.d.ts.map +1 -0
  660. package/dist/types/adapters/openai/OpenAIAdapter.d.ts +47 -0
  661. package/dist/types/adapters/openai/OpenAIAdapter.d.ts.map +1 -0
  662. package/dist/types/adapters/resilientProvider.d.ts +33 -0
  663. package/dist/types/adapters/resilientProvider.d.ts.map +1 -0
  664. package/dist/types/agent.js +6 -0
  665. package/dist/types/agent.js.map +1 -0
  666. package/dist/types/compositions/index.d.ts +13 -0
  667. package/dist/types/compositions/index.d.ts.map +1 -0
  668. package/dist/types/compositions/withCircuitBreaker.d.ts +43 -0
  669. package/dist/types/compositions/withCircuitBreaker.d.ts.map +1 -0
  670. package/dist/types/compositions/withFallback.d.ts +17 -0
  671. package/dist/types/compositions/withFallback.d.ts.map +1 -0
  672. package/dist/types/compositions/withRetry.d.ts +27 -0
  673. package/dist/types/compositions/withRetry.d.ts.map +1 -0
  674. package/dist/types/concepts/FlowChart.d.ts +52 -0
  675. package/dist/types/concepts/FlowChart.d.ts.map +1 -0
  676. package/dist/types/concepts/LLMCall.d.ts +56 -0
  677. package/dist/types/concepts/LLMCall.d.ts.map +1 -0
  678. package/dist/types/concepts/Parallel.d.ts +110 -0
  679. package/dist/types/concepts/Parallel.d.ts.map +1 -0
  680. package/dist/types/concepts/RAG.d.ts +71 -0
  681. package/dist/types/concepts/RAG.d.ts.map +1 -0
  682. package/dist/types/concepts/Swarm.d.ts +98 -0
  683. package/dist/types/concepts/Swarm.d.ts.map +1 -0
  684. package/dist/types/concepts/index.d.ts +12 -0
  685. package/dist/types/concepts/index.d.ts.map +1 -0
  686. package/dist/types/concepts/specIcons.d.ts +14 -0
  687. package/dist/types/concepts/specIcons.d.ts.map +1 -0
  688. package/dist/types/content.js +97 -0
  689. package/dist/types/content.js.map +1 -0
  690. package/dist/types/core/config.d.ts +24 -0
  691. package/dist/types/core/config.d.ts.map +1 -0
  692. package/dist/types/core/index.d.ts +15 -0
  693. package/dist/types/core/index.d.ts.map +1 -0
  694. package/dist/types/core/providers.d.ts +160 -0
  695. package/dist/types/core/providers.d.ts.map +1 -0
  696. package/dist/types/core/recorders.d.ts +54 -0
  697. package/dist/types/core/recorders.d.ts.map +1 -0
  698. package/dist/types/errors.js +80 -0
  699. package/dist/types/errors.js.map +1 -0
  700. package/dist/types/executor/agentLoop.d.ts +37 -0
  701. package/dist/types/executor/agentLoop.d.ts.map +1 -0
  702. package/dist/types/executor/index.d.ts +6 -0
  703. package/dist/types/executor/index.d.ts.map +1 -0
  704. package/dist/types/explain.barrel.d.ts +20 -0
  705. package/dist/types/explain.barrel.d.ts.map +1 -0
  706. package/dist/types/index.d.ts +31 -0
  707. package/dist/types/index.d.ts.map +1 -0
  708. package/dist/types/index.js +29 -0
  709. package/dist/types/index.js.map +1 -0
  710. package/dist/types/instructions.barrel.d.ts +24 -0
  711. package/dist/types/instructions.barrel.d.ts.map +1 -0
  712. package/dist/types/lib/call/callLLMStage.d.ts +29 -0
  713. package/dist/types/lib/call/callLLMStage.d.ts.map +1 -0
  714. package/dist/types/lib/call/handleResponseStage.d.ts +35 -0
  715. package/dist/types/lib/call/handleResponseStage.d.ts.map +1 -0
  716. package/dist/types/lib/call/helpers.d.ts +64 -0
  717. package/dist/types/lib/call/helpers.d.ts.map +1 -0
  718. package/dist/types/lib/call/index.d.ts +10 -0
  719. package/dist/types/lib/call/index.d.ts.map +1 -0
  720. package/dist/types/lib/call/parseResponseStage.d.ts +21 -0
  721. package/dist/types/lib/call/parseResponseStage.d.ts.map +1 -0
  722. package/dist/types/lib/call/streamingCallLLMStage.d.ts +23 -0
  723. package/dist/types/lib/call/streamingCallLLMStage.d.ts.map +1 -0
  724. package/dist/types/lib/call/toolExecutionSubflow.d.ts +70 -0
  725. package/dist/types/lib/call/toolExecutionSubflow.d.ts.map +1 -0
  726. package/dist/types/lib/call/types.d.ts +17 -0
  727. package/dist/types/lib/call/types.d.ts.map +1 -0
  728. package/dist/types/lib/concepts/Agent.d.ts +9 -0
  729. package/dist/types/lib/concepts/Agent.d.ts.map +1 -0
  730. package/dist/types/lib/concepts/AgentBuilder.d.ts +152 -0
  731. package/dist/types/lib/concepts/AgentBuilder.d.ts.map +1 -0
  732. package/dist/types/lib/concepts/AgentRunner.d.ts +100 -0
  733. package/dist/types/lib/concepts/AgentRunner.d.ts.map +1 -0
  734. package/dist/types/lib/concepts/index.d.ts +3 -0
  735. package/dist/types/lib/concepts/index.d.ts.map +1 -0
  736. package/dist/types/lib/instructions/InstructionRecorder.d.ts +85 -0
  737. package/dist/types/lib/instructions/InstructionRecorder.d.ts.map +1 -0
  738. package/dist/types/lib/instructions/agentInstruction.d.ts +150 -0
  739. package/dist/types/lib/instructions/agentInstruction.d.ts.map +1 -0
  740. package/dist/types/lib/instructions/buildInstructionsToLLMSubflow.d.ts +56 -0
  741. package/dist/types/lib/instructions/buildInstructionsToLLMSubflow.d.ts.map +1 -0
  742. package/dist/types/lib/instructions/evaluator.d.ts +99 -0
  743. package/dist/types/lib/instructions/evaluator.d.ts.map +1 -0
  744. package/dist/types/lib/instructions/index.d.ts +18 -0
  745. package/dist/types/lib/instructions/index.d.ts.map +1 -0
  746. package/dist/types/lib/instructions/inject.d.ts +54 -0
  747. package/dist/types/lib/instructions/inject.d.ts.map +1 -0
  748. package/dist/types/lib/instructions/preview.d.ts +85 -0
  749. package/dist/types/lib/instructions/preview.d.ts.map +1 -0
  750. package/dist/types/lib/instructions/strictFollowUp.d.ts +88 -0
  751. package/dist/types/lib/instructions/strictFollowUp.d.ts.map +1 -0
  752. package/dist/types/lib/instructions/template.d.ts +52 -0
  753. package/dist/types/lib/instructions/template.d.ts.map +1 -0
  754. package/dist/types/lib/instructions/types.d.ts +394 -0
  755. package/dist/types/lib/instructions/types.d.ts.map +1 -0
  756. package/dist/types/lib/loop/buildAgentLoop.d.ts +67 -0
  757. package/dist/types/lib/loop/buildAgentLoop.d.ts.map +1 -0
  758. package/dist/types/lib/loop/index.d.ts +5 -0
  759. package/dist/types/lib/loop/index.d.ts.map +1 -0
  760. package/dist/types/lib/loop/types.d.ts +248 -0
  761. package/dist/types/lib/loop/types.d.ts.map +1 -0
  762. package/dist/types/lib/narrative/agentRenderer.d.ts +51 -0
  763. package/dist/types/lib/narrative/agentRenderer.d.ts.map +1 -0
  764. package/dist/types/lib/narrative/groundingHelpers.d.ts +94 -0
  765. package/dist/types/lib/narrative/groundingHelpers.d.ts.map +1 -0
  766. package/dist/types/lib/narrative/index.d.ts +5 -0
  767. package/dist/types/lib/narrative/index.d.ts.map +1 -0
  768. package/dist/types/lib/slots/helpers.d.ts +16 -0
  769. package/dist/types/lib/slots/helpers.d.ts.map +1 -0
  770. package/dist/types/lib/slots/index.d.ts +7 -0
  771. package/dist/types/lib/slots/index.d.ts.map +1 -0
  772. package/dist/types/lib/slots/messages/buildMessagesSubflow.d.ts +40 -0
  773. package/dist/types/lib/slots/messages/buildMessagesSubflow.d.ts.map +1 -0
  774. package/dist/types/lib/slots/messages/index.d.ts +3 -0
  775. package/dist/types/lib/slots/messages/index.d.ts.map +1 -0
  776. package/dist/types/lib/slots/messages/types.d.ts +26 -0
  777. package/dist/types/lib/slots/messages/types.d.ts.map +1 -0
  778. package/dist/types/lib/slots/system-prompt/buildSystemPromptSubflow.d.ts +27 -0
  779. package/dist/types/lib/slots/system-prompt/buildSystemPromptSubflow.d.ts.map +1 -0
  780. package/dist/types/lib/slots/system-prompt/index.d.ts +3 -0
  781. package/dist/types/lib/slots/system-prompt/index.d.ts.map +1 -0
  782. package/dist/types/lib/slots/system-prompt/types.d.ts +17 -0
  783. package/dist/types/lib/slots/system-prompt/types.d.ts.map +1 -0
  784. package/dist/types/lib/slots/tools/buildToolsSubflow.d.ts +23 -0
  785. package/dist/types/lib/slots/tools/buildToolsSubflow.d.ts.map +1 -0
  786. package/dist/types/lib/slots/tools/index.d.ts +3 -0
  787. package/dist/types/lib/slots/tools/index.d.ts.map +1 -0
  788. package/dist/types/lib/slots/tools/types.d.ts +18 -0
  789. package/dist/types/lib/slots/tools/types.d.ts.map +1 -0
  790. package/dist/types/lib/swarm/buildSwarmRouting.d.ts +36 -0
  791. package/dist/types/lib/swarm/buildSwarmRouting.d.ts.map +1 -0
  792. package/dist/types/lib/swarm/index.d.ts +3 -0
  793. package/dist/types/lib/swarm/index.d.ts.map +1 -0
  794. package/dist/types/llm.js +7 -0
  795. package/dist/types/llm.js.map +1 -0
  796. package/dist/types/memory/conversationHelpers.d.ts +23 -0
  797. package/dist/types/memory/conversationHelpers.d.ts.map +1 -0
  798. package/dist/types/memory/index.d.ts +2 -0
  799. package/dist/types/memory/index.d.ts.map +1 -0
  800. package/dist/types/messages.js +32 -0
  801. package/dist/types/messages.js.map +1 -0
  802. package/dist/types/models/index.d.ts +4 -0
  803. package/dist/types/models/index.d.ts.map +1 -0
  804. package/dist/types/models/pricing.d.ts +8 -0
  805. package/dist/types/models/pricing.d.ts.map +1 -0
  806. package/dist/types/models/providers.d.ts +23 -0
  807. package/dist/types/models/providers.d.ts.map +1 -0
  808. package/dist/types/models/types.d.ts +25 -0
  809. package/dist/types/models/types.d.ts.map +1 -0
  810. package/dist/types/multiAgent.js +6 -0
  811. package/dist/types/multiAgent.js.map +1 -0
  812. package/dist/types/observe.barrel.d.ts +21 -0
  813. package/dist/types/observe.barrel.d.ts.map +1 -0
  814. package/dist/types/providers/index.d.ts +15 -0
  815. package/dist/types/providers/index.d.ts.map +1 -0
  816. package/dist/types/providers/messages/charBudget.d.ts +19 -0
  817. package/dist/types/providers/messages/charBudget.d.ts.map +1 -0
  818. package/dist/types/providers/messages/compositeMessages.d.ts +16 -0
  819. package/dist/types/providers/messages/compositeMessages.d.ts.map +1 -0
  820. package/dist/types/providers/messages/fullHistory.d.ts +12 -0
  821. package/dist/types/providers/messages/fullHistory.d.ts.map +1 -0
  822. package/dist/types/providers/messages/index.d.ts +15 -0
  823. package/dist/types/providers/messages/index.d.ts.map +1 -0
  824. package/dist/types/providers/messages/persistentHistory.d.ts +32 -0
  825. package/dist/types/providers/messages/persistentHistory.d.ts.map +1 -0
  826. package/dist/types/providers/messages/slidingWindow.d.ts +16 -0
  827. package/dist/types/providers/messages/slidingWindow.d.ts.map +1 -0
  828. package/dist/types/providers/messages/summaryStrategy.d.ts +29 -0
  829. package/dist/types/providers/messages/summaryStrategy.d.ts.map +1 -0
  830. package/dist/types/providers/messages/withToolPairSafety.d.ts +19 -0
  831. package/dist/types/providers/messages/withToolPairSafety.d.ts.map +1 -0
  832. package/dist/types/providers/prompt/compositePrompt.d.ts +20 -0
  833. package/dist/types/providers/prompt/compositePrompt.d.ts.map +1 -0
  834. package/dist/types/providers/prompt/index.d.ts +10 -0
  835. package/dist/types/providers/prompt/index.d.ts.map +1 -0
  836. package/dist/types/providers/prompt/skillBasedPrompt.d.ts +33 -0
  837. package/dist/types/providers/prompt/skillBasedPrompt.d.ts.map +1 -0
  838. package/dist/types/providers/prompt/static.d.ts +6 -0
  839. package/dist/types/providers/prompt/static.d.ts.map +1 -0
  840. package/dist/types/providers/prompt/template.d.ts +6 -0
  841. package/dist/types/providers/prompt/template.d.ts.map +1 -0
  842. package/dist/types/providers/tools/PermissionPolicy.d.ts +76 -0
  843. package/dist/types/providers/tools/PermissionPolicy.d.ts.map +1 -0
  844. package/dist/types/providers/tools/agentAsTool.d.ts +40 -0
  845. package/dist/types/providers/tools/agentAsTool.d.ts.map +1 -0
  846. package/dist/types/providers/tools/compositeTools.d.ts +18 -0
  847. package/dist/types/providers/tools/compositeTools.d.ts.map +1 -0
  848. package/dist/types/providers/tools/dynamicTools.d.ts +27 -0
  849. package/dist/types/providers/tools/dynamicTools.d.ts.map +1 -0
  850. package/dist/types/providers/tools/gatedTools.d.ts +52 -0
  851. package/dist/types/providers/tools/gatedTools.d.ts.map +1 -0
  852. package/dist/types/providers/tools/index.d.ts +15 -0
  853. package/dist/types/providers/tools/index.d.ts.map +1 -0
  854. package/dist/types/providers/tools/noTools.d.ts +6 -0
  855. package/dist/types/providers/tools/noTools.d.ts.map +1 -0
  856. package/dist/types/providers/tools/staticTools.d.ts +7 -0
  857. package/dist/types/providers/tools/staticTools.d.ts.map +1 -0
  858. package/dist/types/providers.barrel.d.ts +34 -0
  859. package/dist/types/providers.barrel.d.ts.map +1 -0
  860. package/dist/types/recorders/index.d.ts +6 -0
  861. package/dist/types/recorders/index.d.ts.map +1 -0
  862. package/dist/types/recorders/v2/CompositeRecorder.d.ts +30 -0
  863. package/dist/types/recorders/v2/CompositeRecorder.d.ts.map +1 -0
  864. package/dist/types/recorders/v2/CostRecorder.d.ts +43 -0
  865. package/dist/types/recorders/v2/CostRecorder.d.ts.map +1 -0
  866. package/dist/types/recorders/v2/ExplainRecorder.d.ts +67 -0
  867. package/dist/types/recorders/v2/ExplainRecorder.d.ts.map +1 -0
  868. package/dist/types/recorders/v2/GuardrailRecorder.d.ts +45 -0
  869. package/dist/types/recorders/v2/GuardrailRecorder.d.ts.map +1 -0
  870. package/dist/types/recorders/v2/OTelRecorder.d.ts +50 -0
  871. package/dist/types/recorders/v2/OTelRecorder.d.ts.map +1 -0
  872. package/dist/types/recorders/v2/PermissionRecorder.d.ts +66 -0
  873. package/dist/types/recorders/v2/PermissionRecorder.d.ts.map +1 -0
  874. package/dist/types/recorders/v2/QualityRecorder.d.ts +37 -0
  875. package/dist/types/recorders/v2/QualityRecorder.d.ts.map +1 -0
  876. package/dist/types/recorders/v2/RecorderBridge.d.ts +38 -0
  877. package/dist/types/recorders/v2/RecorderBridge.d.ts.map +1 -0
  878. package/dist/types/recorders/v2/TokenRecorder.d.ts +54 -0
  879. package/dist/types/recorders/v2/TokenRecorder.d.ts.map +1 -0
  880. package/dist/types/recorders/v2/ToolUsageRecorder.d.ts +34 -0
  881. package/dist/types/recorders/v2/ToolUsageRecorder.d.ts.map +1 -0
  882. package/dist/types/recorders/v2/TurnRecorder.d.ts +36 -0
  883. package/dist/types/recorders/v2/TurnRecorder.d.ts.map +1 -0
  884. package/dist/types/recorders/v2/agentObservability.d.ts +68 -0
  885. package/dist/types/recorders/v2/agentObservability.d.ts.map +1 -0
  886. package/dist/types/recorders/v2/index.d.ts +21 -0
  887. package/dist/types/recorders/v2/index.d.ts.map +1 -0
  888. package/dist/types/resilience.barrel.d.ts +18 -0
  889. package/dist/types/resilience.barrel.d.ts.map +1 -0
  890. package/dist/types/retriever.js +7 -0
  891. package/dist/types/retriever.js.map +1 -0
  892. package/dist/types/scope/AgentScope.d.ts +87 -0
  893. package/dist/types/scope/AgentScope.d.ts.map +1 -0
  894. package/dist/types/scope/index.d.ts +3 -0
  895. package/dist/types/scope/index.d.ts.map +1 -0
  896. package/dist/types/scope/types.d.ts +151 -0
  897. package/dist/types/scope/types.d.ts.map +1 -0
  898. package/dist/types/security.barrel.d.ts +17 -0
  899. package/dist/types/security.barrel.d.ts.map +1 -0
  900. package/dist/types/stages/augmentPrompt.d.ts +7 -0
  901. package/dist/types/stages/augmentPrompt.d.ts.map +1 -0
  902. package/dist/types/stages/callLLM.d.ts +8 -0
  903. package/dist/types/stages/callLLM.d.ts.map +1 -0
  904. package/dist/types/stages/commitMemory.d.ts +51 -0
  905. package/dist/types/stages/commitMemory.d.ts.map +1 -0
  906. package/dist/types/stages/finalize.d.ts +7 -0
  907. package/dist/types/stages/finalize.d.ts.map +1 -0
  908. package/dist/types/stages/helpers.d.ts +17 -0
  909. package/dist/types/stages/helpers.d.ts.map +1 -0
  910. package/dist/types/stages/index.d.ts +10 -0
  911. package/dist/types/stages/index.d.ts.map +1 -0
  912. package/dist/types/stages/parseResponse.d.ts +8 -0
  913. package/dist/types/stages/parseResponse.d.ts.map +1 -0
  914. package/dist/types/stages/retrieve.d.ts +8 -0
  915. package/dist/types/stages/retrieve.d.ts.map +1 -0
  916. package/dist/types/stages/runnerAsStage.d.ts +18 -0
  917. package/dist/types/stages/runnerAsStage.d.ts.map +1 -0
  918. package/dist/types/stream.barrel.d.ts +19 -0
  919. package/dist/types/stream.barrel.d.ts.map +1 -0
  920. package/dist/types/streaming/StreamEmitter.d.ts +93 -0
  921. package/dist/types/streaming/StreamEmitter.d.ts.map +1 -0
  922. package/dist/types/streaming/index.d.ts +3 -0
  923. package/dist/types/streaming/index.d.ts.map +1 -0
  924. package/dist/types/subflows/index.d.ts +3 -0
  925. package/dist/types/subflows/index.d.ts.map +1 -0
  926. package/dist/types/subflows/prepareMemory.d.ts +60 -0
  927. package/dist/types/subflows/prepareMemory.d.ts.map +1 -0
  928. package/dist/types/tools/ToolRegistry.d.ts +47 -0
  929. package/dist/types/tools/ToolRegistry.d.ts.map +1 -0
  930. package/dist/types/tools/askHuman.d.ts +39 -0
  931. package/dist/types/tools/askHuman.d.ts.map +1 -0
  932. package/dist/types/tools/index.d.ts +3 -0
  933. package/dist/types/tools/index.d.ts.map +1 -0
  934. package/dist/types/tools/validateInput.d.ts +29 -0
  935. package/dist/types/tools/validateInput.d.ts.map +1 -0
  936. package/dist/types/tools/zodToJsonSchema.d.ts +9 -0
  937. package/dist/types/tools/zodToJsonSchema.d.ts.map +1 -0
  938. package/dist/types/tools.js +6 -0
  939. package/dist/types/tools.js.map +1 -0
  940. package/dist/types/types/adapter.d.ts +36 -0
  941. package/dist/types/types/adapter.d.ts.map +1 -0
  942. package/dist/types/types/agent.d.ts +37 -0
  943. package/dist/types/types/agent.d.ts.map +1 -0
  944. package/dist/types/types/content.d.ts +104 -0
  945. package/dist/types/types/content.d.ts.map +1 -0
  946. package/dist/types/types/errors.d.ts +27 -0
  947. package/dist/types/types/errors.d.ts.map +1 -0
  948. package/dist/types/types/index.d.ts +14 -0
  949. package/dist/types/types/index.d.ts.map +1 -0
  950. package/dist/types/types/llm.d.ts +78 -0
  951. package/dist/types/types/llm.d.ts.map +1 -0
  952. package/dist/types/types/messages.d.ts +40 -0
  953. package/dist/types/types/messages.d.ts.map +1 -0
  954. package/dist/types/types/multiAgent.d.ts +57 -0
  955. package/dist/types/types/multiAgent.d.ts.map +1 -0
  956. package/dist/types/types/retriever.d.ts +41 -0
  957. package/dist/types/types/retriever.d.ts.map +1 -0
  958. package/dist/types/types/tools.d.ts +19 -0
  959. package/dist/types/types/tools.d.ts.map +1 -0
  960. package/package.json +178 -0
@@ -0,0 +1,83 @@
1
+ /**
2
+ * InstructionsToLLM subflow — evaluates agent-level instructions before the 3 API slots.
3
+ *
4
+ * Runs once per loop iteration (Dynamic pattern) or once before the loop (Regular).
5
+ * Reads the current Decision Scope, evaluates all registered instructions'
6
+ * `activeWhen` predicates, and outputs categorized injections for each slot:
7
+ *
8
+ * promptInjections → consumed by SystemPrompt slot
9
+ * toolInjections → consumed by Tools slot
10
+ * responseRules → consumed by tool execution subflow
11
+ *
12
+ * The instruction registry is baked into the subflow via closure at build time.
13
+ * This is a footprintjs flowchart subflow — visible in narrative/BTS.
14
+ *
15
+ * Loop position:
16
+ * Seed → [InstructionsToLLM] → [SystemPrompt] → [Messages] → [Tools] → ...
17
+ */
18
+ import { flowChart } from 'footprintjs';
19
+ import { evaluateAgentInstructions } from './agentInstruction';
20
+ /**
21
+ * Build the InstructionsToLLM subflow from a registry of agent-level instructions.
22
+ *
23
+ * The instructions array is captured by closure — immutable after build (shallow freeze).
24
+ * The subflow reads `scope.decision` (from parent inputMapper) and writes
25
+ * the categorized outputs for downstream slots to consume.
26
+ *
27
+ * **Parent state requirements:** The parent chart's `inputMapper` MUST map the
28
+ * `decision` field. If `decision` is missing (undefined), all instructions with
29
+ * `activeWhen` predicates will evaluate against `undefined` — behavioral predicates
30
+ * will throw and be skipped (fail-open), safety predicates will fire (fail-closed).
31
+ *
32
+ * The `outputMapper` should map the 3 output fields back to the parent state:
33
+ * `promptInjections`, `toolInjections`, `responseRules` (and optionally
34
+ * `matchedInstructions` for narrative enrichment).
35
+ *
36
+ * @param instructions - Agent-level instructions registered via `.instruction()`.
37
+ * Empty array is valid (subflow becomes a no-op pass-through).
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const subflow = buildInstructionsToLLMSubflow([refundInstruction, complianceInstruction]);
42
+ *
43
+ * // Mount in agent loop (parent state must include matching fields):
44
+ * builder.addSubFlowChartNext('sf-instructions-to-llm', subflow, 'InstructionsToLLM', {
45
+ * inputMapper: (parent) => ({ decision: parent.decision }),
46
+ * outputMapper: (sf) => ({
47
+ * promptInjections: sf.promptInjections,
48
+ * toolInjections: sf.toolInjections,
49
+ * responseRules: sf.responseRules,
50
+ * matchedInstructions: sf.matchedInstructions,
51
+ * }),
52
+ * });
53
+ * ```
54
+ */
55
+ export function buildInstructionsToLLMSubflow(instructions) {
56
+ // Freeze the instruction list — no mutations after build.
57
+ // Note: shallow freeze — individual instruction objects are readonly-typed
58
+ // but not deeply frozen. This is sufficient since TypeScript enforces readonly.
59
+ const frozenInstructions = Object.freeze([...instructions]);
60
+ return flowChart('EvaluateInstructions', (scope) => {
61
+ // Read decision scope from parent. If missing (inputMapper didn't map it),
62
+ // pass through as-is — predicates will see undefined and fail-open/closed
63
+ // according to their safety flag.
64
+ const decision = scope.decision;
65
+ const result = evaluateAgentInstructions(frozenInstructions, decision);
66
+ scope.promptInjections = [...result.promptInjections];
67
+ // Convert ToolDefinition → LLMToolDescription (strip handler for LLM consumption)
68
+ scope.toolInjections = result.toolInjections.map((t) => ({
69
+ name: t.id,
70
+ description: t.description,
71
+ inputSchema: t.inputSchema,
72
+ }));
73
+ scope.responseRules = [...result.responseRules];
74
+ // Narrative enrichment — which instructions fired and why
75
+ if (result.matchedIds.length > 0) {
76
+ scope.matchedInstructions = `${result.matchedIds.length} matched: ${result.matchedIds.join(', ')}`;
77
+ }
78
+ else {
79
+ scope.matchedInstructions = 'none matched';
80
+ }
81
+ }, 'evaluate-instructions', undefined, 'Evaluate agent instructions against Decision Scope').build();
82
+ }
83
+ //# sourceMappingURL=buildInstructionsToLLMSubflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildInstructionsToLLMSubflow.js","sourceRoot":"","sources":["../../../../src/lib/instructions/buildInstructionsToLLMSubflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,6BAA6B,CAC3C,YAAyC;IAEzC,0DAA0D;IAC1D,2EAA2E;IAC3E,gFAAgF;IAChF,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAE5D,OAAO,SAAS,CACd,sBAAsB,EACtB,CAAC,KAAyC,EAAE,EAAE;QAC5C,2EAA2E;QAC3E,0EAA0E;QAC1E,kCAAkC;QAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,MAAM,GAAG,yBAAyB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAEvE,KAAK,CAAC,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtD,kFAAkF;QAClF,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC;YAC3E,IAAI,EAAE,CAAC,CAAC,EAAE;YACV,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAEhD,0DAA0D;QAC1D,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,mBAAmB,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,aAAa,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,mBAAmB,GAAG,cAAc,CAAC;QAC7C,CAAC;IACH,CAAC,EACD,uBAAuB,EACvB,SAAS,EACT,oDAAoD,CACrD,CAAC,KAAK,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Instruction evaluator — matches instructions against tool results.
3
+ *
4
+ * Evaluates `when` predicates, sorts by priority, and orders for injection:
5
+ * 1. Follow-up bindings (structured actions)
6
+ * 2. Behavioral instructions (free text guidance)
7
+ * 3. Safety instructions LAST (closest to LLM generation = highest attention)
8
+ *
9
+ * Predicates that throw are skipped with a warning (fail-open for behavioral,
10
+ * fail-closed for safety). This is the defensive behavior — a broken predicate
11
+ * should not prevent the agent from working, but safety instructions should
12
+ * fail-closed (fire when in doubt).
13
+ */
14
+ // ── Evaluator ───────────────────────────────────────────────────────────
15
+ /**
16
+ * Evaluate build-time instructions against a tool result context.
17
+ *
18
+ * Returns resolved instructions sorted for injection:
19
+ * 1. Non-safety with follow-up only (structured actions first)
20
+ * 2. Non-safety with inject (behavioral guidance)
21
+ * 3. Safety instructions (LAST = highest attention weight)
22
+ *
23
+ * Within each group, sorted by priority (lower = first), then array order.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const fired = evaluateInstructions(tool.instructions, {
28
+ * content: { status: 'denied', traceId: 'tr_8f3a' },
29
+ * error: undefined,
30
+ * latencyMs: 42,
31
+ * input: { applicantId: 'a-1' },
32
+ * toolId: 'evaluate_loan',
33
+ * });
34
+ *
35
+ * // fired: [{ id: 'denial-empathy', text: '...', resolvedFollowUp: {...} }]
36
+ * ```
37
+ */
38
+ export function evaluateInstructions(instructions, ctx) {
39
+ if (!instructions || instructions.length === 0)
40
+ return [];
41
+ const matched = [];
42
+ for (const instr of instructions) {
43
+ // Evaluate predicate — skip on throw for behavioral, fire on throw for safety
44
+ if (instr.when) {
45
+ try {
46
+ if (!instr.when(ctx))
47
+ continue; // predicate returned false
48
+ }
49
+ catch {
50
+ if (instr.safety) {
51
+ // Safety: fail-closed — fire the instruction when predicate errors
52
+ // Better to inject a safety instruction unnecessarily than to miss it
53
+ }
54
+ else {
55
+ // Behavioral: fail-open — skip broken predicate
56
+ continue;
57
+ }
58
+ }
59
+ }
60
+ // No `when` = unconditional — always fires
61
+ // Resolve follow-up params if present
62
+ let resolvedFollowUp;
63
+ if (instr.followUp) {
64
+ try {
65
+ const params = instr.followUp.params(ctx);
66
+ resolvedFollowUp = {
67
+ toolId: instr.followUp.toolId,
68
+ params,
69
+ description: instr.followUp.description,
70
+ condition: instr.followUp.condition,
71
+ strict: instr.followUp.strict ?? false,
72
+ };
73
+ }
74
+ catch {
75
+ // If params resolution fails, skip the follow-up but keep the inject
76
+ resolvedFollowUp = undefined;
77
+ }
78
+ }
79
+ matched.push({
80
+ id: instr.id,
81
+ text: instr.text,
82
+ resolvedFollowUp,
83
+ safety: instr.safety ?? false,
84
+ priority: instr.priority ?? 0,
85
+ });
86
+ }
87
+ // Sort for injection order:
88
+ // 1. Non-safety sorted by priority (lower first), then array order (stable sort)
89
+ // 2. Safety instructions at the end (closest to generation = highest attention)
90
+ return matched.sort((a, b) => {
91
+ // Safety always after non-safety
92
+ if (a.safety !== b.safety)
93
+ return a.safety ? 1 : -1;
94
+ // Within same safety group, sort by priority
95
+ return a.priority - b.priority;
96
+ });
97
+ }
98
+ /**
99
+ * Merge build-time resolved instructions with runtime instructions/followUps.
100
+ *
101
+ * Runtime instructions (from handler return) are appended after build-time
102
+ * behavioral instructions but before safety instructions.
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const buildTime = evaluateInstructions(tool.instructions, ctx);
107
+ * const runtime = {
108
+ * instructions: ['Service degraded. Set expectations.'],
109
+ * followUps: [{ toolId: 'status_page', params: {}, description: '...', condition: '...' }],
110
+ * };
111
+ * const merged = mergeRuntimeInstructions(buildTime, runtime);
112
+ * ```
113
+ */
114
+ export function mergeRuntimeInstructions(buildTime, runtime) {
115
+ if (!runtime)
116
+ return buildTime;
117
+ const runtimeResolved = [];
118
+ // Runtime follow-ups
119
+ if (runtime.followUps) {
120
+ for (const fu of runtime.followUps) {
121
+ if (!fu.toolId || !fu.params)
122
+ continue; // validate required fields
123
+ runtimeResolved.push({
124
+ id: `runtime-followup-${fu.toolId}`,
125
+ resolvedFollowUp: {
126
+ toolId: fu.toolId,
127
+ params: fu.params,
128
+ description: fu.description,
129
+ condition: fu.condition,
130
+ strict: fu.strict ?? false,
131
+ },
132
+ safety: false,
133
+ priority: 0,
134
+ });
135
+ }
136
+ }
137
+ // Runtime behavioral instructions
138
+ if (runtime.instructions) {
139
+ for (let i = 0; i < runtime.instructions.length; i++) {
140
+ runtimeResolved.push({
141
+ id: `runtime-text-${i}`,
142
+ text: runtime.instructions[i],
143
+ safety: false,
144
+ priority: 0,
145
+ });
146
+ }
147
+ }
148
+ // Merge: build-time non-safety → runtime → build-time safety
149
+ const nonSafety = buildTime.filter((r) => !r.safety);
150
+ const safety = buildTime.filter((r) => r.safety);
151
+ return [...nonSafety, ...runtimeResolved, ...safety];
152
+ }
153
+ /**
154
+ * Apply agent-level overrides to a tool's instructions.
155
+ *
156
+ * Returns a new instruction array with overrides applied:
157
+ * 1. Suppress: remove instructions by ID
158
+ * 2. Replace: merge partial overrides into existing instructions by ID
159
+ * 3. Add: append new instructions at the end
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * const original = tool.instructions;
164
+ * const overridden = applyInstructionOverrides(original, {
165
+ * suppress: ['low-stock'],
166
+ * add: [{ id: 'premium-oos', when: ..., text: '...' }],
167
+ * replace: { 'out-of-stock': { text: 'Suggest B2B channel.' } },
168
+ * });
169
+ * ```
170
+ */
171
+ export function applyInstructionOverrides(instructions, override) {
172
+ if (!instructions || instructions.length === 0) {
173
+ return [...(override.add ?? [])];
174
+ }
175
+ const suppressSet = new Set(override.suppress ?? []);
176
+ const replaceMap = override.replace ?? {};
177
+ // 1. Filter suppressed, then apply replacements
178
+ const result = [];
179
+ for (const instr of instructions) {
180
+ if (suppressSet.has(instr.id))
181
+ continue; // suppressed
182
+ const replacement = replaceMap[instr.id];
183
+ if (replacement) {
184
+ result.push({ ...instr, ...replacement, id: instr.id }); // merge, preserve ID
185
+ }
186
+ else {
187
+ result.push(instr);
188
+ }
189
+ }
190
+ // 2. Add new instructions
191
+ if (override.add) {
192
+ result.push(...override.add);
193
+ }
194
+ return result;
195
+ }
196
+ //# sourceMappingURL=evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../src/lib/instructions/evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { quickBind, follow } from './types';
2
+ export { evaluateInstructions, mergeRuntimeInstructions, applyInstructionOverrides } from './evaluator';
3
+ export { renderInstructions } from './template';
4
+ export { processInstructions } from './inject';
5
+ export { previewInstructions } from './preview';
6
+ export { InstructionRecorder } from './InstructionRecorder';
7
+ export { defaultConditionMatcher, PendingFollowUpManager } from './strictFollowUp';
8
+ export { evaluateAgentInstructions, defineInstruction } from './agentInstruction';
9
+ export { buildInstructionsToLLMSubflow } from './buildInstructionsToLLMSubflow';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/instructions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAW5C,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAGxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGlF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Instruction injection — appends rendered instructions to tool result content.
3
+ *
4
+ * This is the bridge between the evaluator (which resolves instructions)
5
+ * and the tool result message (which the LLM reads). The injected text
6
+ * lands in the recency window — the last tokens before LLM generation.
7
+ *
8
+ * The function is intentionally simple: evaluate → render → append.
9
+ * Side effects (recording, logging) are handled by callers.
10
+ */
11
+ import { evaluateInstructions, mergeRuntimeInstructions } from './evaluator';
12
+ import { renderInstructions } from './template';
13
+ /**
14
+ * Process instructions for a tool result and return augmented content.
15
+ *
16
+ * Full pipeline: evaluate predicates → merge runtime → render → append.
17
+ *
18
+ * @param originalContent - The tool result content string
19
+ * @param buildTimeInstructions - Instructions from tool definition
20
+ * @param ctx - Full execution context (content, error, latency, input, toolId)
21
+ * @param runtime - Runtime instructions/followUps from handler return
22
+ * @param template - Optional custom template for formatting
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const result = processInstructions(
27
+ * toolResult.content,
28
+ * tool.instructions,
29
+ * { content: parsed, error: undefined, latencyMs: 42, input, toolId: tool.id },
30
+ * toolResult.instructions ? { instructions: toolResult.instructions } : undefined,
31
+ * );
32
+ *
33
+ * // result.content has instructions appended
34
+ * // result.fired lists which instructions matched
35
+ * // result.injected is true if any text was added
36
+ * ```
37
+ */
38
+ export function processInstructions(originalContent, buildTimeInstructions, ctx, runtime, template) {
39
+ // 1. Evaluate build-time instructions
40
+ const buildTime = evaluateInstructions(buildTimeInstructions, ctx);
41
+ // 2. Merge with runtime instructions
42
+ const all = mergeRuntimeInstructions(buildTime, runtime);
43
+ if (all.length === 0) {
44
+ return { content: originalContent, fired: [], injected: false };
45
+ }
46
+ // 3. Render to text
47
+ const text = renderInstructions(all, template);
48
+ if (!text) {
49
+ return { content: originalContent, fired: all, injected: false };
50
+ }
51
+ // 4. Append to tool result content
52
+ const augmented = originalContent + '\n\n' + text;
53
+ return { content: augmented, fired: all, injected: true };
54
+ }
55
+ //# sourceMappingURL=inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../../src/lib/instructions/inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBhD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,mBAAmB,CACjC,eAAuB,EACvB,qBAA4D,EAC5D,GAAuB,EACvB,OAGC,EACD,QAA8B;IAE9B,sCAAsC;IACtC,MAAM,SAAS,GAAG,oBAAoB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAEnE,qCAAqC;IACrC,MAAM,GAAG,GAAG,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClE,CAAC;IAED,oBAAoB;IACpB,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnE,CAAC;IAED,mCAAmC;IACnC,MAAM,SAAS,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * previewInstructions — dry-run showing what gets injected for a mock tool result.
3
+ *
4
+ * Invaluable for debugging instruction behavior during development and for
5
+ * generating documentation of tool behavior.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const preview = previewInstructions(
10
+ * orderTool.instructions,
11
+ * { content: { status: 'cancelled', trackingId: 'TRK-1' }, toolId: 'check_order' },
12
+ * );
13
+ *
14
+ * console.log(preview);
15
+ * // {
16
+ * // fired: [{ id: 'empathy', text: '...', safety: false }, ...],
17
+ * // injectedText: '[INSTRUCTION] Be empathetic...\n\n[AVAILABLE ACTION]...',
18
+ * // estimatedTokens: 47,
19
+ * // followUps: [{ toolId: 'track_package', params: { trackingId: 'TRK-1' } }],
20
+ * // }
21
+ * ```
22
+ */
23
+ import { evaluateInstructions, applyInstructionOverrides } from './evaluator';
24
+ import { renderInstructions } from './template';
25
+ // ── Preview Function ────────────────────────────────────────
26
+ /**
27
+ * Preview which instructions would fire for a given mock tool result.
28
+ *
29
+ * Does NOT run the agent — purely evaluates instructions against the mock context.
30
+ * Use for debugging, testing, and generating tool behavior documentation.
31
+ *
32
+ * @param instructions - The tool's instruction array (or overridden version)
33
+ * @param context - Mock tool result context
34
+ * @param options - Optional: overrides to apply, custom template
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Basic preview
39
+ * const preview = previewInstructions(tool.instructions, {
40
+ * content: { status: 'denied', traceId: 'tr_1' },
41
+ * toolId: 'evaluate_loan',
42
+ * });
43
+ *
44
+ * // With overrides applied
45
+ * const preview = previewInstructions(tool.instructions, ctx, {
46
+ * overrides: { suppress: ['low-priority'] },
47
+ * });
48
+ * ```
49
+ */
50
+ export function previewInstructions(instructions, context, options) {
51
+ // Apply overrides if provided
52
+ let effectiveInstructions = instructions;
53
+ if (options?.overrides && instructions) {
54
+ effectiveInstructions = applyInstructionOverrides(instructions, options.overrides);
55
+ }
56
+ // Build full InstructionContext from preview context
57
+ const ctx = {
58
+ content: context.content,
59
+ error: context.error,
60
+ latencyMs: context.latencyMs ?? 0,
61
+ input: context.input ?? {},
62
+ toolId: context.toolId,
63
+ };
64
+ // Evaluate
65
+ const fired = evaluateInstructions(effectiveInstructions, ctx);
66
+ // Render
67
+ const injectedText = renderInstructions(fired, options?.template);
68
+ // Extract follow-ups
69
+ const followUps = fired
70
+ .filter((f) => f.resolvedFollowUp)
71
+ .map((f) => f.resolvedFollowUp);
72
+ // Compute skipped IDs
73
+ const firedIds = fired.map((f) => f.id);
74
+ const firedSet = new Set(firedIds);
75
+ const allIds = (effectiveInstructions ?? []).map((i) => i.id);
76
+ const skippedIds = allIds.filter((id) => !firedSet.has(id));
77
+ // Rough token estimate
78
+ const estimatedTokens = injectedText ? Math.ceil(injectedText.length / 4) : 0;
79
+ return {
80
+ fired,
81
+ injectedText,
82
+ estimatedTokens,
83
+ followUps,
84
+ firedIds,
85
+ skippedIds,
86
+ };
87
+ }
88
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../../src/lib/instructions/preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkChD,+DAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAmD,EACnD,OAAuB,EACvB,OAGC;IAED,8BAA8B;IAC9B,IAAI,qBAAqB,GAAG,YAAY,CAAC;IACzC,IAAI,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,CAAC;QACvC,qBAAqB,GAAG,yBAAyB,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACrF,CAAC;IAED,qDAAqD;IACrD,MAAM,GAAG,GAAuB;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IAEF,WAAW;IACX,MAAM,KAAK,GAAG,oBAAoB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAE/D,SAAS;IACT,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAElE,qBAAqB;IACrB,MAAM,SAAS,GAAG,KAAK;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAiB,CAAC,CAAC;IAEnC,sBAAsB;IACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5D,uBAAuB;IACvB,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,OAAO;QACL,KAAK;QACL,YAAY;QACZ,eAAe;QACf,SAAS;QACT,QAAQ;QACR,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * strictFollowUp — auto-execute follow-ups when condition matches user message.
3
+ *
4
+ * When a tool's follow-up binding has `strict: true`, the framework stores it
5
+ * as a pending follow-up. On the next user message, the condition is checked:
6
+ * - If matched: framework auto-executes the tool with pre-resolved params,
7
+ * bypassing the LLM for tool call construction. Zero ID corruption risk.
8
+ * - If not matched: pending follow-up is cleared, LLM proceeds normally.
9
+ *
10
+ * The LLM is still used to interpret the follow-up tool's result — it's only
11
+ * bypassed for the mechanical "construct the tool call" step.
12
+ *
13
+ * Condition matching uses a keyword-based matcher by default. Custom matchers
14
+ * can be provided per follow-up binding.
15
+ */
16
+ // ── Condition Matcher ───────────────────────────────────────────────────
17
+ /**
18
+ * Default keyword matcher — extracts intent keywords from the condition string
19
+ * and checks if the user message contains any of them.
20
+ *
21
+ * The condition is a natural language string like "User asks why or wants details".
22
+ * The matcher extracts content words and checks for overlap with the user message.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * defaultMatcher('User asks why or wants details', 'Why was I denied?')
27
+ * // → true (matches "why")
28
+ *
29
+ * defaultMatcher('User asks why or wants details', 'What is the weather?')
30
+ * // → false (no keyword overlap)
31
+ * ```
32
+ */
33
+ export function defaultConditionMatcher(condition, userMessage) {
34
+ // Extract meaningful words from condition (skip stop words)
35
+ const stopWords = new Set([
36
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
37
+ 'or', 'and', 'but', 'if', 'of', 'at', 'by', 'for', 'with', 'to',
38
+ 'in', 'on', 'it', 'its', 'this', 'that', 'from', 'as', 'into',
39
+ 'user', 'asks', 'wants', 'about', 'more', 'any', 'some',
40
+ ]);
41
+ const conditionWords = condition
42
+ .toLowerCase()
43
+ .replace(/[^a-z0-9\s]/g, '')
44
+ .split(/\s+/)
45
+ .filter((w) => w.length > 2 && !stopWords.has(w));
46
+ if (conditionWords.length === 0)
47
+ return false;
48
+ const messageLower = userMessage.toLowerCase();
49
+ const messageWords = new Set(messageLower
50
+ .replace(/[^a-z0-9\s]/g, '')
51
+ .split(/\s+/)
52
+ .filter((w) => w.length > 2));
53
+ // Check if any condition keyword appears as an exact word in the message.
54
+ // For fuzzy/stem matching, use a custom matcher function.
55
+ return conditionWords.some((word) => messageWords.has(word));
56
+ }
57
+ /**
58
+ * Manages pending strict follow-ups between agent loop iterations.
59
+ *
60
+ * After tool execution, if any strict follow-up fired, it's stored here.
61
+ * Before the next LLM call, the user's message is checked against pending
62
+ * follow-ups. If matched, the follow-up is consumed and returned for
63
+ * auto-execution.
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const manager = new PendingFollowUpManager();
68
+ *
69
+ * // After tool execution with strict follow-up
70
+ * manager.setPending({
71
+ * followUp: { toolId: 'get_trace', params: { traceId: 'tr_1' }, ... },
72
+ * sourceToolId: 'evaluate_loan',
73
+ * });
74
+ *
75
+ * // Before next LLM call — check user message
76
+ * const matched = manager.checkAndConsume('Why was I denied?');
77
+ * if (matched) {
78
+ * // Auto-execute get_trace({ traceId: 'tr_1' }) — skip LLM
79
+ * }
80
+ * ```
81
+ */
82
+ export class PendingFollowUpManager {
83
+ pending;
84
+ /** Store a strict follow-up for the next user message check. */
85
+ setPending(followUp) {
86
+ this.pending = followUp;
87
+ }
88
+ /** Check if there's a pending follow-up. */
89
+ hasPending() {
90
+ return !!this.pending;
91
+ }
92
+ /** Get the pending follow-up without consuming it. */
93
+ getPending() {
94
+ return this.pending;
95
+ }
96
+ /**
97
+ * Check user message against pending follow-up condition.
98
+ * If matched, consumes and returns the follow-up. If not matched, clears it.
99
+ *
100
+ * @returns The matched follow-up for auto-execution, or undefined.
101
+ */
102
+ checkAndConsume(userMessage) {
103
+ if (!this.pending)
104
+ return undefined;
105
+ const pending = this.pending;
106
+ this.pending = undefined; // Always consume — one-shot
107
+ // Use custom matcher if provided, otherwise default keyword matcher
108
+ let matched;
109
+ try {
110
+ matched = pending.matcher
111
+ ? pending.matcher(userMessage)
112
+ : defaultConditionMatcher(pending.followUp.condition, userMessage);
113
+ }
114
+ catch {
115
+ // Broken matcher should not crash the agent — fail-safe: skip the follow-up
116
+ return undefined;
117
+ }
118
+ return matched ? pending : undefined;
119
+ }
120
+ /** Clear any pending follow-up. */
121
+ clear() {
122
+ this.pending = undefined;
123
+ }
124
+ }
125
+ //# sourceMappingURL=strictFollowUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strictFollowUp.js","sourceRoot":"","sources":["../../../../src/lib/instructions/strictFollowUp.ts"],"names":[],"mappings":"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"}