agentfootprint 10.3.1 → 10.5.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 (749) hide show
  1. package/AGENTS.md +2 -2
  2. package/CAPABILITIES.md +12 -1
  3. package/README.md +44 -0
  4. package/ai-instructions/claude-code/SKILL.md +2 -2
  5. package/ai-instructions/clinerules +22 -11
  6. package/ai-instructions/copilot-instructions.md +22 -11
  7. package/ai-instructions/cursor/agentfootprint.md +22 -11
  8. package/ai-instructions/kiro/agentfootprint.md +22 -11
  9. package/ai-instructions/windsurfrules +22 -11
  10. package/dist/adapters/llm/AnthropicProvider.js +26 -8
  11. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  12. package/dist/adapters/llm/BedrockProvider.js +23 -7
  13. package/dist/adapters/llm/BedrockProvider.js.map +1 -1
  14. package/dist/adapters/llm/BrowserAnthropicProvider.js +57 -49
  15. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  16. package/dist/adapters/llm/BrowserOpenAIProvider.js +50 -42
  17. package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  18. package/dist/adapters/llm/FoundryLocalProvider.js +174 -212
  19. package/dist/adapters/llm/FoundryLocalProvider.js.map +1 -1
  20. package/dist/adapters/llm/GeminiProvider.js +23 -9
  21. package/dist/adapters/llm/GeminiProvider.js.map +1 -1
  22. package/dist/adapters/llm/InvokeModelGatewayProvider.js +32 -9
  23. package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  24. package/dist/adapters/llm/MockProvider.js +11 -3
  25. package/dist/adapters/llm/MockProvider.js.map +1 -1
  26. package/dist/adapters/llm/OllamaProvider.js +129 -167
  27. package/dist/adapters/llm/OllamaProvider.js.map +1 -1
  28. package/dist/adapters/llm/OpenAIProvider.js +36 -9
  29. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  30. package/dist/adapters/mcp/agentcoreRuntime/errorType.js +24 -0
  31. package/dist/adapters/mcp/agentcoreRuntime/errorType.js.map +1 -0
  32. package/dist/adapters/mcp/agentcoreRuntime/invoke.js +272 -0
  33. package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -0
  34. package/dist/adapters/mcp/agentcoreRuntime/safeAnswer.js +415 -0
  35. package/dist/adapters/mcp/agentcoreRuntime/safeAnswer.js.map +1 -0
  36. package/dist/adapters/mcp/agentcoreRuntime/session.js +179 -0
  37. package/dist/adapters/mcp/agentcoreRuntime/session.js.map +1 -0
  38. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js +117 -0
  39. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -0
  40. package/dist/adapters/mcp/agentcoreRuntime/strictJson.js +220 -0
  41. package/dist/adapters/mcp/agentcoreRuntime/strictJson.js.map +1 -0
  42. package/dist/adapters/mcp/agentcoreRuntime/transport.js +222 -0
  43. package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -0
  44. package/dist/adapters/memory/agentcore.js +435 -20
  45. package/dist/adapters/memory/agentcore.js.map +1 -1
  46. package/dist/adapters/memory/memoryBank.js +16 -3
  47. package/dist/adapters/memory/memoryBank.js.map +1 -1
  48. package/dist/adapters/memory/pgVector.js +10 -4
  49. package/dist/adapters/memory/pgVector.js.map +1 -1
  50. package/dist/adapters/memory/redis.js +11 -3
  51. package/dist/adapters/memory/redis.js.map +1 -1
  52. package/dist/adapters/memory/s3Vectors.js +8 -3
  53. package/dist/adapters/memory/s3Vectors.js.map +1 -1
  54. package/dist/adapters/memory/sqliteVector.js +10 -4
  55. package/dist/adapters/memory/sqliteVector.js.map +1 -1
  56. package/dist/ag-ui/adapter.js +126 -0
  57. package/dist/ag-ui/adapter.js.map +1 -0
  58. package/dist/ag-ui/framing.js +68 -0
  59. package/dist/ag-ui/framing.js.map +1 -0
  60. package/dist/ag-ui/frontendTools.js +69 -0
  61. package/dist/ag-ui/frontendTools.js.map +1 -0
  62. package/dist/ag-ui/ids.js +54 -0
  63. package/dist/ag-ui/ids.js.map +1 -0
  64. package/dist/ag-ui/index.js +29 -0
  65. package/dist/ag-ui/index.js.map +1 -0
  66. package/dist/ag-ui/request.js +416 -0
  67. package/dist/ag-ui/request.js.map +1 -0
  68. package/dist/ag-ui/serializer.js +899 -0
  69. package/dist/ag-ui/serializer.js.map +1 -0
  70. package/dist/ag-ui/types.js +22 -0
  71. package/dist/ag-ui/types.js.map +1 -0
  72. package/dist/answer-validation/index.js +8 -1
  73. package/dist/answer-validation/index.js.map +1 -1
  74. package/dist/answer-validation/toolLedger.js +130 -0
  75. package/dist/answer-validation/toolLedger.js.map +1 -0
  76. package/dist/answer-validation/types.js.map +1 -1
  77. package/dist/answer-validation/validate.js +25 -3
  78. package/dist/answer-validation/validate.js.map +1 -1
  79. package/dist/classify/typesafe.js +31 -23
  80. package/dist/classify/typesafe.js.map +1 -1
  81. package/dist/core/Agent.js +106 -20
  82. package/dist/core/Agent.js.map +1 -1
  83. package/dist/core/LLMCall.js +16 -6
  84. package/dist/core/LLMCall.js.map +1 -1
  85. package/dist/core/RunnerBase.js +99 -13
  86. package/dist/core/RunnerBase.js.map +1 -1
  87. package/dist/core/agent/buildAgentChart.js +17 -5
  88. package/dist/core/agent/buildAgentChart.js.map +1 -1
  89. package/dist/core/agent/buildAgentMessageApiChart.js +22 -2
  90. package/dist/core/agent/buildAgentMessageApiChart.js.map +1 -1
  91. package/dist/core/agent/buildDynamicAgentChart.js +23 -4
  92. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  93. package/dist/core/agent/buildMessageApiChart.js +22 -2
  94. package/dist/core/agent/buildMessageApiChart.js.map +1 -1
  95. package/dist/core/agent/callerIdentity.js +2 -1
  96. package/dist/core/agent/callerIdentity.js.map +1 -1
  97. package/dist/core/agent/stages/answerValidation.js +22 -1
  98. package/dist/core/agent/stages/answerValidation.js.map +1 -1
  99. package/dist/core/agent/stages/callLLM.js +19 -3
  100. package/dist/core/agent/stages/callLLM.js.map +1 -1
  101. package/dist/core/agent/stages/routeTurn.js +17 -4
  102. package/dist/core/agent/stages/routeTurn.js.map +1 -1
  103. package/dist/core/agent/stages/seed.js +58 -8
  104. package/dist/core/agent/stages/seed.js.map +1 -1
  105. package/dist/core/agent/stages/timeLayer.js +2 -2
  106. package/dist/core/agent/stages/timeLayer.js.map +1 -1
  107. package/dist/core/agent/stages/toolCalls.js +85 -25
  108. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  109. package/dist/core/agent/window/strategies/summarizeOldest.js +4 -0
  110. package/dist/core/agent/window/strategies/summarizeOldest.js.map +1 -1
  111. package/dist/core/agent/window/summarize.js +6 -3
  112. package/dist/core/agent/window/summarize.js.map +1 -1
  113. package/dist/core/memberRun.js +293 -0
  114. package/dist/core/memberRun.js.map +1 -0
  115. package/dist/core/requestOfRun.js +28 -0
  116. package/dist/core/requestOfRun.js.map +1 -0
  117. package/dist/core/slots/buildToolsSlot.js +11 -25
  118. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  119. package/dist/core-flow/Conditional.js +39 -12
  120. package/dist/core-flow/Conditional.js.map +1 -1
  121. package/dist/core-flow/Graph.js +48 -17
  122. package/dist/core-flow/Graph.js.map +1 -1
  123. package/dist/core-flow/Loop.js +39 -13
  124. package/dist/core-flow/Loop.js.map +1 -1
  125. package/dist/core-flow/Parallel.js +53 -21
  126. package/dist/core-flow/Parallel.js.map +1 -1
  127. package/dist/core-flow/Sequence.js +39 -12
  128. package/dist/core-flow/Sequence.js.map +1 -1
  129. package/dist/core-flow/Workflow.js +44 -14
  130. package/dist/core-flow/Workflow.js.map +1 -1
  131. package/dist/doors/ag-ui.js +36 -0
  132. package/dist/doors/ag-ui.js.map +1 -0
  133. package/dist/doors/security.js +2 -1
  134. package/dist/doors/security.js.map +1 -1
  135. package/dist/esm/adapters/llm/AnthropicProvider.d.ts +9 -2
  136. package/dist/esm/adapters/llm/AnthropicProvider.js +26 -8
  137. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  138. package/dist/esm/adapters/llm/BedrockProvider.d.ts +6 -1
  139. package/dist/esm/adapters/llm/BedrockProvider.js +23 -7
  140. package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
  141. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +57 -49
  142. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  143. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +50 -42
  144. package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
  145. package/dist/esm/adapters/llm/FoundryLocalProvider.js +171 -209
  146. package/dist/esm/adapters/llm/FoundryLocalProvider.js.map +1 -1
  147. package/dist/esm/adapters/llm/GeminiProvider.js +23 -9
  148. package/dist/esm/adapters/llm/GeminiProvider.js.map +1 -1
  149. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +32 -9
  150. package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
  151. package/dist/esm/adapters/llm/MockProvider.js +11 -3
  152. package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
  153. package/dist/esm/adapters/llm/OllamaProvider.js +126 -164
  154. package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -1
  155. package/dist/esm/adapters/llm/OpenAIProvider.d.ts +6 -1
  156. package/dist/esm/adapters/llm/OpenAIProvider.js +36 -9
  157. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  158. package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.d.ts +12 -0
  159. package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.js +20 -0
  160. package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.js.map +1 -0
  161. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +116 -0
  162. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +267 -0
  163. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -0
  164. package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts +49 -0
  165. package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.js +409 -0
  166. package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.js.map +1 -0
  167. package/dist/esm/adapters/mcp/agentcoreRuntime/session.d.ts +80 -0
  168. package/dist/esm/adapters/mcp/agentcoreRuntime/session.js +175 -0
  169. package/dist/esm/adapters/mcp/agentcoreRuntime/session.js.map +1 -0
  170. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +61 -0
  171. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js +112 -0
  172. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -0
  173. package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.d.ts +37 -0
  174. package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.js +215 -0
  175. package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.js.map +1 -0
  176. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.d.ts +199 -0
  177. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +217 -0
  178. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -0
  179. package/dist/esm/adapters/memory/agentcore.d.ts +152 -7
  180. package/dist/esm/adapters/memory/agentcore.js +433 -19
  181. package/dist/esm/adapters/memory/agentcore.js.map +1 -1
  182. package/dist/esm/adapters/memory/memoryBank.d.ts +3 -2
  183. package/dist/esm/adapters/memory/memoryBank.js +16 -3
  184. package/dist/esm/adapters/memory/memoryBank.js.map +1 -1
  185. package/dist/esm/adapters/memory/pgVector.js +10 -4
  186. package/dist/esm/adapters/memory/pgVector.js.map +1 -1
  187. package/dist/esm/adapters/memory/redis.d.ts +8 -3
  188. package/dist/esm/adapters/memory/redis.js +11 -3
  189. package/dist/esm/adapters/memory/redis.js.map +1 -1
  190. package/dist/esm/adapters/memory/s3Vectors.js +8 -3
  191. package/dist/esm/adapters/memory/s3Vectors.js.map +1 -1
  192. package/dist/esm/adapters/memory/sqliteVector.js +10 -4
  193. package/dist/esm/adapters/memory/sqliteVector.js.map +1 -1
  194. package/dist/esm/ag-ui/adapter.d.ts +118 -0
  195. package/dist/esm/ag-ui/adapter.js +122 -0
  196. package/dist/esm/ag-ui/adapter.js.map +1 -0
  197. package/dist/esm/ag-ui/framing.d.ts +52 -0
  198. package/dist/esm/ag-ui/framing.js +64 -0
  199. package/dist/esm/ag-ui/framing.js.map +1 -0
  200. package/dist/esm/ag-ui/frontendTools.d.ts +37 -0
  201. package/dist/esm/ag-ui/frontendTools.js +64 -0
  202. package/dist/esm/ag-ui/frontendTools.js.map +1 -0
  203. package/dist/esm/ag-ui/ids.d.ts +43 -0
  204. package/dist/esm/ag-ui/ids.js +49 -0
  205. package/dist/esm/ag-ui/ids.js.map +1 -0
  206. package/dist/esm/ag-ui/index.d.ts +19 -0
  207. package/dist/esm/ag-ui/index.js +19 -0
  208. package/dist/esm/ag-ui/index.js.map +1 -0
  209. package/dist/esm/ag-ui/request.d.ts +151 -0
  210. package/dist/esm/ag-ui/request.js +408 -0
  211. package/dist/esm/ag-ui/request.js.map +1 -0
  212. package/dist/esm/ag-ui/serializer.d.ts +173 -0
  213. package/dist/esm/ag-ui/serializer.js +895 -0
  214. package/dist/esm/ag-ui/serializer.js.map +1 -0
  215. package/dist/esm/ag-ui/types.d.ts +305 -0
  216. package/dist/esm/ag-ui/types.js +19 -0
  217. package/dist/esm/ag-ui/types.js.map +1 -0
  218. package/dist/esm/answer-validation/index.d.ts +2 -1
  219. package/dist/esm/answer-validation/index.js +1 -0
  220. package/dist/esm/answer-validation/index.js.map +1 -1
  221. package/dist/esm/answer-validation/toolLedger.d.ts +65 -0
  222. package/dist/esm/answer-validation/toolLedger.js +121 -0
  223. package/dist/esm/answer-validation/toolLedger.js.map +1 -0
  224. package/dist/esm/answer-validation/types.d.ts +48 -0
  225. package/dist/esm/answer-validation/types.js.map +1 -1
  226. package/dist/esm/answer-validation/validate.d.ts +2 -2
  227. package/dist/esm/answer-validation/validate.js +25 -3
  228. package/dist/esm/answer-validation/validate.js.map +1 -1
  229. package/dist/esm/classify/typesafe.js +30 -22
  230. package/dist/esm/classify/typesafe.js.map +1 -1
  231. package/dist/esm/core/Agent.d.ts +11 -1
  232. package/dist/esm/core/Agent.js +107 -21
  233. package/dist/esm/core/Agent.js.map +1 -1
  234. package/dist/esm/core/LLMCall.d.ts +2 -1
  235. package/dist/esm/core/LLMCall.js +17 -7
  236. package/dist/esm/core/LLMCall.js.map +1 -1
  237. package/dist/esm/core/RunnerBase.d.ts +39 -8
  238. package/dist/esm/core/RunnerBase.js +97 -12
  239. package/dist/esm/core/RunnerBase.js.map +1 -1
  240. package/dist/esm/core/agent/buildAgentChart.js +17 -5
  241. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  242. package/dist/esm/core/agent/buildAgentMessageApiChart.d.ts +16 -0
  243. package/dist/esm/core/agent/buildAgentMessageApiChart.js +22 -2
  244. package/dist/esm/core/agent/buildAgentMessageApiChart.js.map +1 -1
  245. package/dist/esm/core/agent/buildDynamicAgentChart.js +23 -4
  246. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  247. package/dist/esm/core/agent/buildMessageApiChart.d.ts +16 -0
  248. package/dist/esm/core/agent/buildMessageApiChart.js +22 -2
  249. package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -1
  250. package/dist/esm/core/agent/callerIdentity.js +2 -1
  251. package/dist/esm/core/agent/callerIdentity.js.map +1 -1
  252. package/dist/esm/core/agent/stages/answerValidation.js +22 -1
  253. package/dist/esm/core/agent/stages/answerValidation.js.map +1 -1
  254. package/dist/esm/core/agent/stages/callLLM.js +19 -3
  255. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  256. package/dist/esm/core/agent/stages/routeTurn.d.ts +1 -1
  257. package/dist/esm/core/agent/stages/routeTurn.js +17 -4
  258. package/dist/esm/core/agent/stages/routeTurn.js.map +1 -1
  259. package/dist/esm/core/agent/stages/seed.d.ts +18 -1
  260. package/dist/esm/core/agent/stages/seed.js +58 -8
  261. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  262. package/dist/esm/core/agent/stages/timeLayer.js +2 -2
  263. package/dist/esm/core/agent/stages/timeLayer.js.map +1 -1
  264. package/dist/esm/core/agent/stages/toolCalls.d.ts +32 -1
  265. package/dist/esm/core/agent/stages/toolCalls.js +85 -25
  266. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  267. package/dist/esm/core/agent/types.d.ts +26 -6
  268. package/dist/esm/core/agent/window/strategies/summarizeOldest.js +4 -0
  269. package/dist/esm/core/agent/window/strategies/summarizeOldest.js.map +1 -1
  270. package/dist/esm/core/agent/window/summarize.js +6 -3
  271. package/dist/esm/core/agent/window/summarize.js.map +1 -1
  272. package/dist/esm/core/memberRun.d.ts +153 -0
  273. package/dist/esm/core/memberRun.js +273 -0
  274. package/dist/esm/core/memberRun.js.map +1 -0
  275. package/dist/esm/core/requestOfRun.d.ts +21 -0
  276. package/dist/esm/core/requestOfRun.js +24 -0
  277. package/dist/esm/core/requestOfRun.js.map +1 -0
  278. package/dist/esm/core/runner.d.ts +15 -3
  279. package/dist/esm/core/slots/buildToolsSlot.d.ts +0 -16
  280. package/dist/esm/core/slots/buildToolsSlot.js +11 -25
  281. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  282. package/dist/esm/core-flow/Conditional.d.ts +10 -1
  283. package/dist/esm/core-flow/Conditional.js +40 -13
  284. package/dist/esm/core-flow/Conditional.js.map +1 -1
  285. package/dist/esm/core-flow/Graph.d.ts +2 -1
  286. package/dist/esm/core-flow/Graph.js +49 -18
  287. package/dist/esm/core-flow/Graph.js.map +1 -1
  288. package/dist/esm/core-flow/Loop.d.ts +10 -1
  289. package/dist/esm/core-flow/Loop.js +40 -14
  290. package/dist/esm/core-flow/Loop.js.map +1 -1
  291. package/dist/esm/core-flow/Parallel.d.ts +10 -1
  292. package/dist/esm/core-flow/Parallel.js +54 -22
  293. package/dist/esm/core-flow/Parallel.js.map +1 -1
  294. package/dist/esm/core-flow/Sequence.d.ts +10 -1
  295. package/dist/esm/core-flow/Sequence.js +40 -13
  296. package/dist/esm/core-flow/Sequence.js.map +1 -1
  297. package/dist/esm/core-flow/Workflow.d.ts +2 -1
  298. package/dist/esm/core-flow/Workflow.js +45 -15
  299. package/dist/esm/core-flow/Workflow.js.map +1 -1
  300. package/dist/esm/doors/ag-ui.d.ts +19 -0
  301. package/dist/esm/doors/ag-ui.js +20 -0
  302. package/dist/esm/doors/ag-ui.js.map +1 -0
  303. package/dist/esm/doors/security.d.ts +2 -1
  304. package/dist/esm/doors/security.js +2 -1
  305. package/dist/esm/doors/security.js.map +1 -1
  306. package/dist/esm/events/payloads.d.ts +4 -2
  307. package/dist/esm/hosting/envelope.js +5 -0
  308. package/dist/esm/hosting/envelope.js.map +1 -1
  309. package/dist/esm/hosting/httpHost.js +5 -78
  310. package/dist/esm/hosting/httpHost.js.map +1 -1
  311. package/dist/esm/hosting/index.d.ts +5 -1
  312. package/dist/esm/hosting/index.js +2 -0
  313. package/dist/esm/hosting/index.js.map +1 -1
  314. package/dist/esm/hosting/pendingAsk.d.ts +19 -0
  315. package/dist/esm/hosting/pendingAsk.js +38 -0
  316. package/dist/esm/hosting/pendingAsk.js.map +1 -0
  317. package/dist/esm/hosting/protocolAdapter.d.ts +232 -0
  318. package/dist/esm/hosting/protocolAdapter.js +23 -0
  319. package/dist/esm/hosting/protocolAdapter.js.map +1 -0
  320. package/dist/esm/hosting/refusalStatus.d.ts +30 -0
  321. package/dist/esm/hosting/refusalStatus.js +85 -0
  322. package/dist/esm/hosting/refusalStatus.js.map +1 -0
  323. package/dist/esm/hosting/requestSealing.d.ts +65 -0
  324. package/dist/esm/hosting/requestSealing.js +79 -0
  325. package/dist/esm/hosting/requestSealing.js.map +1 -0
  326. package/dist/esm/hosting/standingAgent.js +24 -34
  327. package/dist/esm/hosting/standingAgent.js.map +1 -1
  328. package/dist/esm/hosting/stream.d.ts +60 -0
  329. package/dist/esm/hosting/stream.js +38 -2
  330. package/dist/esm/hosting/stream.js.map +1 -1
  331. package/dist/esm/hosting/streamHandler.d.ts +153 -0
  332. package/dist/esm/hosting/streamHandler.js +517 -0
  333. package/dist/esm/hosting/streamHandler.js.map +1 -0
  334. package/dist/esm/hosting/types.d.ts +44 -0
  335. package/dist/esm/hosting/types.js.map +1 -1
  336. package/dist/esm/hosting/verifiedThreads.d.ts +29 -0
  337. package/dist/esm/hosting/verifiedThreads.js +46 -0
  338. package/dist/esm/hosting/verifiedThreads.js.map +1 -0
  339. package/dist/esm/identity/requestContext.d.ts +96 -0
  340. package/dist/esm/identity/requestContext.js +131 -0
  341. package/dist/esm/identity/requestContext.js.map +1 -0
  342. package/dist/esm/identity/requestCredentials.d.ts +99 -0
  343. package/dist/esm/identity/requestCredentials.js +157 -0
  344. package/dist/esm/identity/requestCredentials.js.map +1 -0
  345. package/dist/esm/identity/types.d.ts +11 -0
  346. package/dist/esm/identity/types.js.map +1 -1
  347. package/dist/esm/identity.d.ts +2 -0
  348. package/dist/esm/identity.js +5 -0
  349. package/dist/esm/identity.js.map +1 -1
  350. package/dist/esm/index.d.ts +3 -1
  351. package/dist/esm/index.js +7 -0
  352. package/dist/esm/index.js.map +1 -1
  353. package/dist/esm/injection-engine/buildInjectionEngineSubflow.d.ts +11 -0
  354. package/dist/esm/injection-engine/buildInjectionEngineSubflow.js +39 -5
  355. package/dist/esm/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  356. package/dist/esm/injection-engine/constrainedEnumPick.js +4 -2
  357. package/dist/esm/injection-engine/constrainedEnumPick.js.map +1 -1
  358. package/dist/esm/injection-engine/evaluator.d.ts +6 -0
  359. package/dist/esm/injection-engine/evaluator.js +19 -1
  360. package/dist/esm/injection-engine/evaluator.js.map +1 -1
  361. package/dist/esm/injection-engine/skillGraph.js +26 -8
  362. package/dist/esm/injection-engine/skillGraph.js.map +1 -1
  363. package/dist/esm/injection-engine/skillIntent.d.ts +4 -2
  364. package/dist/esm/injection-engine/skillIntent.js +3 -0
  365. package/dist/esm/injection-engine/skillIntent.js.map +1 -1
  366. package/dist/esm/injection-engine/types.d.ts +27 -1
  367. package/dist/esm/injection-engine/types.js +15 -0
  368. package/dist/esm/injection-engine/types.js.map +1 -1
  369. package/dist/esm/lib/abort.d.ts +143 -0
  370. package/dist/esm/lib/abort.js +322 -0
  371. package/dist/esm/lib/abort.js.map +1 -0
  372. package/dist/esm/lib/humanizeLLMError.d.ts +15 -0
  373. package/dist/esm/lib/humanizeLLMError.js +22 -7
  374. package/dist/esm/lib/humanizeLLMError.js.map +1 -1
  375. package/dist/esm/maps/engagement/parkCard.d.ts +5 -1
  376. package/dist/esm/maps/engagement/parkCard.js +10 -3
  377. package/dist/esm/maps/engagement/parkCard.js.map +1 -1
  378. package/dist/esm/mcp/mcpClient.js +30 -2
  379. package/dist/esm/mcp/mcpClient.js.map +1 -1
  380. package/dist/esm/mcp/mcpServe.js +5 -1
  381. package/dist/esm/mcp/mcpServe.js.map +1 -1
  382. package/dist/esm/mcp/plainData.d.ts +44 -0
  383. package/dist/esm/mcp/plainData.js +204 -0
  384. package/dist/esm/mcp/plainData.js.map +1 -0
  385. package/dist/esm/mcp/sdkLoadFailure.d.ts +6 -7
  386. package/dist/esm/mcp/sdkLoadFailure.js +4 -4
  387. package/dist/esm/mcp/sdkLoadFailure.js.map +1 -1
  388. package/dist/esm/mcp/throttleRetry.d.ts +51 -0
  389. package/dist/esm/mcp/throttleRetry.js +37 -4
  390. package/dist/esm/mcp/throttleRetry.js.map +1 -1
  391. package/dist/esm/mcp/toolResult.js +8 -50
  392. package/dist/esm/mcp/toolResult.js.map +1 -1
  393. package/dist/esm/mcp/types.d.ts +10 -6
  394. package/dist/esm/memory/beats/llmExtractor.js +6 -3
  395. package/dist/esm/memory/beats/llmExtractor.js.map +1 -1
  396. package/dist/esm/memory/define.js +45 -1
  397. package/dist/esm/memory/define.js.map +1 -1
  398. package/dist/esm/memory/define.types.d.ts +24 -0
  399. package/dist/esm/memory/define.types.js.map +1 -1
  400. package/dist/esm/memory/facts/llmFactExtractor.js +6 -3
  401. package/dist/esm/memory/facts/llmFactExtractor.js.map +1 -1
  402. package/dist/esm/memory/stages/formatDefault.js +3 -1
  403. package/dist/esm/memory/stages/formatDefault.js.map +1 -1
  404. package/dist/esm/memory/stages/summarize.js +16 -5
  405. package/dist/esm/memory/stages/summarize.js.map +1 -1
  406. package/dist/esm/memory/store/InMemoryStore.d.ts +8 -3
  407. package/dist/esm/memory/store/InMemoryStore.js +12 -3
  408. package/dist/esm/memory/store/InMemoryStore.js.map +1 -1
  409. package/dist/esm/memory/store/index.d.ts +1 -0
  410. package/dist/esm/memory/store/index.js +5 -0
  411. package/dist/esm/memory/store/index.js.map +1 -1
  412. package/dist/esm/memory/store/types.d.ts +38 -4
  413. package/dist/esm/memory/store/writeOptions.d.ts +118 -0
  414. package/dist/esm/memory/store/writeOptions.js +242 -0
  415. package/dist/esm/memory/store/writeOptions.js.map +1 -0
  416. package/dist/esm/memory-providers.d.ts +1 -1
  417. package/dist/esm/memory-providers.js +4 -1
  418. package/dist/esm/memory-providers.js.map +1 -1
  419. package/dist/esm/patterns/LlmRouter.js +10 -5
  420. package/dist/esm/patterns/LlmRouter.js.map +1 -1
  421. package/dist/esm/patterns/MapReduce.js +8 -2
  422. package/dist/esm/patterns/MapReduce.js.map +1 -1
  423. package/dist/esm/redaction/conversation.js +3 -0
  424. package/dist/esm/redaction/conversation.js.map +1 -1
  425. package/dist/esm/redaction/knownStrings.js +1 -0
  426. package/dist/esm/redaction/knownStrings.js.map +1 -1
  427. package/dist/esm/reliability/buildReliabilityGateChart.js +7 -1
  428. package/dist/esm/reliability/buildReliabilityGateChart.js.map +1 -1
  429. package/dist/esm/resilience/withCircuitBreaker.js +5 -2
  430. package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
  431. package/dist/esm/resilience/withFallback.js +6 -0
  432. package/dist/esm/resilience/withFallback.js.map +1 -1
  433. package/dist/esm/resilience/withRetry.js +5 -0
  434. package/dist/esm/resilience/withRetry.js.map +1 -1
  435. package/dist/esm/time-travel/servedView.js +1 -1
  436. package/dist/esm/time-travel/servedView.js.map +1 -1
  437. package/dist/esm/tool-providers/index.d.ts +5 -0
  438. package/dist/esm/tool-providers/index.js +6 -0
  439. package/dist/esm/tool-providers/index.js.map +1 -1
  440. package/dist/esm/tools/hostFilled.d.ts +110 -0
  441. package/dist/esm/tools/hostFilled.js +509 -0
  442. package/dist/esm/tools/hostFilled.js.map +1 -0
  443. package/dist/esm/trace-toolpack/selfExplain.d.ts +8 -0
  444. package/dist/esm/trace-toolpack/selfExplain.js +25 -2
  445. package/dist/esm/trace-toolpack/selfExplain.js.map +1 -1
  446. package/dist/hosting/envelope.js +5 -0
  447. package/dist/hosting/envelope.js.map +1 -1
  448. package/dist/hosting/httpHost.js +5 -78
  449. package/dist/hosting/httpHost.js.map +1 -1
  450. package/dist/hosting/index.js +9 -3
  451. package/dist/hosting/index.js.map +1 -1
  452. package/dist/hosting/pendingAsk.js +42 -0
  453. package/dist/hosting/pendingAsk.js.map +1 -0
  454. package/dist/hosting/protocolAdapter.js +24 -0
  455. package/dist/hosting/protocolAdapter.js.map +1 -0
  456. package/dist/hosting/refusalStatus.js +88 -0
  457. package/dist/hosting/refusalStatus.js.map +1 -0
  458. package/dist/hosting/requestSealing.js +83 -0
  459. package/dist/hosting/requestSealing.js.map +1 -0
  460. package/dist/hosting/standingAgent.js +25 -35
  461. package/dist/hosting/standingAgent.js.map +1 -1
  462. package/dist/hosting/stream.js +39 -3
  463. package/dist/hosting/stream.js.map +1 -1
  464. package/dist/hosting/streamHandler.js +521 -0
  465. package/dist/hosting/streamHandler.js.map +1 -0
  466. package/dist/hosting/types.js.map +1 -1
  467. package/dist/hosting/verifiedThreads.js +50 -0
  468. package/dist/hosting/verifiedThreads.js.map +1 -0
  469. package/dist/identity/requestContext.js +139 -0
  470. package/dist/identity/requestContext.js.map +1 -0
  471. package/dist/identity/requestCredentials.js +165 -0
  472. package/dist/identity/requestCredentials.js.map +1 -0
  473. package/dist/identity/types.js.map +1 -1
  474. package/dist/identity.js +13 -1
  475. package/dist/identity.js.map +1 -1
  476. package/dist/index.js +20 -3
  477. package/dist/index.js.map +1 -1
  478. package/dist/injection-engine/buildInjectionEngineSubflow.js +38 -4
  479. package/dist/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  480. package/dist/injection-engine/constrainedEnumPick.js +4 -2
  481. package/dist/injection-engine/constrainedEnumPick.js.map +1 -1
  482. package/dist/injection-engine/evaluator.js +18 -0
  483. package/dist/injection-engine/evaluator.js.map +1 -1
  484. package/dist/injection-engine/skillGraph.js +25 -7
  485. package/dist/injection-engine/skillGraph.js.map +1 -1
  486. package/dist/injection-engine/skillIntent.js +3 -0
  487. package/dist/injection-engine/skillIntent.js.map +1 -1
  488. package/dist/injection-engine/types.js +17 -1
  489. package/dist/injection-engine/types.js.map +1 -1
  490. package/dist/lib/abort.js +336 -0
  491. package/dist/lib/abort.js.map +1 -0
  492. package/dist/lib/humanizeLLMError.js +23 -8
  493. package/dist/lib/humanizeLLMError.js.map +1 -1
  494. package/dist/maps/engagement/parkCard.js +10 -3
  495. package/dist/maps/engagement/parkCard.js.map +1 -1
  496. package/dist/mcp/mcpClient.js +30 -2
  497. package/dist/mcp/mcpClient.js.map +1 -1
  498. package/dist/mcp/mcpServe.js +5 -1
  499. package/dist/mcp/mcpServe.js.map +1 -1
  500. package/dist/mcp/plainData.js +208 -0
  501. package/dist/mcp/plainData.js.map +1 -0
  502. package/dist/mcp/sdkLoadFailure.js +4 -4
  503. package/dist/mcp/sdkLoadFailure.js.map +1 -1
  504. package/dist/mcp/throttleRetry.js +41 -6
  505. package/dist/mcp/throttleRetry.js.map +1 -1
  506. package/dist/mcp/toolResult.js +8 -50
  507. package/dist/mcp/toolResult.js.map +1 -1
  508. package/dist/memory/beats/llmExtractor.js +6 -3
  509. package/dist/memory/beats/llmExtractor.js.map +1 -1
  510. package/dist/memory/define.js +45 -1
  511. package/dist/memory/define.js.map +1 -1
  512. package/dist/memory/define.types.js.map +1 -1
  513. package/dist/memory/facts/llmFactExtractor.js +6 -3
  514. package/dist/memory/facts/llmFactExtractor.js.map +1 -1
  515. package/dist/memory/stages/formatDefault.js +3 -1
  516. package/dist/memory/stages/formatDefault.js.map +1 -1
  517. package/dist/memory/stages/summarize.js +16 -5
  518. package/dist/memory/stages/summarize.js.map +1 -1
  519. package/dist/memory/store/InMemoryStore.js +12 -3
  520. package/dist/memory/store/InMemoryStore.js.map +1 -1
  521. package/dist/memory/store/index.js +11 -1
  522. package/dist/memory/store/index.js.map +1 -1
  523. package/dist/memory/store/writeOptions.js +250 -0
  524. package/dist/memory/store/writeOptions.js.map +1 -0
  525. package/dist/memory-providers.js +4 -1
  526. package/dist/memory-providers.js.map +1 -1
  527. package/dist/patterns/LlmRouter.js +9 -4
  528. package/dist/patterns/LlmRouter.js.map +1 -1
  529. package/dist/patterns/MapReduce.js +8 -2
  530. package/dist/patterns/MapReduce.js.map +1 -1
  531. package/dist/redaction/conversation.js +3 -0
  532. package/dist/redaction/conversation.js.map +1 -1
  533. package/dist/redaction/knownStrings.js +1 -0
  534. package/dist/redaction/knownStrings.js.map +1 -1
  535. package/dist/reliability/buildReliabilityGateChart.js +7 -1
  536. package/dist/reliability/buildReliabilityGateChart.js.map +1 -1
  537. package/dist/resilience/withCircuitBreaker.js +5 -2
  538. package/dist/resilience/withCircuitBreaker.js.map +1 -1
  539. package/dist/resilience/withFallback.js +6 -0
  540. package/dist/resilience/withFallback.js.map +1 -1
  541. package/dist/resilience/withRetry.js +5 -0
  542. package/dist/resilience/withRetry.js.map +1 -1
  543. package/dist/time-travel/servedView.js +1 -1
  544. package/dist/time-travel/servedView.js.map +1 -1
  545. package/dist/tool-providers/index.js +10 -1
  546. package/dist/tool-providers/index.js.map +1 -1
  547. package/dist/tools/hostFilled.js +517 -0
  548. package/dist/tools/hostFilled.js.map +1 -0
  549. package/dist/trace-toolpack/selfExplain.js +25 -2
  550. package/dist/trace-toolpack/selfExplain.js.map +1 -1
  551. package/dist/types/adapters/llm/AnthropicProvider.d.ts +9 -2
  552. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  553. package/dist/types/adapters/llm/BedrockProvider.d.ts +6 -1
  554. package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
  555. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  556. package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
  557. package/dist/types/adapters/llm/FoundryLocalProvider.d.ts.map +1 -1
  558. package/dist/types/adapters/llm/GeminiProvider.d.ts.map +1 -1
  559. package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
  560. package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
  561. package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -1
  562. package/dist/types/adapters/llm/OpenAIProvider.d.ts +6 -1
  563. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  564. package/dist/types/adapters/mcp/agentcoreRuntime/errorType.d.ts +13 -0
  565. package/dist/types/adapters/mcp/agentcoreRuntime/errorType.d.ts.map +1 -0
  566. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +117 -0
  567. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -0
  568. package/dist/types/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts +50 -0
  569. package/dist/types/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts.map +1 -0
  570. package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts +81 -0
  571. package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts.map +1 -0
  572. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +62 -0
  573. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts.map +1 -0
  574. package/dist/types/adapters/mcp/agentcoreRuntime/strictJson.d.ts +38 -0
  575. package/dist/types/adapters/mcp/agentcoreRuntime/strictJson.d.ts.map +1 -0
  576. package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts +200 -0
  577. package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -0
  578. package/dist/types/adapters/memory/agentcore.d.ts +152 -7
  579. package/dist/types/adapters/memory/agentcore.d.ts.map +1 -1
  580. package/dist/types/adapters/memory/memoryBank.d.ts +3 -2
  581. package/dist/types/adapters/memory/memoryBank.d.ts.map +1 -1
  582. package/dist/types/adapters/memory/pgVector.d.ts.map +1 -1
  583. package/dist/types/adapters/memory/redis.d.ts +8 -3
  584. package/dist/types/adapters/memory/redis.d.ts.map +1 -1
  585. package/dist/types/adapters/memory/s3Vectors.d.ts.map +1 -1
  586. package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -1
  587. package/dist/types/ag-ui/adapter.d.ts +119 -0
  588. package/dist/types/ag-ui/adapter.d.ts.map +1 -0
  589. package/dist/types/ag-ui/framing.d.ts +53 -0
  590. package/dist/types/ag-ui/framing.d.ts.map +1 -0
  591. package/dist/types/ag-ui/frontendTools.d.ts +38 -0
  592. package/dist/types/ag-ui/frontendTools.d.ts.map +1 -0
  593. package/dist/types/ag-ui/ids.d.ts +44 -0
  594. package/dist/types/ag-ui/ids.d.ts.map +1 -0
  595. package/dist/types/ag-ui/index.d.ts +20 -0
  596. package/dist/types/ag-ui/index.d.ts.map +1 -0
  597. package/dist/types/ag-ui/request.d.ts +152 -0
  598. package/dist/types/ag-ui/request.d.ts.map +1 -0
  599. package/dist/types/ag-ui/serializer.d.ts +174 -0
  600. package/dist/types/ag-ui/serializer.d.ts.map +1 -0
  601. package/dist/types/ag-ui/types.d.ts +306 -0
  602. package/dist/types/ag-ui/types.d.ts.map +1 -0
  603. package/dist/types/answer-validation/index.d.ts +2 -1
  604. package/dist/types/answer-validation/index.d.ts.map +1 -1
  605. package/dist/types/answer-validation/toolLedger.d.ts +66 -0
  606. package/dist/types/answer-validation/toolLedger.d.ts.map +1 -0
  607. package/dist/types/answer-validation/types.d.ts +48 -0
  608. package/dist/types/answer-validation/types.d.ts.map +1 -1
  609. package/dist/types/answer-validation/validate.d.ts +2 -2
  610. package/dist/types/answer-validation/validate.d.ts.map +1 -1
  611. package/dist/types/classify/typesafe.d.ts.map +1 -1
  612. package/dist/types/core/Agent.d.ts +11 -1
  613. package/dist/types/core/Agent.d.ts.map +1 -1
  614. package/dist/types/core/LLMCall.d.ts +2 -1
  615. package/dist/types/core/LLMCall.d.ts.map +1 -1
  616. package/dist/types/core/RunnerBase.d.ts +39 -8
  617. package/dist/types/core/RunnerBase.d.ts.map +1 -1
  618. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  619. package/dist/types/core/agent/buildAgentMessageApiChart.d.ts +16 -0
  620. package/dist/types/core/agent/buildAgentMessageApiChart.d.ts.map +1 -1
  621. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  622. package/dist/types/core/agent/buildMessageApiChart.d.ts +16 -0
  623. package/dist/types/core/agent/buildMessageApiChart.d.ts.map +1 -1
  624. package/dist/types/core/agent/callerIdentity.d.ts.map +1 -1
  625. package/dist/types/core/agent/stages/answerValidation.d.ts.map +1 -1
  626. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  627. package/dist/types/core/agent/stages/routeTurn.d.ts +1 -1
  628. package/dist/types/core/agent/stages/routeTurn.d.ts.map +1 -1
  629. package/dist/types/core/agent/stages/seed.d.ts +18 -1
  630. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  631. package/dist/types/core/agent/stages/toolCalls.d.ts +32 -1
  632. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  633. package/dist/types/core/agent/types.d.ts +26 -6
  634. package/dist/types/core/agent/types.d.ts.map +1 -1
  635. package/dist/types/core/agent/window/strategies/summarizeOldest.d.ts.map +1 -1
  636. package/dist/types/core/agent/window/summarize.d.ts.map +1 -1
  637. package/dist/types/core/memberRun.d.ts +154 -0
  638. package/dist/types/core/memberRun.d.ts.map +1 -0
  639. package/dist/types/core/requestOfRun.d.ts +22 -0
  640. package/dist/types/core/requestOfRun.d.ts.map +1 -0
  641. package/dist/types/core/runner.d.ts +15 -3
  642. package/dist/types/core/runner.d.ts.map +1 -1
  643. package/dist/types/core/slots/buildToolsSlot.d.ts +0 -16
  644. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  645. package/dist/types/core-flow/Conditional.d.ts +10 -1
  646. package/dist/types/core-flow/Conditional.d.ts.map +1 -1
  647. package/dist/types/core-flow/Graph.d.ts +2 -1
  648. package/dist/types/core-flow/Graph.d.ts.map +1 -1
  649. package/dist/types/core-flow/Loop.d.ts +10 -1
  650. package/dist/types/core-flow/Loop.d.ts.map +1 -1
  651. package/dist/types/core-flow/Parallel.d.ts +10 -1
  652. package/dist/types/core-flow/Parallel.d.ts.map +1 -1
  653. package/dist/types/core-flow/Sequence.d.ts +10 -1
  654. package/dist/types/core-flow/Sequence.d.ts.map +1 -1
  655. package/dist/types/core-flow/Workflow.d.ts +2 -1
  656. package/dist/types/core-flow/Workflow.d.ts.map +1 -1
  657. package/dist/types/doors/ag-ui.d.ts +20 -0
  658. package/dist/types/doors/ag-ui.d.ts.map +1 -0
  659. package/dist/types/doors/security.d.ts +2 -1
  660. package/dist/types/doors/security.d.ts.map +1 -1
  661. package/dist/types/events/payloads.d.ts +4 -2
  662. package/dist/types/events/payloads.d.ts.map +1 -1
  663. package/dist/types/hosting/httpHost.d.ts.map +1 -1
  664. package/dist/types/hosting/index.d.ts +5 -1
  665. package/dist/types/hosting/index.d.ts.map +1 -1
  666. package/dist/types/hosting/pendingAsk.d.ts +20 -0
  667. package/dist/types/hosting/pendingAsk.d.ts.map +1 -0
  668. package/dist/types/hosting/protocolAdapter.d.ts +233 -0
  669. package/dist/types/hosting/protocolAdapter.d.ts.map +1 -0
  670. package/dist/types/hosting/refusalStatus.d.ts +31 -0
  671. package/dist/types/hosting/refusalStatus.d.ts.map +1 -0
  672. package/dist/types/hosting/requestSealing.d.ts +66 -0
  673. package/dist/types/hosting/requestSealing.d.ts.map +1 -0
  674. package/dist/types/hosting/standingAgent.d.ts.map +1 -1
  675. package/dist/types/hosting/stream.d.ts +60 -0
  676. package/dist/types/hosting/stream.d.ts.map +1 -1
  677. package/dist/types/hosting/streamHandler.d.ts +154 -0
  678. package/dist/types/hosting/streamHandler.d.ts.map +1 -0
  679. package/dist/types/hosting/types.d.ts +44 -0
  680. package/dist/types/hosting/types.d.ts.map +1 -1
  681. package/dist/types/hosting/verifiedThreads.d.ts +30 -0
  682. package/dist/types/hosting/verifiedThreads.d.ts.map +1 -0
  683. package/dist/types/identity/requestContext.d.ts +97 -0
  684. package/dist/types/identity/requestContext.d.ts.map +1 -0
  685. package/dist/types/identity/requestCredentials.d.ts +100 -0
  686. package/dist/types/identity/requestCredentials.d.ts.map +1 -0
  687. package/dist/types/identity/types.d.ts +11 -0
  688. package/dist/types/identity/types.d.ts.map +1 -1
  689. package/dist/types/identity.d.ts +2 -0
  690. package/dist/types/identity.d.ts.map +1 -1
  691. package/dist/types/index.d.ts +3 -1
  692. package/dist/types/index.d.ts.map +1 -1
  693. package/dist/types/injection-engine/buildInjectionEngineSubflow.d.ts +11 -0
  694. package/dist/types/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
  695. package/dist/types/injection-engine/constrainedEnumPick.d.ts.map +1 -1
  696. package/dist/types/injection-engine/evaluator.d.ts +6 -0
  697. package/dist/types/injection-engine/evaluator.d.ts.map +1 -1
  698. package/dist/types/injection-engine/skillIntent.d.ts +4 -2
  699. package/dist/types/injection-engine/skillIntent.d.ts.map +1 -1
  700. package/dist/types/injection-engine/types.d.ts +27 -1
  701. package/dist/types/injection-engine/types.d.ts.map +1 -1
  702. package/dist/types/lib/abort.d.ts +144 -0
  703. package/dist/types/lib/abort.d.ts.map +1 -0
  704. package/dist/types/lib/humanizeLLMError.d.ts +15 -0
  705. package/dist/types/lib/humanizeLLMError.d.ts.map +1 -1
  706. package/dist/types/maps/engagement/parkCard.d.ts +5 -1
  707. package/dist/types/maps/engagement/parkCard.d.ts.map +1 -1
  708. package/dist/types/mcp/mcpServe.d.ts.map +1 -1
  709. package/dist/types/mcp/plainData.d.ts +45 -0
  710. package/dist/types/mcp/plainData.d.ts.map +1 -0
  711. package/dist/types/mcp/sdkLoadFailure.d.ts +6 -7
  712. package/dist/types/mcp/sdkLoadFailure.d.ts.map +1 -1
  713. package/dist/types/mcp/throttleRetry.d.ts +51 -0
  714. package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
  715. package/dist/types/mcp/toolResult.d.ts.map +1 -1
  716. package/dist/types/mcp/types.d.ts +10 -6
  717. package/dist/types/mcp/types.d.ts.map +1 -1
  718. package/dist/types/memory/beats/llmExtractor.d.ts.map +1 -1
  719. package/dist/types/memory/define.d.ts.map +1 -1
  720. package/dist/types/memory/define.types.d.ts +24 -0
  721. package/dist/types/memory/define.types.d.ts.map +1 -1
  722. package/dist/types/memory/facts/llmFactExtractor.d.ts.map +1 -1
  723. package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
  724. package/dist/types/memory/stages/summarize.d.ts.map +1 -1
  725. package/dist/types/memory/store/InMemoryStore.d.ts +8 -3
  726. package/dist/types/memory/store/InMemoryStore.d.ts.map +1 -1
  727. package/dist/types/memory/store/index.d.ts +1 -0
  728. package/dist/types/memory/store/index.d.ts.map +1 -1
  729. package/dist/types/memory/store/types.d.ts +38 -4
  730. package/dist/types/memory/store/types.d.ts.map +1 -1
  731. package/dist/types/memory/store/writeOptions.d.ts +119 -0
  732. package/dist/types/memory/store/writeOptions.d.ts.map +1 -0
  733. package/dist/types/memory-providers.d.ts +1 -1
  734. package/dist/types/memory-providers.d.ts.map +1 -1
  735. package/dist/types/patterns/LlmRouter.d.ts.map +1 -1
  736. package/dist/types/patterns/MapReduce.d.ts.map +1 -1
  737. package/dist/types/redaction/conversation.d.ts.map +1 -1
  738. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  739. package/dist/types/reliability/buildReliabilityGateChart.d.ts.map +1 -1
  740. package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
  741. package/dist/types/resilience/withFallback.d.ts.map +1 -1
  742. package/dist/types/resilience/withRetry.d.ts.map +1 -1
  743. package/dist/types/tool-providers/index.d.ts +5 -0
  744. package/dist/types/tool-providers/index.d.ts.map +1 -1
  745. package/dist/types/tools/hostFilled.d.ts +111 -0
  746. package/dist/types/tools/hostFilled.d.ts.map +1 -0
  747. package/dist/types/trace-toolpack/selfExplain.d.ts +8 -0
  748. package/dist/types/trace-toolpack/selfExplain.d.ts.map +1 -1
  749. package/package.json +25 -1
