@botbotgo/runtime 1.0.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 (313) hide show
  1. package/.github/workflows/ci.yml +46 -0
  2. package/.github/workflows/release.yml +79 -0
  3. package/README.md +71 -0
  4. package/config/examples/memory.yaml +39 -0
  5. package/config/examples/model.yaml +21 -0
  6. package/config/examples/runtime.yaml +44 -0
  7. package/config/examples/skills.yaml +8 -0
  8. package/config/examples/tool.yaml +16 -0
  9. package/dist/config/index.d.ts +7 -0
  10. package/dist/config/index.d.ts.map +1 -0
  11. package/dist/config/index.js +4 -0
  12. package/dist/config/index.js.map +1 -0
  13. package/dist/config/loader.d.ts +41 -0
  14. package/dist/config/loader.d.ts.map +1 -0
  15. package/dist/config/loader.js +140 -0
  16. package/dist/config/loader.js.map +1 -0
  17. package/dist/config/resolveRuntimeConfig.d.ts +83 -0
  18. package/dist/config/resolveRuntimeConfig.d.ts.map +1 -0
  19. package/dist/config/resolveRuntimeConfig.js +85 -0
  20. package/dist/config/resolveRuntimeConfig.js.map +1 -0
  21. package/dist/config/resources.d.ts +112 -0
  22. package/dist/config/resources.d.ts.map +1 -0
  23. package/dist/config/resources.js +20 -0
  24. package/dist/config/resources.js.map +1 -0
  25. package/dist/config/runtimeConfigLoader.d.ts +28 -0
  26. package/dist/config/runtimeConfigLoader.d.ts.map +1 -0
  27. package/dist/config/runtimeConfigLoader.js +38 -0
  28. package/dist/config/runtimeConfigLoader.js.map +1 -0
  29. package/dist/index.d.ts +9 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +5 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/runtime/agentMiddleware.d.ts +3 -0
  34. package/dist/runtime/agentMiddleware.d.ts.map +1 -0
  35. package/dist/runtime/agentMiddleware.js +2 -0
  36. package/dist/runtime/agentMiddleware.js.map +1 -0
  37. package/dist/runtime/bootstrap/runtimeFactory.d.ts +7 -0
  38. package/dist/runtime/bootstrap/runtimeFactory.d.ts.map +1 -0
  39. package/dist/runtime/bootstrap/runtimeFactory.js +139 -0
  40. package/dist/runtime/bootstrap/runtimeFactory.js.map +1 -0
  41. package/dist/runtime/bootstrap/runtimeModuleInitializer.d.ts +5 -0
  42. package/dist/runtime/bootstrap/runtimeModuleInitializer.d.ts.map +1 -0
  43. package/dist/runtime/bootstrap/runtimeModuleInitializer.js +32 -0
  44. package/dist/runtime/bootstrap/runtimeModuleInitializer.js.map +1 -0
  45. package/dist/runtime/context/agentContext.d.ts +5 -0
  46. package/dist/runtime/context/agentContext.d.ts.map +1 -0
  47. package/dist/runtime/context/agentContext.js +19 -0
  48. package/dist/runtime/context/agentContext.js.map +1 -0
  49. package/dist/runtime/context/globalContext.d.ts +19 -0
  50. package/dist/runtime/context/globalContext.d.ts.map +1 -0
  51. package/dist/runtime/context/globalContext.js +47 -0
  52. package/dist/runtime/context/globalContext.js.map +1 -0
  53. package/dist/runtime/events/eventPublisher.d.ts +15 -0
  54. package/dist/runtime/events/eventPublisher.d.ts.map +1 -0
  55. package/dist/runtime/events/eventPublisher.js +23 -0
  56. package/dist/runtime/events/eventPublisher.js.map +1 -0
  57. package/dist/runtime/execution/agentRunExecutor.d.ts +38 -0
  58. package/dist/runtime/execution/agentRunExecutor.d.ts.map +1 -0
  59. package/dist/runtime/execution/agentRunExecutor.js +378 -0
  60. package/dist/runtime/execution/agentRunExecutor.js.map +1 -0
  61. package/dist/runtime/execution/agentRunExecutor.types.d.ts +37 -0
  62. package/dist/runtime/execution/agentRunExecutor.types.d.ts.map +1 -0
  63. package/dist/runtime/execution/agentRunExecutor.types.js +2 -0
  64. package/dist/runtime/execution/agentRunExecutor.types.js.map +1 -0
  65. package/dist/runtime/execution/agentRunProgress.d.ts +8 -0
  66. package/dist/runtime/execution/agentRunProgress.d.ts.map +1 -0
  67. package/dist/runtime/execution/agentRunProgress.js +46 -0
  68. package/dist/runtime/execution/agentRunProgress.js.map +1 -0
  69. package/dist/runtime/execution/agentRunState.d.ts +44 -0
  70. package/dist/runtime/execution/agentRunState.d.ts.map +1 -0
  71. package/dist/runtime/execution/agentRunState.js +17 -0
  72. package/dist/runtime/execution/agentRunState.js.map +1 -0
  73. package/dist/runtime/execution/policies/runCompletionPolicy.d.ts +5 -0
  74. package/dist/runtime/execution/policies/runCompletionPolicy.d.ts.map +1 -0
  75. package/dist/runtime/execution/policies/runCompletionPolicy.js +30 -0
  76. package/dist/runtime/execution/policies/runCompletionPolicy.js.map +1 -0
  77. package/dist/runtime/execution/policies/runErrorPolicy.d.ts +7 -0
  78. package/dist/runtime/execution/policies/runErrorPolicy.d.ts.map +1 -0
  79. package/dist/runtime/execution/policies/runErrorPolicy.js +40 -0
  80. package/dist/runtime/execution/policies/runErrorPolicy.js.map +1 -0
  81. package/dist/runtime/execution/policies/runPromptBuilder.d.ts +10 -0
  82. package/dist/runtime/execution/policies/runPromptBuilder.d.ts.map +1 -0
  83. package/dist/runtime/execution/policies/runPromptBuilder.js +34 -0
  84. package/dist/runtime/execution/policies/runPromptBuilder.js.map +1 -0
  85. package/dist/runtime/execution/policies/runSummaryFormatter.d.ts +6 -0
  86. package/dist/runtime/execution/policies/runSummaryFormatter.d.ts.map +1 -0
  87. package/dist/runtime/execution/policies/runSummaryFormatter.js +47 -0
  88. package/dist/runtime/execution/policies/runSummaryFormatter.js.map +1 -0
  89. package/dist/runtime/execution/policies/runtimeDelay.d.ts +4 -0
  90. package/dist/runtime/execution/policies/runtimeDelay.d.ts.map +1 -0
  91. package/dist/runtime/execution/policies/runtimeDelay.js +6 -0
  92. package/dist/runtime/execution/policies/runtimeDelay.js.map +1 -0
  93. package/dist/runtime/execution/policies/toolConfigReader.d.ts +8 -0
  94. package/dist/runtime/execution/policies/toolConfigReader.d.ts.map +1 -0
  95. package/dist/runtime/execution/policies/toolConfigReader.js +91 -0
  96. package/dist/runtime/execution/policies/toolConfigReader.js.map +1 -0
  97. package/dist/runtime/human-loop/consoleHumanLoop.d.ts +21 -0
  98. package/dist/runtime/human-loop/consoleHumanLoop.d.ts.map +1 -0
  99. package/dist/runtime/human-loop/consoleHumanLoop.js +102 -0
  100. package/dist/runtime/human-loop/consoleHumanLoop.js.map +1 -0
  101. package/dist/runtime/human-loop/humanLoop.d.ts +44 -0
  102. package/dist/runtime/human-loop/humanLoop.d.ts.map +1 -0
  103. package/dist/runtime/human-loop/humanLoop.js +36 -0
  104. package/dist/runtime/human-loop/humanLoop.js.map +1 -0
  105. package/dist/runtime/index.d.ts +10 -0
  106. package/dist/runtime/index.d.ts.map +1 -0
  107. package/dist/runtime/index.js +6 -0
  108. package/dist/runtime/index.js.map +1 -0
  109. package/dist/runtime/middleware/agentToolMiddleware.d.ts +30 -0
  110. package/dist/runtime/middleware/agentToolMiddleware.d.ts.map +1 -0
  111. package/dist/runtime/middleware/agentToolMiddleware.js +259 -0
  112. package/dist/runtime/middleware/agentToolMiddleware.js.map +1 -0
  113. package/dist/runtime/middleware/commandPolicy.d.ts +8 -0
  114. package/dist/runtime/middleware/commandPolicy.d.ts.map +1 -0
  115. package/dist/runtime/middleware/commandPolicy.js +55 -0
  116. package/dist/runtime/middleware/commandPolicy.js.map +1 -0
  117. package/dist/runtime/middleware/frameworkPrompt.d.ts +4 -0
  118. package/dist/runtime/middleware/frameworkPrompt.d.ts.map +1 -0
  119. package/dist/runtime/middleware/frameworkPrompt.js +44 -0
  120. package/dist/runtime/middleware/frameworkPrompt.js.map +1 -0
  121. package/dist/runtime/middleware/index.d.ts +4 -0
  122. package/dist/runtime/middleware/index.d.ts.map +1 -0
  123. package/dist/runtime/middleware/index.js +3 -0
  124. package/dist/runtime/middleware/index.js.map +1 -0
  125. package/dist/runtime/middleware/skillPathMap.d.ts +3 -0
  126. package/dist/runtime/middleware/skillPathMap.d.ts.map +1 -0
  127. package/dist/runtime/middleware/skillPathMap.js +44 -0
  128. package/dist/runtime/middleware/skillPathMap.js.map +1 -0
  129. package/dist/runtime/middleware/toolArgsNormalizer.d.ts +21 -0
  130. package/dist/runtime/middleware/toolArgsNormalizer.d.ts.map +1 -0
  131. package/dist/runtime/middleware/toolArgsNormalizer.js +227 -0
  132. package/dist/runtime/middleware/toolArgsNormalizer.js.map +1 -0
  133. package/dist/runtime/middleware/toolCallGuard.d.ts +8 -0
  134. package/dist/runtime/middleware/toolCallGuard.d.ts.map +1 -0
  135. package/dist/runtime/middleware/toolCallGuard.js +60 -0
  136. package/dist/runtime/middleware/toolCallGuard.js.map +1 -0
  137. package/dist/runtime/middleware/toolFsHandlers.d.ts +12 -0
  138. package/dist/runtime/middleware/toolFsHandlers.d.ts.map +1 -0
  139. package/dist/runtime/middleware/toolFsHandlers.js +79 -0
  140. package/dist/runtime/middleware/toolFsHandlers.js.map +1 -0
  141. package/dist/runtime/middleware/toolRequestParser.d.ts +14 -0
  142. package/dist/runtime/middleware/toolRequestParser.d.ts.map +1 -0
  143. package/dist/runtime/middleware/toolRequestParser.js +72 -0
  144. package/dist/runtime/middleware/toolRequestParser.js.map +1 -0
  145. package/dist/runtime/middleware/types.d.ts +87 -0
  146. package/dist/runtime/middleware/types.d.ts.map +1 -0
  147. package/dist/runtime/middleware/types.js +3 -0
  148. package/dist/runtime/middleware/types.js.map +1 -0
  149. package/dist/runtime/providers/backendResolver.d.ts +26 -0
  150. package/dist/runtime/providers/backendResolver.d.ts.map +1 -0
  151. package/dist/runtime/providers/backendResolver.js +73 -0
  152. package/dist/runtime/providers/backendResolver.js.map +1 -0
  153. package/dist/runtime/providers/index.d.ts +14 -0
  154. package/dist/runtime/providers/index.d.ts.map +1 -0
  155. package/dist/runtime/providers/index.js +10 -0
  156. package/dist/runtime/providers/index.js.map +1 -0
  157. package/dist/runtime/providers/langchainRuntime.d.ts +11 -0
  158. package/dist/runtime/providers/langchainRuntime.d.ts.map +1 -0
  159. package/dist/runtime/providers/langchainRuntime.js +45 -0
  160. package/dist/runtime/providers/langchainRuntime.js.map +1 -0
  161. package/dist/runtime/providers/localShellBackend.d.ts +10 -0
  162. package/dist/runtime/providers/localShellBackend.d.ts.map +1 -0
  163. package/dist/runtime/providers/localShellBackend.js +23 -0
  164. package/dist/runtime/providers/localShellBackend.js.map +1 -0
  165. package/dist/runtime/providers/openaiDeepAgent.d.ts +9 -0
  166. package/dist/runtime/providers/openaiDeepAgent.d.ts.map +1 -0
  167. package/dist/runtime/providers/openaiDeepAgent.js +7 -0
  168. package/dist/runtime/providers/openaiDeepAgent.js.map +1 -0
  169. package/dist/runtime/providers/openaiLocalAgent.d.ts +17 -0
  170. package/dist/runtime/providers/openaiLocalAgent.d.ts.map +1 -0
  171. package/dist/runtime/providers/openaiLocalAgent.js +26 -0
  172. package/dist/runtime/providers/openaiLocalAgent.js.map +1 -0
  173. package/dist/runtime/providers/openaiLocalAgentFactory.d.ts +36 -0
  174. package/dist/runtime/providers/openaiLocalAgentFactory.d.ts.map +1 -0
  175. package/dist/runtime/providers/openaiLocalAgentFactory.js +139 -0
  176. package/dist/runtime/providers/openaiLocalAgentFactory.js.map +1 -0
  177. package/dist/runtime/providers/shared/agentProbe.d.ts +4 -0
  178. package/dist/runtime/providers/shared/agentProbe.d.ts.map +1 -0
  179. package/dist/runtime/providers/shared/agentProbe.js +17 -0
  180. package/dist/runtime/providers/shared/agentProbe.js.map +1 -0
  181. package/dist/runtime/providers/shared/moduleFallback.d.ts +2 -0
  182. package/dist/runtime/providers/shared/moduleFallback.d.ts.map +1 -0
  183. package/dist/runtime/providers/shared/moduleFallback.js +34 -0
  184. package/dist/runtime/providers/shared/moduleFallback.js.map +1 -0
  185. package/dist/runtime/providers/shared/resourceCloser.d.ts +6 -0
  186. package/dist/runtime/providers/shared/resourceCloser.d.ts.map +1 -0
  187. package/dist/runtime/providers/shared/resourceCloser.js +30 -0
  188. package/dist/runtime/providers/shared/resourceCloser.js.map +1 -0
  189. package/dist/runtime/runtimeService.d.ts +109 -0
  190. package/dist/runtime/runtimeService.d.ts.map +1 -0
  191. package/dist/runtime/runtimeService.js +90 -0
  192. package/dist/runtime/runtimeService.js.map +1 -0
  193. package/dist/runtime/stream/agentMessages.d.ts +40 -0
  194. package/dist/runtime/stream/agentMessages.d.ts.map +1 -0
  195. package/dist/runtime/stream/agentMessages.js +44 -0
  196. package/dist/runtime/stream/agentMessages.js.map +1 -0
  197. package/dist/runtime/stream/agentStream.d.ts +31 -0
  198. package/dist/runtime/stream/agentStream.d.ts.map +1 -0
  199. package/dist/runtime/stream/agentStream.js +106 -0
  200. package/dist/runtime/stream/agentStream.js.map +1 -0
  201. package/dist/runtime/stream/messageSummary.d.ts +20 -0
  202. package/dist/runtime/stream/messageSummary.d.ts.map +1 -0
  203. package/dist/runtime/stream/messageSummary.js +150 -0
  204. package/dist/runtime/stream/messageSummary.js.map +1 -0
  205. package/dist/runtime/stream/runArtifacts.d.ts +9 -0
  206. package/dist/runtime/stream/runArtifacts.d.ts.map +1 -0
  207. package/dist/runtime/stream/runArtifacts.js +48 -0
  208. package/dist/runtime/stream/runArtifacts.js.map +1 -0
  209. package/dist/state/index.d.ts +7 -0
  210. package/dist/state/index.d.ts.map +1 -0
  211. package/dist/state/index.js +4 -0
  212. package/dist/state/index.js.map +1 -0
  213. package/dist/state/runState.d.ts +36 -0
  214. package/dist/state/runState.d.ts.map +1 -0
  215. package/dist/state/runState.js +51 -0
  216. package/dist/state/runState.js.map +1 -0
  217. package/dist/state/todos.d.ts +19 -0
  218. package/dist/state/todos.d.ts.map +1 -0
  219. package/dist/state/todos.js +45 -0
  220. package/dist/state/todos.js.map +1 -0
  221. package/dist/state/workspaceRunSession.d.ts +32 -0
  222. package/dist/state/workspaceRunSession.d.ts.map +1 -0
  223. package/dist/state/workspaceRunSession.js +67 -0
  224. package/dist/state/workspaceRunSession.js.map +1 -0
  225. package/dist/state/workspaceState.d.ts +94 -0
  226. package/dist/state/workspaceState.d.ts.map +1 -0
  227. package/dist/state/workspaceState.js +119 -0
  228. package/dist/state/workspaceState.js.map +1 -0
  229. package/dist/types.d.ts +2 -0
  230. package/dist/types.d.ts.map +1 -0
  231. package/dist/types.js +2 -0
  232. package/dist/types.js.map +1 -0
  233. package/example/.tsbuildinfo +1 -0
  234. package/example/build/.tsbuildinfo +1 -0
  235. package/example/config/memory.yaml +35 -0
  236. package/example/config/model.yaml +14 -0
  237. package/example/config/runtime.yaml +46 -0
  238. package/example/config/tool.yaml +24 -0
  239. package/example/index.ts +159 -0
  240. package/example/package-lock.json +1396 -0
  241. package/example/package.json +26 -0
  242. package/example/serve-output.mjs +52 -0
  243. package/example/tsconfig.json +19 -0
  244. package/package.json +73 -0
  245. package/scripts/resolve-deps.js +40 -0
  246. package/src/config/index.ts +29 -0
  247. package/src/config/loader.ts +174 -0
  248. package/src/config/resolveRuntimeConfig.ts +160 -0
  249. package/src/config/resources.ts +152 -0
  250. package/src/config/runtimeConfigLoader.ts +68 -0
  251. package/src/external-modules.d.ts +20 -0
  252. package/src/index.ts +36 -0
  253. package/src/runtime/agentMiddleware.ts +6 -0
  254. package/src/runtime/bootstrap/runtimeFactory.ts +212 -0
  255. package/src/runtime/bootstrap/runtimeModuleInitializer.ts +34 -0
  256. package/src/runtime/context/agentContext.ts +24 -0
  257. package/src/runtime/context/globalContext.ts +70 -0
  258. package/src/runtime/events/eventPublisher.ts +45 -0
  259. package/src/runtime/execution/agentRunExecutor.ts +499 -0
  260. package/src/runtime/execution/agentRunExecutor.types.ts +39 -0
  261. package/src/runtime/execution/agentRunProgress.ts +67 -0
  262. package/src/runtime/execution/agentRunState.ts +66 -0
  263. package/src/runtime/execution/policies/runCompletionPolicy.ts +30 -0
  264. package/src/runtime/execution/policies/runErrorPolicy.ts +50 -0
  265. package/src/runtime/execution/policies/runPromptBuilder.ts +39 -0
  266. package/src/runtime/execution/policies/runSummaryFormatter.ts +57 -0
  267. package/src/runtime/execution/policies/runtimeDelay.ts +5 -0
  268. package/src/runtime/execution/policies/toolConfigReader.ts +107 -0
  269. package/src/runtime/human-loop/consoleHumanLoop.ts +113 -0
  270. package/src/runtime/human-loop/humanLoop.ts +90 -0
  271. package/src/runtime/index.ts +36 -0
  272. package/src/runtime/middleware/agentToolMiddleware.ts +329 -0
  273. package/src/runtime/middleware/commandPolicy.ts +65 -0
  274. package/src/runtime/middleware/frameworkPrompt.ts +51 -0
  275. package/src/runtime/middleware/index.ts +7 -0
  276. package/src/runtime/middleware/skillPathMap.ts +49 -0
  277. package/src/runtime/middleware/toolArgsNormalizer.ts +277 -0
  278. package/src/runtime/middleware/toolCallGuard.ts +73 -0
  279. package/src/runtime/middleware/toolFsHandlers.ts +94 -0
  280. package/src/runtime/middleware/toolRequestParser.ts +84 -0
  281. package/src/runtime/middleware/types.ts +91 -0
  282. package/src/runtime/providers/backendResolver.ts +127 -0
  283. package/src/runtime/providers/index.ts +19 -0
  284. package/src/runtime/providers/langchainRuntime.ts +67 -0
  285. package/src/runtime/providers/localShellBackend.ts +54 -0
  286. package/src/runtime/providers/openaiDeepAgent.ts +17 -0
  287. package/src/runtime/providers/openaiLocalAgent.ts +35 -0
  288. package/src/runtime/providers/openaiLocalAgentFactory.ts +185 -0
  289. package/src/runtime/providers/shared/agentProbe.ts +24 -0
  290. package/src/runtime/providers/shared/moduleFallback.ts +41 -0
  291. package/src/runtime/providers/shared/resourceCloser.ts +30 -0
  292. package/src/runtime/runtimeService.ts +205 -0
  293. package/src/runtime/stream/agentMessages.ts +72 -0
  294. package/src/runtime/stream/agentStream.ts +168 -0
  295. package/src/runtime/stream/messageSummary.ts +164 -0
  296. package/src/runtime/stream/runArtifacts.ts +72 -0
  297. package/src/state/index.ts +19 -0
  298. package/src/state/runState.ts +84 -0
  299. package/src/state/todos.ts +59 -0
  300. package/src/state/workspaceRunSession.ts +96 -0
  301. package/src/state/workspaceState.ts +199 -0
  302. package/src/types/easynet-agent-common.d.ts +62 -0
  303. package/src/types.ts +1 -0
  304. package/test/integration/runtime-live.integration.test.ts +30 -0
  305. package/test/unit/config/loader.test.ts +429 -0
  306. package/test/unit/runtime/agentContext.test.ts +23 -0
  307. package/test/unit/runtime/agentRuntime.test.ts +99 -0
  308. package/test/unit/runtime/consoleHumanLoop.test.ts +52 -0
  309. package/test/unit/runtime/events.test.ts +11 -0
  310. package/test/unit/runtime/globalContext.test.ts +34 -0
  311. package/test/unit/runtime/humanLoop.test.ts +104 -0
  312. package/test/unit/runtime/toolArgsNormalizer.test.ts +136 -0
  313. package/tsconfig.json +18 -0
