@bastani/atomic 0.9.12 → 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 (264) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/builtin/intercom/CHANGELOG.md +6 -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 +6 -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 +30 -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/package.json +1 -1
  82. package/dist/builtin/workflows/CHANGELOG.md +25 -0
  83. package/dist/builtin/workflows/README.md +13 -3
  84. package/dist/builtin/workflows/package.json +1 -1
  85. package/dist/builtin/workflows/src/durable/backend.ts +7 -0
  86. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +11 -1
  87. package/dist/builtin/workflows/src/durable/resume-runtime.ts +1 -0
  88. package/dist/builtin/workflows/src/durable/tool-primitive.ts +4 -28
  89. package/dist/builtin/workflows/src/durable/types.ts +5 -0
  90. package/dist/builtin/workflows/src/engine/run.ts +17 -1
  91. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +12 -39
  92. package/dist/builtin/workflows/src/extension/config-file-loader.ts +10 -1
  93. package/dist/builtin/workflows/src/extension/config-loader.ts +1 -1
  94. package/dist/builtin/workflows/src/extension/dispatcher.ts +4 -0
  95. package/dist/builtin/workflows/src/extension/index.bundle.mjs +1151 -737
  96. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +303 -38
  97. package/dist/builtin/workflows/src/extension/render-result.ts +4 -0
  98. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +6 -3
  99. package/dist/builtin/workflows/src/extension/runtime.ts +7 -1
  100. package/dist/builtin/workflows/src/extension/wiring.ts +53 -11
  101. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +12 -3
  102. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +5 -2
  103. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +9 -7
  104. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +11 -0
  105. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +18 -1
  106. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +10 -8
  107. package/dist/builtin/workflows/src/extension/workflow-tool.ts +9 -4
  108. package/dist/builtin/workflows/src/runs/background/quit.ts +28 -4
  109. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +2 -1
  110. package/dist/builtin/workflows/src/runs/background/status.ts +55 -8
  111. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +4 -0
  112. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +3 -1
  113. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +1 -1
  114. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +1 -1
  115. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +688 -38
  116. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +3 -1
  117. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +19 -514
  118. package/dist/builtin/workflows/src/runs/shared/retry.ts +44 -0
  119. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +5 -0
  120. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +6 -0
  121. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +5 -1
  122. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +5 -0
  123. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +5 -0
  124. package/dist/builtin/workflows/src/shared/persistence-restore.ts +3 -0
  125. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
  126. package/dist/builtin/workflows/src/shared/run-indicator-status.ts +75 -0
  127. package/dist/builtin/workflows/src/shared/store-public-types.ts +43 -7
  128. package/dist/builtin/workflows/src/shared/store-run-methods.ts +42 -8
  129. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +31 -8
  130. package/dist/builtin/workflows/src/shared/store-types.ts +34 -0
  131. package/dist/builtin/workflows/src/shared/timing.ts +10 -0
  132. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +22 -2
  133. package/dist/builtin/workflows/src/tui/session-list.ts +1 -1
  134. package/dist/builtin/workflows/src/tui/session-overlays.ts +14 -10
  135. package/dist/builtin/workflows/src/tui/session-picker.ts +20 -4
  136. package/dist/builtin/workflows/src/tui/status-list.ts +31 -47
  137. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +9 -1
  138. package/dist/builtin/workflows/src/tui/widget.ts +16 -46
  139. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  140. package/dist/core/agent-session-auto-compaction.js +54 -11
  141. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  142. package/dist/core/agent-session-events.d.ts.map +1 -1
  143. package/dist/core/agent-session-events.js +49 -14
  144. package/dist/core/agent-session-events.js.map +1 -1
  145. package/dist/core/agent-session-methods.d.ts +13 -0
  146. package/dist/core/agent-session-methods.d.ts.map +1 -1
  147. package/dist/core/agent-session-methods.js.map +1 -1
  148. package/dist/core/agent-session-models.d.ts.map +1 -1
  149. package/dist/core/agent-session-models.js +12 -1
  150. package/dist/core/agent-session-models.js.map +1 -1
  151. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  152. package/dist/core/agent-session-prompt.js +4 -0
  153. package/dist/core/agent-session-prompt.js.map +1 -1
  154. package/dist/core/agent-session-retry.d.ts +21 -4
  155. package/dist/core/agent-session-retry.d.ts.map +1 -1
  156. package/dist/core/agent-session-retry.js +232 -106
  157. package/dist/core/agent-session-retry.js.map +1 -1
  158. package/dist/core/agent-session-state.d.ts.map +1 -1
  159. package/dist/core/agent-session-state.js +2 -1
  160. package/dist/core/agent-session-state.js.map +1 -1
  161. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  162. package/dist/core/agent-session-tool-hooks.js +12 -0
  163. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  164. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  165. package/dist/core/agent-session-tool-registry.js +1 -1
  166. package/dist/core/agent-session-tool-registry.js.map +1 -1
  167. package/dist/core/agent-session-types.d.ts +3 -1
  168. package/dist/core/agent-session-types.d.ts.map +1 -1
  169. package/dist/core/agent-session-types.js.map +1 -1
  170. package/dist/core/agent-session.d.ts +12 -1
  171. package/dist/core/agent-session.d.ts.map +1 -1
  172. package/dist/core/agent-session.js +7 -0
  173. package/dist/core/agent-session.js.map +1 -1
  174. package/dist/core/extensions/context-types.d.ts +25 -0
  175. package/dist/core/extensions/context-types.d.ts.map +1 -1
  176. package/dist/core/extensions/context-types.js.map +1 -1
  177. package/dist/core/extensions/index.d.ts +1 -1
  178. package/dist/core/extensions/index.d.ts.map +1 -1
  179. package/dist/core/extensions/index.js.map +1 -1
  180. package/dist/core/extensions/runner-context.d.ts +2 -1
  181. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  182. package/dist/core/extensions/runner-context.js +4 -0
  183. package/dist/core/extensions/runner-context.js.map +1 -1
  184. package/dist/core/extensions/runner.d.ts +3 -2
  185. package/dist/core/extensions/runner.d.ts.map +1 -1
  186. package/dist/core/extensions/runner.js +3 -1
  187. package/dist/core/extensions/runner.js.map +1 -1
  188. package/dist/core/model-fallback-failures.d.ts +30 -0
  189. package/dist/core/model-fallback-failures.d.ts.map +1 -0
  190. package/dist/core/model-fallback-failures.js +610 -0
  191. package/dist/core/model-fallback-failures.js.map +1 -0
  192. package/dist/core/retry-policy.d.ts +30 -0
  193. package/dist/core/retry-policy.d.ts.map +1 -0
  194. package/dist/core/retry-policy.js +25 -0
  195. package/dist/core/retry-policy.js.map +1 -0
  196. package/dist/core/sdk-types.d.ts +8 -2
  197. package/dist/core/sdk-types.d.ts.map +1 -1
  198. package/dist/core/sdk-types.js.map +1 -1
  199. package/dist/core/sdk.d.ts.map +1 -1
  200. package/dist/core/sdk.js +6 -1
  201. package/dist/core/sdk.js.map +1 -1
  202. package/dist/core/session-manager-core.d.ts +2 -0
  203. package/dist/core/session-manager-core.d.ts.map +1 -1
  204. package/dist/core/session-manager-core.js +7 -0
  205. package/dist/core/session-manager-core.js.map +1 -1
  206. package/dist/index-extensions.d.ts +1 -1
  207. package/dist/index-extensions.d.ts.map +1 -1
  208. package/dist/index-extensions.js.map +1 -1
  209. package/dist/index.d.ts +3 -0
  210. package/dist/index.d.ts.map +1 -1
  211. package/dist/index.js +2 -0
  212. package/dist/index.js.map +1 -1
  213. package/docs/intercom.md +5 -10
  214. package/docs/settings.md +7 -1
  215. package/docs/subagents.md +19 -19
  216. package/docs/workflows.md +21 -5
  217. package/examples/extensions/gondolin/package-lock.json +3 -3
  218. package/npm-shrinkwrap.json +29 -29
  219. package/package.json +2 -2
  220. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +0 -112
  221. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +0 -543
  222. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +0 -140
  223. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +0 -279
  224. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +0 -99
  225. package/dist/builtin/subagents/src/runs/background/async-execution.ts +0 -17
  226. package/dist/builtin/subagents/src/runs/background/async-resume.ts +0 -402
  227. package/dist/builtin/subagents/src/runs/background/async-status.ts +0 -411
  228. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +0 -196
  229. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +0 -102
  230. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +0 -59
  231. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +0 -300
  232. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +0 -166
  233. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +0 -77
  234. package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +0 -48
  235. package/dist/builtin/subagents/src/runs/background/result-status.ts +0 -87
  236. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +0 -72
  237. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +0 -320
  238. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +0 -105
  239. package/dist/builtin/subagents/src/runs/background/run-status.ts +0 -358
  240. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +0 -457
  241. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +0 -376
  242. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +0 -150
  243. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +0 -109
  244. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +0 -128
  245. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +0 -309
  246. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +0 -173
  247. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +0 -578
  248. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +0 -330
  249. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +0 -330
  250. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +0 -210
  251. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +0 -69
  252. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +0 -90
  253. package/dist/builtin/subagents/src/runs/background/top-level-async.ts +0 -12
  254. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +0 -140
  255. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +0 -108
  256. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +0 -17
  257. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +0 -558
  258. package/dist/builtin/subagents/src/runs/shared/attempt-watchdog.ts +0 -126
  259. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +0 -39
  260. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +0 -339
  261. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +0 -165
  262. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +0 -21
  263. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +0 -86
  264. /package/dist/builtin/subagents/src/runs/{shared/nested-path.ts → inprocess/runtime-support/nested-paths.ts} +0 -0