@@ -0,0 +1,517 @@
1
+ /**
2
+ * streamHandler — one run per request, streamed in a wire protocol, as a
3
+ * framework-agnostic Fetch-API handler: `(request: Request) => Promise<Response>`.
4
+ *
5
+ * Pattern: Template method over a {@link ProtocolAdapter} (the protocol is a
6
+ * strategy; AG-UI is one). Everything HTTP happens here once — the
7
+ * door guard, the body ceiling, the JSON parse, binding the
8
+ * conversation to its caller, keeping it between requests, the client
9
+ * hanging up, a failure that is never the process's — so an adapter
10
+ * only reads its request, plans the turn and translates.
11
+ * Role: the host for a protocol whose response is a STREAM OF EVENTS rather
12
+ * than text pieces (`httpHost`'s port). It mounts in anything that
13
+ * speaks `Request`/`Response` — a framework's route handler, an edge
14
+ * or serverless runtime, or Node through any fetch adapter.
15
+ * Deliberately names no vendor, like every file in this folder.
16
+ *
17
+ * THE REQUEST IS UNTRUSTED. A body is what anybody could send. It decides
18
+ * nothing the server owns:
19
+ * - WHO is calling and WHICH conversation is theirs come from the app's
20
+ * {@link ThreadBinder} (`threads`), from the request's headers — the id a
21
+ * request names is format-checked caller data and never a key;
22
+ * - WHAT WAS SAID BEFORE comes from the server: the session store
23
+ * (`sessions`), or the agent's own memory keyed by the bound session;
24
+ * - WHAT A PAUSED RUN WAITS ON is the stored run's own record — an answer is
25
+ * matched to it by the adapter, never taken on the request's word;
26
+ * - identity and redaction settings never come from a request. A credential
27
+ * the request CARRIES (a gateway's per-request token) reaches its own run
28
+ * only through the app's `sealRequest`, sealed: never a frame, a stored
29
+ * session or a checkpoint.
30
+ *
31
+ * NOTHING IS SHARED BETWEEN REQUESTS. Every request builds a FRESH runner
32
+ * (`agent`, a factory): footprintjs runs one executor per run and a runner
33
+ * holds one run's context, so a request can neither see another's events nor
34
+ * leave anything behind for one — no shared listener, recorder, buffer, tool
35
+ * session or frame count (each stream numbers its own frames, and hands the
36
+ * number to the framing: `SseFramePosition`). A factory that hands back a
37
+ * runner it handed back before is refused; so is a `sealRequest` that hands
38
+ * back a sealed request twice. The handler's own state is KEYS, never content:
39
+ * the bound conversations with a turn in flight and who holds each (a second
40
+ * turn on one conversation is refused rather than racing the first for the
41
+ * stored state), and the runners and sealed requests already used (by
42
+ * identity, held weakly).
43
+ *
44
+ * ONE TURN PER THREAD IS A PER-PROCESS GUARD. Two instances of the handler
45
+ * (several serverless instances, several workers) do not see each other's
46
+ * turns: route a thread to one instance (sticky sessions), or a double-sent
47
+ * answer can resume one paused run twice and a later persist can overwrite an
48
+ * earlier one. The session store port has no compare-and-set yet.
49
+ *
50
+ * The laws it keeps from `httpHost`:
51
+ * - The door guard runs first, on the headers alone (`doorGuard.ts`): a Host
52
+ * not configured (421), a browser origin not allowed (403), a POST that
53
+ * does not say it is JSON (415). A refused body is never read.
54
+ * - A body over `maxBodyBytes` is refused at the byte that crosses it (413).
55
+ * - A refusal answers with its own status and code (`refusalStatus.ts`);
56
+ * anything else is a 500 that names nothing the caller sent and no thrown
57
+ * message.
58
+ * - Nothing in a request's lifecycle is the process's failure: every step is
59
+ * caught, and a stream always ends.
60
+ */
61
+ import { CONSUMER_SCOPE_RUN_ID, eventBelongsToRun } from '../bridge/eventMeta.js';
62
+ import { isPaused } from '../core/pause.js';
63
+ import { toWireJson } from '../lib/wireJson.js';
64
+ import { checkSessionId, doorGuard } from './doorGuard.js';
65
+ import { envelopeOwner, readEnvelope, readPausedRun, toEnvelope, toPausedEnvelope, } from './envelope.js';
66
+ import { RequestTooLargeError, WireRequestRefusal } from './errors.js';
67
+ import { describePause } from './pendingAsk.js';
68
+ import { REFUSAL_STATUS } from './refusalStatus.js';
69
+ import { requestSealing } from './requestSealing.js';
70
+ /** The default body ceiling — 1 MiB, the same as `nodeHost`. */
71
+ export const DEFAULT_STREAM_MAX_BODY_BYTES = 1_048_576;
72
+ /** The default keep-alive interval: an SSE comment every 15 s of silence. */
73
+ export const DEFAULT_STREAM_HEARTBEAT_MS = 15_000;
74
+ /**
75
+ * Serve runs in `adapter`'s protocol: POST a protocol request, read a stream
76
+ * of the protocol's events.
77
+ *
78
+ * @throws TypeError at construction for options that cannot be served, and
79
+ * when the adapter's framing cannot be built (an optional peer missing) —
80
+ * refused at boot, never mid-request.
81
+ *
82
+ * @example A route handler that speaks `Request`/`Response`
83
+ * ```ts
84
+ * import { memorySessions, streamHandler } from 'agentfootprint/hosting';
85
+ * import { agUi } from 'agentfootprint/ag-ui';
86
+ *
87
+ * export const POST = streamHandler({
88
+ * agent: ({ tools }) => buildAgent(tools), // a fresh agent per request
89
+ * adapter: agUi(),
90
+ * threads: { bind: ({ conversation, headers }) => bindToUser(conversation, headers) },
91
+ * sessions: memorySessions(),
92
+ * });
93
+ * ```
94
+ */
95
+ export function streamHandler(options) {
96
+ const { adapter, threads, sessions } = options;
97
+ const name = options.name ?? `${adapter.name} stream`;
98
+ if (typeof options.agent !== 'function') {
99
+ throw new TypeError(`[hosting] '${name}': agent must be a function that builds a FRESH runner for every ` +
100
+ `request — a runner holds one run's context, and one shared between requests would ` +
101
+ `hand one caller's run to another.`);
102
+ }
103
+ if (sessions !== undefined && threads === undefined) {
104
+ throw new TypeError(`[hosting] '${name}': sessions needs threads. A conversation is kept under the key the ` +
105
+ `app binds to its caller (threads.bind), never under the id a request names.`);
106
+ }
107
+ const limit = positive(options.maxBodyBytes, DEFAULT_STREAM_MAX_BODY_BYTES, 'maxBodyBytes', name);
108
+ const heartbeatMs = options.heartbeatMs ?? DEFAULT_STREAM_HEARTBEAT_MS;
109
+ if (!Number.isFinite(heartbeatMs) || heartbeatMs < 0) {
110
+ throw new TypeError(`[hosting] '${name}': heartbeatMs must be 0 (off) or a positive number.`);
111
+ }
112
+ const guard = doorGuard({ ...options, name });
113
+ const framing = adapter.framing();
114
+ const seal = requestSealing(options.sealRequest, name);
115
+ const bytes = new TextEncoder();
116
+ /**
117
+ * Bound conversations with a turn in flight — the key, and who holds it (so
118
+ * anybody else hears "not found", never "busy").
119
+ */
120
+ const inFlight = new Map();
121
+ /** Runners already used, by identity — so a factory that shares one is caught. */
122
+ const used = new WeakSet();
123
+ /** One answer for "none", "another's" and "nobody's" — a caller learns no ids. */
124
+ const notFound = () => new WireRequestRefusal('ERR_SESSION_NOT_FOUND', `'${name}': that conversation is not one you can open.`, 404);
125
+ /** Bind the conversation the request names to its caller — the app's port decides. */
126
+ async function bind(request, headers) {
127
+ if (threads === undefined)
128
+ return undefined;
129
+ const thread = await threads.bind({ conversation: adapter.conversation(request), headers });
130
+ if (thread === null || typeof thread !== 'object' || typeof thread.sessionId !== 'string') {
131
+ throw new TypeError('threads.bind returned no session');
132
+ }
133
+ const bad = checkSessionId(thread.sessionId, name);
134
+ if (bad !== undefined)
135
+ throw bad;
136
+ return thread;
137
+ }
138
+ /**
139
+ * The stored conversation, when it is the caller's — refusing one that is not.
140
+ * Asked BEFORE anything about the conversation's activity, so a caller it is
141
+ * not learns "not found" and never "busy" — and never holds its turn.
142
+ */
143
+ async function ownersOnly(thread) {
144
+ if (sessions === undefined || thread === undefined)
145
+ return undefined;
146
+ await sessions.onWake?.(thread.sessionId, 'invoke');
147
+ const stored = await sessions.hydrate(thread.sessionId);
148
+ // Whose conversation this is, before a line of it is read. One answer for
149
+ // "none", "another's" and "nobody's", so a caller learns no ids.
150
+ if (stored !== undefined && envelopeOwner(stored) !== thread.identity?.principal)
151
+ throw notFound();
152
+ return stored;
153
+ }
154
+ /** Read what the server holds for the bound conversation — under the turn's claim. */
155
+ async function hold(thread) {
156
+ const stored = await ownersOnly(thread);
157
+ if (stored === undefined)
158
+ return { view: { continues: false } };
159
+ if (stored.format === 'flowchart-v1') {
160
+ const paused = readPausedRun(stored);
161
+ const record = paused.wire?.protocol === adapter.name ? paused.wire.record : undefined;
162
+ return {
163
+ paused,
164
+ view: {
165
+ continues: false,
166
+ awaiting: {
167
+ pending: paused.pending,
168
+ ...(record !== undefined && { suspension: record }),
169
+ },
170
+ },
171
+ };
172
+ }
173
+ const prior = readEnvelope(stored);
174
+ return { prior, view: { continues: true } };
175
+ }
176
+ /** A fresh runner for this request — never one the factory handed out before. */
177
+ function build(context) {
178
+ const runner = options.agent(context);
179
+ if (runner === null ||
180
+ typeof runner !== 'object' ||
181
+ typeof runner.on !== 'function' ||
182
+ typeof runner.run !== 'function') {
183
+ throw new TypeError('agent returned no runner');
184
+ }
185
+ if (used.has(runner)) {
186
+ throw new WireRequestRefusal('ERR_RUNNER_REUSED', `'${name}': the agent factory returned a runner it returned before. Every ` +
187
+ `request needs a FRESH runner — a shared one hands one caller's run to another.`, 500);
188
+ }
189
+ used.add(runner);
190
+ return runner;
191
+ }
192
+ /** Keep what the run left behind, then say how it ended — kept FIRST, told after. */
193
+ async function keep(turn, out, recordRunId) {
194
+ const { thread, runner, held, translation } = turn;
195
+ const store = thread === undefined ? undefined : sessions;
196
+ if (isPaused(out)) {
197
+ const awaiting = adapter.awaitsCaller?.(out.pauseData) === true ? 'caller' : 'person';
198
+ if (store !== undefined && thread !== undefined) {
199
+ const record = translation.suspension?.(awaiting);
200
+ const conversation = runner.checkpoint?.() ?? noConversation(turn, recordRunId, thread.identity);
201
+ await store.persist(thread.sessionId, toPausedEnvelope({
202
+ checkpoint: out.checkpoint,
203
+ conversation,
204
+ pending: describePause(out, thread.sessionId),
205
+ ...(record !== undefined && { wire: { protocol: adapter.name, record } }),
206
+ }));
207
+ }
208
+ return { kind: 'paused', awaiting };
209
+ }
210
+ if (store !== undefined && thread !== undefined) {
211
+ const conversation = runner.checkpoint?.();
212
+ if (conversation !== undefined)
213
+ await store.persist(thread.sessionId, toEnvelope(conversation));
214
+ // A runner that keeps no conversation still clears the pause it continued.
215
+ else if (held.paused !== undefined)
216
+ await store.persist(thread.sessionId, toEnvelope(noConversation(turn, recordRunId, thread.identity)));
217
+ }
218
+ return { kind: 'finished' };
219
+ }
220
+ /** Run the turn; every event the run serves goes through the translation; settle once. */
221
+ async function serve(turn, write, signal, release) {
222
+ const { plan, held, thread, runner, translation, request } = turn;
223
+ // A translation that throws is a fault in the adapter, never the run's: the
224
+ // run goes on, and the stream still ends.
225
+ const safely = (produce) => {
226
+ try {
227
+ write(produce());
228
+ }
229
+ catch {
230
+ // nothing more this request can be told
231
+ }
232
+ };
233
+ let runId;
234
+ let off;
235
+ let settlement;
236
+ try {
237
+ // The runner is this request's alone; the run filter still holds a fact a
238
+ // shared resource stamped for another run or session out of the stream.
239
+ off = runner.on('*', (event) => {
240
+ const named = event.meta?.runId;
241
+ if (runId === undefined && typeof named === 'string' && named !== CONSUMER_SCOPE_RUN_ID)
242
+ runId = named;
243
+ if (!eventBelongsToRun(event.meta, { runId: runId ?? '', sessionId: thread?.sessionId }))
244
+ return;
245
+ safely(() => translation.event(event));
246
+ });
247
+ if (signal.aborted)
248
+ throw new Error('the caller left before the run started');
249
+ const runOptions = {
250
+ signal,
251
+ ...(thread !== undefined && { sessionId: thread.sessionId }),
252
+ ...(thread?.identity !== undefined && { identity: thread.identity }),
253
+ ...(request !== undefined && { request }),
254
+ };
255
+ const out = plan.turn.kind === 'answer'
256
+ ? await runner.resume(held.paused.checkpoint, plan.turn.answer, runOptions)
257
+ : await runner.run((typeof runner.checkpoint === 'function' && held.prior !== undefined
258
+ ? { message: plan.turn.message, continueFrom: held.prior }
259
+ : { message: plan.turn.message }), runOptions);
260
+ settlement = await keep(turn, out, runId);
261
+ }
262
+ catch {
263
+ settlement = { kind: signal.aborted ? 'cancelled' : 'failed' };
264
+ }
265
+ finally {
266
+ // The conversation is free BEFORE the caller hears the end — and before
267
+ // anything else that could throw: a client that answers on RUN_FINISHED
268
+ // must not find its own turn still running, ever.
269
+ release();
270
+ try {
271
+ if (typeof off === 'function')
272
+ off();
273
+ }
274
+ catch {
275
+ // a runner that cannot unsubscribe is thrown away with this request
276
+ }
277
+ }
278
+ safely(() => translation.settle(settlement));
279
+ // Tool sessions this request's runner opened close with it; a strategy the
280
+ // app shares between runners is drained, never stopped.
281
+ void runner.shutdown?.({ stop: false })?.catch(() => undefined);
282
+ }
283
+ function respond(turn, request, release) {
284
+ const abort = new AbortController();
285
+ const hangUp = () => abort.abort();
286
+ // A caller already gone never starts its run.
287
+ if (request.signal?.aborted === true)
288
+ abort.abort();
289
+ else
290
+ request.signal?.addEventListener('abort', hangUp, { once: true });
291
+ let closed = false;
292
+ let heartbeat;
293
+ const stop = () => {
294
+ closed = true;
295
+ if (heartbeat !== undefined)
296
+ clearInterval(heartbeat);
297
+ request.signal?.removeEventListener('abort', hangUp);
298
+ };
299
+ const body = new ReadableStream({
300
+ start(controller) {
301
+ const send = (text) => {
302
+ if (closed)
303
+ return;
304
+ try {
305
+ controller.enqueue(bytes.encode(text));
306
+ }
307
+ catch {
308
+ stop(); // the stream went away under us
309
+ }
310
+ };
311
+ // This stream's own count — never the framing's, never another stream's.
312
+ let written = 0;
313
+ const write = (events) => {
314
+ for (const event of events) {
315
+ const frame = framing.frame(event, { sequence: written + 1 });
316
+ written += 1;
317
+ send(frame);
318
+ }
319
+ };
320
+ if (heartbeatMs > 0) {
321
+ heartbeat = setInterval(() => send(': ping\n\n'), heartbeatMs);
322
+ heartbeat.unref?.();
323
+ }
324
+ const end = () => {
325
+ if (closed)
326
+ return;
327
+ stop();
328
+ try {
329
+ controller.close();
330
+ }
331
+ catch {
332
+ // already closed by the reader
333
+ }
334
+ };
335
+ void serve(turn, write, abort.signal, release).then(end, end);
336
+ },
337
+ cancel() {
338
+ stop();
339
+ abort.abort();
340
+ },
341
+ });
342
+ return new Response(body, {
343
+ status: 200,
344
+ headers: {
345
+ 'content-type': framing.contentType,
346
+ 'cache-control': 'no-cache, no-transform',
347
+ 'x-accel-buffering': 'no',
348
+ },
349
+ });
350
+ }
351
+ return async (request) => {
352
+ /** The conversation this request holds while it is in flight — released exactly once. */
353
+ let claimed;
354
+ const release = () => {
355
+ if (claimed !== undefined)
356
+ inFlight.delete(claimed);
357
+ claimed = undefined;
358
+ };
359
+ try {
360
+ if (request.method !== 'POST') {
361
+ return refusal(405, `[hosting] '${name}' answers POST only.`, 'ERR_METHOD_NOT_ALLOWED', {
362
+ allow: 'POST',
363
+ });
364
+ }
365
+ // Frozen: the reader, the binder and the sealer each read the same headers.
366
+ const headers = Object.freeze(headersOf(request));
367
+ const refused = guard.check({ method: request.method, headers });
368
+ if (refused !== undefined)
369
+ return refusal(refused.status, refused.message, refused.code);
370
+ const text = await readBody(request, limit, name);
371
+ let body;
372
+ try {
373
+ body = text.trim() === '' ? {} : JSON.parse(text);
374
+ }
375
+ catch {
376
+ return refusal(400, `[hosting] '${name}': the request body is not JSON.`, 'ERR_INVALID_JSON');
377
+ }
378
+ const read = adapter.readRequest({ body, headers });
379
+ const thread = await bind(read, headers);
380
+ if (thread !== undefined) {
381
+ // Ownership first: a caller the conversation is not answered "not
382
+ // found" whether or not a turn is running, and never claims it.
383
+ await ownersOnly(thread);
384
+ const principal = thread.identity?.principal;
385
+ if (inFlight.has(thread.sessionId)) {
386
+ // Even before a first turn has stored anything: the claimant is the owner.
387
+ if (inFlight.get(thread.sessionId) !== principal)
388
+ throw notFound();
389
+ return refusal(409, `[hosting] '${name}': a turn of that conversation is already in flight. Send the ` +
390
+ `next turn when it ends.`, 'ERR_CONCURRENT_RUN');
391
+ }
392
+ inFlight.set(thread.sessionId, principal);
393
+ claimed = thread.sessionId;
394
+ }
395
+ const held = await hold(thread);
396
+ const plan = adapter.plan(read, held.view, {
397
+ headers,
398
+ ...(thread !== undefined && { thread }),
399
+ keepsConversation: threads !== undefined,
400
+ keepsPauses: threads !== undefined && sessions !== undefined,
401
+ });
402
+ // Sealed only for a request that runs: every refusal is behind it.
403
+ const sealed = await seal?.({ headers });
404
+ const runner = build({
405
+ tools: plan.tools ?? [],
406
+ accepted: plan.accepted ?? {},
407
+ ...(thread !== undefined && { thread }),
408
+ });
409
+ const translation = adapter.open(read, plan.turn.kind === 'answer' ? held.view.awaiting?.suspension : undefined);
410
+ // The stream owns the claim from here: released when the run ends.
411
+ const owned = claimed;
412
+ claimed = undefined;
413
+ return respond({
414
+ plan,
415
+ held,
416
+ ...(thread !== undefined && { thread }),
417
+ runner,
418
+ translation,
419
+ ...(sealed !== undefined && { request: sealed }),
420
+ }, request, () => {
421
+ if (owned !== undefined)
422
+ inFlight.delete(owned);
423
+ });
424
+ }
425
+ catch (err) {
426
+ return failure(err, name);
427
+ }
428
+ finally {
429
+ release();
430
+ }
431
+ };
432
+ }
433
+ /**
434
+ * A conversation record for a runner that keeps none (an `LLMCall`, a
435
+ * composition): no history, only what a stored session needs — the run, the
436
+ * message, and whose it is.
437
+ */
438
+ function noConversation(turn, recordRunId, identity) {
439
+ const message = turn.plan.turn.kind === 'message'
440
+ ? turn.plan.turn.message
441
+ : turn.held.paused?.conversation.originalInput.message ?? '';
442
+ return {
443
+ version: 1,
444
+ runId: recordRunId ?? 'unknown',
445
+ history: [],
446
+ lastCompletedIteration: 0,
447
+ originalInput: { message },
448
+ checkpointedAt: Date.now(),
449
+ ...(identity !== undefined && { identity }),
450
+ };
451
+ }
452
+ /** The refusal an error means — its own status and code, or a 500 that quotes nothing. */
453
+ function failure(err, name) {
454
+ if (err instanceof RequestTooLargeError)
455
+ return refusal(413, err.message, err.code);
456
+ if (err instanceof WireRequestRefusal)
457
+ return refusal(err.status, err.message, err.code);
458
+ const code = err?.code;
459
+ if (err instanceof Error && typeof code === 'string' && REFUSAL_STATUS[code] !== undefined) {
460
+ return refusal(REFUSAL_STATUS[code], err.message, code);
461
+ }
462
+ // Never the thrown message: it is the author's note to their own logs.
463
+ return refusal(500, `[hosting] '${name}' could not serve the request.`, 'ERR_INTERNAL');
464
+ }
465
+ /** A JSON refusal: `{ error, code }` under the refusal's own status. */
466
+ function refusal(status, message, code, headers = {}) {
467
+ return new Response(toWireJson({ error: message, code }), {
468
+ status,
469
+ headers: { 'content-type': 'application/json', ...headers },
470
+ });
471
+ }
472
+ /** The request's headers, names lower-cased (the door guard's and an adapter's view). */
473
+ function headersOf(request) {
474
+ const out = {};
475
+ request.headers.forEach((value, key) => {
476
+ out[key.toLowerCase()] = value;
477
+ });
478
+ return out;
479
+ }
480
+ /** The body as text, refused at the byte that crosses `limit`. */
481
+ async function readBody(request, limit, name) {
482
+ const declared = Number(request.headers.get('content-length'));
483
+ if (Number.isFinite(declared) && declared > limit)
484
+ throw new RequestTooLargeError(limit, name);
485
+ if (request.body === null)
486
+ return '';
487
+ const reader = request.body.getReader();
488
+ const chunks = [];
489
+ let size = 0;
490
+ for (;;) {
491
+ const { done, value } = await reader.read();
492
+ if (done)
493
+ break;
494
+ size += value.byteLength;
495
+ if (size > limit) {
496
+ await reader.cancel().catch(() => undefined);
497
+ throw new RequestTooLargeError(limit, name);
498
+ }
499
+ chunks.push(value);
500
+ }
501
+ const all = new Uint8Array(size);
502
+ let at = 0;
503
+ for (const chunk of chunks) {
504
+ all.set(chunk, at);
505
+ at += chunk.byteLength;
506
+ }
507
+ return new TextDecoder().decode(all);
508
+ }
509
+ function positive(value, fallback, field, name) {
510
+ if (value === undefined)
511
+ return fallback;
512
+ if (!Number.isInteger(value) || value <= 0) {
513
+ throw new TypeError(`[hosting] '${name}': ${field} must be a positive whole number of bytes.`);
514
+ }
515
+ return value;
516
+ }
517
+ //# sourceMappingURL=streamHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamHandler.js","sourceRoot":"","sources":["../../../src/hosting/streamHandler.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ import type { AnswerAccountsOptions } from './answerAccounts.js';
34
34
  import type { DoorIdentity } from './identityVerification.js';
