@a5c-ai/genty-platform 5.1.1-staging.583e3d9a6ed7

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 (563) hide show
  1. package/README.md +48 -0
  2. package/dist/anycli/cache.d.ts +45 -0
  3. package/dist/anycli/cache.d.ts.map +1 -0
  4. package/dist/anycli/cache.js +118 -0
  5. package/dist/anycli/index.d.ts +10 -0
  6. package/dist/anycli/index.d.ts.map +1 -0
  7. package/dist/anycli/index.js +25 -0
  8. package/dist/anycli/types.d.ts +32 -0
  9. package/dist/anycli/types.d.ts.map +1 -0
  10. package/dist/anycli/types.js +9 -0
  11. package/dist/api/breakpoints.d.ts +93 -0
  12. package/dist/api/breakpoints.d.ts.map +1 -0
  13. package/dist/api/breakpoints.js +334 -0
  14. package/dist/api/effects.d.ts +14 -0
  15. package/dist/api/effects.d.ts.map +1 -0
  16. package/dist/api/effects.js +306 -0
  17. package/dist/api/effectsTypes.d.ts +79 -0
  18. package/dist/api/effectsTypes.d.ts.map +1 -0
  19. package/dist/api/effectsTypes.js +6 -0
  20. package/dist/api/eventStream.d.ts +34 -0
  21. package/dist/api/eventStream.d.ts.map +1 -0
  22. package/dist/api/eventStream.js +126 -0
  23. package/dist/api/index.d.ts +10 -0
  24. package/dist/api/index.d.ts.map +1 -0
  25. package/dist/api/index.js +27 -0
  26. package/dist/api/runs.d.ts +85 -0
  27. package/dist/api/runs.d.ts.map +1 -0
  28. package/dist/api/runs.js +247 -0
  29. package/dist/api/utils.d.ts +28 -0
  30. package/dist/api/utils.d.ts.map +1 -0
  31. package/dist/api/utils.js +74 -0
  32. package/dist/breakpoints/approvalChains.d.ts +68 -0
  33. package/dist/breakpoints/approvalChains.d.ts.map +1 -0
  34. package/dist/breakpoints/approvalChains.js +111 -0
  35. package/dist/breakpoints/delegation.d.ts +42 -0
  36. package/dist/breakpoints/delegation.d.ts.map +1 -0
  37. package/dist/breakpoints/delegation.js +199 -0
  38. package/dist/breakpoints/delegationTypes.d.ts +46 -0
  39. package/dist/breakpoints/delegationTypes.d.ts.map +1 -0
  40. package/dist/breakpoints/delegationTypes.js +10 -0
  41. package/dist/breakpoints/postures.d.ts +28 -0
  42. package/dist/breakpoints/postures.d.ts.map +1 -0
  43. package/dist/breakpoints/postures.js +100 -0
  44. package/dist/compression/compaction.d.ts +82 -0
  45. package/dist/compression/compaction.d.ts.map +1 -0
  46. package/dist/compression/compaction.js +310 -0
  47. package/dist/cost/claudeCodeParser.d.ts +81 -0
  48. package/dist/cost/claudeCodeParser.d.ts.map +1 -0
  49. package/dist/cost/claudeCodeParser.js +232 -0
  50. package/dist/cost/collector.d.ts +42 -0
  51. package/dist/cost/collector.d.ts.map +1 -0
  52. package/dist/cost/collector.js +105 -0
  53. package/dist/cost/effectCost.d.ts +23 -0
  54. package/dist/cost/effectCost.d.ts.map +1 -0
  55. package/dist/cost/effectCost.js +26 -0
  56. package/dist/cost/index.d.ts +7 -0
  57. package/dist/cost/index.d.ts.map +1 -0
  58. package/dist/cost/index.js +28 -0
  59. package/dist/cost/journal.d.ts +40 -0
  60. package/dist/cost/journal.d.ts.map +1 -0
  61. package/dist/cost/journal.js +158 -0
  62. package/dist/cost/types.d.ts +164 -0
  63. package/dist/cost/types.d.ts.map +1 -0
  64. package/dist/cost/types.js +228 -0
  65. package/dist/daemon/automationExecutor.d.ts +16 -0
  66. package/dist/daemon/automationExecutor.d.ts.map +1 -0
  67. package/dist/daemon/automationExecutor.js +222 -0
  68. package/dist/daemon/config.d.ts +8 -0
  69. package/dist/daemon/config.d.ts.map +1 -0
  70. package/dist/daemon/config.js +245 -0
  71. package/dist/daemon/daemonLog.d.ts +13 -0
  72. package/dist/daemon/daemonLog.d.ts.map +1 -0
  73. package/dist/daemon/daemonLog.js +64 -0
  74. package/dist/daemon/durableQueue.d.ts +41 -0
  75. package/dist/daemon/durableQueue.d.ts.map +1 -0
  76. package/dist/daemon/durableQueue.js +183 -0
  77. package/dist/daemon/fileWatcher.d.ts +9 -0
  78. package/dist/daemon/fileWatcher.d.ts.map +1 -0
  79. package/dist/daemon/fileWatcher.js +144 -0
  80. package/dist/daemon/index.d.ts +9 -0
  81. package/dist/daemon/index.d.ts.map +1 -0
  82. package/dist/daemon/index.js +26 -0
  83. package/dist/daemon/lifecycle.d.ts +12 -0
  84. package/dist/daemon/lifecycle.d.ts.map +1 -0
  85. package/dist/daemon/lifecycle.js +257 -0
  86. package/dist/daemon/loop.d.ts +27 -0
  87. package/dist/daemon/loop.d.ts.map +1 -0
  88. package/dist/daemon/loop.js +387 -0
  89. package/dist/daemon/timerScheduler.d.ts +13 -0
  90. package/dist/daemon/timerScheduler.d.ts.map +1 -0
  91. package/dist/daemon/timerScheduler.js +212 -0
  92. package/dist/daemon/types.d.ts +122 -0
  93. package/dist/daemon/types.d.ts.map +1 -0
  94. package/dist/daemon/types.js +25 -0
  95. package/dist/daemon/webhookListener.d.ts +6 -0
  96. package/dist/daemon/webhookListener.d.ts.map +1 -0
  97. package/dist/daemon/webhookListener.js +132 -0
  98. package/dist/governance/authority.d.ts +68 -0
  99. package/dist/governance/authority.d.ts.map +1 -0
  100. package/dist/governance/authority.js +136 -0
  101. package/dist/governance/bridge.d.ts +17 -0
  102. package/dist/governance/bridge.d.ts.map +1 -0
  103. package/dist/governance/bridge.js +46 -0
  104. package/dist/governance/builtins.d.ts +25 -0
  105. package/dist/governance/builtins.d.ts.map +1 -0
  106. package/dist/governance/builtins.js +67 -0
  107. package/dist/governance/categories.d.ts +58 -0
  108. package/dist/governance/categories.d.ts.map +1 -0
  109. package/dist/governance/categories.js +120 -0
  110. package/dist/governance/decisionTrail.d.ts +60 -0
  111. package/dist/governance/decisionTrail.d.ts.map +1 -0
  112. package/dist/governance/decisionTrail.js +68 -0
  113. package/dist/governance/engine.d.ts +20 -0
  114. package/dist/governance/engine.d.ts.map +1 -0
  115. package/dist/governance/engine.js +124 -0
  116. package/dist/governance/index.d.ts +20 -0
  117. package/dist/governance/index.d.ts.map +1 -0
  118. package/dist/governance/index.js +75 -0
  119. package/dist/governance/logging.d.ts +18 -0
  120. package/dist/governance/logging.d.ts.map +1 -0
  121. package/dist/governance/logging.js +83 -0
  122. package/dist/governance/mandate.d.ts +83 -0
  123. package/dist/governance/mandate.d.ts.map +1 -0
  124. package/dist/governance/mandate.js +180 -0
  125. package/dist/governance/permissionEvents.d.ts +51 -0
  126. package/dist/governance/permissionEvents.d.ts.map +1 -0
  127. package/dist/governance/permissionEvents.js +52 -0
  128. package/dist/governance/permissionPropagation.d.ts +18 -0
  129. package/dist/governance/permissionPropagation.d.ts.map +1 -0
  130. package/dist/governance/permissionPropagation.js +58 -0
  131. package/dist/governance/postureBridge.d.ts +17 -0
  132. package/dist/governance/postureBridge.d.ts.map +1 -0
  133. package/dist/governance/postureBridge.js +117 -0
  134. package/dist/governance/sandboxBridge.d.ts +49 -0
  135. package/dist/governance/sandboxBridge.d.ts.map +1 -0
  136. package/dist/governance/sandboxBridge.js +77 -0
  137. package/dist/governance/sandboxPolicy.d.ts +51 -0
  138. package/dist/governance/sandboxPolicy.d.ts.map +1 -0
  139. package/dist/governance/sandboxPolicy.js +177 -0
  140. package/dist/governance/types.d.ts +3 -0
  141. package/dist/governance/types.d.ts.map +1 -0
  142. package/dist/governance/types.js +5 -0
  143. package/dist/harness/adapters/adapterBridge.d.ts +71 -0
  144. package/dist/harness/adapters/adapterBridge.d.ts.map +1 -0
  145. package/dist/harness/adapters/adapterBridge.js +117 -0
  146. package/dist/harness/adapters/adapterClientFactory.d.ts +29 -0
  147. package/dist/harness/adapters/adapterClientFactory.d.ts.map +1 -0
  148. package/dist/harness/adapters/adapterClientFactory.js +90 -0
  149. package/dist/harness/adapters/adapterEventEmitter.d.ts +51 -0
  150. package/dist/harness/adapters/adapterEventEmitter.d.ts.map +1 -0
  151. package/dist/harness/adapters/adapterEventEmitter.js +143 -0
  152. package/dist/harness/adapters/adapterEventMapper.d.ts +63 -0
  153. package/dist/harness/adapters/adapterEventMapper.d.ts.map +1 -0
  154. package/dist/harness/adapters/adapterEventMapper.js +100 -0
  155. package/dist/harness/adapters/adapterHarnessMap.d.ts +25 -0
  156. package/dist/harness/adapters/adapterHarnessMap.d.ts.map +1 -0
  157. package/dist/harness/adapters/adapterHarnessMap.js +55 -0
  158. package/dist/harness/adapters/adapterStdinReader.d.ts +45 -0
  159. package/dist/harness/adapters/adapterStdinReader.d.ts.map +1 -0
  160. package/dist/harness/adapters/adapterStdinReader.js +106 -0
  161. package/dist/harness/adapters/adapterTypes.d.ts +122 -0
  162. package/dist/harness/adapters/adapterTypes.d.ts.map +1 -0
  163. package/dist/harness/adapters/adapterTypes.js +11 -0
  164. package/dist/harness/adapters/index.d.ts +17 -0
  165. package/dist/harness/adapters/index.d.ts.map +1 -0
  166. package/dist/harness/adapters/index.js +34 -0
  167. package/dist/harness/backgroundTracker.d.ts +64 -0
  168. package/dist/harness/backgroundTracker.d.ts.map +1 -0
  169. package/dist/harness/backgroundTracker.js +107 -0
  170. package/dist/harness/builtInHarness.d.ts +3 -0
  171. package/dist/harness/builtInHarness.d.ts.map +1 -0
  172. package/dist/harness/builtInHarness.js +18 -0
  173. package/dist/harness/capabilityRouter.d.ts +76 -0
  174. package/dist/harness/capabilityRouter.d.ts.map +1 -0
  175. package/dist/harness/capabilityRouter.js +176 -0
  176. package/dist/harness/fallbackChains.d.ts +42 -0
  177. package/dist/harness/fallbackChains.d.ts.map +1 -0
  178. package/dist/harness/fallbackChains.js +69 -0
  179. package/dist/harness/hostContract.d.ts +63 -0
  180. package/dist/harness/hostContract.d.ts.map +1 -0
  181. package/dist/harness/hostContract.js +136 -0
  182. package/dist/harness/index.d.ts +18 -0
  183. package/dist/harness/index.d.ts.map +1 -0
  184. package/dist/harness/index.js +91 -0
  185. package/dist/harness/internal/createRun/agent-core-loop.d.ts +43 -0
  186. package/dist/harness/internal/createRun/agent-core-loop.d.ts.map +1 -0
  187. package/dist/harness/internal/createRun/agent-core-loop.js +247 -0
  188. package/dist/harness/internal/createRun/askUserQuestion.d.ts +11 -0
  189. package/dist/harness/internal/createRun/askUserQuestion.d.ts.map +1 -0
  190. package/dist/harness/internal/createRun/askUserQuestion.js +162 -0
  191. package/dist/harness/internal/createRun/index.d.ts +25 -0
  192. package/dist/harness/internal/createRun/index.d.ts.map +1 -0
  193. package/dist/harness/internal/createRun/index.js +163 -0
  194. package/dist/harness/internal/createRun/orchestration/constants.d.ts +7 -0
  195. package/dist/harness/internal/createRun/orchestration/constants.d.ts.map +1 -0
  196. package/dist/harness/internal/createRun/orchestration/constants.js +17 -0
  197. package/dist/harness/internal/createRun/orchestration/dispatch.d.ts +23 -0
  198. package/dist/harness/internal/createRun/orchestration/dispatch.d.ts.map +1 -0
  199. package/dist/harness/internal/createRun/orchestration/dispatch.js +135 -0
  200. package/dist/harness/internal/createRun/orchestration/effects.d.ts +134 -0
  201. package/dist/harness/internal/createRun/orchestration/effects.d.ts.map +1 -0
  202. package/dist/harness/internal/createRun/orchestration/effects.js +859 -0
  203. package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts +20 -0
  204. package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts.map +1 -0
  205. package/dist/harness/internal/createRun/orchestration/effectsHelpers.js +79 -0
  206. package/dist/harness/internal/createRun/orchestration/effectsHelpers.test.d.ts +2 -0
  207. package/dist/harness/internal/createRun/orchestration/effectsHelpers.test.d.ts.map +1 -0
  208. package/dist/harness/internal/createRun/orchestration/effectsHelpers.test.js +81 -0
  209. package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts +3 -0
  210. package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts.map +1 -0
  211. package/dist/harness/internal/createRun/orchestration/externalPhase.js +399 -0
  212. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts +16 -0
  213. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts.map +1 -0
  214. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.js +104 -0
  215. package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.d.ts +32 -0
  216. package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.d.ts.map +1 -0
  217. package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.js +76 -0
  218. package/dist/harness/internal/createRun/orchestration/index.d.ts +29 -0
  219. package/dist/harness/internal/createRun/orchestration/index.d.ts.map +1 -0
  220. package/dist/harness/internal/createRun/orchestration/index.js +370 -0
  221. package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts +3 -0
  222. package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts.map +1 -0
  223. package/dist/harness/internal/createRun/orchestration/internalPhase.js +580 -0
  224. package/dist/harness/internal/createRun/orchestration/internalTools.d.ts +27 -0
  225. package/dist/harness/internal/createRun/orchestration/internalTools.d.ts.map +1 -0
  226. package/dist/harness/internal/createRun/orchestration/internalTools.js +264 -0
  227. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts +17 -0
  228. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts.map +1 -0
  229. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.js +23 -0
  230. package/dist/harness/internal/createRun/orchestration/taskResult.d.ts +10 -0
  231. package/dist/harness/internal/createRun/orchestration/taskResult.d.ts.map +1 -0
  232. package/dist/harness/internal/createRun/orchestration/taskResult.js +67 -0
  233. package/dist/harness/internal/createRun/orchestration/types.d.ts +46 -0
  234. package/dist/harness/internal/createRun/orchestration/types.d.ts.map +1 -0
  235. package/dist/harness/internal/createRun/orchestration/types.js +2 -0
  236. package/dist/harness/internal/createRun/orchestration/verbose.d.ts +7 -0
  237. package/dist/harness/internal/createRun/orchestration/verbose.d.ts.map +1 -0
  238. package/dist/harness/internal/createRun/orchestration/verbose.js +240 -0
  239. package/dist/harness/internal/createRun/output.d.ts +40 -0
  240. package/dist/harness/internal/createRun/output.d.ts.map +1 -0
  241. package/dist/harness/internal/createRun/output.js +467 -0
  242. package/dist/harness/internal/createRun/pi.d.ts +10 -0
  243. package/dist/harness/internal/createRun/pi.d.ts.map +1 -0
  244. package/dist/harness/internal/createRun/pi.js +35 -0
  245. package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts +5 -0
  246. package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts.map +1 -0
  247. package/dist/harness/internal/createRun/planProcess/agentOutput.js +113 -0
  248. package/dist/harness/internal/createRun/planProcess/delegation.d.ts +23 -0
  249. package/dist/harness/internal/createRun/planProcess/delegation.d.ts.map +1 -0
  250. package/dist/harness/internal/createRun/planProcess/delegation.js +176 -0
  251. package/dist/harness/internal/createRun/planProcess/external.d.ts +14 -0
  252. package/dist/harness/internal/createRun/planProcess/external.d.ts.map +1 -0
  253. package/dist/harness/internal/createRun/planProcess/external.js +139 -0
  254. package/dist/harness/internal/createRun/planProcess/index.d.ts +12 -0
  255. package/dist/harness/internal/createRun/planProcess/index.d.ts.map +1 -0
  256. package/dist/harness/internal/createRun/planProcess/index.js +24 -0
  257. package/dist/harness/internal/createRun/planProcess/paths.d.ts +7 -0
  258. package/dist/harness/internal/createRun/planProcess/paths.d.ts.map +1 -0
  259. package/dist/harness/internal/createRun/planProcess/paths.js +98 -0
  260. package/dist/harness/internal/createRun/planProcess/phase.d.ts +6 -0
  261. package/dist/harness/internal/createRun/planProcess/phase.d.ts.map +1 -0
  262. package/dist/harness/internal/createRun/planProcess/phase.js +424 -0
  263. package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts +37 -0
  264. package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts.map +1 -0
  265. package/dist/harness/internal/createRun/planProcess/phaseHelpers.js +159 -0
  266. package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts +25 -0
  267. package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts.map +1 -0
  268. package/dist/harness/internal/createRun/planProcess/phaseTypes.js +6 -0
  269. package/dist/harness/internal/createRun/planProcess/prompts.d.ts +22 -0
  270. package/dist/harness/internal/createRun/planProcess/prompts.d.ts.map +1 -0
  271. package/dist/harness/internal/createRun/planProcess/prompts.js +239 -0
  272. package/dist/harness/internal/createRun/planProcess/recovery.d.ts +18 -0
  273. package/dist/harness/internal/createRun/planProcess/recovery.d.ts.map +1 -0
  274. package/dist/harness/internal/createRun/planProcess/recovery.js +205 -0
  275. package/dist/harness/internal/createRun/planProcess/recovery.test.d.ts +2 -0
  276. package/dist/harness/internal/createRun/planProcess/recovery.test.d.ts.map +1 -0
  277. package/dist/harness/internal/createRun/planProcess/recovery.test.js +68 -0
  278. package/dist/harness/internal/createRun/planProcess/runState.d.ts +40 -0
  279. package/dist/harness/internal/createRun/planProcess/runState.d.ts.map +1 -0
  280. package/dist/harness/internal/createRun/planProcess/runState.js +179 -0
  281. package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts +22 -0
  282. package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts.map +1 -0
  283. package/dist/harness/internal/createRun/planProcess/understandIntent.js +65 -0
  284. package/dist/harness/internal/createRun/planProcess/validation.d.ts +4 -0
  285. package/dist/harness/internal/createRun/planProcess/validation.d.ts.map +1 -0
  286. package/dist/harness/internal/createRun/planProcess/validation.js +260 -0
  287. package/dist/harness/internal/createRun/planProcess/validationSource.d.ts +13 -0
  288. package/dist/harness/internal/createRun/planProcess/validationSource.d.ts.map +1 -0
  289. package/dist/harness/internal/createRun/planProcess/validationSource.js +345 -0
  290. package/dist/harness/internal/createRun/planProcess/validationText.d.ts +3 -0
  291. package/dist/harness/internal/createRun/planProcess/validationText.d.ts.map +1 -0
  292. package/dist/harness/internal/createRun/planProcess/validationText.js +145 -0
  293. package/dist/harness/internal/createRun/prompts.d.ts +59 -0
  294. package/dist/harness/internal/createRun/prompts.d.ts.map +1 -0
  295. package/dist/harness/internal/createRun/prompts.js +427 -0
  296. package/dist/harness/internal/createRun/resumeState.d.ts +28 -0
  297. package/dist/harness/internal/createRun/resumeState.d.ts.map +1 -0
  298. package/dist/harness/internal/createRun/resumeState.js +133 -0
  299. package/dist/harness/internal/createRun/utils.d.ts +184 -0
  300. package/dist/harness/internal/createRun/utils.d.ts.map +1 -0
  301. package/dist/harness/internal/createRun/utils.js +218 -0
  302. package/dist/harness/internal.d.ts +13 -0
  303. package/dist/harness/internal.d.ts.map +1 -0
  304. package/dist/harness/internal.js +149 -0
  305. package/dist/harness/invoker/launch.d.ts +20 -0
  306. package/dist/harness/invoker/launch.d.ts.map +1 -0
  307. package/dist/harness/invoker/launch.js +23 -0
  308. package/dist/harness/invoker/processControl.d.ts +11 -0
  309. package/dist/harness/invoker/processControl.d.ts.map +1 -0
  310. package/dist/harness/invoker/processControl.js +50 -0
  311. package/dist/harness/invoker.d.ts +44 -0
  312. package/dist/harness/invoker.d.ts.map +1 -0
  313. package/dist/harness/invoker.js +276 -0
  314. package/dist/harness/modeSelector.d.ts +50 -0
  315. package/dist/harness/modeSelector.d.ts.map +1 -0
  316. package/dist/harness/modeSelector.js +124 -0
  317. package/dist/harness/modelSelection.d.ts +37 -0
  318. package/dist/harness/modelSelection.d.ts.map +1 -0
  319. package/dist/harness/modelSelection.js +81 -0
  320. package/dist/harness/operatorCommands.d.ts +38 -0
  321. package/dist/harness/operatorCommands.d.ts.map +1 -0
  322. package/dist/harness/operatorCommands.js +118 -0
  323. package/dist/harness/piSecureSandbox.d.ts +8 -0
  324. package/dist/harness/piSecureSandbox.d.ts.map +1 -0
  325. package/dist/harness/piSecureSandbox.js +366 -0
  326. package/dist/harness/piSecureSandboxTypes.d.ts +51 -0
  327. package/dist/harness/piSecureSandboxTypes.d.ts.map +1 -0
  328. package/dist/harness/piSecureSandboxTypes.js +6 -0
  329. package/dist/harness/piWrapper/compaction.d.ts +13 -0
  330. package/dist/harness/piWrapper/compaction.d.ts.map +1 -0
  331. package/dist/harness/piWrapper/compaction.js +38 -0
  332. package/dist/harness/piWrapper/instructionPrompts.d.ts +2 -0
  333. package/dist/harness/piWrapper/instructionPrompts.d.ts.map +1 -0
  334. package/dist/harness/piWrapper/instructionPrompts.js +97 -0
  335. package/dist/harness/piWrapper/moduleSupport.d.ts +78 -0
  336. package/dist/harness/piWrapper/moduleSupport.d.ts.map +1 -0
  337. package/dist/harness/piWrapper/moduleSupport.js +207 -0
  338. package/dist/harness/piWrapper/moduleSupport.test.d.ts +2 -0
  339. package/dist/harness/piWrapper/moduleSupport.test.d.ts.map +1 -0
  340. package/dist/harness/piWrapper/moduleSupport.test.js +31 -0
  341. package/dist/harness/piWrapper.d.ts +82 -0
  342. package/dist/harness/piWrapper.d.ts.map +1 -0
  343. package/dist/harness/piWrapper.js +406 -0
  344. package/dist/harness/piWrapper.test.d.ts +2 -0
  345. package/dist/harness/piWrapper.test.d.ts.map +1 -0
  346. package/dist/harness/piWrapper.test.js +240 -0
  347. package/dist/harness/planMode.d.ts +68 -0
  348. package/dist/harness/planMode.d.ts.map +1 -0
  349. package/dist/harness/planMode.js +145 -0
  350. package/dist/harness/selectionPolicies.d.ts +29 -0
  351. package/dist/harness/selectionPolicies.d.ts.map +1 -0
  352. package/dist/harness/selectionPolicies.js +165 -0
  353. package/dist/harness/types.d.ts +276 -0
  354. package/dist/harness/types.d.ts.map +1 -0
  355. package/dist/harness/types.js +34 -0
  356. package/dist/index.d.ts +16 -0
  357. package/dist/index.d.ts.map +1 -0
  358. package/dist/index.js +54 -0
  359. package/dist/interaction/askUserQuestion/core.d.ts +8 -0
  360. package/dist/interaction/askUserQuestion/core.d.ts.map +1 -0
  361. package/dist/interaction/askUserQuestion/core.js +112 -0
  362. package/dist/interaction/askUserQuestion/terminal.d.ts +15 -0
  363. package/dist/interaction/askUserQuestion/terminal.d.ts.map +1 -0
  364. package/dist/interaction/askUserQuestion/terminal.js +128 -0
  365. package/dist/interaction/askUserQuestion.d.ts +10 -0
  366. package/dist/interaction/askUserQuestion.d.ts.map +1 -0
  367. package/dist/interaction/askUserQuestion.js +295 -0
  368. package/dist/interaction/askUserQuestionTypes.d.ts +31 -0
  369. package/dist/interaction/askUserQuestionTypes.d.ts.map +1 -0
  370. package/dist/interaction/askUserQuestionTypes.js +6 -0
  371. package/dist/interaction/index.d.ts +4 -0
  372. package/dist/interaction/index.d.ts.map +1 -0
  373. package/dist/interaction/index.js +20 -0
  374. package/dist/interaction/interactionRouter.d.ts +25 -0
  375. package/dist/interaction/interactionRouter.d.ts.map +1 -0
  376. package/dist/interaction/interactionRouter.js +55 -0
  377. package/dist/mcp/channels/allowlist.d.ts +19 -0
  378. package/dist/mcp/channels/allowlist.d.ts.map +1 -0
  379. package/dist/mcp/channels/allowlist.js +140 -0
  380. package/dist/mcp/channels/channelManager.d.ts +64 -0
  381. package/dist/mcp/channels/channelManager.d.ts.map +1 -0
  382. package/dist/mcp/channels/channelManager.js +137 -0
  383. package/dist/mcp/channels/inboundQueue.d.ts +47 -0
  384. package/dist/mcp/channels/inboundQueue.d.ts.map +1 -0
  385. package/dist/mcp/channels/inboundQueue.js +96 -0
  386. package/dist/mcp/channels/index.d.ts +16 -0
  387. package/dist/mcp/channels/index.d.ts.map +1 -0
  388. package/dist/mcp/channels/index.js +38 -0
  389. package/dist/mcp/channels/outbound.d.ts +33 -0
  390. package/dist/mcp/channels/outbound.d.ts.map +1 -0
  391. package/dist/mcp/channels/outbound.js +94 -0
  392. package/dist/mcp/channels/permissionRelay.d.ts +62 -0
  393. package/dist/mcp/channels/permissionRelay.d.ts.map +1 -0
  394. package/dist/mcp/channels/permissionRelay.js +159 -0
  395. package/dist/mcp/channels/types.d.ts +135 -0
  396. package/dist/mcp/channels/types.d.ts.map +1 -0
  397. package/dist/mcp/channels/types.js +16 -0
  398. package/dist/mcp/client/config.d.ts +28 -0
  399. package/dist/mcp/client/config.d.ts.map +1 -0
  400. package/dist/mcp/client/config.js +144 -0
  401. package/dist/mcp/client/executor.d.ts +30 -0
  402. package/dist/mcp/client/executor.d.ts.map +1 -0
  403. package/dist/mcp/client/executor.js +61 -0
  404. package/dist/mcp/client/index.d.ts +12 -0
  405. package/dist/mcp/client/index.d.ts.map +1 -0
  406. package/dist/mcp/client/index.js +27 -0
  407. package/dist/mcp/client/manager.d.ts +74 -0
  408. package/dist/mcp/client/manager.d.ts.map +1 -0
  409. package/dist/mcp/client/manager.js +215 -0
  410. package/dist/mcp/client/toolRegistry.d.ts +113 -0
  411. package/dist/mcp/client/toolRegistry.d.ts.map +1 -0
  412. package/dist/mcp/client/toolRegistry.js +190 -0
  413. package/dist/mcp/client/types.d.ts +96 -0
  414. package/dist/mcp/client/types.d.ts.map +1 -0
  415. package/dist/mcp/client/types.js +15 -0
  416. package/dist/mcp/transport/index.d.ts +9 -0
  417. package/dist/mcp/transport/index.d.ts.map +1 -0
  418. package/dist/mcp/transport/index.js +13 -0
  419. package/dist/mcp/transport/session.d.ts +18 -0
  420. package/dist/mcp/transport/session.d.ts.map +1 -0
  421. package/dist/mcp/transport/session.js +78 -0
  422. package/dist/mcp/transport/types.d.ts +19 -0
  423. package/dist/mcp/transport/types.d.ts.map +1 -0
  424. package/dist/mcp/transport/types.js +7 -0
  425. package/dist/mcp/transport/websocket.d.ts +41 -0
  426. package/dist/mcp/transport/websocket.d.ts.map +1 -0
  427. package/dist/mcp/transport/websocket.js +271 -0
  428. package/dist/observability/health.d.ts +19 -0
  429. package/dist/observability/health.d.ts.map +1 -0
  430. package/dist/observability/health.js +129 -0
  431. package/dist/observability/index.d.ts +7 -0
  432. package/dist/observability/index.d.ts.map +1 -0
  433. package/dist/observability/index.js +22 -0
  434. package/dist/observability/runStatus.d.ts +44 -0
  435. package/dist/observability/runStatus.d.ts.map +1 -0
  436. package/dist/observability/runStatus.js +169 -0
  437. package/dist/observability/timeline.d.ts +11 -0
  438. package/dist/observability/timeline.d.ts.map +1 -0
  439. package/dist/observability/timeline.js +176 -0
  440. package/dist/observability/types.d.ts +62 -0
  441. package/dist/observability/types.d.ts.map +1 -0
  442. package/dist/observability/types.js +8 -0
  443. package/dist/observability/webhooks.d.ts +68 -0
  444. package/dist/observability/webhooks.d.ts.map +1 -0
  445. package/dist/observability/webhooks.js +132 -0
  446. package/dist/plugins/index.d.ts +11 -0
  447. package/dist/plugins/index.d.ts.map +1 -0
  448. package/dist/plugins/index.js +18 -0
  449. package/dist/plugins/loader.d.ts +37 -0
  450. package/dist/plugins/loader.d.ts.map +1 -0
  451. package/dist/plugins/loader.js +112 -0
  452. package/dist/plugins/sandbox.d.ts +38 -0
  453. package/dist/plugins/sandbox.d.ts.map +1 -0
  454. package/dist/plugins/sandbox.js +109 -0
  455. package/dist/plugins/types.d.ts +27 -0
  456. package/dist/plugins/types.d.ts.map +1 -0
  457. package/dist/plugins/types.js +7 -0
  458. package/dist/plugins/version-check.d.ts +23 -0
  459. package/dist/plugins/version-check.d.ts.map +1 -0
  460. package/dist/plugins/version-check.js +70 -0
  461. package/dist/processes/index.d.ts +12 -0
  462. package/dist/processes/index.d.ts.map +1 -0
  463. package/dist/processes/index.js +15 -0
  464. package/dist/processes/recommender.d.ts +36 -0
  465. package/dist/processes/recommender.d.ts.map +1 -0
  466. package/dist/processes/recommender.js +73 -0
  467. package/dist/processes/scorer.d.ts +26 -0
  468. package/dist/processes/scorer.d.ts.map +1 -0
  469. package/dist/processes/scorer.js +104 -0
  470. package/dist/processes/types.d.ts +48 -0
  471. package/dist/processes/types.d.ts.map +1 -0
  472. package/dist/processes/types.js +9 -0
  473. package/dist/runtime/index.d.ts +3 -0
  474. package/dist/runtime/index.d.ts.map +1 -0
  475. package/dist/runtime/index.js +28 -0
  476. package/dist/seams/contract.d.ts +63 -0
  477. package/dist/seams/contract.d.ts.map +1 -0
  478. package/dist/seams/contract.js +138 -0
  479. package/dist/seams/contract.test.d.ts +2 -0
  480. package/dist/seams/contract.test.d.ts.map +1 -0
  481. package/dist/seams/contract.test.js +99 -0
  482. package/dist/seams/index.d.ts +3 -0
  483. package/dist/seams/index.d.ts.map +1 -0
  484. package/dist/seams/index.js +8 -0
  485. package/dist/session/context.d.ts +22 -0
  486. package/dist/session/context.d.ts.map +1 -0
  487. package/dist/session/context.js +113 -0
  488. package/dist/session/continuityState.d.ts +39 -0
  489. package/dist/session/continuityState.d.ts.map +1 -0
  490. package/dist/session/continuityState.js +164 -0
  491. package/dist/session/cost.d.ts +72 -0
  492. package/dist/session/cost.d.ts.map +1 -0
  493. package/dist/session/cost.js +221 -0
  494. package/dist/session/discovery.d.ts +22 -0
  495. package/dist/session/discovery.d.ts.map +1 -0
  496. package/dist/session/discovery.js +35 -0
  497. package/dist/session/history.d.ts +30 -0
  498. package/dist/session/history.d.ts.map +1 -0
  499. package/dist/session/history.js +144 -0
  500. package/dist/session/index.d.ts +7 -0
  501. package/dist/session/index.d.ts.map +1 -0
  502. package/dist/session/index.js +70 -0
  503. package/dist/session/memoryExtraction.d.ts +65 -0
  504. package/dist/session/memoryExtraction.d.ts.map +1 -0
  505. package/dist/session/memoryExtraction.js +201 -0
  506. package/dist/session/parse.d.ts +45 -0
  507. package/dist/session/parse.d.ts.map +1 -0
  508. package/dist/session/parse.js +170 -0
  509. package/dist/session/persistence.d.ts +46 -0
  510. package/dist/session/persistence.d.ts.map +1 -0
  511. package/dist/session/persistence.js +180 -0
  512. package/dist/session/types.d.ts +267 -0
  513. package/dist/session/types.d.ts.map +1 -0
  514. package/dist/session/types.js +45 -0
  515. package/dist/session/write.d.ts +61 -0
  516. package/dist/session/write.d.ts.map +1 -0
  517. package/dist/session/write.js +213 -0
  518. package/dist/skills/chain.d.ts +31 -0
  519. package/dist/skills/chain.d.ts.map +1 -0
  520. package/dist/skills/chain.js +113 -0
  521. package/dist/skills/discovery.d.ts +34 -0
  522. package/dist/skills/discovery.d.ts.map +1 -0
  523. package/dist/skills/discovery.js +185 -0
  524. package/dist/skills/index.d.ts +12 -0
  525. package/dist/skills/index.d.ts.map +1 -0
  526. package/dist/skills/index.js +18 -0
  527. package/dist/skills/router.d.ts +35 -0
  528. package/dist/skills/router.d.ts.map +1 -0
  529. package/dist/skills/router.js +143 -0
  530. package/dist/skills/types.d.ts +33 -0
  531. package/dist/skills/types.d.ts.map +1 -0
  532. package/dist/skills/types.js +5 -0
  533. package/dist/storage/atomic.d.ts +2 -0
  534. package/dist/storage/atomic.d.ts.map +1 -0
  535. package/dist/storage/atomic.js +54 -0
  536. package/dist/storage/clock.d.ts +2 -0
  537. package/dist/storage/clock.d.ts.map +1 -0
  538. package/dist/storage/clock.js +6 -0
  539. package/dist/storage/index.d.ts +7 -0
  540. package/dist/storage/index.d.ts.map +1 -0
  541. package/dist/storage/index.js +9 -0
  542. package/dist/storage/journalWatcher.d.ts +24 -0
  543. package/dist/storage/journalWatcher.d.ts.map +1 -0
  544. package/dist/storage/journalWatcher.js +173 -0
  545. package/dist/storage/paths.d.ts +5 -0
  546. package/dist/storage/paths.d.ts.map +1 -0
  547. package/dist/storage/paths.js +26 -0
  548. package/dist/storage/snapshotState.d.ts +10 -0
  549. package/dist/storage/snapshotState.d.ts.map +1 -0
  550. package/dist/storage/snapshotState.js +15 -0
  551. package/dist/storage/storeTaskArtifacts.d.ts +6 -0
  552. package/dist/storage/storeTaskArtifacts.d.ts.map +1 -0
  553. package/dist/storage/storeTaskArtifacts.js +55 -0
  554. package/dist/storage/types.d.ts +21 -0
  555. package/dist/storage/types.d.ts.map +1 -0
  556. package/dist/storage/types.js +2 -0
  557. package/dist/tasks/crud.d.ts +33 -0
  558. package/dist/tasks/crud.d.ts.map +1 -0
  559. package/dist/tasks/crud.js +150 -0
  560. package/dist/tasks/index.d.ts +2 -0
  561. package/dist/tasks/index.d.ts.map +1 -0
  562. package/dist/tasks/index.js +9 -0
  563. package/package.json +161 -0