@@ -6,14 +6,14 @@ export {
6
6
  readNestedControlResults,
7
7
  writeNestedControlRequest,
8
8
  writeNestedControlResult,
9
- } from "./nested-events-control.ts";
9
+ } from "./nested-control.ts";
10
10
  export type {
11
11
  NestedControlRequestRecord,
12
12
  NestedControlResultRecord,
13
13
  NestedEventRecord,
14
14
  NestedRegistry,
15
15
  NestedRoute,
16
- } from "./nested-events-core.ts";
16
+ } from "./nested-core.ts";
17
17
  export {
18
18
  assertSafeNestedId,
19
19
  cleanupOldNestedRuntimeDirs,
@@ -31,7 +31,13 @@ export {
31
31
  resolveNestedParentAddressFromEnv,
32
32
  resolveNestedRouteFromEnv,
33
33
  validateNestedRouteShape,
34
- } from "./nested-events-core.ts";
34
+ } from "./nested-core.ts";
35
+ export {
36
+ encodeNestedPathEnv,
37
+ MAX_NESTED_PATH_ENTRIES,
38
+ parseNestedPathEnv,
39
+ sanitizeNestedPath,
40
+ } from "./nested-paths.ts";
35
41
  export {
36
42
  attachRootChildrenToSteps,
37
43
  hasLiveNestedDescendants,
@@ -41,8 +47,8 @@ export {
41
47
  nestedSummaryFromAsyncStatus,
42
48
  updateAsyncJobNestedProjection,
43
49
  updateForegroundNestedProjection,
44
- } from "./nested-events-projection.ts";
45
- export type { NestedRunMatch, NestedRunResolutionScope } from "./nested-events-registry.ts";
50
+ } from "./nested-projection.ts";
51
+ export type { NestedRunMatch, NestedRunResolutionScope } from "./nested-registry.ts";
46
52
  export {
47
53
  findNestedRouteForRootId,
48
54
  findNestedRun,
@@ -52,5 +58,5 @@ export {
52
58
  projectNestedRegistryForRoot,
53
59
  readNestedRegistry,
54
60
  writeNestedEvent,
55
- } from "./nested-events-registry.ts";
56
- export { applyNestedEvent, parseNestedEventRecords, sanitizeSummary } from "./nested-events-sanitize.ts";
61
+ } from "./nested-registry.ts";
62
+ export { applyNestedEvent, parseNestedEventRecords, sanitizeSummary } from "./nested-sanitize.ts";
@@ -1,5 +1,12 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
+ import {
4
+ appendInProcessControlRequest,
5
+ appendInProcessControlResult,
6
+ hasInProcessNestedRoute,
7
+ readInProcessControlRequests,
8
+ readInProcessControlResults,
9
+ } from "../nested-routing.ts";
3
10
  import {
4
11
  assertSafeId,
5
12
  clampNumber,
@@ -11,14 +18,8 @@ import {
11
18
  type NestedRoute,
12
19
  stringValue,
13
20
  validateRouteShape,
14
- } from "./nested-events-core.ts";
15
- import { writeRouteRecord } from "./nested-events-registry.ts";
16
- import {
17
- SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV,
18
- SUBAGENT_PARENT_CONTROL_INBOX_ENV,
19
- SUBAGENT_PARENT_EVENT_SINK_ENV,
20
- SUBAGENT_PARENT_ROOT_RUN_ID_ENV,
21
- } from "./pi-args.ts";
21
+ } from "./nested-core.ts";
22
+ import { writeRouteRecord } from "./nested-registry.ts";
22
23
 
