@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,46 @@
1
+ import { AgentMessageService } from "../stream/agentMessages.js";
2
+ import { RunCompletionPolicy } from "./policies/runCompletionPolicy.js";
3
+ import { RunSummaryFormatter } from "./policies/runSummaryFormatter.js";
4
+ export class AgentRunProgress {
5
+ static shouldStopForSummary(context, summary, chunk, areTrackedArtifactsReady) {
6
+ return Promise.resolve(areTrackedArtifactsReady(context.trackedArtifactFiles)).then((artifactsReady) => {
7
+ if (context.trackedArtifactFiles.length > 0) {
8
+ return artifactsReady && !RunCompletionPolicy.isToolCallSummary(summary);
9
+ }
10
+ return artifactsReady &&
11
+ !RunCompletionPolicy.isToolCallSummary(summary) &&
12
+ RunCompletionPolicy.hasAssistantFinalMessage(chunk);
13
+ });
14
+ }
15
+ static shouldStopForChunk(context, params, chunk, areTrackedArtifactsReady) {
16
+ const summary = (params.summarizeChunk ?? AgentMessageService.summarizeAgentChunk)(chunk);
17
+ if (typeof summary !== "string")
18
+ return Promise.resolve(false);
19
+ return Promise.resolve(areTrackedArtifactsReady(context.trackedArtifactFiles)).then((artifactsReady) => {
20
+ if (context.trackedArtifactFiles.length > 0) {
21
+ return artifactsReady && !RunCompletionPolicy.isToolCallSummary(summary);
22
+ }
23
+ return artifactsReady &&
24
+ !RunCompletionPolicy.isToolCallSummary(summary) &&
25
+ RunCompletionPolicy.hasAssistantFinalMessage(chunk);
26
+ });
27
+ }
28
+ static logRunSummary(context, summary, elapsedMs, runLogger) {
29
+ if (summary.startsWith("Tool call:")) {
30
+ if (context.pendingToolCall) {
31
+ runLogger(RunSummaryFormatter.formatRunStep(context.pendingToolCall.summary, context.pendingToolCall.elapsedMs));
32
+ }
33
+ context.pendingToolCall = { summary, elapsedMs };
34
+ return;
35
+ }
36
+ if (summary === context.lastLoggedSummary)
37
+ return;
38
+ const formatted = context.pendingToolCall
39
+ ? RunSummaryFormatter.formatMergedRunStep(context.pendingToolCall.summary, summary, elapsedMs)
40
+ : RunSummaryFormatter.formatRunStep(summary, elapsedMs);
41
+ runLogger(formatted);
42
+ context.pendingToolCall = undefined;
43
+ context.lastLoggedSummary = summary;
44
+ }
45
+ }
46
+ //# sourceMappingURL=agentRunProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentRunProgress.js","sourceRoot":"","sources":["../../../src/runtime/execution/agentRunProgress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAIxE,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAC,oBAAoB,CAChC,OAAiC,EACjC,OAAe,EACf,KAAa,EACb,wBAAwF;QAExF,OAAO,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;YACvG,IAAI,OAAO,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,cAAc,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,cAAc;gBACnB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/C,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,OAAiC,EACjC,MAAsC,EACtC,KAAa,EACb,wBAAwF;QAExF,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1F,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;YACrG,IAAI,OAAO,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,cAAc,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,cAAc;gBACnB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/C,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,OAAiC,EACjC,OAAe,EACf,SAAiB,EACjB,SAAoC;QAEpC,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,SAAS,CAAC,mBAAmB,CAAC,aAAa,CACzC,OAAO,CAAC,eAAe,CAAC,OAAO,EAC/B,OAAO,CAAC,eAAe,CAAC,SAAS,CAClC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,eAAe,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,KAAK,OAAO,CAAC,iBAAiB;YAAE,OAAO;QAElD,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe;YACvC,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;YAC9F,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;QACpC,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,44 @@
1
+ import type { AgentWorkspaceState } from "../../state/workspaceState.js";
2
+ export interface PendingToolCall {
3
+ summary: string;
4
+ elapsedMs: number;
5
+ }
6
+ export interface RetryState {
7
+ malformedRetryCount: number;
8
+ incompleteRetryCount: number;
9
+ emptyRetryCount: number;
10
+ idleTimeoutRetryCount: number;
11
+ transientModelRetryCount: number;
12
+ malformedToolCallMaxRetries: number;
13
+ incompleteRunMaxRetries: number;
14
+ emptyRunMaxRetries: number;
15
+ idleTimeoutMaxRetries: number;
16
+ transientModelMaxRetries: number;
17
+ }
18
+ export interface ExecutionContext<TChunk> {
19
+ run: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>;
20
+ effectivePrompt: string;
21
+ trackedArtifactFiles: string[];
22
+ trackedPaths: string[];
23
+ requiredArtifactPaths: string[];
24
+ runInput: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["input"];
25
+ runConfig: Awaited<ReturnType<AgentWorkspaceState["prepareRun"]>>["config"];
26
+ pendingToolCall: PendingToolCall | undefined;
27
+ lastLoggedSummary: string;
28
+ lastStepCount: number;
29
+ lastSummary: string;
30
+ }
31
+ export declare class AgentRunStateFactory {
32
+ static createRetryState(hasTrackedArtifacts: boolean, params: {
33
+ malformedToolCallMaxRetries?: number;
34
+ incompleteRunMaxRetries?: number;
35
+ emptyRunMaxRetries?: number;
36
+ idleTimeoutMaxRetries?: number;
37
+ }, defaults: {
38
+ incompleteRunMaxRetries?: number;
39
+ emptyRunMaxRetries?: number;
40
+ malformedToolCallMaxRetries?: number;
41
+ idleTimeoutMaxRetries?: number;
42
+ }): RetryState;
43
+ }
44
+ //# sourceMappingURL=agentRunState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentRunState.d.ts","sourceRoot":"","sources":["../../../src/runtime/execution/agentRunState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB,CAAC,MAAM;IACtC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5D,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1E,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5E,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,oBAAoB;WACjB,gBAAgB,CAC5B,mBAAmB,EAAE,OAAO,EAC5B,MAAM,EAAE;QACN,2BAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,EACD,QAAQ,EAAE;QACR,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,GACA,UAAU;CAiBd"}
@@ -0,0 +1,17 @@
1
+ export class AgentRunStateFactory {
2
+ static createRetryState(hasTrackedArtifacts, params, defaults) {
3
+ return {
4
+ malformedRetryCount: 0,
5
+ incompleteRetryCount: 0,
6
+ emptyRetryCount: 0,
7
+ idleTimeoutRetryCount: 0,
8
+ transientModelRetryCount: 0,
9
+ malformedToolCallMaxRetries: params.malformedToolCallMaxRetries ?? defaults.malformedToolCallMaxRetries ?? 2,
10
+ incompleteRunMaxRetries: params.incompleteRunMaxRetries ?? defaults.incompleteRunMaxRetries ?? (hasTrackedArtifacts ? 2 : 0),
11
+ emptyRunMaxRetries: params.emptyRunMaxRetries ?? defaults.emptyRunMaxRetries ?? 2,
12
+ idleTimeoutMaxRetries: params.idleTimeoutMaxRetries ?? defaults.idleTimeoutMaxRetries ?? 1,
13
+ transientModelMaxRetries: Number(process.env.LLM_TRANSIENT_RETRIES) >= 0 ? Number(process.env.LLM_TRANSIENT_RETRIES) : 0,
14
+ };
15
+ }
16
+ }
17
+ //# sourceMappingURL=agentRunState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentRunState.js","sourceRoot":"","sources":["../../../src/runtime/execution/agentRunState.ts"],"names":[],"mappings":"AAiCA,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAC,gBAAgB,CAC5B,mBAA4B,EAC5B,MAKC,EACD,QAKC;QAED,OAAO;YACL,mBAAmB,EAAE,CAAC;YACtB,oBAAoB,EAAE,CAAC;YACvB,eAAe,EAAE,CAAC;YAClB,qBAAqB,EAAE,CAAC;YACxB,wBAAwB,EAAE,CAAC;YAC3B,2BAA2B,EACzB,MAAM,CAAC,2BAA2B,IAAI,QAAQ,CAAC,2BAA2B,IAAI,CAAC;YACjF,uBAAuB,EACrB,MAAM,CAAC,uBAAuB,IAAI,QAAQ,CAAC,uBAAuB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrG,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,QAAQ,CAAC,kBAAkB,IAAI,CAAC;YACjF,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,QAAQ,CAAC,qBAAqB,IAAI,CAAC;YAC1F,wBAAwB,EACtB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;SACjG,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export declare class RunCompletionPolicy {
2
+ static isToolCallSummary(summary: string): boolean;
3
+ static hasAssistantFinalMessage(chunk: unknown): boolean;
4
+ }
5
+ //# sourceMappingURL=runCompletionPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runCompletionPolicy.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runCompletionPolicy.ts"],"names":[],"mappings":"AAEA,qBAAa,mBAAmB;WAChB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;WAI3C,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAsBhE"}
@@ -0,0 +1,30 @@
1
+ import { AgentMessageService } from "../../stream/agentMessages.js";
2
+ export class RunCompletionPolicy {
3
+ static isToolCallSummary(summary) {
4
+ return summary.startsWith("Tool call:");
5
+ }
6
+ static hasAssistantFinalMessage(chunk) {
7
+ if (!chunk)
8
+ return false;
9
+ const messages = AgentMessageService.getAgentMessages(chunk);
10
+ const last = messages.length > 0 ? messages[messages.length - 1] : undefined;
11
+ if (!last)
12
+ return false;
13
+ const role = String(last.role ?? "").toLowerCase();
14
+ const type = String(last.type ?? "").toLowerCase();
15
+ const kwargs = (last.kwargs ?? {});
16
+ const hasToolCalls = Array.isArray(last.tool_calls) && last.tool_calls.length > 0 ||
17
+ Array.isArray(kwargs.tool_calls) && kwargs.tool_calls.length > 0;
18
+ if (hasToolCalls)
19
+ return false;
20
+ const content = typeof last.content === "string"
21
+ ? last.content
22
+ : typeof kwargs.content === "string"
23
+ ? kwargs.content
24
+ : "";
25
+ if (!content.trim())
26
+ return false;
27
+ return role === "assistant" || role === "ai" || type.includes("ai");
28
+ }
29
+ }
30
+ //# sourceMappingURL=runCompletionPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runCompletionPolicy.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runCompletionPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,OAAO,mBAAmB;IACvB,MAAM,CAAC,iBAAiB,CAAC,OAAe;QAC7C,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,KAAc;QACnD,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAgD,CAAC;QAClF,MAAM,YAAY,GAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC5D,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,IAAI,YAAY;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;gBAClC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QAClC,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export declare class RunErrorPolicy {
2
+ static isIdleTimeoutError(error: unknown): boolean;
3
+ static isTransientModelError(error: unknown): boolean;
4
+ static isRecoverableToolCallError(error: unknown): boolean;
5
+ static createTransientModelError(error: unknown): Error;
6
+ }
7
+ //# sourceMappingURL=runErrorPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runErrorPolicy.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runErrorPolicy.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;WACX,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;WAK3C,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;WAa9C,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;WAuBnD,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK;CAO/D"}
@@ -0,0 +1,40 @@
1
+ export class RunErrorPolicy {
2
+ static isIdleTimeoutError(error) {
3
+ const message = error instanceof Error ? error.message : String(error ?? "");
4
+ return message.includes("Agent stream idle timeout");
5
+ }
6
+ static isTransientModelError(error) {
7
+ const message = error instanceof Error ? error.message : String(error ?? "");
8
+ const normalized = message.toLowerCase();
9
+ return (normalized.includes("middlewareerror: 502") ||
10
+ normalized.includes("middlewareerror: 503") ||
11
+ normalized.includes("middlewareerror: 504") ||
12
+ normalized.includes("bad gateway") ||
13
+ normalized.includes("gateway timeout") ||
14
+ normalized.includes("<!doctype html>"));
15
+ }
16
+ static isRecoverableToolCallError(error) {
17
+ const seen = new Set();
18
+ let current = error;
19
+ while (current && typeof current === "object" && !seen.has(current)) {
20
+ seen.add(current);
21
+ const message = String(current.message ?? "").toLowerCase();
22
+ if (message.includes("error parsing tool call") ||
23
+ message.includes("invalid character") ||
24
+ message.includes("did not match expected schema") ||
25
+ message.includes("invalid input") ||
26
+ message.includes("error invoking tool") ||
27
+ message.includes("tool input")) {
28
+ return true;
29
+ }
30
+ current = current.cause;
31
+ }
32
+ return false;
33
+ }
34
+ static createTransientModelError(error) {
35
+ return new Error(`Model request failed with a transient upstream error. ` +
36
+ `Try reducing runtime config pressure (llmMaxTokens=1024, model timeout in config/model.yaml options.timeoutMs=60000) ` +
37
+ `and verify endpoint with scripts/verify-llm.sh. Original error: ${String(error)}`);
38
+ }
39
+ }
40
+ //# sourceMappingURL=runErrorPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runErrorPolicy.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runErrorPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAClB,MAAM,CAAC,kBAAkB,CAAC,KAAc;QAC7C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7E,OAAO,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,KAAc;QAChD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,CACL,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC3C,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC3C,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC3C,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;YAClC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACtC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CACvC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,KAAc;QACrD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;QAChC,IAAI,OAAO,GAAY,KAAK,CAAC;QAE7B,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,MAAM,OAAO,GAAG,MAAM,CAAE,OAAiC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACvF,IACE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;gBAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACrC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC;gBACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBACjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,KAAc;QACpD,OAAO,IAAI,KAAK,CACd,wDAAwD;YACtD,uHAAuH;YACvH,mEAAmE,MAAM,CAAC,KAAK,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ export declare class RunPromptBuilder {
2
+ static buildExecutionPrompt(prompt: string): string;
3
+ static buildIncompleteRetryPrompt(params: {
4
+ prompt: string;
5
+ trackedPaths: string[];
6
+ requiredArtifactPaths: string[];
7
+ lastSummary: string;
8
+ }): string;
9
+ }
10
+ //# sourceMappingURL=runPromptBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runPromptBuilder.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runPromptBuilder.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;WACb,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;WAe5C,0BAA0B,CAAC,MAAM,EAAE;QAC/C,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,MAAM;CAiBX"}
@@ -0,0 +1,34 @@
1
+ export class RunPromptBuilder {
2
+ static buildExecutionPrompt(prompt) {
3
+ const guardrails = [
4
+ "Tool-call rules:",
5
+ '- Return strict JSON for tool args (example: {"offset":0}, never "offset=0").',
6
+ "- Use workspace-relative paths only; never construct absolute filesystem paths.",
7
+ "- Framework supports both tool calls and script commands; follow the SKILL whitelist per step.",
8
+ "- If a skill allows both tool and script for one step, prefer the tool path unless user asks for script.",
9
+ "- Do not inspect script source files unless the user explicitly asks for script code.",
10
+ "- Avoid redundant exploratory calls; use the shortest valid workflow.",
11
+ "- Complete the task in one uninterrupted run whenever possible; do not stop after intermediate reads or planning.",
12
+ "- If required output artifacts are missing, continue executing tool steps until they are written and validated.",
13
+ ].join("\n");
14
+ return `${prompt}\n\n${guardrails}`;
15
+ }
16
+ static buildIncompleteRetryPrompt(params) {
17
+ const missingOutputs = params.requiredArtifactPaths.length > 0
18
+ ? params.requiredArtifactPaths.join(", ")
19
+ : "(none)";
20
+ const previousSummary = params.lastSummary?.trim() || "n/a";
21
+ return [
22
+ "The previous run ended before completion.",
23
+ `Last summary: ${previousSummary}.`,
24
+ "Continue in the current thread and do not restart from scratch.",
25
+ `Missing required outputs (write these first): ${missingOutputs}.`,
26
+ `Tracked state paths: ${params.trackedPaths.join(", ")}.`,
27
+ "After generating missing outputs, perform required validation and provide the final response.",
28
+ "",
29
+ "Original task:",
30
+ params.prompt,
31
+ ].join("\n");
32
+ }
33
+ }
34
+ //# sourceMappingURL=runPromptBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runPromptBuilder.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runPromptBuilder.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAC,oBAAoB,CAAC,MAAc;QAC/C,MAAM,UAAU,GAAG;YACjB,kBAAkB;YAClB,+EAA+E;YAC/E,iFAAiF;YACjF,gGAAgG;YAChG,0GAA0G;YAC1G,uFAAuF;YACvF,uEAAuE;YACvE,mHAAmH;YACnH,iHAAiH;SAClH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,OAAO,GAAG,MAAM,OAAO,UAAU,EAAE,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,MAKxC;QACC,MAAM,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAC5D,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC;QAC5D,OAAO;YACL,2CAA2C;YAC3C,iBAAiB,eAAe,GAAG;YACnC,iEAAiE;YACjE,iDAAiD,cAAc,GAAG;YAClE,wBAAwB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACzD,+FAA+F;YAC/F,EAAE;YACF,gBAAgB;YAChB,MAAM,CAAC,MAAM;SACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export declare class RunSummaryFormatter {
2
+ static formatRunStep(summary: string, elapsedMs: number): string;
3
+ static formatMergedRunStep(toolSummary: string, resultSummary: string, resultElapsedMs: number): string;
4
+ private static classifyRunSummary;
5
+ }
6
+ //# sourceMappingURL=runSummaryFormatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runSummaryFormatter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runSummaryFormatter.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAmB;WAChB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;WAKzD,mBAAmB,CAC/B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,GACtB,MAAM;IAMT,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAwClC"}
@@ -0,0 +1,47 @@
1
+ export class RunSummaryFormatter {
2
+ static formatRunStep(summary, elapsedMs) {
3
+ const { indent, marker, text } = this.classifyRunSummary(summary);
4
+ return `${" ".repeat(indent)}${marker} ${text} (${(elapsedMs / 1000).toFixed(1)}s)`;
5
+ }
6
+ static formatMergedRunStep(toolSummary, resultSummary, resultElapsedMs) {
7
+ const toolText = toolSummary.replace(/^Tool call:\s*/, "");
8
+ const { text } = this.classifyRunSummary(resultSummary);
9
+ return `- ${toolText} -> ${text} (${(resultElapsedMs / 1000).toFixed(1)}s)`;
10
+ }
11
+ static classifyRunSummary(summary) {
12
+ if (summary.startsWith("Tool call:")) {
13
+ return {
14
+ indent: 2,
15
+ marker: "-",
16
+ text: summary.replace(/^Tool call:\s*/, ""),
17
+ };
18
+ }
19
+ if (summary.startsWith("Saved file") ||
20
+ summary.startsWith("Command ") ||
21
+ summary.startsWith("Checked workspace files") ||
22
+ summary.startsWith("Rate limited") ||
23
+ summary === "Command returned a usage error" ||
24
+ summary === "Loaded instructions" ||
25
+ summary === "Reviewed generated content" ||
26
+ summary === "Command completed") {
27
+ return {
28
+ indent: 6,
29
+ marker: ">",
30
+ text: summary,
31
+ };
32
+ }
33
+ if (summary === "Run completed") {
34
+ return {
35
+ indent: 0,
36
+ marker: "done",
37
+ text: summary,
38
+ };
39
+ }
40
+ return {
41
+ indent: 0,
42
+ marker: "*",
43
+ text: summary.replace(/^Message:\s*/, ""),
44
+ };
45
+ }
46
+ }
47
+ //# sourceMappingURL=runSummaryFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runSummaryFormatter.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runSummaryFormatter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAmB;IACvB,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,SAAiB;QAC5D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAC/B,WAAmB,EACnB,aAAqB,EACrB,eAAuB;QAEvB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxD,OAAO,KAAK,QAAQ,OAAO,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,OAAe;QAC/C,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAED,IACE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;YAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;YAC9B,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAC7C,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YAClC,OAAO,KAAK,gCAAgC;YAC5C,OAAO,KAAK,qBAAqB;YACjC,OAAO,KAAK,4BAA4B;YACxC,OAAO,KAAK,mBAAmB,EAC/B,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export declare class RuntimeDelay {
2
+ static wait(ms: number): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=runtimeDelay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeDelay.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runtimeDelay.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;WACT,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9C"}
@@ -0,0 +1,6 @@
1
+ export class RuntimeDelay {
2
+ static wait(ms) {
3
+ return new Promise((resolve) => setTimeout(resolve, ms));
4
+ }
5
+ }
6
+ //# sourceMappingURL=runtimeDelay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeDelay.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/runtimeDelay.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAChB,MAAM,CAAC,IAAI,CAAC,EAAU;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export declare class ToolConfigReader {
2
+ static readAllowedToolNames(toolConfigPath: string): string[] | undefined;
3
+ private static collectDeepagentsNames;
4
+ private static collectCustomizedNames;
5
+ private static addStringItems;
6
+ private static addObjectKeys;
7
+ }
8
+ //# sourceMappingURL=toolConfigReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolConfigReader.d.ts","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/toolConfigReader.ts"],"names":[],"mappings":"AAGA,qBAAa,gBAAgB;WACb,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IA6BhF,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA4BrC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA0BrC,OAAO,CAAC,MAAM,CAAC,cAAc;IAQ7B,OAAO,CAAC,MAAM,CAAC,aAAa;CAW7B"}
@@ -0,0 +1,91 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { parseYamlContent } from "@botbotgo/common/config";
3
+ export class ToolConfigReader {
4
+ static readAllowedToolNames(toolConfigPath) {
5
+ if (!existsSync(toolConfigPath)) {
6
+ return undefined;
7
+ }
8
+ const raw = readFileSync(toolConfigPath, "utf8");
9
+ const parsed = parseYamlContent(raw, {
10
+ substituteEnv: false,
11
+ });
12
+ if (!parsed || typeof parsed !== "object") {
13
+ return undefined;
14
+ }
15
+ const source = parsed.spec && typeof parsed.spec === "object" && !Array.isArray(parsed.spec)
16
+ ? parsed.spec
17
+ : parsed;
18
+ const toolsNode = source.tools && typeof source.tools === "object" && !Array.isArray(source.tools)
19
+ ? source.tools
20
+ : undefined;
21
+ const deepagents = toolsNode?.deepagents;
22
+ const legacyDeepagents = source.deepagents && typeof source.deepagents === "object" && !Array.isArray(source.deepagents)
23
+ ? source.deepagents
24
+ : undefined;
25
+ const names = new Set();
26
+ this.collectDeepagentsNames(names, deepagents, legacyDeepagents, source);
27
+ this.collectCustomizedNames(names, toolsNode);
28
+ return names.size > 0 ? [...names] : undefined;
29
+ }
30
+ static collectDeepagentsNames(names, deepagents, legacyDeepagents, source) {
31
+ if (Array.isArray(deepagents)) {
32
+ this.addStringItems(names, deepagents);
33
+ return;
34
+ }
35
+ if (deepagents &&
36
+ typeof deepagents === "object" &&
37
+ !Array.isArray(deepagents) &&
38
+ Array.isArray(deepagents.tools)) {
39
+ this.addStringItems(names, deepagents.tools);
40
+ return;
41
+ }
42
+ if (Array.isArray(legacyDeepagents?.tools)) {
43
+ this.addStringItems(names, legacyDeepagents.tools);
44
+ return;
45
+ }
46
+ if (Array.isArray(source.allowedToolNames)) {
47
+ this.addStringItems(names, source.allowedToolNames);
48
+ }
49
+ }
50
+ static collectCustomizedNames(names, toolsNode) {
51
+ const customized = toolsNode?.customized;
52
+ if (customized && typeof customized === "object" && !Array.isArray(customized)) {
53
+ const source = customized;
54
+ const descriptorGrouped = Object.keys(source).some((key) => /^(npm|file):/.test(key));
55
+ if (descriptorGrouped) {
56
+ for (const sourceValue of Object.values(source)) {
57
+ this.addObjectKeys(names, sourceValue);
58
+ }
59
+ }
60
+ else {
61
+ this.addObjectKeys(names, source);
62
+ }
63
+ return;
64
+ }
65
+ if (!toolsNode) {
66
+ return;
67
+ }
68
+ for (const sourceValue of Object.values(toolsNode)) {
69
+ this.addObjectKeys(names, sourceValue);
70
+ }
71
+ }
72
+ static addStringItems(names, items) {
73
+ for (const item of items) {
74
+ if (typeof item === "string" && item.trim().length > 0) {
75
+ names.add(item.trim());
76
+ }
77
+ }
78
+ }
79
+ static addObjectKeys(names, sourceValue) {
80
+ if (!sourceValue || typeof sourceValue !== "object" || Array.isArray(sourceValue)) {
81
+ return;
82
+ }
83
+ for (const toolName of Object.keys(sourceValue)) {
84
+ const trimmed = toolName.trim();
85
+ if (trimmed.length > 0) {
86
+ names.add(trimmed);
87
+ }
88
+ }
89
+ }
90
+ }
91
+ //# sourceMappingURL=toolConfigReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolConfigReader.js","sourceRoot":"","sources":["../../../../src/runtime/execution/policies/toolConfigReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { HumanLoopDecision, HumanLoopRequest, HumanLoopService } from "./humanLoop.js";
2
+ export interface ConsoleHumanLoopServiceOptions {
3
+ input?: NodeJS.ReadableStream;
4
+ output?: NodeJS.WritableStream;
5
+ prompt?: (question: string) => Promise<string>;
6
+ writer?: (line: string) => void;
7
+ }
8
+ export declare class ConsoleHumanLoopService implements HumanLoopService {
9
+ private readonly input;
10
+ private readonly output;
11
+ private readonly promptOverride?;
12
+ private readonly writer;
13
+ constructor(options?: ConsoleHumanLoopServiceOptions);
14
+ request(request: HumanLoopRequest): Promise<HumanLoopDecision>;
15
+ private printRequest;
16
+ private askAction;
17
+ private askRevisedArgs;
18
+ private askOptional;
19
+ private ask;
20
+ }
21
+ //# sourceMappingURL=consoleHumanLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleHumanLoop.d.ts","sourceRoot":"","sources":["../../../src/runtime/human-loop/consoleHumanLoop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5F,MAAM,WAAW,8BAA8B;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAA2C;IAC3E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAE7B,OAAO,GAAE,8BAAmC;IASlD,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0B3E,OAAO,CAAC,YAAY;YAaN,SAAS;YAUT,cAAc;YAkBd,WAAW;YAIX,GAAG;CAelB"}
@@ -0,0 +1,102 @@
1
+ import * as readline from "node:readline/promises";
2
+ import { stdin as defaultInput, stdout as defaultOutput } from "node:process";
3
+ export class ConsoleHumanLoopService {
4
+ input;
5
+ output;
6
+ promptOverride;
7
+ writer;
8
+ constructor(options = {}) {
9
+ this.input = options.input ?? defaultInput;
10
+ this.output = options.output ?? defaultOutput;
11
+ this.promptOverride = options.prompt;
12
+ this.writer = options.writer ?? ((line) => {
13
+ this.output.write(`${line}\n`);
14
+ });
15
+ }
16
+ async request(request) {
17
+ this.printRequest(request);
18
+ const action = await this.askAction();
19
+ if (action === "approve") {
20
+ return { action, decidedAt: new Date().toISOString() };
21
+ }
22
+ if (action === "reject") {
23
+ const message = await this.askOptional("Rejection message (optional): ");
24
+ return {
25
+ action,
26
+ message: message || `Rejected in console for tool ${request.toolName}.`,
27
+ decidedAt: new Date().toISOString(),
28
+ };
29
+ }
30
+ const revisedArgs = await this.askRevisedArgs(request);
31
+ const message = await this.askOptional("Revision note (optional): ");
32
+ return {
33
+ action: "revise",
34
+ revisedArgs,
35
+ message: message || "Args revised in console.",
36
+ decidedAt: new Date().toISOString(),
37
+ };
38
+ }
39
+ printRequest(request) {
40
+ this.writer("");
41
+ this.writer(`[human-loop] ${request.title}`);
42
+ this.writer(`kind: ${request.kind}`);
43
+ this.writer(`tool: ${request.toolName}`);
44
+ if (request.threadId)
45
+ this.writer(`thread: ${request.threadId}`);
46
+ if (request.riskLevel)
47
+ this.writer(`risk: ${request.riskLevel}`);
48
+ this.writer(request.description);
49
+ this.writer("args:");
50
+ this.writer(JSON.stringify(request.args, null, 2));
51
+ this.writer("");
52
+ }
53
+ async askAction() {
54
+ while (true) {
55
+ const answer = (await this.ask("Approve, reject, or revise? [a/r/e]: ")).trim().toLowerCase();
56
+ if (answer === "a" || answer === "approve")
57
+ return "approve";
58
+ if (answer === "r" || answer === "reject")
59
+ return "reject";
60
+ if (answer === "e" || answer === "edit" || answer === "revise")
61
+ return "revise";
62
+ this.writer("Please enter a, r, or e.");
63
+ }
64
+ }
65
+ async askRevisedArgs(request) {
66
+ this.writer("Enter revised args as one-line JSON.");
67
+ this.writer(`Current args: ${JSON.stringify(request.args)}`);
68
+ while (true) {
69
+ const answer = (await this.ask("revised args JSON: ")).trim();
70
+ try {
71
+ const parsed = JSON.parse(answer);
72
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
73
+ this.writer("Expected a JSON object.");
74
+ continue;
75
+ }
76
+ return parsed;
77
+ }
78
+ catch {
79
+ this.writer("Invalid JSON. Try again.");
80
+ }
81
+ }
82
+ }
83
+ async askOptional(question) {
84
+ return (await this.ask(question)).trim();
85
+ }
86
+ async ask(question) {
87
+ if (this.promptOverride) {
88
+ return this.promptOverride(question);
89
+ }
90
+ const rl = readline.createInterface({
91
+ input: this.input,
92
+ output: this.output,
93
+ });
94
+ try {
95
+ return await rl.question(question);
96
+ }
97
+ finally {
98
+ rl.close();
99
+ }
100
+ }
101
+ }
102
+ //# sourceMappingURL=consoleHumanLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleHumanLoop.js","sourceRoot":"","sources":["../../../src/runtime/human-loop/consoleHumanLoop.ts"],"names":[],"mappings":"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"}