@truefoundry/trueforge-core 0.0.0 → 0.1.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 (575) 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 +66 -0
  213. package/dist/core/index.d.ts.map +1 -0
  214. package/dist/core/index.js +234 -0
  215. package/dist/core/index.js.map +1 -0
  216. package/dist/core/index.mjs +166 -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 +229 -0
  231. package/dist/core/llm/VercelAILLM.d.ts.map +1 -0
  232. package/dist/core/llm/VercelAILLM.js +1037 -0
  233. package/dist/core/llm/VercelAILLM.js.map +1 -0
  234. package/dist/core/llm/VercelAILLM.mjs +993 -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 +1067 -0
  341. package/dist/core/runtime/AgentThread.js.map +1 -0
  342. package/dist/core/runtime/AgentThread.mjs +1064 -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 +119 -0
  399. package/dist/core/sandbox/Sandbox.d.ts.map +1 -0
  400. package/dist/core/sandbox/Sandbox.js +556 -0
  401. package/dist/core/sandbox/Sandbox.js.map +1 -0
  402. package/dist/core/sandbox/Sandbox.mjs +520 -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/codeMode/CodeModeDispatcher.d.ts +29 -0
  411. package/dist/core/sandbox/codeMode/CodeModeDispatcher.d.ts.map +1 -0
  412. package/dist/core/sandbox/codeMode/CodeModeDispatcher.js +128 -0
  413. package/dist/core/sandbox/codeMode/CodeModeDispatcher.js.map +1 -0
  414. package/dist/core/sandbox/codeMode/CodeModeDispatcher.mjs +107 -0
  415. package/dist/core/sandbox/codeMode/CodeModeDispatcher.mjs.map +1 -0
  416. package/dist/core/sandbox/codeMode/CodeModeTransport.d.ts +21 -0
  417. package/dist/core/sandbox/codeMode/CodeModeTransport.d.ts.map +1 -0
  418. package/dist/core/sandbox/codeMode/CodeModeTransport.js +19 -0
  419. package/dist/core/sandbox/codeMode/CodeModeTransport.js.map +1 -0
  420. package/dist/core/sandbox/codeMode/CodeModeTransport.mjs +1 -0
  421. package/dist/core/sandbox/codeMode/CodeModeTransport.mjs.map +1 -0
  422. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.d.ts +34 -0
  423. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.d.ts.map +1 -0
  424. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.js +187 -0
  425. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.js.map +1 -0
  426. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.mjs +162 -0
  427. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.mjs.map +1 -0
  428. package/dist/core/sandbox/codeMode/types.d.ts +34 -0
  429. package/dist/core/sandbox/codeMode/types.d.ts.map +1 -0
  430. package/dist/core/sandbox/codeMode/types.js +59 -0
  431. package/dist/core/sandbox/codeMode/types.js.map +1 -0
  432. package/dist/core/sandbox/codeMode/types.mjs +32 -0
  433. package/dist/core/sandbox/codeMode/types.mjs.map +1 -0
  434. package/dist/core/sandbox/constants.d.ts +10 -0
  435. package/dist/core/sandbox/constants.d.ts.map +1 -0
  436. package/dist/core/sandbox/constants.js +37 -0
  437. package/dist/core/sandbox/constants.js.map +1 -0
  438. package/dist/core/sandbox/constants.mjs +10 -0
  439. package/dist/core/sandbox/constants.mjs.map +1 -0
  440. package/dist/core/sandbox/provider/DaytonaProvider.d.ts +81 -0
  441. package/dist/core/sandbox/provider/DaytonaProvider.d.ts.map +1 -0
  442. package/dist/core/sandbox/provider/DaytonaProvider.js +353 -0
  443. package/dist/core/sandbox/provider/DaytonaProvider.js.map +1 -0
  444. package/dist/core/sandbox/provider/DaytonaProvider.mjs +333 -0
  445. package/dist/core/sandbox/provider/DaytonaProvider.mjs.map +1 -0
  446. package/dist/core/sandbox/provider/Provider.d.ts +84 -0
  447. package/dist/core/sandbox/provider/Provider.d.ts.map +1 -0
  448. package/dist/core/sandbox/provider/Provider.js +43 -0
  449. package/dist/core/sandbox/provider/Provider.js.map +1 -0
  450. package/dist/core/sandbox/provider/Provider.mjs +17 -0
  451. package/dist/core/sandbox/provider/Provider.mjs.map +1 -0
  452. package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts +42 -0
  453. package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts.map +1 -0
  454. package/dist/core/sandbox/provider/TFYSandboxProvider.js +186 -0
  455. package/dist/core/sandbox/provider/TFYSandboxProvider.js.map +1 -0
  456. package/dist/core/sandbox/provider/TFYSandboxProvider.mjs +153 -0
  457. package/dist/core/sandbox/provider/TFYSandboxProvider.mjs.map +1 -0
  458. package/dist/core/sandbox/sandboxImage.d.ts +6 -0
  459. package/dist/core/sandbox/sandboxImage.d.ts.map +1 -0
  460. package/dist/core/sandbox/sandboxImage.js +31 -0
  461. package/dist/core/sandbox/sandboxImage.js.map +1 -0
  462. package/dist/core/sandbox/sandboxImage.mjs +6 -0
  463. package/dist/core/sandbox/sandboxImage.mjs.map +1 -0
  464. package/dist/core/sandbox/sandboxScripts.gen.d.ts +5 -0
  465. package/dist/core/sandbox/sandboxScripts.gen.d.ts.map +1 -0
  466. package/dist/core/sandbox/sandboxScripts.gen.js +343 -0
  467. package/dist/core/sandbox/sandboxScripts.gen.js.map +1 -0
  468. package/dist/core/sandbox/sandboxScripts.gen.mjs +318 -0
  469. package/dist/core/sandbox/sandboxScripts.gen.mjs.map +1 -0
  470. package/dist/core/sandbox/skills/ISkillMounter.d.ts +7 -0
  471. package/dist/core/sandbox/skills/ISkillMounter.d.ts.map +1 -0
  472. package/dist/core/sandbox/skills/ISkillMounter.js +19 -0
  473. package/dist/core/sandbox/skills/ISkillMounter.js.map +1 -0
  474. package/dist/core/sandbox/skills/ISkillMounter.mjs +1 -0
  475. package/dist/core/sandbox/skills/ISkillMounter.mjs.map +1 -0
  476. package/dist/core/sandbox/skills/SkillMounter.d.ts +17 -0
  477. package/dist/core/sandbox/skills/SkillMounter.d.ts.map +1 -0
  478. package/dist/core/sandbox/skills/SkillMounter.js +73 -0
  479. package/dist/core/sandbox/skills/SkillMounter.js.map +1 -0
  480. package/dist/core/sandbox/skills/SkillMounter.mjs +48 -0
  481. package/dist/core/sandbox/skills/SkillMounter.mjs.map +1 -0
  482. package/dist/core/sandbox/skills/constants.d.ts +10 -0
  483. package/dist/core/sandbox/skills/constants.d.ts.map +1 -0
  484. package/dist/core/sandbox/skills/constants.js +56 -0
  485. package/dist/core/sandbox/skills/constants.js.map +1 -0
  486. package/dist/core/sandbox/skills/constants.mjs +28 -0
  487. package/dist/core/sandbox/skills/constants.mjs.map +1 -0
  488. package/dist/core/sandbox/skills/index.d.ts +5 -0
  489. package/dist/core/sandbox/skills/index.d.ts.map +1 -0
  490. package/dist/core/sandbox/skills/index.js +40 -0
  491. package/dist/core/sandbox/skills/index.js.map +1 -0
  492. package/dist/core/sandbox/skills/index.mjs +11 -0
  493. package/dist/core/sandbox/skills/index.mjs.map +1 -0
  494. package/dist/core/tracing/AgentTracing.d.ts +38 -0
  495. package/dist/core/tracing/AgentTracing.d.ts.map +1 -0
  496. package/dist/core/tracing/AgentTracing.js +19 -0
  497. package/dist/core/tracing/AgentTracing.js.map +1 -0
  498. package/dist/core/tracing/AgentTracing.mjs +1 -0
  499. package/dist/core/tracing/AgentTracing.mjs.map +1 -0
  500. package/dist/core/tracing/NoopAgentTracing.d.ts +3 -0
  501. package/dist/core/tracing/NoopAgentTracing.d.ts.map +1 -0
  502. package/dist/core/tracing/NoopAgentTracing.js +79 -0
  503. package/dist/core/tracing/NoopAgentTracing.js.map +1 -0
  504. package/dist/core/tracing/NoopAgentTracing.mjs +54 -0
  505. package/dist/core/tracing/NoopAgentTracing.mjs.map +1 -0
  506. package/dist/core/util/abort.d.ts +2 -0
  507. package/dist/core/util/abort.d.ts.map +1 -0
  508. package/dist/core/util/abort.js +38 -0
  509. package/dist/core/util/abort.js.map +1 -0
  510. package/dist/core/util/abort.mjs +13 -0
  511. package/dist/core/util/abort.mjs.map +1 -0
  512. package/dist/core/util/errorLogFields.d.ts +11 -0
  513. package/dist/core/util/errorLogFields.d.ts.map +1 -0
  514. package/dist/core/util/errorLogFields.js +72 -0
  515. package/dist/core/util/errorLogFields.js.map +1 -0
  516. package/dist/core/util/errorLogFields.mjs +46 -0
  517. package/dist/core/util/errorLogFields.mjs.map +1 -0
  518. package/dist/core/util/promiseUtils.d.ts +7 -0
  519. package/dist/core/util/promiseUtils.d.ts.map +1 -0
  520. package/dist/core/util/promiseUtils.js +82 -0
  521. package/dist/core/util/promiseUtils.js.map +1 -0
  522. package/dist/core/util/promiseUtils.mjs +55 -0
  523. package/dist/core/util/promiseUtils.mjs.map +1 -0
  524. package/dist/index.d.ts +7 -0
  525. package/dist/index.d.ts.map +1 -0
  526. package/dist/index.js +44 -0
  527. package/dist/index.js.map +1 -0
  528. package/dist/index.mjs +8 -0
  529. package/dist/index.mjs.map +1 -0
  530. package/dist/package.json +3 -0
  531. package/dist/request-reply/client.d.ts +21 -0
  532. package/dist/request-reply/client.d.ts.map +1 -0
  533. package/dist/request-reply/client.js +92 -0
  534. package/dist/request-reply/client.js.map +1 -0
  535. package/dist/request-reply/client.mjs +67 -0
  536. package/dist/request-reply/client.mjs.map +1 -0
  537. package/dist/request-reply/errors.d.ts +23 -0
  538. package/dist/request-reply/errors.d.ts.map +1 -0
  539. package/dist/request-reply/errors.js +66 -0
  540. package/dist/request-reply/errors.js.map +1 -0
  541. package/dist/request-reply/errors.mjs +39 -0
  542. package/dist/request-reply/errors.mjs.map +1 -0
  543. package/dist/request-reply/executor.d.ts +70 -0
  544. package/dist/request-reply/executor.d.ts.map +1 -0
  545. package/dist/request-reply/executor.js +267 -0
  546. package/dist/request-reply/executor.js.map +1 -0
  547. package/dist/request-reply/executor.mjs +232 -0
  548. package/dist/request-reply/executor.mjs.map +1 -0
  549. package/dist/request-reply/index.d.ts +16 -0
  550. package/dist/request-reply/index.d.ts.map +1 -0
  551. package/dist/request-reply/index.js +47 -0
  552. package/dist/request-reply/index.js.map +1 -0
  553. package/dist/request-reply/index.mjs +16 -0
  554. package/dist/request-reply/index.mjs.map +1 -0
  555. package/dist/request-reply/router.d.ts +20 -0
  556. package/dist/request-reply/router.d.ts.map +1 -0
  557. package/dist/request-reply/router.js +55 -0
  558. package/dist/request-reply/router.js.map +1 -0
  559. package/dist/request-reply/router.mjs +30 -0
  560. package/dist/request-reply/router.mjs.map +1 -0
  561. package/dist/request-reply/types.d.ts +25 -0
  562. package/dist/request-reply/types.d.ts.map +1 -0
  563. package/dist/request-reply/types.js +54 -0
  564. package/dist/request-reply/types.js.map +1 -0
  565. package/dist/request-reply/types.mjs +28 -0
  566. package/dist/request-reply/types.mjs.map +1 -0
  567. package/dist/request-reply/utils.d.ts +9 -0
  568. package/dist/request-reply/utils.d.ts.map +1 -0
  569. package/dist/request-reply/utils.js +51 -0
  570. package/dist/request-reply/utils.js.map +1 -0
  571. package/dist/request-reply/utils.mjs +22 -0
  572. package/dist/request-reply/utils.mjs.map +1 -0
  573. package/package.json +127 -6
  574. package/README.md +0 -4
  575. package/index.js +0 -1
