@a5c-ai/genty-platform 5.1.1-staging.0ad6ac75ae4a

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