@truefoundry/trueforge-core 0.0.0 → 0.1.0-rc.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 (557) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agent-session/ITurnResourceResolver.d.ts +69 -0
  3. package/dist/agent-session/ITurnResourceResolver.d.ts.map +1 -0
  4. package/dist/agent-session/ITurnResourceResolver.js +19 -0
  5. package/dist/agent-session/ITurnResourceResolver.js.map +1 -0
  6. package/dist/agent-session/ITurnResourceResolver.mjs +1 -0
  7. package/dist/agent-session/ITurnResourceResolver.mjs.map +1 -0
  8. package/dist/agent-session/SessionHandle.d.ts +81 -0
  9. package/dist/agent-session/SessionHandle.d.ts.map +1 -0
  10. package/dist/agent-session/SessionHandle.js +392 -0
  11. package/dist/agent-session/SessionHandle.js.map +1 -0
  12. package/dist/agent-session/SessionHandle.mjs +371 -0
  13. package/dist/agent-session/SessionHandle.mjs.map +1 -0
  14. package/dist/agent-session/Sessions.d.ts +25 -0
  15. package/dist/agent-session/Sessions.d.ts.map +1 -0
  16. package/dist/agent-session/Sessions.js +71 -0
  17. package/dist/agent-session/Sessions.js.map +1 -0
  18. package/dist/agent-session/Sessions.mjs +46 -0
  19. package/dist/agent-session/Sessions.mjs.map +1 -0
  20. package/dist/agent-session/TurnHandle.d.ts +88 -0
  21. package/dist/agent-session/TurnHandle.d.ts.map +1 -0
  22. package/dist/agent-session/TurnHandle.js +490 -0
  23. package/dist/agent-session/TurnHandle.js.map +1 -0
  24. package/dist/agent-session/TurnHandle.mjs +469 -0
  25. package/dist/agent-session/TurnHandle.mjs.map +1 -0
  26. package/dist/agent-session/TurnResourceResolver.d.ts +154 -0
  27. package/dist/agent-session/TurnResourceResolver.d.ts.map +1 -0
  28. package/dist/agent-session/TurnResourceResolver.js +178 -0
  29. package/dist/agent-session/TurnResourceResolver.js.map +1 -0
  30. package/dist/agent-session/TurnResourceResolver.mjs +153 -0
  31. package/dist/agent-session/TurnResourceResolver.mjs.map +1 -0
  32. package/dist/agent-session/builtinsFromSpec.d.ts +19 -0
  33. package/dist/agent-session/builtinsFromSpec.d.ts.map +1 -0
  34. package/dist/agent-session/builtinsFromSpec.js +73 -0
  35. package/dist/agent-session/builtinsFromSpec.js.map +1 -0
  36. package/dist/agent-session/builtinsFromSpec.mjs +48 -0
  37. package/dist/agent-session/builtinsFromSpec.mjs.map +1 -0
  38. package/dist/agent-session/index.d.ts +29 -0
  39. package/dist/agent-session/index.d.ts.map +1 -0
  40. package/dist/agent-session/index.js +117 -0
  41. package/dist/agent-session/index.js.map +1 -0
  42. package/dist/agent-session/index.mjs +84 -0
  43. package/dist/agent-session/index.mjs.map +1 -0
  44. package/dist/agent-session/models/SessionRecord.d.ts +34 -0
  45. package/dist/agent-session/models/SessionRecord.d.ts.map +1 -0
  46. package/dist/agent-session/models/SessionRecord.js +19 -0
  47. package/dist/agent-session/models/SessionRecord.js.map +1 -0
  48. package/dist/agent-session/models/SessionRecord.mjs +1 -0
  49. package/dist/agent-session/models/SessionRecord.mjs.map +1 -0
  50. package/dist/agent-session/models/TurnRecord.d.ts +37 -0
  51. package/dist/agent-session/models/TurnRecord.d.ts.map +1 -0
  52. package/dist/agent-session/models/TurnRecord.js +31 -0
  53. package/dist/agent-session/models/TurnRecord.js.map +1 -0
  54. package/dist/agent-session/models/TurnRecord.mjs +6 -0
  55. package/dist/agent-session/models/TurnRecord.mjs.map +1 -0
  56. package/dist/agent-session/schemas/agentSpec.d.ts +142 -0
  57. package/dist/agent-session/schemas/agentSpec.d.ts.map +1 -0
  58. package/dist/agent-session/schemas/agentSpec.js +170 -0
  59. package/dist/agent-session/schemas/agentSpec.js.map +1 -0
  60. package/dist/agent-session/schemas/agentSpec.mjs +154 -0
  61. package/dist/agent-session/schemas/agentSpec.mjs.map +1 -0
  62. package/dist/agent-session/schemas/events.d.ts +1037 -0
  63. package/dist/agent-session/schemas/events.d.ts.map +1 -0
  64. package/dist/agent-session/schemas/events.js +80 -0
  65. package/dist/agent-session/schemas/events.js.map +1 -0
  66. package/dist/agent-session/schemas/events.mjs +69 -0
  67. package/dist/agent-session/schemas/events.mjs.map +1 -0
  68. package/dist/agent-session/schemas/pagination.d.ts +9 -0
  69. package/dist/agent-session/schemas/pagination.d.ts.map +1 -0
  70. package/dist/agent-session/schemas/pagination.js +36 -0
  71. package/dist/agent-session/schemas/pagination.js.map +1 -0
  72. package/dist/agent-session/schemas/pagination.mjs +11 -0
  73. package/dist/agent-session/schemas/pagination.mjs.map +1 -0
  74. package/dist/agent-session/schemas/session.d.ts +319 -0
  75. package/dist/agent-session/schemas/session.d.ts.map +1 -0
  76. package/dist/agent-session/schemas/session.js +58 -0
  77. package/dist/agent-session/schemas/session.js.map +1 -0
  78. package/dist/agent-session/schemas/session.mjs +30 -0
  79. package/dist/agent-session/schemas/session.mjs.map +1 -0
  80. package/dist/agent-session/schemas/turn.d.ts +494 -0
  81. package/dist/agent-session/schemas/turn.d.ts.map +1 -0
  82. package/dist/agent-session/schemas/turn.js +131 -0
  83. package/dist/agent-session/schemas/turn.js.map +1 -0
  84. package/dist/agent-session/schemas/turn.mjs +102 -0
  85. package/dist/agent-session/schemas/turn.mjs.map +1 -0
  86. package/dist/agent-session/store/ISessionStore.d.ts +310 -0
  87. package/dist/agent-session/store/ISessionStore.d.ts.map +1 -0
  88. package/dist/agent-session/store/ISessionStore.js +19 -0
  89. package/dist/agent-session/store/ISessionStore.js.map +1 -0
  90. package/dist/agent-session/store/ISessionStore.mjs +1 -0
  91. package/dist/agent-session/store/ISessionStore.mjs.map +1 -0
  92. package/dist/agent-session/store/InMemorySessionStore.d.ts +55 -0
  93. package/dist/agent-session/store/InMemorySessionStore.d.ts.map +1 -0
  94. package/dist/agent-session/store/InMemorySessionStore.js +475 -0
  95. package/dist/agent-session/store/InMemorySessionStore.js.map +1 -0
  96. package/dist/agent-session/store/InMemorySessionStore.mjs +461 -0
  97. package/dist/agent-session/store/InMemorySessionStore.mjs.map +1 -0
  98. package/dist/agent-session/store/OffsetPageToken.d.ts +13 -0
  99. package/dist/agent-session/store/OffsetPageToken.d.ts.map +1 -0
  100. package/dist/agent-session/store/OffsetPageToken.js +60 -0
  101. package/dist/agent-session/store/OffsetPageToken.js.map +1 -0
  102. package/dist/agent-session/store/OffsetPageToken.mjs +32 -0
  103. package/dist/agent-session/store/OffsetPageToken.mjs.map +1 -0
  104. package/dist/agent-session/store/PageToken.d.ts +4 -0
  105. package/dist/agent-session/store/PageToken.d.ts.map +1 -0
  106. package/dist/agent-session/store/PageToken.js +45 -0
  107. package/dist/agent-session/store/PageToken.js.map +1 -0
  108. package/dist/agent-session/store/PageToken.mjs +19 -0
  109. package/dist/agent-session/store/PageToken.mjs.map +1 -0
  110. package/dist/agent-session/store/SessionEventPageToken.d.ts +14 -0
  111. package/dist/agent-session/store/SessionEventPageToken.d.ts.map +1 -0
  112. package/dist/agent-session/store/SessionEventPageToken.js +70 -0
  113. package/dist/agent-session/store/SessionEventPageToken.js.map +1 -0
  114. package/dist/agent-session/store/SessionEventPageToken.mjs +42 -0
  115. package/dist/agent-session/store/SessionEventPageToken.mjs.map +1 -0
  116. package/dist/agent-session/store/SessionListPageToken.d.ts +24 -0
  117. package/dist/agent-session/store/SessionListPageToken.d.ts.map +1 -0
  118. package/dist/agent-session/store/SessionListPageToken.js +66 -0
  119. package/dist/agent-session/store/SessionListPageToken.js.map +1 -0
  120. package/dist/agent-session/store/SessionListPageToken.mjs +38 -0
  121. package/dist/agent-session/store/SessionListPageToken.mjs.map +1 -0
  122. package/dist/agent-session/store/SessionStoreErrors.d.ts +43 -0
  123. package/dist/agent-session/store/SessionStoreErrors.d.ts.map +1 -0
  124. package/dist/agent-session/store/SessionStoreErrors.js +126 -0
  125. package/dist/agent-session/store/SessionStoreErrors.js.map +1 -0
  126. package/dist/agent-session/store/SessionStoreErrors.mjs +92 -0
  127. package/dist/agent-session/store/SessionStoreErrors.mjs.map +1 -0
  128. package/dist/agent-session/store/assertCreateTurnThreadDelta.d.ts +18 -0
  129. package/dist/agent-session/store/assertCreateTurnThreadDelta.d.ts.map +1 -0
  130. package/dist/agent-session/store/assertCreateTurnThreadDelta.js +67 -0
  131. package/dist/agent-session/store/assertCreateTurnThreadDelta.js.map +1 -0
  132. package/dist/agent-session/store/assertCreateTurnThreadDelta.mjs +42 -0
  133. package/dist/agent-session/store/assertCreateTurnThreadDelta.mjs.map +1 -0
  134. package/dist/core/InstructionBuilder.d.ts +71 -0
  135. package/dist/core/InstructionBuilder.d.ts.map +1 -0
  136. package/dist/core/InstructionBuilder.js +95 -0
  137. package/dist/core/InstructionBuilder.js.map +1 -0
  138. package/dist/core/InstructionBuilder.mjs +69 -0
  139. package/dist/core/InstructionBuilder.mjs.map +1 -0
  140. package/dist/core/capabilities/AgentCapability.d.ts +32 -0
  141. package/dist/core/capabilities/AgentCapability.d.ts.map +1 -0
  142. package/dist/core/capabilities/AgentCapability.js +19 -0
  143. package/dist/core/capabilities/AgentCapability.js.map +1 -0
  144. package/dist/core/capabilities/AgentCapability.mjs +1 -0
  145. package/dist/core/capabilities/AgentCapability.mjs.map +1 -0
  146. package/dist/core/capabilities/AgentContextProcessor.d.ts +30 -0
  147. package/dist/core/capabilities/AgentContextProcessor.d.ts.map +1 -0
  148. package/dist/core/capabilities/AgentContextProcessor.js +19 -0
  149. package/dist/core/capabilities/AgentContextProcessor.js.map +1 -0
  150. package/dist/core/capabilities/AgentContextProcessor.mjs +1 -0
  151. package/dist/core/capabilities/AgentContextProcessor.mjs.map +1 -0
  152. package/dist/core/capabilities/ToolResponseProcessor.d.ts +12 -0
  153. package/dist/core/capabilities/ToolResponseProcessor.d.ts.map +1 -0
  154. package/dist/core/capabilities/ToolResponseProcessor.js +19 -0
  155. package/dist/core/capabilities/ToolResponseProcessor.js.map +1 -0
  156. package/dist/core/capabilities/ToolResponseProcessor.mjs +1 -0
  157. package/dist/core/capabilities/ToolResponseProcessor.mjs.map +1 -0
  158. package/dist/core/capabilities/builtins/AskUserQuestion.d.ts +11 -0
  159. package/dist/core/capabilities/builtins/AskUserQuestion.d.ts.map +1 -0
  160. package/dist/core/capabilities/builtins/AskUserQuestion.js +90 -0
  161. package/dist/core/capabilities/builtins/AskUserQuestion.js.map +1 -0
  162. package/dist/core/capabilities/builtins/AskUserQuestion.mjs +64 -0
  163. package/dist/core/capabilities/builtins/AskUserQuestion.mjs.map +1 -0
  164. package/dist/core/capabilities/builtins/ContextCompaction.d.ts +23 -0
  165. package/dist/core/capabilities/builtins/ContextCompaction.d.ts.map +1 -0
  166. package/dist/core/capabilities/builtins/ContextCompaction.js +235 -0
  167. package/dist/core/capabilities/builtins/ContextCompaction.js.map +1 -0
  168. package/dist/core/capabilities/builtins/ContextCompaction.mjs +208 -0
  169. package/dist/core/capabilities/builtins/ContextCompaction.mjs.map +1 -0
  170. package/dist/core/capabilities/builtins/CurrentDateTime.d.ts +17 -0
  171. package/dist/core/capabilities/builtins/CurrentDateTime.d.ts.map +1 -0
  172. package/dist/core/capabilities/builtins/CurrentDateTime.js +75 -0
  173. package/dist/core/capabilities/builtins/CurrentDateTime.js.map +1 -0
  174. package/dist/core/capabilities/builtins/CurrentDateTime.mjs +47 -0
  175. package/dist/core/capabilities/builtins/CurrentDateTime.mjs.map +1 -0
  176. package/dist/core/capabilities/builtins/DynamicSubAgents.d.ts +39 -0
  177. package/dist/core/capabilities/builtins/DynamicSubAgents.d.ts.map +1 -0
  178. package/dist/core/capabilities/builtins/DynamicSubAgents.js +176 -0
  179. package/dist/core/capabilities/builtins/DynamicSubAgents.js.map +1 -0
  180. package/dist/core/capabilities/builtins/DynamicSubAgents.mjs +134 -0
  181. package/dist/core/capabilities/builtins/DynamicSubAgents.mjs.map +1 -0
  182. package/dist/core/capabilities/builtins/LargeToolResponse.d.ts +40 -0
  183. package/dist/core/capabilities/builtins/LargeToolResponse.d.ts.map +1 -0
  184. package/dist/core/capabilities/builtins/LargeToolResponse.js +225 -0
  185. package/dist/core/capabilities/builtins/LargeToolResponse.js.map +1 -0
  186. package/dist/core/capabilities/builtins/LargeToolResponse.mjs +186 -0
  187. package/dist/core/capabilities/builtins/LargeToolResponse.mjs.map +1 -0
  188. package/dist/core/capabilities/builtins/OpenUI.d.ts +31 -0
  189. package/dist/core/capabilities/builtins/OpenUI.d.ts.map +1 -0
  190. package/dist/core/capabilities/builtins/OpenUI.js +376 -0
  191. package/dist/core/capabilities/builtins/OpenUI.js.map +1 -0
  192. package/dist/core/capabilities/builtins/OpenUI.mjs +326 -0
  193. package/dist/core/capabilities/builtins/OpenUI.mjs.map +1 -0
  194. package/dist/core/errors.d.ts +33 -0
  195. package/dist/core/errors.d.ts.map +1 -0
  196. package/dist/core/errors.js +88 -0
  197. package/dist/core/errors.js.map +1 -0
  198. package/dist/core/errors.mjs +57 -0
  199. package/dist/core/errors.mjs.map +1 -0
  200. package/dist/core/events/PassthroughEvents.d.ts +30 -0
  201. package/dist/core/events/PassthroughEvents.d.ts.map +1 -0
  202. package/dist/core/events/PassthroughEvents.js +19 -0
  203. package/dist/core/events/PassthroughEvents.js.map +1 -0
  204. package/dist/core/events/PassthroughEvents.mjs +1 -0
  205. package/dist/core/events/PassthroughEvents.mjs.map +1 -0
  206. package/dist/core/events/schema.d.ts +1103 -0
  207. package/dist/core/events/schema.d.ts.map +1 -0
  208. package/dist/core/events/schema.js +337 -0
  209. package/dist/core/events/schema.js.map +1 -0
  210. package/dist/core/events/schema.mjs +283 -0
  211. package/dist/core/events/schema.mjs.map +1 -0
  212. package/dist/core/index.d.ts +60 -0
  213. package/dist/core/index.d.ts.map +1 -0
  214. package/dist/core/index.js +209 -0
  215. package/dist/core/index.js.map +1 -0
  216. package/dist/core/index.mjs +144 -0
  217. package/dist/core/index.mjs.map +1 -0
  218. package/dist/core/llm/ILLM.d.ts +15 -0
  219. package/dist/core/llm/ILLM.d.ts.map +1 -0
  220. package/dist/core/llm/ILLM.js +19 -0
  221. package/dist/core/llm/ILLM.js.map +1 -0
  222. package/dist/core/llm/ILLM.mjs +1 -0
  223. package/dist/core/llm/ILLM.mjs.map +1 -0
  224. package/dist/core/llm/LLMTypes.d.ts +369 -0
  225. package/dist/core/llm/LLMTypes.d.ts.map +1 -0
  226. package/dist/core/llm/LLMTypes.js +170 -0
  227. package/dist/core/llm/LLMTypes.js.map +1 -0
  228. package/dist/core/llm/LLMTypes.mjs +133 -0
  229. package/dist/core/llm/LLMTypes.mjs.map +1 -0
  230. package/dist/core/llm/VercelAILLM.d.ts +228 -0
  231. package/dist/core/llm/VercelAILLM.d.ts.map +1 -0
  232. package/dist/core/llm/VercelAILLM.js +1042 -0
  233. package/dist/core/llm/VercelAILLM.js.map +1 -0
  234. package/dist/core/llm/VercelAILLM.mjs +999 -0
  235. package/dist/core/llm/VercelAILLM.mjs.map +1 -0
  236. package/dist/core/llm/openaiSchemas.d.ts +190 -0
  237. package/dist/core/llm/openaiSchemas.d.ts.map +1 -0
  238. package/dist/core/llm/openaiSchemas.js +144 -0
  239. package/dist/core/llm/openaiSchemas.js.map +1 -0
  240. package/dist/core/llm/openaiSchemas.mjs +107 -0
  241. package/dist/core/llm/openaiSchemas.mjs.map +1 -0
  242. package/dist/core/llm/responseFormat.d.ts +25 -0
  243. package/dist/core/llm/responseFormat.d.ts.map +1 -0
  244. package/dist/core/llm/responseFormat.js +58 -0
  245. package/dist/core/llm/responseFormat.js.map +1 -0
  246. package/dist/core/llm/responseFormat.mjs +32 -0
  247. package/dist/core/llm/responseFormat.mjs.map +1 -0
  248. package/dist/core/llm/toOpenAIChatMessage.d.ts +11 -0
  249. package/dist/core/llm/toOpenAIChatMessage.d.ts.map +1 -0
  250. package/dist/core/llm/toOpenAIChatMessage.js +95 -0
  251. package/dist/core/llm/toOpenAIChatMessage.js.map +1 -0
  252. package/dist/core/llm/toOpenAIChatMessage.mjs +70 -0
  253. package/dist/core/llm/toOpenAIChatMessage.mjs.map +1 -0
  254. package/dist/core/llm/usage.d.ts +4 -0
  255. package/dist/core/llm/usage.d.ts.map +1 -0
  256. package/dist/core/llm/usage.js +52 -0
  257. package/dist/core/llm/usage.js.map +1 -0
  258. package/dist/core/llm/usage.mjs +26 -0
  259. package/dist/core/llm/usage.mjs.map +1 -0
  260. package/dist/core/mcp/ClientSideTool.d.ts +10 -0
  261. package/dist/core/mcp/ClientSideTool.d.ts.map +1 -0
  262. package/dist/core/mcp/ClientSideTool.js +56 -0
  263. package/dist/core/mcp/ClientSideTool.js.map +1 -0
  264. package/dist/core/mcp/ClientSideTool.mjs +31 -0
  265. package/dist/core/mcp/ClientSideTool.mjs.map +1 -0
  266. package/dist/core/mcp/IMCPServer.d.ts +78 -0
  267. package/dist/core/mcp/IMCPServer.d.ts.map +1 -0
  268. package/dist/core/mcp/IMCPServer.js +63 -0
  269. package/dist/core/mcp/IMCPServer.js.map +1 -0
  270. package/dist/core/mcp/IMCPServer.mjs +33 -0
  271. package/dist/core/mcp/IMCPServer.mjs.map +1 -0
  272. package/dist/core/mcp/LocalToolMCP.d.ts +39 -0
  273. package/dist/core/mcp/LocalToolMCP.d.ts.map +1 -0
  274. package/dist/core/mcp/LocalToolMCP.js +121 -0
  275. package/dist/core/mcp/LocalToolMCP.js.map +1 -0
  276. package/dist/core/mcp/LocalToolMCP.mjs +98 -0
  277. package/dist/core/mcp/LocalToolMCP.mjs.map +1 -0
  278. package/dist/core/mcp/RemoteMCP.d.ts +67 -0
  279. package/dist/core/mcp/RemoteMCP.d.ts.map +1 -0
  280. package/dist/core/mcp/RemoteMCP.js +244 -0
  281. package/dist/core/mcp/RemoteMCP.js.map +1 -0
  282. package/dist/core/mcp/RemoteMCP.mjs +222 -0
  283. package/dist/core/mcp/RemoteMCP.mjs.map +1 -0
  284. package/dist/core/mcp/ToolSelectorPolicy.d.ts +52 -0
  285. package/dist/core/mcp/ToolSelectorPolicy.d.ts.map +1 -0
  286. package/dist/core/mcp/ToolSelectorPolicy.js +108 -0
  287. package/dist/core/mcp/ToolSelectorPolicy.js.map +1 -0
  288. package/dist/core/mcp/ToolSelectorPolicy.mjs +90 -0
  289. package/dist/core/mcp/ToolSelectorPolicy.mjs.map +1 -0
  290. package/dist/core/mcp/ToolSet.d.ts +31 -0
  291. package/dist/core/mcp/ToolSet.d.ts.map +1 -0
  292. package/dist/core/mcp/ToolSet.js +119 -0
  293. package/dist/core/mcp/ToolSet.js.map +1 -0
  294. package/dist/core/mcp/ToolSet.mjs +98 -0
  295. package/dist/core/mcp/ToolSet.mjs.map +1 -0
  296. package/dist/core/mcp/convertMCPServers.d.ts +22 -0
  297. package/dist/core/mcp/convertMCPServers.d.ts.map +1 -0
  298. package/dist/core/mcp/convertMCPServers.js +89 -0
  299. package/dist/core/mcp/convertMCPServers.js.map +1 -0
  300. package/dist/core/mcp/convertMCPServers.mjs +64 -0
  301. package/dist/core/mcp/convertMCPServers.mjs.map +1 -0
  302. package/dist/core/mcp/executeToolCalls.d.ts +31 -0
  303. package/dist/core/mcp/executeToolCalls.d.ts.map +1 -0
  304. package/dist/core/mcp/executeToolCalls.js +168 -0
  305. package/dist/core/mcp/executeToolCalls.js.map +1 -0
  306. package/dist/core/mcp/executeToolCalls.mjs +149 -0
  307. package/dist/core/mcp/executeToolCalls.mjs.map +1 -0
  308. package/dist/core/mcp/pagination.d.ts +11 -0
  309. package/dist/core/mcp/pagination.d.ts.map +1 -0
  310. package/dist/core/mcp/pagination.js +49 -0
  311. package/dist/core/mcp/pagination.js.map +1 -0
  312. package/dist/core/mcp/pagination.mjs +24 -0
  313. package/dist/core/mcp/pagination.mjs.map +1 -0
  314. package/dist/core/mcp/remoteMcpClient.d.ts +36 -0
  315. package/dist/core/mcp/remoteMcpClient.d.ts.map +1 -0
  316. package/dist/core/mcp/remoteMcpClient.js +138 -0
  317. package/dist/core/mcp/remoteMcpClient.js.map +1 -0
  318. package/dist/core/mcp/remoteMcpClient.mjs +112 -0
  319. package/dist/core/mcp/remoteMcpClient.mjs.map +1 -0
  320. package/dist/core/mcp/toolNames.d.ts +6 -0
  321. package/dist/core/mcp/toolNames.d.ts.map +1 -0
  322. package/dist/core/mcp/toolNames.js +59 -0
  323. package/dist/core/mcp/toolNames.js.map +1 -0
  324. package/dist/core/mcp/toolNames.mjs +33 -0
  325. package/dist/core/mcp/toolNames.mjs.map +1 -0
  326. package/dist/core/mcp/toolSelectors.d.ts +28 -0
  327. package/dist/core/mcp/toolSelectors.d.ts.map +1 -0
  328. package/dist/core/mcp/toolSelectors.js +113 -0
  329. package/dist/core/mcp/toolSelectors.js.map +1 -0
  330. package/dist/core/mcp/toolSelectors.mjs +78 -0
  331. package/dist/core/mcp/toolSelectors.mjs.map +1 -0
  332. package/dist/core/runtime/AgentDefinition.d.ts +23 -0
  333. package/dist/core/runtime/AgentDefinition.d.ts.map +1 -0
  334. package/dist/core/runtime/AgentDefinition.js +19 -0
  335. package/dist/core/runtime/AgentDefinition.js.map +1 -0
  336. package/dist/core/runtime/AgentDefinition.mjs +1 -0
  337. package/dist/core/runtime/AgentDefinition.mjs.map +1 -0
  338. package/dist/core/runtime/AgentThread.d.ts +64 -0
  339. package/dist/core/runtime/AgentThread.d.ts.map +1 -0
  340. package/dist/core/runtime/AgentThread.js +1065 -0
  341. package/dist/core/runtime/AgentThread.js.map +1 -0
  342. package/dist/core/runtime/AgentThread.mjs +1062 -0
  343. package/dist/core/runtime/AgentThread.mjs.map +1 -0
  344. package/dist/core/runtime/AgentThread.types.d.ts +123 -0
  345. package/dist/core/runtime/AgentThread.types.d.ts.map +1 -0
  346. package/dist/core/runtime/AgentThread.types.js +46 -0
  347. package/dist/core/runtime/AgentThread.types.js.map +1 -0
  348. package/dist/core/runtime/AgentThread.types.mjs +20 -0
  349. package/dist/core/runtime/AgentThread.types.mjs.map +1 -0
  350. package/dist/core/runtime/AgentThreadOrchestrator.d.ts +35 -0
  351. package/dist/core/runtime/AgentThreadOrchestrator.d.ts.map +1 -0
  352. package/dist/core/runtime/AgentThreadOrchestrator.js +433 -0
  353. package/dist/core/runtime/AgentThreadOrchestrator.js.map +1 -0
  354. package/dist/core/runtime/AgentThreadOrchestrator.mjs +418 -0
  355. package/dist/core/runtime/AgentThreadOrchestrator.mjs.map +1 -0
  356. package/dist/core/runtime/CreateDynamicSubAgentThread.d.ts +11 -0
  357. package/dist/core/runtime/CreateDynamicSubAgentThread.d.ts.map +1 -0
  358. package/dist/core/runtime/CreateDynamicSubAgentThread.js +19 -0
  359. package/dist/core/runtime/CreateDynamicSubAgentThread.js.map +1 -0
  360. package/dist/core/runtime/CreateDynamicSubAgentThread.mjs +1 -0
  361. package/dist/core/runtime/CreateDynamicSubAgentThread.mjs.map +1 -0
  362. package/dist/core/runtime/DeferredTool.d.ts +34 -0
  363. package/dist/core/runtime/DeferredTool.d.ts.map +1 -0
  364. package/dist/core/runtime/DeferredTool.js +321 -0
  365. package/dist/core/runtime/DeferredTool.js.map +1 -0
  366. package/dist/core/runtime/DeferredTool.mjs +287 -0
  367. package/dist/core/runtime/DeferredTool.mjs.map +1 -0
  368. package/dist/core/runtime/OpenToolCallCloser.d.ts +21 -0
  369. package/dist/core/runtime/OpenToolCallCloser.d.ts.map +1 -0
  370. package/dist/core/runtime/OpenToolCallCloser.js +92 -0
  371. package/dist/core/runtime/OpenToolCallCloser.js.map +1 -0
  372. package/dist/core/runtime/OpenToolCallCloser.mjs +66 -0
  373. package/dist/core/runtime/OpenToolCallCloser.mjs.map +1 -0
  374. package/dist/core/runtime/UserInputMessage.d.ts +16 -0
  375. package/dist/core/runtime/UserInputMessage.d.ts.map +1 -0
  376. package/dist/core/runtime/UserInputMessage.js +183 -0
  377. package/dist/core/runtime/UserInputMessage.js.map +1 -0
  378. package/dist/core/runtime/UserInputMessage.mjs +157 -0
  379. package/dist/core/runtime/UserInputMessage.mjs.map +1 -0
  380. package/dist/core/runtime/contextUsage.d.ts +17 -0
  381. package/dist/core/runtime/contextUsage.d.ts.map +1 -0
  382. package/dist/core/runtime/contextUsage.js +56 -0
  383. package/dist/core/runtime/contextUsage.js.map +1 -0
  384. package/dist/core/runtime/contextUsage.mjs +28 -0
  385. package/dist/core/runtime/contextUsage.mjs.map +1 -0
  386. package/dist/core/runtime/contextUtils.d.ts +30 -0
  387. package/dist/core/runtime/contextUtils.d.ts.map +1 -0
  388. package/dist/core/runtime/contextUtils.js +198 -0
  389. package/dist/core/runtime/contextUtils.js.map +1 -0
  390. package/dist/core/runtime/contextUtils.mjs +148 -0
  391. package/dist/core/runtime/contextUtils.mjs.map +1 -0
  392. package/dist/core/runtime/metrics.d.ts +22 -0
  393. package/dist/core/runtime/metrics.d.ts.map +1 -0
  394. package/dist/core/runtime/metrics.js +89 -0
  395. package/dist/core/runtime/metrics.js.map +1 -0
  396. package/dist/core/runtime/metrics.mjs +61 -0
  397. package/dist/core/runtime/metrics.mjs.map +1 -0
  398. package/dist/core/sandbox/Sandbox.d.ts +121 -0
  399. package/dist/core/sandbox/Sandbox.d.ts.map +1 -0
  400. package/dist/core/sandbox/Sandbox.js +572 -0
  401. package/dist/core/sandbox/Sandbox.js.map +1 -0
  402. package/dist/core/sandbox/Sandbox.mjs +536 -0
  403. package/dist/core/sandbox/Sandbox.mjs.map +1 -0
  404. package/dist/core/sandbox/SandboxErrors.d.ts +30 -0
  405. package/dist/core/sandbox/SandboxErrors.d.ts.map +1 -0
  406. package/dist/core/sandbox/SandboxErrors.js +102 -0
  407. package/dist/core/sandbox/SandboxErrors.js.map +1 -0
  408. package/dist/core/sandbox/SandboxErrors.mjs +71 -0
  409. package/dist/core/sandbox/SandboxErrors.mjs.map +1 -0
  410. package/dist/core/sandbox/SandboxNatsBridge.d.ts +33 -0
  411. package/dist/core/sandbox/SandboxNatsBridge.d.ts.map +1 -0
  412. package/dist/core/sandbox/SandboxNatsBridge.js +222 -0
  413. package/dist/core/sandbox/SandboxNatsBridge.js.map +1 -0
  414. package/dist/core/sandbox/SandboxNatsBridge.mjs +201 -0
  415. package/dist/core/sandbox/SandboxNatsBridge.mjs.map +1 -0
  416. package/dist/core/sandbox/constants.d.ts +10 -0
  417. package/dist/core/sandbox/constants.d.ts.map +1 -0
  418. package/dist/core/sandbox/constants.js +37 -0
  419. package/dist/core/sandbox/constants.js.map +1 -0
  420. package/dist/core/sandbox/constants.mjs +10 -0
  421. package/dist/core/sandbox/constants.mjs.map +1 -0
  422. package/dist/core/sandbox/provider/DaytonaProvider.d.ts +80 -0
  423. package/dist/core/sandbox/provider/DaytonaProvider.d.ts.map +1 -0
  424. package/dist/core/sandbox/provider/DaytonaProvider.js +346 -0
  425. package/dist/core/sandbox/provider/DaytonaProvider.js.map +1 -0
  426. package/dist/core/sandbox/provider/DaytonaProvider.mjs +326 -0
  427. package/dist/core/sandbox/provider/DaytonaProvider.mjs.map +1 -0
  428. package/dist/core/sandbox/provider/Provider.d.ts +83 -0
  429. package/dist/core/sandbox/provider/Provider.d.ts.map +1 -0
  430. package/dist/core/sandbox/provider/Provider.js +43 -0
  431. package/dist/core/sandbox/provider/Provider.js.map +1 -0
  432. package/dist/core/sandbox/provider/Provider.mjs +17 -0
  433. package/dist/core/sandbox/provider/Provider.mjs.map +1 -0
  434. package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts +41 -0
  435. package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts.map +1 -0
  436. package/dist/core/sandbox/provider/TFYSandboxProvider.js +180 -0
  437. package/dist/core/sandbox/provider/TFYSandboxProvider.js.map +1 -0
  438. package/dist/core/sandbox/provider/TFYSandboxProvider.mjs +147 -0
  439. package/dist/core/sandbox/provider/TFYSandboxProvider.mjs.map +1 -0
  440. package/dist/core/sandbox/sandboxImage.d.ts +6 -0
  441. package/dist/core/sandbox/sandboxImage.d.ts.map +1 -0
  442. package/dist/core/sandbox/sandboxImage.js +31 -0
  443. package/dist/core/sandbox/sandboxImage.js.map +1 -0
  444. package/dist/core/sandbox/sandboxImage.mjs +6 -0
  445. package/dist/core/sandbox/sandboxImage.mjs.map +1 -0
  446. package/dist/core/sandbox/sandboxScripts.gen.d.ts +5 -0
  447. package/dist/core/sandbox/sandboxScripts.gen.d.ts.map +1 -0
  448. package/dist/core/sandbox/sandboxScripts.gen.js +343 -0
  449. package/dist/core/sandbox/sandboxScripts.gen.js.map +1 -0
  450. package/dist/core/sandbox/sandboxScripts.gen.mjs +318 -0
  451. package/dist/core/sandbox/sandboxScripts.gen.mjs.map +1 -0
  452. package/dist/core/sandbox/skills/ISkillMounter.d.ts +7 -0
  453. package/dist/core/sandbox/skills/ISkillMounter.d.ts.map +1 -0
  454. package/dist/core/sandbox/skills/ISkillMounter.js +19 -0
  455. package/dist/core/sandbox/skills/ISkillMounter.js.map +1 -0
  456. package/dist/core/sandbox/skills/ISkillMounter.mjs +1 -0
  457. package/dist/core/sandbox/skills/ISkillMounter.mjs.map +1 -0
  458. package/dist/core/sandbox/skills/SkillMounter.d.ts +17 -0
  459. package/dist/core/sandbox/skills/SkillMounter.d.ts.map +1 -0
  460. package/dist/core/sandbox/skills/SkillMounter.js +73 -0
  461. package/dist/core/sandbox/skills/SkillMounter.js.map +1 -0
  462. package/dist/core/sandbox/skills/SkillMounter.mjs +48 -0
  463. package/dist/core/sandbox/skills/SkillMounter.mjs.map +1 -0
  464. package/dist/core/sandbox/skills/constants.d.ts +10 -0
  465. package/dist/core/sandbox/skills/constants.d.ts.map +1 -0
  466. package/dist/core/sandbox/skills/constants.js +56 -0
  467. package/dist/core/sandbox/skills/constants.js.map +1 -0
  468. package/dist/core/sandbox/skills/constants.mjs +28 -0
  469. package/dist/core/sandbox/skills/constants.mjs.map +1 -0
  470. package/dist/core/sandbox/skills/index.d.ts +5 -0
  471. package/dist/core/sandbox/skills/index.d.ts.map +1 -0
  472. package/dist/core/sandbox/skills/index.js +40 -0
  473. package/dist/core/sandbox/skills/index.js.map +1 -0
  474. package/dist/core/sandbox/skills/index.mjs +11 -0
  475. package/dist/core/sandbox/skills/index.mjs.map +1 -0
  476. package/dist/core/tracing/AgentTracing.d.ts +38 -0
  477. package/dist/core/tracing/AgentTracing.d.ts.map +1 -0
  478. package/dist/core/tracing/AgentTracing.js +19 -0
  479. package/dist/core/tracing/AgentTracing.js.map +1 -0
  480. package/dist/core/tracing/AgentTracing.mjs +1 -0
  481. package/dist/core/tracing/AgentTracing.mjs.map +1 -0
  482. package/dist/core/tracing/NoopAgentTracing.d.ts +3 -0
  483. package/dist/core/tracing/NoopAgentTracing.d.ts.map +1 -0
  484. package/dist/core/tracing/NoopAgentTracing.js +79 -0
  485. package/dist/core/tracing/NoopAgentTracing.js.map +1 -0
  486. package/dist/core/tracing/NoopAgentTracing.mjs +54 -0
  487. package/dist/core/tracing/NoopAgentTracing.mjs.map +1 -0
  488. package/dist/core/util/abort.d.ts +2 -0
  489. package/dist/core/util/abort.d.ts.map +1 -0
  490. package/dist/core/util/abort.js +38 -0
  491. package/dist/core/util/abort.js.map +1 -0
  492. package/dist/core/util/abort.mjs +13 -0
  493. package/dist/core/util/abort.mjs.map +1 -0
  494. package/dist/core/util/errorLogFields.d.ts +6 -0
  495. package/dist/core/util/errorLogFields.d.ts.map +1 -0
  496. package/dist/core/util/errorLogFields.js +36 -0
  497. package/dist/core/util/errorLogFields.js.map +1 -0
  498. package/dist/core/util/errorLogFields.mjs +11 -0
  499. package/dist/core/util/errorLogFields.mjs.map +1 -0
  500. package/dist/core/util/promiseUtils.d.ts +7 -0
  501. package/dist/core/util/promiseUtils.d.ts.map +1 -0
  502. package/dist/core/util/promiseUtils.js +82 -0
  503. package/dist/core/util/promiseUtils.js.map +1 -0
  504. package/dist/core/util/promiseUtils.mjs +55 -0
  505. package/dist/core/util/promiseUtils.mjs.map +1 -0
  506. package/dist/index.d.ts +7 -0
  507. package/dist/index.d.ts.map +1 -0
  508. package/dist/index.js +44 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/index.mjs +8 -0
  511. package/dist/index.mjs.map +1 -0
  512. package/dist/package.json +3 -0
  513. package/dist/request-reply/client.d.ts +21 -0
  514. package/dist/request-reply/client.d.ts.map +1 -0
  515. package/dist/request-reply/client.js +92 -0
  516. package/dist/request-reply/client.js.map +1 -0
  517. package/dist/request-reply/client.mjs +67 -0
  518. package/dist/request-reply/client.mjs.map +1 -0
  519. package/dist/request-reply/errors.d.ts +23 -0
  520. package/dist/request-reply/errors.d.ts.map +1 -0
  521. package/dist/request-reply/errors.js +66 -0
  522. package/dist/request-reply/errors.js.map +1 -0
  523. package/dist/request-reply/errors.mjs +39 -0
  524. package/dist/request-reply/errors.mjs.map +1 -0
  525. package/dist/request-reply/executor.d.ts +70 -0
  526. package/dist/request-reply/executor.d.ts.map +1 -0
  527. package/dist/request-reply/executor.js +267 -0
  528. package/dist/request-reply/executor.js.map +1 -0
  529. package/dist/request-reply/executor.mjs +232 -0
  530. package/dist/request-reply/executor.mjs.map +1 -0
  531. package/dist/request-reply/index.d.ts +16 -0
  532. package/dist/request-reply/index.d.ts.map +1 -0
  533. package/dist/request-reply/index.js +47 -0
  534. package/dist/request-reply/index.js.map +1 -0
  535. package/dist/request-reply/index.mjs +16 -0
  536. package/dist/request-reply/index.mjs.map +1 -0
  537. package/dist/request-reply/router.d.ts +20 -0
  538. package/dist/request-reply/router.d.ts.map +1 -0
  539. package/dist/request-reply/router.js +55 -0
  540. package/dist/request-reply/router.js.map +1 -0
  541. package/dist/request-reply/router.mjs +30 -0
  542. package/dist/request-reply/router.mjs.map +1 -0
  543. package/dist/request-reply/types.d.ts +25 -0
  544. package/dist/request-reply/types.d.ts.map +1 -0
  545. package/dist/request-reply/types.js +54 -0
  546. package/dist/request-reply/types.js.map +1 -0
  547. package/dist/request-reply/types.mjs +28 -0
  548. package/dist/request-reply/types.mjs.map +1 -0
  549. package/dist/request-reply/utils.d.ts +9 -0
  550. package/dist/request-reply/utils.d.ts.map +1 -0
  551. package/dist/request-reply/utils.js +51 -0
  552. package/dist/request-reply/utils.js.map +1 -0
  553. package/dist/request-reply/utils.mjs +22 -0
  554. package/dist/request-reply/utils.mjs.map +1 -0
  555. package/package.json +127 -6
  556. package/README.md +0 -4
  557. package/index.js +0 -1
