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
@@ -1,93 +0,0 @@
1
- /**
2
- * BedrockCacheStrategy — REGISTERED, AND HONEST ABOUT DOING NOTHING (9.59.0).
3
- *
4
- * What Bedrock supports and what THIS ADAPTER does are two different facts,
5
- * and until 9.59.0 the strategy stated the first while the runtime lived
6
- * under the second:
7
- *
8
- * - AWS's Converse API does support prompt caching for Claude models
9
- * (`cachePoint: { type: 'default' }` entries inserted into the `system` /
10
- * `tools` / `messages` arrays) and does report
11
- * `cacheReadInputTokens` / `cacheWriteInputTokens` in its usage block.
12
- * - `BedrockProvider` implements NEITHER half. It never reads
13
- * `req.cacheMarkers` (compare `AnthropicProvider`, which calls
14
- * `applyCacheMarkers`) and it builds `usage` as `{ input, output }` at
15
- * both its streaming and non-streaming sites. The string "cache" does
16
- * not appear in that file.
17
- *
18
- * So this strategy used to clamp markers onto a request field the adapter
19
- * then discarded, and report `markersApplied` for markers that never reached
20
- * a wire — a meter attached to a provider that cannot feed it. It now:
21
- *
22
- * - declares `enabled: false` (nothing here works end to end);
23
- * - passes the request through with `markersApplied: []`, and says why
24
- * once, in dev mode;
25
- * - answers `extractMetrics` with `not-applicable` and the reason.
26
- *
27
- * It stays REGISTERED rather than being deleted so that a Bedrock consumer
28
- * asking the registry what it got is told the truth by name, instead of
29
- * silently falling through to the wildcard NoOp and being left to guess.
30
- *
31
- * Note on Converse: the send half is genuinely a DIFFERENT wire from
32
- * Anthropic's `cache_control` block, so implementing it wants its own
33
- * `bedrockCacheWire.ts` beside `anthropicCacheWire.ts` — not a reuse. That
34
- * is the follow-up this file is waiting for; when it lands, flip `enabled`
35
- * and give `extractMetrics` the `readPortCacheUsage` body the Anthropic
36
- * strategy has.
37
- *
38
- * Auto-registers under provider name `'bedrock'`.
39
- */
40
- import { notApplicable } from '../../lib/claim/claim.js';
41
- import { registerCacheStrategy } from '../strategyRegistry.js';
42
- import { isDevMode } from 'footprintjs';
43
- const BEDROCK_CAPABILITIES = Object.freeze({
44
- // `false`, and it is a statement about the ADAPTER, not about Bedrock.
45
- // Bedrock-Claude supports prompt caching; `BedrockProvider` implements
46
- // neither half of the contract (never sends markers, never reads cache
47
- // usage), so nothing this strategy could do would reach a wire. Saying
48
- // `true` here is what let a dead meter look alive.
49
- enabled: false,
50
- maxMarkers: 0,
51
- ttls: [],
52
- fields: [],
53
- automatic: false,
54
- });
55
- /** One warning per process, not one per call — the fact does not change. */
56
- let warnedAboutAdapterGap = false;
57
- export class BedrockCacheStrategy {
58
- providerName = 'bedrock';
59
- capabilities = BEDROCK_CAPABILITIES;
60
- async prepareRequest(req, candidates, _ctx) {
61
- // Pass-through, ALWAYS. Writing `req.cacheMarkers` here would be writing
62
- // to a field `BedrockProvider` never reads, and returning a non-empty
63
- // `markersApplied` would put markers that never reached a wire onto the
64
- // recorder's record.
65
- if (candidates.length > 0 && !warnedAboutAdapterGap && isDevMode()) {
66
- warnedAboutAdapterGap = true;
67
- // eslint-disable-next-line no-console
68
- console.warn(`[agentfootprint] cache: ${candidates.length} cache marker(s) were declared for ` +
69
- `model "${req.model}", but the Bedrock adapter does not implement prompt caching — ` +
70
- `it never sends cachePoint entries and never reads cacheReadInputTokens off the ` +
71
- `Converse response. No markers were applied and no hit rate can be measured. ` +
72
- `Your cache: directives stay portable and light up on the Anthropic providers.`);
73
- }
74
- return { request: req, markersApplied: [] };
75
- }
76
- /**
77
- * Always `not-applicable` — and that is a statement about THIS adapter,
78
- * not about Bedrock. AWS's Converse API does report
79
- * `cacheReadInputTokens` / `cacheWriteInputTokens`, but
80
- * `BedrockProvider` never reads them: its `usage` is built as
81
- * `{ input, output }` at both the streaming and non-streaming sites. So
82
- * `cacheRead`/`cacheWrite` are ALWAYS absent on this port, and an
83
- * `unknown` per call would read as a measurement that merely failed.
84
- * `not-applicable` says the true thing: nothing here can be measured
85
- * until the adapter grows the read half.
86
- */
87
- extractMetrics(_usage) {
88
- return notApplicable('the Bedrock adapter does not read cache usage off the Converse response, so no ' +
89
- 'cache tokens ever reach the port');
90
- }
91
- }
92
- registerCacheStrategy(new BedrockCacheStrategy());
93
- //# sourceMappingURL=BedrockCacheStrategy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BedrockCacheStrategy.js","sourceRoot":"","sources":["../../../../src/cache/strategies/BedrockCacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAUH,OAAO,EAAE,aAAa,EAAc,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,oBAAoB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC5D,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,mDAAmD;IACnD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,EAAmC;IACzC,MAAM,EAAE,EAAkD;IAC1D,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,4EAA4E;AAC5E,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC,MAAM,OAAO,oBAAoB;IACtB,YAAY,GAAG,SAAS,CAAC;IACzB,YAAY,GAAG,oBAAoB,CAAC;IAE7C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,UAAkC,EAClC,IAA0B;QAK1B,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,qBAAqB;QACrB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE,EAAE,CAAC;YACnE,qBAAqB,GAAG,IAAI,CAAC;YAC7B,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,2BAA2B,UAAU,CAAC,MAAM,qCAAqC;gBAC/E,UAAU,GAAG,CAAC,KAAK,iEAAiE;gBACpF,iFAAiF;gBACjF,8EAA8E;gBAC9E,+EAA+E,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;OAUG;IACH,cAAc,CAAC,MAA8B;QAC3C,OAAO,aAAa,CAClB,iFAAiF;YAC/E,kCAAkC,CACrC,CAAC;IACJ,CAAC;CACF;AAED,qBAAqB,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
@@ -1,47 +0,0 @@
1
- /**
2
- * OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
3
- *
4
- * OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
5
- * No client-side opt-in markers needed (and no way to influence
6
- * cache behavior from the client). The strategy:
7
- *
8
- * - **prepareRequest**: pass-through. We can't tell OpenAI what
9
- * to cache; they decide automatically. Markers are silently
10
- * dropped (the 80% case for OpenAI consumers is "I declared
11
- * cache: 'always' for my injections" — that's still meaningful
12
- * because (a) it's portable across providers, (b) for OpenAI
13
- * the auto-cache may still hit on stable prefixes regardless).
14
- * - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
15
- * from OpenAI's usage response so cacheRecorder can surface
16
- * hit rates / dollar savings.
17
- *
18
- * Auto-registers on module import for: 'openai', 'browser-openai'.
19
- *
20
- * Documentation note for consumers (Phase 12 docs): the `cache:`
21
- * directive on injection definitions is portable but has NO LOCAL
22
- * EFFECT on OpenAI runs — the provider auto-caches based on prefix
23
- * length. The directive still ships correctly with the agent and
24
- * lights up automatically when you swap to Anthropic / Bedrock.
25
- */
26
- import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
27
- import { type Claim } from '../../lib/claim/claim.js';
28
- import type { LLMRequest } from '../../adapters/types.js';
29
- export declare class OpenAICacheStrategy implements CacheStrategy {
30
- readonly providerName = "openai";
31
- readonly capabilities: CacheCapabilities;
32
- prepareRequest(req: LLMRequest, _candidates: readonly CacheMarker[], _ctx: CacheStrategyContext): Promise<{
33
- readonly request: LLMRequest;
34
- readonly markersApplied: readonly CacheMarker[];
35
- }>;
36
- /**
37
- * Always `not-applicable`, for the same adapter reason as Bedrock:
38
- * OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
39
- * `OpenAIProvider` builds `usage` as `{ input, output }` at both its
40
- * streaming and non-streaming sites and never lifts the cached count
41
- * onto the port. OpenAI is the AUTO-caching provider, so this is the
42
- * costliest of the three gaps — it is named here rather than hidden
43
- * behind a per-call `unknown` that would suggest the measurement was
44
- * attempted and merely came back empty.
45
- */
46
- extractMetrics(_usage: CacheUsage | undefined): Claim<CacheMetrics>;
47
- }
@@ -1,72 +0,0 @@
1
- /**
2
- * OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
3
- *
4
- * OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
5
- * No client-side opt-in markers needed (and no way to influence
6
- * cache behavior from the client). The strategy:
7
- *
8
- * - **prepareRequest**: pass-through. We can't tell OpenAI what
9
- * to cache; they decide automatically. Markers are silently
10
- * dropped (the 80% case for OpenAI consumers is "I declared
11
- * cache: 'always' for my injections" — that's still meaningful
12
- * because (a) it's portable across providers, (b) for OpenAI
13
- * the auto-cache may still hit on stable prefixes regardless).
14
- * - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
15
- * from OpenAI's usage response so cacheRecorder can surface
16
- * hit rates / dollar savings.
17
- *
18
- * Auto-registers on module import for: 'openai', 'browser-openai'.
19
- *
20
- * Documentation note for consumers (Phase 12 docs): the `cache:`
21
- * directive on injection definitions is portable but has NO LOCAL
22
- * EFFECT on OpenAI runs — the provider auto-caches based on prefix
23
- * length. The directive still ships correctly with the agent and
24
- * lights up automatically when you swap to Anthropic / Bedrock.
25
- */
26
- import { notApplicable } from '../../lib/claim/claim.js';
27
- import { registerCacheStrategy } from '../strategyRegistry.js';
28
- const OPENAI_CAPABILITIES = Object.freeze({
29
- // `enabled: true` because metrics ARE extracted (cacheRecorder shows
30
- // hit rates). The `automatic: true` flag tells consumers the markers
31
- // are inert here — OpenAI decides what to cache, not us.
32
- enabled: true,
33
- maxMarkers: 0,
34
- ttls: ['short'],
35
- fields: [],
36
- automatic: true,
37
- });
38
- export class OpenAICacheStrategy {
39
- providerName = 'openai';
40
- capabilities = OPENAI_CAPABILITIES;
41
- async prepareRequest(req, _candidates, _ctx) {
42
- // Pass-through. OpenAI auto-caches; no opt-in needed.
43
- return { request: req, markersApplied: [] };
44
- }
45
- /**
46
- * Always `not-applicable`, for the same adapter reason as Bedrock:
47
- * OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
48
- * `OpenAIProvider` builds `usage` as `{ input, output }` at both its
49
- * streaming and non-streaming sites and never lifts the cached count
50
- * onto the port. OpenAI is the AUTO-caching provider, so this is the
51
- * costliest of the three gaps — it is named here rather than hidden
52
- * behind a per-call `unknown` that would suggest the measurement was
53
- * attempted and merely came back empty.
54
- */
55
- extractMetrics(_usage) {
56
- return notApplicable('the OpenAI adapter does not lift prompt_tokens_details.cached_tokens onto the port ' +
57
- 'usage, so no cache tokens ever reach this strategy');
58
- }
59
- }
60
- // Auto-register for both server-side and browser variants.
61
- {
62
- const strategy = new OpenAICacheStrategy();
63
- registerCacheStrategy(strategy);
64
- const browserStrategy = {
65
- providerName: 'browser-openai',
66
- capabilities: strategy.capabilities,
67
- prepareRequest: strategy.prepareRequest.bind(strategy),
68
- extractMetrics: strategy.extractMetrics.bind(strategy),
69
- };
70
- registerCacheStrategy(browserStrategy);
71
- }
72
- //# sourceMappingURL=OpenAICacheStrategy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenAICacheStrategy.js","sourceRoot":"","sources":["../../../../src/cache/strategies/OpenAICacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAUH,OAAO,EAAE,aAAa,EAAc,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,mBAAmB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC3D,qEAAqE;IACrE,qEAAqE;IACrE,yDAAyD;IACzD,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC,OAAO,CAAkC;IAChD,MAAM,EAAE,EAAkD;IAC1D,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,MAAM,OAAO,mBAAmB;IACrB,YAAY,GAAG,QAAQ,CAAC;IACxB,YAAY,GAAG,mBAAmB,CAAC;IAE5C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,WAAmC,EACnC,IAA0B;QAK1B,sDAAsD;QACtD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;;;;OASG;IACH,cAAc,CAAC,MAA8B;QAC3C,OAAO,aAAa,CAClB,qFAAqF;YACnF,oDAAoD,CACvD,CAAC;IACJ,CAAC;CACF;AAED,2DAA2D;AAC3D,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,eAAe,GAAkB;QACrC,YAAY,EAAE,gBAAgB;QAC9B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtD,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;KACvD,CAAC;IACF,qBAAqB,CAAC,eAAe,CAAC,CAAC;AACzC,CAAC"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Strategy registry — maps provider name → CacheStrategy.
3
- *
4
- * Auto-resolution at agent build time: agentfootprint inspects
5
- * `provider.name` and looks up the registered strategy for that
6
- * name. Falls back to `NoOpCacheStrategy` (registered under wildcard
7
- * `'*'`) when the provider isn't recognized.
8
- *
9
- * Phases shipping registered strategies:
10
- * - v2.6 Phase 6 (this phase): NoOp
11
- * - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
12
- * 'browser-anthropic')
13
- * - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
14
- * BedrockCacheStrategy ('bedrock')
15
- * - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
16
- *
17
- * Consumers can register their own strategy via
18
- * `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
19
- * or test mocks.
20
- */
21
- import type { CacheStrategy } from './types.js';
22
- /**
23
- * Look up a CacheStrategy by provider name. Falls back to the
24
- * wildcard NoOp strategy if no match.
25
- *
26
- * Lookup is case-insensitive on the provider name.
27
- */
28
- export declare function getDefaultCacheStrategy(providerName: string): CacheStrategy;
29
- /**
30
- * Register (or replace) a strategy for a provider name. Called by
31
- * strategy modules (v2.6 Phase 7+) at module load OR by consumers
32
- * needing a custom backend. Replacing an existing strategy is allowed
33
- * — the most-recent registration wins.
34
- */
35
- export declare function registerCacheStrategy(strategy: CacheStrategy): void;
36
- /**
37
- * Read-only view of registered strategy names. Useful for diagnostics
38
- * (e.g., logging "we have strategies for: anthropic, openai, *").
39
- */
40
- export declare function listRegisteredStrategies(): readonly string[];
41
- /**
42
- * Internal helper for tests: reset the registry to the default
43
- * (wildcard → NoOp only). Not exported from the public barrel.
44
- */
45
- export declare function _resetRegistryForTests(): void;
@@ -1,74 +0,0 @@
1
- /**
2
- * Strategy registry — maps provider name → CacheStrategy.
3
- *
4
- * Auto-resolution at agent build time: agentfootprint inspects
5
- * `provider.name` and looks up the registered strategy for that
6
- * name. Falls back to `NoOpCacheStrategy` (registered under wildcard
7
- * `'*'`) when the provider isn't recognized.
8
- *
9
- * Phases shipping registered strategies:
10
- * - v2.6 Phase 6 (this phase): NoOp
11
- * - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
12
- * 'browser-anthropic')
13
- * - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
14
- * BedrockCacheStrategy ('bedrock')
15
- * - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
16
- *
17
- * Consumers can register their own strategy via
18
- * `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
19
- * or test mocks.
20
- */
21
- import { NoOpCacheStrategy } from './strategies/NoOpCacheStrategy.js';
22
- /**
23
- * Registry singleton. Populated by individual strategy modules
24
- * importing this and calling `registerCacheStrategy` at module load
25
- * time, OR by the consumer at agent build time.
26
- *
27
- * Contains the wildcard `'*'` → NoOp entry by default; never empty.
28
- */
29
- const REGISTRY = new Map([['*', new NoOpCacheStrategy()]]);
30
- /**
31
- * Look up a CacheStrategy by provider name. Falls back to the
32
- * wildcard NoOp strategy if no match.
33
- *
34
- * Lookup is case-insensitive on the provider name.
35
- */
36
- export function getDefaultCacheStrategy(providerName) {
37
- const exact = REGISTRY.get(providerName);
38
- if (exact !== undefined)
39
- return exact;
40
- const lower = providerName.toLowerCase();
41
- if (lower !== providerName) {
42
- const lowercased = REGISTRY.get(lower);
43
- if (lowercased !== undefined)
44
- return lowercased;
45
- }
46
- // Fallback wildcard always present (set at module load by registerDefaults).
47
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
48
- return REGISTRY.get('*');
49
- }
50
- /**
51
- * Register (or replace) a strategy for a provider name. Called by
52
- * strategy modules (v2.6 Phase 7+) at module load OR by consumers
53
- * needing a custom backend. Replacing an existing strategy is allowed
54
- * — the most-recent registration wins.
55
- */
56
- export function registerCacheStrategy(strategy) {
57
- REGISTRY.set(strategy.providerName, strategy);
58
- }
59
- /**
60
- * Read-only view of registered strategy names. Useful for diagnostics
61
- * (e.g., logging "we have strategies for: anthropic, openai, *").
62
- */
63
- export function listRegisteredStrategies() {
64
- return [...REGISTRY.keys()];
65
- }
66
- /**
67
- * Internal helper for tests: reset the registry to the default
68
- * (wildcard → NoOp only). Not exported from the public barrel.
69
- */
70
- export function _resetRegistryForTests() {
71
- REGISTRY.clear();
72
- REGISTRY.set('*', new NoOpCacheStrategy());
73
- }
74
- //# sourceMappingURL=strategyRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategyRegistry.js","sourceRoot":"","sources":["../../../src/cache/strategyRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAwB,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AAElF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;IAClD,CAAC;IACD,6EAA6E;IAC7E,oEAAoE;IACpE,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * AnthropicCacheStrategy — translates agnostic CacheMarker[] to
3
- * Anthropic API's `cache_control: { type: 'ephemeral' }` markers.
4
- *
5
- * Anthropic-specific behaviors honored:
6
- * - **4-marker limit**: Anthropic allows ≤4 cache breakpoints per
7
- * request. Strategy clamps oversize candidate sets, keeping the
8
- * first 4 in slot order.
9
- * - **TTL mapping**: 'short' → default 5min ephemeral; 'long' →
10
- * `ttl: '1h'` (1-hour beta).
11
- * - **Provider-side hashing**: this strategy doesn't hash — Anthropic
12
- * keys cache by exact byte prefix server-side. We don't need
13
- * content hashes for the v2.6 surface; reserved for v2.7+ if a
14
- * pre-flight cache-warm-check API ships.
15
- *
16
- * What this strategy DOES vs DOESN'T do:
17
- * - DOES: clamp markers, attach to LLMRequest.cacheMarkers,
18
- * read cache metrics off the PORT usage the framework hands it
19
- * (`{ input, output, cacheRead?, cacheWrite? }`) — never off the raw
20
- * Anthropic wire, which the adapter has already normalised
21
- * - DOES NOT: rewrite the wire body. The provider
22
- * (BrowserAnthropicProvider) reads `cacheMarkers` and applies
23
- * `cache_control` blocks during body construction. Separation of
24
- * concerns: strategy decides WHAT to cache; provider knows HOW
25
- * to encode on its specific wire.
26
- *
27
- * Auto-registers in the strategy registry on module import for
28
- * provider names: 'anthropic', 'browser-anthropic'.
29
- */
30
- import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
31
- import type { Claim } from '../../lib/claim/claim.js';
32
- import type { LLMRequest } from '../../adapters/types.js';
33
- export declare class AnthropicCacheStrategy implements CacheStrategy {
34
- readonly providerName = "anthropic";
35
- readonly capabilities: CacheCapabilities;
36
- prepareRequest(req: LLMRequest, candidates: readonly CacheMarker[], ctx: CacheStrategyContext): Promise<{
37
- readonly request: LLMRequest;
38
- readonly markersApplied: readonly CacheMarker[];
39
- }>;
40
- extractMetrics(usage: CacheUsage | undefined): Claim<CacheMetrics>;
41
- }
42
- //# sourceMappingURL=AnthropicCacheStrategy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnthropicCacheStrategy.d.ts","sourceRoot":"","sources":["../../../../src/cache/strategies/AnthropicCacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D,qBAAa,sBAAuB,YAAW,aAAa;IAC1D,QAAQ,CAAC,YAAY,eAAe;IACpC,QAAQ,CAAC,YAAY,oBAA0B;IAEzC,cAAc,CAClB,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,SAAS,WAAW,EAAE,EAClC,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAC;KACjD,CAAC;IA4BF,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CAGnE"}
@@ -1,63 +0,0 @@
1
- /**
2
- * BedrockCacheStrategy — REGISTERED, AND HONEST ABOUT DOING NOTHING (9.59.0).
3
- *
4
- * What Bedrock supports and what THIS ADAPTER does are two different facts,
5
- * and until 9.59.0 the strategy stated the first while the runtime lived
6
- * under the second:
7
- *
8
- * - AWS's Converse API does support prompt caching for Claude models
9
- * (`cachePoint: { type: 'default' }` entries inserted into the `system` /
10
- * `tools` / `messages` arrays) and does report
11
- * `cacheReadInputTokens` / `cacheWriteInputTokens` in its usage block.
12
- * - `BedrockProvider` implements NEITHER half. It never reads
13
- * `req.cacheMarkers` (compare `AnthropicProvider`, which calls
14
- * `applyCacheMarkers`) and it builds `usage` as `{ input, output }` at
15
- * both its streaming and non-streaming sites. The string "cache" does
16
- * not appear in that file.
17
- *
18
- * So this strategy used to clamp markers onto a request field the adapter
19
- * then discarded, and report `markersApplied` for markers that never reached
20
- * a wire — a meter attached to a provider that cannot feed it. It now:
21
- *
22
- * - declares `enabled: false` (nothing here works end to end);
23
- * - passes the request through with `markersApplied: []`, and says why
24
- * once, in dev mode;
25
- * - answers `extractMetrics` with `not-applicable` and the reason.
26
- *
27
- * It stays REGISTERED rather than being deleted so that a Bedrock consumer
28
- * asking the registry what it got is told the truth by name, instead of
29
- * silently falling through to the wildcard NoOp and being left to guess.
30
- *
31
- * Note on Converse: the send half is genuinely a DIFFERENT wire from
32
- * Anthropic's `cache_control` block, so implementing it wants its own
33
- * `bedrockCacheWire.ts` beside `anthropicCacheWire.ts` — not a reuse. That
34
- * is the follow-up this file is waiting for; when it lands, flip `enabled`
35
- * and give `extractMetrics` the `readPortCacheUsage` body the Anthropic
36
- * strategy has.
37
- *
38
- * Auto-registers under provider name `'bedrock'`.
39
- */
40
- import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
41
- import { type Claim } from '../../lib/claim/claim.js';
42
- import type { LLMRequest } from '../../adapters/types.js';
43
- export declare class BedrockCacheStrategy implements CacheStrategy {
44
- readonly providerName = "bedrock";
45
- readonly capabilities: CacheCapabilities;
46
- prepareRequest(req: LLMRequest, candidates: readonly CacheMarker[], _ctx: CacheStrategyContext): Promise<{
47
- readonly request: LLMRequest;
48
- readonly markersApplied: readonly CacheMarker[];
49
- }>;
50
- /**
51
- * Always `not-applicable` — and that is a statement about THIS adapter,
52
- * not about Bedrock. AWS's Converse API does report
53
- * `cacheReadInputTokens` / `cacheWriteInputTokens`, but
54
- * `BedrockProvider` never reads them: its `usage` is built as
55
- * `{ input, output }` at both the streaming and non-streaming sites. So
56
- * `cacheRead`/`cacheWrite` are ALWAYS absent on this port, and an
57
- * `unknown` per call would read as a measurement that merely failed.
58
- * `not-applicable` says the true thing: nothing here can be measured
59
- * until the adapter grows the read half.
60
- */
61
- extractMetrics(_usage: CacheUsage | undefined): Claim<CacheMetrics>;
62
- }
63
- //# sourceMappingURL=BedrockCacheStrategy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BedrockCacheStrategy.d.ts","sourceRoot":"","sources":["../../../../src/cache/strategies/BedrockCacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAoB1D,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,YAAY,aAAa;IAClC,QAAQ,CAAC,YAAY,oBAAwB;IAEvC,cAAc,CAClB,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,SAAS,WAAW,EAAE,EAClC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAC;KACjD,CAAC;IAmBF;;;;;;;;;;OAUG;IACH,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CAMpE"}
@@ -1,48 +0,0 @@
1
- /**
2
- * OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
3
- *
4
- * OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
5
- * No client-side opt-in markers needed (and no way to influence
6
- * cache behavior from the client). The strategy:
7
- *
8
- * - **prepareRequest**: pass-through. We can't tell OpenAI what
9
- * to cache; they decide automatically. Markers are silently
10
- * dropped (the 80% case for OpenAI consumers is "I declared
11
- * cache: 'always' for my injections" — that's still meaningful
12
- * because (a) it's portable across providers, (b) for OpenAI
13
- * the auto-cache may still hit on stable prefixes regardless).
14
- * - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
15
- * from OpenAI's usage response so cacheRecorder can surface
16
- * hit rates / dollar savings.
17
- *
18
- * Auto-registers on module import for: 'openai', 'browser-openai'.
19
- *
20
- * Documentation note for consumers (Phase 12 docs): the `cache:`
21
- * directive on injection definitions is portable but has NO LOCAL
22
- * EFFECT on OpenAI runs — the provider auto-caches based on prefix
23
- * length. The directive still ships correctly with the agent and
24
- * lights up automatically when you swap to Anthropic / Bedrock.
25
- */
26
- import type { CacheCapabilities, CacheMarker, CacheMetrics, CacheStrategy, CacheStrategyContext, CacheUsage } from '../types.js';
27
- import { type Claim } from '../../lib/claim/claim.js';
28
- import type { LLMRequest } from '../../adapters/types.js';
29
- export declare class OpenAICacheStrategy implements CacheStrategy {
30
- readonly providerName = "openai";
31
- readonly capabilities: CacheCapabilities;
32
- prepareRequest(req: LLMRequest, _candidates: readonly CacheMarker[], _ctx: CacheStrategyContext): Promise<{
33
- readonly request: LLMRequest;
34
- readonly markersApplied: readonly CacheMarker[];
35
- }>;
36
- /**
37
- * Always `not-applicable`, for the same adapter reason as Bedrock:
38
- * OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
39
- * `OpenAIProvider` builds `usage` as `{ input, output }` at both its
40
- * streaming and non-streaming sites and never lifts the cached count
41
- * onto the port. OpenAI is the AUTO-caching provider, so this is the
42
- * costliest of the three gaps — it is named here rather than hidden
43
- * behind a per-call `unknown` that would suggest the measurement was
44
- * attempted and merely came back empty.
45
- */
46
- extractMetrics(_usage: CacheUsage | undefined): Claim<CacheMetrics>;
47
- }
48
- //# sourceMappingURL=OpenAICacheStrategy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenAICacheStrategy.d.ts","sourceRoot":"","sources":["../../../../src/cache/strategies/OpenAICacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,YAAY,YAAY;IACjC,QAAQ,CAAC,YAAY,oBAAuB;IAEtC,cAAc,CAClB,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,SAAS,WAAW,EAAE,EACnC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAC;KACjD,CAAC;IAKF;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;CAMpE"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Strategy registry — maps provider name → CacheStrategy.
3
- *
4
- * Auto-resolution at agent build time: agentfootprint inspects
5
- * `provider.name` and looks up the registered strategy for that
6
- * name. Falls back to `NoOpCacheStrategy` (registered under wildcard
7
- * `'*'`) when the provider isn't recognized.
8
- *
9
- * Phases shipping registered strategies:
10
- * - v2.6 Phase 6 (this phase): NoOp
11
- * - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
12
- * 'browser-anthropic')
13
- * - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
14
- * BedrockCacheStrategy ('bedrock')
15
- * - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
16
- *
17
- * Consumers can register their own strategy via
18
- * `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
19
- * or test mocks.
20
- */
21
- import type { CacheStrategy } from './types.js';
22
- /**
23
- * Look up a CacheStrategy by provider name. Falls back to the
24
- * wildcard NoOp strategy if no match.
25
- *
26
- * Lookup is case-insensitive on the provider name.
27
- */
28
- export declare function getDefaultCacheStrategy(providerName: string): CacheStrategy;
29
- /**
30
- * Register (or replace) a strategy for a provider name. Called by
31
- * strategy modules (v2.6 Phase 7+) at module load OR by consumers
32
- * needing a custom backend. Replacing an existing strategy is allowed
33
- * — the most-recent registration wins.
34
- */
35
- export declare function registerCacheStrategy(strategy: CacheStrategy): void;
36
- /**
37
- * Read-only view of registered strategy names. Useful for diagnostics
38
- * (e.g., logging "we have strategies for: anthropic, openai, *").
39
- */
40
- export declare function listRegisteredStrategies(): readonly string[];
41
- /**
42
- * Internal helper for tests: reset the registry to the default
43
- * (wildcard → NoOp only). Not exported from the public barrel.
44
- */
45
- export declare function _resetRegistryForTests(): void;
46
- //# sourceMappingURL=strategyRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategyRegistry.d.ts","sourceRoot":"","sources":["../../../src/cache/strategyRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYhD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAW3E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAEnE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,SAAS,MAAM,EAAE,CAE5D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C"}