35
35
  import type { AdmissionPolicy } from './admission.js';
36
36
  import type { IngressSink } from './ingressRecord.js';
37
+ import type { RequestSealer } from './requestSealing.js';
37
38
  import type { SessionSummary, SessionWireRequest, SessionWireResult } from './sessionWire.js';
38
39
  export type { Unsubscribe };
39
40
  /**
@@ -871,6 +872,21 @@ export interface PausedRun {
871
872
  readonly conversation: AgentRunCheckpoint;
872
873
  /** What the run is waiting on, as data. */
873
874
  readonly pending: PendingAsk;
875
+ /**
876
+ * What the WIRE that served the pause recorded about it — the ids it handed
877
+ * the caller for the answer — so a later request on that wire is matched to
878
+ * this pause and continued as the same invocation (`streamHandler` keeps the
879
+ * AG-UI adapter's record here). Absent for a pause a door with nothing to
880
+ * remember stored, and opaque to the store and to every other door.
881
+ */
882
+ readonly wire?: PausedWire;
883
+ }
884
+ /** One wire protocol's own record of a pause it served — see {@link PausedRun.wire}. */
885
+ export interface PausedWire {
886
+ /** The protocol that recorded it: the protocol adapter's `name`. */
887
+ readonly protocol: string;
888
+ /** Plain JSON, the protocol's own; ids and names, never a value of the run. */
889
+ readonly record: unknown;
874
890
  }