@@ -0,0 +1,4 @@
1
+ export declare class AgentProbe {
2
+ static probeStream(agent: unknown): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=agentProbe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentProbe.d.ts","sourceRoot":"","sources":["../../../../src/runtime/providers/shared/agentProbe.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;WACD,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB/D"}
@@ -0,0 +1,17 @@
1
+ export class AgentProbe {
2
+ static async probeStream(agent) {
3
+ const streamOwner = agent;
4
+ if (typeof streamOwner?.stream !== "function")
5
+ return;
6
+ const stream = await streamOwner.stream({ messages: [{ role: "user", content: "Probe request: respond briefly." }] }, { configurable: { thread_id: `probe-${Date.now()}` }, streamMode: "values" });
7
+ const iterator = stream[Symbol.asyncIterator]();
8
+ await Promise.race([
9
+ iterator.next(),
10
+ new Promise((_, reject) => setTimeout(() => reject(new Error("model probe timeout")), 15_000)),
11
+ ]);
12
+ if (typeof iterator.return === "function") {
13
+ await iterator.return().catch(() => { });
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=agentProbe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentProbe.js","sourceRoot":"","sources":["../../../../src/runtime/providers/shared/agentProbe.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACd,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAc;QAC5C,MAAM,WAAW,GAAG,KAKnB,CAAC;QACF,IAAI,OAAO,WAAW,EAAE,MAAM,KAAK,UAAU;YAAE,OAAO;QAEtD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CACrC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,EAAE,EAC5E,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAC7E,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,QAAQ,CAAC,IAAI,EAAE;YACf,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;SACtG,CAAC,CAAC;QACH,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare function requireModuleFromWorkspace<T = unknown>(rootDir: string, moduleName: string): T;
2
+ //# sourceMappingURL=moduleFallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moduleFallback.d.ts","sourceRoot":"","sources":["../../../../src/runtime/providers/shared/moduleFallback.ts"],"names":[],"mappings":"AAiBA,wBAAgB,0BAA0B,CAAC,CAAC,GAAG,OAAO,EACpD,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,CAAC,CAoBH"}
@@ -0,0 +1,34 @@
1
+ import { createRequire } from "node:module";
2
+ import { resolve } from "node:path";
3
+ const FALLBACK_PACKAGE_ROOTS = [
4
+ "..",
5
+ "../framework/kit",
6
+ "../agent-runtime",
7
+ "../kit",
8
+ "../apps/itermbot",
9
+ "../apps/imessagebot",
10
+ "../../framework/kit",
11
+ "../../agent-runtime",
12
+ "../../kit",
13
+ "../../apps/itermbot",
14
+ "../../apps/imessagebot",
15
+ ];
16
+ export function requireModuleFromWorkspace(rootDir, moduleName) {
17
+ const packageRoots = [
18
+ rootDir,
19
+ ...FALLBACK_PACKAGE_ROOTS.map((rel) => resolve(rootDir, rel)),
20
+ ];
21
+ let lastError;
22
+ for (const packageRoot of packageRoots) {
23
+ try {
24
+ const requireFromRoot = createRequire(resolve(packageRoot, "package.json"));
25
+ return requireFromRoot(moduleName);
26
+ }
27
+ catch (error) {
28
+ lastError = error;
29
+ }
30
+ }
31
+ throw new Error(`Cannot resolve module '${moduleName}' from roots: ${packageRoots.join(", ")}. ` +
32
+ `Last error: ${String(lastError)}`);
33
+ }
34
+ //# sourceMappingURL=moduleFallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moduleFallback.js","sourceRoot":"","sources":["../../../../src/runtime/providers/shared/moduleFallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,sBAAsB,GAAG;IAC7B,IAAI;IACJ,kBAAkB;IAClB,kBAAkB;IAClB,QAAQ;IACR,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,WAAW;IACX,qBAAqB;IACrB,wBAAwB;CAChB,CAAC;AAEX,MAAM,UAAU,0BAA0B,CACxC,OAAe,EACf,UAAkB;IAElB,MAAM,YAAY,GAAG;QACnB,OAAO;QACP,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KAC9D,CAAC;IAEF,IAAI,SAAkB,CAAC;IACvB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;YAC5E,OAAO,eAAe,CAAC,UAAU,CAAM,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,0BAA0B,UAAU,iBAAiB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAChF,eAAe,MAAM,CAAC,SAAS,CAAC,EAAE,CACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class ResourceCloser {
2
+ static closeAll(targets: unknown[]): Promise<void>;
3
+ private static tryCloseHandle;
4
+ private static withTimeout;
5
+ }
6
+ //# sourceMappingURL=resourceCloser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceCloser.d.ts","sourceRoot":"","sources":["../../../../src/runtime/providers/shared/resourceCloser.ts"],"names":[],"mappings":"AAGA,qBAAa,cAAc;WACL,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;mBAI1C,cAAc;mBAYd,WAAW;CASjC"}
@@ -0,0 +1,30 @@
1
+ const CLOSE_METHOD_ORDER = ["destroy", "dispose", "shutdown", "close"];
2
+ const CLOSE_TIMEOUT_MS = 1_500;
3
+ export class ResourceCloser {
4
+ static async closeAll(targets) {
5
+ await Promise.all(targets.map((target) => this.tryCloseHandle(target)));
6
+ }
7
+ static async tryCloseHandle(target) {
8
+ if (!target || typeof target !== "object")
9
+ return;
10
+ const closeLike = target;
11
+ for (const method of CLOSE_METHOD_ORDER) {
12
+ const fn = closeLike[method];
13
+ if (typeof fn === "function") {
14
+ await this.withTimeout(Promise.resolve(fn.call(target)), CLOSE_TIMEOUT_MS).catch(() => { });
15
+ return;
16
+ }
17
+ }
18
+ }
19
+ static async withTimeout(promise, timeoutMs) {
20
+ return Promise.race([
21
+ promise,
22
+ new Promise((resolve) => {
23
+ const timer = setTimeout(() => resolve(undefined), timeoutMs);
24
+ if (typeof timer.unref === "function")
25
+ timer.unref();
26
+ }),
27
+ ]);
28
+ }
29
+ }
30
+ //# sourceMappingURL=resourceCloser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceCloser.js","sourceRoot":"","sources":["../../../../src/runtime/providers/shared/resourceCloser.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAChF,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,MAAM,OAAO,cAAc;IAClB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAkB;QAC7C,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAe;QACjD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO;QAClD,MAAM,SAAS,GAAG,MAAiC,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC3F,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAI,OAAmB,EAAE,SAAiB;QACxE,OAAO,OAAO,CAAC,IAAI,CAAC;YAClB,OAAO;YACP,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE;gBACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC9D,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;oBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACvD,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,109 @@
1
+ import type { DrainAgentStreamResult } from "./stream/agentStream.js";
2
+ import { type AgentRuntimeRunOptions } from "./execution/agentRunExecutor.js";
3
+ import type { CreateAgentToolMiddlewareOptions } from "./middleware/index.js";
4
+ import type { AgentWorkspaceState, CreateAgentWorkspaceStateOptions } from "../state/workspaceState.js";
5
+ import type { AgentBackendConfig, OpenAILocalAgentService } from "./providers/index.js";
6
+ import { AgentRuntimeEventPublisher, type AgentEventBus, type AgentEventListener } from "./events/eventPublisher.js";
7
+ import type { ResolvedAgentRuntimeConfig } from "../config/index.js";
8
+ import type { HumanLoopService, HumanLoopToolPolicy } from "./human-loop/humanLoop.js";
9
+ export interface CreateAgentRuntimeOptions extends Omit<CreateAgentWorkspaceStateOptions, "todosLogger" | "events">, Omit<CreateAgentToolMiddlewareOptions, "persistTodos" | "createMiddleware" | "ToolMessage" | "rootDir" | "events"> {
10
+ eventBus?: AgentEventBus;
11
+ humanLoop?: HumanLoopService;
12
+ humanLoopToolPolicy?: HumanLoopToolPolicy;
13
+ configDir?: string;
14
+ systemPrompt?: string;
15
+ toolConfigPath?: string;
16
+ modelConfigPath?: string;
17
+ modelCheckConnectivity?: boolean;
18
+ model?: string;
19
+ temperature?: number;
20
+ maxTokens?: number;
21
+ backend?: AgentBackendConfig;
22
+ todosLogger?: CreateAgentWorkspaceStateOptions["todosLogger"];
23
+ runLogger?: (message: string) => void;
24
+ incompleteRunMaxRetries?: number;
25
+ emptyRunMaxRetries?: number;
26
+ malformedToolCallMaxRetries?: number;
27
+ idleTimeoutMaxRetries?: number;
28
+ heartbeatIntervalMs?: number;
29
+ idleTimeoutMs?: number;
30
+ artifactValidator?: (context: {
31
+ rootDir: string;
32
+ trackedArtifactFiles: string[];
33
+ requiredArtifactPaths: string[];
34
+ }) => boolean | Promise<boolean>;
35
+ }
36
+ export interface CreateAgentRuntimeFrameworkOptions extends CreateAgentRuntimeOptions {
37
+ memoryConfigPath?: string;
38
+ forceInitializeModules?: boolean;
39
+ }
40
+ export interface AgentRuntime {
41
+ events: AgentEventBus;
42
+ eventListener: AgentEventListener | undefined;
43
+ runtimeConfig: ResolvedAgentRuntimeConfig;
44
+ middleware: unknown;
45
+ workspace: AgentWorkspaceState;
46
+ agent: {
47
+ stream: (input: unknown, options: {
48
+ configurable: {
49
+ thread_id: string;
50
+ };
51
+ streamMode: "values";
52
+ }) => Promise<AsyncIterable<unknown>>;
53
+ };
54
+ prepareRun: AgentWorkspaceState["prepareRun"];
55
+ close(): Promise<void>;
56
+ runStream<TChunk>(params: {
57
+ prompt: string;
58
+ createStream: (context: {
59
+ input: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["input"];
60
+ config: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["config"];
61
+ }) => Promise<AsyncIterable<TChunk>> | AsyncIterable<TChunk>;
62
+ } & AgentRuntimeRunOptions<TChunk>): Promise<DrainAgentStreamResult<TChunk>>;
63
+ run(prompt: string, options?: AgentRuntimeRunOptions<unknown>): Promise<DrainAgentStreamResult<unknown>>;
64
+ }
65
+ export declare class AgentRuntimeService implements AgentRuntime {
66
+ readonly events: AgentEventBus;
67
+ readonly runtimeConfig: ResolvedAgentRuntimeConfig;
68
+ readonly middleware: unknown;
69
+ readonly workspace: AgentWorkspaceState;
70
+ readonly agent: AgentRuntime["agent"];
71
+ readonly prepareRun: AgentWorkspaceState["prepareRun"];
72
+ private readonly eventsPublisher;
73
+ private readonly runtimeAgent;
74
+ private readonly runExecutor;
75
+ private eventListenerUnsubscribe?;
76
+ private currentEventListener?;
77
+ constructor(params: {
78
+ rootDir: string;
79
+ runLogger: (message: string) => void;
80
+ events: AgentRuntimeEventPublisher;
81
+ runtimeConfig: ResolvedAgentRuntimeConfig;
82
+ middleware: unknown;
83
+ workspace: AgentWorkspaceState;
84
+ runtimeAgent: OpenAILocalAgentService;
85
+ defaultIncompleteRunMaxRetries?: number;
86
+ defaultEmptyRunMaxRetries?: number;
87
+ defaultMalformedToolCallMaxRetries?: number;
88
+ defaultIdleTimeoutMaxRetries?: number;
89
+ defaultHeartbeatIntervalMs?: number;
90
+ defaultIdleTimeoutMs?: number;
91
+ artifactValidator?: CreateAgentRuntimeOptions["artifactValidator"];
92
+ });
93
+ get eventListener(): AgentEventListener | undefined;
94
+ set eventListener(listener: AgentEventListener | undefined);
95
+ static create(options: CreateAgentRuntimeOptions): Promise<AgentRuntimeService>;
96
+ close(): Promise<void>;
97
+ runStream<TChunk>(params: {
98
+ prompt: string;
99
+ createStream: (context: {
100
+ input: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["input"];
101
+ config: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["config"];
102
+ }) => Promise<AsyncIterable<TChunk>> | AsyncIterable<TChunk>;
103
+ } & AgentRuntimeRunOptions<TChunk>): Promise<DrainAgentStreamResult<TChunk>>;
104
+ run(prompt: string, options?: AgentRuntimeRunOptions<unknown>): Promise<DrainAgentStreamResult<unknown>>;
105
+ }
106
+ export declare function initializeAgentRuntimeModules(options: CreateAgentRuntimeFrameworkOptions): Promise<void>;
107
+ export declare function createAgentRuntime2(options: CreateAgentRuntimeFrameworkOptions): Promise<AgentRuntimeService>;
108
+ export type { AgentRuntimeRunOptions } from "./execution/agentRunExecutor.js";
109
+ //# sourceMappingURL=runtimeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeService.d.ts","sourceRoot":"","sources":["../../src/runtime/runtimeService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { AgentRunExecutor, } from "./execution/agentRunExecutor.js";
2
+ import { AgentRuntimeFactory } from "./bootstrap/runtimeFactory.js";
3
+ import { AgentRuntimeModuleInitializer } from "./bootstrap/runtimeModuleInitializer.js";
4
+ export class AgentRuntimeService {
5
+ events;
6
+ runtimeConfig;
7
+ middleware;
8
+ workspace;
9
+ agent;
10
+ prepareRun;
11
+ eventsPublisher;
12
+ runtimeAgent;
13
+ runExecutor;
14
+ eventListenerUnsubscribe;
15
+ currentEventListener;
16
+ constructor(params) {
17
+ this.eventsPublisher = params.events;
18
+ this.events = params.events.bus;
19
+ this.runtimeConfig = params.runtimeConfig;
20
+ this.middleware = params.middleware;
21
+ this.workspace = params.workspace;
22
+ this.runtimeAgent = params.runtimeAgent;
23
+ this.agent = {
24
+ stream: (input, options) => {
25
+ const current = this.runtimeAgent.agent;
26
+ return current.stream(input, options);
27
+ },
28
+ };
29
+ this.prepareRun = params.workspace.prepareRun.bind(params.workspace);
30
+ this.runExecutor = new AgentRunExecutor({
31
+ rootDir: params.rootDir,
32
+ workspace: params.workspace,
33
+ events: params.events,
34
+ runLogger: params.runLogger,
35
+ defaultIncompleteRunMaxRetries: params.defaultIncompleteRunMaxRetries,
36
+ defaultEmptyRunMaxRetries: params.defaultEmptyRunMaxRetries,
37
+ defaultMalformedToolCallMaxRetries: params.defaultMalformedToolCallMaxRetries,
38
+ defaultIdleTimeoutMaxRetries: params.defaultIdleTimeoutMaxRetries,
39
+ defaultHeartbeatIntervalMs: params.defaultHeartbeatIntervalMs,
40
+ defaultIdleTimeoutMs: params.defaultIdleTimeoutMs,
41
+ artifactValidator: params.artifactValidator,
42
+ });
43
+ }
44
+ get eventListener() {
45
+ return this.currentEventListener;
46
+ }
47
+ set eventListener(listener) {
48
+ this.eventListenerUnsubscribe?.();
49
+ this.eventListenerUnsubscribe = undefined;
50
+ this.currentEventListener = listener;
51
+ if (listener) {
52
+ this.eventListenerUnsubscribe = this.events.subscribe(listener);
53
+ }
54
+ }
55
+ static async create(options) {
56
+ return AgentRuntimeFactory.create(options);
57
+ }
58
+ async close() {
59
+ this.eventListener = undefined;
60
+ this.eventsPublisher.emit({
61
+ name: "agent.runtime2.close.start",
62
+ from: "agent-runtime2.runtime",
63
+ to: "agent-runtime2.runtime",
64
+ });
65
+ await this.runtimeAgent.close();
66
+ this.eventsPublisher.emit({
67
+ name: "agent.runtime2.close.done",
68
+ from: "agent-runtime2.runtime",
69
+ to: "agent-runtime2.runtime",
70
+ });
71
+ }
72
+ runStream(params) {
73
+ return this.runExecutor.runStream(params);
74
+ }
75
+ run(prompt, options = {}) {
76
+ return this.runStream({
77
+ prompt,
78
+ ...options,
79
+ createStream: ({ input, config }) => this.agent.stream(input, { ...config, streamMode: "values" }),
80
+ });
81
+ }
82
+ }
83
+ export async function initializeAgentRuntimeModules(options) {
84
+ await AgentRuntimeModuleInitializer.initialize(options);
85
+ }
86
+ export async function createAgentRuntime2(options) {
87
+ await initializeAgentRuntimeModules(options);
88
+ return AgentRuntimeService.create(options);
89
+ }
90
+ //# sourceMappingURL=runtimeService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeService.js","sourceRoot":"","sources":["../../src/runtime/runtimeService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export interface AgentMessageLike extends Record<string, unknown> {
2
+ id?: unknown;
3
+ role?: unknown;
4
+ type?: unknown;
5
+ content?: unknown;
6
+ kwargs?: {
7
+ content?: unknown;
8
+ tool_calls?: Array<{
9
+ name?: string;
10
+ function?: {
11
+ name?: string;
12
+ arguments?: unknown;
13
+ };
14
+ args?: unknown;
15
+ }>;
16
+ };
17
+ tool_calls?: Array<{
18
+ name?: string;
19
+ function?: {
20
+ name?: string;
21
+ arguments?: unknown;
22
+ };
23
+ args?: unknown;
24
+ }>;
25
+ }
26
+ export interface SummarizeAgentChunkOptions {
27
+ emptyLabel?: string;
28
+ toolCallLabel?: string;
29
+ toolResultLabel?: string;
30
+ toolResultUnit?: string;
31
+ messageLabel?: string;
32
+ userLabel?: string;
33
+ fallbackLabel?: string;
34
+ textPreviewLength?: number;
35
+ }
36
+ export declare class AgentMessageService {
37
+ static getAgentMessages(chunk: unknown): AgentMessageLike[];
38
+ static summarizeAgentChunk(chunk: unknown, options?: SummarizeAgentChunkOptions): string | null;
39
+ }
40
+ //# sourceMappingURL=agentMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentMessages.d.ts","sourceRoot":"","sources":["../../../src/runtime/stream/agentMessages.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,SAAS,CAAC,EAAE,OAAO,CAAA;aAAE,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAC1G,CAAC;IACF,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC1G;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAaD,qBAAa,mBAAmB;WAChB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,EAAE;WAKpD,mBAAmB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,0BAA+B,GACvC,MAAM,GAAG,IAAI;CA0BjB"}
@@ -0,0 +1,44 @@
1
+ import { MessageSummary } from "./messageSummary.js";
2
+ const DEFAULT_SUMMARY_OPTIONS = {
3
+ emptyLabel: "Waiting...",
4
+ toolCallLabel: "Tool call",
5
+ toolResultLabel: "Tool result",
6
+ toolResultUnit: "chars",
7
+ messageLabel: "Message",
8
+ userLabel: "User message received",
9
+ fallbackLabel: "",
10
+ textPreviewLength: 60,
11
+ };
12
+ export class AgentMessageService {
13
+ static getAgentMessages(chunk) {
14
+ const state = chunk;
15
+ return (state?.messages ?? state?.state?.messages ?? []);
16
+ }
17
+ static summarizeAgentChunk(chunk, options = {}) {
18
+ const config = { ...DEFAULT_SUMMARY_OPTIONS, ...options };
19
+ const messages = AgentMessageService.getAgentMessages(chunk);
20
+ if (messages.length === 0)
21
+ return config.emptyLabel;
22
+ const last = messages[messages.length - 1];
23
+ const previous = messages.length > 1 ? messages[messages.length - 2] : undefined;
24
+ const kwargs = last?.kwargs;
25
+ const idStr = Array.isArray(last?.id) ? last.id.join(" ") : String(last?.id ?? "");
26
+ const toolCalls = (last?.tool_calls ?? kwargs?.tool_calls);
27
+ if (MessageSummary.looksLikeStartPrompt(last))
28
+ return "Started run";
29
+ if (Array.isArray(toolCalls) && toolCalls.length > 0) {
30
+ return MessageSummary.summarizeToolCall(toolCalls, config);
31
+ }
32
+ if (String(last?.role) === "user" || String(last?.role) === "human")
33
+ return "Started run";
34
+ const content = last?.content ?? kwargs?.content;
35
+ if (String(last?.type).includes("Tool") || String(last?.role) === "tool" || idStr.includes("ToolMessage")) {
36
+ return MessageSummary.summarizeToolResult(content, config);
37
+ }
38
+ if (typeof content === "string" && content.trim()) {
39
+ return MessageSummary.summarizeContextualMessage(content, previous);
40
+ }
41
+ return config.fallbackLabel || null;
42
+ }
43
+ }
44
+ //# sourceMappingURL=agentMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentMessages.js","sourceRoot":"","sources":["../../../src/runtime/stream/agentMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAyBrD,MAAM,uBAAuB,GAAyC;IACpE,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,WAAW;IAC1B,eAAe,EAAE,aAAa;IAC9B,cAAc,EAAE,OAAO;IACvB,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,uBAAuB;IAClC,aAAa,EAAE,EAAE;IACjB,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,MAAM,OAAO,mBAAmB;IACvB,MAAM,CAAC,gBAAgB,CAAC,KAAc;QAC3C,MAAM,KAAK,GAAG,KAAmE,CAAC;QAClF,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAuB,CAAC;IACjF,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAC/B,KAAc,EACd,UAAsC,EAAE;QAExC,MAAM,MAAM,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,OAAO,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,UAAU,CAAC;QAEpD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,MAAM,MAAM,GAAG,IAAI,EAAE,MAAgD,CAAC;QACtE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM,EAAE,UAAU,CAA+C,CAAC;QAEzG,IAAI,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAAE,OAAO,aAAa,CAAC;QACpE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,aAAa,CAAC;QAE1F,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,MAAM,EAAE,OAAO,CAAC;QACjD,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1G,OAAO,cAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClD,OAAO,cAAc,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ export interface AgentStreamSummaryEvent<TChunk> {
2
+ chunk: TChunk;
3
+ stepIndex: number;
4
+ elapsedMs: number;
5
+ summary: string;
6
+ }
7
+ export interface AgentStreamHeartbeatEvent {
8
+ elapsedMs: number;
9
+ }
10
+ export interface DrainAgentStreamOptions<TChunk> {
11
+ heartbeatIntervalMs?: number;
12
+ idleTimeoutMs?: number;
13
+ getNow?: () => number;
14
+ summarizeChunk?: (chunk: TChunk) => string | null | undefined;
15
+ onChunk?: (chunk: TChunk) => Promise<void> | void;
16
+ onSummary?: (event: AgentStreamSummaryEvent<TChunk>) => Promise<void> | void;
17
+ shouldStopOnSummary?: (event: AgentStreamSummaryEvent<TChunk>) => Promise<boolean> | boolean;
18
+ onHeartbeat?: (event: AgentStreamHeartbeatEvent) => Promise<void> | void;
19
+ shouldStop?: (chunk: TChunk) => Promise<boolean> | boolean;
20
+ }
21
+ export interface DrainAgentStreamResult<TChunk> {
22
+ lastChunk: TChunk | null;
23
+ lastSummary: string;
24
+ stepCount: number;
25
+ durationMs: number;
26
+ stoppedEarly: boolean;
27
+ }
28
+ export declare class AgentStreamService {
29
+ static drain<TChunk>(stream: AsyncIterable<TChunk>, options?: DrainAgentStreamOptions<TChunk>): Promise<DrainAgentStreamResult<TChunk>>;
30
+ }
31
+ //# sourceMappingURL=agentStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentStream.d.ts","sourceRoot":"","sources":["../../../src/runtime/stream/agentStream.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB,CAAC,MAAM;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB,CAAC,MAAM;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7E,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7F,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC5D;AAED,MAAM,WAAW,sBAAsB,CAAC,MAAM;IAC5C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,kBAAkB;WACT,KAAK,CAAC,MAAM,EAC9B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,OAAO,GAAE,uBAAuB,CAAC,MAAM,CAAM,GAC5C,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;CAwF3C"}
@@ -0,0 +1,106 @@
1
+ export class AgentStreamService {
2
+ static async drain(stream, options = {}) {
3
+ const { heartbeatIntervalMs = 5_000, idleTimeoutMs, getNow = () => Date.now(), summarizeChunk, onChunk, onSummary, shouldStopOnSummary, onHeartbeat, shouldStop, } = options;
4
+ const startedAt = getNow();
5
+ let lastChunk = null;
6
+ let lastSummary = "";
7
+ let stepCount = 0;
8
+ let lastChunkTime = startedAt;
9
+ let lastHeartbeatTime = startedAt;
10
+ let stoppedEarly = false;
11
+ let stopRequested = false;
12
+ const heartbeatInterval = onHeartbeat
13
+ ? setInterval(() => {
14
+ if (getNow() - lastHeartbeatTime >= heartbeatIntervalMs) {
15
+ void onHeartbeat({ elapsedMs: getNow() - startedAt });
16
+ lastHeartbeatTime = getNow();
17
+ }
18
+ }, heartbeatIntervalMs)
19
+ : null;
20
+ const iterator = stream[Symbol.asyncIterator]();
21
+ try {
22
+ while (true) {
23
+ const { value: chunk, done } = await nextWithIdleTimeout(iterator, idleTimeoutMs, getNow() - lastChunkTime);
24
+ if (done)
25
+ break;
26
+ lastChunk = chunk;
27
+ lastChunkTime = getNow();
28
+ lastHeartbeatTime = lastChunkTime;
29
+ await onChunk?.(chunk);
30
+ const summary = summarizeChunk?.(chunk);
31
+ if (summary && summary !== lastSummary) {
32
+ lastSummary = summary;
33
+ stepCount += 1;
34
+ const summaryEvent = {
35
+ chunk,
36
+ stepIndex: stepCount,
37
+ elapsedMs: getNow() - startedAt,
38
+ summary,
39
+ };
40
+ await onSummary?.(summaryEvent);
41
+ if (await shouldStopOnSummary?.(summaryEvent)) {
42
+ stoppedEarly = true;
43
+ stopRequested = true;
44
+ await returnIteratorWithTimeout(iterator, 1_500);
45
+ break;
46
+ }
47
+ }
48
+ if (await shouldStop?.(chunk)) {
49
+ stoppedEarly = true;
50
+ stopRequested = true;
51
+ await returnIteratorWithTimeout(iterator, 1_500);
52
+ break;
53
+ }
54
+ }
55
+ }
56
+ finally {
57
+ if (heartbeatInterval)
58
+ clearInterval(heartbeatInterval);
59
+ if (!stopRequested) {
60
+ await returnIteratorWithTimeout(iterator, 1_500);
61
+ }
62
+ }
63
+ return {
64
+ lastChunk,
65
+ lastSummary,
66
+ stepCount,
67
+ durationMs: getNow() - startedAt,
68
+ stoppedEarly,
69
+ };
70
+ }
71
+ }
72
+ async function returnIteratorWithTimeout(iterator, timeoutMs) {
73
+ if (typeof iterator.return !== "function") {
74
+ return;
75
+ }
76
+ await Promise.race([
77
+ iterator.return(),
78
+ new Promise((resolve) => setTimeout(resolve, timeoutMs)),
79
+ ]).catch(() => { });
80
+ }
81
+ async function nextWithIdleTimeout(iterator, idleTimeoutMs, elapsedSinceLastChunkMs) {
82
+ if (!idleTimeoutMs || idleTimeoutMs <= 0) {
83
+ return iterator.next();
84
+ }
85
+ const remainingMs = Math.max(1, idleTimeoutMs - elapsedSinceLastChunkMs);
86
+ let timer;
87
+ try {
88
+ return await Promise.race([
89
+ iterator.next(),
90
+ new Promise((_, reject) => {
91
+ timer = setTimeout(() => {
92
+ reject(new Error(`Agent stream idle timeout after ${idleTimeoutMs}ms without new output`));
93
+ }, remainingMs);
94
+ if (timer && typeof timer.unref === "function") {
95
+ timer.unref();
96
+ }
97
+ }),
98
+ ]);
99
+ }
100
+ finally {
101
+ if (timer) {
102
+ clearTimeout(timer);
103
+ }
104
+ }
105
+ }
106
+ //# sourceMappingURL=agentStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentStream.js","sourceRoot":"","sources":["../../../src/runtime/stream/agentStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AgentMessageLike, SummarizeAgentChunkOptions } from "./agentMessages.js";
2
+ export declare class MessageSummary {
3
+ static looksLikeStartPrompt(message: AgentMessageLike | undefined): boolean;
4
+ static summarizeToolCall(toolCalls: NonNullable<AgentMessageLike["tool_calls"]>, config: Required<SummarizeAgentChunkOptions>): string | null;
5
+ static summarizeToolResult(content: unknown, config: Required<SummarizeAgentChunkOptions>): string | null;
6
+ static summarizeContextualMessage(content: string, previous: AgentMessageLike | undefined): string | null;
7
+ private static describeToolCall;
8
+ private static normalizeToolCallArgs;
9
+ private static sanitizePreview;
10
+ private static humanizeToolName;
11
+ private static extractQuotedPath;
12
+ private static truncateText;
13
+ private static formatPath;
14
+ private static looksLikeFileListing;
15
+ private static looksLikeInternalPlanning;
16
+ private static looksLikeSkillFrontMatter;
17
+ private static isToolMessage;
18
+ private static looksLikeFileDump;
19
+ }
20
+ //# sourceMappingURL=messageSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageSummary.d.ts","sourceRoot":"","sources":["../../../src/runtime/stream/messageSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEvF,qBAAa,cAAc;WACX,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO;WAQpE,iBAAiB,CAC7B,SAAS,EAAE,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EACtD,MAAM,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC3C,MAAM,GAAG,IAAI;WAUF,mBAAmB,CAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC3C,MAAM,GAAG,IAAI;WAoBF,0BAA0B,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GACrC,MAAM,GAAG,IAAI;IAoBhB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqBpC,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAW/B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAKhC,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAInC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAIxC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAIxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAM5B,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAGjC"}