agentfootprint 10.0.0 → 10.1.1

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 (326) hide show
  1. package/AGENTS.md +1 -1
  2. package/CAPABILITIES.md +3 -1
  3. package/ai-instructions/claude-code/SKILL.md +1 -1
  4. package/dist/adapters/forcedToolChoice.js +79 -0
  5. package/dist/adapters/forcedToolChoice.js.map +1 -0
  6. package/dist/adapters/llm/AnthropicProvider.js +25 -63
  7. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  8. package/dist/adapters/llm/BedrockProvider.js +37 -8
  9. package/dist/adapters/llm/BedrockProvider.js.map +1 -1
  10. package/dist/adapters/llm/BrowserAnthropicProvider.js +29 -7
  11. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  12. package/dist/adapters/llm/BrowserOpenAIProvider.js +3 -0
  13. package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  14. package/dist/adapters/llm/FoundryProvider.js +3 -0
  15. package/dist/adapters/llm/FoundryProvider.js.map +1 -1
  16. package/dist/adapters/llm/InvokeModelGatewayProvider.js +28 -9
  17. package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  18. package/dist/adapters/llm/OpenAIProvider.js +3 -0
  19. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  20. package/dist/adapters/llm/anthropicMessageProjection.js +113 -0
  21. package/dist/adapters/llm/anthropicMessageProjection.js.map +1 -0
  22. package/dist/adapters/llm/anthropicMessagesWire.js +189 -213
  23. package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
  24. package/dist/adapters/llm/anthropicModels.js +187 -0
  25. package/dist/adapters/llm/anthropicModels.js.map +1 -0
  26. package/dist/adapters/llm/anthropicReplayLayout.js +291 -0
  27. package/dist/adapters/llm/anthropicReplayLayout.js.map +1 -0
  28. package/dist/adapters/llm/anthropicThinkingReplay.js +188 -0
  29. package/dist/adapters/llm/anthropicThinkingReplay.js.map +1 -0
  30. package/dist/adapters/llm/anthropicThinkingWire.js +16 -105
  31. package/dist/adapters/llm/anthropicThinkingWire.js.map +1 -1
  32. package/dist/adapters/requestRefusal.js +15 -0
  33. package/dist/adapters/requestRefusal.js.map +1 -0
  34. package/dist/adapters/types.js.map +1 -1
  35. package/dist/core/Agent.js +60 -30
  36. package/dist/core/Agent.js.map +1 -1
  37. package/dist/core/LLMCall.js +1 -1
  38. package/dist/core/LLMCall.js.map +1 -1
  39. package/dist/core/agent/AgentBuilder.js +3 -0
  40. package/dist/core/agent/AgentBuilder.js.map +1 -1
  41. package/dist/core/agent/assistantReplay.js +27 -0
  42. package/dist/core/agent/assistantReplay.js.map +1 -0
  43. package/dist/core/agent/buildAgentMessageApiChart.js +1 -1
  44. package/dist/core/agent/buildAgentMessageApiChart.js.map +1 -1
  45. package/dist/core/agent/buildDynamicAgentChart.js +8 -0
  46. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  47. package/dist/core/agent/buildMessageApiChart.js +1 -1
  48. package/dist/core/agent/buildMessageApiChart.js.map +1 -1
  49. package/dist/core/agent/providerTargets.js +14 -0
  50. package/dist/core/agent/providerTargets.js.map +1 -0
  51. package/dist/core/agent/stages/callLLM.js +48 -15
  52. package/dist/core/agent/stages/callLLM.js.map +1 -1
  53. package/dist/core/agent/stages/deliver.js +15 -13
  54. package/dist/core/agent/stages/deliver.js.map +1 -1
  55. package/dist/core/agent/stages/outputRetry.js +2 -1
  56. package/dist/core/agent/stages/outputRetry.js.map +1 -1
  57. package/dist/core/agent/stages/prepareFinal.js +2 -0
  58. package/dist/core/agent/stages/prepareFinal.js.map +1 -1
  59. package/dist/core/agent/stages/reliabilityExecution.js +29 -17
  60. package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
  61. package/dist/core/agent/stages/stepNudge.js +2 -1
  62. package/dist/core/agent/stages/stepNudge.js.map +1 -1
  63. package/dist/core/agent/stages/toolCalls.js +2 -0
  64. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  65. package/dist/core/agent/thinkingSupport.js +8 -6
  66. package/dist/core/agent/thinkingSupport.js.map +1 -1
  67. package/dist/core/outputSchema.js.map +1 -1
  68. package/dist/core/runCheckpoint.js +16 -2
  69. package/dist/core/runCheckpoint.js.map +1 -1
  70. package/dist/esm/adapters/forcedToolChoice.d.ts +66 -0
  71. package/dist/esm/adapters/forcedToolChoice.js +74 -0
  72. package/dist/esm/adapters/forcedToolChoice.js.map +1 -0
  73. package/dist/esm/adapters/llm/AnthropicProvider.d.ts +3 -14
  74. package/dist/esm/adapters/llm/AnthropicProvider.js +27 -65
  75. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  76. package/dist/esm/adapters/llm/BedrockProvider.d.ts +5 -0
  77. package/dist/esm/adapters/llm/BedrockProvider.js +37 -8
  78. package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
  79. package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +2 -0
  80. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +29 -7
  81. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  82. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +3 -0
  83. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  84. package/dist/esm/adapters/llm/FoundryProvider.js +3 -0
  85. package/dist/esm/adapters/llm/FoundryProvider.js.map +1 -1
  86. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.d.ts +2 -0
  87. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +28 -9
  88. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  89. package/dist/esm/adapters/llm/OpenAIProvider.js +3 -0
  90. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  91. package/dist/esm/adapters/llm/anthropicMessageProjection.d.ts +19 -0
  92. package/dist/esm/adapters/llm/anthropicMessageProjection.js +108 -0
  93. package/dist/esm/adapters/llm/anthropicMessageProjection.js.map +1 -0
  94. package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +13 -18
  95. package/dist/esm/adapters/llm/anthropicMessagesWire.js +184 -208
  96. package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
  97. package/dist/esm/adapters/llm/anthropicModels.d.ts +96 -0
  98. package/dist/esm/adapters/llm/anthropicModels.js +180 -0
  99. package/dist/esm/adapters/llm/anthropicModels.js.map +1 -0
  100. package/dist/esm/adapters/llm/anthropicReplayLayout.d.ts +23 -0
  101. package/dist/esm/adapters/llm/anthropicReplayLayout.js +282 -0
  102. package/dist/esm/adapters/llm/anthropicReplayLayout.js.map +1 -0
  103. package/dist/esm/adapters/llm/anthropicThinkingReplay.d.ts +21 -0
  104. package/dist/esm/adapters/llm/anthropicThinkingReplay.js +183 -0
  105. package/dist/esm/adapters/llm/anthropicThinkingReplay.js.map +1 -0
  106. package/dist/esm/adapters/llm/anthropicThinkingWire.d.ts +12 -36
  107. package/dist/esm/adapters/llm/anthropicThinkingWire.js +13 -101
  108. package/dist/esm/adapters/llm/anthropicThinkingWire.js.map +1 -1
  109. package/dist/esm/adapters/requestRefusal.d.ts +2 -0
  110. package/dist/esm/adapters/requestRefusal.js +11 -0
  111. package/dist/esm/adapters/requestRefusal.js.map +1 -0
  112. package/dist/esm/adapters/types.d.ts +31 -7
  113. package/dist/esm/adapters/types.js.map +1 -1
  114. package/dist/esm/core/Agent.d.ts +11 -1
  115. package/dist/esm/core/Agent.js +63 -33
  116. package/dist/esm/core/Agent.js.map +1 -1
  117. package/dist/esm/core/LLMCall.js +1 -1
  118. package/dist/esm/core/LLMCall.js.map +1 -1
  119. package/dist/esm/core/agent/AgentBuilder.js +3 -0
  120. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  121. package/dist/esm/core/agent/assistantReplay.d.ts +11 -0
  122. package/dist/esm/core/agent/assistantReplay.js +23 -0
  123. package/dist/esm/core/agent/assistantReplay.js.map +1 -0
  124. package/dist/esm/core/agent/buildAgentMessageApiChart.js +1 -1
  125. package/dist/esm/core/agent/buildAgentMessageApiChart.js.map +1 -1
  126. package/dist/esm/core/agent/buildDynamicAgentChart.js +8 -0
  127. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  128. package/dist/esm/core/agent/buildMessageApiChart.js +1 -1
  129. package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -1
  130. package/dist/esm/core/agent/providerTargets.d.ts +11 -0
  131. package/dist/esm/core/agent/providerTargets.js +10 -0
  132. package/dist/esm/core/agent/providerTargets.js.map +1 -0
  133. package/dist/esm/core/agent/stages/callLLM.d.ts +3 -1
  134. package/dist/esm/core/agent/stages/callLLM.js +48 -15
  135. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  136. package/dist/esm/core/agent/stages/deliver.d.ts +5 -0
  137. package/dist/esm/core/agent/stages/deliver.js +13 -12
  138. package/dist/esm/core/agent/stages/deliver.js.map +1 -1
  139. package/dist/esm/core/agent/stages/outputRetry.js +2 -1
  140. package/dist/esm/core/agent/stages/outputRetry.js.map +1 -1
  141. package/dist/esm/core/agent/stages/prepareFinal.js +2 -0
  142. package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
  143. package/dist/esm/core/agent/stages/reliabilityExecution.d.ts +8 -1
  144. package/dist/esm/core/agent/stages/reliabilityExecution.js +29 -17
  145. package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
  146. package/dist/esm/core/agent/stages/stepNudge.js +2 -1
  147. package/dist/esm/core/agent/stages/stepNudge.js.map +1 -1
  148. package/dist/esm/core/agent/stages/toolCalls.js +2 -0
  149. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  150. package/dist/esm/core/agent/thinkingSupport.d.ts +5 -2
  151. package/dist/esm/core/agent/thinkingSupport.js +8 -6
  152. package/dist/esm/core/agent/thinkingSupport.js.map +1 -1
  153. package/dist/esm/core/agent/types.d.ts +4 -0
  154. package/dist/esm/core/outputSchema.d.ts +2 -1
  155. package/dist/esm/core/outputSchema.js.map +1 -1
  156. package/dist/esm/core/runCheckpoint.d.ts +8 -0
  157. package/dist/esm/core/runCheckpoint.js +13 -1
  158. package/dist/esm/core/runCheckpoint.js.map +1 -1
  159. package/dist/esm/events/payloads.d.ts +10 -0
  160. package/dist/esm/events/registry.d.ts +3 -1
  161. package/dist/esm/events/registry.js +2 -0
  162. package/dist/esm/events/registry.js.map +1 -1
  163. package/dist/esm/lib/injection-engine/constrainedEnumPick.d.ts +1 -1
  164. package/dist/esm/lib/injection-engine/constrainedEnumPick.js +5 -2
  165. package/dist/esm/lib/injection-engine/constrainedEnumPick.js.map +1 -1
  166. package/dist/esm/lib/injection-engine/llmClassifier.d.ts +2 -2
  167. package/dist/esm/lib/injection-engine/llmClassifier.js +2 -2
  168. package/dist/esm/lib/time-travel/receipt.d.ts +10 -0
  169. package/dist/esm/lib/time-travel/receipt.js +2 -2
  170. package/dist/esm/lib/time-travel/receipt.js.map +1 -1
  171. package/dist/esm/lib/time-travel/servedView.d.ts +1 -1
  172. package/dist/esm/lib/time-travel/servedView.js +11 -0
  173. package/dist/esm/lib/time-travel/servedView.js.map +1 -1
  174. package/dist/esm/providers.d.ts +3 -0
  175. package/dist/esm/providers.js +2 -0
  176. package/dist/esm/providers.js.map +1 -1
  177. package/dist/esm/recorders/core/replayHooks.d.ts +10 -0
  178. package/dist/esm/recorders/core/replayHooks.js +65 -0
  179. package/dist/esm/recorders/core/replayHooks.js.map +1 -0
  180. package/dist/esm/recorders/core/resilienceHooks.d.ts +2 -1
  181. package/dist/esm/recorders/core/resilienceHooks.js +3 -1
  182. package/dist/esm/recorders/core/resilienceHooks.js.map +1 -1
  183. package/dist/esm/redaction/knownStrings.js +24 -0
  184. package/dist/esm/redaction/knownStrings.js.map +1 -1
  185. package/dist/esm/resilience/replayAttempt.d.ts +21 -0
  186. package/dist/esm/resilience/replayAttempt.js +96 -0
  187. package/dist/esm/resilience/replayAttempt.js.map +1 -0
  188. package/dist/esm/resilience/withCircuitBreaker.d.ts +2 -1
  189. package/dist/esm/resilience/withCircuitBreaker.js +5 -2
  190. package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
  191. package/dist/esm/resilience/withFallback.d.ts +3 -1
  192. package/dist/esm/resilience/withFallback.js +33 -32
  193. package/dist/esm/resilience/withFallback.js.map +1 -1
  194. package/dist/esm/resilience/withRetry.js +9 -3
  195. package/dist/esm/resilience/withRetry.js.map +1 -1
  196. package/dist/esm/thinking/dispatch.d.ts +9 -0
  197. package/dist/esm/thinking/dispatch.js +44 -0
  198. package/dist/esm/thinking/dispatch.js.map +1 -0
  199. package/dist/esm/thinking/errors.d.ts +3 -3
  200. package/dist/esm/thinking/errors.js +3 -3
  201. package/dist/esm/thinking/replay.d.ts +72 -0
  202. package/dist/esm/thinking/replay.js +20 -0
  203. package/dist/esm/thinking/replay.js.map +1 -0
  204. package/dist/esm/thinking/replayHistory.d.ts +18 -0
  205. package/dist/esm/thinking/replayHistory.js +56 -0
  206. package/dist/esm/thinking/replayHistory.js.map +1 -0
  207. package/dist/events/registry.js +2 -0
  208. package/dist/events/registry.js.map +1 -1
  209. package/dist/lib/injection-engine/constrainedEnumPick.js +5 -2
  210. package/dist/lib/injection-engine/constrainedEnumPick.js.map +1 -1
  211. package/dist/lib/injection-engine/llmClassifier.js +2 -2
  212. package/dist/lib/time-travel/receipt.js +2 -2
  213. package/dist/lib/time-travel/receipt.js.map +1 -1
  214. package/dist/lib/time-travel/servedView.js +11 -0
  215. package/dist/lib/time-travel/servedView.js.map +1 -1
  216. package/dist/providers.js +6 -1
  217. package/dist/providers.js.map +1 -1
  218. package/dist/recorders/core/replayHooks.js +69 -0
  219. package/dist/recorders/core/replayHooks.js.map +1 -0
  220. package/dist/recorders/core/resilienceHooks.js +3 -1
  221. package/dist/recorders/core/resilienceHooks.js.map +1 -1
  222. package/dist/redaction/knownStrings.js +24 -0
  223. package/dist/redaction/knownStrings.js.map +1 -1
  224. package/dist/resilience/replayAttempt.js +100 -0
  225. package/dist/resilience/replayAttempt.js.map +1 -0
  226. package/dist/resilience/withCircuitBreaker.js +5 -2
  227. package/dist/resilience/withCircuitBreaker.js.map +1 -1
  228. package/dist/resilience/withFallback.js +33 -32
  229. package/dist/resilience/withFallback.js.map +1 -1
  230. package/dist/resilience/withRetry.js +9 -3
  231. package/dist/resilience/withRetry.js.map +1 -1
  232. package/dist/thinking/dispatch.js +50 -0
  233. package/dist/thinking/dispatch.js.map +1 -0
  234. package/dist/thinking/errors.js +3 -3
  235. package/dist/thinking/replay.js +24 -0
  236. package/dist/thinking/replay.js.map +1 -0
  237. package/dist/thinking/replayHistory.js +63 -0
  238. package/dist/thinking/replayHistory.js.map +1 -0
  239. package/dist/types/adapters/forcedToolChoice.d.ts +67 -0
  240. package/dist/types/adapters/forcedToolChoice.d.ts.map +1 -0
  241. package/dist/types/adapters/llm/AnthropicProvider.d.ts +3 -14
  242. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  243. package/dist/types/adapters/llm/BedrockProvider.d.ts +5 -0
  244. package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
  245. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +2 -0
  246. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  247. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
  248. package/dist/types/adapters/llm/FoundryProvider.d.ts.map +1 -1
  249. package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts +2 -0
  250. package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
  251. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  252. package/dist/types/adapters/llm/anthropicMessageProjection.d.ts +20 -0
  253. package/dist/types/adapters/llm/anthropicMessageProjection.d.ts.map +1 -0
  254. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +13 -18
  255. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
  256. package/dist/types/adapters/llm/anthropicModels.d.ts +97 -0
  257. package/dist/types/adapters/llm/anthropicModels.d.ts.map +1 -0
  258. package/dist/types/adapters/llm/anthropicReplayLayout.d.ts +24 -0
  259. package/dist/types/adapters/llm/anthropicReplayLayout.d.ts.map +1 -0
  260. package/dist/types/adapters/llm/anthropicThinkingReplay.d.ts +22 -0
  261. package/dist/types/adapters/llm/anthropicThinkingReplay.d.ts.map +1 -0
  262. package/dist/types/adapters/llm/anthropicThinkingWire.d.ts +12 -36
  263. package/dist/types/adapters/llm/anthropicThinkingWire.d.ts.map +1 -1
  264. package/dist/types/adapters/requestRefusal.d.ts +3 -0
  265. package/dist/types/adapters/requestRefusal.d.ts.map +1 -0
  266. package/dist/types/adapters/types.d.ts +31 -7
  267. package/dist/types/adapters/types.d.ts.map +1 -1
  268. package/dist/types/core/Agent.d.ts +11 -1
  269. package/dist/types/core/Agent.d.ts.map +1 -1
  270. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  271. package/dist/types/core/agent/assistantReplay.d.ts +12 -0
  272. package/dist/types/core/agent/assistantReplay.d.ts.map +1 -0
  273. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  274. package/dist/types/core/agent/providerTargets.d.ts +12 -0
  275. package/dist/types/core/agent/providerTargets.d.ts.map +1 -0
  276. package/dist/types/core/agent/stages/callLLM.d.ts +3 -1
  277. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  278. package/dist/types/core/agent/stages/deliver.d.ts +5 -0
  279. package/dist/types/core/agent/stages/deliver.d.ts.map +1 -1
  280. package/dist/types/core/agent/stages/outputRetry.d.ts.map +1 -1
  281. package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
  282. package/dist/types/core/agent/stages/reliabilityExecution.d.ts +8 -1
  283. package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
  284. package/dist/types/core/agent/stages/stepNudge.d.ts.map +1 -1
  285. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  286. package/dist/types/core/agent/thinkingSupport.d.ts +5 -2
  287. package/dist/types/core/agent/thinkingSupport.d.ts.map +1 -1
  288. package/dist/types/core/agent/types.d.ts +4 -0
  289. package/dist/types/core/agent/types.d.ts.map +1 -1
  290. package/dist/types/core/outputSchema.d.ts +2 -1
  291. package/dist/types/core/outputSchema.d.ts.map +1 -1
  292. package/dist/types/core/runCheckpoint.d.ts +8 -0
  293. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  294. package/dist/types/events/payloads.d.ts +10 -0
  295. package/dist/types/events/payloads.d.ts.map +1 -1
  296. package/dist/types/events/registry.d.ts +3 -1
  297. package/dist/types/events/registry.d.ts.map +1 -1
  298. package/dist/types/lib/injection-engine/constrainedEnumPick.d.ts +1 -1
  299. package/dist/types/lib/injection-engine/constrainedEnumPick.d.ts.map +1 -1
  300. package/dist/types/lib/injection-engine/llmClassifier.d.ts +2 -2
  301. package/dist/types/lib/time-travel/receipt.d.ts +10 -0
  302. package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
  303. package/dist/types/lib/time-travel/servedView.d.ts +1 -1
  304. package/dist/types/lib/time-travel/servedView.d.ts.map +1 -1
  305. package/dist/types/providers.d.ts +3 -0
  306. package/dist/types/providers.d.ts.map +1 -1
  307. package/dist/types/recorders/core/replayHooks.d.ts +11 -0
  308. package/dist/types/recorders/core/replayHooks.d.ts.map +1 -0
  309. package/dist/types/recorders/core/resilienceHooks.d.ts +2 -1
  310. package/dist/types/recorders/core/resilienceHooks.d.ts.map +1 -1
  311. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  312. package/dist/types/resilience/replayAttempt.d.ts +22 -0
  313. package/dist/types/resilience/replayAttempt.d.ts.map +1 -0
  314. package/dist/types/resilience/withCircuitBreaker.d.ts +2 -1
  315. package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
  316. package/dist/types/resilience/withFallback.d.ts +3 -1
  317. package/dist/types/resilience/withFallback.d.ts.map +1 -1
  318. package/dist/types/resilience/withRetry.d.ts.map +1 -1
  319. package/dist/types/thinking/dispatch.d.ts +10 -0
  320. package/dist/types/thinking/dispatch.d.ts.map +1 -0
  321. package/dist/types/thinking/errors.d.ts +3 -3
  322. package/dist/types/thinking/replay.d.ts +73 -0
  323. package/dist/types/thinking/replay.d.ts.map +1 -0
  324. package/dist/types/thinking/replayHistory.d.ts +19 -0
  325. package/dist/types/thinking/replayHistory.d.ts.map +1 -0
  326. package/package.json +2 -2
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /**
3
+ * anthropicModels — what each Claude model takes on the Anthropic wire: ONE
4
+ * table of thinking, tool-choice and documented replay-prefix facts.
5
+ *
6
+ * Pattern: declaration + shared family lookup with explicit matching policies.
7
+ * Role: Outer ring. The facts the adapters declare and send from:
8
+ * - `thinking` — which thinking request the model takes (`'adaptive'`,
9
+ * `'budget'` or `'none'`; translated by `anthropicThinkingWire.ts`);
10
+ * - `forcedToolChoice` — whether it takes `tool_choice: { type: 'tool' }`
11
+ * (the `'tool-forced'` output strategy and the constrained pick send one).
12
+ *
13
+ * A model is added here, and nowhere else.
14
+ *
15
+ * The facts, from Anthropic's documentation (fetched 2026-10-09):
16
+ * - thinking per model — see `anthropicThinkingWire.ts` (unchanged from the
17
+ * 9.141.0 table);
18
+ * - Opus 5.5, Sonnet 5.5, Fable 5.1 and Mythos 5.1 reject forced tools:
19
+ * https://platform.claude.com/docs/en/build-with-claude/thinking ("Response
20
+ * prefill and forced tool use"); Haiku 5.5 accepts them:
21
+ * https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide.
22
+ * - Prefix binding is documented for Fable 5.1, Opus 5.5, Sonnet 5.5 and
23
+ * Haiku 5.5, not inferred for other families:
24
+ * https://platform.claude.com/docs/en/build-with-claude/preserved-thinking.
25
+ *
26
+ * @example
27
+ * anthropicModelFacts('claude-opus-5-5');
28
+ * // { thinking: 'adaptive', forcedToolChoice: false, thinkingPrefixBinding: true }
29
+ * anthropicModelFacts('us.anthropic.claude-haiku-4-5-20251001-v1:0');
30
+ * // { thinking: 'budget', forcedToolChoice: true }
31
+ * anthropicModelFacts('claude-opus-6'); // undefined — not in the table
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.anthropicTakesForcedToolChoice = exports.anthropicThinkingMode = exports.anthropicModelFacts = exports.anthropicModelFamily = exports.ANTHROPIC_THINKING_MODES = exports.ANTHROPIC_MODELS = void 0;
35
+ const row = (thinking, forcedToolChoice = true, thinkingPrefixBinding = false) => Object.freeze({
36
+ thinking,
37
+ forcedToolChoice,
38
+ ...(thinkingPrefixBinding && { thinkingPrefixBinding: true }),
39
+ });
40
+ /**
41
+ * The facts per Claude model family, keyed by the family id (the model id
42
+ * without a date, version or platform prefix — matching is
43
+ * {@link anthropicModelFamily}'s). The ONE table.
44
+ */
45
+ exports.ANTHROPIC_MODELS = Object.freeze({
46
+ // Adaptive only — `budget_tokens` is a 400 (Claude 4.7 and later). Opus 5.5,
47
+ // Sonnet 5.5, Fable 5.1 and Mythos 5.1 also reject a forced tool choice on
48
+ // every request.
49
+ 'claude-fable-5-1': row('adaptive', false, true),
50
+ 'claude-mythos-5-1': row('adaptive', false),
51
+ 'claude-fable-5': row('adaptive'),
52
+ 'claude-mythos-5': row('adaptive'),
53
+ 'claude-opus-5-5': row('adaptive', false, true),
54
+ 'claude-opus-5': row('adaptive'),
55
+ 'claude-opus-4-8': row('adaptive'),
56
+ 'claude-opus-4-7': row('adaptive'),
57
+ 'claude-sonnet-5-5': row('adaptive', false, true),
58
+ 'claude-sonnet-5': row('adaptive'),
59
+ 'claude-haiku-5-5': row('adaptive', true, true),
60
+ // Takes both. Adaptive: its thinking `display` defaults to "omitted", which
61
+ // a budget body cannot change, so a budget would return empty thinking.
62
+ 'claude-mythos-preview': row('adaptive'),
63
+ // Takes both, the budget deprecated but accepted: the budget is sent, as
64
+ // asked. On Opus 4.6 that means no thinking between tool calls — an app that
65
+ // wants it declares the model 'adaptive' with the adapter's `thinkingMode`.
66
+ 'claude-opus-4-6': row('budget'),
67
+ 'claude-sonnet-4-6': row('budget'),
68
+ // Budget only — `type: 'adaptive'` is a 400.
69
+ 'claude-opus-4-5': row('budget'),
70
+ 'claude-sonnet-4-5': row('budget'),
71
+ 'claude-haiku-4-5': row('budget'),
72
+ 'claude-opus-4-1': row('budget'),
73
+ 'claude-opus-4': row('budget'),
74
+ 'claude-sonnet-4': row('budget'),
75
+ 'claude-3-7-sonnet': row('budget'),
76
+ // No thinking. Retired on the Claude API; still served by some platforms
77
+ // (Vertex lists claude-3-5-haiku@20241022). Claude 1, 2 and Instant are
78
+ // served nowhere and are not listed.
79
+ 'claude-3-5-sonnet': row('none'),
80
+ 'claude-3-5-haiku': row('none'),
81
+ 'claude-3-opus': row('none'),
82
+ 'claude-3-sonnet': row('none'),
83
+ 'claude-3-haiku': row('none'),
84
+ });
85
+ /** The thinking column of {@link ANTHROPIC_MODELS}, family → mode. */
86
+ exports.ANTHROPIC_THINKING_MODES = Object.freeze(Object.fromEntries(Object.entries(exports.ANTHROPIC_MODELS).map(([family, f]) => [family, f.thinking])));
87
+ // The existing thinking lookup intentionally accepts decorated/dotted aliases.
88
+ // Preserve that compatibility, but never use it to assert hard model facts.
89
+ const THINKING_SUFFIX = /^(?:$|-0(?![0-9])|-\d{8}(?![0-9])|-latest(?![a-z0-9])|-v\d|[@:[])/;
90
+ const API_SUFFIX = /^(?:|-0|-\d{8}|-latest|@\d{8})$/;
91
+ const BEDROCK_SUFFIX = /^(?:|-\d{8})(?:-v\d+(?::\d+)?)?$/;
92
+ const BEDROCK_ID = /^(?:(?:us|eu|apac|global|jp|au)\.)?anthropic\.(claude-[a-z0-9:-]+)$/;
93
+ const FOUNDATION_ARN = /^arn:aws(?:-us-gov|-cn)?:bedrock:[a-z0-9-]+::foundation-model\/([^/]+)$/;
94
+ const PROFILE_ARN = /^arn:aws(?:-us-gov|-cn)?:bedrock:[a-z0-9-]+:\d{12}:inference-profile\/([^/]+)$/;
95
+ const VERTEX_ID = /^(?:projects\/[a-z0-9-]+\/locations\/[a-z0-9-]+\/)?publishers\/anthropic\/models\/(claude-[a-z0-9@-]+)$/;
96
+ /** Longest match keeps the one table independent of declaration order. */
97
+ function familyMatching(name, suffix) {
98
+ let match;
99
+ for (const family of Object.keys(exports.ANTHROPIC_MODELS)) {
100
+ if (!name.startsWith(family) || !suffix.test(name.slice(family.length)))
101
+ continue;
102
+ if (match === undefined || family.length > match.length)
103
+ match = family;
104
+ }
105
+ return match;
106
+ }
107
+ /**
108
+ * The table family a Claude model id names, or `undefined` when none does.
109
+ *
110
+ * Accepts complete Claude API, Bedrock foundation/system-profile and Vertex
111
+ * model identifiers. Application profiles, deployment names and router aliases
112
+ * are opaque: a Claude-looking substring is not evidence of the served model.
113
+ * This recognizes a family, not its availability in a particular region.
114
+ */
115
+ function anthropicModelFamily(model) {
116
+ // Besides refusing decorated aliases, this prevents `$` in the anchored
117
+ // matchers from accepting a final newline as part of a valid identifier.
118
+ if (model !== model.trim())
119
+ return undefined;
120
+ if (model.startsWith('claude-'))
121
+ return familyMatching(model, API_SUFFIX);
122
+ const vertex = VERTEX_ID.exec(model);
123
+ if (vertex)
124
+ return familyMatching(vertex[1], API_SUFFIX);
125
+ const arn = FOUNDATION_ARN.exec(model) ?? PROFILE_ARN.exec(model);
126
+ const bedrock = BEDROCK_ID.exec(arn ? arn[1] : model);
127
+ return bedrock ? familyMatching(bedrock[1], BEDROCK_SUFFIX) : undefined;
128
+ }
129
+ exports.anthropicModelFamily = anthropicModelFamily;
130
+ /** Compatibility only: do not use this permissive lookup for hard refusals. */
131
+ function thinkingFamily(model) {
132
+ const id = model.toLowerCase();
133
+ const start = id.indexOf('claude-');
134
+ if (start < 0)
135
+ return undefined;
136
+ return familyMatching(id.slice(start).replace(/\./g, '-'), THINKING_SUFFIX);
137
+ }
138
+ /** The table's facts for a model id, or `undefined` for an id it does not know. */
139
+ function anthropicModelFacts(model) {
140
+ const family = anthropicModelFamily(model);
141
+ return family === undefined ? undefined : exports.ANTHROPIC_MODELS[family];
142
+ }
143
+ exports.anthropicModelFacts = anthropicModelFacts;
144
+ /**
145
+ * The thinking mode a Claude model id takes on the Anthropic Messages wire.
146
+ *
147
+ * An id no family matches answers `'adaptive'` — what every Claude model since
148
+ * 4.7 takes (they reject a budget), so a model released after this table
149
+ * thinks instead of failing with a 400.
150
+ *
151
+ * The cost of that default, named: an id that does not say which model it
152
+ * serves — an application-inference-profile ARN, a gateway alias, a
153
+ * deployment name — is read as adaptive too, and a budget-only model behind
154
+ * it (Claude 4.5 and earlier) refuses adaptive. The adapters take a
155
+ * `thinkingMode` option for exactly that (`anthropicThinkingWire.ts` ·
156
+ * `thinkingModeWith`).
157
+ *
158
+ * Historical dotted and decorated aliases retain their existing thinking
159
+ * lookup. That compatibility behavior is not a hard fact about the model
160
+ * behind an opaque deployment and does not control forced-tool refusals.
161
+ *
162
+ * @example
163
+ * anthropicThinkingMode('claude-opus-5-5'); // 'adaptive'
164
+ * anthropicThinkingMode('us.anthropic.claude-sonnet-4-5-20250929-v1:0'); // 'budget'
165
+ * anthropicThinkingMode('claude-3-5-haiku@20241022'); // 'none'
166
+ * anthropicThinkingMode('claude-opus-6'); // 'adaptive' — unknown
167
+ */
168
+ function anthropicThinkingMode(model) {
169
+ const family = thinkingFamily(model);
170
+ return family === undefined ? 'adaptive' : exports.ANTHROPIC_MODELS[family].thinking;
171
+ }
172
+ exports.anthropicThinkingMode = anthropicThinkingMode;
173
+ /**
174
+ * Whether a Claude model id takes a forced tool choice. An id the table does
175
+ * not know is NOT refused: the newest models disagree (Haiku 5.5 takes one,
176
+ * Opus 5.5 does not), so the table makes no claim it cannot source, and the
177
+ * API's own 400 names `tool_choice` until the model has a row.
178
+ *
179
+ * @example
180
+ * anthropicTakesForcedToolChoice('claude-opus-5-5'); // false
181
+ * anthropicTakesForcedToolChoice('anthropic.claude-haiku-5-5'); // true
182
+ */
183
+ function anthropicTakesForcedToolChoice(model) {
184
+ return anthropicModelFacts(model)?.forcedToolChoice ?? true;
185
+ }
186
+ exports.anthropicTakesForcedToolChoice = anthropicTakesForcedToolChoice;
187
+ //# sourceMappingURL=anthropicModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropicModels.js","sourceRoot":"","sources":["../../../src/adapters/llm/anthropicModels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.omitAnthropicThinking = exports.restoreAnthropicReplay = exports.captureAnthropicResponseReplay = exports.lossyAnthropicReplay = exports.captureAnthropicReplay = exports.replayDigest = void 0;
4
+ const canonicalJson_js_1 = require("../../lib/canonicalJson.js");
5
+ const sha256_js_1 = require("../../lib/time-travel/sha256.js");
6
+ /** One domain-separated digest owner for response fidelity and request binding. */
7
+ function replayDigest(value, salt) {
8
+ return (0, sha256_js_1.sha256Hex)(`agentfootprint/anthropic-replay/1\u0000${salt}\u0000${(0, canonicalJson_js_1.canonicalJson)(value)}`);
9
+ }
10
+ exports.replayDigest = replayDigest;
11
+ /** Capture only a complete, representable response; unknown fields are not silently lost. */
12
+ function captureAnthropicReplay(content, id, stopReason, binding) {
13
+ if (typeof id !== 'string' || id.length === 0 || typeof stopReason !== 'string')
14
+ return undefined;
15
+ const layout = [];
16
+ let thinking = 0;
17
+ let tools = 0;
18
+ for (const block of content) {
19
+ if (!isSupportedBlock(block))
20
+ return undefined;
21
+ switch (block.type) {
22
+ case 'text':
23
+ layout.push({ type: 'text', length: block.text.length, ...textMetadata(block) });
24
+ break;
25
+ case 'thinking':
26
+ case 'redacted_thinking':
27
+ layout.push({ type: 'thinking', index: thinking++ });
28
+ break;
29
+ case 'tool_use':
30
+ layout.push({ type: 'tool', index: tools++, ...toolMetadata(block) });
31
+ break;
32
+ }
33
+ }
34
+ try {
35
+ return {
36
+ version: 1,
37
+ protocol: 'anthropic-messages',
38
+ id,
39
+ layout,
40
+ stopReason,
41
+ contentDigest: replayDigest(content, binding?.salt ?? id),
42
+ ...(binding !== undefined && { binding }),
43
+ };
44
+ }
45
+ catch {
46
+ // Non-JSON tool arguments cannot supply an exact saved-response proof.
47
+ return undefined;
48
+ }
49
+ }
50
+ exports.captureAnthropicReplay = captureAnthropicReplay;
51
+ /** Durable negative evidence, without retaining unsupported response values. */
52
+ function lossyAnthropicReplay(content, id, stopReason, binding, observedThinking = false) {
53
+ let thinking = 0;
54
+ const layout = content.flatMap((block) => block.type === 'thinking' || block.type === 'redacted_thinking'
55
+ ? [{ type: 'thinking', index: thinking++ }]
56
+ : []);
57
+ // An orphan delta witnesses thinking even when no block can be recovered.
58
+ // This negative marker states presence only, not a reconstructed value/count.
59
+ if (layout.length === 0 && observedThinking)
60
+ layout.push({ type: 'thinking', index: 0 });
61
+ return {
62
+ version: 1,
63
+ protocol: 'anthropic-messages',
64
+ id: typeof id === 'string' ? id : '',
65
+ // Even a block normalization could not keep must remain known to policy.
66
+ layout,
67
+ stopReason: typeof stopReason === 'string' ? stopReason : '',
68
+ contentDigest: '',
69
+ lossy: true,
70
+ ...(binding !== undefined && { binding }),
71
+ };
72
+ }
73
+ exports.lossyAnthropicReplay = lossyAnthropicReplay;
74
+ /** Missing identities on old text-only mocks are unknown, not known content loss. */
75
+ function captureAnthropicResponseReplay(content, id, stopReason, binding) {
76
+ const captured = captureAnthropicReplay(content, id, stopReason, binding);
77
+ if (captured !== undefined)
78
+ return captured;
79
+ if (!id &&
80
+ content.every((block) => isSupportedBlock(block) && block.type !== 'thinking' && block.type !== 'redacted_thinking')) {
81
+ try {
82
+ (0, canonicalJson_js_1.canonicalJson)(content);
83
+ return undefined;
84
+ }
85
+ catch {
86
+ /* A non-JSON value is known loss, not a missing identity. */
87
+ }
88
+ }
89
+ return lossyAnthropicReplay(content, id, stopReason, binding);
90
+ }
91
+ exports.captureAnthropicResponseReplay = captureAnthropicResponseReplay;
92
+ /** Reassemble current fields only; no stored original values can be recovered. */
93
+ function reconstructCurrentLayout(message) {
94
+ const replay = message.replay;
95
+ if (replay?.version !== 1 ||
96
+ replay.protocol !== 'anthropic-messages' ||
97
+ replay.lossy === true ||
98
+ typeof replay.id !== 'string' ||
99
+ replay.id.length === 0 ||
100
+ !Array.isArray(replay.layout) ||
101
+ (replay.thinkingRetired === true && (message.thinkingBlocks?.length ?? 0) > 0) ||
102
+ typeof message.content !== 'string')
103
+ return undefined;
104
+ const blocks = [];
105
+ const thinking = message.thinkingBlocks ?? [];
106
+ const tools = message.toolCalls ?? [];
107
+ let textOffset = 0;
108
+ let thinkingIndex = 0;
109
+ let toolIndex = 0;
110
+ for (const part of replay.layout) {
111
+ if (part === null || typeof part !== 'object')
112
+ return undefined;
113
+ if (part.type === 'text') {
114
+ const metadata = textMetadata(part);
115
+ if (metadata === undefined ||
116
+ !hasOnlyFields(part, ['type', 'length', 'citations']) ||
117
+ !Number.isSafeInteger(part.length) ||
118
+ part.length < 0 ||
119
+ part.length > message.content.length - textOffset)
120
+ return undefined;
121
+ blocks.push({
122
+ type: 'text',
123
+ text: message.content.slice(textOffset, textOffset + part.length),
124
+ ...metadata,
125
+ });
126
+ textOffset += part.length;
127
+ }
128
+ else if (part.type === 'thinking') {
129
+ if (part.index !== thinkingIndex || !hasOnlyFields(part, ['type', 'index']))
130
+ return undefined;
131
+ const block = thinking[thinkingIndex++];
132
+ if (!block || typeof block.content !== 'string')
133
+ return undefined;
134
+ if (block.type === 'redacted_thinking') {
135
+ if (block.content !== '' || typeof block.signature !== 'string')
136
+ return undefined;
137
+ blocks.push({ type: 'redacted_thinking', data: block.signature });
138
+ }
139
+ else if (block.type === 'thinking') {
140
+ if (block.signature !== undefined && typeof block.signature !== 'string')
141
+ return undefined;
142
+ blocks.push({
143
+ type: 'thinking',
144
+ thinking: block.content,
145
+ ...(block.signature !== undefined && { signature: block.signature }),
146
+ });
147
+ }
148
+ else
149
+ return undefined;
150
+ }
151
+ else if (part.type === 'tool') {
152
+ const metadata = toolMetadata(part);
153
+ if (metadata === undefined ||
154
+ part.index !== toolIndex ||
155
+ !hasOnlyFields(part, ['type', 'index', 'caller', 'toolset_name']))
156
+ return undefined;
157
+ const tool = tools[toolIndex++];
158
+ if (!tool ||
159
+ typeof tool.id !== 'string' ||
160
+ typeof tool.name !== 'string' ||
161
+ tool.args === null ||
162
+ typeof tool.args !== 'object' ||
163
+ Array.isArray(tool.args))
164
+ return undefined;
165
+ blocks.push({
166
+ type: 'tool_use',
167
+ id: tool.id,
168
+ name: tool.name,
169
+ input: { ...tool.args },
170
+ ...metadata,
171
+ });
172
+ }
173
+ else
174
+ return undefined;
175
+ }
176
+ if (textOffset !== message.content.length ||
177
+ thinkingIndex !== thinking.length ||
178
+ toolIndex !== tools.length)
179
+ return undefined;
180
+ return blocks;
181
+ }
182
+ /** Exact replay additionally requires the original full-content digest. */
183
+ function restoreAnthropicReplay(message) {
184
+ const blocks = reconstructCurrentLayout(message);
185
+ const replay = message.replay;
186
+ if (blocks === undefined || replay === undefined)
187
+ return undefined;
188
+ try {
189
+ return replayDigest(blocks, replay.binding?.salt ?? replay.id) === replay.contentDigest
190
+ ? blocks
191
+ : undefined;
192
+ }
193
+ catch {
194
+ return undefined;
195
+ }
196
+ }
197
+ exports.restoreAnthropicReplay = restoreAnthropicReplay;
198
+ /**
199
+ * Retire thinking without changing the remaining text/tool order. Invalid or
200
+ * edited history is projected as it is now; there is no stored text to revive.
201
+ */
202
+ function omitAnthropicThinking(message) {
203
+ // Current signatures/text may have changed, which is WHY omission is needed.
204
+ // A valid layout still describes their order without resurrecting originals.
205
+ // Known loss or incompatible counts never gains a replacement fidelity proof.
206
+ const content = reconstructCurrentLayout(message);
207
+ const { thinkingBlocks: _thinking, replay, ...rest } = message;
208
+ void _thinking;
209
+ if (replay === undefined)
210
+ return rest;
211
+ const retained = content?.filter((block) => block.type !== 'thinking' && block.type !== 'redacted_thinking');
212
+ const replacement = retained === undefined
213
+ ? undefined
214
+ : captureAnthropicReplay(retained, replay.id, replay.stopReason, replay.binding);
215
+ return { ...rest, replay: { ...(replacement ?? replay), thinkingRetired: true } };
216
+ }
217
+ exports.omitAnthropicThinking = omitAnthropicThinking;
218
+ const owns = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
219
+ const hasOnlyFields = (value, fields) => Object.keys(value).every((key) => fields.includes(key));
220
+ /** Preserve absent/null/empty distinctly. Citation contents require a different carrier. */
221
+ function textMetadata(value) {
222
+ if (!owns(value, 'citations'))
223
+ return {};
224
+ if (value.citations === null)
225
+ return { citations: null };
226
+ if (Array.isArray(value.citations) &&
227
+ value.citations.length === 0 &&
228
+ Object.keys(value.citations).length === 0)
229
+ return { citations: [] };
230
+ return undefined;
231
+ }
232
+ /** Only direct calls with no named toolset are representable; never retain an open metadata bag. */
233
+ function toolMetadata(value) {
234
+ const metadata = {};
235
+ if (owns(value, 'caller')) {
236
+ const caller = value.caller;
237
+ if (caller === null ||
238
+ typeof caller !== 'object' ||
239
+ Array.isArray(caller) ||
240
+ !owns(caller, 'type') ||
241
+ !('type' in caller) ||
242
+ caller.type !== 'direct' ||
243
+ !hasOnlyFields(caller, ['type']))
244
+ return undefined;
245
+ metadata.caller = { type: 'direct' };
246
+ }
247
+ if (owns(value, 'toolset_name')) {
248
+ if (value.toolset_name !== null)
249
+ return undefined;
250
+ metadata.toolset_name = null;
251
+ }
252
+ return metadata;
253
+ }
254
+ /** Guard exact represented fields; populated citations/server-tool blocks need another carrier. */
255
+ function isSupportedBlock(block) {
256
+ if (block === null || typeof block !== 'object')
257
+ return false;
258
+ let fields;
259
+ switch (block.type) {
260
+ case 'text':
261
+ if (typeof block.text !== 'string' || textMetadata(block) === undefined)
262
+ return false;
263
+ fields = ['type', 'text', 'citations'];
264
+ break;
265
+ case 'thinking':
266
+ if (typeof block.thinking !== 'string' ||
267
+ (block.signature !== undefined && typeof block.signature !== 'string'))
268
+ return false;
269
+ fields = ['type', 'thinking', 'signature'];
270
+ break;
271
+ case 'redacted_thinking':
272
+ if (typeof block.data !== 'string')
273
+ return false;
274
+ fields = ['type', 'data'];
275
+ break;
276
+ case 'tool_use':
277
+ if (typeof block.id !== 'string' ||
278
+ typeof block.name !== 'string' ||
279
+ block.input === null ||
280
+ typeof block.input !== 'object' ||
281
+ Array.isArray(block.input) ||
282
+ toolMetadata(block) === undefined)
283
+ return false;
284
+ fields = ['type', 'id', 'name', 'input', 'caller', 'toolset_name'];
285
+ break;
286
+ default:
287
+ return false;
288
+ }
289
+ return hasOnlyFields(block, fields);
290
+ }
291
+ //# sourceMappingURL=anthropicReplayLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropicReplayLayout.js","sourceRoot":"","sources":["../../../src/adapters/llm/anthropicReplayLayout.ts"],"names":[],"mappings":"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"}