875
891
  /**
876
892
  * The question a paused run is waiting on — the part of a pause that is safe to
@@ -1402,6 +1418,34 @@ export interface StandingAgentBaseOptions<TH extends HostHandle = HostHandle> {
1402
1418
  * decided against a window none of them had joined.
1403
1419
  */
1404
1420
  readonly admission?: AdmissionPolicy;
1421
+ /**
1422
+ * Seal the credential a request carries for its run — a gateway's
1423
+ * per-request token in a header, read by a `requestCredentials` provider
1424
+ * (`agentfootprint/security`) for the tools that declare a `needs` for it.
1425
+ *
1426
+ * Called once per request that RUNS (a turn or an answer — never an
1427
+ * artifact or session op, never a refused request), after the caller is
1428
+ * verified and the session's ownership is checked, with the request's
1429
+ * headers ({@link HostRequest.headers}: `nodeHost` and `httpHost` deliver
1430
+ * them) and nothing else. Return
1431
+ * `requestContext({ secrets })`, or `undefined` for a request that carries
1432
+ * none; the handle goes to THAT request's `run()` / `resume()` only — never
1433
+ * the reply, the stored session or the checkpoint, so a resumed run is
1434
+ * served the RESUMING request's credential. A handle any host was handed
1435
+ * before is refused; a sealer that throws refuses the request in fixed words
1436
+ * (`ERR_REQUEST_NOT_SEALED`, 400) — so decrypt at vend time
1437
+ * (`decodedWith`), not here. The HANDLE never reaches a reply; a tool that
1438
+ * returns the credential's value itself does (`hostFilled` scrubs an echo).
1439
+ *
1440
+ * Unset — the default — no run carries a request, exactly as before.
1441
+ *
1442
+ * @example
1443
+ * sealRequest: ({ headers }) =>
1444
+ * headers['x-crm-token'] === undefined
1445
+ * ? undefined
1446
+ * : requestContext({ secrets: { crmToken: headers['x-crm-token'] } }),
1447
+ */
1448
+ readonly sealRequest?: RequestSealer;
1405
1449
  /**
1406
1450
  * Where this door's ingress decisions go (9.32.0) — one record per request,
1407
1451
  * including every request that never became a run.
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hosting/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAoxCH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AA2QxC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD;iFACiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hosting/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAqyCH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAuSxC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD;iFACiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * verifiedThreads — the {@link ThreadBinder} that binds a thread to a VERIFIED
3
+ * caller, so the secure binding is the one-line one.
4
+ *
5
+ * A request names a thread; naming one proves nothing. This binder checks the
6
+ * caller's credential with the door's own identity verification
7
+ * (`verifyRequestIdentity` — the bearer token, through your verifier), never a
8
+ * header read as a name, and keys the conversation by WHO
9
+ * plus WHICH: the same thread id from two people is two conversations. The
10
+ * run's `identity` names the verified person, so a stored conversation records
11
+ * its owner and a later request from anyone else is refused as not found.
12
+ *
13
+ * A caller with no credential is REFUSED (401), even at a door that allows
14
+ * anonymous requests elsewhere: a thread with no owner would be anybody's who
15
+ * guessed its id.
16
+ */
17
+ import { type IdentityVerificationOptions } from './identityVerification.js';
18
+ import type { ThreadBinder } from './protocolAdapter.js';
19
+ /**
20
+ * Bind every thread to the caller `identity` verifies.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { jwksIdentity } from 'agentfootprint/security';
25
+ * const threads = verifiedThreads(jwksIdentity({ jwksUrl, issuer, audience }));
26
+ * streamHandler({ agent, adapter: agUi(), threads, sessions: memorySessions() });
27
+ * ```
28
+ */
29
+ export declare function verifiedThreads(identity: IdentityVerificationOptions): ThreadBinder;