@bastani/atomic 0.9.12-alpha.1 → 0.9.13-alpha.1

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 (265) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/builtin/intercom/CHANGELOG.md +12 -0
  3. package/dist/builtin/intercom/README.md +5 -12
  4. package/dist/builtin/intercom/broker/client.ts +11 -2
  5. package/dist/builtin/intercom/contact-supervisor-tool.ts +13 -3
  6. package/dist/builtin/intercom/index-heavy.ts +13 -3
  7. package/dist/builtin/intercom/index.ts +43 -19
  8. package/dist/builtin/intercom/intercom-utils.ts +15 -29
  9. package/dist/builtin/intercom/package.json +1 -1
  10. package/dist/builtin/intercom/source-ownership.ts +9 -12
  11. package/dist/builtin/mcp/CHANGELOG.md +12 -0
  12. package/dist/builtin/mcp/README.md +3 -1
  13. package/dist/builtin/mcp/index.ts +10 -16
  14. package/dist/builtin/mcp/package.json +1 -1
  15. package/dist/builtin/mcp/startup-warmup.ts +20 -8
  16. package/dist/builtin/subagents/CHANGELOG.md +36 -0
  17. package/dist/builtin/subagents/README.md +22 -30
  18. package/dist/builtin/subagents/package.json +1 -1
  19. package/dist/builtin/subagents/src/extension/doctor.ts +1 -1
  20. package/dist/builtin/subagents/src/extension/fanout-child.ts +76 -56
  21. package/dist/builtin/subagents/src/extension/index.ts +23 -32
  22. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +25 -44
  23. package/dist/builtin/subagents/src/intercom/result-intercom.ts +7 -7
  24. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +166 -434
  25. package/dist/builtin/subagents/src/runs/background/notify.ts +29 -8
  26. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +2 -2
  27. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +4 -4
  28. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +2 -2
  29. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +2 -2
  30. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +1 -281
  31. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +11 -75
  32. package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +457 -0
  33. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +119 -246
  34. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +1 -1
  35. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +18 -9
  36. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +1 -1
  37. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +4 -4
  38. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +1 -646
  39. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +2 -7
  40. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +5 -5
  41. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +7 -8
  42. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +14 -5
  43. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +158 -93
  44. package/dist/builtin/subagents/src/runs/inprocess/background-single.ts +179 -0
  45. package/dist/builtin/subagents/src/runs/inprocess/background.ts +89 -0
  46. package/dist/builtin/subagents/src/runs/inprocess/child-policy.ts +27 -0
  47. package/dist/builtin/subagents/src/runs/inprocess/control-registry.ts +55 -0
  48. package/dist/builtin/subagents/src/runs/inprocess/control-status.ts +106 -0
  49. package/dist/builtin/subagents/src/runs/inprocess/index.ts +50 -0
  50. package/dist/builtin/subagents/src/runs/inprocess/nested-routing.ts +218 -0
  51. package/dist/builtin/subagents/src/runs/{shared/subagent-prompt-runtime.ts → inprocess/prompt-behavior.ts} +37 -75
  52. package/dist/builtin/subagents/src/runs/inprocess/runner.ts +1138 -0
  53. package/dist/builtin/subagents/src/runs/{shared/nested-events.ts → inprocess/runtime-support/nested-api.ts} +13 -7
  54. package/dist/builtin/subagents/src/runs/{shared/nested-events-control.ts → inprocess/runtime-support/nested-control.ts} +18 -17
  55. package/dist/builtin/subagents/src/runs/{shared/nested-events-core.ts → inprocess/runtime-support/nested-core.ts} +14 -61
  56. package/dist/builtin/subagents/src/runs/{shared/nested-events-projection.ts → inprocess/runtime-support/nested-projection.ts} +4 -10
  57. package/dist/builtin/subagents/src/runs/{shared/nested-events-registry.ts → inprocess/runtime-support/nested-registry.ts} +19 -4
  58. package/dist/builtin/subagents/src/runs/{shared/nested-render.ts → inprocess/runtime-support/nested-rendering.ts} +3 -3
  59. package/dist/builtin/subagents/src/runs/{shared/nested-events-sanitize.ts → inprocess/runtime-support/nested-sanitize.ts} +3 -3
  60. package/dist/builtin/subagents/src/runs/inprocess.ts +1 -0
  61. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +10 -4
  62. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +0 -1
  63. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +15 -492
  64. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +13 -11
  65. package/dist/builtin/subagents/src/runs/shared/run-history.ts +3 -5
  66. package/dist/builtin/subagents/src/runs/shared/single-output.ts +4 -4
  67. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +5 -5
  68. package/dist/builtin/subagents/src/shared/types-async.ts +0 -1
  69. package/dist/builtin/subagents/src/shared/types-config.ts +18 -0
  70. package/dist/builtin/subagents/src/shared/types-results.ts +9 -2
  71. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +2 -3
  72. package/dist/builtin/subagents/src/slash/slash-live-state.ts +2 -2
  73. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +10 -4
  74. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +12 -11
  75. package/dist/builtin/subagents/src/tui/render-result-compact.ts +49 -12
  76. package/dist/builtin/subagents/src/tui/render-result.ts +46 -17
  77. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -1
  78. package/dist/builtin/subagents/src/tui/render-status-progress.ts +8 -5
  79. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +0 -8
  80. package/dist/builtin/subagents/src/tui/render-widget.ts +0 -24
  81. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  82. package/dist/builtin/web-access/package.json +1 -1
  83. package/dist/builtin/workflows/CHANGELOG.md +38 -0
  84. package/dist/builtin/workflows/README.md +13 -3
  85. package/dist/builtin/workflows/package.json +1 -1
  86. package/dist/builtin/workflows/src/durable/backend.ts +7 -0
  87. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +11 -1
  88. package/dist/builtin/workflows/src/durable/resume-runtime.ts +1 -0
  89. package/dist/builtin/workflows/src/durable/tool-primitive.ts +4 -28
  90. package/dist/builtin/workflows/src/durable/types.ts +5 -0
  91. package/dist/builtin/workflows/src/engine/run.ts +17 -1
  92. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +12 -39
  93. package/dist/builtin/workflows/src/extension/config-file-loader.ts +10 -1
  94. package/dist/builtin/workflows/src/extension/config-loader.ts +1 -1
  95. package/dist/builtin/workflows/src/extension/dispatcher.ts +4 -0
  96. package/dist/builtin/workflows/src/extension/index.bundle.mjs +1151 -737
  97. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +303 -38
  98. package/dist/builtin/workflows/src/extension/render-result.ts +4 -0
  99. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +6 -3
  100. package/dist/builtin/workflows/src/extension/runtime.ts +7 -1
  101. package/dist/builtin/workflows/src/extension/wiring.ts +53 -11
  102. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +12 -3
  103. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +5 -2
  104. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +9 -7
  105. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +11 -0
  106. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +18 -1
  107. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +10 -8
  108. package/dist/builtin/workflows/src/extension/workflow-tool.ts +9 -4
  109. package/dist/builtin/workflows/src/runs/background/quit.ts +28 -4
  110. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +2 -1
  111. package/dist/builtin/workflows/src/runs/background/status.ts +55 -8
  112. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +4 -0
  113. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +3 -1
  114. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +1 -1
  115. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +1 -1
  116. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +688 -38
  117. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +3 -1
  118. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +19 -514
  119. package/dist/builtin/workflows/src/runs/shared/retry.ts +44 -0
  120. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +5 -0
  121. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +6 -0
  122. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +5 -1
  123. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +5 -0
  124. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +5 -0
  125. package/dist/builtin/workflows/src/shared/persistence-restore.ts +3 -0
  126. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
  127. package/dist/builtin/workflows/src/shared/run-indicator-status.ts +75 -0
  128. package/dist/builtin/workflows/src/shared/store-public-types.ts +43 -7
  129. package/dist/builtin/workflows/src/shared/store-run-methods.ts +42 -8
  130. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +31 -8
  131. package/dist/builtin/workflows/src/shared/store-types.ts +34 -0
  132. package/dist/builtin/workflows/src/shared/timing.ts +10 -0
  133. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +22 -2
  134. package/dist/builtin/workflows/src/tui/session-list.ts +1 -1
  135. package/dist/builtin/workflows/src/tui/session-overlays.ts +14 -10
  136. package/dist/builtin/workflows/src/tui/session-picker.ts +20 -4
  137. package/dist/builtin/workflows/src/tui/status-list.ts +31 -47
  138. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +9 -1
  139. package/dist/builtin/workflows/src/tui/widget.ts +16 -46
  140. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  141. package/dist/core/agent-session-auto-compaction.js +54 -11
  142. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  143. package/dist/core/agent-session-events.d.ts.map +1 -1
  144. package/dist/core/agent-session-events.js +49 -14
  145. package/dist/core/agent-session-events.js.map +1 -1
  146. package/dist/core/agent-session-methods.d.ts +13 -0
  147. package/dist/core/agent-session-methods.d.ts.map +1 -1
  148. package/dist/core/agent-session-methods.js.map +1 -1
  149. package/dist/core/agent-session-models.d.ts.map +1 -1
  150. package/dist/core/agent-session-models.js +12 -1
  151. package/dist/core/agent-session-models.js.map +1 -1
  152. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  153. package/dist/core/agent-session-prompt.js +4 -0
  154. package/dist/core/agent-session-prompt.js.map +1 -1
  155. package/dist/core/agent-session-retry.d.ts +21 -4
  156. package/dist/core/agent-session-retry.d.ts.map +1 -1
  157. package/dist/core/agent-session-retry.js +232 -106
  158. package/dist/core/agent-session-retry.js.map +1 -1
  159. package/dist/core/agent-session-state.d.ts.map +1 -1
  160. package/dist/core/agent-session-state.js +2 -1
  161. package/dist/core/agent-session-state.js.map +1 -1
  162. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  163. package/dist/core/agent-session-tool-hooks.js +12 -0
  164. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  165. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  166. package/dist/core/agent-session-tool-registry.js +1 -1
  167. package/dist/core/agent-session-tool-registry.js.map +1 -1
  168. package/dist/core/agent-session-types.d.ts +3 -1
  169. package/dist/core/agent-session-types.d.ts.map +1 -1
  170. package/dist/core/agent-session-types.js.map +1 -1
  171. package/dist/core/agent-session.d.ts +12 -1
  172. package/dist/core/agent-session.d.ts.map +1 -1
  173. package/dist/core/agent-session.js +7 -0
  174. package/dist/core/agent-session.js.map +1 -1
  175. package/dist/core/extensions/context-types.d.ts +25 -0
  176. package/dist/core/extensions/context-types.d.ts.map +1 -1
  177. package/dist/core/extensions/context-types.js.map +1 -1
  178. package/dist/core/extensions/index.d.ts +1 -1
  179. package/dist/core/extensions/index.d.ts.map +1 -1
  180. package/dist/core/extensions/index.js.map +1 -1
  181. package/dist/core/extensions/runner-context.d.ts +2 -1
  182. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  183. package/dist/core/extensions/runner-context.js +4 -0
  184. package/dist/core/extensions/runner-context.js.map +1 -1
  185. package/dist/core/extensions/runner.d.ts +3 -2
  186. package/dist/core/extensions/runner.d.ts.map +1 -1
  187. package/dist/core/extensions/runner.js +3 -1
  188. package/dist/core/extensions/runner.js.map +1 -1
  189. package/dist/core/model-fallback-failures.d.ts +30 -0
  190. package/dist/core/model-fallback-failures.d.ts.map +1 -0
  191. package/dist/core/model-fallback-failures.js +610 -0
  192. package/dist/core/model-fallback-failures.js.map +1 -0
  193. package/dist/core/retry-policy.d.ts +30 -0
  194. package/dist/core/retry-policy.d.ts.map +1 -0
  195. package/dist/core/retry-policy.js +25 -0
  196. package/dist/core/retry-policy.js.map +1 -0
  197. package/dist/core/sdk-types.d.ts +8 -2
  198. package/dist/core/sdk-types.d.ts.map +1 -1
  199. package/dist/core/sdk-types.js.map +1 -1
  200. package/dist/core/sdk.d.ts.map +1 -1
  201. package/dist/core/sdk.js +6 -1
  202. package/dist/core/sdk.js.map +1 -1
  203. package/dist/core/session-manager-core.d.ts +2 -0
  204. package/dist/core/session-manager-core.d.ts.map +1 -1
  205. package/dist/core/session-manager-core.js +7 -0
  206. package/dist/core/session-manager-core.js.map +1 -1
  207. package/dist/index-extensions.d.ts +1 -1
  208. package/dist/index-extensions.d.ts.map +1 -1
  209. package/dist/index-extensions.js.map +1 -1
  210. package/dist/index.d.ts +3 -0
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +2 -0
  213. package/dist/index.js.map +1 -1
  214. package/docs/intercom.md +5 -10
  215. package/docs/settings.md +7 -1
  216. package/docs/subagents.md +19 -19
  217. package/docs/workflows.md +21 -5
  218. package/examples/extensions/gondolin/package-lock.json +3 -3
  219. package/npm-shrinkwrap.json +29 -29
  220. package/package.json +2 -2
  221. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +0 -112
  222. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +0 -543
  223. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +0 -140
  224. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +0 -279
  225. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +0 -99
  226. package/dist/builtin/subagents/src/runs/background/async-execution.ts +0 -17
  227. package/dist/builtin/subagents/src/runs/background/async-resume.ts +0 -402
  228. package/dist/builtin/subagents/src/runs/background/async-status.ts +0 -411
  229. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +0 -196
  230. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +0 -102
  231. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +0 -59
  232. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +0 -300
  233. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +0 -166
  234. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +0 -77
  235. package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +0 -48
  236. package/dist/builtin/subagents/src/runs/background/result-status.ts +0 -87
  237. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +0 -72
  238. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +0 -320
  239. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +0 -105
  240. package/dist/builtin/subagents/src/runs/background/run-status.ts +0 -358
  241. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +0 -457
  242. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +0 -376
  243. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +0 -150
  244. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +0 -109
  245. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +0 -128
  246. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +0 -309
  247. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +0 -173
  248. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +0 -578
  249. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +0 -330
  250. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +0 -330
  251. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +0 -210
  252. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +0 -69
  253. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +0 -90
  254. package/dist/builtin/subagents/src/runs/background/top-level-async.ts +0 -12
  255. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +0 -140
  256. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +0 -108
  257. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +0 -17
  258. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +0 -558
  259. package/dist/builtin/subagents/src/runs/shared/attempt-watchdog.ts +0 -126
  260. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +0 -39
  261. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +0 -339
  262. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +0 -165
  263. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +0 -21
  264. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +0 -86
  265. /package/dist/builtin/subagents/src/runs/{shared/nested-path.ts → inprocess/runtime-support/nested-paths.ts} +0 -0