@@ -0,0 +1,859 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.readProcessFileFingerprint = void 0;
37
+ exports.resolveHarnessSessionIdForBinding = resolveHarnessSessionIdForBinding;
38
+ exports.resolveEffect = resolveEffect;
39
+ exports.applyPostEffectOrchestrationOverlays = applyPostEffectOrchestrationOverlays;
40
+ exports.resolveEffectWithRetry = resolveEffectWithRetry;
41
+ exports.orchestrateIterationWithProcessLoadRetry = orchestrateIterationWithProcessLoadRetry;
42
+ const path = __importStar(require("node:path"));
43
+ const effectsHelpers_1 = require("./effectsHelpers");
44
+ const hookDecisionEffects_1 = require("./hookDecisionEffects");
45
+ var effectsHelpers_2 = require("./effectsHelpers");
46
+ Object.defineProperty(exports, "readProcessFileFingerprint", { enumerable: true, get: function () { return effectsHelpers_2.readProcessFileFingerprint; } });
47
+ const approvalChains_1 = require("../../../../breakpoints/approvalChains");
48
+ const compaction_1 = require("../../../../compression/compaction");
49
+ const executor_1 = require("../../../../mcp/client/executor");
50
+ const manager_1 = require("../../../../mcp/client/manager");
51
+ const toolRegistry_1 = require("../../../../mcp/client/toolRegistry");
52
+ const cost_1 = require("../../../../session/cost");
53
+ const history_1 = require("../../../../session/history");
54
+ const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
55
+ const utils_1 = require("../utils");
56
+ const planProcess_1 = require("../planProcess");
57
+ const constants_1 = require("./constants");
58
+ const dispatch_1 = require("./dispatch");
59
+ async function importOptionalModule(specifier) {
60
+ return Promise.resolve(`${specifier}`).then(s => __importStar(require(s)));
61
+ }
62
+ function resolveHarnessSessionIdForBinding(args, adapter, orchestrationSession) {
63
+ if ((0, utils_1.isInternalHarness)(args.selectedHarnessName) && orchestrationSession?.sessionId) {
64
+ process.env.PI_SESSION_ID = process.env.PI_SESSION_ID || orchestrationSession.sessionId;
65
+ process.env.OMP_SESSION_ID = process.env.OMP_SESSION_ID || orchestrationSession.sessionId;
66
+ }
67
+ const resolved = adapter.resolveSessionId({});
68
+ if (resolved) {
69
+ return resolved;
70
+ }
71
+ return (0, utils_1.isInternalHarness)(args.selectedHarnessName)
72
+ ? orchestrationSession?.sessionId
73
+ : undefined;
74
+ }
75
+ async function resolveEffect(action, harnessName, options, piSession, discovered, rl, json, askUserQuestionHandler) {
76
+ const hookResult = (0, hookDecisionEffects_1.getHookDecisionResult)(action);
77
+ if (hookResult) {
78
+ const hookResolution = (0, hookDecisionEffects_1.resolveHookDecisionResult)(action, hookResult, {
79
+ maxRetries: action.taskDef?.metadata?.maxRetries,
80
+ });
81
+ if (hookResolution) {
82
+ return hookResolution;
83
+ }
84
+ }
85
+ const kind = action.kind;
86
+ if (kind === "mcp" || getMcpTaskConfig(action)) {
87
+ return resolveMcpEffect(action, options);
88
+ }
89
+ const tasksMuxResult = await resolveViaTasksMuxIfRoutable(action, options, rl, json, askUserQuestionHandler);
90
+ if (tasksMuxResult) {
91
+ return tasksMuxResult;
92
+ }
93
+ if (kind === "node" || kind === "orchestrator_task") {
94
+ const meta = action.taskDef?.metadata;
95
+ const prompt = typeof meta?.prompt === "string"
96
+ ? meta.prompt
97
+ : action.taskDef?.title ?? `Execute task ${action.taskId ?? action.effectId}`;
98
+ return (0, effectsHelpers_1.invokePromptEffect)(action, discovered ? (0, utils_1.resolveTaskHarness)(action, harnessName, discovered) : harnessName, prompt, options, piSession);
99
+ }
100
+ if (kind === "shell") {
101
+ const shellDef = action.taskDef?.shell;
102
+ const shellMeta = action.taskDef?.metadata;
103
+ const command = typeof shellDef?.command === "string"
104
+ ? shellDef.command
105
+ : typeof shellMeta?.command === "string"
106
+ ? shellMeta.command
107
+ : "echo";
108
+ const shellArgs = Array.isArray(shellDef?.args)
109
+ ? shellDef.args.filter((arg) => typeof arg === "string")
110
+ : Array.isArray(shellMeta?.args)
111
+ ? shellMeta.args.filter((arg) => typeof arg === "string")
112
+ : [];
113
+ const cwd = typeof shellDef?.cwd === "string"
114
+ ? shellDef.cwd
115
+ : typeof shellMeta?.cwd === "string"
116
+ ? shellMeta.cwd
117
+ : options.workspace;
118
+ if (piSession) {
119
+ const bashResult = await piSession.executeBash([command, ...shellArgs.map(utils_1.shellQuoteArg)].join(" "));
120
+ if (bashResult.exitCode === 0) {
121
+ return { status: "ok", value: bashResult.output, stdout: bashResult.output };
122
+ }
123
+ return {
124
+ status: "ok",
125
+ value: {
126
+ success: false,
127
+ exitCode: bashResult.exitCode ?? 1,
128
+ stdout: bashResult.output,
129
+ stderr: "",
130
+ error: `Shell command exited with code ${bashResult.exitCode ?? "null"}`,
131
+ },
132
+ stdout: bashResult.output,
133
+ };
134
+ }
135
+ const shellResult = await (0, planProcess_1.execShellEffect)(command, shellArgs, cwd);
136
+ if (shellResult.exitCode === 0) {
137
+ return {
138
+ status: "ok",
139
+ value: shellResult.stdout,
140
+ stdout: shellResult.stdout,
141
+ stderr: shellResult.stderr,
142
+ };
143
+ }
144
+ return {
145
+ status: "ok",
146
+ value: {
147
+ success: false,
148
+ exitCode: shellResult.exitCode,
149
+ stdout: shellResult.stdout,
150
+ stderr: shellResult.stderr,
151
+ error: `Shell command exited with code ${shellResult.exitCode}`,
152
+ },
153
+ stdout: shellResult.stdout,
154
+ stderr: shellResult.stderr,
155
+ };
156
+ }
157
+ if (kind === "breakpoint") {
158
+ const chainResult = resolveConfiguredApprovalChain(action);
159
+ if (chainResult && chainResult.status !== "approved") {
160
+ return {
161
+ status: "ok",
162
+ value: {
163
+ approved: false,
164
+ option: chainResult.status,
165
+ approvalChain: chainResult,
166
+ },
167
+ };
168
+ }
169
+ return resolveBreakpointLikeEffect(action, options, rl, json, askUserQuestionHandler);
170
+ }
171
+ if (kind === "sleep") {
172
+ const targetMs = action.taskDef?.sleep?.targetEpochMs;
173
+ if (typeof targetMs === "number") {
174
+ const delay = Math.max(0, targetMs - Date.now());
175
+ if (delay > 0) {
176
+ await new Promise((resolve) => setTimeout(resolve, delay));
177
+ }
178
+ }
179
+ return { status: "ok", value: { sleptUntil: new Date().toISOString() } };
180
+ }
181
+ if (kind === "agent") {
182
+ const prompt = (0, planProcess_1.buildAgentPrompt)(action.taskDef);
183
+ const taskHarness = discovered ? (0, utils_1.resolveTaskHarness)(action, harnessName, discovered) : harnessName;
184
+ if (taskHarness !== harnessName && !(0, utils_1.isInternalHarness)(taskHarness)) {
185
+ return (0, effectsHelpers_1.invokeAgentHarness)(action, taskHarness, prompt, options);
186
+ }
187
+ if (piSession) {
188
+ const piResult = await (0, utils_1.promptPiWithRetry)({
189
+ session: piSession,
190
+ message: prompt,
191
+ timeout: utils_1.WORKER_TIMEOUT_MS,
192
+ label: `effect ${action.effectId}`,
193
+ });
194
+ return {
195
+ status: piResult.success ? "ok" : "error",
196
+ value: piResult.success
197
+ ? (0, planProcess_1.coerceAgentResultValue)(action.taskDef, piResult.output)
198
+ : undefined,
199
+ error: piResult.success ? undefined : new Error(piResult.output),
200
+ stdout: piResult.output,
201
+ };
202
+ }
203
+ return (0, effectsHelpers_1.invokeAgentHarness)(action, taskHarness, prompt, options);
204
+ }
205
+ if (kind === "subprocess") {
206
+ return invokeSubprocessEffect(action, discovered ? (0, utils_1.resolveTaskHarness)(action, harnessName, discovered) : harnessName, options, discovered, rl, json, askUserQuestionHandler);
207
+ }
208
+ const fallbackPrompt = action.taskDef?.title ?? `Handle effect ${action.effectId} (kind: ${kind})`;
209
+ return (0, effectsHelpers_1.invokePromptEffect)(action, harnessName, fallbackPrompt, options, undefined);
210
+ }
211
+ function getMcpTaskConfig(action) {
212
+ const taskDef = action.taskDef;
213
+ const direct = taskDef?.mcp;
214
+ if (isPlainRecord(direct)) {
215
+ return direct;
216
+ }
217
+ const metadata = taskDef?.metadata;
218
+ if (isPlainRecord(metadata) && isPlainRecord(metadata.mcp)) {
219
+ return metadata.mcp;
220
+ }
221
+ return undefined;
222
+ }
223
+ function getMcpRequest(action, options) {
224
+ const config = getMcpTaskConfig(action);
225
+ if (!config) {
226
+ throw new Error(`MCP effect ${action.effectId} is missing taskDef.mcp configuration`);
227
+ }
228
+ const qualifiedName = typeof config.qualifiedName === "string"
229
+ ? config.qualifiedName
230
+ : typeof config.tool === "string"
231
+ ? config.tool
232
+ : undefined;
233
+ const colonIdx = qualifiedName?.indexOf(":") ?? -1;
234
+ const serverName = typeof config.serverName === "string"
235
+ ? config.serverName
236
+ : colonIdx > 0 && qualifiedName
237
+ ? qualifiedName.slice(0, colonIdx)
238
+ : undefined;
239
+ const toolName = typeof config.toolName === "string"
240
+ ? config.toolName
241
+ : colonIdx > 0 && qualifiedName
242
+ ? qualifiedName.slice(colonIdx + 1)
243
+ : undefined;
244
+ if (!serverName || !toolName) {
245
+ throw new Error(`MCP effect ${action.effectId} requires serverName and toolName`);
246
+ }
247
+ const args = isPlainRecord(config.args) ? config.args : {};
248
+ const context = {
249
+ ...(isPlainRecord(args.context) ? args.context : {}),
250
+ ...(options.runId ? { runId: options.runId } : {}),
251
+ ...(options.runDir ? { runDir: options.runDir } : {}),
252
+ ...(options.sessionId ? { sessionId: options.sessionId } : {}),
253
+ ...(options.workspace ? { workspace: options.workspace } : {}),
254
+ };
255
+ return {
256
+ serverName,
257
+ toolName,
258
+ args: {
259
+ ...args,
260
+ context,
261
+ },
262
+ };
263
+ }
264
+ async function resolveMcpExecutor(options) {
265
+ if (options.mcp?.executor) {
266
+ return options.mcp.executor;
267
+ }
268
+ const manager = options.mcp?.manager ?? (options.mcp?.transportFactory
269
+ ? new manager_1.McpClientManager({
270
+ stateDir: options.mcp.stateDir ?? options.runDir ?? process.cwd(),
271
+ transportFactory: options.mcp.transportFactory,
272
+ })
273
+ : undefined);
274
+ if (!manager) {
275
+ throw new Error("MCP effect routing requires an executor, manager, or transportFactory");
276
+ }
277
+ await manager.initialize(options.mcp?.autoConnect ?? true);
278
+ const registry = options.mcp?.registry ?? new toolRegistry_1.McpToolRegistry(manager, {
279
+ cacheTtlMs: options.mcp?.cacheTtlMs,
280
+ unifiedRegistry: options.mcp?.toolRegistry,
281
+ mcpBridge: options.mcp?.mcpBridge,
282
+ });
283
+ await registry.refreshAll();
284
+ return new executor_1.McpToolExecutor(manager);
285
+ }
286
+ function mcpResultToStdout(result) {
287
+ return result.content
288
+ .map((item) => typeof item.text === "string" ? item.text : typeof item.data === "string" ? item.data : "")
289
+ .filter(Boolean)
290
+ .join("\n");
291
+ }
292
+ function streamMcpOutput(text, streaming) {
293
+ if (!streaming?.onLine || !text) {
294
+ return;
295
+ }
296
+ for (const line of text.split(/\r?\n/)) {
297
+ if (line.length > 0) {
298
+ streaming.onLine(line, "stdout");
299
+ }
300
+ }
301
+ }
302
+ async function resolveMcpEffect(action, options) {
303
+ const executor = await resolveMcpExecutor(options);
304
+ const request = getMcpRequest(action, options);
305
+ const result = options.mcp?.dispatcher
306
+ ? await dispatchMcpTool(options.mcp.dispatcher, executor, request, options)
307
+ : await executor.execute(request);
308
+ const stdout = mcpResultToStdout(result);
309
+ streamMcpOutput(stdout, options.streaming);
310
+ return {
311
+ status: result.success ? "ok" : "error",
312
+ value: result,
313
+ error: result.success ? undefined : new Error(result.error ?? stdout),
314
+ stdout,
315
+ stderr: result.success ? undefined : result.error,
316
+ };
317
+ }
318
+ async function dispatchMcpTool(dispatcher, executor, request, options) {
319
+ const dispatched = await dispatcher.dispatch({
320
+ toolName: request.toolName,
321
+ input: request.args,
322
+ caller: "agent-platform:mcp",
323
+ ...(options.runId ? { runId: options.runId } : {}),
324
+ ...(options.sessionId ? { sessionId: options.sessionId } : {}),
325
+ }, async () => executor.execute(request));
326
+ if (dispatched.error) {
327
+ return {
328
+ success: false,
329
+ content: [],
330
+ error: typeof dispatched.error === "string"
331
+ ? dispatched.error
332
+ : dispatched.error.message ?? "MCP tool dispatch failed",
333
+ durationMs: dispatched.durationMs,
334
+ };
335
+ }
336
+ return dispatched.output;
337
+ }
338
+ function resolveConfiguredApprovalChain(action) {
339
+ const metadata = action.taskDef?.metadata;
340
+ if (!isPlainRecord(metadata)) {
341
+ return undefined;
342
+ }
343
+ if (!isApprovalChainDefinition(metadata.approvalChain) || !isApprovalChainState(metadata.approvalChainState)) {
344
+ return undefined;
345
+ }
346
+ return (0, approvalChains_1.evaluateApprovalChain)(metadata.approvalChain, metadata.approvalChainState);
347
+ }
348
+ function isApprovalChainDefinition(value) {
349
+ return isPlainRecord(value)
350
+ && typeof value.chainId === "string"
351
+ && Array.isArray(value.steps);
352
+ }
353
+ function isApprovalChainState(value) {
354
+ return isPlainRecord(value)
355
+ && typeof value.chainId === "string"
356
+ && typeof value.currentStepIndex === "number"
357
+ && Array.isArray(value.completedSteps);
358
+ }
359
+ async function applyPostEffectOrchestrationOverlays(args) {
360
+ const result = {};
361
+ const updateSessionCost = args.updateSessionCost ?? cost_1.updateSessionCost;
362
+ const checkBudget = args.checkBudget ?? cost_1.checkBudget;
363
+ const compactSession = args.compactSession ?? compaction_1.compactSession;
364
+ const shouldAutoCompact = args.shouldAutoCompact ?? compaction_1.shouldAutoCompact;
365
+ const markThresholdsTriggered = args.markThresholdsTriggered ?? cost_1.markThresholdsTriggered;
366
+ const setSessionPaused = args.setSessionPaused ?? cost_1.setSessionPaused;
367
+ const addDecision = args.addDecision ?? history_1.addDecision;
368
+ const saveContextSnapshot = args.saveContextSnapshot ?? history_1.saveContextSnapshot;
369
+ if (args.stateDir && args.sessionId && args.runId && args.effectCost) {
370
+ const costState = await updateSessionCost(args.stateDir, args.sessionId, {
371
+ runId: args.runId,
372
+ costUsd: args.effectCost.totalCostUsd ?? 0,
373
+ inputTokens: args.effectCost.inputTokens ?? 0,
374
+ outputTokens: args.effectCost.outputTokens ?? 0,
375
+ });
376
+ result.budget = checkBudget(costState);
377
+ await markThresholdsTriggered(args.stateDir, args.sessionId, result.budget.alerts.map((alert) => alert.thresholdPct));
378
+ if (result.budget.shouldPause) {
379
+ await setSessionPaused(args.stateDir, args.sessionId, true);
380
+ result.budgetEnforcement = {
381
+ paused: true,
382
+ pauseReason: result.budget.pauseReason,
383
+ };
384
+ }
385
+ else {
386
+ result.budgetEnforcement = { paused: false };
387
+ }
388
+ }
389
+ if (args.stateDir && args.sessionId && args.runId && args.effectSummary) {
390
+ const title = args.effectSummary.title ?? args.effectSummary.taskId ?? args.effectSummary.effectId;
391
+ await addDecision(args.stateDir, args.sessionId, {
392
+ runId: args.runId,
393
+ description: `Resolved ${args.effectSummary.kind ?? "unknown"} effect: ${title}`,
394
+ rationale: `Effect ${args.effectSummary.effectId} completed with status ${args.effectSummary.status}`,
395
+ });
396
+ await saveContextSnapshot(args.stateDir, args.sessionId, {
397
+ runId: args.runId,
398
+ snapshot: {
399
+ effectId: args.effectSummary.effectId,
400
+ taskId: args.effectSummary.taskId,
401
+ kind: args.effectSummary.kind,
402
+ title: args.effectSummary.title,
403
+ status: args.effectSummary.status,
404
+ },
405
+ });
406
+ }
407
+ if (args.stateDir &&
408
+ args.sessionId &&
409
+ args.runsDir &&
410
+ args.compactionConfig &&
411
+ typeof args.estimatedStateTokens === "number" &&
412
+ shouldAutoCompact(args.estimatedStateTokens, args.compactionConfig)) {
413
+ result.compaction = {
414
+ triggered: true,
415
+ results: await compactSession(args.stateDir, args.sessionId, args.runsDir, args.compactionConfig),
416
+ };
417
+ }
418
+ else {
419
+ result.compaction = { triggered: false, results: [] };
420
+ }
421
+ return result;
422
+ }
423
+ async function resolveViaTasksMuxIfRoutable(action, options, rl, json, askUserQuestionHandler) {
424
+ if (action.kind !== "agent" && action.kind !== "breakpoint") {
425
+ return undefined;
426
+ }
427
+ let adapter;
428
+ try {
429
+ adapter = await importOptionalModule("@a5c-ai/tasks-adapter");
430
+ }
431
+ catch {
432
+ return undefined;
433
+ }
434
+ if (typeof adapter.routeTask !== "function") {
435
+ return undefined;
436
+ }
437
+ const decision = adapter.routeTask(action.taskDef);
438
+ if (decision.responderType === "internal") {
439
+ return undefined;
440
+ }
441
+ if (decision.responderType === "human") {
442
+ return resolveBreakpointLikeEffect(action, options, rl, json, askUserQuestionHandler);
443
+ }
444
+ if (decision.responderType === "tracker") {
445
+ if (decision.unavailable) {
446
+ return {
447
+ status: "ok",
448
+ value: {
449
+ success: false,
450
+ routedThrough: "tasks-adapter",
451
+ responderType: "tracker",
452
+ error: decision.reason ?? "ExternalTrackerBackend unavailable",
453
+ },
454
+ stdout: decision.reason,
455
+ };
456
+ }
457
+ return undefined;
458
+ }
459
+ if (decision.responderType !== "agent") {
460
+ return undefined;
461
+ }
462
+ const fallbackToInternal = shouldFallbackExternalAgentToInternal(action.taskDef);
463
+ if (typeof adapter.AgentMuxResponderBackend !== "function") {
464
+ if (fallbackToInternal) {
465
+ return undefined;
466
+ }
467
+ return {
468
+ status: "error",
469
+ error: new Error("tasks-adapter AgentMuxResponderBackend is unavailable"),
470
+ };
471
+ }
472
+ const prompt = (0, planProcess_1.buildAgentPrompt)(action.taskDef);
473
+ let breakpoint;
474
+ try {
475
+ const backend = new adapter.AgentMuxResponderBackend({
476
+ adapter: decision.responder?.adapter ?? decision.responder?.id,
477
+ model: decision.responder?.model ?? options.model,
478
+ cwd: options.workspace,
479
+ });
480
+ breakpoint = await backend.submitBreakpoint({
481
+ text: prompt,
482
+ context: {
483
+ description: action.taskDef?.title ?? action.taskId ?? action.effectId,
484
+ codeSnippets: [],
485
+ fileReferences: [],
486
+ tags: action.labels ?? [],
487
+ },
488
+ routing: {
489
+ strategy: "single",
490
+ targetResponders: decision.responder?.id ? [decision.responder.id] : [],
491
+ timeoutMs: readExternalAgentTimeoutMs(action.taskDef) ?? 300_000,
492
+ presentToUser: false,
493
+ responderType: "agent",
494
+ adapter: decision.responder?.adapter ?? decision.responder?.id,
495
+ model: decision.responder?.model ?? options.model,
496
+ },
497
+ });
498
+ }
499
+ catch (err) {
500
+ if (fallbackToInternal) {
501
+ return undefined;
502
+ }
503
+ return {
504
+ status: "error",
505
+ error: err instanceof Error ? err : new Error(String(err)),
506
+ };
507
+ }
508
+ const answer = breakpoint.answers[0];
509
+ return {
510
+ status: "ok",
511
+ value: (0, planProcess_1.coerceAgentResultValue)(action.taskDef, answer?.text ?? ""),
512
+ stdout: answer?.text ?? "",
513
+ };
514
+ }
515
+ async function resolveBreakpointLikeEffect(action, options, rl, json, askUserQuestionHandler) {
516
+ const question = action.taskDef?.question
517
+ ?? action.taskDef?.title
518
+ ?? "Breakpoint reached. Continue?";
519
+ const approvalPrompt = (0, utils_1.createApprovalAskUserQuestion)(question);
520
+ const approvalKey = approvalPrompt.questions[0]?.header ?? "Decision";
521
+ if (options.interactive && rl) {
522
+ if (!json) {
523
+ process.stderr.write(`\n${utils_1.YELLOW}${utils_1.BOLD}BREAKPOINT ${question}\n`);
524
+ }
525
+ const { promptAskUserQuestionWithReadline } = await Promise.resolve().then(() => __importStar(require("../../../../interaction")));
526
+ const response = await promptAskUserQuestionWithReadline(rl, approvalPrompt);
527
+ return (0, effectsHelpers_1.buildBreakpointResult)(response, approvalKey);
528
+ }
529
+ if (options.interactive && askUserQuestionHandler) {
530
+ const response = await askUserQuestionHandler(approvalPrompt);
531
+ return (0, effectsHelpers_1.buildBreakpointResult)(response, approvalKey);
532
+ }
533
+ return (0, effectsHelpers_1.buildBreakpointResult)((0, utils_1.createAskUserQuestionResponse)(approvalPrompt, { [approvalKey]: "Approve" }), approvalKey);
534
+ }
535
+ function shouldFallbackExternalAgentToInternal(taskDef) {
536
+ const agent = isPlainRecord(taskDef?.agent) ? taskDef.agent : {};
537
+ const metadata = isPlainRecord(taskDef?.metadata) ? taskDef.metadata : {};
538
+ return agent.fallbackToInternal === true
539
+ || metadata.fallbackToInternal === true
540
+ || agent.fallbackType === "internal"
541
+ || metadata.fallbackType === "internal";
542
+ }
543
+ function readExternalAgentTimeoutMs(taskDef) {
544
+ const agent = isPlainRecord(taskDef?.agent) ? taskDef.agent : {};
545
+ return typeof agent.timeoutMs === "number" ? agent.timeoutMs : undefined;
546
+ }
547
+ function parseSubprocessSpec(action, workspace) {
548
+ const subprocess = action.taskDef?.subprocess;
549
+ if (!subprocess || typeof subprocess.processPath !== "string" || !subprocess.processPath.trim()) {
550
+ throw new Error(`Subprocess effect ${action.effectId} is missing subprocess.processPath`);
551
+ }
552
+ const resolvedProcessPath = path.isAbsolute(subprocess.processPath)
553
+ ? path.resolve(subprocess.processPath)
554
+ : path.resolve(workspace ?? process.cwd(), subprocess.processPath);
555
+ const processId = typeof subprocess.processId === "string" && subprocess.processId.trim()
556
+ ? subprocess.processId.trim()
557
+ : path.basename(resolvedProcessPath, path.extname(resolvedProcessPath));
558
+ return {
559
+ processPath: resolvedProcessPath,
560
+ exportName: typeof subprocess.exportName === "string" ? subprocess.exportName : undefined,
561
+ processId,
562
+ prompt: typeof subprocess.prompt === "string" ? subprocess.prompt : undefined,
563
+ inputs: subprocess.inputs,
564
+ inputSchema: isPlainRecord(subprocess.inputSchema) ? subprocess.inputSchema : undefined,
565
+ outputSchema: isPlainRecord(subprocess.outputSchema) ? subprocess.outputSchema : undefined,
566
+ harness: typeof subprocess.harness === "string" ? subprocess.harness : undefined,
567
+ model: typeof subprocess.model === "string" ? subprocess.model : undefined,
568
+ maxIterations: typeof subprocess.maxIterations === "number" ? subprocess.maxIterations : undefined,
569
+ shareSession: subprocess.shareSession !== false,
570
+ metadata: subprocess.metadata,
571
+ };
572
+ }
573
+ function isPlainRecord(value) {
574
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
575
+ }
576
+ function summarizeSubprocessValue(value) {
577
+ if (typeof value === "string") {
578
+ return value.length > 240 ? `${value.slice(0, 237)}...` : value;
579
+ }
580
+ if (value instanceof Error) {
581
+ return value.message;
582
+ }
583
+ try {
584
+ const serialized = JSON.stringify(value);
585
+ return serialized.length > 240 ? `${serialized.slice(0, 237)}...` : serialized;
586
+ }
587
+ catch {
588
+ return String(value);
589
+ }
590
+ }
591
+ async function disposeWorkerSession(session) {
592
+ if (!session) {
593
+ return;
594
+ }
595
+ await session.abort().catch(() => undefined);
596
+ session.dispose();
597
+ }
598
+ async function invokeSubprocessEffect(action, harnessName, options, discovered, rl, json, askUserQuestionHandler) {
599
+ if (!options.runsDir || !options.runId) {
600
+ return {
601
+ status: "error",
602
+ error: new Error("Subprocess effects require runsDir and parent runId in the harness resolver."),
603
+ };
604
+ }
605
+ const spec = parseSubprocessSpec(action, options.workspace);
606
+ const childHarness = spec.harness ?? harnessName;
607
+ const childModel = spec.model ?? options.model;
608
+ const maxIterations = spec.maxIterations ?? options.maxIterations ?? 65_000;
609
+ const childPrompt = spec.prompt ?? action.taskDef?.title ?? `Run subprocess ${spec.processId}`;
610
+ const childRun = await (0, babysitter_sdk_1.createRun)({
611
+ runsDir: options.runsDir,
612
+ harness: childHarness,
613
+ process: {
614
+ processId: spec.processId,
615
+ importPath: spec.processPath,
616
+ ...(spec.exportName ? { exportName: spec.exportName } : {}),
617
+ },
618
+ prompt: spec.prompt,
619
+ inputs: spec.inputs,
620
+ inputSchema: spec.inputSchema,
621
+ outputSchema: spec.outputSchema,
622
+ metadata: spec.metadata,
623
+ nested: {
624
+ parentRunId: options.runId,
625
+ parentEffectId: action.effectId,
626
+ parentInvocationKey: action.invocationKey,
627
+ ...(spec.shareSession && options.sessionId ? { sessionId: options.sessionId } : {}),
628
+ shareSession: spec.shareSession,
629
+ skipRunStartHook: true,
630
+ },
631
+ });
632
+ (0, utils_1.emitAmuxEvent)({
633
+ type: "subagent_spawn",
634
+ runId: options.runId,
635
+ agent: "babysitter",
636
+ timestamp: new Date().toISOString(),
637
+ subagentId: childRun.runId,
638
+ agentName: "babysitter",
639
+ prompt: childPrompt,
640
+ }, Boolean(json), options.outputMode);
641
+ for (let iteration = 0; iteration < maxIterations; iteration += 1) {
642
+ const iterationResult = await orchestrateIterationWithProcessLoadRetry({ runDir: childRun.runDir });
643
+ if (iterationResult.status === "waiting") {
644
+ await (0, dispatch_1.dispatchEffectActions)({
645
+ actions: iterationResult.nextActions,
646
+ concurrentEffects: (0, dispatch_1.harnessSupportsConcurrentEffects)(childHarness, discovered),
647
+ resolveAction: async (childAction) => {
648
+ const effectiveHarness = discovered
649
+ ? (0, utils_1.resolveTaskHarness)(childAction, childHarness, discovered)
650
+ : childHarness;
651
+ let workerSession = null;
652
+ let workerSessionFactory;
653
+ if (childAction.kind === "shell" || (0, utils_1.isInternalHarness)(effectiveHarness)) {
654
+ const createWorkerSession = () => (0, utils_1.createAgentCoreSession)((0, utils_1.buildPiWorkerSessionOptions)({
655
+ action: childAction,
656
+ workspace: options.workspace,
657
+ model: childModel,
658
+ }));
659
+ workerSession = createWorkerSession();
660
+ workerSessionFactory = createWorkerSession;
661
+ }
662
+ try {
663
+ const childEffectResult = await resolveEffectWithRetry(childAction, childHarness, {
664
+ workspace: options.workspace,
665
+ model: childModel,
666
+ interactive: options.interactive,
667
+ compressionConfig: options.compressionConfig,
668
+ streaming: options.streaming,
669
+ runsDir: options.runsDir,
670
+ runId: childRun.runId,
671
+ runDir: childRun.runDir,
672
+ sessionId: spec.shareSession ? options.sessionId : undefined,
673
+ maxIterations,
674
+ verbose: options.verbose,
675
+ outputMode: options.outputMode,
676
+ }, workerSession, discovered, rl, json, workerSessionFactory, disposeWorkerSession, askUserQuestionHandler);
677
+ return childEffectResult;
678
+ }
679
+ finally {
680
+ await disposeWorkerSession(workerSession);
681
+ }
682
+ },
683
+ commitAction: async ({ action: childAction, result: childEffectResult, startedAt, finishedAt }) => {
684
+ await (0, babysitter_sdk_1.commitEffectResult)({
685
+ runDir: childRun.runDir,
686
+ effectId: childAction.effectId,
687
+ invocationKey: childAction.invocationKey,
688
+ result: {
689
+ status: childEffectResult.status,
690
+ value: childEffectResult.value,
691
+ error: childEffectResult.error,
692
+ stdout: childEffectResult.stdout,
693
+ stderr: childEffectResult.stderr,
694
+ startedAt,
695
+ finishedAt,
696
+ },
697
+ });
698
+ },
699
+ });
700
+ continue;
701
+ }
702
+ if (iterationResult.status === "completed") {
703
+ (0, utils_1.emitAmuxEvent)({
704
+ type: "subagent_result",
705
+ runId: options.runId,
706
+ agent: "babysitter",
707
+ timestamp: new Date().toISOString(),
708
+ subagentId: childRun.runId,
709
+ agentName: "babysitter",
710
+ summary: summarizeSubprocessValue(iterationResult.output),
711
+ }, Boolean(json), options.outputMode);
712
+ return {
713
+ status: "ok",
714
+ value: {
715
+ runId: childRun.runId,
716
+ runDir: childRun.runDir,
717
+ output: iterationResult.output,
718
+ },
719
+ };
720
+ }
721
+ const message = iterationResult.status === "halted"
722
+ ? iterationResult.reason
723
+ : "error" in iterationResult && iterationResult.error instanceof Error
724
+ ? iterationResult.error.message
725
+ : "error" in iterationResult
726
+ ? summarizeSubprocessValue(iterationResult.error)
727
+ : summarizeSubprocessValue(iterationResult);
728
+ (0, utils_1.emitAmuxEvent)({
729
+ type: "subagent_error",
730
+ runId: options.runId,
731
+ agent: "babysitter",
732
+ timestamp: new Date().toISOString(),
733
+ subagentId: childRun.runId,
734
+ agentName: "babysitter",
735
+ error: message,
736
+ }, Boolean(json), options.outputMode);
737
+ return {
738
+ status: "error",
739
+ error: new Error(`Nested run ${childRun.runId} failed: ${message}`),
740
+ stderr: message,
741
+ };
742
+ }
743
+ const timeoutMessage = `Nested run ${childRun.runId} reached max iterations (${maxIterations}) without completion.`;
744
+ (0, utils_1.emitAmuxEvent)({
745
+ type: "subagent_error",
746
+ runId: options.runId,
747
+ agent: "babysitter",
748
+ timestamp: new Date().toISOString(),
749
+ subagentId: childRun.runId,
750
+ agentName: "babysitter",
751
+ error: timeoutMessage,
752
+ }, Boolean(json), options.outputMode);
753
+ return {
754
+ status: "error",
755
+ error: new Error(timeoutMessage),
756
+ stderr: timeoutMessage,
757
+ };
758
+ }
759
+ async function resolveEffectWithRetry(action, harnessName, options, piSession, discovered, rl, json, piSessionFactory, disposePiSession, askUserQuestionHandler) {
760
+ const config = { ...utils_1.DEFAULT_EFFECT_RETRY_CONFIG, ...options.retryConfig };
761
+ const metadata = action.taskDef?.metadata;
762
+ if (typeof metadata?.maxRetries === "number") {
763
+ config.maxRetries = metadata.maxRetries;
764
+ }
765
+ if (metadata?.noRetry === true) {
766
+ config.maxRetries = 0;
767
+ }
768
+ if (config.nonRetryableKinds.includes(action.kind)) {
769
+ return resolveEffect(action, harnessName, options, piSession, discovered, rl, json, askUserQuestionHandler);
770
+ }
771
+ let lastResult;
772
+ let currentPiSession = piSession;
773
+ for (let attempt = 0; attempt <= config.maxRetries; attempt += 1) {
774
+ try {
775
+ lastResult = await resolveEffect(action, harnessName, options, currentPiSession, discovered, rl, json, askUserQuestionHandler);
776
+ if (lastResult.status === "ok") {
777
+ return lastResult;
778
+ }
779
+ if (attempt >= config.maxRetries ||
780
+ !(0, effectsHelpers_1.isRetryableEffectError)(lastResult.error instanceof Error
781
+ ? lastResult.error.message
782
+ : String(lastResult.error ?? ""))) {
783
+ return lastResult;
784
+ }
785
+ }
786
+ catch (error) {
787
+ if (attempt >= config.maxRetries || !(0, effectsHelpers_1.isRetryableEffectError)(error)) {
788
+ return {
789
+ status: "error",
790
+ error: error instanceof Error ? error : new Error(String(error)),
791
+ stderr: error instanceof Error ? error.message : String(error),
792
+ };
793
+ }
794
+ lastResult = {
795
+ status: "error",
796
+ error: error instanceof Error ? error : new Error(String(error)),
797
+ };
798
+ }
799
+ process.stderr.write(`[babysitter] effect ${action.effectId ?? action.taskDef?.id ?? 'unknown'} retry ${attempt + 1}/${config.maxRetries}: ${lastResult?.error instanceof Error ? lastResult.error.message : String(lastResult?.error ?? 'unknown')}\n`);
800
+ const baseDelay = constants_1.EFFECT_RETRY_DELAYS_OVERRIDE
801
+ ? (constants_1.EFFECT_RETRY_DELAYS_OVERRIDE[attempt] ?? 0)
802
+ : Math.min(config.baseDelayMs * Math.pow(config.backoffMultiplier, attempt), config.maxDelayMs);
803
+ const jitter = constants_1.EFFECT_RETRY_DELAYS_OVERRIDE
804
+ ? 0
805
+ : baseDelay * 0.2 * (Math.random() * 2 - 1);
806
+ const delay = Math.max(0, Math.round(baseDelay + jitter));
807
+ if (currentPiSession && piSessionFactory) {
808
+ if (disposePiSession) {
809
+ await disposePiSession(currentPiSession);
810
+ }
811
+ else {
812
+ currentPiSession.dispose();
813
+ }
814
+ currentPiSession = piSessionFactory();
815
+ }
816
+ if (delay > 0) {
817
+ await new Promise((resolve) => setTimeout(resolve, delay));
818
+ }
819
+ }
820
+ return lastResult;
821
+ }
822
+ async function orchestrateIterationWithProcessLoadRetry(args) {
823
+ let attempt = 0;
824
+ for (;;) {
825
+ try {
826
+ return await (0, babysitter_sdk_1.orchestrateIteration)({
827
+ runDir: args.runDir,
828
+ subprocessSupport: "agent-platform",
829
+ });
830
+ }
831
+ catch (error) {
832
+ if (!(0, utils_1.isProcessModuleLoadFailure)(error) ||
833
+ attempt >= constants_1.PROCESS_MODULE_LOAD_RETRY_DELAYS_MS.length) {
834
+ throw error;
835
+ }
836
+ const delayMs = constants_1.PROCESS_MODULE_LOAD_RETRY_DELAYS_MS[attempt] ?? 0;
837
+ attempt += 1;
838
+ process.stderr.write(`[babysitter] process module load attempt ${attempt} failed: ${error instanceof Error ? error.message : String(error)}, retrying...\n`);
839
+ args.writeVerbose?.(`[phaseOrchestration retry] process module load failed for ${args.runDir}; retrying iteration import (attempt ${attempt}/${constants_1.PROCESS_MODULE_LOAD_RETRY_DELAYS_MS.length}) after ${delayMs}ms`);
840
+ args.writeVerboseData?.("phaseOrchestration retry cause", error instanceof Error
841
+ ? {
842
+ name: error.name,
843
+ message: error.message,
844
+ stack: error.stack,
845
+ cause: error.cause instanceof Error
846
+ ? {
847
+ name: error.cause.name,
848
+ message: error.cause.message,
849
+ stack: error.cause.stack,
850
+ }
851
+ : error.cause,
852
+ }
853
+ : error);
854
+ if (delayMs > 0) {
855
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
856
+ }
857
+ }
858
+ }
859
+ }