agentfootprint 10.3.1 → 10.4.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 (414) hide show
  1. package/AGENTS.md +2 -2
  2. package/CAPABILITIES.md +6 -0
  3. package/README.md +44 -0
  4. package/ai-instructions/claude-code/SKILL.md +2 -2
  5. package/dist/adapters/mcp/agentcoreRuntime/errorType.js +24 -0
  6. package/dist/adapters/mcp/agentcoreRuntime/errorType.js.map +1 -0
  7. package/dist/adapters/mcp/agentcoreRuntime/invoke.js +265 -0
  8. package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -0
  9. package/dist/adapters/mcp/agentcoreRuntime/safeAnswer.js +415 -0
  10. package/dist/adapters/mcp/agentcoreRuntime/safeAnswer.js.map +1 -0
  11. package/dist/adapters/mcp/agentcoreRuntime/session.js +179 -0
  12. package/dist/adapters/mcp/agentcoreRuntime/session.js.map +1 -0
  13. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js +117 -0
  14. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -0
  15. package/dist/adapters/mcp/agentcoreRuntime/strictJson.js +220 -0
  16. package/dist/adapters/mcp/agentcoreRuntime/strictJson.js.map +1 -0
  17. package/dist/adapters/mcp/agentcoreRuntime/transport.js +204 -0
  18. package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -0
  19. package/dist/adapters/memory/agentcore.js +435 -20
  20. package/dist/adapters/memory/agentcore.js.map +1 -1
  21. package/dist/adapters/memory/memoryBank.js +16 -3
  22. package/dist/adapters/memory/memoryBank.js.map +1 -1
  23. package/dist/adapters/memory/pgVector.js +10 -4
  24. package/dist/adapters/memory/pgVector.js.map +1 -1
  25. package/dist/adapters/memory/redis.js +11 -3
  26. package/dist/adapters/memory/redis.js.map +1 -1
  27. package/dist/adapters/memory/s3Vectors.js +8 -3
  28. package/dist/adapters/memory/s3Vectors.js.map +1 -1
  29. package/dist/adapters/memory/sqliteVector.js +10 -4
  30. package/dist/adapters/memory/sqliteVector.js.map +1 -1
  31. package/dist/ag-ui/adapter.js +71 -0
  32. package/dist/ag-ui/adapter.js.map +1 -0
  33. package/dist/ag-ui/framing.js +66 -0
  34. package/dist/ag-ui/framing.js.map +1 -0
  35. package/dist/ag-ui/frontendTools.js +69 -0
  36. package/dist/ag-ui/frontendTools.js.map +1 -0
  37. package/dist/ag-ui/ids.js +54 -0
  38. package/dist/ag-ui/ids.js.map +1 -0
  39. package/dist/ag-ui/index.js +27 -0
  40. package/dist/ag-ui/index.js.map +1 -0
  41. package/dist/ag-ui/request.js +356 -0
  42. package/dist/ag-ui/request.js.map +1 -0
  43. package/dist/ag-ui/serializer.js +899 -0
  44. package/dist/ag-ui/serializer.js.map +1 -0
  45. package/dist/ag-ui/types.js +22 -0
  46. package/dist/ag-ui/types.js.map +1 -0
  47. package/dist/core/Agent.js +38 -5
  48. package/dist/core/Agent.js.map +1 -1
  49. package/dist/core/RunnerBase.js +16 -2
  50. package/dist/core/RunnerBase.js.map +1 -1
  51. package/dist/core/agent/buildAgentChart.js +4 -0
  52. package/dist/core/agent/buildAgentChart.js.map +1 -1
  53. package/dist/core/agent/buildDynamicAgentChart.js +4 -0
  54. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  55. package/dist/core/agent/callerIdentity.js +2 -1
  56. package/dist/core/agent/callerIdentity.js.map +1 -1
  57. package/dist/core/agent/stages/routeTurn.js +3 -3
  58. package/dist/core/agent/stages/routeTurn.js.map +1 -1
  59. package/dist/core/agent/stages/seed.js +49 -8
  60. package/dist/core/agent/stages/seed.js.map +1 -1
  61. package/dist/core/agent/stages/timeLayer.js +2 -2
  62. package/dist/core/agent/stages/timeLayer.js.map +1 -1
  63. package/dist/core/agent/stages/toolCalls.js +26 -5
  64. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  65. package/dist/core/memberRun.js +244 -0
  66. package/dist/core/memberRun.js.map +1 -0
  67. package/dist/core/slots/buildToolsSlot.js +1 -1
  68. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  69. package/dist/core-flow/Conditional.js +29 -8
  70. package/dist/core-flow/Conditional.js.map +1 -1
  71. package/dist/core-flow/Graph.js +38 -13
  72. package/dist/core-flow/Graph.js.map +1 -1
  73. package/dist/core-flow/Loop.js +29 -9
  74. package/dist/core-flow/Loop.js.map +1 -1
  75. package/dist/core-flow/Parallel.js +35 -14
  76. package/dist/core-flow/Parallel.js.map +1 -1
  77. package/dist/core-flow/Sequence.js +29 -8
  78. package/dist/core-flow/Sequence.js.map +1 -1
  79. package/dist/core-flow/Workflow.js +34 -10
  80. package/dist/core-flow/Workflow.js.map +1 -1
  81. package/dist/doors/ag-ui.js +36 -0
  82. package/dist/doors/ag-ui.js.map +1 -0
  83. package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.d.ts +12 -0
  84. package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.js +20 -0
  85. package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.js.map +1 -0
  86. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +116 -0
  87. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +260 -0
  88. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -0
  89. package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts +49 -0
  90. package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.js +409 -0
  91. package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.js.map +1 -0
  92. package/dist/esm/adapters/mcp/agentcoreRuntime/session.d.ts +80 -0
  93. package/dist/esm/adapters/mcp/agentcoreRuntime/session.js +175 -0
  94. package/dist/esm/adapters/mcp/agentcoreRuntime/session.js.map +1 -0
  95. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +61 -0
  96. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js +112 -0
  97. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -0
  98. package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.d.ts +37 -0
  99. package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.js +215 -0
  100. package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.js.map +1 -0
  101. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.d.ts +176 -0
  102. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +199 -0
  103. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -0
  104. package/dist/esm/adapters/memory/agentcore.d.ts +152 -7
  105. package/dist/esm/adapters/memory/agentcore.js +433 -19
  106. package/dist/esm/adapters/memory/agentcore.js.map +1 -1
  107. package/dist/esm/adapters/memory/memoryBank.d.ts +3 -2
  108. package/dist/esm/adapters/memory/memoryBank.js +16 -3
  109. package/dist/esm/adapters/memory/memoryBank.js.map +1 -1
  110. package/dist/esm/adapters/memory/pgVector.js +10 -4
  111. package/dist/esm/adapters/memory/pgVector.js.map +1 -1
  112. package/dist/esm/adapters/memory/redis.d.ts +8 -3
  113. package/dist/esm/adapters/memory/redis.js +11 -3
  114. package/dist/esm/adapters/memory/redis.js.map +1 -1
  115. package/dist/esm/adapters/memory/s3Vectors.js +8 -3
  116. package/dist/esm/adapters/memory/s3Vectors.js.map +1 -1
  117. package/dist/esm/adapters/memory/sqliteVector.js +10 -4
  118. package/dist/esm/adapters/memory/sqliteVector.js.map +1 -1
  119. package/dist/esm/ag-ui/adapter.d.ts +68 -0
  120. package/dist/esm/ag-ui/adapter.js +67 -0
  121. package/dist/esm/ag-ui/adapter.js.map +1 -0
  122. package/dist/esm/ag-ui/framing.d.ts +51 -0
  123. package/dist/esm/ag-ui/framing.js +62 -0
  124. package/dist/esm/ag-ui/framing.js.map +1 -0
  125. package/dist/esm/ag-ui/frontendTools.d.ts +37 -0
  126. package/dist/esm/ag-ui/frontendTools.js +64 -0
  127. package/dist/esm/ag-ui/frontendTools.js.map +1 -0
  128. package/dist/esm/ag-ui/ids.d.ts +43 -0
  129. package/dist/esm/ag-ui/ids.js +49 -0
  130. package/dist/esm/ag-ui/ids.js.map +1 -0
  131. package/dist/esm/ag-ui/index.d.ts +17 -0
  132. package/dist/esm/ag-ui/index.js +17 -0
  133. package/dist/esm/ag-ui/index.js.map +1 -0
  134. package/dist/esm/ag-ui/request.d.ts +72 -0
  135. package/dist/esm/ag-ui/request.js +350 -0
  136. package/dist/esm/ag-ui/request.js.map +1 -0
  137. package/dist/esm/ag-ui/serializer.d.ts +173 -0
  138. package/dist/esm/ag-ui/serializer.js +895 -0
  139. package/dist/esm/ag-ui/serializer.js.map +1 -0
  140. package/dist/esm/ag-ui/types.d.ts +305 -0
  141. package/dist/esm/ag-ui/types.js +19 -0
  142. package/dist/esm/ag-ui/types.js.map +1 -0
  143. package/dist/esm/core/Agent.d.ts +2 -0
  144. package/dist/esm/core/Agent.js +38 -5
  145. package/dist/esm/core/Agent.js.map +1 -1
  146. package/dist/esm/core/RunnerBase.js +17 -3
  147. package/dist/esm/core/RunnerBase.js.map +1 -1
  148. package/dist/esm/core/agent/buildAgentChart.js +4 -0
  149. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  150. package/dist/esm/core/agent/buildDynamicAgentChart.js +4 -0
  151. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  152. package/dist/esm/core/agent/callerIdentity.js +2 -1
  153. package/dist/esm/core/agent/callerIdentity.js.map +1 -1
  154. package/dist/esm/core/agent/stages/routeTurn.d.ts +1 -1
  155. package/dist/esm/core/agent/stages/routeTurn.js +3 -3
  156. package/dist/esm/core/agent/stages/routeTurn.js.map +1 -1
  157. package/dist/esm/core/agent/stages/seed.d.ts +11 -1
  158. package/dist/esm/core/agent/stages/seed.js +49 -8
  159. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  160. package/dist/esm/core/agent/stages/timeLayer.js +2 -2
  161. package/dist/esm/core/agent/stages/timeLayer.js.map +1 -1
  162. package/dist/esm/core/agent/stages/toolCalls.d.ts +11 -1
  163. package/dist/esm/core/agent/stages/toolCalls.js +26 -5
  164. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  165. package/dist/esm/core/agent/types.d.ts +16 -6
  166. package/dist/esm/core/memberRun.d.ts +132 -0
  167. package/dist/esm/core/memberRun.js +227 -0
  168. package/dist/esm/core/memberRun.js.map +1 -0
  169. package/dist/esm/core/slots/buildToolsSlot.d.ts +1 -1
  170. package/dist/esm/core/slots/buildToolsSlot.js +1 -1
  171. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  172. package/dist/esm/core-flow/Conditional.d.ts +8 -0
  173. package/dist/esm/core-flow/Conditional.js +29 -8
  174. package/dist/esm/core-flow/Conditional.js.map +1 -1
  175. package/dist/esm/core-flow/Graph.js +38 -13
  176. package/dist/esm/core-flow/Graph.js.map +1 -1
  177. package/dist/esm/core-flow/Loop.d.ts +8 -0
  178. package/dist/esm/core-flow/Loop.js +29 -9
  179. package/dist/esm/core-flow/Loop.js.map +1 -1
  180. package/dist/esm/core-flow/Parallel.d.ts +8 -0
  181. package/dist/esm/core-flow/Parallel.js +35 -14
  182. package/dist/esm/core-flow/Parallel.js.map +1 -1
  183. package/dist/esm/core-flow/Sequence.d.ts +8 -0
  184. package/dist/esm/core-flow/Sequence.js +29 -8
  185. package/dist/esm/core-flow/Sequence.js.map +1 -1
  186. package/dist/esm/core-flow/Workflow.js +34 -10
  187. package/dist/esm/core-flow/Workflow.js.map +1 -1
  188. package/dist/esm/doors/ag-ui.d.ts +19 -0
  189. package/dist/esm/doors/ag-ui.js +20 -0
  190. package/dist/esm/doors/ag-ui.js.map +1 -0
  191. package/dist/esm/hosting/envelope.js +5 -0
  192. package/dist/esm/hosting/envelope.js.map +1 -1
  193. package/dist/esm/hosting/httpHost.js +5 -78
  194. package/dist/esm/hosting/httpHost.js.map +1 -1
  195. package/dist/esm/hosting/index.d.ts +4 -1
  196. package/dist/esm/hosting/index.js +2 -0
  197. package/dist/esm/hosting/index.js.map +1 -1
  198. package/dist/esm/hosting/pendingAsk.d.ts +19 -0
  199. package/dist/esm/hosting/pendingAsk.js +38 -0
  200. package/dist/esm/hosting/pendingAsk.js.map +1 -0
  201. package/dist/esm/hosting/protocolAdapter.d.ts +229 -0
  202. package/dist/esm/hosting/protocolAdapter.js +23 -0
  203. package/dist/esm/hosting/protocolAdapter.js.map +1 -0
  204. package/dist/esm/hosting/refusalStatus.d.ts +30 -0
  205. package/dist/esm/hosting/refusalStatus.js +81 -0
  206. package/dist/esm/hosting/refusalStatus.js.map +1 -0
  207. package/dist/esm/hosting/standingAgent.js +1 -31
  208. package/dist/esm/hosting/standingAgent.js.map +1 -1
  209. package/dist/esm/hosting/stream.d.ts +39 -0
  210. package/dist/esm/hosting/stream.js +34 -2
  211. package/dist/esm/hosting/stream.js.map +1 -1
  212. package/dist/esm/hosting/streamHandler.d.ts +134 -0
  213. package/dist/esm/hosting/streamHandler.js +493 -0
  214. package/dist/esm/hosting/streamHandler.js.map +1 -0
  215. package/dist/esm/hosting/types.d.ts +15 -0
  216. package/dist/esm/hosting/types.js.map +1 -1
  217. package/dist/esm/hosting/verifiedThreads.d.ts +29 -0
  218. package/dist/esm/hosting/verifiedThreads.js +46 -0
  219. package/dist/esm/hosting/verifiedThreads.js.map +1 -0
  220. package/dist/esm/index.d.ts +1 -0
  221. package/dist/esm/index.js +3 -0
  222. package/dist/esm/index.js.map +1 -1
  223. package/dist/esm/lib/humanizeLLMError.d.ts +15 -0
  224. package/dist/esm/lib/humanizeLLMError.js +22 -7
  225. package/dist/esm/lib/humanizeLLMError.js.map +1 -1
  226. package/dist/esm/mcp/throttleRetry.d.ts +51 -0
  227. package/dist/esm/mcp/throttleRetry.js +37 -4
  228. package/dist/esm/mcp/throttleRetry.js.map +1 -1
  229. package/dist/esm/memory/define.js +45 -1
  230. package/dist/esm/memory/define.js.map +1 -1
  231. package/dist/esm/memory/define.types.d.ts +24 -0
  232. package/dist/esm/memory/define.types.js.map +1 -1
  233. package/dist/esm/memory/stages/formatDefault.js +3 -1
  234. package/dist/esm/memory/stages/formatDefault.js.map +1 -1
  235. package/dist/esm/memory/store/InMemoryStore.d.ts +8 -3
  236. package/dist/esm/memory/store/InMemoryStore.js +12 -3
  237. package/dist/esm/memory/store/InMemoryStore.js.map +1 -1
  238. package/dist/esm/memory/store/index.d.ts +1 -0
  239. package/dist/esm/memory/store/index.js +5 -0
  240. package/dist/esm/memory/store/index.js.map +1 -1
  241. package/dist/esm/memory/store/types.d.ts +38 -4
  242. package/dist/esm/memory/store/writeOptions.d.ts +118 -0
  243. package/dist/esm/memory/store/writeOptions.js +242 -0
  244. package/dist/esm/memory/store/writeOptions.js.map +1 -0
  245. package/dist/esm/memory-providers.d.ts +1 -1
  246. package/dist/esm/memory-providers.js +4 -1
  247. package/dist/esm/memory-providers.js.map +1 -1
  248. package/dist/esm/patterns/MapReduce.js +8 -2
  249. package/dist/esm/patterns/MapReduce.js.map +1 -1
  250. package/dist/esm/tool-providers/index.d.ts +5 -0
  251. package/dist/esm/tool-providers/index.js +6 -0
  252. package/dist/esm/tool-providers/index.js.map +1 -1
  253. package/dist/esm/trace-toolpack/selfExplain.d.ts +8 -0
  254. package/dist/esm/trace-toolpack/selfExplain.js +25 -2
  255. package/dist/esm/trace-toolpack/selfExplain.js.map +1 -1
  256. package/dist/hosting/envelope.js +5 -0
  257. package/dist/hosting/envelope.js.map +1 -1
  258. package/dist/hosting/httpHost.js +5 -78
  259. package/dist/hosting/httpHost.js.map +1 -1
  260. package/dist/hosting/index.js +9 -3
  261. package/dist/hosting/index.js.map +1 -1
  262. package/dist/hosting/pendingAsk.js +42 -0
  263. package/dist/hosting/pendingAsk.js.map +1 -0
  264. package/dist/hosting/protocolAdapter.js +24 -0
  265. package/dist/hosting/protocolAdapter.js.map +1 -0
  266. package/dist/hosting/refusalStatus.js +84 -0
  267. package/dist/hosting/refusalStatus.js.map +1 -0
  268. package/dist/hosting/standingAgent.js +2 -32
  269. package/dist/hosting/standingAgent.js.map +1 -1
  270. package/dist/hosting/stream.js +35 -3
  271. package/dist/hosting/stream.js.map +1 -1
  272. package/dist/hosting/streamHandler.js +497 -0
  273. package/dist/hosting/streamHandler.js.map +1 -0
  274. package/dist/hosting/types.js.map +1 -1
  275. package/dist/hosting/verifiedThreads.js +50 -0
  276. package/dist/hosting/verifiedThreads.js.map +1 -0
  277. package/dist/index.js +9 -3
  278. package/dist/index.js.map +1 -1
  279. package/dist/lib/humanizeLLMError.js +23 -8
  280. package/dist/lib/humanizeLLMError.js.map +1 -1
  281. package/dist/mcp/throttleRetry.js +41 -6
  282. package/dist/mcp/throttleRetry.js.map +1 -1
  283. package/dist/memory/define.js +45 -1
  284. package/dist/memory/define.js.map +1 -1
  285. package/dist/memory/define.types.js.map +1 -1
  286. package/dist/memory/stages/formatDefault.js +3 -1
  287. package/dist/memory/stages/formatDefault.js.map +1 -1
  288. package/dist/memory/store/InMemoryStore.js +12 -3
  289. package/dist/memory/store/InMemoryStore.js.map +1 -1
  290. package/dist/memory/store/index.js +11 -1
  291. package/dist/memory/store/index.js.map +1 -1
  292. package/dist/memory/store/writeOptions.js +250 -0
  293. package/dist/memory/store/writeOptions.js.map +1 -0
  294. package/dist/memory-providers.js +4 -1
  295. package/dist/memory-providers.js.map +1 -1
  296. package/dist/patterns/MapReduce.js +8 -2
  297. package/dist/patterns/MapReduce.js.map +1 -1
  298. package/dist/tool-providers/index.js +10 -1
  299. package/dist/tool-providers/index.js.map +1 -1
  300. package/dist/trace-toolpack/selfExplain.js +25 -2
  301. package/dist/trace-toolpack/selfExplain.js.map +1 -1
  302. package/dist/types/adapters/mcp/agentcoreRuntime/errorType.d.ts +13 -0
  303. package/dist/types/adapters/mcp/agentcoreRuntime/errorType.d.ts.map +1 -0
  304. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +117 -0
  305. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -0
  306. package/dist/types/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts +50 -0
  307. package/dist/types/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts.map +1 -0
  308. package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts +81 -0
  309. package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts.map +1 -0
  310. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +62 -0
  311. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts.map +1 -0
  312. package/dist/types/adapters/mcp/agentcoreRuntime/strictJson.d.ts +38 -0
  313. package/dist/types/adapters/mcp/agentcoreRuntime/strictJson.d.ts.map +1 -0
  314. package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts +177 -0
  315. package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -0
  316. package/dist/types/adapters/memory/agentcore.d.ts +152 -7
  317. package/dist/types/adapters/memory/agentcore.d.ts.map +1 -1
  318. package/dist/types/adapters/memory/memoryBank.d.ts +3 -2
  319. package/dist/types/adapters/memory/memoryBank.d.ts.map +1 -1
  320. package/dist/types/adapters/memory/pgVector.d.ts.map +1 -1
  321. package/dist/types/adapters/memory/redis.d.ts +8 -3
  322. package/dist/types/adapters/memory/redis.d.ts.map +1 -1
  323. package/dist/types/adapters/memory/s3Vectors.d.ts.map +1 -1
  324. package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -1
  325. package/dist/types/ag-ui/adapter.d.ts +69 -0
  326. package/dist/types/ag-ui/adapter.d.ts.map +1 -0
  327. package/dist/types/ag-ui/framing.d.ts +52 -0
  328. package/dist/types/ag-ui/framing.d.ts.map +1 -0
  329. package/dist/types/ag-ui/frontendTools.d.ts +38 -0
  330. package/dist/types/ag-ui/frontendTools.d.ts.map +1 -0
  331. package/dist/types/ag-ui/ids.d.ts +44 -0
  332. package/dist/types/ag-ui/ids.d.ts.map +1 -0
  333. package/dist/types/ag-ui/index.d.ts +18 -0
  334. package/dist/types/ag-ui/index.d.ts.map +1 -0
  335. package/dist/types/ag-ui/request.d.ts +73 -0
  336. package/dist/types/ag-ui/request.d.ts.map +1 -0
  337. package/dist/types/ag-ui/serializer.d.ts +174 -0
  338. package/dist/types/ag-ui/serializer.d.ts.map +1 -0
  339. package/dist/types/ag-ui/types.d.ts +306 -0
  340. package/dist/types/ag-ui/types.d.ts.map +1 -0
  341. package/dist/types/core/Agent.d.ts +2 -0
  342. package/dist/types/core/Agent.d.ts.map +1 -1
  343. package/dist/types/core/RunnerBase.d.ts.map +1 -1
  344. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  345. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  346. package/dist/types/core/agent/callerIdentity.d.ts.map +1 -1
  347. package/dist/types/core/agent/stages/routeTurn.d.ts +1 -1
  348. package/dist/types/core/agent/stages/routeTurn.d.ts.map +1 -1
  349. package/dist/types/core/agent/stages/seed.d.ts +11 -1
  350. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  351. package/dist/types/core/agent/stages/toolCalls.d.ts +11 -1
  352. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  353. package/dist/types/core/agent/types.d.ts +16 -6
  354. package/dist/types/core/agent/types.d.ts.map +1 -1
  355. package/dist/types/core/memberRun.d.ts +133 -0
  356. package/dist/types/core/memberRun.d.ts.map +1 -0
  357. package/dist/types/core/slots/buildToolsSlot.d.ts +1 -1
  358. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  359. package/dist/types/core-flow/Conditional.d.ts +8 -0
  360. package/dist/types/core-flow/Conditional.d.ts.map +1 -1
  361. package/dist/types/core-flow/Graph.d.ts.map +1 -1
  362. package/dist/types/core-flow/Loop.d.ts +8 -0
  363. package/dist/types/core-flow/Loop.d.ts.map +1 -1
  364. package/dist/types/core-flow/Parallel.d.ts +8 -0
  365. package/dist/types/core-flow/Parallel.d.ts.map +1 -1
  366. package/dist/types/core-flow/Sequence.d.ts +8 -0
  367. package/dist/types/core-flow/Sequence.d.ts.map +1 -1
  368. package/dist/types/core-flow/Workflow.d.ts.map +1 -1
  369. package/dist/types/doors/ag-ui.d.ts +20 -0
  370. package/dist/types/doors/ag-ui.d.ts.map +1 -0
  371. package/dist/types/hosting/httpHost.d.ts.map +1 -1
  372. package/dist/types/hosting/index.d.ts +4 -1
  373. package/dist/types/hosting/index.d.ts.map +1 -1
  374. package/dist/types/hosting/pendingAsk.d.ts +20 -0
  375. package/dist/types/hosting/pendingAsk.d.ts.map +1 -0
  376. package/dist/types/hosting/protocolAdapter.d.ts +230 -0
  377. package/dist/types/hosting/protocolAdapter.d.ts.map +1 -0
  378. package/dist/types/hosting/refusalStatus.d.ts +31 -0
  379. package/dist/types/hosting/refusalStatus.d.ts.map +1 -0
  380. package/dist/types/hosting/standingAgent.d.ts.map +1 -1
  381. package/dist/types/hosting/stream.d.ts +39 -0
  382. package/dist/types/hosting/stream.d.ts.map +1 -1
  383. package/dist/types/hosting/streamHandler.d.ts +135 -0
  384. package/dist/types/hosting/streamHandler.d.ts.map +1 -0
  385. package/dist/types/hosting/types.d.ts +15 -0
  386. package/dist/types/hosting/types.d.ts.map +1 -1
  387. package/dist/types/hosting/verifiedThreads.d.ts +30 -0
  388. package/dist/types/hosting/verifiedThreads.d.ts.map +1 -0
  389. package/dist/types/index.d.ts +1 -0
  390. package/dist/types/index.d.ts.map +1 -1
  391. package/dist/types/lib/humanizeLLMError.d.ts +15 -0
  392. package/dist/types/lib/humanizeLLMError.d.ts.map +1 -1
  393. package/dist/types/mcp/throttleRetry.d.ts +51 -0
  394. package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
  395. package/dist/types/memory/define.d.ts.map +1 -1
  396. package/dist/types/memory/define.types.d.ts +24 -0
  397. package/dist/types/memory/define.types.d.ts.map +1 -1
  398. package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
  399. package/dist/types/memory/store/InMemoryStore.d.ts +8 -3
  400. package/dist/types/memory/store/InMemoryStore.d.ts.map +1 -1
  401. package/dist/types/memory/store/index.d.ts +1 -0
  402. package/dist/types/memory/store/index.d.ts.map +1 -1
  403. package/dist/types/memory/store/types.d.ts +38 -4
  404. package/dist/types/memory/store/types.d.ts.map +1 -1
  405. package/dist/types/memory/store/writeOptions.d.ts +119 -0
  406. package/dist/types/memory/store/writeOptions.d.ts.map +1 -0
  407. package/dist/types/memory-providers.d.ts +1 -1
  408. package/dist/types/memory-providers.d.ts.map +1 -1
  409. package/dist/types/patterns/MapReduce.d.ts.map +1 -1
  410. package/dist/types/tool-providers/index.d.ts +5 -0
  411. package/dist/types/tool-providers/index.d.ts.map +1 -1
  412. package/dist/types/trace-toolpack/selfExplain.d.ts +8 -0
  413. package/dist/types/trace-toolpack/selfExplain.d.ts.map +1 -1
  414. package/package.json +25 -1
