mixdog 1.3.1 → 1.3.2

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 (377) hide show
  1. package/README.md +8 -4
  2. package/package.json +2 -2
  3. package/scripts/native-release-status.mjs +238 -0
  4. package/src/defaults/shipped-history.json +5 -1
  5. package/src/defaults/skills/pptx/scripts/qc-pages.mjs +3 -2
  6. package/src/defaults/skills/setup/SKILL.md +23 -1
  7. package/src/defaults/skills/setup/references/actions.md +50 -3
  8. package/src/defaults/skills/setup/references/surfaces.md +23 -3
  9. package/src/defaults/skills/setup-guide/SKILL.md +7 -3
  10. package/src/defaults/skills/visualize/SKILL.md +9 -6
  11. package/src/defaults/skills/visualize/references/craft.md +8 -1
  12. package/src/help.mjs +1 -1
  13. package/src/lib/keychain-cjs.cjs +4 -1
  14. package/src/lib/rules-builder.cjs +14 -7
  15. package/src/rules/agent-mode/AGENT_MODE.md +8 -5
  16. package/src/rules/agent-mode/MIXY.md +6 -8
  17. package/src/rules/lead/LEAD.md +2 -2
  18. package/src/rules/shared/10-tool-workflow.md +4 -0
  19. package/src/rules/shared/20-research.md +2 -0
  20. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/preset.mjs +5 -0
  21. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/session-prep.mjs +8 -0
  22. package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +6 -1
  23. package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +114 -26
  24. package/src/runtime/agent/orchestrator/agent-runtime/maintenance-route.mjs +8 -0
  25. package/src/runtime/agent/orchestrator/agent-runtime/room-supervisor-completion.mjs +5 -4
  26. package/src/runtime/agent/orchestrator/agent-trace.mjs +3 -0
  27. package/src/runtime/agent/orchestrator/cache-break-trace.mjs +4 -0
  28. package/src/runtime/agent/orchestrator/config-presets.mjs +2 -0
  29. package/src/runtime/agent/orchestrator/config-storage.mjs +10 -3
  30. package/src/runtime/agent/orchestrator/config.mjs +11 -0
  31. package/src/runtime/agent/orchestrator/context/role-instructions.mjs +9 -2
  32. package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +97 -5
  33. package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +6 -10
  34. package/src/runtime/agent/orchestrator/mcp/client.mjs +7 -4
  35. package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +80 -31
  36. package/src/runtime/agent/orchestrator/providers/anthropic-model-resolve.mjs +1 -1
  37. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
  38. package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +67 -38
  39. package/src/runtime/agent/orchestrator/providers/anthropic-turn-result.mjs +2 -0
  40. package/src/runtime/agent/orchestrator/providers/antigravity-request.mjs +6 -2
  41. package/src/runtime/agent/orchestrator/providers/auto-effort.mjs +27 -8
  42. package/src/runtime/agent/orchestrator/providers/cursor-wire.mjs +31 -4
  43. package/src/runtime/agent/orchestrator/providers/cursor.mjs +4 -1
  44. package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +11 -8
  45. package/src/runtime/agent/orchestrator/providers/lib/anthropic-prefix-trace.mjs +76 -0
  46. package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +16 -0
  47. package/src/runtime/agent/orchestrator/providers/lib/tail-reminder-split.mjs +13 -0
  48. package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +16 -1
  49. package/src/runtime/agent/orchestrator/providers/mixdog-local.mjs +3 -1
  50. package/src/runtime/agent/orchestrator/providers/model-proxy-provider.mjs +1 -0
  51. package/src/runtime/agent/orchestrator/providers/openai-codex-metadata.mjs +5 -5
  52. package/src/runtime/agent/orchestrator/providers/openai-compat-models.mjs +9 -5
  53. package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +9 -1
  54. package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +2 -1
  55. package/src/runtime/agent/orchestrator/providers/openai-direct-request.mjs +30 -3
  56. package/src/runtime/agent/orchestrator/providers/openai-model-capabilities.mjs +1 -1
  57. package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +3 -1
  58. package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +61 -8
  59. package/src/runtime/agent/orchestrator/providers/registry.mjs +9 -0
  60. package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +90 -24
  61. package/src/runtime/agent/orchestrator/runtime-core/fs-utils.mjs +8 -1
  62. package/src/runtime/agent/orchestrator/runtime-core/goal-mutations.mjs +1 -1
  63. package/src/runtime/agent/orchestrator/runtime-core/goal-storage.mjs +68 -22
  64. package/src/runtime/agent/orchestrator/runtime-core/goal-tool-exec.mjs +1 -1
  65. package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +4 -6
  66. package/src/runtime/agent/orchestrator/runtime-core/route-context-state.mjs +81 -0
  67. package/src/runtime/agent/orchestrator/runtime-core/session-text.mjs +2 -1
  68. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +12 -1
  69. package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +6 -5
  70. package/src/runtime/agent/orchestrator/runtime-core/workflow/agents.mjs +7 -6
  71. package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +1 -1
  72. package/src/runtime/agent/orchestrator/runtime-core/workflow/packs.mjs +8 -4
  73. package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +2 -0
  74. package/src/runtime/agent/orchestrator/session/agent-mode.mjs +0 -6
  75. package/src/runtime/agent/orchestrator/session/agent-room-supervisor.d.mts +1 -1
  76. package/src/runtime/agent/orchestrator/session/agent-room-supervisor.mjs +22 -4
  77. package/src/runtime/agent/orchestrator/session/agent-room.d.mts +17 -2
  78. package/src/runtime/agent/orchestrator/session/agent-room.mjs +133 -38
  79. package/src/runtime/agent/orchestrator/session/attachment-preflight.mjs +80 -0
  80. package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +4 -1
  81. package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +14 -11
  82. package/src/runtime/agent/orchestrator/session/compact/forked-summary.mjs +3 -0
  83. package/src/runtime/agent/orchestrator/session/compact/runner.mjs +68 -18
  84. package/src/runtime/agent/orchestrator/session/compact/summary-mode.mjs +16 -0
  85. package/src/runtime/agent/orchestrator/session/compact/summary-route.mjs +87 -0
  86. package/src/runtime/agent/orchestrator/session/compact/summary.mjs +2 -0
  87. package/src/runtime/agent/orchestrator/session/compact/text-utils.mjs +5 -1
  88. package/src/runtime/agent/orchestrator/session/compact/user-message-kind.mjs +1 -1
  89. package/src/runtime/agent/orchestrator/session/compaction-archive-capture.mjs +1 -1
  90. package/src/runtime/agent/orchestrator/session/context-utils.mjs +41 -10
  91. package/src/runtime/agent/orchestrator/session/human-gate/delegation.mjs +230 -0
  92. package/src/runtime/agent/orchestrator/session/human-gate/gate.mjs +136 -32
  93. package/src/runtime/agent/orchestrator/session/human-gate/outbound-policy.mjs +20 -0
  94. package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +21 -9
  95. package/src/runtime/agent/orchestrator/session/human-gate/run-policy.mjs +73 -0
  96. package/src/runtime/agent/orchestrator/session/human-gate/store.mjs +55 -27
  97. package/src/runtime/agent/orchestrator/session/human-gate/unattended-port.mjs +15 -0
  98. package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +4 -1
  99. package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +189 -105
  100. package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +6 -2
  101. package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +5 -5
  102. package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +3 -0
  103. package/src/runtime/agent/orchestrator/session/loop/steering.mjs +3 -0
  104. package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +38 -5
  105. package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +21 -0
  106. package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +2 -1
  107. package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +12 -0
  108. package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +11 -5
  109. package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +13 -2
  110. package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +4 -0
  111. package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +6 -0
  112. package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +4 -0
  113. package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +44 -18
  114. package/src/runtime/agent/orchestrator/session/manager/orchestration-mode-switch-notice.mjs +99 -0
  115. package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +42 -0
  116. package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +3 -9
  117. package/src/runtime/agent/orchestrator/session/manager/pending-spool-file.mjs +1 -1
  118. package/src/runtime/agent/orchestrator/session/manager/pending-spool-shard.mjs +5 -3
  119. package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +40 -1
  120. package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +12 -0
  121. package/src/runtime/agent/orchestrator/session/manager/runtime-state.mjs +20 -0
  122. package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +55 -27
  123. package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +3 -8
  124. package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +12 -1
  125. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +6 -15
  126. package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +24 -8
  127. package/src/runtime/agent/orchestrator/session/manager/workflow-switch-notice.mjs +94 -13
  128. package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +42 -10
  129. package/src/runtime/agent/orchestrator/session/provider-prefix-guard.mjs +21 -3
  130. package/src/runtime/agent/orchestrator/session/routine-result.d.mts +18 -3
  131. package/src/runtime/agent/orchestrator/session/routine-result.mjs +120 -9
  132. package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +5 -1
  133. package/src/runtime/agent/orchestrator/session/side-question-store.mjs +3 -1
  134. package/src/runtime/agent/orchestrator/session/store/canonical-reader.mjs +41 -7
  135. package/src/runtime/agent/orchestrator/session/store/lifecycle-barriers.mjs +10 -2
  136. package/src/runtime/agent/orchestrator/session/store/load-cache.mjs +14 -2
  137. package/src/runtime/agent/orchestrator/session/store/session-delete.mjs +15 -1
  138. package/src/runtime/agent/orchestrator/session/store/sweep/sweep-record.mjs +8 -3
  139. package/src/runtime/agent/orchestrator/session/store/sweep/sweep-row.mjs +36 -1
  140. package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +4 -1
  141. package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +40 -5
  142. package/src/runtime/agent/orchestrator/session/store-summary-last-message.mjs +47 -2
  143. package/src/runtime/agent/orchestrator/session/tail-reminder-rules.mjs +125 -0
  144. package/src/runtime/agent/orchestrator/session/tool-batch/finalize.mjs +4 -0
  145. package/src/runtime/agent/orchestrator/session/tool-result-offload.mjs +78 -43
  146. package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +35 -5
  147. package/src/runtime/agent/orchestrator/session/transcript-restore/user-text.mjs +42 -2
  148. package/src/runtime/agent/orchestrator/tools/builtin/advisory-lock.mjs +35 -13
  149. package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +25 -5
  150. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +4 -3
  151. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +13 -14
  152. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/transport-artifacts.mjs +9 -0
  153. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +19 -14
  154. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +7 -1
  155. package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +6 -14
  156. package/src/runtime/agent/orchestrator/tools/builtin/pdf-test-fixtures.mjs +5 -3
  157. package/src/runtime/agent/orchestrator/tools/builtin/read-image.mjs +4 -2
  158. package/src/runtime/agent/orchestrator/tools/builtin/read-single-media.mjs +47 -2
  159. package/src/runtime/agent/orchestrator/tools/builtin/read-special-files.mjs +264 -87
  160. package/src/runtime/agent/orchestrator/tools/builtin/shell-analysis.mjs +10 -4
  161. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +34 -21
  162. package/src/runtime/agent/orchestrator/tools/code-graph/constants.mjs +8 -4
  163. package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +9 -30
  164. package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +24 -12
  165. package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +3 -2
  166. package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +6 -2
  167. package/src/runtime/agent/orchestrator/tools/patch/delete-quarantine.mjs +2 -1
  168. package/src/runtime/agent/orchestrator/tools/patch/replay-capture.mjs +4 -2
  169. package/src/runtime/agent/orchestrator/tools/patch/rollback-state.mjs +33 -2
  170. package/src/runtime/agent/orchestrator/tools/patch-manifest.json +13 -13
  171. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +5 -3
  172. package/src/runtime/agent/orchestrator/tools/shell-exec-output.mjs +3 -1
  173. package/src/runtime/attachments/attachment-reference.mjs +155 -0
  174. package/src/runtime/attachments/limits.mjs +5 -1
  175. package/src/runtime/attachments/office-extract.mjs +3 -6
  176. package/src/runtime/attachments/pdf-extract.mjs +84 -10
  177. package/src/runtime/attachments/store.mjs +49 -30
  178. package/src/runtime/browser-bridge/client.mjs +73 -20
  179. package/src/runtime/channels/lib/runtime-paths.mjs +1 -1
  180. package/src/runtime/channels/lib/scheduler.mjs +14 -7
  181. package/src/runtime/channels/lib/state-file.mjs +15 -15
  182. package/src/runtime/channels/lib/voice-runtime-fetcher.mjs +14 -13
  183. package/src/runtime/channels/lib/webhook/relay-tunnel.mjs +22 -18
  184. package/src/runtime/channels/lib/webhook/session-dispatch.mjs +14 -36
  185. package/src/runtime/channels/lib/worker-main.mjs +3 -2
  186. package/src/runtime/effort-judge/compact-tokenizer.mjs +8 -2
  187. package/src/runtime/effort-judge/judge-client.mjs +5 -2
  188. package/src/runtime/effort-judge/model-install.mjs +16 -8
  189. package/src/runtime/local-provider/asset-installer.mjs +10 -4
  190. package/src/runtime/local-provider/catalog.mjs +5 -2
  191. package/src/runtime/local-provider/registered-models.mjs +64 -27
  192. package/src/runtime/local-provider/server.mjs +2 -3
  193. package/src/runtime/media/adapters/image-api.mjs +89 -0
  194. package/src/runtime/media/auth.mjs +64 -1
  195. package/src/runtime/media/catalog.mjs +66 -4
  196. package/src/runtime/media/jobs.mjs +4 -0
  197. package/src/runtime/media/lanes.mjs +46 -5
  198. package/src/runtime/media/media-usage.mjs +17 -0
  199. package/src/runtime/media/renditions.mjs +15 -15
  200. package/src/runtime/media/store.mjs +36 -35
  201. package/src/runtime/media/tool.mjs +8 -1
  202. package/src/runtime/memory/lib/cycle-scheduler/health-ledger.mjs +8 -2
  203. package/src/runtime/memory/lib/embedding-model-files.mjs +30 -7
  204. package/src/runtime/memory/lib/ingest/transcript-tail.mjs +16 -7
  205. package/src/runtime/memory/lib/pg/process.mjs +8 -4
  206. package/src/runtime/memory/lib/project-id-resolver.mjs +5 -1
  207. package/src/runtime/memory/lib/runtime-fetcher.mjs +6 -1
  208. package/src/runtime/office/core/journal.mjs +7 -14
  209. package/src/runtime/office/design/library/design-library-core.mjs +4 -16
  210. package/src/runtime/office/pdf/ocr-engine-worker.mjs +37 -0
  211. package/src/runtime/office/pdf/ocr-engine.mjs +146 -0
  212. package/src/runtime/office/pdf/pdf-ocr.mjs +51 -21
  213. package/src/runtime/office/pdf/pdf-render.mjs +30 -18
  214. package/src/runtime/office/portable/ooxml-validator.mjs +2 -2
  215. package/src/runtime/office/portable/portable-soffice.mjs +4 -0
  216. package/src/runtime/shared/agent-kind-migration.mjs +200 -0
  217. package/src/runtime/shared/agent-message-envelope.d.mts +6 -0
  218. package/src/runtime/shared/agent-message-envelope.mjs +44 -0
  219. package/src/runtime/shared/agent-reap-state.d.mts +4 -0
  220. package/src/runtime/shared/agent-store.mjs +24 -7
  221. package/src/runtime/shared/agent-task-starts.mjs +27 -0
  222. package/src/runtime/shared/atomic-file.d.mts +50 -0
  223. package/src/runtime/shared/atomic-file.mjs +394 -132
  224. package/src/runtime/shared/background-tasks.mjs +7 -4
  225. package/src/runtime/shared/bot-hops.mjs +30 -0
  226. package/src/runtime/shared/bot-split-migration.mjs +1 -1
  227. package/src/runtime/shared/bounded-download.mjs +4 -2
  228. package/src/runtime/shared/config.mjs +39 -9
  229. package/src/runtime/shared/defaults-separation.mjs +6 -2
  230. package/src/runtime/shared/delegated-approval-host.mjs +74 -0
  231. package/src/runtime/shared/err-text.mjs +4 -0
  232. package/src/runtime/shared/error-presentation.mjs +22 -4
  233. package/src/runtime/shared/file-has-data.mjs +28 -0
  234. package/src/runtime/shared/llm/usage-ledger-import.mjs +37 -18
  235. package/src/runtime/shared/pending-agent-work.mjs +54 -0
  236. package/src/runtime/shared/process-lifecycle.mjs +8 -12
  237. package/src/runtime/shared/projects.mjs +50 -41
  238. package/src/runtime/shared/provider-accounts.mjs +17 -12
  239. package/src/runtime/shared/routine-trigger.d.mts +6 -1
  240. package/src/runtime/shared/routine-trigger.mjs +14 -6
  241. package/src/runtime/shared/run-child.d.mts +3 -0
  242. package/src/runtime/shared/run-child.mjs +24 -3
  243. package/src/runtime/shared/session-baseline-store.mjs +8 -2
  244. package/src/runtime/shared/singleton-owner.mjs +7 -6
  245. package/src/runtime/shared/skill-tool-dependencies.mjs +4 -10
  246. package/src/runtime/shared/staged-update.mjs +4 -2
  247. package/src/runtime/shared/statusline/statusline-segments.mjs +4 -15
  248. package/src/runtime/shared/tool-execution-contract.mjs +6 -0
  249. package/src/runtime/shared/transcript-metadata.mjs +28 -3
  250. package/src/runtime/shared/transcript-writer/session-record.mjs +7 -6
  251. package/src/runtime/shared/turn-snapshot-store.mjs +5 -4
  252. package/src/runtime/shared/turn-snapshot.mjs +44 -2
  253. package/src/runtime/shared/user-cwd.mjs +9 -4
  254. package/src/runtime/shared/user-data-guard.mjs +41 -42
  255. package/src/runtime/shared/utf8-cut.mjs +10 -0
  256. package/src/runtime/shared/worktrees/activity-gate.mjs +269 -61
  257. package/src/runtime/shared/worktrees/registry.mjs +26 -26
  258. package/src/runtime/tidy/core-install.mjs +26 -4
  259. package/src/runtime/tidy/install.mjs +91 -23
  260. package/src/runtime/web-search/lib/config.mjs +4 -16
  261. package/src/session-runtime/agent-home-delivery.mjs +555 -199
  262. package/src/session-runtime/agent-room-delivery.mjs +143 -36
  263. package/src/session-runtime/agent-task-sessions.mjs +667 -165
  264. package/src/session-runtime/agent-tool-routing.mjs +1 -0
  265. package/src/session-runtime/boot/apis.mjs +45 -24
  266. package/src/session-runtime/boot/config.mjs +1 -0
  267. package/src/session-runtime/boot/facade.mjs +11 -1
  268. package/src/session-runtime/boot/infrastructure.mjs +14 -2
  269. package/src/session-runtime/boot/providers.mjs +2 -2
  270. package/src/session-runtime/boot/shared.mjs +12 -6
  271. package/src/session-runtime/boot/tools.mjs +2 -2
  272. package/src/session-runtime/bot-status.mjs +432 -0
  273. package/src/session-runtime/config-lifecycle/lead-route-sync.mjs +29 -0
  274. package/src/session-runtime/config-lifecycle.mjs +60 -55
  275. package/src/session-runtime/cwd-plugins/core-memory-context.mjs +2 -4
  276. package/src/session-runtime/held-requests.mjs +36 -33
  277. package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +10 -1
  278. package/src/session-runtime/internal-tool-executor/feature-tools.mjs +2 -2
  279. package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +19 -4
  280. package/src/session-runtime/lifecycle/session-catalog.mjs +12 -2
  281. package/src/session-runtime/lifecycle/teardown.mjs +11 -3
  282. package/src/session-runtime/mcp-glue/connect.mjs +100 -186
  283. package/src/session-runtime/mcp-glue/initial-connect-gate.mjs +57 -0
  284. package/src/session-runtime/mcp-glue/server-connection.mjs +71 -0
  285. package/src/session-runtime/media-api.mjs +5 -2
  286. package/src/session-runtime/model-route/route-tuning.mjs +4 -1
  287. package/src/session-runtime/model-route/set-route.mjs +61 -1
  288. package/src/session-runtime/owned-automation-run.mjs +8 -1
  289. package/src/session-runtime/room-member-gate.mjs +16 -3
  290. package/src/session-runtime/route-resolution.mjs +16 -8
  291. package/src/session-runtime/route-state.mjs +1 -59
  292. package/src/session-runtime/routine-home-turn.mjs +5 -3
  293. package/src/session-runtime/runtime-bootstrap.mjs +5 -3
  294. package/src/session-runtime/runtime-paths.mjs +11 -5
  295. package/src/session-runtime/runtime-tunables.mjs +6 -0
  296. package/src/session-runtime/services/agent-tool/close-flow/close-all.mjs +11 -2
  297. package/src/session-runtime/services/agent-tool/close-flow.mjs +4 -2
  298. package/src/session-runtime/services/agent-tool/execute-send.mjs +1 -0
  299. package/src/session-runtime/services/agent-tool/execute-spawn.mjs +1 -0
  300. package/src/session-runtime/services/agent-tool/restart-notify.mjs +10 -0
  301. package/src/session-runtime/services/agent-tool/send-flow.mjs +25 -21
  302. package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +4 -0
  303. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +6 -3
  304. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +8 -5
  305. package/src/session-runtime/services/agent-tool/worker-index/row-liveness.mjs +22 -2
  306. package/src/session-runtime/services/agent-tool/worker-index.mjs +4 -6
  307. package/src/session-runtime/services/agent-tool.mjs +6 -0
  308. package/src/session-runtime/services/daemon-crash-capture/daemon-exit-record.mjs +1 -1
  309. package/src/session-runtime/services/daemon-crash-capture/retention.mjs +4 -3
  310. package/src/session-runtime/services/hook-bus/config-loader.mjs +14 -5
  311. package/src/session-runtime/services/hook-bus/rule-file.mjs +49 -11
  312. package/src/session-runtime/services/plugin-admin.mjs +26 -26
  313. package/src/session-runtime/services/provider-admin.mjs +14 -4
  314. package/src/session-runtime/services/schedule-access.mjs +33 -4
  315. package/src/session-runtime/services/seeds.mjs +4 -3
  316. package/src/session-runtime/services/usage-dashboard.mjs +1 -1
  317. package/src/session-runtime/services/usage-stats-model.mjs +2 -1
  318. package/src/session-runtime/session-create/materialize.mjs +2 -3
  319. package/src/session-runtime/session-create/session-options.mjs +15 -2
  320. package/src/session-runtime/settings-builtin-tools-api.mjs +63 -1
  321. package/src/session-runtime/settings-compaction-api.mjs +86 -39
  322. package/src/session-runtime/setup-tool/executor.mjs +8 -2
  323. package/src/session-runtime/setup-tool/settings-contract.mjs +31 -1
  324. package/src/session-runtime/setup-tool/tool-defs.mjs +20 -3
  325. package/src/session-runtime/skills-api.mjs +12 -5
  326. package/src/session-runtime/tool-policy/agent-profile-fold.mjs +265 -0
  327. package/src/session-runtime/tool-policy/mode-switch.mjs +54 -0
  328. package/src/session-runtime/tool-policy/pending-switches.mjs +59 -0
  329. package/src/session-runtime/tool-policy/policy-stage.mjs +165 -0
  330. package/src/session-runtime/tool-policy/session-switches.mjs +169 -0
  331. package/src/session-runtime/tool-policy/surface-helpers.mjs +114 -0
  332. package/src/session-runtime/tool-policy/workflow-overlay.mjs +145 -0
  333. package/src/session-runtime/tool-policy-refresh.mjs +47 -369
  334. package/src/session-runtime/tool-surface.mjs +5 -3
  335. package/src/session-runtime/turn/turn-run/turn-prepare.mjs +95 -88
  336. package/src/session-runtime/turn/turn-run/turn-timing.mjs +4 -3
  337. package/src/session-runtime/turn/turn-run.mjs +2 -1
  338. package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +54 -7
  339. package/src/session-runtime/workflow-agents-api/agent-editor.mjs +519 -333
  340. package/src/session-runtime/workflow-agents-api/agent-route.mjs +46 -46
  341. package/src/session-runtime/workflow-agents-api/shared.mjs +5 -1
  342. package/src/session-runtime/workflow-agents-api/style-and-mode.mjs +14 -1
  343. package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +6 -3
  344. package/src/session-runtime/workspace/workspace-state.mjs +7 -6
  345. package/src/standalone/daemon-agent-control.mjs +4 -1
  346. package/src/standalone/daemon-session-control.mjs +51 -10
  347. package/src/standalone/daemon.mjs +28 -10
  348. package/src/standalone/local-session-runtime.mjs +22 -14
  349. package/src/standalone/session-client.mjs +7 -2
  350. package/src/standalone/session-protocol.mjs +7 -0
  351. package/src/standalone/session-service.mjs +11 -0
  352. package/src/standalone/session-state-projection.mjs +19 -9
  353. package/src/standalone/session-tool-output.mjs +35 -9
  354. package/src/tui/app/maintenance-pickers/auto-clear-picker.mjs +19 -13
  355. package/src/tui/app/settings-picker/settings-rows.mjs +2 -2
  356. package/src/tui/app/slash-commands.mjs +1 -1
  357. package/src/tui/app/usage-context-panels/context-model.mjs +8 -2
  358. package/src/tui/dist/index.mjs +529 -333
  359. package/src/tui/prompt-history-store.mjs +16 -21
  360. package/src/tui/session/context-state.mjs +4 -0
  361. package/src/tui/session/session-api/intake/abort.mjs +19 -1
  362. package/src/tui/session/session-api/media.mjs +2 -1
  363. package/src/tui/session/session-api/routes-agent-definitions.mjs +75 -0
  364. package/src/tui/session/session-api/routes-write.mjs +203 -0
  365. package/src/tui/session/session-api/routes.mjs +23 -247
  366. package/src/tui/session/session-api/settings.mjs +14 -1
  367. package/src/tui/session/session-flow/drain.mjs +28 -3
  368. package/src/tui/session/session-flow/failed-turn-rewind.mjs +4 -2
  369. package/src/tui/session/session-flow/queue/take-entries.mjs +8 -0
  370. package/src/tui/session/session-flow/steering.mjs +8 -3
  371. package/src/tui/session/tool-approval.mjs +185 -20
  372. package/src/tui/session/transcript-intake.mjs +2 -0
  373. package/src/tui/session/turn.mjs +23 -14
  374. package/src/tui/transcript-tool-failures.mjs +8 -2
  375. package/src/vendor/statusline/src/gateway/route-meta.mjs +7 -8
  376. package/src/vendor/statusline/src/gateway/session-routes.mjs +6 -7
  377. package/src/rules/agent-mode/ROUTINE.md +0 -6