@@ -1,15 +1,12 @@
1
1
  import * as path from "node:path";
2
- import type { ExtensionAPI, ExtensionContext } from "@bastani/atomic";
3
- import { createResultWatcher } from "../runs/background/result-watcher.ts";
4
- import { cleanupOldNestedRuntimeDirs } from "../runs/shared/nested-events.ts";
2
+ import type { ExtensionContext } from "@bastani/atomic";
3
+ import { cleanupOldNestedRuntimeDirs } from "../runs/inprocess/runtime-support/nested-api.ts";
5
4
  import { cleanupAllArtifactDirs, cleanupOldArtifacts, getArtifactsDir } from "../shared/artifacts.ts";
6
5
  import { cleanupOldChainDirs } from "../shared/settings.ts";
7
6
  import type { SubagentState } from "../shared/types.ts";
8
7
 
9
8
  export interface SubagentStartupMaintenance {
10
9
  scheduleStartupCleanup(): void;
11
- startResultWatcherDeferred(): void;
12
- primeExistingResultsDeferred(): void;
13
10
  cleanupSessionArtifactsDeferred(ctx: ExtensionContext): void;
14
11
  stop(): void;
15
12
  }
@@ -47,54 +44,48 @@ function swallowCleanup(task: () => void): void {
47
44
  } catch {}