23
24
  export function parseNestedControlRequest(content: string, route: NestedRoute): NestedControlRequestRecord | undefined {
24
25
  if (Buffer.byteLength(content, "utf-8") > MAX_NESTED_EVENT_BYTES) return undefined;
@@ -90,13 +91,16 @@ export function writeNestedControlRequest(
90
91
  };
91
92
  const sanitized = parseNestedControlRequest(JSON.stringify(record), route);
92
93
  if (!sanitized) throw new Error("Nested control request failed validation.");
93
- return writeRouteRecord(route.controlInbox, sanitized.ts, sanitized);
94
+ const filePath = writeRouteRecord(route.controlInbox, sanitized.ts, sanitized);
95
+ appendInProcessControlRequest(route, { ...sanitized, filePath });
96
+ return filePath;
94
97
  }
95
98
 
96
99
  export function readNestedControlRequests(
97
100
  route: NestedRoute,
98
101
  ): Array<NestedControlRequestRecord & { filePath: string }> {
99
102
  validateRouteShape(route);
103
+ if (hasInProcessNestedRoute(route)) return [...readInProcessControlRequests(route)];
100
104
  let entries: string[] = [];
101
105
  try {
102
106
  entries = fs
@@ -135,11 +139,13 @@ export function writeNestedControlResult(
135
139
  };
136
140
  const sanitized = parseNestedControlResult(JSON.stringify(record), route);
137
141
  if (!sanitized) throw new Error("Nested control result failed validation.");
138
- writeRouteRecord(route.eventSink, sanitized.ts, sanitized);
142
+ const filePath = writeRouteRecord(route.eventSink, sanitized.ts, sanitized);
143
+ appendInProcessControlResult(route, { ...sanitized, filePath });
139
144
  }
140
145
 
141
146
  export function readNestedControlResults(route: NestedRoute): NestedControlResultRecord[] {
142
147
  validateRouteShape(route);
148
+ if (hasInProcessNestedRoute(route)) return [...readInProcessControlResults(route)] as NestedControlResultRecord[];
143
149
  let entries: string[] = [];
144
150
  try {
145
151
  entries = fs
@@ -167,11 +173,6 @@ export function readNestedControlResults(route: NestedRoute): NestedControlResul
167
173
  return results;
168
174
  }
169
175
 
170
- export function nestedRouteEnv(route: NestedRoute): Record<string, string> {
171
- return {
172
- [SUBAGENT_PARENT_EVENT_SINK_ENV]: route.eventSink,
173
- [SUBAGENT_PARENT_CONTROL_INBOX_ENV]: route.controlInbox,
174
- [SUBAGENT_PARENT_ROOT_RUN_ID_ENV]: route.rootRunId,
175
- [SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV]: route.capabilityToken,
176
- };
176
+ export function nestedRouteEnv(_route: NestedRoute): Record<string, string> {
177
+ return {};
177
178
  }
@@ -1,20 +1,10 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import * as fs from "node:fs";
3
3
  import * as path from "node:path";
4
- import { getEnvValue } from "@bastani/atomic";
5
- import { type NestedRouteInfo, type NestedRunSummary, TEMP_ROOT_DIR } from "../../shared/types.ts";
6
- import { isSafeNestedPathId, type NestedPathEntry, parseNestedPathEnv } from "./nested-path.ts";
7
- import {
8
- SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV,
9
- SUBAGENT_PARENT_CHILD_INDEX_ENV,
10
- SUBAGENT_PARENT_CONTROL_INBOX_ENV,
11
- SUBAGENT_PARENT_DEPTH_ENV,
12
- SUBAGENT_PARENT_EVENT_SINK_ENV,
13
- SUBAGENT_PARENT_MAX_DEPTH,
14
- SUBAGENT_PARENT_PATH_ENV,
15
- SUBAGENT_PARENT_ROOT_RUN_ID_ENV,
16
- SUBAGENT_PARENT_RUN_ID_ENV,
17
- } from "./pi-args.ts";
4
+ import { type NestedRouteInfo, type NestedRunSummary, TEMP_ROOT_DIR } from "../../../shared/types.ts";
5
+ import { MAX_SUBAGENT_NESTING_DEPTH } from "../../../shared/types-runtime.ts";
6
+ import { registerInProcessNestedRoute } from "../nested-routing.ts";
7
+ import { isSafeNestedPathId, type NestedPathEntry } from "./nested-paths.ts";
18
8
 
19
9
  export const NESTED_EVENTS_DIR = path.join(TEMP_ROOT_DIR, "nested-subagent-events");
20
10
  export const NESTED_RUNS_DIR = path.join(TEMP_ROOT_DIR, "nested-subagent-runs");
@@ -23,7 +13,7 @@ export const REGISTRY_FILE = "registry.json";
23
13
  export const MAX_NESTED_EVENT_BYTES = 64 * 1024;
24
14
  export const MAX_NESTED_STEPS = 12;
25
15
  export const MAX_NESTED_CHILDREN = 16;
26
- export const MAX_NESTED_DEPTH = SUBAGENT_PARENT_MAX_DEPTH;
16
+ export const MAX_NESTED_DEPTH = MAX_SUBAGENT_NESTING_DEPTH;
27
17
  export const MAX_PROCESSED_NESTED_EVENTS = 20_000;
28
18
  type NestedStatusEventType = "subagent.nested.started" | "subagent.nested.updated" | "subagent.nested.completed";
29
19
  type NestedControlResultEventType = "subagent.nested.control-result";
@@ -119,7 +109,9 @@ export function createNestedRoute(rootRunId: string): NestedRoute {
119
109
  `${JSON.stringify({ rootRunId, capabilityToken, createdAt: Date.now() })}\n`,
120
110
  { mode: 0o600 },
121
111
  );
122
- return { rootRunId, eventSink, controlInbox, capabilityToken };
112
+ const route = { rootRunId, eventSink, controlInbox, capabilityToken };
113
+ registerInProcessNestedRoute(route);
114
+ return route;
123
115
  }
124
116
 
125
117
  /** Whether any entry in the tree rooted at filePath has an mtime at or after cutoff, stopping at the first hit. */
@@ -174,57 +166,18 @@ export function cleanupOldNestedRuntimeDirs(maxAgeDays: number): void {
174
166
  cleanupOldSubdirectories(NESTED_RUNS_DIR, maxAgeDays);
175
167
  }
176
168
 
177
- export function readSubagentEnv(env: NodeJS.ProcessEnv, name: string): string | undefined {
178
- if (env === process.env) return getEnvValue(name);
179
- // Atomic keeps reading legacy pi-prefixed env vars so older parent processes can route nested children.
180
- const legacyName = name.replace(/^[A-Z0-9]+_/, "PI_");
181
- return env[name] ?? (legacyName === name ? undefined : env[legacyName]);
169
+ export function resolveNestedRouteFromEnv(_env: NodeJS.ProcessEnv = process.env): NestedRoute | undefined {
170
+ return undefined;
182
171
  }
183
172
 
184
- export function resolveNestedRouteFromEnv(env: NodeJS.ProcessEnv = process.env): NestedRoute | undefined {
185
- const rootRunId = readSubagentEnv(env, SUBAGENT_PARENT_ROOT_RUN_ID_ENV);
186
- const eventSink = readSubagentEnv(env, SUBAGENT_PARENT_EVENT_SINK_ENV);
187
- const controlInbox = readSubagentEnv(env, SUBAGENT_PARENT_CONTROL_INBOX_ENV);
188
- const capabilityToken = readSubagentEnv(env, SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV);
189
- if (!rootRunId || !eventSink || !controlInbox || !capabilityToken) return undefined;
190
- const route = { rootRunId, eventSink, controlInbox, capabilityToken };
191
- validateRouteShape(route);
192
- const routeFile = path.join(commonRouteRoot(route), ROUTE_FILE);
193
- const metadata = JSON.parse(fs.readFileSync(routeFile, "utf-8")) as {
194
- rootRunId?: unknown;
195
- capabilityToken?: unknown;
196
- };
197
- if (metadata.rootRunId !== rootRunId || metadata.capabilityToken !== capabilityToken) {
198
- throw new Error("Nested event route metadata does not match the provided root id and capability token.");
199
- }
200
- return route;
201
- }
202
-
203
- export function resolveInheritedNestedRouteFromEnv(env: NodeJS.ProcessEnv = process.env): NestedRoute | undefined {
204
- try {
205
- return resolveNestedRouteFromEnv(env);
206
- } catch (error) {
207
- console.error("Ignoring invalid nested subagent event route:", error);
208
- return undefined;
209
- }
173
+ export function resolveInheritedNestedRouteFromEnv(_env: NodeJS.ProcessEnv = process.env): NestedRoute | undefined {
174
+ return undefined;
210
175
  }
211
176
 
212
177
  export function resolveNestedParentAddressFromEnv(
213
- env: NodeJS.ProcessEnv = process.env,
178
+ _env: NodeJS.ProcessEnv = process.env,
214
179
  ): { parentRunId: string; parentStepIndex?: number; depth: number; path: NestedPathEntry[] } | undefined {
215
- const parentRunId = readSubagentEnv(env, SUBAGENT_PARENT_RUN_ID_ENV);
216
- if (!isSafeNestedId(parentRunId)) return undefined;
217
- const rawIndex = readSubagentEnv(env, SUBAGENT_PARENT_CHILD_INDEX_ENV);
218
- const parentStepIndex = rawIndex && /^\d+$/.test(rawIndex) ? Number(rawIndex) : undefined;
219
- const depth = Math.min(
220
- Math.max(1, clampNumber(Number(readSubagentEnv(env, SUBAGENT_PARENT_DEPTH_ENV))) ?? 1),
221
- MAX_NESTED_DEPTH,
222
- );
223
- const parsedPath = parseNestedPathEnv(readSubagentEnv(env, SUBAGENT_PARENT_PATH_ENV));
224
- const nestedPath = parsedPath.length
225
- ? parsedPath
226
- : [{ runId: parentRunId, ...(parentStepIndex !== undefined ? { stepIndex: parentStepIndex } : {}) }];
227
- return { parentRunId, ...(parentStepIndex !== undefined ? { parentStepIndex } : {}), depth, path: nestedPath };
180
+ return undefined;
228
181
  }
229
182
 
230
183
  export function resolveNestedAsyncDir(rootRunId: string, run: NestedRunSummary): string | undefined {
@@ -8,16 +8,10 @@ import {
8
8
  RESULTS_DIR,
9
9
  type SubagentRunMode,
10
10
  type SubagentState,
11
- } from "../../shared/types.ts";
12
- import {
13
- assertSafeId,
14
- containedPath,
15
- MAX_NESTED_CHILDREN,
16
- MAX_NESTED_STEPS,
17
- NESTED_RUNS_DIR,
18
- } from "./nested-events-core.ts";
19
- import { projectNestedEvents } from "./nested-events-registry.ts";
20
- import { terminal } from "./nested-events-sanitize.ts";
11
+ } from "../../../shared/types.ts";
12
+ import { assertSafeId, containedPath, MAX_NESTED_CHILDREN, MAX_NESTED_STEPS, NESTED_RUNS_DIR } from "./nested-core.ts";
13
+ import { projectNestedEvents } from "./nested-registry.ts";
14
+ import { terminal } from "./nested-sanitize.ts";
21
15
 
22
16
  export function attachRootChildrenToSteps<T extends { children?: NestedRunSummary[]; index?: number }>(
23
17
  rootRunId: string,
@@ -1,8 +1,9 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import * as fs from "node:fs";
3
3
  import * as path from "node:path";
4
- import { writeAtomicJson } from "../../shared/atomic-json.ts";
5
- import type { NestedRunSummary } from "../../shared/types.ts";
4
+ import { writeAtomicJson } from "../../../shared/atomic-json.ts";
5
+ import type { NestedRunSummary } from "../../../shared/types.ts";
6
+ import { appendInProcessNestedEvent, hasInProcessNestedRoute, readInProcessNestedEvents } from "../nested-routing.ts";
6
7
  import {
7
8
  assertSafeId,
8
9
  commonRouteRoot,
@@ -16,8 +17,8 @@ import {
16
17
  REGISTRY_FILE,
17
18
  ROUTE_FILE,
18
19
  validateRouteShape,
19
- } from "./nested-events-core.ts";
20
- import { applyNestedEvent, parseNestedEventRecords, parseRecord, sanitizeSummary } from "./nested-events-sanitize.ts";
20
+ } from "./nested-core.ts";
21
+ import { applyNestedEvent, parseNestedEventRecords, parseRecord, sanitizeSummary } from "./nested-sanitize.ts";
21
22
 
22
23
  const REGISTRY_LOCK_DIR = ".registry.lock";
23
24
  const REGISTRY_LOCK_TIMEOUT_MS = 2_000;
@@ -260,6 +261,19 @@ export function readNestedRegistry(route: NestedRoute): NestedRegistry {
260
261
 
261
262
  export function projectNestedEvents(route: NestedRoute): NestedRegistry {
262
263
  validateRouteShape(route);
264
+ if (hasInProcessNestedRoute(route)) {
265
+ const release = acquireRegistryLock(route);
266
+ try {
267
+ let registry = readNestedRegistry(route);
268
+ for (const event of readInProcessNestedEvents(route)) {
269
+ const parsed = parseRecord(JSON.stringify(event), route);
270
+ if (parsed) registry = applyNestedEvent(registry, parsed);
271
+ }
272
+ return registry;
273
+ } finally {
274
+ release();
275
+ }
276
+ }
263
277
  const release = acquireRegistryLock(route);
264
278
  try {
265
279
  let registry = readNestedRegistry(route);
@@ -333,5 +347,6 @@ export function writeNestedEvent(
333
347
  };
334
348
  const sanitized = parseRecord(JSON.stringify(record), route);
335
349
  if (!sanitized) throw new Error("Nested event record failed validation.");
350
+ appendInProcessNestedEvent(route, sanitized);
336
351
  writeRouteRecord(route.eventSink, sanitized.ts, sanitized);
337
352
  }
@@ -1,6 +1,6 @@
1
- import { formatDuration, formatTokens, shortenPath } from "../../shared/formatters.ts";
2
- import { formatActivityLabel } from "../../shared/status-format.ts";
3
- import { type ActivityState, MAX_SUBAGENT_NESTING_DEPTH, type NestedRunSummary } from "../../shared/types.ts";
1
+ import { formatDuration, formatTokens, shortenPath } from "../../../shared/formatters.ts";
2
+ import { formatActivityLabel } from "../../../shared/status-format.ts";
3
+ import { type ActivityState, MAX_SUBAGENT_NESTING_DEPTH, type NestedRunSummary } from "../../../shared/types.ts";
4
4
 
5
5
  export interface NestedRunCounts {
6
6
  total: number;
@@ -1,4 +1,4 @@
1
- import type { NestedRunState, NestedRunSummary, NestedStepSummary } from "../../shared/types.ts";
1
+ import type { NestedRunState, NestedRunSummary, NestedStepSummary } from "../../../shared/types.ts";
2
2
  import {
3
3
  clampNumber,
4
4
  isSafeNestedId,
@@ -10,8 +10,8 @@ import {
10
10
  type NestedRegistry,
11
11
  type NestedRoute,
12
12
  stringValue,
13
- } from "./nested-events-core.ts";
14
- import { sanitizeNestedPath } from "./nested-path.ts";
13
+ } from "./nested-core.ts";
14
+ import { sanitizeNestedPath } from "./nested-paths.ts";
15
15
 
16
16
  function sanitizeTokenUsage(value: unknown): NestedRunSummary["totalTokens"] | undefined {
17
17
  if (!value || typeof value !== "object") return undefined;
@@ -0,0 +1 @@
1
+ export * from "./inprocess/index.ts";
@@ -1,5 +1,11 @@
1
1
  import type { DynamicParallelStep, ParallelTaskItem } from "../../shared/settings.ts";
2
- import type { ArtifactPaths, ChainOutputMap, JsonSchemaObject, SingleResult } from "../../shared/types.ts";
2
+ import type {
3
+ ArtifactPaths,
4
+ ChainOutputMap,
5
+ JsonSchemaObject,
6
+ SingleResult,
7
+ SubagentAttemptStatus,
8
+ } from "../../shared/types.ts";
3
9
  import { getSingleResultOutput } from "../../shared/utils.ts";
4
10
  import { validateStructuredOutputValue } from "./structured-output.ts";
5
11
 
@@ -22,7 +28,7 @@ export interface DynamicCollectedResult {
22
28
  index: number;
23
29
  item: unknown;
24
30
  agent: string;
25
- exitCode: number | null;
31
+ status: SubagentAttemptStatus;
26
32
  text: string;
27
33
  structured?: unknown;
28
34
  error?: string;
@@ -350,7 +356,7 @@ export function collectDynamicResults(
350
356
  step: DynamicParallelStep,
351
357
  items: DynamicMaterializedItem[],
352
358
  results: Array<
353
- Pick<SingleResult, "agent" | "exitCode" | "error" | "structuredOutput" | "artifactPaths" | "savedOutputPath"> & {
359
+ Pick<SingleResult, "agent" | "status" | "error" | "structuredOutput" | "artifactPaths" | "savedOutputPath"> & {
354
360
  output?: string;
355
361
  finalOutput?: string;
356
362
  }
@@ -368,7 +374,7 @@ export function collectDynamicResults(
368
374
  index: entry.index,
369
375
  item: entry.item,
370
376
  agent: result?.agent ?? step.parallel.agent,
371
- exitCode: result?.exitCode ?? null,
377
+ status: result?.status ?? "skipped",
372
378
  text,
373
379
  ...(result?.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),
374
380
  ...(result?.error ? { error: result.error } : {}),
@@ -18,7 +18,6 @@ export function skippedModelAttempt(model: string, reason: string): ModelAttempt
18
18
  return {
19
19
  model,
20
20
  success: false,
21
- exitCode: null,
22
21
  error: reason,
23
22
  };
24
23
  }