agentfootprint 9.136.0 → 9.138.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 (576) hide show
  1. package/AGENTS.md +1 -1
  2. package/CAPABILITIES.md +5 -0
  3. package/ai-instructions/claude-code/SKILL.md +1 -1
  4. package/dist/adapters/llm/AnthropicProvider.js +10 -2
  5. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  6. package/dist/adapters/llm/BrowserAnthropicProvider.js +8 -0
  7. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  8. package/dist/adapters/llm/BrowserOpenAIProvider.js +30 -0
  9. package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  10. package/dist/adapters/llm/FoundryProvider.js +2 -0
  11. package/dist/adapters/llm/FoundryProvider.js.map +1 -1
  12. package/dist/adapters/llm/InvokeModelGatewayProvider.js +16 -0
  13. package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  14. package/dist/adapters/llm/MockProvider.js +3 -0
  15. package/dist/adapters/llm/MockProvider.js.map +1 -1
  16. package/dist/adapters/llm/OllamaProvider.js +7 -0
  17. package/dist/adapters/llm/OllamaProvider.js.map +1 -1
  18. package/dist/adapters/llm/OpenAIProvider.js +25 -0
  19. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  20. package/dist/adapters/llm/anthropicCacheWire.js +32 -10
  21. package/dist/adapters/llm/anthropicCacheWire.js.map +1 -1
  22. package/dist/adapters/llm/anthropicMessagesWire.js +12 -11
  23. package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
  24. package/dist/adapters/types.js.map +1 -1
  25. package/dist/bridge/eventMeta.js +5 -1
  26. package/dist/bridge/eventMeta.js.map +1 -1
  27. package/dist/bridge/eventSourcePosition.js +63 -0
  28. package/dist/bridge/eventSourcePosition.js.map +1 -0
  29. package/dist/cache/CacheDecisionSubflow.js +79 -21
  30. package/dist/cache/CacheDecisionSubflow.js.map +1 -1
  31. package/dist/cache/cacheStrategyFor.js +77 -0
  32. package/dist/cache/cacheStrategyFor.js.map +1 -0
  33. package/dist/cache/index.js +26 -38
  34. package/dist/cache/index.js.map +1 -1
  35. package/dist/cache/strategies/AutomaticCacheStrategy.js +47 -0
  36. package/dist/cache/strategies/AutomaticCacheStrategy.js.map +1 -0
  37. package/dist/cache/strategies/BreakpointCacheStrategy.js +60 -0
  38. package/dist/cache/strategies/BreakpointCacheStrategy.js.map +1 -0
  39. package/dist/cache/strategies/NoOpCacheStrategy.js +9 -25
  40. package/dist/cache/strategies/NoOpCacheStrategy.js.map +1 -1
  41. package/dist/cache/types.js +5 -4
  42. package/dist/cache/types.js.map +1 -1
  43. package/dist/core/Agent.js +209 -146
  44. package/dist/core/Agent.js.map +1 -1
  45. package/dist/core/LLMCall.js +14 -17
  46. package/dist/core/LLMCall.js.map +1 -1
  47. package/dist/core/RunnerBase.js +17 -1
  48. package/dist/core/RunnerBase.js.map +1 -1
  49. package/dist/core/agent/AgentBuilder.js +24 -33
  50. package/dist/core/agent/AgentBuilder.js.map +1 -1
  51. package/dist/core/agent/act.js +3 -19
  52. package/dist/core/agent/act.js.map +1 -1
  53. package/dist/core/agent/assessment/stage.js +8 -0
  54. package/dist/core/agent/assessment/stage.js.map +1 -1
  55. package/dist/core/agent/buildAgentChart.js +8 -9
  56. package/dist/core/agent/buildAgentChart.js.map +1 -1
  57. package/dist/core/agent/buildCacheSubflow.js +4 -3
  58. package/dist/core/agent/buildCacheSubflow.js.map +1 -1
  59. package/dist/core/agent/buildDynamicAgentChart.js +16 -8
  60. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  61. package/dist/core/agent/honesty/mounts.js.map +1 -1
  62. package/dist/core/agent/middleware/ledger.js +1 -1
  63. package/dist/core/agent/middleware/messagePhase.js +24 -0
  64. package/dist/core/agent/middleware/messagePhase.js.map +1 -0
  65. package/dist/core/agent/skillBrains.js +3 -3
  66. package/dist/core/agent/skillBrains.js.map +1 -1
  67. package/dist/core/agent/stages/answerValidation.js +6 -3
  68. package/dist/core/agent/stages/answerValidation.js.map +1 -1
  69. package/dist/core/agent/stages/breakFinal.js +30 -1
  70. package/dist/core/agent/stages/breakFinal.js.map +1 -1
  71. package/dist/core/agent/stages/callLLM.js +15 -9
  72. package/dist/core/agent/stages/callLLM.js.map +1 -1
  73. package/dist/core/agent/stages/outputAdmission.js +14 -0
  74. package/dist/core/agent/stages/outputAdmission.js.map +1 -0
  75. package/dist/core/agent/stages/prepareFinal.js +96 -27
  76. package/dist/core/agent/stages/prepareFinal.js.map +1 -1
  77. package/dist/core/agent/stages/reliabilityExecution.js +46 -7
  78. package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
  79. package/dist/core/agent/stages/seed.js +8 -10
  80. package/dist/core/agent/stages/seed.js.map +1 -1
  81. package/dist/core/agent/stages/toolCalls.js +63 -42
  82. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  83. package/dist/core/agent/toolArgsValidation.js +35 -11
  84. package/dist/core/agent/toolArgsValidation.js.map +1 -1
  85. package/dist/core/agent/toolDispatch.js +8 -2
  86. package/dist/core/agent/toolDispatch.js.map +1 -1
  87. package/dist/core/agent/toolSecurityEvents.js +23 -0
  88. package/dist/core/agent/toolSecurityEvents.js.map +1 -0
  89. package/dist/core/codeRunnerTool.js +1 -0
  90. package/dist/core/codeRunnerTool.js.map +1 -1
  91. package/dist/core/conversation.js +21 -6
  92. package/dist/core/conversation.js.map +1 -1
  93. package/dist/core/slots/buildThinkingSubflow.js +2 -3
  94. package/dist/core/slots/buildThinkingSubflow.js.map +1 -1
  95. package/dist/core/terminalVerdict.js +48 -0
  96. package/dist/core/terminalVerdict.js.map +1 -0
  97. package/dist/core-flow/Conditional.js +14 -5
  98. package/dist/core-flow/Conditional.js.map +1 -1
  99. package/dist/core-flow/Graph.js +20 -3
  100. package/dist/core-flow/Graph.js.map +1 -1
  101. package/dist/core-flow/Loop.js +13 -6
  102. package/dist/core-flow/Loop.js.map +1 -1
  103. package/dist/core-flow/Parallel.js +16 -7
  104. package/dist/core-flow/Parallel.js.map +1 -1
  105. package/dist/core-flow/Sequence.js +16 -5
  106. package/dist/core-flow/Sequence.js.map +1 -1
  107. package/dist/core-flow/Workflow.js +20 -3
  108. package/dist/core-flow/Workflow.js.map +1 -1
  109. package/dist/core-flow/childOutcome.js +64 -0
  110. package/dist/core-flow/childOutcome.js.map +1 -0
  111. package/dist/esm/adapters/llm/AnthropicProvider.d.ts +3 -1
  112. package/dist/esm/adapters/llm/AnthropicProvider.js +11 -3
  113. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  114. package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +2 -0
  115. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +8 -0
  116. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  117. package/dist/esm/adapters/llm/BrowserOpenAIProvider.d.ts +8 -0
  118. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +30 -0
  119. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  120. package/dist/esm/adapters/llm/FoundryProvider.js +2 -0
  121. package/dist/esm/adapters/llm/FoundryProvider.js.map +1 -1
  122. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.d.ts +1 -0
  123. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +16 -0
  124. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  125. package/dist/esm/adapters/llm/MockProvider.d.ts +2 -0
  126. package/dist/esm/adapters/llm/MockProvider.js +3 -0
  127. package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
  128. package/dist/esm/adapters/llm/OllamaProvider.d.ts +1 -0
  129. package/dist/esm/adapters/llm/OllamaProvider.js +7 -0
  130. package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -1
  131. package/dist/esm/adapters/llm/OpenAIProvider.d.ts +5 -0
  132. package/dist/esm/adapters/llm/OpenAIProvider.js +25 -0
  133. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  134. package/dist/esm/adapters/llm/anthropicCacheWire.d.ts +27 -9
  135. package/dist/esm/adapters/llm/anthropicCacheWire.js +31 -9
  136. package/dist/esm/adapters/llm/anthropicCacheWire.js.map +1 -1
  137. package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +1 -1
  138. package/dist/esm/adapters/llm/anthropicMessagesWire.js +12 -11
  139. package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
  140. package/dist/esm/adapters/types.d.ts +13 -0
  141. package/dist/esm/adapters/types.js.map +1 -1
  142. package/dist/esm/bridge/eventMeta.d.ts +5 -1
  143. package/dist/esm/bridge/eventMeta.js +5 -1
  144. package/dist/esm/bridge/eventMeta.js.map +1 -1
  145. package/dist/esm/bridge/eventSourcePosition.d.ts +10 -0
  146. package/dist/esm/bridge/eventSourcePosition.js +59 -0
  147. package/dist/esm/bridge/eventSourcePosition.js.map +1 -0
  148. package/dist/esm/cache/CacheDecisionSubflow.d.ts +44 -8
  149. package/dist/esm/cache/CacheDecisionSubflow.js +77 -19
  150. package/dist/esm/cache/CacheDecisionSubflow.js.map +1 -1
  151. package/dist/esm/cache/cacheStrategyFor.d.ts +42 -0
  152. package/dist/esm/cache/cacheStrategyFor.js +73 -0
  153. package/dist/esm/cache/cacheStrategyFor.js.map +1 -0
  154. package/dist/esm/cache/index.d.ts +20 -29
  155. package/dist/esm/cache/index.js +22 -31
  156. package/dist/esm/cache/index.js.map +1 -1
  157. package/dist/esm/cache/strategies/AutomaticCacheStrategy.d.ts +37 -0
  158. package/dist/esm/cache/strategies/AutomaticCacheStrategy.js +43 -0
  159. package/dist/esm/cache/strategies/AutomaticCacheStrategy.js.map +1 -0
  160. package/dist/esm/cache/strategies/BreakpointCacheStrategy.d.ts +40 -0
  161. package/dist/esm/cache/strategies/BreakpointCacheStrategy.js +56 -0
  162. package/dist/esm/cache/strategies/BreakpointCacheStrategy.js.map +1 -0
  163. package/dist/esm/cache/strategies/NoOpCacheStrategy.d.ts +8 -18
  164. package/dist/esm/cache/strategies/NoOpCacheStrategy.js +9 -25
  165. package/dist/esm/cache/strategies/NoOpCacheStrategy.js.map +1 -1
  166. package/dist/esm/cache/types.d.ts +79 -78
  167. package/dist/esm/cache/types.js +5 -4
  168. package/dist/esm/cache/types.js.map +1 -1
  169. package/dist/esm/core/Agent.d.ts +36 -10
  170. package/dist/esm/core/Agent.js +210 -147
  171. package/dist/esm/core/Agent.js.map +1 -1
  172. package/dist/esm/core/LLMCall.d.ts +3 -4
  173. package/dist/esm/core/LLMCall.js +15 -18
  174. package/dist/esm/core/LLMCall.js.map +1 -1
  175. package/dist/esm/core/RunnerBase.d.ts +11 -0
  176. package/dist/esm/core/RunnerBase.js +15 -0
  177. package/dist/esm/core/RunnerBase.js.map +1 -1
  178. package/dist/esm/core/agent/AgentBuilder.d.ts +24 -33
  179. package/dist/esm/core/agent/AgentBuilder.js +24 -33
  180. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  181. package/dist/esm/core/agent/act.d.ts +5 -2
  182. package/dist/esm/core/agent/act.js +3 -19
  183. package/dist/esm/core/agent/act.js.map +1 -1
  184. package/dist/esm/core/agent/assessment/stage.d.ts +2 -0
  185. package/dist/esm/core/agent/assessment/stage.js +8 -0
  186. package/dist/esm/core/agent/assessment/stage.js.map +1 -1
  187. package/dist/esm/core/agent/buildAgentChart.d.ts +5 -1
  188. package/dist/esm/core/agent/buildAgentChart.js +9 -10
  189. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  190. package/dist/esm/core/agent/buildCacheSubflow.d.ts +4 -2
  191. package/dist/esm/core/agent/buildCacheSubflow.js +5 -4
  192. package/dist/esm/core/agent/buildCacheSubflow.js.map +1 -1
  193. package/dist/esm/core/agent/buildDynamicAgentChart.js +17 -9
  194. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  195. package/dist/esm/core/agent/honesty/mounts.d.ts +2 -0
  196. package/dist/esm/core/agent/honesty/mounts.js.map +1 -1
  197. package/dist/esm/core/agent/middleware/ledger.d.ts +1 -1
  198. package/dist/esm/core/agent/middleware/ledger.js +1 -1
  199. package/dist/esm/core/agent/middleware/messagePhase.d.ts +5 -0
  200. package/dist/esm/core/agent/middleware/messagePhase.js +19 -0
  201. package/dist/esm/core/agent/middleware/messagePhase.js.map +1 -0
  202. package/dist/esm/core/agent/skillBrains.d.ts +5 -3
  203. package/dist/esm/core/agent/skillBrains.js +3 -3
  204. package/dist/esm/core/agent/skillBrains.js.map +1 -1
  205. package/dist/esm/core/agent/stages/answerValidation.d.ts +6 -1
  206. package/dist/esm/core/agent/stages/answerValidation.js +6 -3
  207. package/dist/esm/core/agent/stages/answerValidation.js.map +1 -1
  208. package/dist/esm/core/agent/stages/breakFinal.d.ts +16 -0
  209. package/dist/esm/core/agent/stages/breakFinal.js +27 -0
  210. package/dist/esm/core/agent/stages/breakFinal.js.map +1 -1
  211. package/dist/esm/core/agent/stages/callLLM.d.ts +3 -1
  212. package/dist/esm/core/agent/stages/callLLM.js +15 -9
  213. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  214. package/dist/esm/core/agent/stages/outputAdmission.d.ts +6 -0
  215. package/dist/esm/core/agent/stages/outputAdmission.js +10 -0
  216. package/dist/esm/core/agent/stages/outputAdmission.js.map +1 -0
  217. package/dist/esm/core/agent/stages/prepareFinal.d.ts +18 -41
  218. package/dist/esm/core/agent/stages/prepareFinal.js +93 -25
  219. package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
  220. package/dist/esm/core/agent/stages/reliabilityExecution.d.ts +8 -1
  221. package/dist/esm/core/agent/stages/reliabilityExecution.js +46 -7
  222. package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
  223. package/dist/esm/core/agent/stages/seed.js +8 -10
  224. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  225. package/dist/esm/core/agent/stages/toolCalls.js +63 -42
  226. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  227. package/dist/esm/core/agent/toolArgsValidation.d.ts +9 -5
  228. package/dist/esm/core/agent/toolArgsValidation.js +35 -11
  229. package/dist/esm/core/agent/toolArgsValidation.js.map +1 -1
  230. package/dist/esm/core/agent/toolDispatch.d.ts +3 -2
  231. package/dist/esm/core/agent/toolDispatch.js +8 -2
  232. package/dist/esm/core/agent/toolDispatch.js.map +1 -1
  233. package/dist/esm/core/agent/toolSecurityEvents.d.ts +18 -0
  234. package/dist/esm/core/agent/toolSecurityEvents.js +19 -0
  235. package/dist/esm/core/agent/toolSecurityEvents.js.map +1 -0
  236. package/dist/esm/core/agent/types.d.ts +4 -4
  237. package/dist/esm/core/codeRunnerTool.js +1 -0
  238. package/dist/esm/core/codeRunnerTool.js.map +1 -1
  239. package/dist/esm/core/conversation.d.ts +16 -1
  240. package/dist/esm/core/conversation.js +20 -5
  241. package/dist/esm/core/conversation.js.map +1 -1
  242. package/dist/esm/core/slots/buildThinkingSubflow.d.ts +2 -2
  243. package/dist/esm/core/slots/buildThinkingSubflow.js +2 -3
  244. package/dist/esm/core/slots/buildThinkingSubflow.js.map +1 -1
  245. package/dist/esm/core/terminalVerdict.d.ts +56 -0
  246. package/dist/esm/core/terminalVerdict.js +43 -0
  247. package/dist/esm/core/terminalVerdict.js.map +1 -0
  248. package/dist/esm/core-flow/Conditional.js +15 -6
  249. package/dist/esm/core-flow/Conditional.js.map +1 -1
  250. package/dist/esm/core-flow/Graph.js +21 -4
  251. package/dist/esm/core-flow/Graph.js.map +1 -1
  252. package/dist/esm/core-flow/Loop.js +14 -7
  253. package/dist/esm/core-flow/Loop.js.map +1 -1
  254. package/dist/esm/core-flow/Parallel.js +17 -8
  255. package/dist/esm/core-flow/Parallel.js.map +1 -1
  256. package/dist/esm/core-flow/Sequence.js +17 -6
  257. package/dist/esm/core-flow/Sequence.js.map +1 -1
  258. package/dist/esm/core-flow/Workflow.js +21 -4
  259. package/dist/esm/core-flow/Workflow.js.map +1 -1
  260. package/dist/esm/core-flow/childOutcome.d.ts +47 -0
  261. package/dist/esm/core-flow/childOutcome.js +57 -0
  262. package/dist/esm/core-flow/childOutcome.js.map +1 -0
  263. package/dist/esm/events/payloads.d.ts +33 -11
  264. package/dist/esm/events/types.d.ts +32 -2
  265. package/dist/esm/index.d.ts +1 -11
  266. package/dist/esm/index.js +5 -10
  267. package/dist/esm/index.js.map +1 -1
  268. package/dist/esm/lib/injection-engine/skillToolDescriptors.js +1 -0
  269. package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  270. package/dist/esm/lib/mcp/mcpServe.js +11 -4
  271. package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
  272. package/dist/esm/lib/time-travel/receipt.d.ts +5 -5
  273. package/dist/esm/lib/trace-toolpack/debugPrompt.d.ts +1 -1
  274. package/dist/esm/lib/trace-toolpack/debugPrompt.js +1 -0
  275. package/dist/esm/lib/trace-toolpack/debugPrompt.js.map +1 -1
  276. package/dist/esm/lib/trace-toolpack/innerDescent.d.ts +58 -0
  277. package/dist/esm/lib/trace-toolpack/innerDescent.js +68 -0
  278. package/dist/esm/lib/trace-toolpack/innerDescent.js.map +1 -0
  279. package/dist/esm/lib/trace-toolpack/subflowRecords.d.ts +55 -0
  280. package/dist/esm/lib/trace-toolpack/subflowRecords.js +124 -0
  281. package/dist/esm/lib/trace-toolpack/subflowRecords.js.map +1 -0
  282. package/dist/esm/lib/trace-toolpack/traceToolNames.d.ts +1 -1
  283. package/dist/esm/lib/trace-toolpack/traceToolNames.js +1 -0
  284. package/dist/esm/lib/trace-toolpack/traceToolNames.js.map +1 -1
  285. package/dist/esm/lib/trace-toolpack/traceToolpack.d.ts +1 -0
  286. package/dist/esm/lib/trace-toolpack/traceToolpack.js +282 -56
  287. package/dist/esm/lib/trace-toolpack/traceToolpack.js.map +1 -1
  288. package/dist/esm/lib/trust-boundaries/capture.d.ts +6 -0
  289. package/dist/esm/lib/trust-boundaries/capture.js +161 -0
  290. package/dist/esm/lib/trust-boundaries/capture.js.map +1 -0
  291. package/dist/esm/lib/trust-boundaries/index.d.ts +2 -0
  292. package/dist/esm/lib/trust-boundaries/index.js +2 -0
  293. package/dist/esm/lib/trust-boundaries/index.js.map +1 -0
  294. package/dist/esm/lib/trust-boundaries/project.d.ts +13 -0
  295. package/dist/esm/lib/trust-boundaries/project.js +170 -0
  296. package/dist/esm/lib/trust-boundaries/project.js.map +1 -0
  297. package/dist/esm/lib/trust-boundaries/types.d.ts +81 -0
  298. package/dist/esm/lib/trust-boundaries/types.js +2 -0
  299. package/dist/esm/lib/trust-boundaries/types.js.map +1 -0
  300. package/dist/esm/observe.d.ts +1 -0
  301. package/dist/esm/observe.js +3 -0
  302. package/dist/esm/observe.js.map +1 -1
  303. package/dist/esm/package.json +1 -1
  304. package/dist/esm/patterns/LlmRouter.js +6 -3
  305. package/dist/esm/patterns/LlmRouter.js.map +1 -1
  306. package/dist/esm/recorders/core/EmitBridge.js +7 -1
  307. package/dist/esm/recorders/core/EmitBridge.js.map +1 -1
  308. package/dist/esm/recorders/observability/recordRun.d.ts +29 -4
  309. package/dist/esm/recorders/observability/recordRun.js +144 -70
  310. package/dist/esm/recorders/observability/recordRun.js.map +1 -1
  311. package/dist/esm/recorders/observability/recordingEnvelope.js +5 -3
  312. package/dist/esm/recorders/observability/recordingEnvelope.js.map +1 -1
  313. package/dist/esm/reliability/failFastRecord.d.ts +28 -0
  314. package/dist/esm/reliability/failFastRecord.js +45 -0
  315. package/dist/esm/reliability/failFastRecord.js.map +1 -0
  316. package/dist/esm/resilience/withCircuitBreaker.js +3 -0
  317. package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
  318. package/dist/esm/resilience/withFallback.js +101 -11
  319. package/dist/esm/resilience/withFallback.js.map +1 -1
  320. package/dist/esm/resilience/withRetry.js +8 -0
  321. package/dist/esm/resilience/withRetry.js.map +1 -1
  322. package/dist/esm/thinking/AnthropicThinkingHandler.js +5 -5
  323. package/dist/esm/thinking/AnthropicThinkingHandler.js.map +1 -1
  324. package/dist/esm/thinking/MockThinkingHandler.js +2 -3
  325. package/dist/esm/thinking/MockThinkingHandler.js.map +1 -1
  326. package/dist/esm/thinking/OllamaThinkingHandler.js +0 -1
  327. package/dist/esm/thinking/OllamaThinkingHandler.js.map +1 -1
  328. package/dist/esm/thinking/OpenAIThinkingHandler.js +0 -1
  329. package/dist/esm/thinking/OpenAIThinkingHandler.js.map +1 -1
  330. package/dist/esm/thinking/index.d.ts +8 -7
  331. package/dist/esm/thinking/index.js +8 -7
  332. package/dist/esm/thinking/index.js.map +1 -1
  333. package/dist/esm/thinking/registry.d.ts +13 -23
  334. package/dist/esm/thinking/registry.js +13 -29
  335. package/dist/esm/thinking/registry.js.map +1 -1
  336. package/dist/esm/thinking/thinkingHandlerFor.d.ts +27 -0
  337. package/dist/esm/thinking/thinkingHandlerFor.js +36 -0
  338. package/dist/esm/thinking/thinkingHandlerFor.js.map +1 -0
  339. package/dist/esm/thinking/types.d.ts +7 -15
  340. package/dist/esm/thinking/types.js +3 -3
  341. package/dist/index.js +5 -10
  342. package/dist/index.js.map +1 -1
  343. package/dist/lib/injection-engine/skillToolDescriptors.js +1 -0
  344. package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -1
  345. package/dist/lib/mcp/mcpServe.js +11 -4
  346. package/dist/lib/mcp/mcpServe.js.map +1 -1
  347. package/dist/lib/trace-toolpack/debugPrompt.js +1 -0
  348. package/dist/lib/trace-toolpack/debugPrompt.js.map +1 -1
  349. package/dist/lib/trace-toolpack/innerDescent.js +74 -0
  350. package/dist/lib/trace-toolpack/innerDescent.js.map +1 -0
  351. package/dist/lib/trace-toolpack/subflowRecords.js +134 -0
  352. package/dist/lib/trace-toolpack/subflowRecords.js.map +1 -0
  353. package/dist/lib/trace-toolpack/traceToolNames.js +1 -0
  354. package/dist/lib/trace-toolpack/traceToolNames.js.map +1 -1
  355. package/dist/lib/trace-toolpack/traceToolpack.js +282 -56
  356. package/dist/lib/trace-toolpack/traceToolpack.js.map +1 -1
  357. package/dist/lib/trust-boundaries/capture.js +165 -0
  358. package/dist/lib/trust-boundaries/capture.js.map +1 -0
  359. package/dist/lib/trust-boundaries/index.js +6 -0
  360. package/dist/lib/trust-boundaries/index.js.map +1 -0
  361. package/dist/lib/trust-boundaries/project.js +174 -0
  362. package/dist/lib/trust-boundaries/project.js.map +1 -0
  363. package/dist/lib/trust-boundaries/types.js +3 -0
  364. package/dist/lib/trust-boundaries/types.js.map +1 -0
  365. package/dist/observe.js +17 -13
  366. package/dist/observe.js.map +1 -1
  367. package/dist/patterns/LlmRouter.js +5 -2
  368. package/dist/patterns/LlmRouter.js.map +1 -1
  369. package/dist/recorders/core/EmitBridge.js +7 -1
  370. package/dist/recorders/core/EmitBridge.js.map +1 -1
  371. package/dist/recorders/observability/recordRun.js +144 -70
  372. package/dist/recorders/observability/recordRun.js.map +1 -1
  373. package/dist/recorders/observability/recordingEnvelope.js +5 -3
  374. package/dist/recorders/observability/recordingEnvelope.js.map +1 -1
  375. package/dist/reliability/failFastRecord.js +50 -0
  376. package/dist/reliability/failFastRecord.js.map +1 -0
  377. package/dist/resilience/withCircuitBreaker.js +3 -0
  378. package/dist/resilience/withCircuitBreaker.js.map +1 -1
  379. package/dist/resilience/withFallback.js +101 -11
  380. package/dist/resilience/withFallback.js.map +1 -1
  381. package/dist/resilience/withRetry.js +8 -0
  382. package/dist/resilience/withRetry.js.map +1 -1
  383. package/dist/thinking/AnthropicThinkingHandler.js +5 -5
  384. package/dist/thinking/AnthropicThinkingHandler.js.map +1 -1
  385. package/dist/thinking/MockThinkingHandler.js +2 -3
  386. package/dist/thinking/MockThinkingHandler.js.map +1 -1
  387. package/dist/thinking/OllamaThinkingHandler.js +0 -1
  388. package/dist/thinking/OllamaThinkingHandler.js.map +1 -1
  389. package/dist/thinking/OpenAIThinkingHandler.js +0 -1
  390. package/dist/thinking/OpenAIThinkingHandler.js.map +1 -1
  391. package/dist/thinking/index.js +9 -8
  392. package/dist/thinking/index.js.map +1 -1
  393. package/dist/thinking/registry.js +14 -31
  394. package/dist/thinking/registry.js.map +1 -1
  395. package/dist/thinking/thinkingHandlerFor.js +40 -0
  396. package/dist/thinking/thinkingHandlerFor.js.map +1 -0
  397. package/dist/thinking/types.js +3 -3
  398. package/dist/types/adapters/llm/AnthropicProvider.d.ts +3 -1
  399. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  400. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +2 -0
  401. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  402. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +8 -0
  403. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
  404. package/dist/types/adapters/llm/FoundryProvider.d.ts.map +1 -1
  405. package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts +1 -0
  406. package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
  407. package/dist/types/adapters/llm/MockProvider.d.ts +2 -0
  408. package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
  409. package/dist/types/adapters/llm/OllamaProvider.d.ts +1 -0
  410. package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -1
  411. package/dist/types/adapters/llm/OpenAIProvider.d.ts +5 -0
  412. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  413. package/dist/types/adapters/llm/anthropicCacheWire.d.ts +27 -9
  414. package/dist/types/adapters/llm/anthropicCacheWire.d.ts.map +1 -1
  415. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +1 -1
  416. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
  417. package/dist/types/adapters/types.d.ts +13 -0
  418. package/dist/types/adapters/types.d.ts.map +1 -1
  419. package/dist/types/bridge/eventMeta.d.ts +5 -1
  420. package/dist/types/bridge/eventMeta.d.ts.map +1 -1
  421. package/dist/types/bridge/eventSourcePosition.d.ts +11 -0
  422. package/dist/types/bridge/eventSourcePosition.d.ts.map +1 -0
  423. package/dist/types/cache/CacheDecisionSubflow.d.ts +44 -8
  424. package/dist/types/cache/CacheDecisionSubflow.d.ts.map +1 -1
  425. package/dist/types/cache/cacheStrategyFor.d.ts +43 -0
  426. package/dist/types/cache/cacheStrategyFor.d.ts.map +1 -0
  427. package/dist/types/cache/index.d.ts +20 -29
  428. package/dist/types/cache/index.d.ts.map +1 -1
  429. package/dist/types/cache/strategies/AutomaticCacheStrategy.d.ts +38 -0
  430. package/dist/types/cache/strategies/AutomaticCacheStrategy.d.ts.map +1 -0
  431. package/dist/types/cache/strategies/BreakpointCacheStrategy.d.ts +41 -0
  432. package/dist/types/cache/strategies/BreakpointCacheStrategy.d.ts.map +1 -0
  433. package/dist/types/cache/strategies/NoOpCacheStrategy.d.ts +8 -18
  434. package/dist/types/cache/strategies/NoOpCacheStrategy.d.ts.map +1 -1
  435. package/dist/types/cache/types.d.ts +79 -78
  436. package/dist/types/cache/types.d.ts.map +1 -1
  437. package/dist/types/core/Agent.d.ts +36 -10
  438. package/dist/types/core/Agent.d.ts.map +1 -1
  439. package/dist/types/core/LLMCall.d.ts +3 -4
  440. package/dist/types/core/LLMCall.d.ts.map +1 -1
  441. package/dist/types/core/RunnerBase.d.ts +11 -0
  442. package/dist/types/core/RunnerBase.d.ts.map +1 -1
  443. package/dist/types/core/agent/AgentBuilder.d.ts +24 -33
  444. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  445. package/dist/types/core/agent/act.d.ts +5 -2
  446. package/dist/types/core/agent/act.d.ts.map +1 -1
  447. package/dist/types/core/agent/assessment/stage.d.ts +2 -0
  448. package/dist/types/core/agent/assessment/stage.d.ts.map +1 -1
  449. package/dist/types/core/agent/buildAgentChart.d.ts +5 -1
  450. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  451. package/dist/types/core/agent/buildCacheSubflow.d.ts +4 -2
  452. package/dist/types/core/agent/buildCacheSubflow.d.ts.map +1 -1
  453. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  454. package/dist/types/core/agent/honesty/mounts.d.ts +2 -0
  455. package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -1
  456. package/dist/types/core/agent/middleware/ledger.d.ts +1 -1
  457. package/dist/types/core/agent/middleware/messagePhase.d.ts +6 -0
  458. package/dist/types/core/agent/middleware/messagePhase.d.ts.map +1 -0
  459. package/dist/types/core/agent/skillBrains.d.ts +5 -3
  460. package/dist/types/core/agent/skillBrains.d.ts.map +1 -1
  461. package/dist/types/core/agent/stages/answerValidation.d.ts +6 -1
  462. package/dist/types/core/agent/stages/answerValidation.d.ts.map +1 -1
  463. package/dist/types/core/agent/stages/breakFinal.d.ts +16 -0
  464. package/dist/types/core/agent/stages/breakFinal.d.ts.map +1 -1
  465. package/dist/types/core/agent/stages/callLLM.d.ts +3 -1
  466. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  467. package/dist/types/core/agent/stages/outputAdmission.d.ts +7 -0
  468. package/dist/types/core/agent/stages/outputAdmission.d.ts.map +1 -0
  469. package/dist/types/core/agent/stages/prepareFinal.d.ts +18 -41
  470. package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
  471. package/dist/types/core/agent/stages/reliabilityExecution.d.ts +8 -1
  472. package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
  473. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  474. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  475. package/dist/types/core/agent/toolArgsValidation.d.ts +9 -5
  476. package/dist/types/core/agent/toolArgsValidation.d.ts.map +1 -1
  477. package/dist/types/core/agent/toolDispatch.d.ts +3 -2
  478. package/dist/types/core/agent/toolDispatch.d.ts.map +1 -1
  479. package/dist/types/core/agent/toolSecurityEvents.d.ts +19 -0
  480. package/dist/types/core/agent/toolSecurityEvents.d.ts.map +1 -0
  481. package/dist/types/core/agent/types.d.ts +4 -4
  482. package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
  483. package/dist/types/core/conversation.d.ts +16 -1
  484. package/dist/types/core/conversation.d.ts.map +1 -1
  485. package/dist/types/core/slots/buildThinkingSubflow.d.ts +2 -2
  486. package/dist/types/core/slots/buildThinkingSubflow.d.ts.map +1 -1
  487. package/dist/types/core/terminalVerdict.d.ts +57 -0
  488. package/dist/types/core/terminalVerdict.d.ts.map +1 -0
  489. package/dist/types/core-flow/Conditional.d.ts.map +1 -1
  490. package/dist/types/core-flow/Graph.d.ts.map +1 -1
  491. package/dist/types/core-flow/Loop.d.ts.map +1 -1
  492. package/dist/types/core-flow/Parallel.d.ts.map +1 -1
  493. package/dist/types/core-flow/Sequence.d.ts.map +1 -1
  494. package/dist/types/core-flow/Workflow.d.ts.map +1 -1
  495. package/dist/types/core-flow/childOutcome.d.ts +48 -0
  496. package/dist/types/core-flow/childOutcome.d.ts.map +1 -0
  497. package/dist/types/events/payloads.d.ts +33 -11
  498. package/dist/types/events/payloads.d.ts.map +1 -1
  499. package/dist/types/events/types.d.ts +32 -2
  500. package/dist/types/events/types.d.ts.map +1 -1
  501. package/dist/types/index.d.ts +1 -11
  502. package/dist/types/index.d.ts.map +1 -1
  503. package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -1
  504. package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
  505. package/dist/types/lib/time-travel/receipt.d.ts +5 -5
  506. package/dist/types/lib/trace-toolpack/debugPrompt.d.ts +1 -1
  507. package/dist/types/lib/trace-toolpack/debugPrompt.d.ts.map +1 -1
  508. package/dist/types/lib/trace-toolpack/innerDescent.d.ts +59 -0
  509. package/dist/types/lib/trace-toolpack/innerDescent.d.ts.map +1 -0
  510. package/dist/types/lib/trace-toolpack/subflowRecords.d.ts +56 -0
  511. package/dist/types/lib/trace-toolpack/subflowRecords.d.ts.map +1 -0
  512. package/dist/types/lib/trace-toolpack/traceToolNames.d.ts +1 -1
  513. package/dist/types/lib/trace-toolpack/traceToolNames.d.ts.map +1 -1
  514. package/dist/types/lib/trace-toolpack/traceToolpack.d.ts +1 -0
  515. package/dist/types/lib/trace-toolpack/traceToolpack.d.ts.map +1 -1
  516. package/dist/types/lib/trust-boundaries/capture.d.ts +7 -0
  517. package/dist/types/lib/trust-boundaries/capture.d.ts.map +1 -0
  518. package/dist/types/lib/trust-boundaries/index.d.ts +3 -0
  519. package/dist/types/lib/trust-boundaries/index.d.ts.map +1 -0
  520. package/dist/types/lib/trust-boundaries/project.d.ts +14 -0
  521. package/dist/types/lib/trust-boundaries/project.d.ts.map +1 -0
  522. package/dist/types/lib/trust-boundaries/types.d.ts +82 -0
  523. package/dist/types/lib/trust-boundaries/types.d.ts.map +1 -0
  524. package/dist/types/observe.d.ts +1 -0
  525. package/dist/types/observe.d.ts.map +1 -1
  526. package/dist/types/patterns/LlmRouter.d.ts.map +1 -1
  527. package/dist/types/recorders/core/EmitBridge.d.ts.map +1 -1
  528. package/dist/types/recorders/observability/recordRun.d.ts +29 -4
  529. package/dist/types/recorders/observability/recordRun.d.ts.map +1 -1
  530. package/dist/types/recorders/observability/recordingEnvelope.d.ts.map +1 -1
  531. package/dist/types/reliability/failFastRecord.d.ts +29 -0
  532. package/dist/types/reliability/failFastRecord.d.ts.map +1 -0
  533. package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
  534. package/dist/types/resilience/withFallback.d.ts.map +1 -1
  535. package/dist/types/resilience/withRetry.d.ts.map +1 -1
  536. package/dist/types/thinking/AnthropicThinkingHandler.d.ts.map +1 -1
  537. package/dist/types/thinking/MockThinkingHandler.d.ts.map +1 -1
  538. package/dist/types/thinking/OllamaThinkingHandler.d.ts.map +1 -1
  539. package/dist/types/thinking/OpenAIThinkingHandler.d.ts.map +1 -1
  540. package/dist/types/thinking/index.d.ts +8 -7
  541. package/dist/types/thinking/index.d.ts.map +1 -1
  542. package/dist/types/thinking/registry.d.ts +13 -23
  543. package/dist/types/thinking/registry.d.ts.map +1 -1
  544. package/dist/types/thinking/thinkingHandlerFor.d.ts +28 -0
  545. package/dist/types/thinking/thinkingHandlerFor.d.ts.map +1 -0
  546. package/dist/types/thinking/types.d.ts +7 -15
  547. package/dist/types/thinking/types.d.ts.map +1 -1
  548. package/package.json +1 -5
  549. package/dist/cache/strategies/AnthropicCacheStrategy.js +0 -90
  550. package/dist/cache/strategies/AnthropicCacheStrategy.js.map +0 -1
  551. package/dist/cache/strategies/BedrockCacheStrategy.js +0 -97
  552. package/dist/cache/strategies/BedrockCacheStrategy.js.map +0 -1
  553. package/dist/cache/strategies/OpenAICacheStrategy.js +0 -76
  554. package/dist/cache/strategies/OpenAICacheStrategy.js.map +0 -1
  555. package/dist/cache/strategyRegistry.js +0 -81
  556. package/dist/cache/strategyRegistry.js.map +0 -1
  557. package/dist/esm/cache/strategies/AnthropicCacheStrategy.d.ts +0 -41
  558. package/dist/esm/cache/strategies/AnthropicCacheStrategy.js +0 -86
  559. package/dist/esm/cache/strategies/AnthropicCacheStrategy.js.map +0 -1
  560. package/dist/esm/cache/strategies/BedrockCacheStrategy.d.ts +0 -62
  561. package/dist/esm/cache/strategies/BedrockCacheStrategy.js +0 -93
  562. package/dist/esm/cache/strategies/BedrockCacheStrategy.js.map +0 -1
  563. package/dist/esm/cache/strategies/OpenAICacheStrategy.d.ts +0 -47
  564. package/dist/esm/cache/strategies/OpenAICacheStrategy.js +0 -72
  565. package/dist/esm/cache/strategies/OpenAICacheStrategy.js.map +0 -1
  566. package/dist/esm/cache/strategyRegistry.d.ts +0 -45
  567. package/dist/esm/cache/strategyRegistry.js +0 -74
  568. package/dist/esm/cache/strategyRegistry.js.map +0 -1
  569. package/dist/types/cache/strategies/AnthropicCacheStrategy.d.ts +0 -42
  570. package/dist/types/cache/strategies/AnthropicCacheStrategy.d.ts.map +0 -1
  571. package/dist/types/cache/strategies/BedrockCacheStrategy.d.ts +0 -63
  572. package/dist/types/cache/strategies/BedrockCacheStrategy.d.ts.map +0 -1
  573. package/dist/types/cache/strategies/OpenAICacheStrategy.d.ts +0 -48
  574. package/dist/types/cache/strategies/OpenAICacheStrategy.d.ts.map +0 -1
  575. package/dist/types/cache/strategyRegistry.d.ts +0 -46
  576. package/dist/types/cache/strategyRegistry.d.ts.map +0 -1