@@ -22,6 +22,7 @@ export function createRoutedAgentTool({ rt, agentTool, executeAgentControl = nul
22
22
  {
23
23
  type: '__close_all',
24
24
  reason: String(reason || 'agent owner closed'),
25
+ ...(scope?.processExit === true ? { processExit: true } : {}),
25
26
  },
26
27
  {
27
28
  callerCwd: rt.currentCwd,
@@ -60,13 +60,13 @@ import { createSessionTurnApi } from '../session-turn-api.mjs';
60
60
  import { createGoalFacadeApi } from '../goal-facade-api.mjs';
61
61
  import { createRuntimeReviewApi } from '../runtime-review-api.mjs';
62
62
  import { createWorkspaceTransitions, refreshWorkspacePrompt } from '../workspace/transitions.mjs';
63
- import { saveSession } from '../../runtime/agent/orchestrator/session/store.mjs';
63
+ import { saveSession, saveSessionAsync } from '../../runtime/agent/orchestrator/session/store.mjs';
64
64
  import { modelToolSchemaAllowlist } from '../../runtime/agent/orchestrator/runtime-core/tool-profile.mjs';
65
65
  import { sessionOptions } from '../session-create/session-options.mjs';
66
66
  import { createConversationImportApi } from '../conversation-import/service.mjs';
67
67
  import { importError } from '../conversation-import/discovery.mjs';
68
68
  import { bootProfile } from '../boot-profile.mjs';
69
- import { STANDALONE_DATA_DIR } from '../runtime-paths.mjs';
69
+ import { standaloneDataDir } from '../runtime-paths.mjs';
70
70
  import { registerBotRouteStore } from '../../runtime/shared/agent-store.mjs';
71
71
  import {
72
72
  dataDirOf,
@@ -125,6 +125,13 @@ export function wireApis(boot) {
125
125
  } catch (error) {
126
126
  bootProfile('connector-policy:migrate-failed', { error: error?.message || String(error) });
127
127
  }
128
+ // Agents made before the kind marker get `kind: agent` once, so an update
129
+ // never turns a workflow agent into a bot (agent-kind-migration.mjs).
130
+ try {
131
+ boot.workflowAgentsApi.migrateAgentKindMarkers();
132
+ } catch (error) {
133
+ bootProfile('agent-kind:migrate-failed', { error: error?.message || String(error) });
134
+ }
128
135
  // Bots get their own store (bots/) once, before any catalog read; a
129
136
  // failed split leaves agents/ read as before (bot-split-migration.mjs).
130
137
  try {
@@ -153,26 +160,37 @@ export function wireApis(boot) {
153
160
 
154
161
  function wireToolPolicyRefresh(boot) {
155
162
  const { rt, cfgMod } = boot;
156
- const { refreshEmptySessionToolPolicy, switchSessionWorkflow, refreshAgentProfile, applyPendingAgentProfile } =
157
- createToolPolicyRefresh({
158
- getSession: () => rt.session,
159
- getRoute: () => rt.route,
160
- getMode: () => rt.mode,
161
- getConfig: () => rt.config,
162
- getDataDir: () => dataDirOf(cfgMod),
163
- getActiveTurnCount: () => rt.activeTurnCount || 0,
164
- modelStandaloneTools: boot.modelStandaloneTools,
165
- featureDisallowedTools: boot.featureDisallowedTools,
166
- loadCoreMemoryContext: boot.loadCoreMemoryContext,
167
- loadInstructionFilesContext: (session) =>
168
- session.skipInstructionFiles
169
- ? ''
170
- : loadInstructionFilesContext({ mode: rt.config?.instructionFiles, cwd: session.cwd }),
171
- activeWorkflowContext: workflowHelpers.activeWorkflowContext,
172
- invalidatePreSessionToolSurface: boot.invalidatePreSessionToolSurface,
173
- });
163
+ const {
164
+ refreshEmptySessionToolPolicy,
165
+ switchSessionWorkflow,
166
+ switchSessionOrchestrationMode,
167
+ applyPendingSessionSwitches,
168
+ refreshAgentProfile,
169
+ applyPendingAgentProfile,
170
+ } = createToolPolicyRefresh({
171
+ getSession: () => rt.session,
172
+ getRoute: () => rt.route,
173
+ getMode: () => rt.mode,
174
+ getConfig: () => rt.config,
175
+ getDataDir: () => dataDirOf(cfgMod),
176
+ getActiveTurnCount: () => rt.activeTurnCount || 0,
177
+ modelStandaloneTools: boot.modelStandaloneTools,
178
+ featureDisallowedTools: boot.featureDisallowedTools,
179
+ loadCoreMemoryContext: boot.loadCoreMemoryContext,
180
+ loadInstructionFilesContext: (session) =>
181
+ session.skipInstructionFiles
182
+ ? ''
183
+ : loadInstructionFilesContext({ mode: rt.config?.instructionFiles, cwd: session.cwd }),
184
+ activeWorkflowContext: workflowHelpers.activeWorkflowContext,
185
+ invalidatePreSessionToolSurface: boot.invalidatePreSessionToolSurface,
186
+ // A switch is acknowledged only once saved; a session closed or replaced
187
+ // since (its generation moved) is not resurrected.
188
+ persistSession: (session) => saveSessionAsync(session, { expectedGeneration: session.generation }),
189
+ });
174
190
  boot.refreshEmptySessionToolPolicy = refreshEmptySessionToolPolicy;
175
191
  boot.switchSessionWorkflow = switchSessionWorkflow;
192
+ boot.switchSessionOrchestrationMode = switchSessionOrchestrationMode;
193
+ boot.applyPendingSessionSwitches = applyPendingSessionSwitches;
176
194
  boot.refreshAgentProfile = refreshAgentProfile;
177
195
  boot.applyPendingAgentProfile = applyPendingAgentProfile;
178
196
  // A saved bot reaches this runtime's thread when its prompt embeds it (it
@@ -192,7 +210,7 @@ function wireToolPolicyRefresh(boot) {
192
210
  function builtinFeatureAdapters(boot) {
193
211
  const { cfgMod, getMemoryModule } = boot;
194
212
  return {
195
- prepareBuiltinFeature: async (name) => {
213
+ prepareBuiltinFeature: async (name, options) => {
196
214
  if (name === 'memory') {
197
215
  const memory = await getMemoryModule();
198
216
  await memory.warmupEmbedding();
@@ -203,7 +221,7 @@ function builtinFeatureAdapters(boot) {
203
221
  const { installTidyCoreEngines } = await import('../../runtime/tidy/core-install.mjs');
204
222
  // Per-engine failures land in the install job, not in an exception:
205
223
  // the feature still installs and the card reports what did not.
206
- await installTidyCoreEngines({ pluginData: dataDirOf(cfgMod) });
224
+ await installTidyCoreEngines({ pluginData: dataDirOf(cfgMod), engines: options?.engines });
207
225
  } else if (name === 'localProvider') {
208
226
  await installLocalProviderRuntime();
209
227
  } else if (name === 'autoEffort') {
@@ -487,7 +505,7 @@ function resourceApiFor(boot) {
487
505
  getCurrentCwd: () => rt.currentCwd,
488
506
  cfgMod,
489
507
  hooks: boot.hooks,
490
- STANDALONE_DATA_DIR,
508
+ STANDALONE_DATA_DIR: standaloneDataDir(),
491
509
  saveConfigAndAdopt: boot.saveConfigAndAdopt,
492
510
  connectConfiguredMcp: boot.connectConfiguredMcp,
493
511
  cancelMcpLogin: boot.cancelMcpLogin,
@@ -574,7 +592,7 @@ function workflowAgentsApiFor(boot) {
574
592
  },
575
593
  getSession: () => rt.session,
576
594
  cfgMod: boot.cfgMod,
577
- STANDALONE_DATA_DIR,
595
+ STANDALONE_DATA_DIR: standaloneDataDir(),
578
596
  resolveRoute,
579
597
  lookupModelMeta: boot.lookupModelMeta,
580
598
  adoptConfig: boot.adoptConfig,
@@ -599,6 +617,7 @@ function workflowAgentsApiFor(boot) {
599
617
  invalidatePreSessionToolSurface: boot.invalidatePreSessionToolSurface,
600
618
  refreshEmptySessionToolPolicy: boot.refreshEmptySessionToolPolicy,
601
619
  switchSessionWorkflow: boot.switchSessionWorkflow,
620
+ switchSessionOrchestrationMode: boot.switchSessionOrchestrationMode,
602
621
  });
603
622
  }
604
623
 
@@ -641,6 +660,7 @@ function sessionTurnApiFor(boot) {
641
660
  return createSessionTurnApi({
642
661
  applyPendingRoute: () => boot.modelRouteApi.applyPendingRoute(),
643
662
  applyPendingAgentProfile: boot.applyPendingAgentProfile,
663
+ applyPendingSessionSwitches: boot.applyPendingSessionSwitches,
644
664
  prepareTurnWorkspace: boot.workspaceApi.prepareTurnWorkspace,
645
665
  admitTurnWorkspace: boot.workspaceApi.admitTurnWorkspace,
646
666
  getSession: () => rt.session,
@@ -696,6 +716,7 @@ function sessionTurnApiFor(boot) {
696
716
  notificationListeners: boot.notificationListeners,
697
717
  awaitInitialMcpConnect: boot.awaitInitialMcpConnect,
698
718
  mcpTurnGraceMs: tunables.mcpTurnGraceMs,
719
+ mcpAgentGraceMs: tunables.mcpAgentGraceMs,
699
720
  awaitRoutePreparation: () => routePreparation.wait(),
700
721
  getReservedSessionId: () => rt.reservedSessionId,
701
722
  assertSessionAdmission: () => assertAdmissionOpen(rt),
@@ -36,6 +36,7 @@ export async function resolveConfig(boot) {
36
36
  contextPercent: params.contextPercent,
37
37
  contextTokens: params.contextTokens,
38
38
  selectedContextWindow: params.selectedContextWindow,
39
+ agentOwned: params.sessionProfile?.owner === 'agent' || params.sessionProfile?.visibility === 'agent-only',
39
40
  }));
40
41
  configureLocalProviderIdleTtl(rt.config.providers?.[LOCAL_PROVIDER_ID]?.idleTtlSeconds);
41
42
  setConfiguredShell(normalizeSystemShellConfig(rt.config.shell).command);
@@ -90,6 +90,14 @@ function reserveSessionId(boot, id) {
90
90
  // the configured one is the default for new sessions.
91
91
  function currentWorkflow(boot) {
92
92
  const { rt, cfgMod } = boot;
93
+ // A switch chosen while a turn runs shows at once; it applies next turn.
94
+ const pending = rt.session?.pendingWorkflowId;
95
+ if (pending) {
96
+ return workflowHelpers.activeWorkflowSummary(
97
+ { ...rt.config, workflow: { ...(rt.config?.workflow || {}), active: pending } },
98
+ dataDirOf(cfgMod)
99
+ );
100
+ }
93
101
  const active = workflowHelpers.activeWorkflowSummary(rt.config, dataDirOf(cfgMod));
94
102
  const current = rt.session?.workflow;
95
103
  return current?.id && active?.id && current.id !== active.id ? current : active;
@@ -106,7 +114,9 @@ function facadeGetters(boot) {
106
114
  },
107
115
  getWorkflow: () => currentWorkflow(boot),
108
116
  getOrchestrationMode: () =>
109
- rt.session?.id ? sessionOrchestrationMode(rt.session) : configuredOrchestrationMode(rt.config),
117
+ rt.session?.id
118
+ ? (rt.session.pendingOrchestrationMode ?? sessionOrchestrationMode(rt.session))
119
+ : configuredOrchestrationMode(rt.config),
110
120
  getOutputStyle: () => boot.getOutputStyleStatusCached().current,
111
121
  getContextStatus: boot.computeContextStatus,
112
122
  getContextStatusForSession: boot.computeContextStatusForSession,
@@ -4,6 +4,7 @@ import { performance } from 'node:perf_hooks';
4
4
  import { existsSync, statSync } from 'node:fs';
5
5
  import { resolve } from 'node:path';
6
6
  import { createStandaloneHookBus } from '../services/hook-bus.mjs';
7
+ import { attachSessionHooks } from '../session-hooks.mjs';
7
8
  import { updateCurrentCwdOverride, writeLastSessionCwd } from '../../runtime/shared/user-cwd.mjs';
8
9
  import { listRegisteredPlugins, pluginAdminStatus } from '../services/plugin-admin.mjs';
9
10
  import { clean } from '../../runtime/agent/orchestrator/runtime-core/session-text.mjs';
@@ -17,7 +18,7 @@ import { createCwdPlugins } from '../cwd-plugins.mjs';
17
18
  import { injectedMemoryAgentId } from '../services/memory-access.mjs';
18
19
  import { listProjectsStrict } from '../../runtime/shared/projects.mjs';
19
20
  import { isWithin } from '../../runtime/shared/worktrees/paths.mjs';
20
- import { STANDALONE_DATA_DIR } from '../runtime-paths.mjs';
21
+ import { standaloneDataDir } from '../runtime-paths.mjs';
21
22
  import { SessionAddressError, isAdmissionOpen, ownerLifecycle } from '../session-address.mjs';
22
23
  import { dataDirOf } from './shared.mjs';
23
24
 
@@ -186,6 +187,17 @@ export function sessionAdopter(boot) {
186
187
  }
187
188
  }
188
189
  rt.session = v;
190
+ // The PreToolUse/PostToolUse bridge is a non-enumerable property that
191
+ // neither the store nor a resumed record carries: every session installed
192
+ // here (create, resume, route swap, clear, the manager's copy) gets it, so
193
+ // hook rules apply to all of them, not only to freshly created sessions.
194
+ if (v?.id && typeof v.beforeToolHook !== 'function') {
195
+ attachSessionHooks(v, {
196
+ hooks: boot.hooks,
197
+ hookCommonPayload: (...a) => boot.hookCommonPayload(...a),
198
+ getCwd: () => rt.currentCwd,
199
+ });
200
+ }
189
201
  if (v?.id) {
190
202
  rt.desktopSession = v.desktopSession || null;
191
203
  // Bind every adopted session, including a cold resume and a session
@@ -292,7 +304,7 @@ function wireCwdPlugins(boot) {
292
304
  statSync,
293
305
  existsSync,
294
306
  cfgMod,
295
- STANDALONE_DATA_DIR,
307
+ STANDALONE_DATA_DIR: standaloneDataDir(),
296
308
  });
297
309
  Object.assign(boot, { resolveCwdPath, applyResolvedCwd, pluginsStatus, loadCoreMemoryContext });
298
310
  }
@@ -35,7 +35,7 @@ import { createQuickModelRows } from '../quick-model-rows.mjs';
35
35
  import { createProviderModels } from '../provider-models.mjs';
36
36
  import { createProviderUsage } from '../provider-usage.mjs';
37
37
  import { bootProfile } from '../boot-profile.mjs';
38
- import { STANDALONE_DATA_DIR } from '../runtime-paths.mjs';
38
+ import { standaloneDataDir } from '../runtime-paths.mjs';
39
39
  import { outputStyleStatus, resolveRoute, webSearchCapableFor } from './shared.mjs';
40
40
 
41
41
  export function wireProviders(boot) {
@@ -80,7 +80,7 @@ function wireConfigLifecycle(boot) {
80
80
  clean,
81
81
  resolve,
82
82
  onConfigReloaded: () => boot.invalidateContextStatusCache?.(),
83
- STANDALONE_DATA_DIR,
83
+ STANDALONE_DATA_DIR: standaloneDataDir(),
84
84
  });
85
85
  const {
86
86
  disposeConfigSync,
@@ -3,25 +3,31 @@
3
3
  import { isKnownProvider } from '../services/provider-admin.mjs';
4
4
  import { normalizeAgentPermissionOrNone, readMarkdownDocument } from '../../runtime/shared/markdown-frontmatter.mjs';
5
5
  import { makeWebSearchCapableFor } from '../../runtime/agent/orchestrator/runtime-core/model-capabilities.mjs';
6
- import { makeResolveDefaultProvider, findPreset, makeResolveRoute } from '../../runtime/agent/orchestrator/runtime-core/config-helpers.mjs';
6
+ import {
7
+ makeResolveDefaultProvider,
8
+ findPreset,
9
+ makeResolveRoute,
10
+ } from '../../runtime/agent/orchestrator/runtime-core/config-helpers.mjs';
7
11
  import { outputStyleStatus as outputStyleStatusRaw } from '../output-styles.mjs';
8
12
  import {
9
13
  createWorkflowHelpers,
10
14
  createWorkflowRouteHelpers,
11
15
  webSearchProviderFamily,
12
16
  } from '../../runtime/agent/orchestrator/runtime-core/workflow.mjs';
13
- import { STANDALONE_ROOT, STANDALONE_DATA_DIR } from '../runtime-paths.mjs';
17
+ import { STANDALONE_ROOT, standaloneDataDir } from '../runtime-paths.mjs';
14
18
 
15
19
  export const resolveRoute = makeResolveRoute(makeResolveDefaultProvider(isKnownProvider));
16
20
  export const webSearchCapableFor = makeWebSearchCapableFor(webSearchProviderFamily);
17
21
 
18
- export const outputStyleStatus = (dataDir = STANDALONE_DATA_DIR, opts = {}) =>
19
- outputStyleStatusRaw(STANDALONE_ROOT, dataDir || STANDALONE_DATA_DIR, opts);
22
+ export const outputStyleStatus = (dataDir = standaloneDataDir(), opts = {}) =>
23
+ outputStyleStatusRaw(STANDALONE_ROOT, dataDir || standaloneDataDir(), opts);
20
24
 
21
- // Workflow/agent pack loaders bound to this runtime's root/data layout.
25
+ // Workflow/agent pack loaders bound to this runtime's root/data layout. The
26
+ // default data dir is the resolver itself, read per call, so a later runtime
27
+ // start in the same process uses its own data folder.
22
28
  export const workflowHelpers = createWorkflowHelpers({
23
29
  rootDir: STANDALONE_ROOT,
24
- dataDir: STANDALONE_DATA_DIR,
30
+ dataDir: standaloneDataDir,
25
31
  readMarkdownDocument,
26
32
  normalizeAgentPermissionOrNone,
27
33
  });
@@ -34,7 +34,7 @@ import {
34
34
  createContextStatus,
35
35
  } from '../../runtime/agent/orchestrator/runtime-core/context-status.mjs';
36
36
  import { createInternalToolExecutor } from '../internal-tool-executor.mjs';
37
- import { STANDALONE_ROOT, STANDALONE_DATA_DIR } from '../runtime-paths.mjs';
37
+ import { STANDALONE_ROOT, standaloneDataDir } from '../runtime-paths.mjs';
38
38
  import { dataDirOf, workflowHelpers } from './shared.mjs';
39
39
 
40
40
  export function wireTools(boot) {
@@ -182,7 +182,7 @@ function wireToolSurface(boot) {
182
182
  getCurrentCwd: () => rt.currentCwd,
183
183
  cfgMod,
184
184
  delegatableAgentIds: workflowHelpers.delegatableAgentIds,
185
- dataDir: STANDALONE_DATA_DIR,
185
+ dataDir: standaloneDataDir(),
186
186
  getFeatureDisallowedTools: featureDisallowedTools,
187
187
  });
188
188
  Object.assign(boot, {