@@ -0,0 +1,418 @@
1
+ // src/core/runtime/AgentThreadOrchestrator.ts
2
+ import { AgentHarnessError, InvalidAgentSendInputError } from "../errors.mjs";
3
+ import {
4
+ EventType,
5
+ newEventId
6
+ } from "../events/schema.mjs";
7
+ import { onSignalAbort } from "../util/abort.mjs";
8
+ import { mergeAsyncGenerators } from "../util/promiseUtils.mjs";
9
+ import "./AgentThread.mjs";
10
+ import {
11
+ InternalEventType
12
+ } from "./AgentThread.types.mjs";
13
+ import {
14
+ assistantMessageContentToStringForSubAgent,
15
+ getThreadId,
16
+ isApprovalDecisionMessage,
17
+ isClientSideToolResponseMessage,
18
+ isInternalThreadDoneError
19
+ } from "./contextUtils.mjs";
20
+ import { addAgentThreadMetrics, createEmptyAgentThreadMetrics } from "./metrics.mjs";
21
+ var MAX_PARALLEL_SUB_AGENTS = 5;
22
+ function agentThreadEventToTerminalFields(event) {
23
+ switch (event.type) {
24
+ case InternalEventType.AGENT_DONE: {
25
+ if ("parent" in event && event.parent) return {};
26
+ if (event.status === "error") return {};
27
+ return { output: event.output };
28
+ }
29
+ case EventType.TOOL_APPROVAL_REQUIRED:
30
+ case EventType.TOOL_RESPONSE_REQUIRED:
31
+ return { requiredAction: event };
32
+ default:
33
+ return {};
34
+ }
35
+ }
36
+ function isUserToolApprovalOrResponseBatch(messages) {
37
+ const first = messages[0];
38
+ return first !== void 0 && (isApprovalDecisionMessage(first) || isClientSideToolResponseMessage(first));
39
+ }
40
+ function getMainThreadId(agentThreads) {
41
+ for (const thread of agentThreads.values()) {
42
+ if (!thread.parent) return thread.threadId;
43
+ }
44
+ throw new Error("Unreachable: no root thread found");
45
+ }
46
+ function getActiveAgentThreads(agentThreads) {
47
+ const nodes = new Set(agentThreads.keys());
48
+ const parentNodes = new Set(
49
+ [...agentThreads.values()].map((a) => a.parent?.thread_id).filter((a) => Boolean(a))
50
+ );
51
+ const leaves = [...nodes].filter((id) => !parentNodes.has(id));
52
+ if (leaves.length === 0) {
53
+ throw new Error("We cannot have zero leave agents");
54
+ }
55
+ return leaves.map((id) => {
56
+ const agentThread = agentThreads.get(id);
57
+ if (!agentThread) throw new Error("unreachable");
58
+ return agentThread;
59
+ });
60
+ }
61
+ function mergeAuthEvents(events) {
62
+ const serverMap = /* @__PURE__ */ new Map();
63
+ for (const event of events) {
64
+ for (const entry of event.mcp_servers) {
65
+ const existing = serverMap.get(entry.id);
66
+ if (existing) {
67
+ existing.thread_ids.push(...entry.thread_ids);
68
+ } else {
69
+ serverMap.set(entry.id, { ...entry, thread_ids: [...entry.thread_ids] });
70
+ }
71
+ }
72
+ }
73
+ return {
74
+ type: InternalEventType.MCP_AUTH_REQUIRED,
75
+ id: newEventId(),
76
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
77
+ thread_id: null,
78
+ mcp_servers: [...serverMap.values()]
79
+ };
80
+ }
81
+ function wrapGeneratorWithTrace(trace, generator) {
82
+ const wrapped = {
83
+ [Symbol.asyncIterator]() {
84
+ return this;
85
+ },
86
+ next(...[value]) {
87
+ return trace.runInContext(() => value === void 0 ? generator.next() : generator.next(value));
88
+ },
89
+ return(value) {
90
+ return trace.runInContext(() => generator.return(value));
91
+ },
92
+ throw(e) {
93
+ return trace.runInContext(() => generator.throw(e));
94
+ },
95
+ [Symbol.asyncDispose]() {
96
+ return generator[Symbol.asyncDispose]();
97
+ }
98
+ };
99
+ return wrapped;
100
+ }
101
+ function createRootAgentSpan(mainThread, tracing) {
102
+ const trace = tracing.startRootSpan(
103
+ JSON.stringify({ instructions: mainThread.definition.instruction, messages: mainThread.definition.messages })
104
+ );
105
+ let rootAgentErrorMessage;
106
+ let rootAgentCompleted = false;
107
+ return {
108
+ trace,
109
+ wrapThreadWithContext(thread, signal) {
110
+ return wrapGeneratorWithTrace(trace, thread.execute({ signal }));
111
+ },
112
+ setOutputFromEvent(chunk) {
113
+ rootAgentCompleted = true;
114
+ if (chunk.type === InternalEventType.AGENT_DONE) {
115
+ if (isInternalThreadDoneError(chunk)) {
116
+ rootAgentErrorMessage = chunk.error;
117
+ trace.setOutput(JSON.stringify({ error: chunk.error }));
118
+ } else {
119
+ const content = assistantMessageContentToStringForSubAgent(chunk.output.content);
120
+ trace.setOutput(JSON.stringify({ result: content }));
121
+ }
122
+ }
123
+ },
124
+ finalize(thread, error) {
125
+ trace.setMetrics(thread.getAgentThreadMetrics());
126
+ if (error) {
127
+ trace.setError(error);
128
+ } else if (rootAgentErrorMessage || !rootAgentCompleted) {
129
+ trace.setError(rootAgentErrorMessage ?? "Agent execution interrupted");
130
+ } else {
131
+ trace.setSuccess();
132
+ }
133
+ },
134
+ end() {
135
+ trace.end();
136
+ }
137
+ };
138
+ }
139
+ async function* wrapWithSubAgentSpan(parentTrace, currentThread, signal) {
140
+ const agentInfo = currentThread.agentInfo;
141
+ if (!agentInfo) {
142
+ throw new Error("Sub-agent thread is missing agentInfo");
143
+ }
144
+ const subTrace = parentTrace.startSubAgent(agentInfo.name, JSON.stringify({ instructions: agentInfo.input }));
145
+ const generator = wrapGeneratorWithTrace(subTrace, currentThread.execute({ signal }));
146
+ try {
147
+ for await (const event of generator) {
148
+ if (event.type === InternalEventType.AGENT_DONE) {
149
+ if (isInternalThreadDoneError(event)) {
150
+ subTrace.setOutput(JSON.stringify({ error: event.error }));
151
+ subTrace.setMetrics(currentThread.getAgentThreadMetrics());
152
+ subTrace.setError(event.error);
153
+ } else {
154
+ const content = assistantMessageContentToStringForSubAgent(event.output.content);
155
+ subTrace.setOutput(JSON.stringify({ result: content }));
156
+ subTrace.setMetrics(currentThread.getAgentThreadMetrics());
157
+ subTrace.setSuccess();
158
+ }
159
+ }
160
+ yield event;
161
+ }
162
+ } catch (error) {
163
+ subTrace.setError(error);
164
+ throw error;
165
+ } finally {
166
+ subTrace.end();
167
+ }
168
+ }
169
+ var AgentThreadOrchestrator = class {
170
+ agentThreads;
171
+ createDynamicSubAgentThread;
172
+ tracing;
173
+ logger;
174
+ // Finished sub-agents removed from `agentThreads`; kept so totals still include them.
175
+ finishedSubAgentMetrics = createEmptyAgentThreadMetrics();
176
+ constructor(params) {
177
+ this.agentThreads = params.agentThreads;
178
+ this.createDynamicSubAgentThread = params.createDynamicSubAgentThread;
179
+ this.tracing = params.tracing;
180
+ this.logger = params.logger.child({ module: "AgentThreadOrchestrator" });
181
+ }
182
+ /**
183
+ * Turn-wide metrics so far: live threads plus finished sub-agents.
184
+ * Safe mid-flight and after cancel/error (`execute()` may not return).
185
+ * Each thread is counted once — a sub-agent moves from live → finished atomically.
186
+ */
187
+ getMetrics() {
188
+ const total = createEmptyAgentThreadMetrics();
189
+ addAgentThreadMetrics(total, this.finishedSubAgentMetrics);
190
+ for (const thread of this.agentThreads.values()) {
191
+ addAgentThreadMetrics(total, thread.getAgentThreadMetrics());
192
+ }
193
+ return total;
194
+ }
195
+ async *send(messages) {
196
+ const byThread = /* @__PURE__ */ new Map();
197
+ for (const thread of this.agentThreads.values()) {
198
+ byThread.set(thread.threadId, []);
199
+ }
200
+ if (isUserToolApprovalOrResponseBatch(messages)) {
201
+ const grouped = /* @__PURE__ */ new Map();
202
+ for (const msg of messages) {
203
+ const threadId = msg.thread_id;
204
+ if (!byThread.has(threadId)) {
205
+ throw new InvalidAgentSendInputError(`unknown thread_id: ${threadId}`);
206
+ }
207
+ const batch = grouped.get(threadId) ?? [];
208
+ batch.push(msg);
209
+ grouped.set(threadId, batch);
210
+ }
211
+ for (const [threadId, batch] of grouped) {
212
+ byThread.set(threadId, batch);
213
+ }
214
+ } else if (messages.length > 0) {
215
+ if (this.agentThreads.size > 1) {
216
+ throw new InvalidAgentSendInputError(
217
+ "Cannot process user messages while sub agents are running, please send empty input for previous conversation to complete"
218
+ );
219
+ }
220
+ byThread.set(getMainThreadId(this.agentThreads), messages);
221
+ }
222
+ const validationErrors = [];
223
+ for (const [threadId, batch] of byThread) {
224
+ const thread = this.agentThreads.get(threadId);
225
+ if (!thread) {
226
+ throw new Error(`AgentThreadOrchestrator.send: unknown threadId ${threadId}`);
227
+ }
228
+ try {
229
+ thread.validateSendInput(batch);
230
+ } catch (e) {
231
+ if (e instanceof AgentHarnessError && e.code === "invalid_send_input") {
232
+ validationErrors.push(`thread ${threadId}: ${e.message}`);
233
+ } else {
234
+ throw e;
235
+ }
236
+ }
237
+ }
238
+ if (validationErrors.length > 0) {
239
+ throw new InvalidAgentSendInputError(validationErrors.join("; "));
240
+ }
241
+ for (const [threadId, batch] of byThread) {
242
+ yield* this.sendToThread(threadId, batch);
243
+ }
244
+ }
245
+ async *sendToThread(threadId, messages) {
246
+ const thread = this.agentThreads.get(threadId);
247
+ if (!thread) {
248
+ throw new Error(`AgentThreadOrchestrator.sendToThread: unknown threadId ${threadId}`);
249
+ }
250
+ yield* thread.send(messages);
251
+ }
252
+ async *processAgentStreamChunk(chunk, signal) {
253
+ if (chunk.type === InternalEventType.PASSTHROUGH) {
254
+ yield chunk.event;
255
+ return { shouldStopExecution: false };
256
+ }
257
+ if (!("thread_id" in chunk) || chunk.thread_id == null) {
258
+ yield chunk;
259
+ return { shouldStopExecution: false };
260
+ }
261
+ const currentThread = this.agentThreads.get(chunk.thread_id);
262
+ if (!currentThread) {
263
+ throw new Error("unreachable");
264
+ }
265
+ switch (chunk.type) {
266
+ case EventType.TOOL_APPROVAL_REQUIRED:
267
+ case EventType.TOOL_RESPONSE_REQUIRED:
268
+ yield chunk;
269
+ return { shouldStopExecution: true };
270
+ case InternalEventType.AGENT_DONE: {
271
+ if (chunk.parent) {
272
+ if (!chunk.send_to_parent) throw new Error("unreachable");
273
+ const parentThread = this.agentThreads.get(chunk.parent.thread_id);
274
+ if (!parentThread) throw new Error("unreachable: parent thread missing");
275
+ const subAgentToolIsOpen = parentThread.hasOpenToolCallId(chunk.parent.tool_call_id);
276
+ if (subAgentToolIsOpen) {
277
+ const parentToolResponse = {
278
+ type: EventType.TOOL_RESPONSE,
279
+ id: newEventId(),
280
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
281
+ thread_id: chunk.parent.thread_id,
282
+ tool_call_id: chunk.send_to_parent.tool_call_id,
283
+ content: ""
284
+ };
285
+ yield parentToolResponse;
286
+ yield* this.sendToThread(chunk.parent.thread_id, [chunk.send_to_parent]);
287
+ }
288
+ yield chunk;
289
+ addAgentThreadMetrics(this.finishedSubAgentMetrics, currentThread.getAgentThreadMetrics());
290
+ this.agentThreads.delete(chunk.thread_id);
291
+ return { shouldStopExecution: false };
292
+ }
293
+ yield chunk;
294
+ return { shouldStopExecution: true };
295
+ }
296
+ case InternalEventType.AGENT_CREATE_SUBAGENT: {
297
+ const parent = {
298
+ tool_call_id: chunk.tool_call_id,
299
+ thread_id: chunk.thread_id
300
+ };
301
+ const subAgentThreadId = getThreadId();
302
+ const subAgentThread = await this.createDynamicSubAgentThread({
303
+ parentDefinition: currentThread.definition,
304
+ request: chunk.agent_info,
305
+ threadId: subAgentThreadId,
306
+ parent,
307
+ signal
308
+ });
309
+ yield {
310
+ type: EventType.THREAD_CREATED,
311
+ id: newEventId(),
312
+ agent_info: {
313
+ type: "dynamic",
314
+ name: chunk.agent_info.name,
315
+ input: chunk.agent_info.input,
316
+ model: chunk.agent_info.model
317
+ },
318
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
319
+ parent,
320
+ title: chunk.agent_info.name,
321
+ thread_id: subAgentThreadId
322
+ };
323
+ this.agentThreads.set(subAgentThreadId, subAgentThread);
324
+ return { shouldStopExecution: false };
325
+ }
326
+ default:
327
+ yield chunk;
328
+ return { shouldStopExecution: false };
329
+ }
330
+ }
331
+ async *execute({
332
+ signal
333
+ }) {
334
+ const { agentThreads } = this;
335
+ let shouldStopExecution = false;
336
+ let caughtError;
337
+ let output = null;
338
+ const requiredActions = [];
339
+ let rootAgentError;
340
+ const pendingAuthEvents = [];
341
+ const mainThread = [...agentThreads.values()].find((e) => !e.parent);
342
+ if (!mainThread) {
343
+ throw new Error("Unreachable: no root thread found");
344
+ }
345
+ const rootSpan = createRootAgentSpan(mainThread, this.tracing);
346
+ onSignalAbort(signal, () => {
347
+ shouldStopExecution = true;
348
+ });
349
+ try {
350
+ while (agentThreads.size > 0) {
351
+ if (shouldStopExecution) break;
352
+ const activeThreads = getActiveAgentThreads(agentThreads);
353
+ for (let i = 0; i < activeThreads.length && !shouldStopExecution; i += MAX_PARALLEL_SUB_AGENTS) {
354
+ const batch = activeThreads.slice(i, i + MAX_PARALLEL_SUB_AGENTS);
355
+ const generators = batch.map((thread) => {
356
+ if (!thread.parent) {
357
+ return rootSpan.wrapThreadWithContext(thread, signal);
358
+ }
359
+ return wrapWithSubAgentSpan(rootSpan.trace, thread, signal);
360
+ });
361
+ for await (const chunk of mergeAsyncGenerators(generators, this.logger)) {
362
+ if (chunk.type === InternalEventType.MCP_AUTH_REQUIRED) {
363
+ pendingAuthEvents.push(chunk);
364
+ shouldStopExecution = true;
365
+ continue;
366
+ }
367
+ if (chunk.type === InternalEventType.AGENT_DONE && !chunk.parent) {
368
+ rootSpan.setOutputFromEvent(chunk);
369
+ }
370
+ const result = yield* this.processAgentStreamChunk(chunk, signal);
371
+ if (result.shouldStopExecution) {
372
+ shouldStopExecution = true;
373
+ if (!rootAgentError && chunk.type === InternalEventType.AGENT_DONE && isInternalThreadDoneError(chunk) && !chunk.parent) {
374
+ rootAgentError = { error: chunk.error, output: chunk.output };
375
+ }
376
+ if (chunk.type !== InternalEventType.PASSTHROUGH) {
377
+ const { output: outputContribution, requiredAction } = agentThreadEventToTerminalFields(chunk);
378
+ if (outputContribution) output = outputContribution;
379
+ if (requiredAction) requiredActions.push(requiredAction);
380
+ }
381
+ }
382
+ }
383
+ }
384
+ }
385
+ } catch (error) {
386
+ caughtError = error;
387
+ throw error;
388
+ } finally {
389
+ rootSpan.finalize(mainThread, caughtError);
390
+ rootSpan.end();
391
+ }
392
+ if (pendingAuthEvents.length > 0) {
393
+ const authEvent = mergeAuthEvents(pendingAuthEvents);
394
+ yield authEvent;
395
+ const authRequiredAction = {
396
+ type: EventType.MCP_AUTH_REQUIRED,
397
+ id: authEvent.id,
398
+ created_at: authEvent.created_at,
399
+ thread_id: authEvent.thread_id,
400
+ mcp_servers: authEvent.mcp_servers.map(({ thread_ids, ...s }) => {
401
+ void thread_ids;
402
+ return s;
403
+ })
404
+ };
405
+ requiredActions.push(authRequiredAction);
406
+ }
407
+ return {
408
+ output,
409
+ required_actions: requiredActions,
410
+ root_agent_error: rootAgentError
411
+ };
412
+ }
413
+ };
414
+ export {
415
+ AgentThreadOrchestrator,
416
+ wrapWithSubAgentSpan
417
+ };
418
+ //# sourceMappingURL=AgentThreadOrchestrator.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/runtime/AgentThreadOrchestrator.ts"],"sourcesContent":["import type { Logger } from 'winston';\nimport { AgentHarnessError, InvalidAgentSendInputError } from '../errors';\nimport {\n EventType,\n newEventId,\n type ActionRequiredEvent,\n type ModelMessageEvent,\n type ToolResponseEvent,\n type UserToolApprovalMessage,\n type UserToolResponseMessage,\n} from '../events/schema';\nimport type { AgentExecutionTrace, AgentTracing } from '../tracing/AgentTracing';\nimport { onSignalAbort } from '../util/abort';\nimport { mergeAsyncGenerators } from '../util/promiseUtils';\nimport { AgentThread } from './AgentThread';\nimport type { AgentThreadRuntimeSendBatch } from './AgentThread.types';\nimport {\n InternalEventType,\n type AgentThreadAppendContext,\n type AgentThreadEvent,\n type AgentThreadExecutionEvent,\n type AgentThreadExecutionResult,\n type AgentThreadSendBatch,\n type InternalMCPAuthRequiredEvent,\n type InternalMCPServerAuthInfo,\n} from './AgentThread.types';\nimport {\n assistantMessageContentToStringForSubAgent,\n getThreadId,\n isApprovalDecisionMessage,\n isClientSideToolResponseMessage,\n isInternalThreadDoneError,\n} from './contextUtils';\nimport type { CreateDynamicSubAgentThread } from './CreateDynamicSubAgentThread';\nimport { addAgentThreadMetrics, createEmptyAgentThreadMetrics, type AgentThreadMetrics } from './metrics';\n\nconst MAX_PARALLEL_SUB_AGENTS = 5;\n\nfunction agentThreadEventToTerminalFields(event: AgentThreadExecutionEvent): {\n output?: ModelMessageEvent | undefined;\n requiredAction?: ActionRequiredEvent | undefined;\n} {\n switch (event.type) {\n case InternalEventType.AGENT_DONE: {\n if ('parent' in event && event.parent) return {};\n if (event.status === 'error') return {};\n return { output: event.output };\n }\n case EventType.TOOL_APPROVAL_REQUIRED:\n case EventType.TOOL_RESPONSE_REQUIRED:\n return { requiredAction: event };\n default:\n return {};\n }\n}\n\ntype UserToolApprovalOrResponseBatch = (UserToolApprovalMessage | UserToolResponseMessage)[];\n\nfunction isUserToolApprovalOrResponseBatch(\n messages: AgentThreadSendBatch,\n): messages is UserToolApprovalOrResponseBatch {\n const first = messages[0];\n return first !== undefined && (isApprovalDecisionMessage(first) || isClientSideToolResponseMessage(first));\n}\n\nfunction getMainThreadId(agentThreads: Map<string, AgentThread>): string {\n for (const thread of agentThreads.values()) {\n if (!thread.parent) return thread.threadId;\n }\n throw new Error('Unreachable: no root thread found');\n}\n\nfunction getActiveAgentThreads(agentThreads: Map<string, AgentThread>): AgentThread[] {\n const nodes = new Set(agentThreads.keys());\n const parentNodes = new Set(\n [...agentThreads.values()].map(a => a.parent?.thread_id).filter((a): a is string => Boolean(a)),\n );\n const leaves = [...nodes].filter(id => !parentNodes.has(id));\n if (leaves.length === 0) {\n throw new Error('We cannot have zero leave agents');\n }\n return leaves.map(id => {\n const agentThread = agentThreads.get(id);\n if (!agentThread) throw new Error('unreachable');\n return agentThread;\n });\n}\n\nfunction mergeAuthEvents(events: InternalMCPAuthRequiredEvent[]): InternalMCPAuthRequiredEvent {\n const serverMap = new Map<string, InternalMCPServerAuthInfo>();\n for (const event of events) {\n for (const entry of event.mcp_servers) {\n const existing = serverMap.get(entry.id);\n if (existing) {\n existing.thread_ids.push(...entry.thread_ids);\n } else {\n serverMap.set(entry.id, { ...entry, thread_ids: [...entry.thread_ids] });\n }\n }\n }\n return {\n type: InternalEventType.MCP_AUTH_REQUIRED,\n id: newEventId(),\n created_at: new Date().toISOString(),\n thread_id: null,\n mcp_servers: [...serverMap.values()],\n };\n}\n\nfunction wrapGeneratorWithTrace<T, TReturn = void, TNext = unknown>(\n trace: AgentExecutionTrace,\n generator: AsyncGenerator<T, TReturn, TNext>,\n): AsyncGenerator<T, TReturn, TNext> {\n const wrapped: AsyncGenerator<T, TReturn, TNext> = {\n [Symbol.asyncIterator]() {\n return this;\n },\n next(...[value]: [] | [TNext]) {\n return trace.runInContext(() => (value === undefined ? generator.next() : generator.next(value)));\n },\n return(value: TReturn | PromiseLike<TReturn>) {\n return trace.runInContext(() => generator.return(value));\n },\n throw(e: unknown) {\n return trace.runInContext(() => generator.throw(e));\n },\n [Symbol.asyncDispose]() {\n return generator[Symbol.asyncDispose]();\n },\n };\n return wrapped;\n}\n\ninterface RootAgentSpanHandle {\n trace: AgentExecutionTrace;\n wrapThreadWithContext(thread: AgentThread, signal?: AbortSignal): AsyncGenerator<AgentThreadEvent>;\n setOutputFromEvent(chunk: AgentThreadEvent): void;\n finalize(thread: AgentThread, error?: unknown): void;\n end(): void;\n}\n\nfunction createRootAgentSpan(mainThread: AgentThread, tracing: AgentTracing): RootAgentSpanHandle {\n const trace = tracing.startRootSpan(\n JSON.stringify({ instructions: mainThread.definition.instruction, messages: mainThread.definition.messages }),\n );\n let rootAgentErrorMessage: string | undefined;\n let rootAgentCompleted = false;\n\n return {\n trace,\n wrapThreadWithContext(thread: AgentThread, signal?: AbortSignal) {\n return wrapGeneratorWithTrace(trace, thread.execute({ signal }));\n },\n setOutputFromEvent(chunk: AgentThreadEvent) {\n rootAgentCompleted = true;\n if (chunk.type === InternalEventType.AGENT_DONE) {\n if (isInternalThreadDoneError(chunk)) {\n rootAgentErrorMessage = chunk.error;\n trace.setOutput(JSON.stringify({ error: chunk.error }));\n } else {\n const content = assistantMessageContentToStringForSubAgent(chunk.output.content);\n trace.setOutput(JSON.stringify({ result: content }));\n }\n }\n },\n finalize(thread: AgentThread, error?: unknown) {\n trace.setMetrics(thread.getAgentThreadMetrics());\n if (error) {\n trace.setError(error);\n } else if (rootAgentErrorMessage || !rootAgentCompleted) {\n trace.setError(rootAgentErrorMessage ?? 'Agent execution interrupted');\n } else {\n trace.setSuccess();\n }\n },\n end() {\n trace.end();\n },\n };\n}\n\n/** @internal Exported for sub-agent span finalization tests. */\nexport async function* wrapWithSubAgentSpan(\n parentTrace: AgentExecutionTrace,\n currentThread: AgentThread,\n signal?: AbortSignal,\n): AsyncGenerator<AgentThreadEvent> {\n const agentInfo = currentThread.agentInfo;\n if (!agentInfo) {\n throw new Error('Sub-agent thread is missing agentInfo');\n }\n const subTrace = parentTrace.startSubAgent(agentInfo.name, JSON.stringify({ instructions: agentInfo.input }));\n const generator = wrapGeneratorWithTrace(subTrace, currentThread.execute({ signal }));\n\n try {\n for await (const event of generator) {\n if (event.type === InternalEventType.AGENT_DONE) {\n if (isInternalThreadDoneError(event)) {\n subTrace.setOutput(JSON.stringify({ error: event.error }));\n subTrace.setMetrics(currentThread.getAgentThreadMetrics());\n subTrace.setError(event.error);\n } else {\n const content = assistantMessageContentToStringForSubAgent(event.output.content);\n subTrace.setOutput(JSON.stringify({ result: content }));\n subTrace.setMetrics(currentThread.getAgentThreadMetrics());\n subTrace.setSuccess();\n }\n // end() only in finally so every path finalizes exactly once\n }\n yield event;\n }\n } catch (error) {\n subTrace.setError(error);\n throw error;\n } finally {\n subTrace.end();\n }\n}\n\nexport interface AgentThreadOrchestratorInput {\n agentThreads: Map<string, AgentThread>;\n createDynamicSubAgentThread: CreateDynamicSubAgentThread;\n tracing: AgentTracing;\n logger: Logger;\n}\n\nexport class AgentThreadOrchestrator {\n private readonly agentThreads: Map<string, AgentThread>;\n private readonly createDynamicSubAgentThread: CreateDynamicSubAgentThread;\n private readonly tracing: AgentTracing;\n private readonly logger: Logger;\n // Finished sub-agents removed from `agentThreads`; kept so totals still include them.\n private finishedSubAgentMetrics: AgentThreadMetrics = createEmptyAgentThreadMetrics();\n\n constructor(params: AgentThreadOrchestratorInput) {\n this.agentThreads = params.agentThreads;\n this.createDynamicSubAgentThread = params.createDynamicSubAgentThread;\n this.tracing = params.tracing;\n this.logger = params.logger.child({ module: 'AgentThreadOrchestrator' });\n }\n\n /**\n * Turn-wide metrics so far: live threads plus finished sub-agents.\n * Safe mid-flight and after cancel/error (`execute()` may not return).\n * Each thread is counted once — a sub-agent moves from live → finished atomically.\n */\n public getMetrics(): AgentThreadMetrics {\n const total = createEmptyAgentThreadMetrics();\n addAgentThreadMetrics(total, this.finishedSubAgentMetrics);\n for (const thread of this.agentThreads.values()) {\n addAgentThreadMetrics(total, thread.getAgentThreadMetrics());\n }\n return total;\n }\n\n public async *send(messages: AgentThreadSendBatch): AsyncGenerator<AgentThreadAppendContext, void, unknown> {\n const byThread = new Map<string, AgentThreadRuntimeSendBatch>();\n for (const thread of this.agentThreads.values()) {\n byThread.set(thread.threadId, []);\n }\n\n if (isUserToolApprovalOrResponseBatch(messages)) {\n const grouped = new Map<string, UserToolApprovalOrResponseBatch[number][]>();\n for (const msg of messages) {\n const threadId = msg.thread_id;\n if (!byThread.has(threadId)) {\n throw new InvalidAgentSendInputError(`unknown thread_id: ${threadId}`);\n }\n const batch = grouped.get(threadId) ?? [];\n batch.push(msg);\n grouped.set(threadId, batch);\n }\n for (const [threadId, batch] of grouped) {\n byThread.set(threadId, batch);\n }\n } else if (messages.length > 0) {\n if (this.agentThreads.size > 1) {\n throw new InvalidAgentSendInputError(\n 'Cannot process user messages while sub agents are running, please send empty input for previous conversation to complete',\n );\n }\n byThread.set(getMainThreadId(this.agentThreads), messages);\n }\n\n const validationErrors: string[] = [];\n for (const [threadId, batch] of byThread) {\n const thread = this.agentThreads.get(threadId);\n if (!thread) {\n throw new Error(`AgentThreadOrchestrator.send: unknown threadId ${threadId}`);\n }\n try {\n thread.validateSendInput(batch);\n } catch (e) {\n if (e instanceof AgentHarnessError && e.code === 'invalid_send_input') {\n validationErrors.push(`thread ${threadId}: ${e.message}`);\n } else {\n throw e;\n }\n }\n }\n if (validationErrors.length > 0) {\n throw new InvalidAgentSendInputError(validationErrors.join('; '));\n }\n\n for (const [threadId, batch] of byThread) {\n yield* this.sendToThread(threadId, batch);\n }\n }\n\n private async *sendToThread(\n threadId: string,\n messages: AgentThreadRuntimeSendBatch,\n ): AsyncGenerator<AgentThreadAppendContext, void, unknown> {\n const thread = this.agentThreads.get(threadId);\n if (!thread) {\n throw new Error(`AgentThreadOrchestrator.sendToThread: unknown threadId ${threadId}`);\n }\n yield* thread.send(messages);\n }\n\n private async *processAgentStreamChunk(\n chunk: Exclude<AgentThreadEvent, InternalMCPAuthRequiredEvent>,\n signal: AbortSignal,\n ): AsyncGenerator<AgentThreadExecutionEvent, { shouldStopExecution: boolean }, unknown> {\n if (chunk.type === InternalEventType.PASSTHROUGH) {\n yield chunk.event;\n return { shouldStopExecution: false };\n }\n\n if (!('thread_id' in chunk) || chunk.thread_id == null) {\n yield chunk;\n return { shouldStopExecution: false };\n }\n\n const currentThread = this.agentThreads.get(chunk.thread_id);\n if (!currentThread) {\n throw new Error('unreachable');\n }\n\n switch (chunk.type) {\n case EventType.TOOL_APPROVAL_REQUIRED:\n case EventType.TOOL_RESPONSE_REQUIRED:\n yield chunk;\n return { shouldStopExecution: true };\n case InternalEventType.AGENT_DONE: {\n if (chunk.parent) {\n if (!chunk.send_to_parent) throw new Error('unreachable');\n const parentThread = this.agentThreads.get(chunk.parent.thread_id);\n if (!parentThread) throw new Error('unreachable: parent thread missing');\n const subAgentToolIsOpen = parentThread.hasOpenToolCallId(chunk.parent.tool_call_id);\n if (subAgentToolIsOpen) {\n const parentToolResponse: ToolResponseEvent = {\n type: EventType.TOOL_RESPONSE,\n id: newEventId(),\n created_at: new Date().toISOString(),\n thread_id: chunk.parent.thread_id,\n tool_call_id: chunk.send_to_parent.tool_call_id,\n content: '',\n };\n yield parentToolResponse;\n yield* this.sendToThread(chunk.parent.thread_id, [chunk.send_to_parent]);\n }\n yield chunk;\n // Move metrics to the finished bucket and drop the live entry with no `yield` between,\n // so getMetrics() counts this sub-agent once. After `yield chunk` per durable-state.\n addAgentThreadMetrics(this.finishedSubAgentMetrics, currentThread.getAgentThreadMetrics());\n this.agentThreads.delete(chunk.thread_id);\n return { shouldStopExecution: false };\n }\n yield chunk;\n return { shouldStopExecution: true };\n }\n case InternalEventType.AGENT_CREATE_SUBAGENT: {\n const parent = {\n tool_call_id: chunk.tool_call_id,\n thread_id: chunk.thread_id,\n };\n const subAgentThreadId = getThreadId();\n const subAgentThread = await this.createDynamicSubAgentThread({\n parentDefinition: currentThread.definition,\n request: chunk.agent_info,\n threadId: subAgentThreadId,\n parent,\n signal,\n });\n\n yield {\n type: EventType.THREAD_CREATED,\n id: newEventId(),\n agent_info: {\n type: 'dynamic',\n name: chunk.agent_info.name,\n input: chunk.agent_info.input,\n model: chunk.agent_info.model,\n },\n created_at: new Date().toISOString(),\n parent,\n title: chunk.agent_info.name,\n thread_id: subAgentThreadId,\n };\n this.agentThreads.set(subAgentThreadId, subAgentThread);\n return { shouldStopExecution: false };\n }\n default:\n yield chunk;\n return { shouldStopExecution: false };\n }\n }\n\n public async *execute({\n signal,\n }: {\n signal: AbortSignal;\n }): AsyncGenerator<AgentThreadExecutionEvent, AgentThreadExecutionResult, unknown> {\n const { agentThreads } = this;\n\n let shouldStopExecution = false;\n let caughtError: unknown;\n let output: ModelMessageEvent | null = null;\n const requiredActions: ActionRequiredEvent[] = [];\n let rootAgentError: AgentThreadExecutionResult['root_agent_error'];\n const pendingAuthEvents: InternalMCPAuthRequiredEvent[] = [];\n const mainThread = [...agentThreads.values()].find(e => !e.parent);\n if (!mainThread) {\n throw new Error('Unreachable: no root thread found');\n }\n const rootSpan = createRootAgentSpan(mainThread, this.tracing);\n\n onSignalAbort(signal, () => {\n shouldStopExecution = true;\n });\n\n try {\n while (agentThreads.size > 0) {\n if (shouldStopExecution) break;\n\n const activeThreads = getActiveAgentThreads(agentThreads);\n\n for (let i = 0; i < activeThreads.length && !shouldStopExecution; i += MAX_PARALLEL_SUB_AGENTS) {\n const batch = activeThreads.slice(i, i + MAX_PARALLEL_SUB_AGENTS);\n const generators = batch.map(thread => {\n if (!thread.parent) {\n return rootSpan.wrapThreadWithContext(thread, signal);\n }\n return wrapWithSubAgentSpan(rootSpan.trace, thread, signal);\n });\n\n for await (const chunk of mergeAsyncGenerators(generators, this.logger)) {\n if (chunk.type === InternalEventType.MCP_AUTH_REQUIRED) {\n pendingAuthEvents.push(chunk);\n shouldStopExecution = true;\n continue;\n }\n if (chunk.type === InternalEventType.AGENT_DONE && !chunk.parent) {\n // Root-thread only — sub-agent AGENT_DONE would overwrite root trace output /\n // leave a stale error; sub-agent spans finalize in wrapWithSubAgentSpan.\n rootSpan.setOutputFromEvent(chunk);\n }\n\n const result = yield* this.processAgentStreamChunk(chunk, signal);\n if (result.shouldStopExecution) {\n shouldStopExecution = true;\n if (\n !rootAgentError &&\n chunk.type === InternalEventType.AGENT_DONE &&\n isInternalThreadDoneError(chunk) &&\n !chunk.parent\n ) {\n rootAgentError = { error: chunk.error, output: chunk.output };\n }\n if (chunk.type !== InternalEventType.PASSTHROUGH) {\n const { output: outputContribution, requiredAction } = agentThreadEventToTerminalFields(chunk);\n if (outputContribution) output = outputContribution;\n if (requiredAction) requiredActions.push(requiredAction);\n }\n }\n }\n }\n }\n } catch (error) {\n caughtError = error;\n throw error;\n } finally {\n rootSpan.finalize(mainThread, caughtError);\n rootSpan.end();\n }\n\n if (pendingAuthEvents.length > 0) {\n const authEvent = mergeAuthEvents(pendingAuthEvents);\n yield authEvent;\n const authRequiredAction: ActionRequiredEvent = {\n type: EventType.MCP_AUTH_REQUIRED,\n id: authEvent.id,\n created_at: authEvent.created_at,\n thread_id: authEvent.thread_id,\n mcp_servers: authEvent.mcp_servers.map(({ thread_ids, ...s }) => {\n void thread_ids;\n return s;\n }),\n };\n requiredActions.push(authRequiredAction);\n }\n\n return {\n output,\n required_actions: requiredActions,\n root_agent_error: rootAgentError,\n };\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,11 @@
1
+ import type { AgentInfo, AgentParent } from '../events/schema';
2
+ import type { AgentDefinition } from './AgentDefinition';
3
+ import type { AgentThread } from './AgentThread';
4
+ export type CreateDynamicSubAgentThread = (input: {
5
+ parentDefinition: AgentDefinition;
6
+ request: AgentInfo;
7
+ threadId: string;
8
+ parent: AgentParent;
9
+ signal: AbortSignal;
10
+ }) => Promise<AgentThread>;
11
+ //# sourceMappingURL=CreateDynamicSubAgentThread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateDynamicSubAgentThread.d.ts","sourceRoot":"","sources":["../../../src/core/runtime/CreateDynamicSubAgentThread.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE;IAChD,gBAAgB,EAAE,eAAe,CAAC;IAClC,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/core/runtime/CreateDynamicSubAgentThread.ts
17
+ var CreateDynamicSubAgentThread_exports = {};
18
+ module.exports = __toCommonJS(CreateDynamicSubAgentThread_exports);
19
+ //# sourceMappingURL=CreateDynamicSubAgentThread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/runtime/CreateDynamicSubAgentThread.ts"],"sourcesContent":["import type { AgentInfo, AgentParent } from '../events/schema';\nimport type { AgentDefinition } from './AgentDefinition';\nimport type { AgentThread } from './AgentThread';\n\nexport type CreateDynamicSubAgentThread = (input: {\n parentDefinition: AgentDefinition;\n request: AgentInfo;\n threadId: string;\n parent: AgentParent;\n signal: AbortSignal;\n}) => Promise<AgentThread>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=CreateDynamicSubAgentThread.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,34 @@
1
+ import type { CallToolRequest } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { Logger } from 'winston';
3
+ import { InstructionBuilder } from '../InstructionBuilder';
4
+ import type { InternalToolCallInfo } from '../llm/LLMTypes';
5
+ import { type IToolSet } from '../mcp/IMCPServer';
6
+ import { LocalToolMCP, type ToolDefinition } from '../mcp/LocalToolMCP';
7
+ import type { AgentTracing } from '../tracing/AgentTracing';
8
+ export declare const DEFERRED_TOOLS_SERVER_ID = "deferred-tools";
9
+ export declare const LIST_TOOLS_NAME = "list_tools";
10
+ export declare const GET_TOOL_INFO_NAME = "get_tool_info";
11
+ export declare const GET_TOOL_OUTPUT_SCHEMA_NAME = "get_tool_output_schema";
12
+ export declare class DeferredTool extends LocalToolMCP {
13
+ readonly name = "deferred-tools";
14
+ readonly displayName = "DeferredTools";
15
+ readonly description = "Deferred tool loading for user MCP servers";
16
+ private readonly serverMap;
17
+ private readonly tools;
18
+ private readonly logger;
19
+ constructor(servers: readonly IToolSet[], options: {
20
+ tracing: AgentTracing;
21
+ logger: Logger;
22
+ });
23
+ buildInstruction(builder: InstructionBuilder): void;
24
+ protected getTools(): ToolDefinition[];
25
+ toolCallInfo(params: CallToolRequest['params'], resolveUnderlyingTool?: boolean): Promise<InternalToolCallInfo>;
26
+ private resolveServer;
27
+ private resolveServerTools;
28
+ private buildTools;
29
+ private buildListTools;
30
+ private buildGetToolInfo;
31
+ private buildGetToolOutputSchema;
32
+ private buildCallTool;
33
+ }
34
+ //# sourceMappingURL=DeferredTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeferredTool.d.ts","sourceRoot":"","sources":["../../../src/core/runtime/DeferredTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAML,KAAK,QAAQ,EAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAc,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAkCpE,qBAAa,YAAa,SAAQ,YAAY;IAC5C,QAAQ,CAAC,IAAI,oBAA4B;IACzC,QAAQ,CAAC,WAAW,mBAAmB;IACvC,SAAkB,WAAW,gDAAgD;IAE7E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,YACE,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,OAAO,EAAE;QACP,OAAO,EAAE,YAAY,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,EAMF;IAED,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAqBlD;IAED,SAAS,CAAC,QAAQ,IAAI,cAAc,EAAE,CAErC;IAEc,YAAY,CACzB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CA8B/B;IAED,OAAO,CAAC,aAAa;YAIP,kBAAkB;IAiBhC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,gBAAgB;IA+CxB,OAAO,CAAC,wBAAwB;IA8ChC,OAAO,CAAC,aAAa;CA+CtB"}