@@ -0,0 +1,64 @@
1
+ // src/core/mcp/convertMCPServers.ts
2
+ import { isAuthRequired } from "./IMCPServer.mjs";
3
+ import { getUniqueSanitizedToolName } from "./toolNames.mjs";
4
+ async function convertMCPServersToTools(params) {
5
+ const { tfyManagedServers, userServers } = params;
6
+ const tools = [];
7
+ const toolMapping = /* @__PURE__ */ new Map();
8
+ const initializationInfo = [];
9
+ const authRequirementInfo = [];
10
+ const registeredNames = /* @__PURE__ */ new Set();
11
+ const filteredUserServers = userServers.filter((s) => s.preload || s.hasPreloadedTools);
12
+ const sortedTfyServers = [...tfyManagedServers].sort((a, b) => a.name > b.name ? 1 : -1);
13
+ const sortedUserServers = [...filteredUserServers].sort((a, b) => a.name > b.name ? 1 : -1);
14
+ const allServers = [...sortedTfyServers, ...sortedUserServers];
15
+ const listResults = await Promise.all(
16
+ allServers.map(async (server) => ({ serverName: server.name, response: await server.listTools() }))
17
+ );
18
+ for (let i = 0; i < allServers.length; i++) {
19
+ const listResult = listResults[i];
20
+ if (!listResult) continue;
21
+ const { serverName, response: listResponse } = listResult;
22
+ if (isAuthRequired(listResponse)) {
23
+ authRequirementInfo.push(listResponse.authRequired);
24
+ continue;
25
+ }
26
+ const { result: mcpTools, wasInitialized } = listResponse;
27
+ if (wasInitialized) {
28
+ initializationInfo.push(wasInitialized);
29
+ }
30
+ const toolSet = allServers[i];
31
+ if (toolSet === void 0) {
32
+ throw new Error(`Unreachable: missing tool set at index ${String(i)}`);
33
+ }
34
+ const sortedTools = [...mcpTools.tools].sort((a, b) => a.name > b.name ? 1 : -1);
35
+ for (const mcpTool of sortedTools) {
36
+ if (!mcpTool.preload) continue;
37
+ const { name: toolName } = getUniqueSanitizedToolName(mcpTool.name, registeredNames);
38
+ registeredNames.add(toolName);
39
+ const description = `mcp server: ${serverName}
40
+ ${mcpTool.description ?? ""}`;
41
+ tools.push({
42
+ type: "function",
43
+ function: {
44
+ name: toolName,
45
+ description,
46
+ parameters: {
47
+ type: "object",
48
+ properties: mcpTool.inputSchema.properties ?? {},
49
+ required: mcpTool.inputSchema.required ?? []
50
+ }
51
+ }
52
+ });
53
+ toolMapping.set(toolName, {
54
+ toolSet,
55
+ originalToolName: mcpTool.name
56
+ });
57
+ }
58
+ }
59
+ return { convertedTools: { tools, toolMapping }, initializationInfo, authRequirementInfo };
60
+ }
61
+ export {
62
+ convertMCPServersToTools
63
+ };
64
+ //# sourceMappingURL=convertMCPServers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/mcp/convertMCPServers.ts"],"sourcesContent":["import type { ChatCompletionTool } from 'openai/resources/chat';\nimport type { MCPServerInitInfo } from '../events/schema';\nimport type { MCPAuthRequired } from '../mcp/IMCPServer';\nimport { type IToolSet, isAuthRequired } from './IMCPServer';\nimport { getUniqueSanitizedToolName } from './toolNames';\n\nexport interface MappedMCPTool {\n toolSet: IToolSet;\n originalToolName: string;\n}\n\nexport interface ConvertToolsResult {\n tools: ChatCompletionTool[];\n toolMapping: Map<string, MappedMCPTool>;\n}\n\nexport interface ConvertMCPServersToToolsResult {\n convertedTools: ConvertToolsResult;\n initializationInfo: MCPServerInitInfo[];\n authRequirementInfo: MCPAuthRequired[];\n}\n\nexport async function convertMCPServersToTools(params: {\n tfyManagedServers: IToolSet[];\n userServers: IToolSet[];\n}): Promise<ConvertMCPServersToToolsResult> {\n const { tfyManagedServers, userServers } = params;\n const tools: ChatCompletionTool[] = [];\n const toolMapping = new Map<string, MappedMCPTool>();\n const initializationInfo: MCPServerInitInfo[] = [];\n const authRequirementInfo: MCPAuthRequired[] = [];\n const registeredNames = new Set<string>();\n\n // Skip non-preloaded servers that have no preloaded tools, to avoid unnecessary listTools() calls and OAuth triggers.\n // Non-preloaded servers with some preloaded tools are kept so those tools can be registered.\n const filteredUserServers = userServers.filter(s => s.preload || s.hasPreloadedTools);\n\n // TFY-managed servers first so they claim their original tool names before user servers.\n const sortedTfyServers = [...tfyManagedServers].sort((a, b) => (a.name > b.name ? 1 : -1));\n const sortedUserServers = [...filteredUserServers].sort((a, b) => (a.name > b.name ? 1 : -1));\n const allServers = [...sortedTfyServers, ...sortedUserServers];\n\n const listResults = await Promise.all(\n allServers.map(async server => ({ serverName: server.name, response: await server.listTools() })),\n );\n\n for (let i = 0; i < allServers.length; i++) {\n const listResult = listResults[i];\n if (!listResult) continue;\n const { serverName, response: listResponse } = listResult;\n if (isAuthRequired(listResponse)) {\n authRequirementInfo.push(listResponse.authRequired);\n continue;\n }\n const { result: mcpTools, wasInitialized } = listResponse;\n if (wasInitialized) {\n initializationInfo.push(wasInitialized);\n }\n\n const toolSet = allServers[i];\n if (toolSet === undefined) {\n throw new Error(`Unreachable: missing tool set at index ${String(i)}`);\n }\n const sortedTools = [...mcpTools.tools].sort((a, b) => (a.name > b.name ? 1 : -1));\n for (const mcpTool of sortedTools) {\n if (!mcpTool.preload) continue;\n const { name: toolName } = getUniqueSanitizedToolName(mcpTool.name, registeredNames);\n registeredNames.add(toolName);\n const description = `mcp server: ${serverName}\\n${mcpTool.description ?? ''}`;\n tools.push({\n type: 'function',\n function: {\n name: toolName,\n description: description,\n parameters: {\n type: 'object',\n properties: mcpTool.inputSchema.properties ?? {},\n required: mcpTool.inputSchema.required ?? [],\n },\n },\n });\n\n toolMapping.set(toolName, {\n toolSet,\n originalToolName: mcpTool.name,\n });\n }\n }\n\n return { convertedTools: { tools, toolMapping }, initializationInfo, authRequirementInfo };\n}\n"],"mappings":";AAGA,SAAwB,sBAAsB;AAC9C,SAAS,kCAAkC;AAkB3C,eAAsB,yBAAyB,QAGH;AAC1C,QAAM,EAAE,mBAAmB,YAAY,IAAI;AAC3C,QAAM,QAA8B,CAAC;AACrC,QAAM,cAAc,oBAAI,IAA2B;AACnD,QAAM,qBAA0C,CAAC;AACjD,QAAM,sBAAyC,CAAC;AAChD,QAAM,kBAAkB,oBAAI,IAAY;AAIxC,QAAM,sBAAsB,YAAY,OAAO,OAAK,EAAE,WAAW,EAAE,iBAAiB;AAGpF,QAAM,mBAAmB,CAAC,GAAG,iBAAiB,EAAE,KAAK,CAAC,GAAG,MAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAG;AACzF,QAAM,oBAAoB,CAAC,GAAG,mBAAmB,EAAE,KAAK,CAAC,GAAG,MAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAG;AAC5F,QAAM,aAAa,CAAC,GAAG,kBAAkB,GAAG,iBAAiB;AAE7D,QAAM,cAAc,MAAM,QAAQ;AAAA,IAChC,WAAW,IAAI,OAAM,YAAW,EAAE,YAAY,OAAO,MAAM,UAAU,MAAM,OAAO,UAAU,EAAE,EAAE;AAAA,EAClG;AAEA,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,UAAM,aAAa,YAAY,CAAC;AAChC,QAAI,CAAC,WAAY;AACjB,UAAM,EAAE,YAAY,UAAU,aAAa,IAAI;AAC/C,QAAI,eAAe,YAAY,GAAG;AAChC,0BAAoB,KAAK,aAAa,YAAY;AAClD;AAAA,IACF;AACA,UAAM,EAAE,QAAQ,UAAU,eAAe,IAAI;AAC7C,QAAI,gBAAgB;AAClB,yBAAmB,KAAK,cAAc;AAAA,IACxC;AAEA,UAAM,UAAU,WAAW,CAAC;AAC5B,QAAI,YAAY,QAAW;AACzB,YAAM,IAAI,MAAM,0CAA0C,OAAO,CAAC,CAAC,EAAE;AAAA,IACvE;AACA,UAAM,cAAc,CAAC,GAAG,SAAS,KAAK,EAAE,KAAK,CAAC,GAAG,MAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAG;AACjF,eAAW,WAAW,aAAa;AACjC,UAAI,CAAC,QAAQ,QAAS;AACtB,YAAM,EAAE,MAAM,SAAS,IAAI,2BAA2B,QAAQ,MAAM,eAAe;AACnF,sBAAgB,IAAI,QAAQ;AAC5B,YAAM,cAAc,eAAe,UAAU;AAAA,EAAK,QAAQ,eAAe,EAAE;AAC3E,YAAM,KAAK;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA,UACR,MAAM;AAAA,UACN;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,YAAY,QAAQ,YAAY,cAAc,CAAC;AAAA,YAC/C,UAAU,QAAQ,YAAY,YAAY,CAAC;AAAA,UAC7C;AAAA,QACF;AAAA,MACF,CAAC;AAED,kBAAY,IAAI,UAAU;AAAA,QACxB;AAAA,QACA,kBAAkB,QAAQ;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,EAAE,gBAAgB,EAAE,OAAO,YAAY,GAAG,oBAAoB,oBAAoB;AAC3F;","names":[]}
@@ -0,0 +1,31 @@
1
+ import type { RegisteredPassthroughEvent } from '../events/PassthroughEvents';
2
+ import type { ApprovalDecision, MCPServerInitInfo } from '../events/schema';
3
+ import type { InternalEnrichedAssistantMessage, InternalEnrichedToolCall, LLMToolMessage } from '../llm/LLMTypes';
4
+ import type { MCPAuthRequired } from '../mcp/IMCPServer';
5
+ import type { AgentThreadCreateSubAgent } from '../runtime/AgentThread.types';
6
+ import type { SandboxInfo } from '../sandbox/Sandbox';
7
+ import type { MappedMCPTool } from './convertMCPServers';
8
+ export interface ToolCallResult {
9
+ message: LLMToolMessage;
10
+ info?: MappedMCPTool | undefined;
11
+ failure: boolean;
12
+ isStructuredContent: boolean;
13
+ completedAt: string;
14
+ }
15
+ export interface ExecuteToolCallsResult {
16
+ toolCallResults: ToolCallResult[];
17
+ initializationInfo: MCPServerInitInfo[];
18
+ createThreadEvents: AgentThreadCreateSubAgent[];
19
+ sandboxCreated: SandboxInfo | undefined;
20
+ authRequirementInfo: MCPAuthRequired[];
21
+ approvalRequiredToolCalls: InternalEnrichedToolCall[];
22
+ clientSideToolCalls: InternalEnrichedToolCall[];
23
+ events: RegisteredPassthroughEvent[];
24
+ }
25
+ export declare function executeToolCalls({ assistantMessage, toolMapping, threadId, approvalDecisions, }: {
26
+ assistantMessage: InternalEnrichedAssistantMessage;
27
+ toolMapping: Map<string, MappedMCPTool>;
28
+ threadId: string;
29
+ approvalDecisions: Map<string, ApprovalDecision>;
30
+ }): Promise<ExecuteToolCallsResult>;
31
+ //# sourceMappingURL=executeToolCalls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeToolCalls.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/executeToolCalls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASzD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IAKxB,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,kBAAkB,EAAE,yBAAyB,EAAE,CAAC;IAChD,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,mBAAmB,EAAE,eAAe,EAAE,CAAC;IACvC,yBAAyB,EAAE,wBAAwB,EAAE,CAAC;IACtD,mBAAmB,EAAE,wBAAwB,EAAE,CAAC;IAChD,MAAM,EAAE,0BAA0B,EAAE,CAAC;CACtC;AAED,wBAAsB,gBAAgB,CAAC,EACrC,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,iBAAiB,GAClB,EAAE;IACD,gBAAgB,EAAE,gCAAgC,CAAC;IACnD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAClD,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkJlC"}
@@ -0,0 +1,168 @@
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 __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/core/mcp/executeToolCalls.ts
21
+ var executeToolCalls_exports = {};
22
+ __export(executeToolCalls_exports, {
23
+ executeToolCalls: () => executeToolCalls
24
+ });
25
+ module.exports = __toCommonJS(executeToolCalls_exports);
26
+ var import_AgentThread = require("../runtime/AgentThread.types.js");
27
+ var import_IMCPServer = require("./IMCPServer.js");
28
+ async function executeToolCalls({
29
+ assistantMessage,
30
+ toolMapping,
31
+ threadId,
32
+ approvalDecisions
33
+ }) {
34
+ const toolMessages = [];
35
+ const initializationInfo = [];
36
+ const createThreadEvents = [];
37
+ const authRequirementInfo = [];
38
+ const approvalRequiredToolCalls = [];
39
+ const clientSideToolCalls = [];
40
+ const passthroughEvents = [];
41
+ let sandboxCreated;
42
+ if (!assistantMessage.tool_calls) {
43
+ return {
44
+ toolCallResults: toolMessages,
45
+ initializationInfo,
46
+ createThreadEvents,
47
+ sandboxCreated,
48
+ authRequirementInfo,
49
+ approvalRequiredToolCalls,
50
+ clientSideToolCalls,
51
+ events: passthroughEvents
52
+ };
53
+ }
54
+ const toolCallPromises = assistantMessage.tool_calls.map(async (toolCall) => {
55
+ const toolInfo = toolMapping.get(toolCall.function.name);
56
+ if (!toolInfo) {
57
+ return {
58
+ toolCall,
59
+ toolInfo,
60
+ response: (0, import_IMCPServer.toolResultResponse)({ text: `Tool ${toolCall.function.name} not found in tool mapping` }),
61
+ failure: true,
62
+ completedAt: (/* @__PURE__ */ new Date()).toISOString()
63
+ };
64
+ }
65
+ try {
66
+ const args = JSON.parse(toolCall.function.arguments || "{}");
67
+ const response = await toolInfo.toolSet.callTool(
68
+ {
69
+ name: toolInfo.originalToolName,
70
+ arguments: args
71
+ },
72
+ approvalDecisions.get(toolCall.id)
73
+ );
74
+ return { toolCall, toolInfo, response, failure: false, completedAt: (/* @__PURE__ */ new Date()).toISOString() };
75
+ } catch (error) {
76
+ return {
77
+ toolCall,
78
+ toolInfo,
79
+ response: (0, import_IMCPServer.toolResultResponse)({
80
+ text: JSON.stringify({ error: error instanceof Error ? error.message : "Tool execution failed" }),
81
+ isError: true
82
+ }),
83
+ failure: true,
84
+ completedAt: (/* @__PURE__ */ new Date()).toISOString()
85
+ };
86
+ }
87
+ });
88
+ const results = await Promise.all(toolCallPromises);
89
+ for (const { toolCall, toolInfo, response, failure, completedAt } of results) {
90
+ if ((0, import_IMCPServer.isCallToolResponseCreateSubAgent)(response)) {
91
+ createThreadEvents.push({
92
+ type: import_AgentThread.InternalEventType.AGENT_CREATE_SUBAGENT,
93
+ thread_id: threadId,
94
+ tool_call_id: toolCall.id,
95
+ agent_info: response.createSubAgent
96
+ });
97
+ continue;
98
+ }
99
+ if ((0, import_IMCPServer.isAuthRequired)(response)) {
100
+ authRequirementInfo.push(response.authRequired);
101
+ toolMessages.push({
102
+ message: {
103
+ role: "tool",
104
+ tool_call_id: toolCall.id,
105
+ content: "Waiting for user to authenticate. Please try again 1 time."
106
+ },
107
+ failure: true,
108
+ info: toolInfo,
109
+ isStructuredContent: false,
110
+ completedAt
111
+ });
112
+ continue;
113
+ }
114
+ if ((0, import_IMCPServer.isApprovalRequiredResponse)(response)) {
115
+ approvalRequiredToolCalls.push(toolCall);
116
+ continue;
117
+ }
118
+ if ((0, import_IMCPServer.isClientSideToolRequiredResponse)(response)) {
119
+ clientSideToolCalls.push(toolCall);
120
+ continue;
121
+ }
122
+ const { result, wasInitialized } = response;
123
+ let content;
124
+ let isStructuredContent = false;
125
+ if (result.isError) {
126
+ content = JSON.stringify({ error: result.content });
127
+ } else if (result.structuredContent) {
128
+ isStructuredContent = true;
129
+ content = JSON.stringify(result.structuredContent);
130
+ } else if (Array.isArray(result.content)) {
131
+ const textContent = result.content.filter((c) => c.type === "text").map((c) => c.text).join("\n");
132
+ content = textContent || JSON.stringify(result.content);
133
+ } else {
134
+ content = JSON.stringify(result.content);
135
+ }
136
+ toolMessages.push({
137
+ message: { role: "tool", tool_call_id: toolCall.id, content },
138
+ failure,
139
+ info: toolInfo,
140
+ isStructuredContent,
141
+ completedAt
142
+ });
143
+ if (wasInitialized) {
144
+ initializationInfo.push(wasInitialized);
145
+ }
146
+ if (response.sandboxCreated && response.sandboxInfo) {
147
+ sandboxCreated = response.sandboxInfo;
148
+ }
149
+ if (response.events?.length) {
150
+ passthroughEvents.push(...response.events);
151
+ }
152
+ }
153
+ return {
154
+ toolCallResults: toolMessages,
155
+ initializationInfo,
156
+ createThreadEvents,
157
+ sandboxCreated,
158
+ authRequirementInfo,
159
+ approvalRequiredToolCalls,
160
+ clientSideToolCalls,
161
+ events: passthroughEvents
162
+ };
163
+ }
164
+ // Annotate the CommonJS export names for ESM import in node:
165
+ 0 && (module.exports = {
166
+ executeToolCalls
167
+ });
168
+ //# sourceMappingURL=executeToolCalls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/mcp/executeToolCalls.ts"],"sourcesContent":["import type { RegisteredPassthroughEvent } from '../events/PassthroughEvents';\nimport type { ApprovalDecision, MCPServerInitInfo } from '../events/schema';\nimport type { InternalEnrichedAssistantMessage, InternalEnrichedToolCall, LLMToolMessage } from '../llm/LLMTypes';\nimport type { MCPAuthRequired } from '../mcp/IMCPServer';\nimport type { AgentThreadCreateSubAgent } from '../runtime/AgentThread.types';\nimport { InternalEventType } from '../runtime/AgentThread.types';\nimport type { SandboxInfo } from '../sandbox/Sandbox';\nimport type { MappedMCPTool } from './convertMCPServers';\nimport {\n isApprovalRequiredResponse,\n isAuthRequired,\n isCallToolResponseCreateSubAgent,\n isClientSideToolRequiredResponse,\n toolResultResponse,\n} from './IMCPServer';\n\nexport interface ToolCallResult {\n message: LLMToolMessage;\n // Absent only for unknown-tool calls (LLM hallucinated a name not in toolMapping):\n // there is no backing MCP server. Downstream consumers (e.g. LargeToolResponse)\n // gate on `failure: false` before reading `info`, so the absence is naturally\n // short-circuited on the success path.\n info?: MappedMCPTool | undefined;\n failure: boolean;\n isStructuredContent: boolean;\n completedAt: string;\n}\n\nexport interface ExecuteToolCallsResult {\n toolCallResults: ToolCallResult[];\n initializationInfo: MCPServerInitInfo[];\n createThreadEvents: AgentThreadCreateSubAgent[];\n sandboxCreated: SandboxInfo | undefined;\n authRequirementInfo: MCPAuthRequired[];\n approvalRequiredToolCalls: InternalEnrichedToolCall[];\n clientSideToolCalls: InternalEnrichedToolCall[];\n events: RegisteredPassthroughEvent[];\n}\n\nexport async function executeToolCalls({\n assistantMessage,\n toolMapping,\n threadId,\n approvalDecisions,\n}: {\n assistantMessage: InternalEnrichedAssistantMessage;\n toolMapping: Map<string, MappedMCPTool>;\n threadId: string;\n approvalDecisions: Map<string, ApprovalDecision>;\n}): Promise<ExecuteToolCallsResult> {\n const toolMessages: ToolCallResult[] = [];\n const initializationInfo: MCPServerInitInfo[] = [];\n const createThreadEvents: AgentThreadCreateSubAgent[] = [];\n const authRequirementInfo: MCPAuthRequired[] = [];\n const approvalRequiredToolCalls: InternalEnrichedToolCall[] = [];\n const clientSideToolCalls: InternalEnrichedToolCall[] = [];\n const passthroughEvents: RegisteredPassthroughEvent[] = [];\n let sandboxCreated: SandboxInfo | undefined;\n\n if (!assistantMessage.tool_calls) {\n return {\n toolCallResults: toolMessages,\n initializationInfo,\n createThreadEvents,\n sandboxCreated,\n authRequirementInfo,\n approvalRequiredToolCalls,\n clientSideToolCalls,\n events: passthroughEvents,\n };\n }\n\n const toolCallPromises = assistantMessage.tool_calls.map(async toolCall => {\n const toolInfo = toolMapping.get(toolCall.function.name);\n if (!toolInfo) {\n return {\n toolCall,\n toolInfo,\n response: toolResultResponse({ text: `Tool ${toolCall.function.name} not found in tool mapping` }),\n failure: true,\n completedAt: new Date().toISOString(),\n };\n }\n\n try {\n const args: Record<string, unknown> = JSON.parse(toolCall.function.arguments || '{}') as Record<string, unknown>;\n const response = await toolInfo.toolSet.callTool(\n {\n name: toolInfo.originalToolName,\n arguments: args,\n },\n approvalDecisions.get(toolCall.id),\n );\n return { toolCall, toolInfo, response, failure: false, completedAt: new Date().toISOString() };\n } catch (error) {\n return {\n toolCall,\n toolInfo,\n response: toolResultResponse({\n text: JSON.stringify({ error: error instanceof Error ? error.message : 'Tool execution failed' }),\n isError: true,\n }),\n failure: true,\n completedAt: new Date().toISOString(),\n };\n }\n });\n\n const results = await Promise.all(toolCallPromises);\n for (const { toolCall, toolInfo, response, failure, completedAt } of results) {\n if (isCallToolResponseCreateSubAgent(response)) {\n createThreadEvents.push({\n type: InternalEventType.AGENT_CREATE_SUBAGENT,\n thread_id: threadId,\n tool_call_id: toolCall.id,\n agent_info: response.createSubAgent,\n });\n continue;\n }\n\n if (isAuthRequired(response)) {\n authRequirementInfo.push(response.authRequired);\n // Must still emit a tool result so every tool_call in the assistant message has a\n // matching tool_result in context; otherwise the LLM API rejects the conversation.\n toolMessages.push({\n message: {\n role: 'tool',\n tool_call_id: toolCall.id,\n content: 'Waiting for user to authenticate. Please try again 1 time.',\n },\n failure: true,\n info: toolInfo,\n isStructuredContent: false,\n completedAt,\n });\n continue;\n }\n\n if (isApprovalRequiredResponse(response)) {\n approvalRequiredToolCalls.push(toolCall);\n continue;\n }\n\n if (isClientSideToolRequiredResponse(response)) {\n clientSideToolCalls.push(toolCall);\n continue;\n }\n\n const { result, wasInitialized } = response;\n\n let content: string;\n let isStructuredContent = false;\n if (result.isError) {\n content = JSON.stringify({ error: result.content });\n } else if (result.structuredContent) {\n isStructuredContent = true;\n content = JSON.stringify(result.structuredContent);\n } else if (Array.isArray(result.content)) {\n const textContent = result.content\n .filter((c): c is { type: 'text'; text: string } => c.type === 'text')\n .map(c => c.text)\n .join('\\n');\n content = textContent || JSON.stringify(result.content);\n } else {\n content = JSON.stringify(result.content);\n }\n\n toolMessages.push({\n message: { role: 'tool' as const, tool_call_id: toolCall.id, content },\n failure,\n info: toolInfo,\n isStructuredContent,\n completedAt,\n });\n if (wasInitialized) {\n initializationInfo.push(wasInitialized);\n }\n if (response.sandboxCreated && response.sandboxInfo) {\n sandboxCreated = response.sandboxInfo;\n }\n if (response.events?.length) {\n passthroughEvents.push(...response.events);\n }\n }\n\n return {\n toolCallResults: toolMessages,\n initializationInfo,\n createThreadEvents,\n sandboxCreated,\n authRequirementInfo,\n approvalRequiredToolCalls,\n clientSideToolCalls,\n events: passthroughEvents,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,149 @@
1
+ // src/core/mcp/executeToolCalls.ts
2
+ import { InternalEventType } from "../runtime/AgentThread.types.mjs";
3
+ import {
4
+ isApprovalRequiredResponse,
5
+ isAuthRequired,
6
+ isCallToolResponseCreateSubAgent,
7
+ isClientSideToolRequiredResponse,
8
+ toolResultResponse
9
+ } from "./IMCPServer.mjs";
10
+ async function executeToolCalls({
11
+ assistantMessage,
12
+ toolMapping,
13
+ threadId,
14
+ approvalDecisions
15
+ }) {
16
+ const toolMessages = [];
17
+ const initializationInfo = [];
18
+ const createThreadEvents = [];
19
+ const authRequirementInfo = [];
20
+ const approvalRequiredToolCalls = [];
21
+ const clientSideToolCalls = [];
22
+ const passthroughEvents = [];
23
+ let sandboxCreated;
24
+ if (!assistantMessage.tool_calls) {
25
+ return {
26
+ toolCallResults: toolMessages,
27
+ initializationInfo,
28
+ createThreadEvents,
29
+ sandboxCreated,
30
+ authRequirementInfo,
31
+ approvalRequiredToolCalls,
32
+ clientSideToolCalls,
33
+ events: passthroughEvents
34
+ };
35
+ }
36
+ const toolCallPromises = assistantMessage.tool_calls.map(async (toolCall) => {
37
+ const toolInfo = toolMapping.get(toolCall.function.name);
38
+ if (!toolInfo) {
39
+ return {
40
+ toolCall,
41
+ toolInfo,
42
+ response: toolResultResponse({ text: `Tool ${toolCall.function.name} not found in tool mapping` }),
43
+ failure: true,
44
+ completedAt: (/* @__PURE__ */ new Date()).toISOString()
45
+ };
46
+ }
47
+ try {
48
+ const args = JSON.parse(toolCall.function.arguments || "{}");
49
+ const response = await toolInfo.toolSet.callTool(
50
+ {
51
+ name: toolInfo.originalToolName,
52
+ arguments: args
53
+ },
54
+ approvalDecisions.get(toolCall.id)
55
+ );
56
+ return { toolCall, toolInfo, response, failure: false, completedAt: (/* @__PURE__ */ new Date()).toISOString() };
57
+ } catch (error) {
58
+ return {
59
+ toolCall,
60
+ toolInfo,
61
+ response: toolResultResponse({
62
+ text: JSON.stringify({ error: error instanceof Error ? error.message : "Tool execution failed" }),
63
+ isError: true
64
+ }),
65
+ failure: true,
66
+ completedAt: (/* @__PURE__ */ new Date()).toISOString()
67
+ };
68
+ }
69
+ });
70
+ const results = await Promise.all(toolCallPromises);
71
+ for (const { toolCall, toolInfo, response, failure, completedAt } of results) {
72
+ if (isCallToolResponseCreateSubAgent(response)) {
73
+ createThreadEvents.push({
74
+ type: InternalEventType.AGENT_CREATE_SUBAGENT,
75
+ thread_id: threadId,
76
+ tool_call_id: toolCall.id,
77
+ agent_info: response.createSubAgent
78
+ });
79
+ continue;
80
+ }
81
+ if (isAuthRequired(response)) {
82
+ authRequirementInfo.push(response.authRequired);
83
+ toolMessages.push({
84
+ message: {
85
+ role: "tool",
86
+ tool_call_id: toolCall.id,
87
+ content: "Waiting for user to authenticate. Please try again 1 time."
88
+ },
89
+ failure: true,
90
+ info: toolInfo,
91
+ isStructuredContent: false,
92
+ completedAt
93
+ });
94
+ continue;
95
+ }
96
+ if (isApprovalRequiredResponse(response)) {
97
+ approvalRequiredToolCalls.push(toolCall);
98
+ continue;
99
+ }
100
+ if (isClientSideToolRequiredResponse(response)) {
101
+ clientSideToolCalls.push(toolCall);
102
+ continue;
103
+ }
104
+ const { result, wasInitialized } = response;
105
+ let content;
106
+ let isStructuredContent = false;
107
+ if (result.isError) {
108
+ content = JSON.stringify({ error: result.content });
109
+ } else if (result.structuredContent) {
110
+ isStructuredContent = true;
111
+ content = JSON.stringify(result.structuredContent);
112
+ } else if (Array.isArray(result.content)) {
113
+ const textContent = result.content.filter((c) => c.type === "text").map((c) => c.text).join("\n");
114
+ content = textContent || JSON.stringify(result.content);
115
+ } else {
116
+ content = JSON.stringify(result.content);
117
+ }
118
+ toolMessages.push({
119
+ message: { role: "tool", tool_call_id: toolCall.id, content },
120
+ failure,
121
+ info: toolInfo,
122
+ isStructuredContent,
123
+ completedAt
124
+ });
125
+ if (wasInitialized) {
126
+ initializationInfo.push(wasInitialized);
127
+ }
128
+ if (response.sandboxCreated && response.sandboxInfo) {
129
+ sandboxCreated = response.sandboxInfo;
130
+ }
131
+ if (response.events?.length) {
132
+ passthroughEvents.push(...response.events);
133
+ }
134
+ }
135
+ return {
136
+ toolCallResults: toolMessages,
137
+ initializationInfo,
138
+ createThreadEvents,
139
+ sandboxCreated,
140
+ authRequirementInfo,
141
+ approvalRequiredToolCalls,
142
+ clientSideToolCalls,
143
+ events: passthroughEvents
144
+ };
145
+ }
146
+ export {
147
+ executeToolCalls
148
+ };
149
+ //# sourceMappingURL=executeToolCalls.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/mcp/executeToolCalls.ts"],"sourcesContent":["import type { RegisteredPassthroughEvent } from '../events/PassthroughEvents';\nimport type { ApprovalDecision, MCPServerInitInfo } from '../events/schema';\nimport type { InternalEnrichedAssistantMessage, InternalEnrichedToolCall, LLMToolMessage } from '../llm/LLMTypes';\nimport type { MCPAuthRequired } from '../mcp/IMCPServer';\nimport type { AgentThreadCreateSubAgent } from '../runtime/AgentThread.types';\nimport { InternalEventType } from '../runtime/AgentThread.types';\nimport type { SandboxInfo } from '../sandbox/Sandbox';\nimport type { MappedMCPTool } from './convertMCPServers';\nimport {\n isApprovalRequiredResponse,\n isAuthRequired,\n isCallToolResponseCreateSubAgent,\n isClientSideToolRequiredResponse,\n toolResultResponse,\n} from './IMCPServer';\n\nexport interface ToolCallResult {\n message: LLMToolMessage;\n // Absent only for unknown-tool calls (LLM hallucinated a name not in toolMapping):\n // there is no backing MCP server. Downstream consumers (e.g. LargeToolResponse)\n // gate on `failure: false` before reading `info`, so the absence is naturally\n // short-circuited on the success path.\n info?: MappedMCPTool | undefined;\n failure: boolean;\n isStructuredContent: boolean;\n completedAt: string;\n}\n\nexport interface ExecuteToolCallsResult {\n toolCallResults: ToolCallResult[];\n initializationInfo: MCPServerInitInfo[];\n createThreadEvents: AgentThreadCreateSubAgent[];\n sandboxCreated: SandboxInfo | undefined;\n authRequirementInfo: MCPAuthRequired[];\n approvalRequiredToolCalls: InternalEnrichedToolCall[];\n clientSideToolCalls: InternalEnrichedToolCall[];\n events: RegisteredPassthroughEvent[];\n}\n\nexport async function executeToolCalls({\n assistantMessage,\n toolMapping,\n threadId,\n approvalDecisions,\n}: {\n assistantMessage: InternalEnrichedAssistantMessage;\n toolMapping: Map<string, MappedMCPTool>;\n threadId: string;\n approvalDecisions: Map<string, ApprovalDecision>;\n}): Promise<ExecuteToolCallsResult> {\n const toolMessages: ToolCallResult[] = [];\n const initializationInfo: MCPServerInitInfo[] = [];\n const createThreadEvents: AgentThreadCreateSubAgent[] = [];\n const authRequirementInfo: MCPAuthRequired[] = [];\n const approvalRequiredToolCalls: InternalEnrichedToolCall[] = [];\n const clientSideToolCalls: InternalEnrichedToolCall[] = [];\n const passthroughEvents: RegisteredPassthroughEvent[] = [];\n let sandboxCreated: SandboxInfo | undefined;\n\n if (!assistantMessage.tool_calls) {\n return {\n toolCallResults: toolMessages,\n initializationInfo,\n createThreadEvents,\n sandboxCreated,\n authRequirementInfo,\n approvalRequiredToolCalls,\n clientSideToolCalls,\n events: passthroughEvents,\n };\n }\n\n const toolCallPromises = assistantMessage.tool_calls.map(async toolCall => {\n const toolInfo = toolMapping.get(toolCall.function.name);\n if (!toolInfo) {\n return {\n toolCall,\n toolInfo,\n response: toolResultResponse({ text: `Tool ${toolCall.function.name} not found in tool mapping` }),\n failure: true,\n completedAt: new Date().toISOString(),\n };\n }\n\n try {\n const args: Record<string, unknown> = JSON.parse(toolCall.function.arguments || '{}') as Record<string, unknown>;\n const response = await toolInfo.toolSet.callTool(\n {\n name: toolInfo.originalToolName,\n arguments: args,\n },\n approvalDecisions.get(toolCall.id),\n );\n return { toolCall, toolInfo, response, failure: false, completedAt: new Date().toISOString() };\n } catch (error) {\n return {\n toolCall,\n toolInfo,\n response: toolResultResponse({\n text: JSON.stringify({ error: error instanceof Error ? error.message : 'Tool execution failed' }),\n isError: true,\n }),\n failure: true,\n completedAt: new Date().toISOString(),\n };\n }\n });\n\n const results = await Promise.all(toolCallPromises);\n for (const { toolCall, toolInfo, response, failure, completedAt } of results) {\n if (isCallToolResponseCreateSubAgent(response)) {\n createThreadEvents.push({\n type: InternalEventType.AGENT_CREATE_SUBAGENT,\n thread_id: threadId,\n tool_call_id: toolCall.id,\n agent_info: response.createSubAgent,\n });\n continue;\n }\n\n if (isAuthRequired(response)) {\n authRequirementInfo.push(response.authRequired);\n // Must still emit a tool result so every tool_call in the assistant message has a\n // matching tool_result in context; otherwise the LLM API rejects the conversation.\n toolMessages.push({\n message: {\n role: 'tool',\n tool_call_id: toolCall.id,\n content: 'Waiting for user to authenticate. Please try again 1 time.',\n },\n failure: true,\n info: toolInfo,\n isStructuredContent: false,\n completedAt,\n });\n continue;\n }\n\n if (isApprovalRequiredResponse(response)) {\n approvalRequiredToolCalls.push(toolCall);\n continue;\n }\n\n if (isClientSideToolRequiredResponse(response)) {\n clientSideToolCalls.push(toolCall);\n continue;\n }\n\n const { result, wasInitialized } = response;\n\n let content: string;\n let isStructuredContent = false;\n if (result.isError) {\n content = JSON.stringify({ error: result.content });\n } else if (result.structuredContent) {\n isStructuredContent = true;\n content = JSON.stringify(result.structuredContent);\n } else if (Array.isArray(result.content)) {\n const textContent = result.content\n .filter((c): c is { type: 'text'; text: string } => c.type === 'text')\n .map(c => c.text)\n .join('\\n');\n content = textContent || JSON.stringify(result.content);\n } else {\n content = JSON.stringify(result.content);\n }\n\n toolMessages.push({\n message: { role: 'tool' as const, tool_call_id: toolCall.id, content },\n failure,\n info: toolInfo,\n isStructuredContent,\n completedAt,\n });\n if (wasInitialized) {\n initializationInfo.push(wasInitialized);\n }\n if (response.sandboxCreated && response.sandboxInfo) {\n sandboxCreated = response.sandboxInfo;\n }\n if (response.events?.length) {\n passthroughEvents.push(...response.events);\n }\n }\n\n return {\n toolCallResults: toolMessages,\n initializationInfo,\n createThreadEvents,\n sandboxCreated,\n authRequirementInfo,\n approvalRequiredToolCalls,\n clientSideToolCalls,\n events: passthroughEvents,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,11 @@
1
+ import type { Logger } from 'winston';
2
+ /**
3
+ * Walk an MCP cursor-paginated list to completion, guarding against servers that return a
4
+ * previously seen cursor (which would otherwise loop forever). If a repeated cursor is seen the
5
+ * loop stops and (when a logger is supplied) a warning is emitted naming the server.
6
+ */
7
+ export declare function paginateWithCursorGuard<T>(fetchNext: (cursor: string | undefined) => Promise<{
8
+ items: T[];
9
+ nextCursor?: string | undefined;
10
+ }>, serverIdentifier: string | undefined, logger?: Logger): Promise<T[]>;
11
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,EACnG,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,EAAE,CAAC,CAsBd"}
@@ -0,0 +1,49 @@
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 __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/core/mcp/pagination.ts
21
+ var pagination_exports = {};
22
+ __export(pagination_exports, {
23
+ paginateWithCursorGuard: () => paginateWithCursorGuard
24
+ });
25
+ module.exports = __toCommonJS(pagination_exports);
26
+ async function paginateWithCursorGuard(fetchNext, serverIdentifier, logger) {
27
+ const allItems = [];
28
+ const seenCursors = /* @__PURE__ */ new Set();
29
+ const serverName = serverIdentifier ?? "unknown";
30
+ const firstResult = await fetchNext(void 0);
31
+ allItems.push(...firstResult.items);
32
+ let cursor = firstResult.nextCursor;
33
+ while (cursor) {
34
+ if (seenCursors.has(cursor)) {
35
+ logger?.warn(`Detected repeated cursor "${cursor}" from server ${serverName}. Breaking pagination loop.`);
36
+ break;
37
+ }
38
+ seenCursors.add(cursor);
39
+ const result = await fetchNext(cursor);
40
+ allItems.push(...result.items);
41
+ cursor = result.nextCursor;
42
+ }
43
+ return allItems;
44
+ }
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ paginateWithCursorGuard
48
+ });
49
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/mcp/pagination.ts"],"sourcesContent":["import type { Logger } from 'winston';\n\n/**\n * Walk an MCP cursor-paginated list to completion, guarding against servers that return a\n * previously seen cursor (which would otherwise loop forever). If a repeated cursor is seen the\n * loop stops and (when a logger is supplied) a warning is emitted naming the server.\n */\nexport async function paginateWithCursorGuard<T>(\n fetchNext: (cursor: string | undefined) => Promise<{ items: T[]; nextCursor?: string | undefined }>,\n serverIdentifier: string | undefined,\n logger?: Logger,\n): Promise<T[]> {\n const allItems: T[] = [];\n const seenCursors = new Set<string>();\n const serverName = serverIdentifier ?? 'unknown';\n\n const firstResult = await fetchNext(undefined);\n allItems.push(...firstResult.items);\n let cursor = firstResult.nextCursor;\n\n while (cursor) {\n if (seenCursors.has(cursor)) {\n logger?.warn(`Detected repeated cursor \"${cursor}\" from server ${serverName}. Breaking pagination loop.`);\n break;\n }\n seenCursors.add(cursor);\n\n const result = await fetchNext(cursor);\n allItems.push(...result.items);\n cursor = result.nextCursor;\n }\n\n return allItems;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,eAAsB,wBACpB,WACA,kBACA,QACc;AACd,QAAM,WAAgB,CAAC;AACvB,QAAM,cAAc,oBAAI,IAAY;AACpC,QAAM,aAAa,oBAAoB;AAEvC,QAAM,cAAc,MAAM,UAAU,MAAS;AAC7C,WAAS,KAAK,GAAG,YAAY,KAAK;AAClC,MAAI,SAAS,YAAY;AAEzB,SAAO,QAAQ;AACb,QAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,cAAQ,KAAK,6BAA6B,MAAM,iBAAiB,UAAU,6BAA6B;AACxG;AAAA,IACF;AACA,gBAAY,IAAI,MAAM;AAEtB,UAAM,SAAS,MAAM,UAAU,MAAM;AACrC,aAAS,KAAK,GAAG,OAAO,KAAK;AAC7B,aAAS,OAAO;AAAA,EAClB;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,24 @@
1
+ // src/core/mcp/pagination.ts
2
+ async function paginateWithCursorGuard(fetchNext, serverIdentifier, logger) {
3
+ const allItems = [];
4
+ const seenCursors = /* @__PURE__ */ new Set();
5
+ const serverName = serverIdentifier ?? "unknown";
6
+ const firstResult = await fetchNext(void 0);
7
+ allItems.push(...firstResult.items);
8
+ let cursor = firstResult.nextCursor;
9
+ while (cursor) {
10
+ if (seenCursors.has(cursor)) {
11
+ logger?.warn(`Detected repeated cursor "${cursor}" from server ${serverName}. Breaking pagination loop.`);
12
+ break;
13
+ }
14
+ seenCursors.add(cursor);
15
+ const result = await fetchNext(cursor);
16
+ allItems.push(...result.items);
17
+ cursor = result.nextCursor;
18
+ }
19
+ return allItems;
20
+ }
21
+ export {
22
+ paginateWithCursorGuard
23
+ };
24
+ //# sourceMappingURL=pagination.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/mcp/pagination.ts"],"sourcesContent":["import type { Logger } from 'winston';\n\n/**\n * Walk an MCP cursor-paginated list to completion, guarding against servers that return a\n * previously seen cursor (which would otherwise loop forever). If a repeated cursor is seen the\n * loop stops and (when a logger is supplied) a warning is emitted naming the server.\n */\nexport async function paginateWithCursorGuard<T>(\n fetchNext: (cursor: string | undefined) => Promise<{ items: T[]; nextCursor?: string | undefined }>,\n serverIdentifier: string | undefined,\n logger?: Logger,\n): Promise<T[]> {\n const allItems: T[] = [];\n const seenCursors = new Set<string>();\n const serverName = serverIdentifier ?? 'unknown';\n\n const firstResult = await fetchNext(undefined);\n allItems.push(...firstResult.items);\n let cursor = firstResult.nextCursor;\n\n while (cursor) {\n if (seenCursors.has(cursor)) {\n logger?.warn(`Detected repeated cursor \"${cursor}\" from server ${serverName}. Breaking pagination loop.`);\n break;\n }\n seenCursors.add(cursor);\n\n const result = await fetchNext(cursor);\n allItems.push(...result.items);\n cursor = result.nextCursor;\n }\n\n return allItems;\n}\n"],"mappings":";AAOA,eAAsB,wBACpB,WACA,kBACA,QACc;AACd,QAAM,WAAgB,CAAC;AACvB,QAAM,cAAc,oBAAI,IAAY;AACpC,QAAM,aAAa,oBAAoB;AAEvC,QAAM,cAAc,MAAM,UAAU,MAAS;AAC7C,WAAS,KAAK,GAAG,YAAY,KAAK;AAClC,MAAI,SAAS,YAAY;AAEzB,SAAO,QAAQ;AACb,QAAI,YAAY,IAAI,MAAM,GAAG;AAC3B,cAAQ,KAAK,6BAA6B,MAAM,iBAAiB,UAAU,6BAA6B;AACxG;AAAA,IACF;AACA,gBAAY,IAAI,MAAM;AAEtB,UAAM,SAAS,MAAM,UAAU,MAAM;AACrC,aAAS,KAAK,GAAG,OAAO,KAAK;AAC7B,aAAS,OAAO;AAAA,EAClB;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,36 @@
1
+ import type { CallToolRequest, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { ToolSchema } from './IMCPServer';
3
+ /** Networking for remote (url-based) MCP servers, kept separate so it can be mocked in tests. */
4
+ export type RemoteMcpTransportType = 'streamable-http' | 'sse';
5
+ export interface RemoteMcpConnection {
6
+ readonly transportType: RemoteMcpTransportType;
7
+ /** Session id for a stateful server, or null for a stateless one. */
8
+ readonly sessionId: string | null;
9
+ listTools(cursor?: string): Promise<{
10
+ tools: ToolSchema[];
11
+ nextCursor?: string | undefined;
12
+ }>;
13
+ callTool(params: CallToolRequest['params']): Promise<CallToolResult>;
14
+ close(): Promise<void>;
15
+ }
16
+ export declare function isSessionExpiredError(error: unknown): boolean;
17
+ /**
18
+ * Connect to a remote MCP server, keeping the first transport that connects. `sessionId` is passed to
19
+ * every attempt so a stateful session resumes in place instead of opening a throwaway one.
20
+ *
21
+ * `knownTransportType` is a hint (from a prior connect / persisted state): it's tried first for a fast
22
+ * path, but on failure we still fall back to probing the remaining transports, so a stale or wrong
23
+ * hint (server switched transports, bad resume data) self-heals instead of failing every turn.
24
+ */
25
+ export declare function connectRemoteMcp(params: {
26
+ url: string;
27
+ headers: Record<string, string>;
28
+ sessionId?: string | undefined;
29
+ knownTransportType?: RemoteMcpTransportType | undefined;
30
+ requestTimeoutMs: number;
31
+ connectTimeoutMs: number;
32
+ signal: AbortSignal;
33
+ onClose?: (() => void) | undefined;
34
+ onError?: ((error: Error) => void) | undefined;
35
+ }): Promise<RemoteMcpConnection>;
36
+ //# sourceMappingURL=remoteMcpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteMcpClient.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/remoteMcpClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAI1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,iGAAiG;AAEjG,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;IAC/C,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAoCD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AA0DD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,kBAAkB,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAChD,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwC/B"}