48
45
  }
49
46
 
47
+ interface StartupMaintenanceOptions {
48
+ artifactCleanupDays: number;
49
+ resultsDir?: string;
50
+ resultTtlMs?: number;
51
+ scheduleMacrotask?: (task: () => void) => () => void;
52
+ scheduleDelayed?: (task: () => void, delayMs: number) => () => void;
53
+ }
54
+
55
+ export function createSubagentStartupMaintenance(
56
+ state: SubagentState,
57
+ options: StartupMaintenanceOptions,
58
+ ): SubagentStartupMaintenance;
50
59
  export function createSubagentStartupMaintenance(
51
- pi: ExtensionAPI,
60
+ _pi: unknown,
52
61
  state: SubagentState,
53
- options: {
54
- resultsDir: string;
55
- artifactCleanupDays: number;
56
- resultTtlMs: number;
57
- scheduleMacrotask?: (task: () => void) => () => void;
58
- scheduleDelayed?: (task: () => void, delayMs: number) => () => void;
59
- },
62
+ options: StartupMaintenanceOptions,
63
+ ): SubagentStartupMaintenance;
64
+ export function createSubagentStartupMaintenance(
65
+ _first: SubagentState | unknown,
66
+ second: StartupMaintenanceOptions | SubagentState,
67
+ third?: StartupMaintenanceOptions,
60
68
  ): SubagentStartupMaintenance {
61
- const { startResultWatcher, primeExistingResults, stopResultWatcher } = createResultWatcher(
62
- pi,
63
- state,
64
- options.resultsDir,
65
- options.resultTtlMs,
66
- );
69
+ const options = third ?? (second as StartupMaintenanceOptions);
67
70
  const cancelTasks = new Set<() => void>();
68
- // The sessions root derived from a host-provided (non-default, e.g. isolated
69
- // programmatic agentDir) session directory. When set, the global artifact scan
70
- // stays inside it instead of touching the real global/legacy sessions roots.
71
- // A custom session dir that does not follow the <agentDir>/sessions/<safe-cwd>
72
- // layout (the default layout the SDK derives for a programmatic agentDir, with
73
- // <safe-cwd> encoding the current working directory) yields no roots at all, so
74
- // cleanup never broadens into an arbitrary directory's siblings.
75
71
  let contextSessionsRoots: readonly string[] | undefined;
76
72
  const noteSessionContext = (ctx: ExtensionContext): void => {
77
73
  try {
78
74
  if (ctx.sessionManager.usesDefaultSessionDir()) {
79
- // Only a valid default-session context intentionally restores the
80
- // env/global cleanup roots.
81
75
  contextSessionsRoots = undefined;
82
76
  return;
83
77
  }
84
78
  const sessionDir = ctx.sessionManager.getSessionDir();
85
- // A partial or throwing context keeps the last validated root: destructive
86
- // cleanup must never broaden from an isolated root to the global roots on
87
- // the strength of an unusable context.
88
79
  if (!sessionDir) return;
89
80
  const parent = path.dirname(sessionDir);
90
81
  const safeCwd = `--${path
91
82
  .resolve(ctx.cwd)
92
83
  .replace(/^[/\\]/, "")
93
84
  .replace(/[/\\:]/g, "-")}--`;
94
- const followsAgentDirLayout = path.basename(parent) === "sessions" && path.basename(sessionDir) === safeCwd;
95
- contextSessionsRoots = followsAgentDirLayout ? [parent] : [];
85
+ contextSessionsRoots =
86
+ path.basename(parent) === "sessions" && path.basename(sessionDir) === safeCwd ? [parent] : [];
96
87
  } catch {
97
- // A stale or partial context leaves cleanup on the env/global fallback.
88
+ // A stale or partial context leaves cleanup on the last validated root.
98
89
  }
99
90
  };
100
91
  const schedule = (task: () => void): void => {
@@ -117,21 +108,12 @@ export function createSubagentStartupMaintenance(
117
108
  schedule(() => {
118
109
  swallowCleanup(cleanupOldChainDirs);
119
110
  swallowCleanup(() => cleanupOldNestedRuntimeDirs(options.artifactCleanupDays));
120
- // The global session-artifact scan can touch thousands of historical session
121
- // directories, so it waits until well after startup instead of running on the
122
- // activation macrotask.
123
111
  scheduleDelayed(
124
112
  () => swallowCleanup(() => cleanupAllArtifactDirs(options.artifactCleanupDays, contextSessionsRoots)),
125
113
  STARTUP_ARTIFACT_SCAN_DELAY_MS,
126
114
  );
127
115
  });
128
116
  },
129
- startResultWatcherDeferred() {
130
- schedule(startResultWatcher);
131
- },
132
- primeExistingResultsDeferred() {
133
- schedule(primeExistingResults);
134
- },
135
117
  cleanupSessionArtifactsDeferred(ctx) {
136
118
  noteSessionContext(ctx);
137
119
  let sessionFile: string | null | undefined;
@@ -148,7 +130,6 @@ export function createSubagentStartupMaintenance(
148
130
  stop() {
149
131
  for (const cancel of cancelTasks) cancel();
150
132
  cancelTasks.clear();
151
- stopResultWatcher();
152
133
  },
153
134
  };
154
135
  }
@@ -9,6 +9,7 @@ import {
9
9
  type SingleResult,
10
10
  SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT,
11
11
  SUBAGENT_RESULT_INTERCOM_EVENT,
12
+ type SubagentAttemptStatus,
12
13
  type SubagentResultIntercomChild,
13
14
  type SubagentResultIntercomPayload,
14
15
  type SubagentResultStatus,
@@ -16,18 +17,17 @@ import {
16
17
  } from "../shared/types.ts";
17
18
 
18
19
  export function resolveSubagentResultStatus(input: {
19
- exitCode?: number;
20
+ status?: SubagentAttemptStatus;
20
21
  success?: boolean;
21
22
  state?: string;
22
23
  interrupted?: boolean;
23
24
  detached?: boolean;
24
25
  }): SubagentResultStatus {
25
- if (input.detached) return "detached";
26
- if (input.interrupted || input.state === "paused") return "paused";
27
- if (typeof input.success === "boolean") return input.success ? "completed" : "failed";
28
- if (input.state === "complete") return "completed";
29
- if (input.state === "failed") return "failed";
30
- if (typeof input.exitCode === "number") return input.exitCode === 0 ? "completed" : "failed";
26
+ if (input.detached || input.status === "continued") return "detached";
27
+ if (input.interrupted || input.status === "interrupted" || input.state === "paused") return "paused";
28
+ if (input.status === "ok" || input.success === true || input.state === "complete") return "completed";
29
+ if (input.status === "error" || input.status === "skipped" || input.success === false || input.state === "failed")
30
+ return "failed";
31
31
  return "failed";
32
32
  }
33
33