@@ -49,16 +49,19 @@
49
49
  *
50
50
  * WHAT IT DOES NOT DO
51
51
  * ───────────────────
52
- * It attaches no OTHER recorders. `narrative()` and `metrics()` are the
52
+ * It attaches no OTHER recorders by default. `narrative()` and `metrics()` are the
53
53
  * consumer's choice — their data rides the snapshot when attached, and
54
54
  * each viewer says so when it isn't there (a Gantt with no timings shows
55
55
  * execution ORDER and says so; a story panel falls back to "X executed.
56
56
  * Wrote: y"). Attaching them behind the consumer's back would make every
57
57
  * recording pay for panels most runs never open.
58
+ * The explicit `trustBoundaries` option adds typed metadata capture, not an
59
+ * engine attachment. Its bundle is overlaid only when exporting a recording.
58
60
  */
59
61
  import { DEFAULT_MAX_EVENTS, eventTail } from '../../events/eventTail.js';
60
62
  import { boundaryRecorder } from './BoundaryRecorder.js';
61
63
  import { summarizeEmbeddings } from './embeddingSummary.js';
64
+ import { trustBoundaryRecorder, } from '../../lib/trust-boundaries/index.js';
62
65
  // FOLD · the one owner of the finished run's record — shared state, commit log and every attached recorder's data
