@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,102 @@
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/sandbox/SandboxErrors.ts
21
+ var SandboxErrors_exports = {};
22
+ __export(SandboxErrors_exports, {
23
+ SandboxError: () => SandboxError,
24
+ SandboxFileNotFoundError: () => SandboxFileNotFoundError,
25
+ SandboxFileTooLargeError: () => SandboxFileTooLargeError,
26
+ SandboxNotAvailableError: () => SandboxNotAvailableError,
27
+ SandboxPathIsDirectoryError: () => SandboxPathIsDirectoryError,
28
+ validateNoPathTraversal: () => validateNoPathTraversal,
29
+ validateSandboxOwnedByTenant: () => validateSandboxOwnedByTenant
30
+ });
31
+ module.exports = __toCommonJS(SandboxErrors_exports);
32
+ var SandboxError = class extends Error {
33
+ };
34
+ var SandboxFileNotFoundError = class extends SandboxError {
35
+ statusCode = 404;
36
+ constructor(path) {
37
+ super(`File not found: ${path}`);
38
+ this.name = "SandboxFileNotFoundError";
39
+ }
40
+ };
41
+ var SandboxNotAvailableError = class extends SandboxError {
42
+ statusCode = 410;
43
+ constructor(sandboxId) {
44
+ super(`Sandbox '${sandboxId}' no longer exists \u2014 it may have been auto-deleted`);
45
+ this.name = "SandboxNotAvailableError";
46
+ }
47
+ };
48
+ var SandboxPathIsDirectoryError = class extends SandboxError {
49
+ statusCode = 400;
50
+ constructor(path) {
51
+ super(`Path is a directory, not a file: ${path}`);
52
+ this.name = "SandboxPathIsDirectoryError";
53
+ }
54
+ };
55
+ var SandboxFileTooLargeError = class extends SandboxError {
56
+ statusCode = 413;
57
+ fileSize;
58
+ maxSize;
59
+ constructor(path, fileSize, maxSize) {
60
+ super(`File too large: ${path} (${String(fileSize)} bytes, max ${String(maxSize)})`);
61
+ this.name = "SandboxFileTooLargeError";
62
+ this.fileSize = fileSize;
63
+ this.maxSize = maxSize;
64
+ }
65
+ };
66
+ var SandboxTenantMismatchError = class extends SandboxError {
67
+ statusCode = 403;
68
+ constructor(requestTenant) {
69
+ super(`Sandbox does not belong to tenant ${requestTenant}`);
70
+ this.name = "SandboxTenantMismatchError";
71
+ }
72
+ };
73
+ var SandboxPathTraversalError = class extends SandboxError {
74
+ statusCode = 400;
75
+ constructor(path) {
76
+ super(`Path must not contain ".." segments: ${path}`);
77
+ this.name = "SandboxPathTraversalError";
78
+ }
79
+ };
80
+ function validateSandboxOwnedByTenant(sandboxId, tenantName) {
81
+ const dotIndex = sandboxId.indexOf(".");
82
+ if (dotIndex === -1 || sandboxId.substring(0, dotIndex) !== tenantName) {
83
+ throw new SandboxTenantMismatchError(tenantName);
84
+ }
85
+ }
86
+ var PATH_TRAVERSAL_RE = /(?:^|[\\/])\.\.(?:[\\/]|$)/;
87
+ function validateNoPathTraversal(path) {
88
+ if (PATH_TRAVERSAL_RE.test(path)) {
89
+ throw new SandboxPathTraversalError(path);
90
+ }
91
+ }
92
+ // Annotate the CommonJS export names for ESM import in node:
93
+ 0 && (module.exports = {
94
+ SandboxError,
95
+ SandboxFileNotFoundError,
96
+ SandboxFileTooLargeError,
97
+ SandboxNotAvailableError,
98
+ SandboxPathIsDirectoryError,
99
+ validateNoPathTraversal,
100
+ validateSandboxOwnedByTenant
101
+ });
102
+ //# sourceMappingURL=SandboxErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/sandbox/SandboxErrors.ts"],"sourcesContent":["export abstract class SandboxError extends Error {\n /**\n * Every sandbox failure is caused by the request itself — a bad path, another tenant's sandbox,\n * a missing or oversized file — so each subclass carries the status a host should reply with.\n * Listing the codes in use rather than `number` lets a typed route return this directly; adding\n * a subclass with a new code means widening this union and declaring it on the route.\n */\n abstract readonly statusCode: 400 | 403 | 404 | 410 | 413;\n}\n\nexport class SandboxFileNotFoundError extends SandboxError {\n readonly statusCode = 404;\n\n constructor(path: string) {\n super(`File not found: ${path}`);\n this.name = 'SandboxFileNotFoundError';\n }\n}\n\nexport class SandboxNotAvailableError extends SandboxError {\n readonly statusCode = 410;\n\n constructor(sandboxId: string) {\n super(`Sandbox '${sandboxId}' no longer exists — it may have been auto-deleted`);\n this.name = 'SandboxNotAvailableError';\n }\n}\n\nexport class SandboxPathIsDirectoryError extends SandboxError {\n readonly statusCode = 400;\n\n constructor(path: string) {\n super(`Path is a directory, not a file: ${path}`);\n this.name = 'SandboxPathIsDirectoryError';\n }\n}\n\nexport class SandboxFileTooLargeError extends SandboxError {\n readonly statusCode = 413;\n readonly fileSize: number;\n readonly maxSize: number;\n\n constructor(path: string, fileSize: number, maxSize: number) {\n super(`File too large: ${path} (${String(fileSize)} bytes, max ${String(maxSize)})`);\n this.name = 'SandboxFileTooLargeError';\n this.fileSize = fileSize;\n this.maxSize = maxSize;\n }\n}\n\nclass SandboxTenantMismatchError extends SandboxError {\n readonly statusCode = 403;\n\n constructor(requestTenant: string) {\n super(`Sandbox does not belong to tenant ${requestTenant}`);\n this.name = 'SandboxTenantMismatchError';\n }\n}\n\nclass SandboxPathTraversalError extends SandboxError {\n readonly statusCode = 400;\n\n constructor(path: string) {\n super(`Path must not contain \"..\" segments: ${path}`);\n this.name = 'SandboxPathTraversalError';\n }\n}\n\nexport function validateSandboxOwnedByTenant(sandboxId: string, tenantName: string): void {\n const dotIndex = sandboxId.indexOf('.');\n if (dotIndex === -1 || sandboxId.substring(0, dotIndex) !== tenantName) {\n throw new SandboxTenantMismatchError(tenantName);\n }\n}\n\nconst PATH_TRAVERSAL_RE = /(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)/;\n\nexport function validateNoPathTraversal(path: string): void {\n if (PATH_TRAVERSAL_RE.test(path)) {\n throw new SandboxPathTraversalError(path);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAe,eAAf,cAAoC,MAAM;AAQjD;AAEO,IAAM,2BAAN,cAAuC,aAAa;AAAA,EAChD,aAAa;AAAA,EAEtB,YAAY,MAAc;AACxB,UAAM,mBAAmB,IAAI,EAAE;AAC/B,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,2BAAN,cAAuC,aAAa;AAAA,EAChD,aAAa;AAAA,EAEtB,YAAY,WAAmB;AAC7B,UAAM,YAAY,SAAS,yDAAoD;AAC/E,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,8BAAN,cAA0C,aAAa;AAAA,EACnD,aAAa;AAAA,EAEtB,YAAY,MAAc;AACxB,UAAM,oCAAoC,IAAI,EAAE;AAChD,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,2BAAN,cAAuC,aAAa;AAAA,EAChD,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EAET,YAAY,MAAc,UAAkB,SAAiB;AAC3D,UAAM,mBAAmB,IAAI,KAAK,OAAO,QAAQ,CAAC,eAAe,OAAO,OAAO,CAAC,GAAG;AACnF,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,UAAU;AAAA,EACjB;AACF;AAEA,IAAM,6BAAN,cAAyC,aAAa;AAAA,EAC3C,aAAa;AAAA,EAEtB,YAAY,eAAuB;AACjC,UAAM,qCAAqC,aAAa,EAAE;AAC1D,SAAK,OAAO;AAAA,EACd;AACF;AAEA,IAAM,4BAAN,cAAwC,aAAa;AAAA,EAC1C,aAAa;AAAA,EAEtB,YAAY,MAAc;AACxB,UAAM,wCAAwC,IAAI,EAAE;AACpD,SAAK,OAAO;AAAA,EACd;AACF;AAEO,SAAS,6BAA6B,WAAmB,YAA0B;AACxF,QAAM,WAAW,UAAU,QAAQ,GAAG;AACtC,MAAI,aAAa,MAAM,UAAU,UAAU,GAAG,QAAQ,MAAM,YAAY;AACtE,UAAM,IAAI,2BAA2B,UAAU;AAAA,EACjD;AACF;AAEA,IAAM,oBAAoB;AAEnB,SAAS,wBAAwB,MAAoB;AAC1D,MAAI,kBAAkB,KAAK,IAAI,GAAG;AAChC,UAAM,IAAI,0BAA0B,IAAI;AAAA,EAC1C;AACF;","names":[]}
@@ -0,0 +1,71 @@
1
+ // src/core/sandbox/SandboxErrors.ts
2
+ var SandboxError = class extends Error {
3
+ };
4
+ var SandboxFileNotFoundError = class extends SandboxError {
5
+ statusCode = 404;
6
+ constructor(path) {
7
+ super(`File not found: ${path}`);
8
+ this.name = "SandboxFileNotFoundError";
9
+ }
10
+ };
11
+ var SandboxNotAvailableError = class extends SandboxError {
12
+ statusCode = 410;
13
+ constructor(sandboxId) {
14
+ super(`Sandbox '${sandboxId}' no longer exists \u2014 it may have been auto-deleted`);
15
+ this.name = "SandboxNotAvailableError";
16
+ }
17
+ };
18
+ var SandboxPathIsDirectoryError = class extends SandboxError {
19
+ statusCode = 400;
20
+ constructor(path) {
21
+ super(`Path is a directory, not a file: ${path}`);
22
+ this.name = "SandboxPathIsDirectoryError";
23
+ }
24
+ };
25
+ var SandboxFileTooLargeError = class extends SandboxError {
26
+ statusCode = 413;
27
+ fileSize;
28
+ maxSize;
29
+ constructor(path, fileSize, maxSize) {
30
+ super(`File too large: ${path} (${String(fileSize)} bytes, max ${String(maxSize)})`);
31
+ this.name = "SandboxFileTooLargeError";
32
+ this.fileSize = fileSize;
33
+ this.maxSize = maxSize;
34
+ }
35
+ };
36
+ var SandboxTenantMismatchError = class extends SandboxError {
37
+ statusCode = 403;
38
+ constructor(requestTenant) {
39
+ super(`Sandbox does not belong to tenant ${requestTenant}`);
40
+ this.name = "SandboxTenantMismatchError";
41
+ }
42
+ };
43
+ var SandboxPathTraversalError = class extends SandboxError {
44
+ statusCode = 400;
45
+ constructor(path) {
46
+ super(`Path must not contain ".." segments: ${path}`);
47
+ this.name = "SandboxPathTraversalError";
48
+ }
49
+ };
50
+ function validateSandboxOwnedByTenant(sandboxId, tenantName) {
51
+ const dotIndex = sandboxId.indexOf(".");
52
+ if (dotIndex === -1 || sandboxId.substring(0, dotIndex) !== tenantName) {
53
+ throw new SandboxTenantMismatchError(tenantName);
54
+ }
55
+ }
56
+ var PATH_TRAVERSAL_RE = /(?:^|[\\/])\.\.(?:[\\/]|$)/;
57
+ function validateNoPathTraversal(path) {
58
+ if (PATH_TRAVERSAL_RE.test(path)) {
59
+ throw new SandboxPathTraversalError(path);
60
+ }
61
+ }
62
+ export {
63
+ SandboxError,
64
+ SandboxFileNotFoundError,
65
+ SandboxFileTooLargeError,
66
+ SandboxNotAvailableError,
67
+ SandboxPathIsDirectoryError,
68
+ validateNoPathTraversal,
69
+ validateSandboxOwnedByTenant
70
+ };
71
+ //# sourceMappingURL=SandboxErrors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/sandbox/SandboxErrors.ts"],"sourcesContent":["export abstract class SandboxError extends Error {\n /**\n * Every sandbox failure is caused by the request itself — a bad path, another tenant's sandbox,\n * a missing or oversized file — so each subclass carries the status a host should reply with.\n * Listing the codes in use rather than `number` lets a typed route return this directly; adding\n * a subclass with a new code means widening this union and declaring it on the route.\n */\n abstract readonly statusCode: 400 | 403 | 404 | 410 | 413;\n}\n\nexport class SandboxFileNotFoundError extends SandboxError {\n readonly statusCode = 404;\n\n constructor(path: string) {\n super(`File not found: ${path}`);\n this.name = 'SandboxFileNotFoundError';\n }\n}\n\nexport class SandboxNotAvailableError extends SandboxError {\n readonly statusCode = 410;\n\n constructor(sandboxId: string) {\n super(`Sandbox '${sandboxId}' no longer exists — it may have been auto-deleted`);\n this.name = 'SandboxNotAvailableError';\n }\n}\n\nexport class SandboxPathIsDirectoryError extends SandboxError {\n readonly statusCode = 400;\n\n constructor(path: string) {\n super(`Path is a directory, not a file: ${path}`);\n this.name = 'SandboxPathIsDirectoryError';\n }\n}\n\nexport class SandboxFileTooLargeError extends SandboxError {\n readonly statusCode = 413;\n readonly fileSize: number;\n readonly maxSize: number;\n\n constructor(path: string, fileSize: number, maxSize: number) {\n super(`File too large: ${path} (${String(fileSize)} bytes, max ${String(maxSize)})`);\n this.name = 'SandboxFileTooLargeError';\n this.fileSize = fileSize;\n this.maxSize = maxSize;\n }\n}\n\nclass SandboxTenantMismatchError extends SandboxError {\n readonly statusCode = 403;\n\n constructor(requestTenant: string) {\n super(`Sandbox does not belong to tenant ${requestTenant}`);\n this.name = 'SandboxTenantMismatchError';\n }\n}\n\nclass SandboxPathTraversalError extends SandboxError {\n readonly statusCode = 400;\n\n constructor(path: string) {\n super(`Path must not contain \"..\" segments: ${path}`);\n this.name = 'SandboxPathTraversalError';\n }\n}\n\nexport function validateSandboxOwnedByTenant(sandboxId: string, tenantName: string): void {\n const dotIndex = sandboxId.indexOf('.');\n if (dotIndex === -1 || sandboxId.substring(0, dotIndex) !== tenantName) {\n throw new SandboxTenantMismatchError(tenantName);\n }\n}\n\nconst PATH_TRAVERSAL_RE = /(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)/;\n\nexport function validateNoPathTraversal(path: string): void {\n if (PATH_TRAVERSAL_RE.test(path)) {\n throw new SandboxPathTraversalError(path);\n }\n}\n"],"mappings":";AAAO,IAAe,eAAf,cAAoC,MAAM;AAQjD;AAEO,IAAM,2BAAN,cAAuC,aAAa;AAAA,EAChD,aAAa;AAAA,EAEtB,YAAY,MAAc;AACxB,UAAM,mBAAmB,IAAI,EAAE;AAC/B,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,2BAAN,cAAuC,aAAa;AAAA,EAChD,aAAa;AAAA,EAEtB,YAAY,WAAmB;AAC7B,UAAM,YAAY,SAAS,yDAAoD;AAC/E,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,8BAAN,cAA0C,aAAa;AAAA,EACnD,aAAa;AAAA,EAEtB,YAAY,MAAc;AACxB,UAAM,oCAAoC,IAAI,EAAE;AAChD,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,2BAAN,cAAuC,aAAa;AAAA,EAChD,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EAET,YAAY,MAAc,UAAkB,SAAiB;AAC3D,UAAM,mBAAmB,IAAI,KAAK,OAAO,QAAQ,CAAC,eAAe,OAAO,OAAO,CAAC,GAAG;AACnF,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,UAAU;AAAA,EACjB;AACF;AAEA,IAAM,6BAAN,cAAyC,aAAa;AAAA,EAC3C,aAAa;AAAA,EAEtB,YAAY,eAAuB;AACjC,UAAM,qCAAqC,aAAa,EAAE;AAC1D,SAAK,OAAO;AAAA,EACd;AACF;AAEA,IAAM,4BAAN,cAAwC,aAAa;AAAA,EAC1C,aAAa;AAAA,EAEtB,YAAY,MAAc;AACxB,UAAM,wCAAwC,IAAI,EAAE;AACpD,SAAK,OAAO;AAAA,EACd;AACF;AAEO,SAAS,6BAA6B,WAAmB,YAA0B;AACxF,QAAM,WAAW,UAAU,QAAQ,GAAG;AACtC,MAAI,aAAa,MAAM,UAAU,UAAU,GAAG,QAAQ,MAAM,YAAY;AACtE,UAAM,IAAI,2BAA2B,UAAU;AAAA,EACjD;AACF;AAEA,IAAM,oBAAoB;AAEnB,SAAS,wBAAwB,MAAoB;AAC1D,MAAI,kBAAkB,KAAK,IAAI,GAAG;AAChC,UAAM,IAAI,0BAA0B,IAAI;AAAA,EAC1C;AACF;","names":[]}
@@ -0,0 +1,29 @@
1
+ import { type IToolSet } from '../../mcp/IMCPServer';
2
+ import type { CodeModeReply, CodeModeRequest } from './types';
3
+ /** Minimal logger surface used by Code Mode (avoids a hard winston dep for PoC binders). */
4
+ export interface CodeModeLogger {
5
+ child(bindings: Record<string, unknown>): CodeModeLogger;
6
+ error(message: string, meta?: unknown): void;
7
+ }
8
+ /**
9
+ * Shared Code Mode policy leaf: tool routing, authz, error `source`. No NATS/UDS.
10
+ */
11
+ export declare class CodeModeDispatcher {
12
+ private readonly toolSets;
13
+ private readonly logger;
14
+ private closed;
15
+ constructor(params: {
16
+ toolSets: readonly IToolSet[];
17
+ logger: CodeModeLogger;
18
+ });
19
+ close(): void;
20
+ dispatch(params: {
21
+ request: CodeModeRequest;
22
+ traceCarrier: Readonly<Record<string, string>>;
23
+ }): Promise<CodeModeReply>;
24
+ private route;
25
+ private getToolSet;
26
+ private handleListTools;
27
+ private handleCallTool;
28
+ }
29
+ //# sourceMappingURL=CodeModeDispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeModeDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/core/sandbox/codeMode/CodeModeDispatcher.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAuB,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEnF,4FAA4F;AAC5F,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC;IACzD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9C;AA2BD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,MAAM,EAAE;QAAE,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,EAM5E;IAED,KAAK,IAAI,IAAI,CAEZ;IAEK,QAAQ,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,eAAe,CAAC;QACzB,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KAChD,GAAG,OAAO,CAAC,aAAa,CAAC,CAoBzB;IAED,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,UAAU;YAQJ,eAAe;YAUf,cAAc;CAoB7B"}
@@ -0,0 +1,128 @@
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/sandbox/codeMode/CodeModeDispatcher.ts
21
+ var CodeModeDispatcher_exports = {};
22
+ __export(CodeModeDispatcher_exports, {
23
+ CodeModeDispatcher: () => CodeModeDispatcher
24
+ });
25
+ module.exports = __toCommonJS(CodeModeDispatcher_exports);
26
+ var import_api = require("@opentelemetry/api");
27
+ var import_core = require("@opentelemetry/core");
28
+ var import_errors = require("../../errors.js");
29
+ var import_IMCPServer = require("../../mcp/IMCPServer.js");
30
+ var import_errorLogFields = require("../../util/errorLogFields.js");
31
+ var InvalidMCPUsageError = class extends Error {
32
+ name = "InvalidMCPUsageError";
33
+ };
34
+ function isHttpClientError(error) {
35
+ if (typeof error !== "object" || error === null || !("status" in error)) {
36
+ return false;
37
+ }
38
+ const { status } = error;
39
+ return typeof status === "number" && status >= 400 && status < 500;
40
+ }
41
+ function classifyErrorSource(e) {
42
+ if (e instanceof InvalidMCPUsageError) return "caller";
43
+ if (isHttpClientError(e)) return "caller";
44
+ if (e instanceof import_errors.McpConnectionError && e.statusCode >= 400 && e.statusCode < 500) return "caller";
45
+ return "internal";
46
+ }
47
+ var _w3cExtractor = new import_core.W3CTraceContextPropagator();
48
+ var CodeModeDispatcher = class {
49
+ toolSets;
50
+ logger;
51
+ closed = false;
52
+ constructor(params) {
53
+ this.toolSets = /* @__PURE__ */ new Map();
54
+ for (const server of params.toolSets) {
55
+ this.toolSets.set(server.name, server);
56
+ }
57
+ this.logger = params.logger.child({ module: "CodeModeDispatcher" });
58
+ }
59
+ close() {
60
+ this.closed = true;
61
+ }
62
+ async dispatch(params) {
63
+ if (this.closed) {
64
+ return { ok: false, error: "Code Mode dispatcher is closed", source: "transport" };
65
+ }
66
+ const ctx = _w3cExtractor.extract(
67
+ (0, import_core.unsuppressTracing)(import_api.context.active()),
68
+ { ...params.traceCarrier },
69
+ import_api.defaultTextMapGetter
70
+ );
71
+ try {
72
+ const result = await import_api.context.with(ctx, () => this.route(params.request));
73
+ return { ok: true, result };
74
+ } catch (e) {
75
+ const source = classifyErrorSource(e);
76
+ const errorMessage = e instanceof Error ? e.message : "Unknown Code Mode dispatch error";
77
+ this.logger.error(`Code Mode dispatch failed (source=${source})`, (0, import_errorLogFields.extractErrorLogFields)(e));
78
+ return { ok: false, error: errorMessage, source };
79
+ }
80
+ }
81
+ route(request) {
82
+ switch (request.op) {
83
+ case "list_tools":
84
+ return this.handleListTools(request);
85
+ case "call_tool":
86
+ return this.handleCallTool(request);
87
+ default:
88
+ throw new InvalidMCPUsageError(`Unknown Code Mode operation`);
89
+ }
90
+ }
91
+ getToolSet(serverName) {
92
+ const server = this.toolSets.get(serverName);
93
+ if (!server) {
94
+ throw new InvalidMCPUsageError(`MCP server '${serverName}' is not available for this agent`);
95
+ }
96
+ return server;
97
+ }
98
+ async handleListTools(req) {
99
+ const { server } = req;
100
+ const mcp = this.getToolSet(server);
101
+ const response = await mcp.listTools();
102
+ if ((0, import_IMCPServer.isAuthRequired)(response)) {
103
+ throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot list tools from sandbox`);
104
+ }
105
+ return response.result;
106
+ }
107
+ async handleCallTool(req) {
108
+ const { server, tool, arguments: args } = req;
109
+ const response = await this.getToolSet(server).callTool({ name: tool, arguments: args ?? {} });
110
+ if ((0, import_IMCPServer.isAuthRequired)(response)) {
111
+ throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot call tool from sandbox`);
112
+ }
113
+ if ((0, import_IMCPServer.isCallToolResponseCreateSubAgent)(response)) {
114
+ throw new InvalidMCPUsageError(`Tool '${server}/${tool}' creates a sub-agent and is not callable from sandbox`);
115
+ }
116
+ if (!(0, import_IMCPServer.isCallToolResponseResult)(response)) {
117
+ throw new InvalidMCPUsageError(
118
+ `Tool '${server}/${tool}' requires interactive handling and is not callable from sandbox`
119
+ );
120
+ }
121
+ return response.result;
122
+ }
123
+ };
124
+ // Annotate the CommonJS export names for ESM import in node:
125
+ 0 && (module.exports = {
126
+ CodeModeDispatcher
127
+ });
128
+ //# sourceMappingURL=CodeModeDispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/sandbox/codeMode/CodeModeDispatcher.ts"],"sourcesContent":["import { context, defaultTextMapGetter } from '@opentelemetry/api';\nimport { unsuppressTracing, W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { McpConnectionError } from '../../errors';\nimport {\n isAuthRequired,\n isCallToolResponseCreateSubAgent,\n isCallToolResponseResult,\n type IToolSet,\n} from '../../mcp/IMCPServer';\nimport { extractErrorLogFields } from '../../util/errorLogFields';\nimport type { CodeModeErrorSource, CodeModeReply, CodeModeRequest } from './types';\n\n/** Minimal logger surface used by Code Mode (avoids a hard winston dep for PoC binders). */\nexport interface CodeModeLogger {\n child(bindings: Record<string, unknown>): CodeModeLogger;\n error(message: string, meta?: unknown): void;\n}\n\n// Caller-caused failure: retrying won't help.\nclass InvalidMCPUsageError extends Error {\n override readonly name = 'InvalidMCPUsageError';\n}\n\nfunction isHttpClientError(error: unknown): error is { status: number } {\n if (typeof error !== 'object' || error === null || !('status' in error)) {\n return false;\n }\n const { status } = error;\n return typeof status === 'number' && status >= 400 && status < 500;\n}\n\nfunction classifyErrorSource(e: unknown): CodeModeErrorSource {\n if (e instanceof InvalidMCPUsageError) return 'caller';\n if (isHttpClientError(e)) return 'caller';\n if (e instanceof McpConnectionError && e.statusCode >= 400 && e.statusCode < 500) return 'caller';\n return 'internal';\n}\n\n// Direct W3C extractor, NOT the global `propagation` API. The gateway-wide propagator\n// refuses to restore traceparent unless internal-secret headers are present. Code Mode\n// is intra-process trusted, so we bypass that gate and honor the sandbox carrier.\nconst _w3cExtractor = new W3CTraceContextPropagator();\n\n/**\n * Shared Code Mode policy leaf: tool routing, authz, error `source`. No NATS/UDS.\n */\nexport class CodeModeDispatcher {\n private readonly toolSets: Map<string, IToolSet>;\n private readonly logger: CodeModeLogger;\n private closed = false;\n\n constructor(params: { toolSets: readonly IToolSet[]; logger: CodeModeLogger }) {\n this.toolSets = new Map();\n for (const server of params.toolSets) {\n this.toolSets.set(server.name, server);\n }\n this.logger = params.logger.child({ module: 'CodeModeDispatcher' });\n }\n\n close(): void {\n this.closed = true;\n }\n\n async dispatch(params: {\n request: CodeModeRequest;\n traceCarrier: Readonly<Record<string, string>>;\n }): Promise<CodeModeReply> {\n if (this.closed) {\n return { ok: false, error: 'Code Mode dispatcher is closed', source: 'transport' };\n }\n\n const ctx = _w3cExtractor.extract(\n unsuppressTracing(context.active()),\n { ...params.traceCarrier },\n defaultTextMapGetter,\n );\n\n try {\n const result = await context.with(ctx, () => this.route(params.request));\n return { ok: true, result };\n } catch (e) {\n const source = classifyErrorSource(e);\n const errorMessage = e instanceof Error ? e.message : 'Unknown Code Mode dispatch error';\n this.logger.error(`Code Mode dispatch failed (source=${source})`, extractErrorLogFields(e));\n return { ok: false, error: errorMessage, source };\n }\n }\n\n private route(request: CodeModeRequest): Promise<unknown> {\n switch (request.op) {\n case 'list_tools':\n return this.handleListTools(request);\n case 'call_tool':\n return this.handleCallTool(request);\n default:\n throw new InvalidMCPUsageError(`Unknown Code Mode operation`);\n }\n }\n\n private getToolSet(serverName: string): IToolSet {\n const server = this.toolSets.get(serverName);\n if (!server) {\n throw new InvalidMCPUsageError(`MCP server '${serverName}' is not available for this agent`);\n }\n return server;\n }\n\n private async handleListTools(req: { server: string }): Promise<unknown> {\n const { server } = req;\n const mcp = this.getToolSet(server);\n const response = await mcp.listTools();\n if (isAuthRequired(response)) {\n throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot list tools from sandbox`);\n }\n return response.result;\n }\n\n private async handleCallTool(req: {\n server: string;\n tool: string;\n arguments?: Record<string, unknown> | undefined;\n }): Promise<unknown> {\n const { server, tool, arguments: args } = req;\n const response = await this.getToolSet(server).callTool({ name: tool, arguments: args ?? {} });\n if (isAuthRequired(response)) {\n throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot call tool from sandbox`);\n }\n if (isCallToolResponseCreateSubAgent(response)) {\n throw new InvalidMCPUsageError(`Tool '${server}/${tool}' creates a sub-agent and is not callable from sandbox`);\n }\n if (!isCallToolResponseResult(response)) {\n throw new InvalidMCPUsageError(\n `Tool '${server}/${tool}' requires interactive handling and is not callable from sandbox`,\n );\n }\n return response.result;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,107 @@
1
+ // src/core/sandbox/codeMode/CodeModeDispatcher.ts
2
+ import { context, defaultTextMapGetter } from "@opentelemetry/api";
3
+ import { unsuppressTracing, W3CTraceContextPropagator } from "@opentelemetry/core";
4
+ import { McpConnectionError } from "../../errors.mjs";
5
+ import {
6
+ isAuthRequired,
7
+ isCallToolResponseCreateSubAgent,
8
+ isCallToolResponseResult
9
+ } from "../../mcp/IMCPServer.mjs";
10
+ import { extractErrorLogFields } from "../../util/errorLogFields.mjs";
11
+ var InvalidMCPUsageError = class extends Error {
12
+ name = "InvalidMCPUsageError";
13
+ };
14
+ function isHttpClientError(error) {
15
+ if (typeof error !== "object" || error === null || !("status" in error)) {
16
+ return false;
17
+ }
18
+ const { status } = error;
19
+ return typeof status === "number" && status >= 400 && status < 500;
20
+ }
21
+ function classifyErrorSource(e) {
22
+ if (e instanceof InvalidMCPUsageError) return "caller";
23
+ if (isHttpClientError(e)) return "caller";
24
+ if (e instanceof McpConnectionError && e.statusCode >= 400 && e.statusCode < 500) return "caller";
25
+ return "internal";
26
+ }
27
+ var _w3cExtractor = new W3CTraceContextPropagator();
28
+ var CodeModeDispatcher = class {
29
+ toolSets;
30
+ logger;
31
+ closed = false;
32
+ constructor(params) {
33
+ this.toolSets = /* @__PURE__ */ new Map();
34
+ for (const server of params.toolSets) {
35
+ this.toolSets.set(server.name, server);
36
+ }
37
+ this.logger = params.logger.child({ module: "CodeModeDispatcher" });
38
+ }
39
+ close() {
40
+ this.closed = true;
41
+ }
42
+ async dispatch(params) {
43
+ if (this.closed) {
44
+ return { ok: false, error: "Code Mode dispatcher is closed", source: "transport" };
45
+ }
46
+ const ctx = _w3cExtractor.extract(
47
+ unsuppressTracing(context.active()),
48
+ { ...params.traceCarrier },
49
+ defaultTextMapGetter
50
+ );
51
+ try {
52
+ const result = await context.with(ctx, () => this.route(params.request));
53
+ return { ok: true, result };
54
+ } catch (e) {
55
+ const source = classifyErrorSource(e);
56
+ const errorMessage = e instanceof Error ? e.message : "Unknown Code Mode dispatch error";
57
+ this.logger.error(`Code Mode dispatch failed (source=${source})`, extractErrorLogFields(e));
58
+ return { ok: false, error: errorMessage, source };
59
+ }
60
+ }
61
+ route(request) {
62
+ switch (request.op) {
63
+ case "list_tools":
64
+ return this.handleListTools(request);
65
+ case "call_tool":
66
+ return this.handleCallTool(request);
67
+ default:
68
+ throw new InvalidMCPUsageError(`Unknown Code Mode operation`);
69
+ }
70
+ }
71
+ getToolSet(serverName) {
72
+ const server = this.toolSets.get(serverName);
73
+ if (!server) {
74
+ throw new InvalidMCPUsageError(`MCP server '${serverName}' is not available for this agent`);
75
+ }
76
+ return server;
77
+ }
78
+ async handleListTools(req) {
79
+ const { server } = req;
80
+ const mcp = this.getToolSet(server);
81
+ const response = await mcp.listTools();
82
+ if (isAuthRequired(response)) {
83
+ throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot list tools from sandbox`);
84
+ }
85
+ return response.result;
86
+ }
87
+ async handleCallTool(req) {
88
+ const { server, tool, arguments: args } = req;
89
+ const response = await this.getToolSet(server).callTool({ name: tool, arguments: args ?? {} });
90
+ if (isAuthRequired(response)) {
91
+ throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot call tool from sandbox`);
92
+ }
93
+ if (isCallToolResponseCreateSubAgent(response)) {
94
+ throw new InvalidMCPUsageError(`Tool '${server}/${tool}' creates a sub-agent and is not callable from sandbox`);
95
+ }
96
+ if (!isCallToolResponseResult(response)) {
97
+ throw new InvalidMCPUsageError(
98
+ `Tool '${server}/${tool}' requires interactive handling and is not callable from sandbox`
99
+ );
100
+ }
101
+ return response.result;
102
+ }
103
+ };
104
+ export {
105
+ CodeModeDispatcher
106
+ };
107
+ //# sourceMappingURL=CodeModeDispatcher.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/sandbox/codeMode/CodeModeDispatcher.ts"],"sourcesContent":["import { context, defaultTextMapGetter } from '@opentelemetry/api';\nimport { unsuppressTracing, W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { McpConnectionError } from '../../errors';\nimport {\n isAuthRequired,\n isCallToolResponseCreateSubAgent,\n isCallToolResponseResult,\n type IToolSet,\n} from '../../mcp/IMCPServer';\nimport { extractErrorLogFields } from '../../util/errorLogFields';\nimport type { CodeModeErrorSource, CodeModeReply, CodeModeRequest } from './types';\n\n/** Minimal logger surface used by Code Mode (avoids a hard winston dep for PoC binders). */\nexport interface CodeModeLogger {\n child(bindings: Record<string, unknown>): CodeModeLogger;\n error(message: string, meta?: unknown): void;\n}\n\n// Caller-caused failure: retrying won't help.\nclass InvalidMCPUsageError extends Error {\n override readonly name = 'InvalidMCPUsageError';\n}\n\nfunction isHttpClientError(error: unknown): error is { status: number } {\n if (typeof error !== 'object' || error === null || !('status' in error)) {\n return false;\n }\n const { status } = error;\n return typeof status === 'number' && status >= 400 && status < 500;\n}\n\nfunction classifyErrorSource(e: unknown): CodeModeErrorSource {\n if (e instanceof InvalidMCPUsageError) return 'caller';\n if (isHttpClientError(e)) return 'caller';\n if (e instanceof McpConnectionError && e.statusCode >= 400 && e.statusCode < 500) return 'caller';\n return 'internal';\n}\n\n// Direct W3C extractor, NOT the global `propagation` API. The gateway-wide propagator\n// refuses to restore traceparent unless internal-secret headers are present. Code Mode\n// is intra-process trusted, so we bypass that gate and honor the sandbox carrier.\nconst _w3cExtractor = new W3CTraceContextPropagator();\n\n/**\n * Shared Code Mode policy leaf: tool routing, authz, error `source`. No NATS/UDS.\n */\nexport class CodeModeDispatcher {\n private readonly toolSets: Map<string, IToolSet>;\n private readonly logger: CodeModeLogger;\n private closed = false;\n\n constructor(params: { toolSets: readonly IToolSet[]; logger: CodeModeLogger }) {\n this.toolSets = new Map();\n for (const server of params.toolSets) {\n this.toolSets.set(server.name, server);\n }\n this.logger = params.logger.child({ module: 'CodeModeDispatcher' });\n }\n\n close(): void {\n this.closed = true;\n }\n\n async dispatch(params: {\n request: CodeModeRequest;\n traceCarrier: Readonly<Record<string, string>>;\n }): Promise<CodeModeReply> {\n if (this.closed) {\n return { ok: false, error: 'Code Mode dispatcher is closed', source: 'transport' };\n }\n\n const ctx = _w3cExtractor.extract(\n unsuppressTracing(context.active()),\n { ...params.traceCarrier },\n defaultTextMapGetter,\n );\n\n try {\n const result = await context.with(ctx, () => this.route(params.request));\n return { ok: true, result };\n } catch (e) {\n const source = classifyErrorSource(e);\n const errorMessage = e instanceof Error ? e.message : 'Unknown Code Mode dispatch error';\n this.logger.error(`Code Mode dispatch failed (source=${source})`, extractErrorLogFields(e));\n return { ok: false, error: errorMessage, source };\n }\n }\n\n private route(request: CodeModeRequest): Promise<unknown> {\n switch (request.op) {\n case 'list_tools':\n return this.handleListTools(request);\n case 'call_tool':\n return this.handleCallTool(request);\n default:\n throw new InvalidMCPUsageError(`Unknown Code Mode operation`);\n }\n }\n\n private getToolSet(serverName: string): IToolSet {\n const server = this.toolSets.get(serverName);\n if (!server) {\n throw new InvalidMCPUsageError(`MCP server '${serverName}' is not available for this agent`);\n }\n return server;\n }\n\n private async handleListTools(req: { server: string }): Promise<unknown> {\n const { server } = req;\n const mcp = this.getToolSet(server);\n const response = await mcp.listTools();\n if (isAuthRequired(response)) {\n throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot list tools from sandbox`);\n }\n return response.result;\n }\n\n private async handleCallTool(req: {\n server: string;\n tool: string;\n arguments?: Record<string, unknown> | undefined;\n }): Promise<unknown> {\n const { server, tool, arguments: args } = req;\n const response = await this.getToolSet(server).callTool({ name: tool, arguments: args ?? {} });\n if (isAuthRequired(response)) {\n throw new InvalidMCPUsageError(`MCP server '${server}' requires OAuth; cannot call tool from sandbox`);\n }\n if (isCallToolResponseCreateSubAgent(response)) {\n throw new InvalidMCPUsageError(`Tool '${server}/${tool}' creates a sub-agent and is not callable from sandbox`);\n }\n if (!isCallToolResponseResult(response)) {\n throw new InvalidMCPUsageError(\n `Tool '${server}/${tool}' requires interactive handling and is not callable from sandbox`,\n );\n }\n return response.result;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,21 @@
1
+ import type { CodeModeDispatcher } from './CodeModeDispatcher';
2
+ /**
3
+ * Code Mode channel. Construct eagerly with the dispatcher; connect/listen in `start`.
4
+ * `start` may be called again after failure; `stop` is always valid after construct.
5
+ */
6
+ export interface CodeModeTransport {
7
+ /**
8
+ * Lazy connect/listen; may be called again after a failed attempt (non-sticky).
9
+ * Idempotent once successfully started.
10
+ */
11
+ start(params: {
12
+ codeModeDispatcher: CodeModeDispatcher;
13
+ sandboxId: string;
14
+ requestTimeoutSeconds: number;
15
+ }): Promise<{
16
+ env: Record<string, string>;
17
+ }>;
18
+ /** Best-effort teardown whether start succeeded, failed, or never ran. */
19
+ stop(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=CodeModeTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeModeTransport.d.ts","sourceRoot":"","sources":["../../../../src/core/sandbox/codeMode/CodeModeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE;QAAE,kBAAkB,EAAE,kBAAkB,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACnH,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,CAAC,CAAC;IACH,0EAA0E;IAC1E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB"}
@@ -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/sandbox/codeMode/CodeModeTransport.ts
17
+ var CodeModeTransport_exports = {};
18
+ module.exports = __toCommonJS(CodeModeTransport_exports);
19
+ //# sourceMappingURL=CodeModeTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/sandbox/codeMode/CodeModeTransport.ts"],"sourcesContent":["import type { CodeModeDispatcher } from './CodeModeDispatcher';\n\n/**\n * Code Mode channel. Construct eagerly with the dispatcher; connect/listen in `start`.\n * `start` may be called again after failure; `stop` is always valid after construct.\n */\nexport interface CodeModeTransport {\n /**\n * Lazy connect/listen; may be called again after a failed attempt (non-sticky).\n * Idempotent once successfully started.\n */\n start(params: { codeModeDispatcher: CodeModeDispatcher; sandboxId: string; requestTimeoutSeconds: number }): Promise<{\n env: Record<string, string>;\n }>;\n /** Best-effort teardown whether start succeeded, failed, or never ran. */\n stop(): Promise<void>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=CodeModeTransport.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,34 @@
1
+ import type { Logger } from 'winston';
2
+ import type { CodeModeDispatcher } from '../CodeModeDispatcher';
3
+ import type { CodeModeTransport } from '../CodeModeTransport';
4
+ /**
5
+ * NATS Code Mode transport. Session cache + connection-drop invalidate live here
6
+ * (no `whenClosed` on the public interface).
7
+ */
8
+ export declare class CodeModeNatsTransport implements CodeModeTransport {
9
+ private readonly resolveHostUrl;
10
+ private readonly sandboxClientNatsUrl;
11
+ private readonly logger;
12
+ private sessionPromise;
13
+ private nc;
14
+ private dispatcher;
15
+ constructor(params: {
16
+ resolveHostUrl: (sandboxId: string) => Promise<string>;
17
+ sandboxClientNatsUrl?: string;
18
+ logger: Logger;
19
+ });
20
+ start(params: {
21
+ codeModeDispatcher: CodeModeDispatcher;
22
+ sandboxId: string;
23
+ requestTimeoutSeconds: number;
24
+ }): Promise<{
25
+ env: Record<string, string>;
26
+ }>;
27
+ stop(): Promise<void>;
28
+ private connectSession;
29
+ private subscribe;
30
+ private handleMessage;
31
+ private encode;
32
+ private decode;
33
+ }
34
+ //# sourceMappingURL=CodeModeNatsTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeModeNatsTransport.d.ts","sourceRoot":"","sources":["../../../../../src/core/sandbox/codeMode/nats/CodeModeNatsTransport.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAe9D;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IACxE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,cAAc,CAAuD;IAC7E,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,UAAU,CAAiC;IAEnD,YAAY,MAAM,EAAE;QAClB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;KAChB,EAIA;IAED,KAAK,CAAC,MAAM,EAAE;QACZ,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,qBAAqB,EAAE,MAAM,CAAC;KAC/B,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAO3C;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB1B;YAEa,cAAc;IAkD5B,OAAO,CAAC,SAAS;YAQH,aAAa;IA+C3B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;CAIf"}