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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentfootprint",
3
- "version": "9.136.0",
3
+ "version": "9.138.0",
4
4
  "description": "The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -356,10 +356,6 @@
356
356
  }
357
357
  },
358
358
  "sideEffects": [
359
- "./dist/index.js",
360
- "./dist/esm/index.js",
361
- "**/cache/strategies/*.js",
362
- "**/cache/index.js",
363
359
  "**/lib/injection-engine/index.js",
364
360
  "**/lib/injection-engine/devWarnHost.js"
365
361
  ],
@@ -1,90 +0,0 @@
1
- "use strict";
2
- /**
3
- * AnthropicCacheStrategy — translates agnostic CacheMarker[] to
4
- * Anthropic API's `cache_control: { type: 'ephemeral' }` markers.
5
- *
6
- * Anthropic-specific behaviors honored:
7
- * - **4-marker limit**: Anthropic allows ≤4 cache breakpoints per
8
- * request. Strategy clamps oversize candidate sets, keeping the
9
- * first 4 in slot order.
10
- * - **TTL mapping**: 'short' → default 5min ephemeral; 'long' →
11
- * `ttl: '1h'` (1-hour beta).
12
- * - **Provider-side hashing**: this strategy doesn't hash — Anthropic
13
- * keys cache by exact byte prefix server-side. We don't need
14
- * content hashes for the v2.6 surface; reserved for v2.7+ if a
15
- * pre-flight cache-warm-check API ships.
16
- *
17
- * What this strategy DOES vs DOESN'T do:
18
- * - DOES: clamp markers, attach to LLMRequest.cacheMarkers,
19
- * read cache metrics off the PORT usage the framework hands it
20
- * (`{ input, output, cacheRead?, cacheWrite? }`) — never off the raw
21
- * Anthropic wire, which the adapter has already normalised
22
- * - DOES NOT: rewrite the wire body. The provider
23
- * (BrowserAnthropicProvider) reads `cacheMarkers` and applies
24
- * `cache_control` blocks during body construction. Separation of
25
- * concerns: strategy decides WHAT to cache; provider knows HOW
26
- * to encode on its specific wire.
27
- *
28
- * Auto-registers in the strategy registry on module import for
29
- * provider names: 'anthropic', 'browser-anthropic'.
30
- */
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.AnthropicCacheStrategy = void 0;
33
- const portUsage_js_1 = require("../portUsage.js");
34
- const strategyRegistry_js_1 = require("../strategyRegistry.js");
35
- /** Anthropic enforces 4 cache breakpoints per request. */
36
- const ANTHROPIC_MAX_MARKERS = 4;
37
- const ANTHROPIC_CAPABILITIES = Object.freeze({
38
- enabled: true,
39
- maxMarkers: ANTHROPIC_MAX_MARKERS,
40
- ttls: ['short', 'long'],
41
- fields: ['system', 'tools', 'messages'],
42
- automatic: false,
43
- });
44
- class AnthropicCacheStrategy {
45
- providerName = 'anthropic';
46
- capabilities = ANTHROPIC_CAPABILITIES;
47
- async prepareRequest(req, candidates, ctx) {
48
- // Honor the agent-side kill switch even if reached this far —
49
- // belt-and-suspenders. CacheGate should have routed to no-markers
50
- // already, leaving `candidates` empty, but if a buggy gate lets
51
- // markers through with cachingDisabled=true, we still respect it.
52
- if (ctx.cachingDisabled) {
53
- return { request: req, markersApplied: [] };
54
- }
55
- if (candidates.length === 0) {
56
- return { request: req, markersApplied: [] };
57
- }
58
- // Clamp to Anthropic's 4-marker limit. Keep the first N in
59
- // slot order so we cover the most-stable prefixes (system /
60
- // always-on injections / tools) before less-stable trailing ones.
61
- const markersApplied = candidates.length <= ANTHROPIC_MAX_MARKERS
62
- ? candidates
63
- : candidates.slice(0, ANTHROPIC_MAX_MARKERS);
64
- const request = {
65
- ...req,
66
- cacheMarkers: markersApplied,
67
- };
68
- return { request, markersApplied };
69
- }
70
- extractMetrics(usage) {
71
- return (0, portUsage_js_1.readPortCacheUsage)(usage, 'the Anthropic adapter');
72
- }
73
- }
74
- exports.AnthropicCacheStrategy = AnthropicCacheStrategy;
75
- // Auto-register on module import. Both 'anthropic' (server-side) and
76
- // 'browser-anthropic' (browser fetch) providers map to this strategy.
77
- {
78
- const strategy = new AnthropicCacheStrategy();
79
- (0, strategyRegistry_js_1.registerCacheStrategy)(strategy);
80
- // Register the browser variant by cloning with the matching provider name.
81
- // Same behavior, different provider.name match-key.
82
- const browserStrategy = {
83
- providerName: 'browser-anthropic',
84
- capabilities: strategy.capabilities,
85
- prepareRequest: strategy.prepareRequest.bind(strategy),
86
- extractMetrics: strategy.extractMetrics.bind(strategy),
87
- };
88
- (0, strategyRegistry_js_1.registerCacheStrategy)(browserStrategy);
89
- }
90
- //# sourceMappingURL=AnthropicCacheStrategy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnthropicCacheStrategy.js","sourceRoot":"","sources":["../../../src/cache/strategies/AnthropicCacheStrategy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;;AAWH,kDAAqD;AAErD,gEAA+D;AAE/D,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,qBAAqB;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAkC;IACxD,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAiD;IACvF,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAa,sBAAsB;IACxB,YAAY,GAAG,WAAW,CAAC;IAC3B,YAAY,GAAG,sBAAsB,CAAC;IAE/C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,UAAkC,EAClC,GAAyB;QAKzB,8DAA8D;QAC9D,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,2DAA2D;QAC3D,4DAA4D;QAC5D,kEAAkE;QAClE,MAAM,cAAc,GAClB,UAAU,CAAC,MAAM,IAAI,qBAAqB;YACxC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAe;YAC1B,GAAG,GAAG;YACN,YAAY,EAAE,cAAc;SAC7B,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,KAA6B;QAC1C,OAAO,IAAA,iCAAkB,EAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAC5D,CAAC;CACF;AA1CD,wDA0CC;AAED,qEAAqE;AACrE,sEAAsE;AACtE,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC9C,IAAA,2CAAqB,EAAC,QAAQ,CAAC,CAAC;IAChC,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,eAAe,GAAkB;QACrC,YAAY,EAAE,mBAAmB;QACjC,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,IAAA,2CAAqB,EAAC,eAAe,CAAC,CAAC;AACzC,CAAC"}
@@ -1,97 +0,0 @@
1
- "use strict";
2
- /**
3
- * BedrockCacheStrategy — REGISTERED, AND HONEST ABOUT DOING NOTHING (9.59.0).
4
- *
5
- * What Bedrock supports and what THIS ADAPTER does are two different facts,
6
- * and until 9.59.0 the strategy stated the first while the runtime lived
7
- * under the second:
8
- *
9
- * - AWS's Converse API does support prompt caching for Claude models
10
- * (`cachePoint: { type: 'default' }` entries inserted into the `system` /
11
- * `tools` / `messages` arrays) and does report
12
- * `cacheReadInputTokens` / `cacheWriteInputTokens` in its usage block.
13
- * - `BedrockProvider` implements NEITHER half. It never reads
14
- * `req.cacheMarkers` (compare `AnthropicProvider`, which calls
15
- * `applyCacheMarkers`) and it builds `usage` as `{ input, output }` at
16
- * both its streaming and non-streaming sites. The string "cache" does
17
- * not appear in that file.
18
- *
19
- * So this strategy used to clamp markers onto a request field the adapter
20
- * then discarded, and report `markersApplied` for markers that never reached
21
- * a wire — a meter attached to a provider that cannot feed it. It now:
22
- *
23
- * - declares `enabled: false` (nothing here works end to end);
24
- * - passes the request through with `markersApplied: []`, and says why
25
- * once, in dev mode;
26
- * - answers `extractMetrics` with `not-applicable` and the reason.
27
- *
28
- * It stays REGISTERED rather than being deleted so that a Bedrock consumer
29
- * asking the registry what it got is told the truth by name, instead of
30
- * silently falling through to the wildcard NoOp and being left to guess.
31
- *
32
- * Note on Converse: the send half is genuinely a DIFFERENT wire from
33
- * Anthropic's `cache_control` block, so implementing it wants its own
34
- * `bedrockCacheWire.ts` beside `anthropicCacheWire.ts` — not a reuse. That
35
- * is the follow-up this file is waiting for; when it lands, flip `enabled`
36
- * and give `extractMetrics` the `readPortCacheUsage` body the Anthropic
37
- * strategy has.
38
- *
39
- * Auto-registers under provider name `'bedrock'`.
40
- */
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.BedrockCacheStrategy = void 0;
43
- const claim_js_1 = require("../../lib/claim/claim.js");
44
- const strategyRegistry_js_1 = require("../strategyRegistry.js");
45
- const footprintjs_1 = require("footprintjs");
46
- const BEDROCK_CAPABILITIES = Object.freeze({
47
- // `false`, and it is a statement about the ADAPTER, not about Bedrock.
48
- // Bedrock-Claude supports prompt caching; `BedrockProvider` implements
49
- // neither half of the contract (never sends markers, never reads cache
50
- // usage), so nothing this strategy could do would reach a wire. Saying
51
- // `true` here is what let a dead meter look alive.
52
- enabled: false,
53
- maxMarkers: 0,
54
- ttls: [],
55
- fields: [],
56
- automatic: false,
57
- });
58
- /** One warning per process, not one per call — the fact does not change. */
59
- let warnedAboutAdapterGap = false;
60
- class BedrockCacheStrategy {
61
- providerName = 'bedrock';
62
- capabilities = BEDROCK_CAPABILITIES;
63
- async prepareRequest(req, candidates, _ctx) {
64
- // Pass-through, ALWAYS. Writing `req.cacheMarkers` here would be writing
65
- // to a field `BedrockProvider` never reads, and returning a non-empty
66
- // `markersApplied` would put markers that never reached a wire onto the
67
- // recorder's record.
68
- if (candidates.length > 0 && !warnedAboutAdapterGap && (0, footprintjs_1.isDevMode)()) {
69
- warnedAboutAdapterGap = true;
70
- // eslint-disable-next-line no-console
71
- console.warn(`[agentfootprint] cache: ${candidates.length} cache marker(s) were declared for ` +
72
- `model "${req.model}", but the Bedrock adapter does not implement prompt caching — ` +
73
- `it never sends cachePoint entries and never reads cacheReadInputTokens off the ` +
74
- `Converse response. No markers were applied and no hit rate can be measured. ` +
75
- `Your cache: directives stay portable and light up on the Anthropic providers.`);
76
- }
77
- return { request: req, markersApplied: [] };
78
- }
79
- /**
80
- * Always `not-applicable` — and that is a statement about THIS adapter,
81
- * not about Bedrock. AWS's Converse API does report
82
- * `cacheReadInputTokens` / `cacheWriteInputTokens`, but
83
- * `BedrockProvider` never reads them: its `usage` is built as
84
- * `{ input, output }` at both the streaming and non-streaming sites. So
85
- * `cacheRead`/`cacheWrite` are ALWAYS absent on this port, and an
86
- * `unknown` per call would read as a measurement that merely failed.
87
- * `not-applicable` says the true thing: nothing here can be measured
88
- * until the adapter grows the read half.
89
- */
90
- extractMetrics(_usage) {
91
- return (0, claim_js_1.notApplicable)('the Bedrock adapter does not read cache usage off the Converse response, so no ' +
92
- 'cache tokens ever reach the port');
93
- }
94
- }
95
- exports.BedrockCacheStrategy = BedrockCacheStrategy;
96
- (0, strategyRegistry_js_1.registerCacheStrategy)(new BedrockCacheStrategy());
97
- //# 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,uDAAqE;AAErE,gEAA+D;AAC/D,6CAAwC;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,MAAa,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,IAAA,uBAAS,GAAE,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,IAAA,wBAAa,EAClB,iFAAiF;YAC/E,kCAAkC,CACrC,CAAC;IACJ,CAAC;CACF;AA/CD,oDA+CC;AAED,IAAA,2CAAqB,EAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
@@ -1,76 +0,0 @@
1
- "use strict";
2
- /**
3
- * OpenAICacheStrategy — metrics-only strategy for OpenAI providers.
4
- *
5
- * OpenAI auto-caches request prefixes ≥1024 tokens at 50% off.
6
- * No client-side opt-in markers needed (and no way to influence
7
- * cache behavior from the client). The strategy:
8
- *
9
- * - **prepareRequest**: pass-through. We can't tell OpenAI what
10
- * to cache; they decide automatically. Markers are silently
11
- * dropped (the 80% case for OpenAI consumers is "I declared
12
- * cache: 'always' for my injections" — that's still meaningful
13
- * because (a) it's portable across providers, (b) for OpenAI
14
- * the auto-cache may still hit on stable prefixes regardless).
15
- * - **extractMetrics**: reads `prompt_tokens_details.cached_tokens`
16
- * from OpenAI's usage response so cacheRecorder can surface
17
- * hit rates / dollar savings.
18
- *
19
- * Auto-registers on module import for: 'openai', 'browser-openai'.
20
- *
21
- * Documentation note for consumers (Phase 12 docs): the `cache:`
22
- * directive on injection definitions is portable but has NO LOCAL
23
- * EFFECT on OpenAI runs — the provider auto-caches based on prefix
24
- * length. The directive still ships correctly with the agent and
25
- * lights up automatically when you swap to Anthropic / Bedrock.
26
- */
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.OpenAICacheStrategy = void 0;
29
- const claim_js_1 = require("../../lib/claim/claim.js");
30
- const strategyRegistry_js_1 = require("../strategyRegistry.js");
31
- const OPENAI_CAPABILITIES = Object.freeze({
32
- // `enabled: true` because metrics ARE extracted (cacheRecorder shows
33
- // hit rates). The `automatic: true` flag tells consumers the markers
34
- // are inert here — OpenAI decides what to cache, not us.
35
- enabled: true,
36
- maxMarkers: 0,
37
- ttls: ['short'],
38
- fields: [],
39
- automatic: true,
40
- });
41
- class OpenAICacheStrategy {
42
- providerName = 'openai';
43
- capabilities = OPENAI_CAPABILITIES;
44
- async prepareRequest(req, _candidates, _ctx) {
45
- // Pass-through. OpenAI auto-caches; no opt-in needed.
46
- return { request: req, markersApplied: [] };
47
- }
48
- /**
49
- * Always `not-applicable`, for the same adapter reason as Bedrock:
50
- * OpenAI's wire DOES carry `prompt_tokens_details.cached_tokens`, but
51
- * `OpenAIProvider` builds `usage` as `{ input, output }` at both its
52
- * streaming and non-streaming sites and never lifts the cached count
53
- * onto the port. OpenAI is the AUTO-caching provider, so this is the
54
- * costliest of the three gaps — it is named here rather than hidden
55
- * behind a per-call `unknown` that would suggest the measurement was
56
- * attempted and merely came back empty.
57
- */
58
- extractMetrics(_usage) {
59
- return (0, claim_js_1.notApplicable)('the OpenAI adapter does not lift prompt_tokens_details.cached_tokens onto the port ' +
60
- 'usage, so no cache tokens ever reach this strategy');
61
- }
62
- }
63
- exports.OpenAICacheStrategy = OpenAICacheStrategy;
64
- // Auto-register for both server-side and browser variants.
65
- {
66
- const strategy = new OpenAICacheStrategy();
67
- (0, strategyRegistry_js_1.registerCacheStrategy)(strategy);
68
- const browserStrategy = {
69
- providerName: 'browser-openai',
70
- capabilities: strategy.capabilities,
71
- prepareRequest: strategy.prepareRequest.bind(strategy),
72
- extractMetrics: strategy.extractMetrics.bind(strategy),
73
- };
74
- (0, strategyRegistry_js_1.registerCacheStrategy)(browserStrategy);
75
- }
76
- //# 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,uDAAqE;AAErE,gEAA+D;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,MAAa,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,IAAA,wBAAa,EAClB,qFAAqF;YACnF,oDAAoD,CACvD,CAAC;IACJ,CAAC;CACF;AAhCD,kDAgCC;AAED,2DAA2D;AAC3D,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,IAAA,2CAAqB,EAAC,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,IAAA,2CAAqB,EAAC,eAAe,CAAC,CAAC;AACzC,CAAC"}
@@ -1,81 +0,0 @@
1
- "use strict";
2
- /**
3
- * Strategy registry — maps provider name → CacheStrategy.
4
- *
5
- * Auto-resolution at agent build time: agentfootprint inspects
6
- * `provider.name` and looks up the registered strategy for that
7
- * name. Falls back to `NoOpCacheStrategy` (registered under wildcard
8
- * `'*'`) when the provider isn't recognized.
9
- *
10
- * Phases shipping registered strategies:
11
- * - v2.6 Phase 6 (this phase): NoOp
12
- * - v2.6 Phase 7: AnthropicCacheStrategy ('anthropic',
13
- * 'browser-anthropic')
14
- * - v2.6 Phase 8: OpenAICacheStrategy ('openai', 'browser-openai'),
15
- * BedrockCacheStrategy ('bedrock')
16
- * - v2.7+ : GeminiCacheStrategy (handle-based, async, deferred)
17
- *
18
- * Consumers can register their own strategy via
19
- * `registerCacheStrategy(strategy)`. Useful for in-house LLM proxies
20
- * or test mocks.
21
- */
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- exports._resetRegistryForTests = exports.listRegisteredStrategies = exports.registerCacheStrategy = exports.getDefaultCacheStrategy = void 0;
24
- const NoOpCacheStrategy_js_1 = require("./strategies/NoOpCacheStrategy.js");
25
- /**
26
- * Registry singleton. Populated by individual strategy modules
27
- * importing this and calling `registerCacheStrategy` at module load
28
- * time, OR by the consumer at agent build time.
29
- *
30
- * Contains the wildcard `'*'` → NoOp entry by default; never empty.
31
- */
32
- const REGISTRY = new Map([['*', new NoOpCacheStrategy_js_1.NoOpCacheStrategy()]]);
33
- /**
34
- * Look up a CacheStrategy by provider name. Falls back to the
35
- * wildcard NoOp strategy if no match.
36
- *
37
- * Lookup is case-insensitive on the provider name.
38
- */
39
- function getDefaultCacheStrategy(providerName) {
40
- const exact = REGISTRY.get(providerName);
41
- if (exact !== undefined)
42
- return exact;
43
- const lower = providerName.toLowerCase();
44
- if (lower !== providerName) {
45
- const lowercased = REGISTRY.get(lower);
46
- if (lowercased !== undefined)
47
- return lowercased;
48
- }
49
- // Fallback wildcard always present (set at module load by registerDefaults).
50
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
51
- return REGISTRY.get('*');
52
- }
53
- exports.getDefaultCacheStrategy = getDefaultCacheStrategy;
54
- /**
55
- * Register (or replace) a strategy for a provider name. Called by
56
- * strategy modules (v2.6 Phase 7+) at module load OR by consumers
57
- * needing a custom backend. Replacing an existing strategy is allowed
58
- * — the most-recent registration wins.
59
- */
60
- function registerCacheStrategy(strategy) {
61
- REGISTRY.set(strategy.providerName, strategy);
62
- }
63
- exports.registerCacheStrategy = registerCacheStrategy;
64
- /**
65
- * Read-only view of registered strategy names. Useful for diagnostics
66
- * (e.g., logging "we have strategies for: anthropic, openai, *").
67
- */
68
- function listRegisteredStrategies() {
69
- return [...REGISTRY.keys()];
70
- }
71
- exports.listRegisteredStrategies = listRegisteredStrategies;
72
- /**
73
- * Internal helper for tests: reset the registry to the default
74
- * (wildcard → NoOp only). Not exported from the public barrel.
75
- */
76
- function _resetRegistryForTests() {
77
- REGISTRY.clear();
78
- REGISTRY.set('*', new NoOpCacheStrategy_js_1.NoOpCacheStrategy());
79
- }
80
- exports._resetRegistryForTests = _resetRegistryForTests;
81
- //# sourceMappingURL=strategyRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategyRegistry.js","sourceRoot":"","sources":["../../src/cache/strategyRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAGH,4EAAsE;AAEtE;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAwB,CAAC,CAAC,GAAG,EAAE,IAAI,wCAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AAElF;;;;;GAKG;AACH,SAAgB,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;AAXD,0DAWC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,QAAuB;IAC3D,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAFD,sDAEC;AAED;;;GAGG;AACH,SAAgB,wBAAwB;IACtC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAFD,4DAEC;AAED;;;GAGG;AACH,SAAgB,sBAAsB;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,wCAAiB,EAAE,CAAC,CAAC;AAC7C,CAAC;AAHD,wDAGC"}
@@ -1,41 +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
- }
@@ -1,86 +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 { readPortCacheUsage } from '../portUsage.js';
31
- import { registerCacheStrategy } from '../strategyRegistry.js';
32
- /** Anthropic enforces 4 cache breakpoints per request. */
33
- const ANTHROPIC_MAX_MARKERS = 4;
34
- const ANTHROPIC_CAPABILITIES = Object.freeze({
35
- enabled: true,
36
- maxMarkers: ANTHROPIC_MAX_MARKERS,
37
- ttls: ['short', 'long'],
38
- fields: ['system', 'tools', 'messages'],
39
- automatic: false,
40
- });
41
- export class AnthropicCacheStrategy {
42
- providerName = 'anthropic';
43
- capabilities = ANTHROPIC_CAPABILITIES;
44
- async prepareRequest(req, candidates, ctx) {
45
- // Honor the agent-side kill switch even if reached this far —
46
- // belt-and-suspenders. CacheGate should have routed to no-markers
47
- // already, leaving `candidates` empty, but if a buggy gate lets
48
- // markers through with cachingDisabled=true, we still respect it.
49
- if (ctx.cachingDisabled) {
50
- return { request: req, markersApplied: [] };
51
- }
52
- if (candidates.length === 0) {
53
- return { request: req, markersApplied: [] };
54
- }
55
- // Clamp to Anthropic's 4-marker limit. Keep the first N in
56
- // slot order so we cover the most-stable prefixes (system /
57
- // always-on injections / tools) before less-stable trailing ones.
58
- const markersApplied = candidates.length <= ANTHROPIC_MAX_MARKERS
59
- ? candidates
60
- : candidates.slice(0, ANTHROPIC_MAX_MARKERS);
61
- const request = {
62
- ...req,
63
- cacheMarkers: markersApplied,
64
- };
65
- return { request, markersApplied };
66
- }
67
- extractMetrics(usage) {
68
- return readPortCacheUsage(usage, 'the Anthropic adapter');
69
- }
70
- }
71
- // Auto-register on module import. Both 'anthropic' (server-side) and
72
- // 'browser-anthropic' (browser fetch) providers map to this strategy.
73
- {
74
- const strategy = new AnthropicCacheStrategy();
75
- registerCacheStrategy(strategy);
76
- // Register the browser variant by cloning with the matching provider name.
77
- // Same behavior, different provider.name match-key.
78
- const browserStrategy = {
79
- providerName: 'browser-anthropic',
80
- capabilities: strategy.capabilities,
81
- prepareRequest: strategy.prepareRequest.bind(strategy),
82
- extractMetrics: strategy.extractMetrics.bind(strategy),
83
- };
84
- registerCacheStrategy(browserStrategy);
85
- }
86
- //# sourceMappingURL=AnthropicCacheStrategy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnthropicCacheStrategy.js","sourceRoot":"","sources":["../../../../src/cache/strategies/AnthropicCacheStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAWH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,qBAAqB;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAkC;IACxD,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAiD;IACvF,SAAS,EAAE,KAAK;CACjB,CAAC,CAAC;AAEH,MAAM,OAAO,sBAAsB;IACxB,YAAY,GAAG,WAAW,CAAC;IAC3B,YAAY,GAAG,sBAAsB,CAAC;IAE/C,KAAK,CAAC,cAAc,CAClB,GAAe,EACf,UAAkC,EAClC,GAAyB;QAKzB,8DAA8D;QAC9D,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,2DAA2D;QAC3D,4DAA4D;QAC5D,kEAAkE;QAClE,MAAM,cAAc,GAClB,UAAU,CAAC,MAAM,IAAI,qBAAqB;YACxC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAe;YAC1B,GAAG,GAAG;YACN,YAAY,EAAE,cAAc;SAC7B,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,KAA6B;QAC1C,OAAO,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,qEAAqE;AACrE,sEAAsE;AACtE,CAAC;IACC,MAAM,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC9C,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,eAAe,GAAkB;QACrC,YAAY,EAAE,mBAAmB;QACjC,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,62 +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
- }