@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,208 @@
1
+ // src/core/capabilities/builtins/ContextCompaction.ts
2
+ import { EventType, newEventId } from "../../events/schema.mjs";
3
+ import { internalSystemMessage, isInternalSystemMessage, isLLMContextMessage } from "../../runtime/contextUtils.mjs";
4
+ var DEFAULT_CONTEXT_COMPACTION_THRESHOLD_TOKENS = 50 * 1e3;
5
+ var PROMPT_TOKENS = 931;
6
+ var PROMPT = `
7
+ Your task is to create a detailed summary of the conversation so far, paying close attention to the user's explicit requests and your previous actions.
8
+ This summary should be thorough in capturing technical details, code patterns, and architectural decisions that would be essential for continuing development work without losing context.
9
+
10
+ Before providing your final summary, wrap your analysis in <analysis> tags to organize your thoughts and ensure you've covered all necessary points. In your analysis process:
11
+
12
+ 1. Chronologically analyze each message and section of the conversation. For each section thoroughly identify:
13
+ - The user's explicit requests and intents
14
+ - Your approach to addressing the user's requests
15
+ - Key decisions, technical concepts and code patterns
16
+ - Specific details like:
17
+ - file names
18
+ - full code snippets
19
+ - function signatures
20
+ - file edits
21
+ - Errors that you ran into and how you fixed them
22
+ - Pay special attention to specific user feedback that you received, especially if the user told you to do something differently.
23
+ 2. Double-check for technical accuracy and completeness, addressing each required element thoroughly.
24
+
25
+ Your summary should include the following sections:
26
+
27
+ 1. Primary Request and Intent: Capture all of the user's explicit requests and intents in detail
28
+ 2. Key Technical Concepts: List all important technical concepts, technologies, and frameworks discussed.
29
+ 3. Files and Code Sections: Enumerate specific files and code sections examined, modified, or created. Pay special attention to the most recent messages and include full code snippets where applicable and include a summary of why this file read or edit is important.
30
+ 4. Errors and fixes: List all errors that you ran into, and how you fixed them. Pay special attention to specific user feedback that you received, especially if the user told you to do something differently.
31
+ 5. Problem Solving: Document problems solved and any ongoing troubleshooting efforts.
32
+ 6. All user messages: List ALL user messages that are not tool results. These are critical for understanding the users' feedback and changing intent.
33
+ 6. Pending Tasks: Outline any pending tasks that you have explicitly been asked to work on.
34
+ 7. Current Work: Describe in detail precisely what was being worked on immediately before this summary request, paying special attention to the most recent messages from both user and assistant. Include file names and code snippets where applicable.
35
+ 8. Optional Next Step: List the next step that you will take that is related to the most recent work you were doing. IMPORTANT: ensure that this step is DIRECTLY in line with the user's most recent explicit requests, and the task you were working on immediately before this summary request. If your last task was concluded, then only list next steps if they are explicitly in line with the users request. Do not start on tangential requests or really old requests that were already completed without confirming with the user first.
36
+ If there is a next step, include direct quotes from the most recent conversation showing exactly what task you were working on and where you left off. This should be verbatim to ensure there's no drift in task interpretation.
37
+
38
+ Here's an example of how your output should be structured:
39
+
40
+ <example>
41
+ <analysis>
42
+ [Your thought process, ensuring all points are covered thoroughly and accurately]
43
+ </analysis>
44
+
45
+ <summary>
46
+ 1. Primary Request and Intent:
47
+ [Detailed description]
48
+
49
+ 2. Key Technical Concepts:
50
+ - [Concept 1]
51
+ - [Concept 2]
52
+ - [...]
53
+
54
+
55
+ 3. Errors and fixes:
56
+ - [Detailed description of error 1]:
57
+ - [How you fixed the error]
58
+ - [User feedback on the error if any]
59
+ - [...]
60
+
61
+ 4. Problem Solving:
62
+ [Description of solved problems and ongoing troubleshooting]
63
+
64
+ 5. All user messages:
65
+ - [Detailed non tool use user message]
66
+ - [...]
67
+
68
+ 6. Pending Tasks:
69
+ - [Task 1]
70
+ - [Task 2]
71
+ - [...]
72
+
73
+ 7. Current Work:
74
+ [Precise description of current work]
75
+
76
+ 8. Optional Next Step:
77
+ [Optional Next step to take]
78
+
79
+ </summary>
80
+ </example>
81
+
82
+ Please provide your summary based on the conversation so far, following this structure and ensuring precision and thoroughness in your response.
83
+
84
+ There may be additional summarization instructions provided in the included context. If so, remember to follow these instructions when creating the above summary. Examples of instructions include:
85
+ <example>
86
+ ## Compact Instructions
87
+ When summarizing the conversation focus on typescript code changes and also remember the mistakes you made and how you fixed them.
88
+ </example>
89
+
90
+ <example>
91
+ # Summary instructions
92
+ When you are using compact - please focus on test output and code changes. Include file reads verbatim.
93
+ </example>
94
+ `;
95
+ var CONTINUATION_MESSAGE = internalSystemMessage(
96
+ "The above is the summarised context of the work so far. The Agent must not repeat or re-run any work that was already completed. If results were already obtained, the Agent should present them directly."
97
+ );
98
+ Object.freeze(CONTINUATION_MESSAGE);
99
+ var CONTINUATION_MESSAGE_TOKENS = 42;
100
+ function formatAssistantContent(content) {
101
+ if (typeof content === "string") {
102
+ return content;
103
+ }
104
+ if (!content) {
105
+ return "";
106
+ }
107
+ return content.map((part) => part.type === "text" ? part.text : part.refusal).join("\n");
108
+ }
109
+ function createSummarizationCandidate(context) {
110
+ let candidate = "";
111
+ let index = -1;
112
+ for (const m of context) {
113
+ index += 1;
114
+ if (isInternalSystemMessage(m)) {
115
+ continue;
116
+ }
117
+ if (!isLLMContextMessage(m)) {
118
+ continue;
119
+ }
120
+ switch (m.role) {
121
+ case "user":
122
+ if (typeof m.content === "string") {
123
+ candidate += `<${String(index)}><user>:` + m.content;
124
+ } else {
125
+ const parts = [];
126
+ for (const p of m.content) {
127
+ if (p.type === "text") {
128
+ parts.push(p.text);
129
+ } else {
130
+ parts.push(`[user attached a ${p.type} here, no longer available after summarization]`);
131
+ }
132
+ }
133
+ candidate += `<${String(index)}><user>:` + parts.join("\n");
134
+ }
135
+ break;
136
+ case "tool":
137
+ candidate += `<${String(index)}><tool-response id=${m.tool_call_id}>:` + m.content;
138
+ break;
139
+ case "assistant":
140
+ for (const block of m.thinking_blocks ?? []) {
141
+ if (block.type === "thinking") {
142
+ candidate += `<${String(index)}><assistant-thinking>:` + block.thinking;
143
+ }
144
+ }
145
+ candidate += `<${String(index)}><assistant>:` + formatAssistantContent(m.content);
146
+ for (const t of m.tool_calls ?? []) {
147
+ candidate += `<tool-call id=${t.id} name=${t.function.name}>:` + t.function.arguments;
148
+ }
149
+ }
150
+ }
151
+ return candidate;
152
+ }
153
+ var ContextCompaction = class {
154
+ modelClient;
155
+ compactionThresholdTokens;
156
+ constructor(input) {
157
+ this.modelClient = input.modelClient;
158
+ this.compactionThresholdTokens = input.compactionThresholdTokens;
159
+ }
160
+ async *processPreLLM(execution) {
161
+ const contextTokens = execution.currentContextUsage.prompt_tokens + execution.currentContextUsage.completion_tokens;
162
+ if (contextTokens + PROMPT_TOKENS < this.compactionThresholdTokens) {
163
+ return;
164
+ }
165
+ const body = {
166
+ messages: [
167
+ { role: "user", content: createSummarizationCandidate(execution.context) },
168
+ { role: "user", content: PROMPT }
169
+ ],
170
+ stream: false
171
+ };
172
+ const response = await this.modelClient.createNonStream(body);
173
+ const context = [{ role: "assistant", content: response.output.content }, CONTINUATION_MESSAGE];
174
+ yield {
175
+ type: EventType.AGENT_CONTEXT_OVERWRITE,
176
+ id: newEventId(),
177
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
178
+ reason: "compaction",
179
+ context,
180
+ current_context_usage: {
181
+ // NOTE(agent): This is not really correct.
182
+ // This is not taking into account that the original request had
183
+ // tool definition in them.
184
+ // This will get refreshed in the next LLM call.
185
+ prompt_tokens: response.usage.input_tokens + CONTINUATION_MESSAGE_TOKENS,
186
+ completion_tokens: 0
187
+ },
188
+ usage: response.usage
189
+ };
190
+ }
191
+ };
192
+ function contextCompaction(options) {
193
+ const threshold = options.compactionThresholdTokens ?? options.settings?.compactionThresholdTokens ?? DEFAULT_CONTEXT_COMPACTION_THRESHOLD_TOKENS;
194
+ return {
195
+ preLLMProcessors: [
196
+ new ContextCompaction({
197
+ modelClient: options.definition.modelClient,
198
+ compactionThresholdTokens: threshold
199
+ })
200
+ ]
201
+ };
202
+ }
203
+ export {
204
+ ContextCompaction,
205
+ DEFAULT_CONTEXT_COMPACTION_THRESHOLD_TOKENS,
206
+ contextCompaction
207
+ };
208
+ //# sourceMappingURL=ContextCompaction.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/capabilities/builtins/ContextCompaction.ts"],"sourcesContent":["import { EventType, newEventId } from '../../events/schema';\nimport type { ILLM, LLMCreateParams } from '../../llm/ILLM';\nimport type { AgentDefinition } from '../../runtime/AgentDefinition';\nimport type { ContextMessage } from '../../runtime/AgentThread.types';\nimport { internalSystemMessage, isInternalSystemMessage, isLLMContextMessage } from '../../runtime/contextUtils';\nimport type { AgentCapability } from '../AgentCapability';\nimport type {\n AgentContextProcessorOutput,\n AgentThreadExecutionContext,\n PreLLMAgentContextProcessor,\n} from '../AgentContextProcessor';\n\nexport const DEFAULT_CONTEXT_COMPACTION_THRESHOLD_TOKENS = 50 * 1000;\n\n// https://platform.openai.com/tokenizer\nconst PROMPT_TOKENS = 931;\nconst PROMPT = `\nYour task is to create a detailed summary of the conversation so far, paying close attention to the user's explicit requests and your previous actions.\nThis summary should be thorough in capturing technical details, code patterns, and architectural decisions that would be essential for continuing development work without losing context.\n\nBefore providing your final summary, wrap your analysis in <analysis> tags to organize your thoughts and ensure you've covered all necessary points. In your analysis process:\n\n1. Chronologically analyze each message and section of the conversation. For each section thoroughly identify:\n - The user's explicit requests and intents\n - Your approach to addressing the user's requests\n - Key decisions, technical concepts and code patterns\n - Specific details like:\n - file names\n - full code snippets\n - function signatures\n - file edits\n - Errors that you ran into and how you fixed them\n - Pay special attention to specific user feedback that you received, especially if the user told you to do something differently.\n2. Double-check for technical accuracy and completeness, addressing each required element thoroughly.\n\nYour summary should include the following sections:\n\n1. Primary Request and Intent: Capture all of the user's explicit requests and intents in detail\n2. Key Technical Concepts: List all important technical concepts, technologies, and frameworks discussed.\n3. Files and Code Sections: Enumerate specific files and code sections examined, modified, or created. Pay special attention to the most recent messages and include full code snippets where applicable and include a summary of why this file read or edit is important.\n4. Errors and fixes: List all errors that you ran into, and how you fixed them. Pay special attention to specific user feedback that you received, especially if the user told you to do something differently.\n5. Problem Solving: Document problems solved and any ongoing troubleshooting efforts.\n6. All user messages: List ALL user messages that are not tool results. These are critical for understanding the users' feedback and changing intent.\n6. Pending Tasks: Outline any pending tasks that you have explicitly been asked to work on.\n7. Current Work: Describe in detail precisely what was being worked on immediately before this summary request, paying special attention to the most recent messages from both user and assistant. Include file names and code snippets where applicable.\n8. Optional Next Step: List the next step that you will take that is related to the most recent work you were doing. IMPORTANT: ensure that this step is DIRECTLY in line with the user's most recent explicit requests, and the task you were working on immediately before this summary request. If your last task was concluded, then only list next steps if they are explicitly in line with the users request. Do not start on tangential requests or really old requests that were already completed without confirming with the user first.\n If there is a next step, include direct quotes from the most recent conversation showing exactly what task you were working on and where you left off. This should be verbatim to ensure there's no drift in task interpretation.\n\nHere's an example of how your output should be structured:\n\n<example>\n<analysis>\n[Your thought process, ensuring all points are covered thoroughly and accurately]\n</analysis>\n\n<summary>\n1. Primary Request and Intent:\n [Detailed description]\n\n2. Key Technical Concepts:\n - [Concept 1]\n - [Concept 2]\n - [...]\n\n\n3. Errors and fixes:\n - [Detailed description of error 1]:\n - [How you fixed the error]\n - [User feedback on the error if any]\n - [...]\n\n4. Problem Solving:\n [Description of solved problems and ongoing troubleshooting]\n\n5. All user messages: \n - [Detailed non tool use user message]\n - [...]\n\n6. Pending Tasks:\n - [Task 1]\n - [Task 2]\n - [...]\n\n7. Current Work:\n [Precise description of current work]\n\n8. Optional Next Step:\n [Optional Next step to take]\n\n</summary>\n</example>\n\nPlease provide your summary based on the conversation so far, following this structure and ensuring precision and thoroughness in your response. \n\nThere may be additional summarization instructions provided in the included context. If so, remember to follow these instructions when creating the above summary. Examples of instructions include:\n<example>\n## Compact Instructions\nWhen summarizing the conversation focus on typescript code changes and also remember the mistakes you made and how you fixed them.\n</example>\n\n<example>\n# Summary instructions\nWhen you are using compact - please focus on test output and code changes. Include file reads verbatim.\n</example>\n`;\n\nconst CONTINUATION_MESSAGE = internalSystemMessage(\n 'The above is the summarised context of the work so far. The Agent must not repeat or re-run any work that was already completed. If results were already obtained, the Agent should present them directly.',\n);\nObject.freeze(CONTINUATION_MESSAGE);\n// https://platform.openai.com/tokenizer\nconst CONTINUATION_MESSAGE_TOKENS = 42;\n\nfunction formatAssistantContent(\n content: string | ({ type: 'text'; text: string } | { type: 'refusal'; refusal: string })[] | null | undefined,\n): string {\n if (typeof content === 'string') {\n return content;\n }\n if (!content) {\n return '';\n }\n return content.map(part => (part.type === 'text' ? part.text : part.refusal)).join('\\n');\n}\n\nfunction createSummarizationCandidate(context: ContextMessage[]) {\n let candidate = '';\n let index = -1;\n for (const m of context) {\n index += 1;\n if (isInternalSystemMessage(m)) {\n continue;\n }\n if (!isLLMContextMessage(m)) {\n continue;\n }\n switch (m.role) {\n case 'user':\n if (typeof m.content === 'string') {\n candidate += `<${String(index)}><user>:` + m.content;\n } else {\n const parts: string[] = [];\n for (const p of m.content) {\n if (p.type === 'text') {\n parts.push(p.text);\n } else {\n parts.push(`[user attached a ${p.type} here, no longer available after summarization]`);\n }\n }\n candidate += `<${String(index)}><user>:` + parts.join('\\n');\n }\n break;\n case 'tool':\n candidate += `<${String(index)}><tool-response id=${m.tool_call_id}>:` + m.content;\n break;\n case 'assistant':\n for (const block of m.thinking_blocks ?? []) {\n if (block.type === 'thinking') {\n candidate += `<${String(index)}><assistant-thinking>:` + block.thinking;\n }\n }\n candidate += `<${String(index)}><assistant>:` + formatAssistantContent(m.content);\n for (const t of m.tool_calls ?? []) {\n candidate += `<tool-call id=${t.id} name=${t.function.name}>:` + t.function.arguments;\n }\n }\n }\n return candidate;\n}\n\nexport class ContextCompaction implements PreLLMAgentContextProcessor {\n private modelClient: ILLM;\n private compactionThresholdTokens: number;\n\n constructor(input: { modelClient: ILLM; compactionThresholdTokens: number }) {\n this.modelClient = input.modelClient;\n this.compactionThresholdTokens = input.compactionThresholdTokens;\n }\n\n async *processPreLLM(\n execution: Readonly<AgentThreadExecutionContext>,\n ): AsyncGenerator<AgentContextProcessorOutput, void, unknown> {\n const contextTokens = execution.currentContextUsage.prompt_tokens + execution.currentContextUsage.completion_tokens;\n if (contextTokens + PROMPT_TOKENS < this.compactionThresholdTokens) {\n return;\n }\n\n // Model identity is owned by modelClient — omit OpenAI's required `model` field.\n const body: LLMCreateParams = {\n messages: [\n { role: 'user', content: createSummarizationCandidate(execution.context) },\n { role: 'user', content: PROMPT },\n ],\n stream: false,\n };\n\n const response = await this.modelClient.createNonStream(body);\n const context: ContextMessage[] = [{ role: 'assistant', content: response.output.content }, CONTINUATION_MESSAGE];\n\n yield {\n type: EventType.AGENT_CONTEXT_OVERWRITE,\n id: newEventId(),\n created_at: new Date().toISOString(),\n reason: 'compaction',\n context: context,\n current_context_usage: {\n // NOTE(agent): This is not really correct.\n // This is not taking into account that the original request had\n // tool definition in them.\n // This will get refreshed in the next LLM call.\n prompt_tokens: response.usage.input_tokens + CONTINUATION_MESSAGE_TOKENS,\n completion_tokens: 0,\n },\n usage: response.usage,\n };\n }\n}\n\nexport interface ContextCompactionSettings {\n compactionThresholdTokens?: number | undefined;\n}\n\nexport function contextCompaction(options: {\n definition: AgentDefinition;\n settings?: ContextCompactionSettings | undefined;\n compactionThresholdTokens?: number | undefined;\n}): AgentCapability {\n const threshold =\n options.compactionThresholdTokens ??\n options.settings?.compactionThresholdTokens ??\n DEFAULT_CONTEXT_COMPACTION_THRESHOLD_TOKENS;\n return {\n preLLMProcessors: [\n new ContextCompaction({\n modelClient: options.definition.modelClient,\n compactionThresholdTokens: threshold,\n }),\n ],\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,17 @@
1
+ import { LocalToolMCP, type ToolDefinition } from '../../mcp/LocalToolMCP';
2
+ import type { AgentTracing } from '../../tracing/AgentTracing';
3
+ import type { AgentCapability } from '../AgentCapability';
4
+ export declare const CURRENT_DATETIME_SERVER_ID = "current-datetime";
5
+ export declare const GET_CURRENT_DATETIME_TOOL_NAME = "get_current_datetime";
6
+ export declare class CurrentDateTime extends LocalToolMCP {
7
+ readonly name = "current-datetime";
8
+ readonly displayName = "CurrentDateTime";
9
+ constructor(tracing: AgentTracing);
10
+ private tools;
11
+ protected getTools(): ToolDefinition[];
12
+ private getCurrentDateTime;
13
+ }
14
+ export declare function currentDateTime(options: {
15
+ tracing: AgentTracing;
16
+ }): AgentCapability;
17
+ //# sourceMappingURL=CurrentDateTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrentDateTime.d.ts","sourceRoot":"","sources":["../../../../src/core/capabilities/builtins/CurrentDateTime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAC7D,eAAO,MAAM,8BAA8B,yBAAyB,CAAC;AAIrE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,QAAQ,CAAC,IAAI,sBAA8B;IAC3C,QAAQ,CAAC,WAAW,qBAAqB;IAEzC,YAAY,OAAO,EAAE,YAAY,EAEhC;IAED,OAAO,CAAC,KAAK,CAOX;IAEF,SAAS,CAAC,QAAQ,IAAI,cAAc,EAAE,CAErC;IAID,OAAO,CAAC,kBAAkB;CAQ3B;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,GAAG,eAAe,CAInF"}
@@ -0,0 +1,75 @@
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/capabilities/builtins/CurrentDateTime.ts
21
+ var CurrentDateTime_exports = {};
22
+ __export(CurrentDateTime_exports, {
23
+ CURRENT_DATETIME_SERVER_ID: () => CURRENT_DATETIME_SERVER_ID,
24
+ CurrentDateTime: () => CurrentDateTime,
25
+ GET_CURRENT_DATETIME_TOOL_NAME: () => GET_CURRENT_DATETIME_TOOL_NAME,
26
+ currentDateTime: () => currentDateTime
27
+ });
28
+ module.exports = __toCommonJS(CurrentDateTime_exports);
29
+ var import_zod = require("zod");
30
+ var import_IMCPServer = require("../../mcp/IMCPServer.js");
31
+ var import_LocalToolMCP = require("../../mcp/LocalToolMCP.js");
32
+ var CURRENT_DATETIME_SERVER_ID = "current-datetime";
33
+ var GET_CURRENT_DATETIME_TOOL_NAME = "get_current_datetime";
34
+ var inputSchema = import_zod.z.object({}).strict();
35
+ var CurrentDateTime = class extends import_LocalToolMCP.LocalToolMCP {
36
+ name = CURRENT_DATETIME_SERVER_ID;
37
+ displayName = "CurrentDateTime";
38
+ constructor(tracing) {
39
+ super({ tracing });
40
+ }
41
+ tools = [
42
+ (0, import_LocalToolMCP.defineTool)({
43
+ name: GET_CURRENT_DATETIME_TOOL_NAME,
44
+ description: "Returns the current datetime in ISO-8601 (UTC) and unix epoch MS format.",
45
+ schema: inputSchema,
46
+ handler: () => Promise.resolve(this.getCurrentDateTime())
47
+ })
48
+ ];
49
+ getTools() {
50
+ return this.tools;
51
+ }
52
+ // Date.prototype.toISOString() is spec-guaranteed to return UTC (suffix 'Z').
53
+ // Date.prototype.getTime() returns UTC epoch ms regardless of process timezone.
54
+ getCurrentDateTime() {
55
+ const now = /* @__PURE__ */ new Date();
56
+ const payload = {
57
+ unixEpochMS: now.getTime(),
58
+ iso: now.toISOString()
59
+ };
60
+ return (0, import_IMCPServer.toolResultResponse)({ text: JSON.stringify(payload) });
61
+ }
62
+ };
63
+ function currentDateTime(options) {
64
+ return {
65
+ systemToolSets: [new CurrentDateTime(options.tracing)]
66
+ };
67
+ }
68
+ // Annotate the CommonJS export names for ESM import in node:
69
+ 0 && (module.exports = {
70
+ CURRENT_DATETIME_SERVER_ID,
71
+ CurrentDateTime,
72
+ GET_CURRENT_DATETIME_TOOL_NAME,
73
+ currentDateTime
74
+ });
75
+ //# sourceMappingURL=CurrentDateTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/capabilities/builtins/CurrentDateTime.ts"],"sourcesContent":["import { z } from 'zod';\nimport { type CallToolResponse, toolResultResponse } from '../../mcp/IMCPServer';\nimport { defineTool, LocalToolMCP, type ToolDefinition } from '../../mcp/LocalToolMCP';\nimport type { AgentTracing } from '../../tracing/AgentTracing';\nimport type { AgentCapability } from '../AgentCapability';\n\nexport const CURRENT_DATETIME_SERVER_ID = 'current-datetime';\nexport const GET_CURRENT_DATETIME_TOOL_NAME = 'get_current_datetime';\n\nconst inputSchema = z.object({}).strict();\n\nexport class CurrentDateTime extends LocalToolMCP {\n readonly name = CURRENT_DATETIME_SERVER_ID;\n readonly displayName = 'CurrentDateTime';\n\n constructor(tracing: AgentTracing) {\n super({ tracing });\n }\n\n private tools: ToolDefinition[] = [\n defineTool({\n name: GET_CURRENT_DATETIME_TOOL_NAME,\n description: 'Returns the current datetime in ISO-8601 (UTC) and unix epoch MS format.',\n schema: inputSchema,\n handler: () => Promise.resolve(this.getCurrentDateTime()),\n }),\n ];\n\n protected getTools(): ToolDefinition[] {\n return this.tools;\n }\n\n // Date.prototype.toISOString() is spec-guaranteed to return UTC (suffix 'Z').\n // Date.prototype.getTime() returns UTC epoch ms regardless of process timezone.\n private getCurrentDateTime(): CallToolResponse {\n const now = new Date();\n const payload = {\n unixEpochMS: now.getTime(),\n iso: now.toISOString(),\n };\n return toolResultResponse({ text: JSON.stringify(payload) });\n }\n}\n\nexport function currentDateTime(options: { tracing: AgentTracing }): AgentCapability {\n return {\n systemToolSets: [new CurrentDateTime(options.tracing)],\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,wBAA0D;AAC1D,0BAA8D;AAIvD,IAAM,6BAA6B;AACnC,IAAM,iCAAiC;AAE9C,IAAM,cAAc,aAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAEjC,IAAM,kBAAN,cAA8B,iCAAa;AAAA,EACvC,OAAO;AAAA,EACP,cAAc;AAAA,EAEvB,YAAY,SAAuB;AACjC,UAAM,EAAE,QAAQ,CAAC;AAAA,EACnB;AAAA,EAEQ,QAA0B;AAAA,QAChC,gCAAW;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,SAAS,MAAM,QAAQ,QAAQ,KAAK,mBAAmB,CAAC;AAAA,IAC1D,CAAC;AAAA,EACH;AAAA,EAEU,WAA6B;AACrC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA,EAIQ,qBAAuC;AAC7C,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,UAAU;AAAA,MACd,aAAa,IAAI,QAAQ;AAAA,MACzB,KAAK,IAAI,YAAY;AAAA,IACvB;AACA,eAAO,sCAAmB,EAAE,MAAM,KAAK,UAAU,OAAO,EAAE,CAAC;AAAA,EAC7D;AACF;AAEO,SAAS,gBAAgB,SAAqD;AACnF,SAAO;AAAA,IACL,gBAAgB,CAAC,IAAI,gBAAgB,QAAQ,OAAO,CAAC;AAAA,EACvD;AACF;","names":[]}
@@ -0,0 +1,47 @@
1
+ // src/core/capabilities/builtins/CurrentDateTime.ts
2
+ import { z } from "zod";
3
+ import { toolResultResponse } from "../../mcp/IMCPServer.mjs";
4
+ import { defineTool, LocalToolMCP } from "../../mcp/LocalToolMCP.mjs";
5
+ var CURRENT_DATETIME_SERVER_ID = "current-datetime";
6
+ var GET_CURRENT_DATETIME_TOOL_NAME = "get_current_datetime";
7
+ var inputSchema = z.object({}).strict();
8
+ var CurrentDateTime = class extends LocalToolMCP {
9
+ name = CURRENT_DATETIME_SERVER_ID;
10
+ displayName = "CurrentDateTime";
11
+ constructor(tracing) {
12
+ super({ tracing });
13
+ }
14
+ tools = [
15
+ defineTool({
16
+ name: GET_CURRENT_DATETIME_TOOL_NAME,
17
+ description: "Returns the current datetime in ISO-8601 (UTC) and unix epoch MS format.",
18
+ schema: inputSchema,
19
+ handler: () => Promise.resolve(this.getCurrentDateTime())
20
+ })
21
+ ];
22
+ getTools() {
23
+ return this.tools;
24
+ }
25
+ // Date.prototype.toISOString() is spec-guaranteed to return UTC (suffix 'Z').
26
+ // Date.prototype.getTime() returns UTC epoch ms regardless of process timezone.
27
+ getCurrentDateTime() {
28
+ const now = /* @__PURE__ */ new Date();
29
+ const payload = {
30
+ unixEpochMS: now.getTime(),
31
+ iso: now.toISOString()
32
+ };
33
+ return toolResultResponse({ text: JSON.stringify(payload) });
34
+ }
35
+ };
36
+ function currentDateTime(options) {
37
+ return {
38
+ systemToolSets: [new CurrentDateTime(options.tracing)]
39
+ };
40
+ }
41
+ export {
42
+ CURRENT_DATETIME_SERVER_ID,
43
+ CurrentDateTime,
44
+ GET_CURRENT_DATETIME_TOOL_NAME,
45
+ currentDateTime
46
+ };
47
+ //# sourceMappingURL=CurrentDateTime.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/capabilities/builtins/CurrentDateTime.ts"],"sourcesContent":["import { z } from 'zod';\nimport { type CallToolResponse, toolResultResponse } from '../../mcp/IMCPServer';\nimport { defineTool, LocalToolMCP, type ToolDefinition } from '../../mcp/LocalToolMCP';\nimport type { AgentTracing } from '../../tracing/AgentTracing';\nimport type { AgentCapability } from '../AgentCapability';\n\nexport const CURRENT_DATETIME_SERVER_ID = 'current-datetime';\nexport const GET_CURRENT_DATETIME_TOOL_NAME = 'get_current_datetime';\n\nconst inputSchema = z.object({}).strict();\n\nexport class CurrentDateTime extends LocalToolMCP {\n readonly name = CURRENT_DATETIME_SERVER_ID;\n readonly displayName = 'CurrentDateTime';\n\n constructor(tracing: AgentTracing) {\n super({ tracing });\n }\n\n private tools: ToolDefinition[] = [\n defineTool({\n name: GET_CURRENT_DATETIME_TOOL_NAME,\n description: 'Returns the current datetime in ISO-8601 (UTC) and unix epoch MS format.',\n schema: inputSchema,\n handler: () => Promise.resolve(this.getCurrentDateTime()),\n }),\n ];\n\n protected getTools(): ToolDefinition[] {\n return this.tools;\n }\n\n // Date.prototype.toISOString() is spec-guaranteed to return UTC (suffix 'Z').\n // Date.prototype.getTime() returns UTC epoch ms regardless of process timezone.\n private getCurrentDateTime(): CallToolResponse {\n const now = new Date();\n const payload = {\n unixEpochMS: now.getTime(),\n iso: now.toISOString(),\n };\n return toolResultResponse({ text: JSON.stringify(payload) });\n }\n}\n\nexport function currentDateTime(options: { tracing: AgentTracing }): AgentCapability {\n return {\n systemToolSets: [new CurrentDateTime(options.tracing)],\n };\n}\n"],"mappings":";AAAA,SAAS,SAAS;AAClB,SAAgC,0BAA0B;AAC1D,SAAS,YAAY,oBAAyC;AAIvD,IAAM,6BAA6B;AACnC,IAAM,iCAAiC;AAE9C,IAAM,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO;AAEjC,IAAM,kBAAN,cAA8B,aAAa;AAAA,EACvC,OAAO;AAAA,EACP,cAAc;AAAA,EAEvB,YAAY,SAAuB;AACjC,UAAM,EAAE,QAAQ,CAAC;AAAA,EACnB;AAAA,EAEQ,QAA0B;AAAA,IAChC,WAAW;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,SAAS,MAAM,QAAQ,QAAQ,KAAK,mBAAmB,CAAC;AAAA,IAC1D,CAAC;AAAA,EACH;AAAA,EAEU,WAA6B;AACrC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA,EAIQ,qBAAuC;AAC7C,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,UAAU;AAAA,MACd,aAAa,IAAI,QAAQ;AAAA,MACzB,KAAK,IAAI,YAAY;AAAA,IACvB;AACA,WAAO,mBAAmB,EAAE,MAAM,KAAK,UAAU,OAAO,EAAE,CAAC;AAAA,EAC7D;AACF;AAEO,SAAS,gBAAgB,SAAqD;AACnF,SAAO;AAAA,IACL,gBAAgB,CAAC,IAAI,gBAAgB,QAAQ,OAAO,CAAC;AAAA,EACvD;AACF;","names":[]}
@@ -0,0 +1,39 @@
1
+ import type { CallToolRequest } from '@modelcontextprotocol/sdk/types.js';
2
+ import { InstructionBuilder } from '../../InstructionBuilder';
3
+ import type { InternalToolCallInfo } from '../../llm/LLMTypes';
4
+ import { LocalToolMCP, type ToolDefinition } from '../../mcp/LocalToolMCP';
5
+ import type { AgentTracing } from '../../tracing/AgentTracing';
6
+ import type { AgentCapability } from '../AgentCapability';
7
+ export declare const SUB_AGENT_TOOL_NAME = "create_sub_agent";
8
+ export declare const SUB_AGENTS_SERVER_ID = "sub_agents";
9
+ export declare const SUB_AGENTS_REMINDER_TAG = "sub-agents";
10
+ export declare const SUB_AGENT_IDENTITY = "You are the Agent operating as a sub-agent that has been delegated a specific task. The Agent has access to the same tools as the parent agent. The Agent must focus on completing the delegated task and return a concise result. The Agent cannot ask questions to the user.";
11
+ export interface ModelSetEntry {
12
+ description: string;
13
+ model_params?: Record<string, unknown> | undefined;
14
+ }
15
+ export type ModelSetConfig = Record<string, ModelSetEntry>;
16
+ export declare function createDynamicSubAgentLargeToolResponseGuidance(): string;
17
+ export declare function buildDynamicSubAgentsInstruction(builder: InstructionBuilder, params: {
18
+ sandboxAvailable: boolean;
19
+ }): void;
20
+ export declare class DynamicSubAgents extends LocalToolMCP {
21
+ readonly name = "sub_agents";
22
+ readonly displayName = "DynamicSubAgents";
23
+ readonly tracingEnabled = false;
24
+ private tools;
25
+ private getCreateSubAgentDescription;
26
+ private getCreateSubAgentTool;
27
+ constructor({ modelSetConfig, tracing }: {
28
+ modelSetConfig?: ModelSetConfig | undefined;
29
+ tracing: AgentTracing;
30
+ });
31
+ protected getTools(): ToolDefinition[];
32
+ toolCallInfo(params: CallToolRequest['params'], _resolveUnderlyingTool?: boolean): Promise<InternalToolCallInfo>;
33
+ }
34
+ export declare function dynamicSubAgents(options: {
35
+ modelSetConfig?: ModelSetConfig | undefined;
36
+ sandboxAvailable: boolean;
37
+ tracing: AgentTracing;
38
+ }): AgentCapability;
39
+ //# sourceMappingURL=DynamicSubAgents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicSubAgents.d.ts","sourceRoot":"","sources":["../../../../src/core/capabilities/builtins/DynamicSubAgents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAc,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAEpD,eAAO,MAAM,kBAAkB,mRACmP,CAAC;AAEnR,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE3D,wBAAgB,8CAA8C,IAAI,MAAM,CAKvE;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,GACpC,IAAI,CAkBN;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,QAAQ,CAAC,IAAI,gBAAwB;IACrC,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,SAAkB,cAAc,SAAS;IACzC,OAAO,CAAC,KAAK,CAAmB;IAEhC,OAAO,CAAC,4BAA4B;IAuBpC,OAAO,CAAC,qBAAqB;IAwC7B,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE;QAAE,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,EAG9G;IAED,SAAS,CAAC,QAAQ,IAAI,cAAc,EAAE,CAErC;IAEQ,YAAY,CACnB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,sBAAsB,CAAC,EAAE,OAAO,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAU/B;CACF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;CACvB,GAAG,eAAe,CAalB"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/core/capabilities/builtins/DynamicSubAgents.ts
31
+ var DynamicSubAgents_exports = {};
32
+ __export(DynamicSubAgents_exports, {
33
+ DynamicSubAgents: () => DynamicSubAgents,
34
+ SUB_AGENTS_REMINDER_TAG: () => SUB_AGENTS_REMINDER_TAG,
35
+ SUB_AGENTS_SERVER_ID: () => SUB_AGENTS_SERVER_ID,
36
+ SUB_AGENT_IDENTITY: () => SUB_AGENT_IDENTITY,
37
+ SUB_AGENT_TOOL_NAME: () => SUB_AGENT_TOOL_NAME,
38
+ buildDynamicSubAgentsInstruction: () => buildDynamicSubAgentsInstruction,
39
+ createDynamicSubAgentLargeToolResponseGuidance: () => createDynamicSubAgentLargeToolResponseGuidance,
40
+ dynamicSubAgents: () => dynamicSubAgents
41
+ });
42
+ module.exports = __toCommonJS(DynamicSubAgents_exports);
43
+ var import_dedent = __toESM(require("dedent"), 1);
44
+ var import_zod = require("zod");
45
+ var import_InstructionBuilder = require("../../InstructionBuilder.js");
46
+ var import_LocalToolMCP = require("../../mcp/LocalToolMCP.js");
47
+ var SUB_AGENT_TOOL_NAME = "create_sub_agent";
48
+ var SUB_AGENTS_SERVER_ID = "sub_agents";
49
+ var SUB_AGENTS_REMINDER_TAG = "sub-agents";
50
+ var SUB_AGENT_IDENTITY = "You are the Agent operating as a sub-agent that has been delegated a specific task. The Agent has access to the same tools as the parent agent. The Agent must focus on completing the delegated task and return a concise result. The Agent cannot ask questions to the user.";
51
+ function createDynamicSubAgentLargeToolResponseGuidance() {
52
+ return import_dedent.default`
53
+ For large unstructured output like web search, documentation lookup, or broad search results,
54
+ the Agent should prefer delegating to a sub-agent and ask it to return only the relevant summary, with citations
55
+ when they improve verification.`;
56
+ }
57
+ function buildDynamicSubAgentsInstruction(builder, params) {
58
+ const sandboxGuidance = params.sandboxAvailable ? import_dedent.default`
59
+ When both sub-agents and sandbox are available, the Agent should always use sandbox code for mechanical data processing.
60
+ The Agent should use sub-agents for tasks that return large unstructured text (e.g. web search, documentation lookup) or
61
+ where multi-step reasoning is needed to process and summarize the results.` : "";
62
+ const paragraphs = [
63
+ import_dedent.default`The Agent can create sub-agents using the ${SUB_AGENT_TOOL_NAME} tool. Sub-agents are best for tasks that involve one or more tool calls that would fill up the context window or are blocked due to "Large Tool Response",
64
+ or tasks requiring exploration and reasoning that can be clearly delegated.`,
65
+ createDynamicSubAgentLargeToolResponseGuidance(),
66
+ ...sandboxGuidance ? [sandboxGuidance] : [],
67
+ import_dedent.default`The Agent should ask the sub-agent to include references or citations when they would improve reliability or make
68
+ verification easier.`
69
+ ];
70
+ builder.addSection(SUB_AGENTS_REMINDER_TAG, paragraphs.join("\n\n").trim());
71
+ }
72
+ var DynamicSubAgents = class extends import_LocalToolMCP.LocalToolMCP {
73
+ name = SUB_AGENTS_SERVER_ID;
74
+ displayName = "DynamicSubAgents";
75
+ tracingEnabled = false;
76
+ tools;
77
+ getCreateSubAgentDescription(modelSetConfig) {
78
+ let modelSetGuidance = "";
79
+ const modelSetModels = modelSetConfig ? Object.keys(modelSetConfig) : [];
80
+ if (modelSetConfig && modelSetModels.length > 0) {
81
+ const modelList = Object.entries(modelSetConfig).map(([key, entry]) => `- [${key}]: ${entry.description}`).join("\n");
82
+ modelSetGuidance = import_dedent.default`
83
+ Pick a suitable model for the task being delegated from the following list of models and their descriptions:
84
+ ${modelList}
85
+ `;
86
+ }
87
+ const paragraphs = [
88
+ `Delegate a well-defined task to a sub-agent. The Agent must not delegate the whole work to the sub-agent.`,
89
+ `The sub-agent has access to the same tools and the same sandbox environment as the parent Agent. Files created or modified by either agent are shared and remain available to both.`,
90
+ ...modelSetGuidance ? [modelSetGuidance] : [],
91
+ `The sub-agent has NO access to the prior conversation or the user's original message. The Agent must provide a clear, self-contained instruction that includes all necessary context, the exact task to perform, any constraints, what outputs are expected, and what work has already been completed so effort is not duplicated.`
92
+ ];
93
+ return paragraphs.join("\n\n").trim();
94
+ }
95
+ getCreateSubAgentTool(modelSetConfig) {
96
+ const modelKeys = Object.keys(modelSetConfig ?? {});
97
+ if (modelKeys.length > 0) {
98
+ return (0, import_LocalToolMCP.defineTool)({
99
+ name: SUB_AGENT_TOOL_NAME,
100
+ description: this.getCreateSubAgentDescription(modelSetConfig),
101
+ schema: import_zod.z.object({
102
+ name: import_zod.z.string().min(1),
103
+ input: import_zod.z.string().min(1),
104
+ model: import_zod.z.enum(modelKeys)
105
+ }),
106
+ handler: (input) => Promise.resolve({
107
+ createSubAgent: {
108
+ type: "dynamic",
109
+ name: input.name,
110
+ input: input.input,
111
+ model: input.model
112
+ }
113
+ })
114
+ });
115
+ }
116
+ return (0, import_LocalToolMCP.defineTool)({
117
+ name: SUB_AGENT_TOOL_NAME,
118
+ description: this.getCreateSubAgentDescription(modelSetConfig),
119
+ schema: import_zod.z.object({
120
+ name: import_zod.z.string().min(1),
121
+ input: import_zod.z.string().min(1)
122
+ }),
123
+ handler: (input) => Promise.resolve({
124
+ createSubAgent: {
125
+ type: "dynamic",
126
+ name: input.name,
127
+ input: input.input
128
+ }
129
+ })
130
+ });
131
+ }
132
+ constructor({ modelSetConfig, tracing }) {
133
+ super({ tracing });
134
+ this.tools = [this.getCreateSubAgentTool(modelSetConfig)];
135
+ }
136
+ getTools() {
137
+ return this.tools;
138
+ }
139
+ toolCallInfo(params, _resolveUnderlyingTool) {
140
+ void _resolveUnderlyingTool;
141
+ return Promise.resolve({
142
+ type: "truefoundry-system",
143
+ mcp_server_id: this.mcpServerId,
144
+ mcp_server_name: this.name,
145
+ original_tool_name: params.name,
146
+ is_approval_required: false,
147
+ is_thread_creation: true
148
+ });
149
+ }
150
+ };
151
+ function dynamicSubAgents(options) {
152
+ const toolSet = new DynamicSubAgents({
153
+ modelSetConfig: options.modelSetConfig,
154
+ tracing: options.tracing
155
+ });
156
+ return {
157
+ systemToolSets: [toolSet],
158
+ instructionBuilders: [
159
+ (builder) => {
160
+ buildDynamicSubAgentsInstruction(builder, { sandboxAvailable: options.sandboxAvailable });
161
+ }
162
+ ]
163
+ };
164
+ }
165
+ // Annotate the CommonJS export names for ESM import in node:
166
+ 0 && (module.exports = {
167
+ DynamicSubAgents,
168
+ SUB_AGENTS_REMINDER_TAG,
169
+ SUB_AGENTS_SERVER_ID,
170
+ SUB_AGENT_IDENTITY,
171
+ SUB_AGENT_TOOL_NAME,
172
+ buildDynamicSubAgentsInstruction,
173
+ createDynamicSubAgentLargeToolResponseGuidance,
174
+ dynamicSubAgents
175
+ });
176
+ //# sourceMappingURL=DynamicSubAgents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/capabilities/builtins/DynamicSubAgents.ts"],"sourcesContent":["import type { CallToolRequest } from '@modelcontextprotocol/sdk/types.js';\nimport dedent from 'dedent';\nimport { z } from 'zod';\nimport { InstructionBuilder } from '../../InstructionBuilder';\nimport type { InternalToolCallInfo } from '../../llm/LLMTypes';\nimport { defineTool, LocalToolMCP, type ToolDefinition } from '../../mcp/LocalToolMCP';\nimport type { AgentTracing } from '../../tracing/AgentTracing';\nimport type { AgentCapability } from '../AgentCapability';\n\nexport const SUB_AGENT_TOOL_NAME = 'create_sub_agent';\nexport const SUB_AGENTS_SERVER_ID = 'sub_agents';\nexport const SUB_AGENTS_REMINDER_TAG = 'sub-agents';\n\nexport const SUB_AGENT_IDENTITY =\n 'You are the Agent operating as a sub-agent that has been delegated a specific task. The Agent has access to the same tools as the parent agent. The Agent must focus on completing the delegated task and return a concise result. The Agent cannot ask questions to the user.';\n\nexport interface ModelSetEntry {\n description: string;\n model_params?: Record<string, unknown> | undefined;\n}\n\nexport type ModelSetConfig = Record<string, ModelSetEntry>;\n\nexport function createDynamicSubAgentLargeToolResponseGuidance(): string {\n return dedent`\n For large unstructured output like web search, documentation lookup, or broad search results,\n the Agent should prefer delegating to a sub-agent and ask it to return only the relevant summary, with citations\n when they improve verification.`;\n}\n\nexport function buildDynamicSubAgentsInstruction(\n builder: InstructionBuilder,\n params: { sandboxAvailable: boolean },\n): void {\n const sandboxGuidance = params.sandboxAvailable\n ? dedent`\n When both sub-agents and sandbox are available, the Agent should always use sandbox code for mechanical data processing.\n The Agent should use sub-agents for tasks that return large unstructured text (e.g. web search, documentation lookup) or\n where multi-step reasoning is needed to process and summarize the results.`\n : '';\n\n const paragraphs = [\n dedent`The Agent can create sub-agents using the ${SUB_AGENT_TOOL_NAME} tool. Sub-agents are best for tasks that involve one or more tool calls that would fill up the context window or are blocked due to \"Large Tool Response\",\n or tasks requiring exploration and reasoning that can be clearly delegated.`,\n createDynamicSubAgentLargeToolResponseGuidance(),\n ...(sandboxGuidance ? [sandboxGuidance] : []),\n dedent`The Agent should ask the sub-agent to include references or citations when they would improve reliability or make\n verification easier.`,\n ];\n\n builder.addSection(SUB_AGENTS_REMINDER_TAG, paragraphs.join('\\n\\n').trim());\n}\n\nexport class DynamicSubAgents extends LocalToolMCP {\n readonly name = SUB_AGENTS_SERVER_ID;\n readonly displayName = 'DynamicSubAgents';\n override readonly tracingEnabled = false;\n private tools: ToolDefinition[];\n\n private getCreateSubAgentDescription(modelSetConfig?: ModelSetConfig): string {\n let modelSetGuidance = '';\n const modelSetModels = modelSetConfig ? Object.keys(modelSetConfig) : [];\n if (modelSetConfig && modelSetModels.length > 0) {\n const modelList = Object.entries(modelSetConfig)\n .map(([key, entry]) => `- [${key}]: ${entry.description}`)\n .join('\\n');\n modelSetGuidance = dedent`\n Pick a suitable model for the task being delegated from the following list of models and their descriptions:\n ${modelList}\n `;\n }\n\n const paragraphs = [\n `Delegate a well-defined task to a sub-agent. The Agent must not delegate the whole work to the sub-agent.`,\n `The sub-agent has access to the same tools and the same sandbox environment as the parent Agent. Files created or modified by either agent are shared and remain available to both.`,\n ...(modelSetGuidance ? [modelSetGuidance] : []),\n `The sub-agent has NO access to the prior conversation or the user's original message. The Agent must provide a clear, self-contained instruction that includes all necessary context, the exact task to perform, any constraints, what outputs are expected, and what work has already been completed so effort is not duplicated.`,\n ];\n\n return paragraphs.join('\\n\\n').trim();\n }\n\n private getCreateSubAgentTool(modelSetConfig?: ModelSetConfig): ToolDefinition {\n const modelKeys = Object.keys(modelSetConfig ?? {});\n if (modelKeys.length > 0) {\n return defineTool({\n name: SUB_AGENT_TOOL_NAME,\n description: this.getCreateSubAgentDescription(modelSetConfig),\n schema: z.object({\n name: z.string().min(1),\n input: z.string().min(1),\n model: z.enum(modelKeys as [string, ...string[]]),\n }),\n handler: input =>\n Promise.resolve({\n createSubAgent: {\n type: 'dynamic',\n name: input.name,\n input: input.input,\n model: input.model,\n },\n }),\n });\n }\n return defineTool({\n name: SUB_AGENT_TOOL_NAME,\n description: this.getCreateSubAgentDescription(modelSetConfig),\n schema: z.object({\n name: z.string().min(1),\n input: z.string().min(1),\n }),\n handler: input =>\n Promise.resolve({\n createSubAgent: {\n type: 'dynamic',\n name: input.name,\n input: input.input,\n },\n }),\n });\n }\n\n constructor({ modelSetConfig, tracing }: { modelSetConfig?: ModelSetConfig | undefined; tracing: AgentTracing }) {\n super({ tracing });\n this.tools = [this.getCreateSubAgentTool(modelSetConfig)];\n }\n\n protected getTools(): ToolDefinition[] {\n return this.tools;\n }\n\n override toolCallInfo(\n params: CallToolRequest['params'],\n _resolveUnderlyingTool?: boolean,\n ): Promise<InternalToolCallInfo> {\n void _resolveUnderlyingTool;\n return Promise.resolve({\n type: 'truefoundry-system',\n mcp_server_id: this.mcpServerId,\n mcp_server_name: this.name,\n original_tool_name: params.name,\n is_approval_required: false,\n is_thread_creation: true,\n });\n }\n}\n\nexport function dynamicSubAgents(options: {\n modelSetConfig?: ModelSetConfig | undefined;\n sandboxAvailable: boolean;\n tracing: AgentTracing;\n}): AgentCapability {\n const toolSet = new DynamicSubAgents({\n modelSetConfig: options.modelSetConfig,\n tracing: options.tracing,\n });\n return {\n systemToolSets: [toolSet],\n instructionBuilders: [\n builder => {\n buildDynamicSubAgentsInstruction(builder, { sandboxAvailable: options.sandboxAvailable });\n },\n ],\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAmB;AACnB,iBAAkB;AAClB,gCAAmC;AAEnC,0BAA8D;AAIvD,IAAM,sBAAsB;AAC5B,IAAM,uBAAuB;AAC7B,IAAM,0BAA0B;AAEhC,IAAM,qBACX;AASK,SAAS,iDAAyD;AACvE,SAAO,cAAAA;AAAA;AAAA;AAAA;AAIT;AAEO,SAAS,iCACd,SACA,QACM;AACN,QAAM,kBAAkB,OAAO,mBAC3B,cAAAA;AAAA;AAAA;AAAA,oFAIA;AAEJ,QAAM,aAAa;AAAA,IACjB,cAAAA,oDAAmD,mBAAmB;AAAA;AAAA,IAEtE,+CAA+C;AAAA,IAC/C,GAAI,kBAAkB,CAAC,eAAe,IAAI,CAAC;AAAA,IAC3C,cAAAA;AAAA;AAAA,EAEF;AAEA,UAAQ,WAAW,yBAAyB,WAAW,KAAK,MAAM,EAAE,KAAK,CAAC;AAC5E;AAEO,IAAM,mBAAN,cAA+B,iCAAa;AAAA,EACxC,OAAO;AAAA,EACP,cAAc;AAAA,EACL,iBAAiB;AAAA,EAC3B;AAAA,EAEA,6BAA6B,gBAAyC;AAC5E,QAAI,mBAAmB;AACvB,UAAM,iBAAiB,iBAAiB,OAAO,KAAK,cAAc,IAAI,CAAC;AACvE,QAAI,kBAAkB,eAAe,SAAS,GAAG;AAC/C,YAAM,YAAY,OAAO,QAAQ,cAAc,EAC5C,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,GAAG,MAAM,MAAM,WAAW,EAAE,EACxD,KAAK,IAAI;AACZ,yBAAmB,cAAAA;AAAA;AAAA,UAEf,SAAS;AAAA;AAAA,IAEf;AAEA,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA,GAAI,mBAAmB,CAAC,gBAAgB,IAAI,CAAC;AAAA,MAC7C;AAAA,IACF;AAEA,WAAO,WAAW,KAAK,MAAM,EAAE,KAAK;AAAA,EACtC;AAAA,EAEQ,sBAAsB,gBAAiD;AAC7E,UAAM,YAAY,OAAO,KAAK,kBAAkB,CAAC,CAAC;AAClD,QAAI,UAAU,SAAS,GAAG;AACxB,iBAAO,gCAAW;AAAA,QAChB,MAAM;AAAA,QACN,aAAa,KAAK,6BAA6B,cAAc;AAAA,QAC7D,QAAQ,aAAE,OAAO;AAAA,UACf,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,UACtB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,UACvB,OAAO,aAAE,KAAK,SAAkC;AAAA,QAClD,CAAC;AAAA,QACD,SAAS,WACP,QAAQ,QAAQ;AAAA,UACd,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,MAAM,MAAM;AAAA,YACZ,OAAO,MAAM;AAAA,YACb,OAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACL,CAAC;AAAA,IACH;AACA,eAAO,gCAAW;AAAA,MAChB,MAAM;AAAA,MACN,aAAa,KAAK,6BAA6B,cAAc;AAAA,MAC7D,QAAQ,aAAE,OAAO;AAAA,QACf,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,QACtB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,MACzB,CAAC;AAAA,MACD,SAAS,WACP,QAAQ,QAAQ;AAAA,QACd,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,MAAM,MAAM;AAAA,UACZ,OAAO,MAAM;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAAA,EAEA,YAAY,EAAE,gBAAgB,QAAQ,GAA2E;AAC/G,UAAM,EAAE,QAAQ,CAAC;AACjB,SAAK,QAAQ,CAAC,KAAK,sBAAsB,cAAc,CAAC;AAAA,EAC1D;AAAA,EAEU,WAA6B;AACrC,WAAO,KAAK;AAAA,EACd;AAAA,EAES,aACP,QACA,wBAC+B;AAC/B,SAAK;AACL,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM;AAAA,MACN,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB,oBAAoB,OAAO;AAAA,MAC3B,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,IACtB,CAAC;AAAA,EACH;AACF;AAEO,SAAS,iBAAiB,SAIb;AAClB,QAAM,UAAU,IAAI,iBAAiB;AAAA,IACnC,gBAAgB,QAAQ;AAAA,IACxB,SAAS,QAAQ;AAAA,EACnB,CAAC;AACD,SAAO;AAAA,IACL,gBAAgB,CAAC,OAAO;AAAA,IACxB,qBAAqB;AAAA,MACnB,aAAW;AACT,yCAAiC,SAAS,EAAE,kBAAkB,QAAQ,iBAAiB,CAAC;AAAA,MAC1F;AAAA,IACF;AAAA,EACF;AACF;","names":["dedent"]}