@@ -0,0 +1,409 @@
1
+ /**
2
+ * safeAnswer — what the MCP client may read of an answer: read ONCE, checked,
3
+ * and handed on as the canonical form of exactly what was checked.
4
+ *
5
+ * ── Why an allow-list ────────────────────────────────────────────────────────
6
+ * Whatever an answer's body says becomes the MCP client's error text, and a
7
+ * failed tool call hands that text to the model, the run's history and
8
+ * `tool_end`. Service text can carry anything the request did: AWS answers a
9
+ * signature mismatch with the whole signed request (the session token among
10
+ * it), its validation errors quote the value they refused, a proxy may echo a
11
+ * header. So a failure is RE-WRITTEN from parts that cannot carry a secret:
12
+ * the status; the AWS error type when it is a plain name; `Retry-After` when
13
+ * it is seconds or a date; and for a JSON-RPC error its integer `code`, the
14
+ * client's own `id`, and its `message` ONLY when it is one of the fixed
15
+ * sentences the MCP SDK and the AgentCore Runtime contract use
16
+ * ({@link KNOWN_ERROR_MESSAGES}).
17
+ *
18
+ * ── Why one reading ──────────────────────────────────────────────────────────
19
+ * A check that reads a body one way and a client that reads the same bytes
20
+ * another is a parser differential: a crafted answer passes the check and is
21
+ * used as something else. So a 2xx answer is never handed on as its raw bytes.
22
+ * It is classified by ONE rule (its media type, exactly `application/json` or
23
+ * `text/event-stream`, UTF-8), decoded strictly, parsed once
24
+ * (`strictJson.ts` — a duplicated key, trailing data or a byte-order mark is
25
+ * refused), checked, and RE-SERIALIZED: the client reads the value that was
26
+ * checked, never the bytes it came from. One message per body or event — a
27
+ * batch is refused. An answer that cannot be read unambiguously is refused by
28
+ * name, as a 502 whose text is this library's.
29
+ *
30
+ * Pattern: pure functions + one TransformStream. Role: outer ring, the
31
+ * transport's one rule for what the client reads.
32
+ */
33
+ import { awsErrorType } from './errorType.js';
34
+ import { AmbiguousJsonError, parseStrictJson } from './strictJson.js';
35
+ /**
36
+ * JSON-RPC error messages a reply may keep word for word — fixed strings that
37
+ * carry nothing of the request: the JSON-RPC 2.0 standard errors, the MCP
38
+ * Streamable HTTP session error, and the AgentCore Runtime MCP contract's
39
+ * mappings of its exceptions.
40
+ */
41
+ export const KNOWN_ERROR_MESSAGES = new Set([
42
+ 'Parse error',
43
+ 'Invalid Request',
44
+ 'Method not found',
45
+ 'Invalid params',
46
+ 'Internal error',
47
+ 'Session not found',
48
+ 'Session operation in progress, please retry',
49
+ 'Resource conflict - Resource already exists',
50
+ 'Rate limit exceeded - Too many requests',
51
+ 'Authentication error - Invalid credentials',
52
+ 'Authorization error - Insufficient permissions',
53
+ 'Tool execution error',
54
+ ]);
55
+ /**
56
+ * AWS error types that mean "who you are, or what you may do" — whatever
57
+ * status they arrive with (`IncompleteSignatureException` is a 400).
58
+ */
59
+ const AUTH_FAILURE_TYPES = new Set([
60
+ 'AccessDeniedException',
61
+ 'ExpiredTokenException',
62
+ 'IncompleteSignatureException',
63
+ 'InvalidClientTokenId',
64
+ 'InvalidSignatureException',
65
+ 'MissingAuthenticationTokenException',
66
+ 'SignatureDoesNotMatch',
67
+ 'UnauthorizedException',
68
+ 'UnrecognizedClientException',
69
+ ]);
70
+ /** An error type that is a plain name — anything else is not repeated. */
71
+ const PLAIN_TYPE = /^[A-Za-z][A-Za-z0-9]{0,99}$/;
72
+ /** A token the client may read back as it is: a request id, an event id or type, a session header. */
73
+ const PLAIN_TOKEN = /^[A-Za-z0-9_.:-]{1,128}$/;
74
+ /** `Retry-After`: delay-seconds, or an HTTP date. */
75
+ const RETRY_AFTER = /^(?:\d{1,10}|[A-Za-z]{3}, \d{2} [A-Za-z]{3} \d{4} \d{2}:\d{2}:\d{2} GMT)$/;
76
+ /** The response headers a 2xx answer keeps (besides its canonical content type). */
77
+ const KEPT_HEADERS = ['mcp-session-id', 'mcp-protocol-version'];
78
+ /** An answer this transport will not hand on, and why — in its own words. */
79
+ class Unreadable extends Error {
80
+ reason;
81
+ constructor(reason) {
82
+ super(reason);
83
+ this.reason = reason;
84
+ }
85
+ }
86
+ /** Is this answer an authentication or authorization failure? */
87
+ export function isAuthFailure(status, type) {
88
+ if (status === 401 || status === 403)
89
+ return true;
90
+ return type !== undefined && AUTH_FAILURE_TYPES.has(type);
91
+ }
92
+ /**
93
+ * The answer the MCP client may read: a failure rewritten from safe parts; a
94
+ * 2xx read once and re-serialized; an answer that cannot be read
95
+ * unambiguously refused (502).
96
+ */
97
+ export async function safeAnswer(response) {
98
+ if (!response.ok)
99
+ return safeFailure(response);
100
+ try {
101
+ return await safeSuccess(response);
102
+ }
103
+ catch (err) {
104
+ if (err instanceof Unreadable)
105
+ return refusal(response.status, err.reason);
106
+ throw err;
107
+ }
108
+ }
109
+ // ── 2xx ────────────────────────────────────────────────────────────────
110
+ async function safeSuccess(response) {
111
+ const kind = mediaKind(response.headers.get('content-type'));
112
+ if (kind === 'event-stream')
113
+ return safeStream(response);
114
+ const bytes = response.body === null ? new Uint8Array() : await bytesOf(response);
115
+ if (bytes.length === 0) {
116
+ // An empty answer (a 202 to a notification): nothing to read, nothing handed on.
117
+ const headers = keptHeaders(response.headers, undefined);
118
+ return new Response(null, { status: response.status, headers });
119
+ }
120
+ if (kind !== 'json') {
121
+ throw new Unreadable(kind === 'none'
122
+ ? 'a body with no content type'
123
+ : 'a body whose content type is neither application/json nor text/event-stream');
124
+ }
125
+ const message = oneMessage(parseOnce(decodeUtf8(bytes)));
126
+ return new Response(JSON.stringify(canonicalMessage(message)), {
127
+ status: response.status,
128
+ headers: keptHeaders(response.headers, 'application/json'),
129
+ });
130
+ }
131
+ /** The ONE media type the transport reads a 2xx body as, by one rule. */
132
+ function mediaKind(contentType) {
133
+ if (contentType === null || contentType.trim() === '')
134
+ return 'none';
135
+ const [type, ...params] = contentType.split(';').map((part) => part.trim().toLowerCase());
136
+ // Every parameter must be `charset=utf-8`: another charset is another reading.
137
+ const utf8 = params.every((p) => /^charset="?utf-8"?$/.test(p));
138
+ if (!utf8)
139
+ return 'other';
140
+ if (type === 'application/json')
141
+ return 'json';
142
+ if (type === 'text/event-stream')
143
+ return 'event-stream';
144
+ return 'other';
145
+ }
146
+ async function bytesOf(response) {
147
+ return new Uint8Array(await response.arrayBuffer());
148
+ }
149
+ /** UTF-8, strictly: an invalid sequence or a byte-order mark is refused. */
150
+ function decodeUtf8(bytes) {
151
+ try {
152
+ return new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
153
+ }
154
+ catch {
155
+ throw new Unreadable('a body that is not UTF-8');
156
+ }
157
+ }
158
+ function parseOnce(text) {
159
+ try {
160
+ return parseStrictJson(text);
161
+ }
162
+ catch (err) {
163
+ if (err instanceof AmbiguousJsonError)
164
+ throw new Unreadable(err.reason);
165
+ throw err;
166
+ }
167
+ }
168
+ /** ONE JSON-RPC message — an object; a batch, or anything else, is refused. */
169
+ function oneMessage(value) {
170
+ if (Array.isArray(value))
171
+ throw new Unreadable('more than one message in one body');
172
+ if (value === null || typeof value !== 'object') {
173
+ throw new Unreadable('a body that is not a JSON-RPC message');
174
+ }
175
+ return value;
176
+ }
177
+ /** The message as the client may read it: an error rewritten, anything else as checked. */
178
+ function canonicalMessage(message) {
179
+ return 'error' in message ? safeErrorReply(message) : message;
180
+ }
181
+ /** The response headers a 2xx answer keeps, and its canonical content type. */
182
+ function keptHeaders(from, contentType) {
183
+ const headers = new Headers(contentType === undefined ? {} : { 'content-type': contentType });
184
+ for (const name of KEPT_HEADERS) {
185
+ const value = from.get(name);
186
+ if (value !== null && PLAIN_TOKEN.test(value))
187
+ headers.set(name, value);
188
+ }
189
+ return headers;
190
+ }
191
+ /** A 2xx answer the transport cannot read unambiguously — refused in its own words. */
192
+ function refusal(status, reason) {
193
+ return new Response(JSON.stringify({
194
+ message: `Unreadable answer (HTTP ${status}): ${reason}. It was not passed on, because a ` +
195
+ 'reading the transport could not check is a reading the model must not get.',
196
+ }), { status: 502, headers: { 'content-type': 'application/json' } });
197
+ }
198
+ // ── failures ───────────────────────────────────────────────────────────
199
+ /** A failure, rewritten from its status, its type and — for a JSON-RPC error — its code. */
200
+ async function safeFailure(response) {
201
+ const type = plainType(awsErrorType(response.headers));
202
+ const reply = await failureReplyOf(response);
203
+ const body = reply !== undefined
204
+ ? safeErrorReply(reply)
205
+ : { message: failureSentence(response.status, type) };
206
+ const headers = new Headers({ 'content-type': 'application/json' });
207
+ if (type !== undefined)
208
+ headers.set('x-amzn-errortype', type);
209
+ const retryAfter = response.headers.get('retry-after')?.trim();
210
+ if (retryAfter !== undefined && RETRY_AFTER.test(retryAfter)) {
211
+ headers.set('retry-after', retryAfter);
212
+ }
213
+ return new Response(JSON.stringify(body), { status: response.status, headers });
214
+ }
215
+ /** The JSON-RPC error message a failure's body is — read once, strictly — or `undefined`. */
216
+ async function failureReplyOf(response) {
217
+ if (response.body === null || mediaKind(response.headers.get('content-type')) !== 'json') {
218
+ await response.body?.cancel().catch(() => undefined);
219
+ return undefined;
220
+ }
221
+ try {
222
+ const message = oneMessage(parseOnce(decodeUtf8(await bytesOf(response))));
223
+ return 'error' in message ? message : undefined;
224
+ }
225
+ catch {
226
+ return undefined;
227
+ }
228
+ }
229
+ /** The fixed sentence a failure with no JSON-RPC reply is answered with. */
230
+ export function failureSentence(status, type) {
231
+ if (isAuthFailure(status, type)) {
232
+ return (`${type ?? 'Request refused'} (HTTP ${status}). The service's message for this request ` +
233
+ 'was not passed on, because AWS can quote the signed request in it, credentials ' +
234
+ 'included. Check the caller’s credentials and its permission to invoke this runtime.');
235
+ }
236
+ return (`${type ?? 'Request failed'} (HTTP ${status}). The service's message for this request ` +
237
+ 'was not passed on, because it can quote what the request carried.');
238
+ }
239
+ /** A JSON-RPC error reply rebuilt from safe parts only. */
240
+ function safeErrorReply(message) {
241
+ const error = message['error'];
242
+ const fields = error !== null && typeof error === 'object' && !Array.isArray(error)
243
+ ? error
244
+ : {};
245
+ const rawCode = fields['code'];
246
+ const code = typeof rawCode === 'number' && Number.isInteger(rawCode) ? rawCode : -32603;
247
+ const rawId = message['id'];
248
+ const id = typeof rawId === 'number' && Number.isFinite(rawId)
249
+ ? rawId
250
+ : typeof rawId === 'string' && PLAIN_TOKEN.test(rawId)
251
+ ? rawId
252
+ : null;
253
+ const rawMessage = fields['message'];
254
+ const text = typeof rawMessage === 'string' && KNOWN_ERROR_MESSAGES.has(rawMessage)
255
+ ? rawMessage
256
+ : `Server error (JSON-RPC ${code}). Its message was not passed on, because it can quote ` +
257
+ 'what the request carried.';
258
+ return { jsonrpc: '2.0', id, error: { code, message: text } };
259
+ }
260
+ function plainType(type) {
261
+ return type !== undefined && PLAIN_TYPE.test(type) ? type : undefined;
262
+ }
263
+ // ── event streams ──────────────────────────────────────────────────────
264
+ /**
265
+ * A 2xx event stream, read once as it passes: each event parsed by the SSE
266
+ * rules, its data parsed strictly as ONE JSON-RPC message, and re-emitted in
267
+ * canonical form (`event`, `id` when plain, one `data` line) — an error
268
+ * rewritten. Events still reach the client as they arrive. An event that
269
+ * cannot be read unambiguously ends the stream with a refusal in this
270
+ * library's words.
271
+ */
272
+ function safeStream(response) {
273
+ const body = response.body;
274
+ if (body === null) {
275
+ return new Response(null, {
276
+ status: response.status,
277
+ headers: keptHeaders(response.headers, undefined),
278
+ });
279
+ }
280
+ const decoder = new TextDecoder('utf-8', { fatal: true });
281
+ const encoder = new TextEncoder();
282
+ const parser = sseParser((event) => encoder.encode(canonicalEvent(event)));
283
+ const stream = body.pipeThrough(new TransformStream({
284
+ transform(chunk, controller) {
285
+ let text;
286
+ try {
287
+ text = decoder.decode(chunk, { stream: true });
288
+ }
289
+ catch {
290
+ controller.error(new Error(streamRefusal('an event stream that is not UTF-8')));
291
+ return;
292
+ }
293
+ try {
294
+ for (const out of parser.push(text))
295
+ controller.enqueue(out);
296
+ }
297
+ catch (err) {
298
+ controller.error(new Error(streamRefusal(err instanceof Unreadable ? err.reason : 'an unreadable event')));
299
+ }
300
+ },
301
+ flush(controller) {
302
+ let tail;
303
+ try {
304
+ tail = decoder.decode();
305
+ }
306
+ catch {
307
+ controller.error(new Error(streamRefusal('an event stream that is not UTF-8')));
308
+ return;
309
+ }
310
+ try {
311
+ for (const out of [...parser.push(tail), ...parser.finish()])
312
+ controller.enqueue(out);
313
+ }
314
+ catch (err) {
315
+ controller.error(new Error(streamRefusal(err instanceof Unreadable ? err.reason : 'an unreadable event')));
316
+ }
317
+ },
318
+ }));
319
+ return new Response(stream, {
320
+ status: response.status,
321
+ headers: keptHeaders(response.headers, 'text/event-stream'),
322
+ });
323
+ }
324
+ function streamRefusal(reason) {
325
+ return (`agentCoreRuntimeMcpTransport: the event stream was cut: ${reason}. The rest was not ` +
326
+ 'passed on, because a reading the transport could not check is a reading the model must ' +
327
+ 'not get.');
328
+ }
329
+ /**
330
+ * The SSE line rules (WHATWG `text/event-stream`): lines end in CRLF, LF or CR;
331
+ * a blank line dispatches; `:` starts a comment; `data` lines join with `\n`;
332
+ * one leading space after the colon is dropped; an event with no data is not
333
+ * dispatched.
334
+ */
335
+ function sseParser(emit) {
336
+ let pending = '';
337
+ let data = [];
338
+ let type;
339
+ let id;
340
+ const line = (raw, out) => {
341
+ if (raw === '') {
342
+ if (data.length > 0) {
343
+ out.push(emit({
344
+ ...(type !== undefined && { type }),
345
+ ...(id !== undefined && { id }),
346
+ data: data.join('\n'),
347
+ }));
348
+ }
349
+ data = [];
350
+ type = undefined;
351
+ return;
352
+ }
353
+ if (raw.startsWith(':'))
354
+ return;
355
+ const colon = raw.indexOf(':');
356
+ const field = colon === -1 ? raw : raw.slice(0, colon);
357
+ const value = colon === -1 ? '' : raw.slice(colon + 1).replace(/^ /, '');
358
+ if (field === 'data')
359
+ data.push(value);
360
+ else if (field === 'event')
361
+ type = value;
362
+ else if (field === 'id' && !value.includes('\0'))
363
+ id = value;
364
+ };
365
+ return {
366
+ push(text) {
367
+ pending += text;
368
+ const out = [];
369
+ for (;;) {
370
+ const match = /\r\n|\n|\r/.exec(pending);
371
+ if (match === null)
372
+ break;
373
+ // A CR at the very end may be the first half of a CRLF still to come.
374
+ if (match[0] === '\r' && match.index === pending.length - 1)
375
+ break;
376
+ line(pending.slice(0, match.index), out);
377
+ pending = pending.slice(match.index + match[0].length);
378
+ }
379
+ return out;
380
+ },
381
+ finish() {
382
+ // The stream ended: a CR held back for a CRLF that never came ends its
383
+ // line. Text with no line end is an unfinished line, and an event with
384
+ // no blank line after it is not dispatched (the SSE rule).
385
+ const out = [];
386
+ if (pending.endsWith('\r'))
387
+ line(pending.slice(0, -1), out);
388
+ pending = '';
389
+ return out;
390
+ },
391
+ };
392
+ }
393
+ /** One event in canonical form — its data the ONE message it held, read strictly. */
394
+ function canonicalEvent(event) {
395
+ // An event type that is not a plain token cannot be re-emitted as it was,
396
+ // and re-emitting it as a default `message` would make the client act on an
397
+ // event it would have ignored — so it is dropped.
398
+ if (event.type !== undefined && !PLAIN_TOKEN.test(event.type))
399
+ return '';
400
+ const message = oneMessage(parseOnce(event.data));
401
+ const lines = [];
402
+ if (event.type !== undefined)
403
+ lines.push(`event: ${event.type}`);
404
+ if (event.id !== undefined && PLAIN_TOKEN.test(event.id))
405
+ lines.push(`id: ${event.id}`);
406
+ lines.push(`data: ${JSON.stringify(canonicalMessage(message))}`);
407
+ return `${lines.join('\n')}\n\n`;
408
+ }
409
+ //# sourceMappingURL=safeAnswer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeAnswer.js","sourceRoot":"","sources":["../../../../../src/adapters/mcp/agentcoreRuntime/safeAnswer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * session — the session strategies: which AgentCore Runtime session a request
3
+ * lands in.
4
+ *
5
+ * ── The facts they rest on ───────────────────────────────────────────────────
6
+ * From the AgentCore Runtime MCP protocol contract and the `InvokeAgentRuntime`
7
+ * API reference:
8
+ *
9
+ * - The runtime routes by `Mcp-Session-Id` and always returns one. A client
10
+ * "must capture the Mcp-Session-Id returned in the response and include it
11
+ * in all subsequent requests" for microVM affinity; without it "each request
12
+ * may be routed to a new microVM".
13
+ * - `InvokeAgentRuntime` also carries `runtimeSessionId`
14
+ * (`X-Amzn-Bedrock-AgentCore-Runtime-Session-Id`, 33–256 characters), and
15
+ * the AWS SDK models it as an idempotency token — it fills a FRESH random id
16
+ * on every call that leaves it unset.
17
+ *
18
+ * ── 'per-call' (the default) ─────────────────────────────────────────────────
19
+ * Every request in a session of its own: this strategy sends a FRESH runtime
20
+ * session id with every request and no `Mcp-Session-Id`, and the
21
+ * `Mcp-Session-Id` a response carries is not handed to the MCP client, so
22
+ * nothing can carry one call's session into the next. Isolation by
23
+ * construction: a client shared by every user of a process (tools built once at
24
+ * startup — the common shape) never puts two users in one microVM. The price is
25
+ * a cold start per call, and it needs a STATELESS server (`stateless_http=True`,
26
+ * the runtime's recommended default) — a stateful one sees every request as a
27
+ * stranger.
28
+ *
29
+ * ── 'reuse' ──────────────────────────────────────────────────────────────────
30
+ * One session per CONNECTION (per `mcpClient` built on the transport), and the
31
+ * TRANSPORT owns the key. A request with no `Mcp-Session-Id` (a client's
32
+ * `initialize`) opens a connection with a fresh runtime session id; the
33
+ * `Mcp-Session-Id` the server returns for it is stored WITH that connection,
34
+ * and the client is handed an opaque handle of the transport's own in its
35
+ * place. Every later request carrying the handle is sent in that connection's
36
+ * runtime session with the server's own id; a handle the transport does not
37
+ * know is answered 404 "Session not found" here, never sent.
38
+ *
39
+ * Why a handle and not the server's id: the server's ids are unique only as far
40
+ * as the server makes them. One that numbers sessions per process hands every
41
+ * fresh microVM the same first id, and a map keyed by it would send the second
42
+ * client into the first one's microVM. A handle is ours, random, and per
43
+ * connection, so two clients on one transport are two sessions whatever the
44
+ * server returns — while ONE client is still one session for whoever calls
45
+ * through it. Build a client per conversation; never share a 'reuse' client
46
+ * between users.
47
+ *
48
+ * At most {@link MAX_CONNECTIONS} connections are remembered, least recently
49
+ * used forgotten first; a client's `DELETE` (its `close()`) forgets its own.
50
+ *
51
+ * Pattern: Strategy. Role: outer ring, vendor fact. Holds no credential.
52
+ */
53
+ /** The runtime session header, as `InvokeAgentRuntime` binds `runtimeSessionId` to it. */
54
+ export declare const AGENTCORE_RUNTIME_SESSION_HEADER = "X-Amzn-Bedrock-AgentCore-Runtime-Session-Id";
55
+ /** The MCP Streamable HTTP session header. */
56
+ export declare const MCP_SESSION_HEADER = "Mcp-Session-Id";
57
+ /** Which session a request lands in. See the module note for each. */
58
+ export type AgentCoreRuntimeSession = 'reuse' | 'per-call';
59
+ /**
60
+ * What a strategy does with one request: either answer it here, unsent, or
61
+ * let it go — with its session headers fixed in place — and say what the MCP
62
+ * client may see of the response.
63
+ */
64
+ export type SessionStep = {
65
+ readonly answer: Response;
66
+ } | {
67
+ readonly settle: (response: Response) => Response;
68
+ };
69
+ /** One strategy, applied once per request the MCP client makes. */
70
+ export interface SessionStrategy {
71
+ request(headers: Headers, method: string): SessionStep;
72
+ }
73
+ /** How many connections a 'reuse' transport remembers before it forgets the least recently used. */
74
+ export declare const MAX_CONNECTIONS = 256;
75
+ /**
76
+ * Build the strategy for one transport.
77
+ *
78
+ * @throws when `kind` is not one of the two strategies.
79
+ */
80
+ export declare function sessionStrategy(kind: AgentCoreRuntimeSession): SessionStrategy;