63
66
  // consumers read this and never re-derive it: localObservability.ts's `includeSnapshot` branch and src/artifacts/recordingArtifact.ts, which stores the JSON TEXT
64
67
  // detached: NO for the snapshot half — parts of it are the runner's own objects by reference: the argument
@@ -82,9 +85,30 @@ import { summarizeEmbeddings } from './embeddingSummary.js';
82
85
  * ```
83
86
  */
84
87
  export function recordRun(runner, options = {}) {
85
- return recordRunWhere(runner, keepEveryEvent, options);
88
+ // Only this opt-in door constructs the optional observer. The Agent's
89
+ // internal recording coordinator can stay on the default browser graph
90
+ // without making every consumer carry the trust capture implementation.
91
+ // Validate capture options before acquiring any subscriptions.
92
+ const trust = options.trustBoundaries
93
+ ? trustBoundaryRecorder(options.trustBoundaries === true ? {} : options.trustBoundaries)
94
+ : undefined;
95
+ return recordRunWhere(runner, keepEveryEvent, options, trust);
86
96
  }
87
97
  const keepEveryEvent = () => true;
98
+ /** Dispose all acquired resources; an earlier operation's error stays primary. */
99
+ function disposeSubscriptions(subscriptions, failure) {
100
+ let firstFailure = failure;
101
+ for (const unsubscribe of subscriptions) {
102
+ try {
103
+ unsubscribe();
104
+ }
105
+ catch (error) {
106
+ firstFailure ??= { error };
107
+ }
108
+ }
109
+ if (firstFailure)
110
+ throw firstFailure.error;
111
+ }
88
112
  /**
89
113
  * {@link recordRun} with a timeline that keeps only the events `keep` admits —
90
114
  * the Agent's own per-run recording (`artifacts: { recordings: true }`) passes
@@ -94,74 +118,124 @@ const keepEveryEvent = () => true;
94
118
  * neither ever carried such a fact.
95
119
  *
96
120
  * @internal — the Agent's; not on any door. `recordRun` is the public producer
97
- * and records everything, as it always has.
121
+ * and records everything, as it always has. Optional typed capture is supplied
122
+ * by that public factory; this coordinator never constructs another observer.
98
123
  */
99
- export function recordRunWhere(runner, keep, options = {}) {
100
- // 1. THE TIMELINE. Subscribed before the run so nothing is missed —
101
- // the dispatcher drops events with no listener rather than queuing
102
- // them, so a late subscription starts mid-story. The bounded tail
103
- // (cap + drop count) is the shared `eventTail` helper, so a
104
- // recording and the self-explaining agent's evidence keep the same
105
- // amount and report a shortfall the same way.
106
- const tail = eventTail(options.maxEvents ?? DEFAULT_MAX_EVENTS);
107
- const offEvents = runner.on('*', (event) => {
108
- if (keep(event))
109
- tail.push(event);
110
- });
111
- // 2. THE BOUNDARIES — all three connections, which is the whole reason
112
- // to call this instead of wiring it yourself. `getCommitCount` reads
113
- // through the runner on every boundary, so it reports the count at
114
- // that moment rather than a number captured now (when it is 0).
115
- const keepEmbeddings = options.recordEmbeddings ?? false;
116
- const boundary = boundaryRecorder({
117
- getCommitCount: () => runner.getCommitCount(),
118
- ...(options.boundaryDetail === 'lean' ? { snapshot: 'lean' } : {}),
119
- ...(keepEmbeddings ? { recordEmbeddings: true } : {}),
120
- });
121
- const offAttach = runner.attach(boundary);
122
- const offTyped = boundary.subscribe(runner);
123
- let stopped = false;
124
- return {
125
- toRecording: () => ({
126
- // Read at freeze time. Before the run there is no snapshot; during
127
- // one it grows; after it, it is the finished run's. Unless
128
- // `recordEmbeddings` asked for them, raw vectors are summarised to
129
- // `{ dims, norm }` here — the snapshot's subflow results carry every
130
- // retrieved entry's full vector otherwise, which is what made a
131
- // single retrieval turn's recording weigh 2.76 MB in the field. The
132
- // summarisation is copy-on-write: parts of the snapshot without
133
- // embeddings are the runner's own objects, held by reference, as
134
- // before — serialize to detach.
135
- snapshot: keepEmbeddings
136
- ? runner.getLastSnapshot()
137
- : summarizeEmbeddings(runner.getLastSnapshot()),
138
- events: keepEmbeddings
139
- ? tail.snapshot().events
140
- : summarizeEmbeddings(tail.snapshot().events),
141
- // The one piece a run does not leave behind — it lives on the
142
- // chart, which is built once and never changes.
143
- structure: runner.getSpec().buildTimeStructure,
144
- }),
145
- boundary,
146
- get eventCount() {
147
- return tail.count;
148
- },
149
- get droppedEvents() {
150
- return tail.dropped;
151
- },
152
- get firstRetainedEventIndex() {
153
- return tail.firstRetainedIndex;
154
- },
155
- stop: () => {
156
- // Idempotent: a consumer that stops in both a finally block and an
157
- // unmount handler should not detach someone else's later recorder.
158
- if (stopped)
159
- return;
160
- stopped = true;
161
- offEvents();
162
- offTyped();
163
- offAttach();
164
- },
165
- };
124
+ export function recordRunWhere(runner, keep, options = {}, trust) {
125
+ const subscriptions = [];
126
+ try {
127
+ // Fan out admitted events from the existing listener. Evaluate `keep` only
128
+ // once: a stateful membership callback must not admit the timeline but
129
+ // reject its corresponding fact on a second invocation.
130
+ let onTrustEvent;
131
+ const offTrust = trust?.subscribe({
132
+ on: (_type, listener) => {
133
+ onTrustEvent = listener;
134
+ return () => {
135
+ onTrustEvent = undefined;
136
+ };
137
+ },
138
+ });
139
+ if (offTrust)
140
+ subscriptions.push(offTrust);
141
+ // 1. THE TIMELINE. Subscribed before the run so nothing is missed —
142
+ // the dispatcher drops events with no listener rather than queuing
143
+ // them, so a late subscription starts mid-story. The bounded tail
144
+ // (cap + drop count) is the shared `eventTail` helper, so a
145
+ // recording and the self-explaining agent's evidence keep the same
146
+ // amount and report a shortfall the same way.
147
+ const tail = eventTail(options.maxEvents ?? DEFAULT_MAX_EVENTS);
148
+ const offEvents = runner.on('*', (event) => {
149
+ if (keep(event)) {
150
+ tail.push(event);
151
+ onTrustEvent?.(event);
152
+ }
153
+ });
154
+ subscriptions.push(offEvents);
155
+ // 2. THE BOUNDARIES — all three connections, which is the whole reason
156
+ // to call this instead of wiring it yourself. `getCommitCount` reads
157
+ // through the runner on every boundary, so it reports the count at
158
+ // that moment rather than a number captured now (when it is 0).
159
+ const keepEmbeddings = options.recordEmbeddings ?? false;
160
+ const boundary = boundaryRecorder({
161
+ getCommitCount: () => runner.getCommitCount(),
162
+ ...(options.boundaryDetail === 'lean' ? { snapshot: 'lean' } : {}),
163
+ ...(keepEmbeddings ? { recordEmbeddings: true } : {}),
164
+ });
165
+ const offAttach = runner.attach(boundary);
166
+ subscriptions.push(offAttach);
167
+ const offTyped = boundary.subscribe(runner);
168
+ subscriptions.push(offTyped);
169
+ let stopped = false;
170
+ let stoppedSnapshot;
171
+ const snapshot = () => {
172
+ const base = stopped ? stoppedSnapshot : runner.getLastSnapshot();
173
+ const retained = (keepEmbeddings ? base : summarizeEmbeddings(base));
174
+ if (!trust || retained === undefined)
175
+ return retained;
176
+ // One export owner, one row per capture. Never alter the engine snapshot
177
+ // or replace another recorder's row just because it has the same name.
178
+ const recorders = retained.recorders ?? [];
179
+ if (recorders.some((row) => row.id === trust.id)) {
180
+ throw new Error(`Trust boundary recorder id '${trust.id}' conflicts with an existing recorder`);
181
+ }
182
+ return {
183
+ ...retained,
184
+ recorders: [...recorders, { id: trust.id, ...trust.toSnapshot() }],
185
+ };
186
+ };
187
+ return {
188
+ toRecording: () => ({
189
+ // Read at freeze time. Before the run there is no snapshot; during
190
+ // one it grows; after it, it is the finished run's. Unless
191
+ // `recordEmbeddings` asked for them, raw vectors are summarised to
192
+ // `{ dims, norm }` here — the snapshot's subflow results carry every
193
+ // retrieved entry's full vector otherwise, which is what made a
194
+ // single retrieval turn's recording weigh 2.76 MB in the field. The
195
+ // summarisation is copy-on-write: parts of the snapshot without
196
+ // embeddings are the runner's own objects, held by reference, as
197
+ // before — serialize to detach.
198
+ snapshot: snapshot(),
199
+ events: keepEmbeddings
200
+ ? tail.snapshot().events
201
+ : summarizeEmbeddings(tail.snapshot().events),
202
+ // The one piece a run does not leave behind — it lives on the
203
+ // chart, which is built once and never changes.
204
+ structure: runner.getSpec().buildTimeStructure,
205
+ }),
206
+ boundary,
207
+ ...(trust ? { trustBoundaries: trust } : {}),
208
+ get eventCount() {
209
+ return tail.count;
210
+ },
211
+ get droppedEvents() {
212
+ return tail.dropped;
213
+ },
214
+ get firstRetainedEventIndex() {
215
+ return tail.firstRetainedIndex;
216
+ },
217
+ stop: () => {
218
+ // Idempotent: a consumer that stops in both a finally block and an
219
+ // unmount handler should not detach someone else's later recorder.
220
+ if (stopped)
221
+ return;
222
+ stopped = true;
223
+ // The timeline and the boundary log end here, so the snapshot does
224
+ // too: a reused runner's later log is never paired with these events.
225
+ let failure;
226
+ try {
227
+ stoppedSnapshot = runner.getLastSnapshot();
228
+ }
229
+ catch (error) {
230
+ failure = { error };
231
+ }
232
+ disposeSubscriptions(subscriptions, failure);
233
+ },
234
+ };
235
+ }
236
+ catch (error) {
237
+ disposeSubscriptions(subscriptions, { error });
238
+ throw error;
239
+ }
166
240
  }
167
241
  //# sourceMappingURL=recordRun.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recordRun.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAKH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAyF5D,kHAAkH;AAClH,kKAAkK;AAClK,2GAA2G;AAC3G,8EAA8E;AAC9E,+FAA+F;AAC/F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,UAA4B,EAAE;IACtE,OAAO,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,cAAc,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,IAA6C,EAC7C,UAA4B,EAAE;IAE9B,oEAAoE;IACpE,sEAAsE;IACtE,qEAAqE;IACrE,+DAA+D;IAC/D,sEAAsE;IACtE,iDAAiD;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IAChE,MAAM,SAAS,GAAgB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAA0B,EAAE,EAAE;QAC3E,IAAI,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,wEAAwE;IACxE,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;IACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAChC,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;QAC7C,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO;QACL,WAAW,EAAE,GAAc,EAAE,CAAC,CAAC;YAC7B,mEAAmE;YACnE,2DAA2D;YAC3D,mEAAmE;YACnE,qEAAqE;YACrE,gEAAgE;YAChE,oEAAoE;YACpE,gEAAgE;YAChE,iEAAiE;YACjE,gCAAgC;YAChC,QAAQ,EAAE,cAAc;gBACtB,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;gBAC1B,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,EAAE,cAAc;gBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;gBACxB,CAAC,CAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAoC;YACnF,8DAA8D;YAC9D,gDAAgD;YAChD,SAAS,EAAG,MAAM,CAAC,OAAO,EAAuC,CAAC,kBAAkB;SACrF,CAAC;QACF,QAAQ;QACR,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,uBAAuB;YACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,mEAAmE;YACnE,mEAAmE;YACnE,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"recordRun.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":"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"}
@@ -102,9 +102,11 @@ export class UnsupportedPrivacyModeError extends Error {
102
102
  `that admits it is raw, so silently storing the raw bytes under that label is the ` +
103
103
  `worse outcome, not the convenient one.\n\n` +
104
104
  `Either persist with privacy: { mode: 'full' } and hold the result under the rules raw ` +
105
- `run data needs, or redact BEFORE persisting — recordRun(agent, { boundaryDetail: ` +
106
- `'lean' }) captures no payloads in the first place, and serializeTrace/redactContent ` +
107
- `redact at the serialize boundary.`);
105
+ `run data needs, or minimize/redact EVERY exported channel before persisting. ` +
106
+ `recordRun(agent, { boundaryDetail: 'lean' }) removes captured content only from ` +
107
+ `BoundaryEvents; the event tail and engine state can still contain raw content. ` +
108
+ `serializeTrace/redactContent operate on their own projection, not an arbitrary ` +
109
+ `whole recording.`);
108
110
  this.name = 'UnsupportedPrivacyModeError';
109
111
  this.mode = mode;
110
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recordingEnvelope.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordingEnvelope.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The fail-fast RECORD and the one error it becomes.
3
+ *
4
+ * The reliability loop (`core/agent/stages/reliabilityExecution.ts · failFast`)
5
+ * ends a run by writing this record and breaking. Whoever owns the run's
6
+ * outcome turns it into `ReliabilityFailFastError`: the agent's own run
7
+ * boundary (`Agent · finalizeResult`), or a composition the agent runs inside
8
+ * (`core-flow/childFailFast.ts`). Every chart boundary between the two carries
9
+ * the record across — a record left behind a boundary is a run that ends
10
+ * "successfully" with no answer.
11
+ */
12
+ import type { AgentState } from '../core/agent/types.js';
13
+ import { ReliabilityFailFastError } from './types.js';
14
+ /** The keys of the record, listed once and checked against `AgentState`. */
15
+ export declare const RELIABILITY_FAIL_KEYS: readonly ["reliabilityFailKind", "reliabilityFailPayload", "reliabilityFailReason", "reliabilityFailCauseMessage", "reliabilityFailCauseName"];
16
+ /** The fail-fast record as a state holds it. */
17
+ export type ReliabilityFailRecord = Pick<AgentState, (typeof RELIABILITY_FAIL_KEYS)[number]>;
18
+ /**
19
+ * The fail-fast record a state holds: its present keys, or nothing when no
20
+ * fail-fast fired — so a boundary that spreads it crosses no new key otherwise.
21
+ */
22
+ export declare function failFastRecordOf(state: Readonly<Record<string, unknown>>): ReliabilityFailRecord | undefined;
23
+ /**
24
+ * The error a fail-fast record becomes. The cause is rebuilt from the message
25
+ * and name the record keeps — an `Error` does not survive the state's
26
+ * `structuredClone`, so the record never held the original.
27
+ */
28
+ export declare function failFastErrorOf(record: ReliabilityFailRecord, snapshot?: unknown): ReliabilityFailFastError;
@@ -0,0 +1,45 @@
1
+ import { ReliabilityFailFastError } from './types.js';
2
+ /** The keys of the record, listed once and checked against `AgentState`. */
3
+ export const RELIABILITY_FAIL_KEYS = [
4
+ 'reliabilityFailKind',
5
+ 'reliabilityFailPayload',
6
+ 'reliabilityFailReason',
7
+ 'reliabilityFailCauseMessage',
8
+ 'reliabilityFailCauseName',
9
+ ];
10
+ /**
11
+ * The fail-fast record a state holds: its present keys, or nothing when no
12
+ * fail-fast fired — so a boundary that spreads it crosses no new key otherwise.
13
+ */
14
+ export function failFastRecordOf(state) {
15
+ if (state.reliabilityFailKind === undefined)
16
+ return undefined;
17
+ const record = {};
18
+ for (const key of RELIABILITY_FAIL_KEYS) {
19
+ if (state[key] !== undefined)
20
+ record[key] = state[key];
21
+ }
22
+ return record;
23
+ }
24
+ /**
25
+ * The error a fail-fast record becomes. The cause is rebuilt from the message
26
+ * and name the record keeps — an `Error` does not survive the state's
27
+ * `structuredClone`, so the record never held the original.
28
+ */
29
+ export function failFastErrorOf(record, snapshot) {
30
+ const kind = record.reliabilityFailKind ?? 'unknown';
31
+ let cause;
32
+ if (record.reliabilityFailCauseMessage !== undefined) {
33
+ cause = new Error(record.reliabilityFailCauseMessage);
34
+ if (record.reliabilityFailCauseName !== undefined)
35
+ cause.name = record.reliabilityFailCauseName;
36
+ }
37
+ return new ReliabilityFailFastError({
38
+ kind,
39
+ reason: record.reliabilityFailReason ?? kind,
40
+ ...(cause !== undefined && { cause }),
41
+ ...(record.reliabilityFailPayload !== undefined && { payload: record.reliabilityFailPayload }),
42
+ ...(snapshot !== undefined && { snapshot }),
43
+ });
44
+ }
45
+ //# sourceMappingURL=failFastRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failFastRecord.js","sourceRoot":"","sources":["../../../src/reliability/failFastRecord.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,qBAAqB;IACrB,wBAAwB;IACxB,uBAAuB;IACvB,6BAA6B;IAC7B,0BAA0B;CACsB,CAAC;AAKnD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAwC;IAExC,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAA+B,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA6B,EAC7B,QAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,IAAI,SAAS,CAAC;IACrD,IAAI,KAAwB,CAAC;IAC7B,IAAI,MAAM,CAAC,2BAA2B,KAAK,SAAS,EAAE,CAAC;QACrD,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,wBAAwB,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,wBAAwB,CAAC;QAClC,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,qBAAqB,IAAI,IAAI;QAC5C,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;QACrC,GAAG,CAAC,MAAM,CAAC,sBAAsB,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAC9F,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC"}
@@ -239,6 +239,9 @@ export function withCircuitBreaker(inner, options = {}) {
239
239
  ...(inner.carriesForcedToolChoice !== undefined && {
240
240
  carriesForcedToolChoice: inner.carriesForcedToolChoice,
241
241
  }),
242
+ // And for prompt caching: a breaker never changes what reaches the wire.
243
+ ...(inner.promptCaching !== undefined && { promptCaching: inner.promptCaching }),
244
+ ...(inner.thinkingHandler !== undefined && { thinkingHandler: inner.thinkingHandler }),
242
245
  async complete(req, hooks) {
243
246
  rejectFastIfOpen(hooks);
244
247
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../../src/resilience/withCircuitBreaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../../src/resilience/withCircuitBreaker.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,79 @@ function carriedByBoth(a, b) {
39
39
  const right = new Set(b.carriesInMessages ?? DEFAULT_CARRIES_IN_MESSAGES);
40
40
  return Object.freeze(left.filter((role) => right.has(role)));
41
41
  }
42
+ /**
43
+ * The prompt caching of a pair where either side may serve the call.
44
+ *
45
+ * A COST hint, not a meaning: the pair asks the agent for breakpoints when
46
+ * EITHER side takes them (clamped to the smaller count when both do), and is
47
+ * automatic when either side caches on its own. Each side is then handed only
48
+ * what IT declares (`requestFor`) — a side that declared nothing never sees a
49
+ * `cacheMarkers` field. Usage is reported when either side reports it — a
50
+ * call the other side served then reads as *unmeasured*, never as a zero.
51
+ */
52
+ function cachingOfPair(a, b) {
53
+ const sides = [a.promptCaching, b.promptCaching].filter((c) => c !== undefined);
54
+ if (sides.length === 0)
55
+ return undefined;
56
+ const reportsUsage = sides.some((c) => c.reportsUsage);
57
+ const breakpoints = sides.flatMap((c) => (c.mode === 'breakpoints' ? [c.maxBreakpoints] : []));
58
+ if (breakpoints.length > 0) {
59
+ return Object.freeze({
60
+ mode: 'breakpoints',
61
+ maxBreakpoints: Math.min(...breakpoints),
62
+ reportsUsage,
63
+ });
64
+ }
65
+ return Object.freeze({ mode: 'automatic', reportsUsage });
66
+ }
67
+ /**
68
+ * The request as ONE side can take it: markers only for a side that declares
69
+ * breakpoints, sliced to its own count; stripped for any other side.
70
+ */
71
+ function requestFor(side, req) {
72
+ const markers = req.cacheMarkers;
73
+ if (markers === undefined)
74
+ return req;
75
+ const caching = side.promptCaching;
76
+ if (caching?.mode === 'breakpoints') {
77
+ return markers.length <= caching.maxBreakpoints
78
+ ? req
79
+ : { ...req, cacheMarkers: markers.slice(0, caching.maxBreakpoints) };
80
+ }
81
+ const rest = { ...req };
82
+ delete rest.cacheMarkers;
83
+ return rest;
84
+ }
85
+ function isAnswered(raw) {
86
+ if (typeof raw !== 'object' || raw === null)
87
+ return false;
88
+ const by = raw.answeredBy;
89
+ return (by === 'primary' || by === 'fallback') && 'raw' in raw;
90
+ }
91
+ /**
92
+ * The thinking handler of a pair. The same handler on both sides is the
93
+ * pair's. Different handlers (or one side with none) get a DISPATCHING
94
+ * handler: the pair tags each response's `rawThinking` with the side that
95
+ * answered (`AnsweredThinking`), and the handler runs that side's own — one
96
+ * wire's handler on the other's thinking would mis-read it, and dropping
97
+ * both lost the signed blocks the next call must echo.
98
+ */
99
+ function thinkingOfPair(a, b) {
100
+ const [ha, hb] = [a.thinkingHandler, b.thinkingHandler];
101
+ if (ha === hb)
102
+ return ha;
103
+ return {
104
+ id: `${ha?.id ?? 'none'}-or-${hb?.id ?? 'none'}`,
105
+ normalize(raw) {
106
+ if (!isAnswered(raw)) {
107
+ throw new TypeError("withFallback: this thinking does not say which side answered, so neither side's " +
108
+ 'handler can read it');
109
+ }
110
+ const handler = raw.answeredBy === 'primary' ? ha : hb;
111
+ return handler === undefined ? [] : handler.normalize(raw.raw);
112
+ },
113
+ };
114
+ }
42
115
  /**
43
116
  * Wrap a primary provider with a fallback. Tries primary first; on
44
117
  * error matching the policy, calls the fallback.
@@ -68,6 +141,20 @@ export function withFallback(primary, fallback, options = {}) {
68
141
  reason: err instanceof Error ? err.message : String(err),
69
142
  });
70
143
  }
144
+ const promptCaching = cachingOfPair(primary, fallback);
145
+ const thinkingHandler = thinkingOfPair(primary, fallback);
146
+ const tagsThinking = primary.thinkingHandler !== fallback.thinkingHandler;
147
+ /** A response as the pair returns it: thinking tagged when the sides differ. */
148
+ const answered = (res, side) => tagsThinking && res.rawThinking !== undefined
149
+ ? { ...res, rawThinking: { answeredBy: side, raw: res.rawThinking } }
150
+ : res;
151
+ async function* answeredStream(chunks, side) {
152
+ for await (const chunk of chunks) {
153
+ yield chunk.response === undefined
154
+ ? chunk
155
+ : { ...chunk, response: answered(chunk.response, side) };
156
+ }
157
+ }
71
158
  const wrapped = {
72
159
  name: `${primary.name}|${fallback.name}`,
73
160
  // The INTERSECTION, and only the intersection. Either provider may serve
@@ -82,16 +169,21 @@ export function withFallback(primary, fallback, options = {}) {
82
169
  // declared partner and one silent one is a pair whose answer is shaped
83
170
  // some of the time, which is the shape of guarantee nobody can use.
84
171
  carriesForcedToolChoice: (primary.carriesForcedToolChoice ?? false) && (fallback.carriesForcedToolChoice ?? false),
172
+ // The combination, not the intersection — see `cachingOfPair`.
173
+ ...(promptCaching !== undefined && { promptCaching }),
174
+ // The side that answered decides which handler reads its thinking —
175
+ // see `thinkingOfPair`.
176
+ ...(thinkingHandler !== undefined && { thinkingHandler }),
85
177
  async complete(req, hooks) {
86
178
  try {
87
- return await primary.complete(req, hooks);
179
+ return answered(await primary.complete(requestFor(primary, req), hooks), 'primary');
88
180
  }
89
181
  catch (err) {
90
182
  if (!shouldFallback(err))
91
183
  throw err;
92
184
  onFallback?.(err);
93
185
  reportFellBack(hooks, err);
94
- return fallback.complete(req, hooks);
186
+ return answered(await fallback.complete(requestFor(fallback, req), hooks), 'fallback');
95
187
  }
96
188
  },
97
189
  };
@@ -104,16 +196,17 @@ export function withFallback(primary, fallback, options = {}) {
104
196
  // No primary stream support → fallback's stream (or its complete-only).
105
197
  // Reports NOTHING: nothing failed here, the primary simply has no
106
198
  // `stream()`. Calling this a fallback would be a lie.
199
+ const fallbackReq = requestFor(fallback, req);
200
+ const fromFallback = () => answeredStream(fallback.stream
201
+ ? fallback.stream(fallbackReq, hooks)
202
+ : completeAsStream(fallback, fallbackReq, hooks), 'fallback');
107
203
  if (!primary.stream) {
108
- if (fallback.stream)
109
- yield* fallback.stream(req, hooks);
110
- else
111
- yield* completeAsStream(fallback, req, hooks);
204
+ yield* fromFallback();
112
205
  return;
113
206
  }
114
207
  let yieldedAny = false;
115
208
  try {
116
- for await (const chunk of primary.stream(req, hooks)) {
209
+ for await (const chunk of answeredStream(primary.stream(requestFor(primary, req), hooks), 'primary')) {
117
210
  yieldedAny = true;
118
211
  yield chunk;
119
212
  }
@@ -123,10 +216,7 @@ export function withFallback(primary, fallback, options = {}) {
123
216
  throw err;
124
217
  onFallback?.(err);
125
218
  reportFellBack(hooks, err);
126
- if (fallback.stream)
127
- yield* fallback.stream(req, hooks);
128
- else
129
- yield* completeAsStream(fallback, req, hooks);
219
+ yield* fromFallback();
130
220
  }
131
221
  };
132
222
  }