@hyperdrive.bot/fleet-server 0.3.99

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 (991) hide show
  1. package/.env.example +31 -0
  2. package/README.md +111 -0
  3. package/dist/scripts/dev-runner.js +37 -0
  4. package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
  5. package/dist/scripts/supervisor-entrypoint.js +156 -0
  6. package/dist/scripts/supervisor-log-config.js +31 -0
  7. package/dist/scripts/supervisor.js +345 -0
  8. package/dist/server/executable-resolution/executable-resolution.d.ts +10 -0
  9. package/dist/server/executable-resolution/executable-resolution.js +118 -0
  10. package/dist/server/executable-resolution/windows.d.ts +18 -0
  11. package/dist/server/executable-resolution/windows.js +65 -0
  12. package/dist/server/extensions/daemon-backend.d.ts +11 -0
  13. package/dist/server/extensions/daemon-backend.js +146 -0
  14. package/dist/server/extensions/extension-host-manager.d.ts +48 -0
  15. package/dist/server/extensions/extension-host-manager.js +141 -0
  16. package/dist/server/extensions/extension-loader.d.ts +11 -0
  17. package/dist/server/extensions/extension-loader.js +47 -0
  18. package/dist/server/extensions/extension-service.d.ts +17 -0
  19. package/dist/server/extensions/extension-service.js +76 -0
  20. package/dist/server/server/agent/activity-curator.d.ts +28 -0
  21. package/dist/server/server/agent/activity-curator.js +227 -0
  22. package/dist/server/server/agent/agent-archive.d.ts +11 -0
  23. package/dist/server/server/agent/agent-archive.js +16 -0
  24. package/dist/server/server/agent/agent-list-filter.d.ts +76 -0
  25. package/dist/server/server/agent/agent-list-filter.js +184 -0
  26. package/dist/server/server/agent/agent-loading.d.ts +12 -0
  27. package/dist/server/server/agent/agent-loading.js +76 -0
  28. package/dist/server/server/agent/agent-manager.d.ts +628 -0
  29. package/dist/server/server/agent/agent-manager.js +3370 -0
  30. package/dist/server/server/agent/agent-projections.d.ts +65 -0
  31. package/dist/server/server/agent/agent-projections.js +548 -0
  32. package/dist/server/server/agent/agent-prompt.d.ts +65 -0
  33. package/dist/server/server/agent/agent-prompt.js +271 -0
  34. package/dist/server/server/agent/agent-response-loop.d.ts +67 -0
  35. package/dist/server/server/agent/agent-response-loop.js +326 -0
  36. package/dist/server/server/agent/agent-routes.d.ts +18 -0
  37. package/dist/server/server/agent/agent-routes.js +107 -0
  38. package/dist/server/server/agent/agent-sdk-types.d.ts +809 -0
  39. package/dist/server/server/agent/agent-sdk-types.js +22 -0
  40. package/dist/server/server/agent/agent-storage.d.ts +209 -0
  41. package/dist/server/server/agent/agent-storage.js +365 -0
  42. package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
  43. package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
  44. package/dist/server/server/agent/agent-timeline-store-types.d.ts +50 -0
  45. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  46. package/dist/server/server/agent/agent-timeline-store.d.ts +27 -0
  47. package/dist/server/server/agent/agent-timeline-store.js +277 -0
  48. package/dist/server/server/agent/audio-utils.d.ts +3 -0
  49. package/dist/server/server/agent/audio-utils.js +19 -0
  50. package/dist/server/server/agent/authorship-ledger.d.ts +139 -0
  51. package/dist/server/server/agent/authorship-ledger.js +207 -0
  52. package/dist/server/server/agent/authorship-markup.d.ts +198 -0
  53. package/dist/server/server/agent/authorship-markup.js +288 -0
  54. package/dist/server/server/agent/blocker-log.d.ts +81 -0
  55. package/dist/server/server/agent/blocker-log.js +113 -0
  56. package/dist/server/server/agent/card-move-log.d.ts +66 -0
  57. package/dist/server/server/agent/card-move-log.js +113 -0
  58. package/dist/server/server/agent/create-agent/create.d.ts +126 -0
  59. package/dist/server/server/agent/create-agent/create.js +378 -0
  60. package/dist/server/server/agent/create-agent/routine.d.ts +45 -0
  61. package/dist/server/server/agent/create-agent/routine.js +53 -0
  62. package/dist/server/server/agent/create-agent-lifecycle-dispatch.d.ts +54 -0
  63. package/dist/server/server/agent/create-agent-lifecycle-dispatch.js +152 -0
  64. package/dist/server/server/agent/create-agent-mode.d.ts +13 -0
  65. package/dist/server/server/agent/create-agent-mode.js +62 -0
  66. package/dist/server/server/agent/create-agent-title.d.ts +10 -0
  67. package/dist/server/server/agent/create-agent-title.js +34 -0
  68. package/dist/server/server/agent/dictation-debug.d.ts +13 -0
  69. package/dist/server/server/agent/dictation-debug.js +50 -0
  70. package/dist/server/server/agent/foreground-run-state.d.ts +50 -0
  71. package/dist/server/server/agent/foreground-run-state.js +160 -0
  72. package/dist/server/server/agent/import-sessions.d.ts +52 -0
  73. package/dist/server/server/agent/import-sessions.js +170 -0
  74. package/dist/server/server/agent/jarvis-judge.d.ts +157 -0
  75. package/dist/server/server/agent/jarvis-judge.js +289 -0
  76. package/dist/server/server/agent/judge-relay-gate.d.ts +70 -0
  77. package/dist/server/server/agent/judge-relay-gate.js +92 -0
  78. package/dist/server/server/agent/lifecycle-command.d.ts +75 -0
  79. package/dist/server/server/agent/lifecycle-command.js +97 -0
  80. package/dist/server/server/agent/mcp-server.d.ts +22 -0
  81. package/dist/server/server/agent/mcp-server.js +653 -0
  82. package/dist/server/server/agent/mcp-shared.d.ts +239 -0
  83. package/dist/server/server/agent/mcp-shared.js +200 -0
  84. package/dist/server/server/agent/output-language.d.ts +16 -0
  85. package/dist/server/server/agent/output-language.js +62 -0
  86. package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
  87. package/dist/server/server/agent/pcm16-resampler.js +63 -0
  88. package/dist/server/server/agent/permission-response.d.ts +15 -0
  89. package/dist/server/server/agent/permission-response.js +14 -0
  90. package/dist/server/server/agent/prompt-attachments.d.ts +7 -0
  91. package/dist/server/server/agent/prompt-attachments.js +90 -0
  92. package/dist/server/server/agent/provider-config-reload.d.ts +27 -0
  93. package/dist/server/server/agent/provider-config-reload.js +65 -0
  94. package/dist/server/server/agent/provider-history-timestamps.d.ts +2 -0
  95. package/dist/server/server/agent/provider-history-timestamps.js +16 -0
  96. package/dist/server/server/agent/provider-launch-config.d.ts +51 -0
  97. package/dist/server/server/agent/provider-launch-config.js +183 -0
  98. package/dist/server/server/agent/provider-notices.d.ts +3 -0
  99. package/dist/server/server/agent/provider-notices.js +5 -0
  100. package/dist/server/server/agent/provider-registry-contract.d.ts +40 -0
  101. package/dist/server/server/agent/provider-registry-contract.js +28 -0
  102. package/dist/server/server/agent/provider-registry.d.ts +97 -0
  103. package/dist/server/server/agent/provider-registry.js +686 -0
  104. package/dist/server/server/agent/provider-session-import.d.ts +10 -0
  105. package/dist/server/server/agent/provider-session-import.js +49 -0
  106. package/dist/server/server/agent/provider-snapshot-manager.d.ts +166 -0
  107. package/dist/server/server/agent/provider-snapshot-manager.js +760 -0
  108. package/dist/server/server/agent/providers/acp-agent.d.ts +354 -0
  109. package/dist/server/server/agent/providers/acp-agent.js +2438 -0
  110. package/dist/server/server/agent/providers/claude/agent.d.ts +491 -0
  111. package/dist/server/server/agent/providers/claude/agent.js +5128 -0
  112. package/dist/server/server/agent/providers/claude/background-shell-kill-keys.d.ts +32 -0
  113. package/dist/server/server/agent/providers/claude/background-shell-kill-keys.js +34 -0
  114. package/dist/server/server/agent/providers/claude/background-task-tracker.d.ts +217 -0
  115. package/dist/server/server/agent/providers/claude/background-task-tracker.js +511 -0
  116. package/dist/server/server/agent/providers/claude/background-work-kinds.d.ts +124 -0
  117. package/dist/server/server/agent/providers/claude/background-work-kinds.js +96 -0
  118. package/dist/server/server/agent/providers/claude/feature-definitions.d.ts +8 -0
  119. package/dist/server/server/agent/providers/claude/feature-definitions.js +24 -0
  120. package/dist/server/server/agent/providers/claude/hook-handler.d.ts +37 -0
  121. package/dist/server/server/agent/providers/claude/hook-handler.js +193 -0
  122. package/dist/server/server/agent/providers/claude/hooks/event-translator.d.ts +49 -0
  123. package/dist/server/server/agent/providers/claude/hooks/event-translator.js +151 -0
  124. package/dist/server/server/agent/providers/claude/image-compression.d.ts +10 -0
  125. package/dist/server/server/agent/providers/claude/image-compression.js +32 -0
  126. package/dist/server/server/agent/providers/claude/model-manifest.d.ts +116 -0
  127. package/dist/server/server/agent/providers/claude/model-manifest.js +279 -0
  128. package/dist/server/server/agent/providers/claude/models.d.ts +11 -0
  129. package/dist/server/server/agent/providers/claude/models.js +97 -0
  130. package/dist/server/server/agent/providers/claude/partial-json.d.ts +5 -0
  131. package/dist/server/server/agent/providers/claude/partial-json.js +306 -0
  132. package/dist/server/server/agent/providers/claude/project-dir.d.ts +6 -0
  133. package/dist/server/server/agent/providers/claude/project-dir.js +57 -0
  134. package/dist/server/server/agent/providers/claude/pty-session-launcher.d.ts +62 -0
  135. package/dist/server/server/agent/providers/claude/pty-session-launcher.js +175 -0
  136. package/dist/server/server/agent/providers/claude/resume-source.d.ts +11 -0
  137. package/dist/server/server/agent/providers/claude/resume-source.js +37 -0
  138. package/dist/server/server/agent/providers/claude/rewind.d.ts +30 -0
  139. package/dist/server/server/agent/providers/claude/rewind.js +30 -0
  140. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts +22 -0
  141. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +232 -0
  142. package/dist/server/server/agent/providers/claude/spawn-config-writer.d.ts +70 -0
  143. package/dist/server/server/agent/providers/claude/spawn-config-writer.js +229 -0
  144. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +47 -0
  145. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +292 -0
  146. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.d.ts +24 -0
  147. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.js +23 -0
  148. package/dist/server/server/agent/providers/claude/tool-allowlist-guard.d.ts +41 -0
  149. package/dist/server/server/agent/providers/claude/tool-allowlist-guard.js +95 -0
  150. package/dist/server/server/agent/providers/claude/tool-allowlist.d.ts +68 -0
  151. package/dist/server/server/agent/providers/claude/tool-allowlist.js +133 -0
  152. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
  153. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +130 -0
  154. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
  155. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +129 -0
  156. package/dist/server/server/agent/providers/claude/transport/claude-paths.d.ts +31 -0
  157. package/dist/server/server/agent/providers/claude/transport/claude-paths.js +63 -0
  158. package/dist/server/server/agent/providers/claude/transport/continue-flag.d.ts +31 -0
  159. package/dist/server/server/agent/providers/claude/transport/continue-flag.js +42 -0
  160. package/dist/server/server/agent/providers/claude/transport/pty-query.d.ts +493 -0
  161. package/dist/server/server/agent/providers/claude/transport/pty-query.js +2075 -0
  162. package/dist/server/server/agent/providers/claude/transport/pty.d.ts +153 -0
  163. package/dist/server/server/agent/providers/claude/transport/pty.js +367 -0
  164. package/dist/server/server/agent/providers/claude/transport/redact.d.ts +8 -0
  165. package/dist/server/server/agent/providers/claude/transport/redact.js +33 -0
  166. package/dist/server/server/agent/providers/claude/transport/sdk.d.ts +65 -0
  167. package/dist/server/server/agent/providers/claude/transport/sdk.js +219 -0
  168. package/dist/server/server/agent/providers/claude/transport/tmux.d.ts +141 -0
  169. package/dist/server/server/agent/providers/claude/transport/tmux.js +218 -0
  170. package/dist/server/server/agent/providers/claude/transport/transcript-sdk-reader.d.ts +53 -0
  171. package/dist/server/server/agent/providers/claude/transport/transcript-sdk-reader.js +243 -0
  172. package/dist/server/server/agent/providers/claude/transport/transcript-tailer.d.ts +28 -0
  173. package/dist/server/server/agent/providers/claude/transport/transcript-tailer.js +166 -0
  174. package/dist/server/server/agent/providers/claude/transport/truncate-session.d.ts +50 -0
  175. package/dist/server/server/agent/providers/claude/transport/truncate-session.js +121 -0
  176. package/dist/server/server/agent/providers/claude/transport/turn-id-reconciler.d.ts +36 -0
  177. package/dist/server/server/agent/providers/claude/transport/turn-id-reconciler.js +75 -0
  178. package/dist/server/server/agent/providers/claude/transport/types.d.ts +61 -0
  179. package/dist/server/server/agent/providers/claude/transport/types.js +2 -0
  180. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +90 -0
  181. package/dist/server/server/agent/providers/codex/app-server-transport.js +262 -0
  182. package/dist/server/server/agent/providers/codex/rewind.d.ts +21 -0
  183. package/dist/server/server/agent/providers/codex/rewind.js +46 -0
  184. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts +36 -0
  185. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js +217 -0
  186. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +12 -0
  187. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +104 -0
  188. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +24 -0
  189. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +830 -0
  190. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +308 -0
  191. package/dist/server/server/agent/providers/codex-app-server-agent.js +4515 -0
  192. package/dist/server/server/agent/providers/codex-feature-definitions.d.ts +11 -0
  193. package/dist/server/server/agent/providers/codex-feature-definitions.js +45 -0
  194. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +26 -0
  195. package/dist/server/server/agent/providers/copilot-acp-agent.js +187 -0
  196. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts +15 -0
  197. package/dist/server/server/agent/providers/cursor-acp-agent.js +18 -0
  198. package/dist/server/server/agent/providers/diagnostic-utils.d.ts +36 -0
  199. package/dist/server/server/agent/providers/diagnostic-utils.js +355 -0
  200. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +42 -0
  201. package/dist/server/server/agent/providers/generic-acp-agent.js +161 -0
  202. package/dist/server/server/agent/providers/kiro-acp-agent.d.ts +17 -0
  203. package/dist/server/server/agent/providers/kiro-acp-agent.js +78 -0
  204. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +85 -0
  205. package/dist/server/server/agent/providers/mock-load-test-agent.js +1010 -0
  206. package/dist/server/server/agent/providers/mock-slow-provider.d.ts +14 -0
  207. package/dist/server/server/agent/providers/mock-slow-provider.js +39 -0
  208. package/dist/server/server/agent/providers/opencode/paths.d.ts +2 -0
  209. package/dist/server/server/agent/providers/opencode/paths.js +7 -0
  210. package/dist/server/server/agent/providers/opencode/rewind.d.ts +18 -0
  211. package/dist/server/server/agent/providers/opencode/rewind.js +14 -0
  212. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +91 -0
  213. package/dist/server/server/agent/providers/opencode/server-manager.js +425 -0
  214. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +25 -0
  215. package/dist/server/server/agent/providers/opencode/test-server-manager.js +39 -0
  216. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.d.ts +92 -0
  217. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-harness.js +268 -0
  218. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
  219. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +256 -0
  220. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
  221. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +53 -0
  222. package/dist/server/server/agent/providers/opencode-agent.d.ts +293 -0
  223. package/dist/server/server/agent/providers/opencode-agent.js +2908 -0
  224. package/dist/server/server/agent/providers/pi/agent.d.ts +137 -0
  225. package/dist/server/server/agent/providers/pi/agent.js +1651 -0
  226. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +21 -0
  227. package/dist/server/server/agent/providers/pi/cli-runtime.js +233 -0
  228. package/dist/server/server/agent/providers/pi/history-mapper.d.ts +9 -0
  229. package/dist/server/server/agent/providers/pi/history-mapper.js +140 -0
  230. package/dist/server/server/agent/providers/pi/rewind.d.ts +8 -0
  231. package/dist/server/server/agent/providers/pi/rewind.js +8 -0
  232. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +208 -0
  233. package/dist/server/server/agent/providers/pi/rpc-types.js +2 -0
  234. package/dist/server/server/agent/providers/pi/runtime.d.ts +57 -0
  235. package/dist/server/server/agent/providers/pi/runtime.js +56 -0
  236. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts +16 -0
  237. package/dist/server/server/agent/providers/pi/session-descriptor.js +346 -0
  238. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +83 -0
  239. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +184 -0
  240. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +112 -0
  241. package/dist/server/server/agent/providers/pi/tool-call-mapper.js +284 -0
  242. package/dist/server/server/agent/providers/provider-image-output.d.ts +25 -0
  243. package/dist/server/server/agent/providers/provider-image-output.js +111 -0
  244. package/dist/server/server/agent/providers/provider-runner.d.ts +27 -0
  245. package/dist/server/server/agent/providers/provider-runner.js +81 -0
  246. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts +3 -0
  247. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js +60 -0
  248. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +884 -0
  249. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +778 -0
  250. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +25 -0
  251. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +208 -0
  252. package/dist/server/server/agent/recordings-debug.d.ts +3 -0
  253. package/dist/server/server/agent/recordings-debug.js +19 -0
  254. package/dist/server/server/agent/render-file-attachment.d.ts +29 -0
  255. package/dist/server/server/agent/render-file-attachment.js +41 -0
  256. package/dist/server/server/agent/resolve-resume-cwd.d.ts +14 -0
  257. package/dist/server/server/agent/resolve-resume-cwd.js +49 -0
  258. package/dist/server/server/agent/rewind/rewind.d.ts +10 -0
  259. package/dist/server/server/agent/rewind/rewind.js +29 -0
  260. package/dist/server/server/agent/rewind/test-rewind-session.d.ts +48 -0
  261. package/dist/server/server/agent/rewind/test-rewind-session.js +88 -0
  262. package/dist/server/server/agent/runtime-mcp-config.d.ts +14 -0
  263. package/dist/server/server/agent/runtime-mcp-config.js +53 -0
  264. package/dist/server/server/agent/session-digest-generator.d.ts +64 -0
  265. package/dist/server/server/agent/session-digest-generator.js +306 -0
  266. package/dist/server/server/agent/session-digest.d.ts +81 -0
  267. package/dist/server/server/agent/session-digest.js +226 -0
  268. package/dist/server/server/agent/structured-generation-providers.d.ts +29 -0
  269. package/dist/server/server/agent/structured-generation-providers.js +236 -0
  270. package/dist/server/server/agent/stt-debug.d.ts +10 -0
  271. package/dist/server/server/agent/stt-debug.js +33 -0
  272. package/dist/server/server/agent/stt-manager.d.ts +47 -0
  273. package/dist/server/server/agent/stt-manager.js +263 -0
  274. package/dist/server/server/agent/system-prompt.d.ts +2 -0
  275. package/dist/server/server/agent/system-prompt.js +8 -0
  276. package/dist/server/server/agent/timeline-append.d.ts +10 -0
  277. package/dist/server/server/agent/timeline-append.js +27 -0
  278. package/dist/server/server/agent/timeline-projection.d.ts +71 -0
  279. package/dist/server/server/agent/timeline-projection.js +373 -0
  280. package/dist/server/server/agent/tools/paseo-tools.d.ts +66 -0
  281. package/dist/server/server/agent/tools/paseo-tools.js +2616 -0
  282. package/dist/server/server/agent/tools/read-only-surface.d.ts +53 -0
  283. package/dist/server/server/agent/tools/read-only-surface.js +69 -0
  284. package/dist/server/server/agent/tools/types.d.ts +41 -0
  285. package/dist/server/server/agent/tools/types.js +2 -0
  286. package/dist/server/server/agent/tts-debug.d.ts +8 -0
  287. package/dist/server/server/agent/tts-debug.js +24 -0
  288. package/dist/server/server/agent/tts-manager.d.ts +41 -0
  289. package/dist/server/server/agent/tts-manager.js +375 -0
  290. package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
  291. package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
  292. package/dist/server/server/agent-attention-policy.d.ts +29 -0
  293. package/dist/server/server/agent-attention-policy.js +36 -0
  294. package/dist/server/server/atomic-file.d.ts +3 -0
  295. package/dist/server/server/atomic-file.js +19 -0
  296. package/dist/server/server/auth.d.ts +68 -0
  297. package/dist/server/server/auth.js +207 -0
  298. package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +40 -0
  299. package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +92 -0
  300. package/dist/server/server/auto-archive-on-merge/index.d.ts +8 -0
  301. package/dist/server/server/auto-archive-on-merge/index.js +15 -0
  302. package/dist/server/server/bootstrap.d.ts +163 -0
  303. package/dist/server/server/bootstrap.js +1597 -0
  304. package/dist/server/server/browser-tools/broker.d.ts +45 -0
  305. package/dist/server/server/browser-tools/broker.js +390 -0
  306. package/dist/server/server/browser-tools/errors.d.ts +22 -0
  307. package/dist/server/server/browser-tools/errors.js +27 -0
  308. package/dist/server/server/browser-tools/policy.d.ts +10 -0
  309. package/dist/server/server/browser-tools/policy.js +16 -0
  310. package/dist/server/server/browser-tools/tools.d.ts +16 -0
  311. package/dist/server/server/browser-tools/tools.js +845 -0
  312. package/dist/server/server/chat/chat-mentions.d.ts +47 -0
  313. package/dist/server/server/chat/chat-mentions.js +113 -0
  314. package/dist/server/server/chat/chat-service.d.ts +78 -0
  315. package/dist/server/server/chat/chat-service.js +337 -0
  316. package/dist/server/server/checkout/status-projection.d.ts +19 -0
  317. package/dist/server/server/checkout/status-projection.js +102 -0
  318. package/dist/server/server/checkout-diff-manager.d.ts +41 -0
  319. package/dist/server/server/checkout-diff-manager.js +189 -0
  320. package/dist/server/server/checkout-git-utils.d.ts +11 -0
  321. package/dist/server/server/checkout-git-utils.js +34 -0
  322. package/dist/server/server/client-message-id.d.ts +3 -0
  323. package/dist/server/server/client-message-id.js +12 -0
  324. package/dist/server/server/config.d.ts +20 -0
  325. package/dist/server/server/config.js +427 -0
  326. package/dist/server/server/connection-offer.d.ts +20 -0
  327. package/dist/server/server/connection-offer.js +59 -0
  328. package/dist/server/server/daemon-config-store.d.ts +78 -0
  329. package/dist/server/server/daemon-config-store.js +320 -0
  330. package/dist/server/server/daemon-keypair.d.ts +8 -0
  331. package/dist/server/server/daemon-keypair.js +42 -0
  332. package/dist/server/server/daemon-version.d.ts +5 -0
  333. package/dist/server/server/daemon-version.js +22 -0
  334. package/dist/server/server/daemon-worker.d.ts +2 -0
  335. package/dist/server/server/daemon-worker.js +251 -0
  336. package/dist/server/server/dictation/dictation-stream-manager.d.ts +95 -0
  337. package/dist/server/server/dictation/dictation-stream-manager.js +581 -0
  338. package/dist/server/server/editor-targets.d.ts +18 -0
  339. package/dist/server/server/editor-targets.js +109 -0
  340. package/dist/server/server/ensure-workspace-for-create.d.ts +30 -0
  341. package/dist/server/server/ensure-workspace-for-create.js +20 -0
  342. package/dist/server/server/exports.d.ts +28 -0
  343. package/dist/server/server/exports.js +31 -0
  344. package/dist/server/server/file-download/token-store.d.ts +24 -0
  345. package/dist/server/server/file-download/token-store.js +40 -0
  346. package/dist/server/server/file-explorer/file-download-frames.d.ts +27 -0
  347. package/dist/server/server/file-explorer/file-download-frames.js +47 -0
  348. package/dist/server/server/file-explorer/mime-types.d.ts +58 -0
  349. package/dist/server/server/file-explorer/mime-types.js +212 -0
  350. package/dist/server/server/file-explorer/service.d.ts +97 -0
  351. package/dist/server/server/file-explorer/service.js +362 -0
  352. package/dist/server/server/file-upload/index.d.ts +27 -0
  353. package/dist/server/server/file-upload/index.js +158 -0
  354. package/dist/server/server/fleet/decision-service.d.ts +47 -0
  355. package/dist/server/server/fleet/decision-service.js +156 -0
  356. package/dist/server/server/fleet/fleet-controls.d.ts +77 -0
  357. package/dist/server/server/fleet/fleet-controls.js +217 -0
  358. package/dist/server/server/fleet/fleet-reader.d.ts +106 -0
  359. package/dist/server/server/fleet/fleet-reader.js +470 -0
  360. package/dist/server/server/fleet/fleet-scaffold.d.ts +26 -0
  361. package/dist/server/server/fleet/fleet-scaffold.js +48 -0
  362. package/dist/server/server/fleet/fleet-scheduler.d.ts +75 -0
  363. package/dist/server/server/fleet/fleet-scheduler.js +186 -0
  364. package/dist/server/server/fleet/fleet-service.d.ts +75 -0
  365. package/dist/server/server/fleet/fleet-service.js +134 -0
  366. package/dist/server/server/hostnames.d.ts +13 -0
  367. package/dist/server/server/hostnames.js +94 -0
  368. package/dist/server/server/ingestion/adapters.d.ts +21 -0
  369. package/dist/server/server/ingestion/adapters.js +27 -0
  370. package/dist/server/server/ingestion/apply.d.ts +220 -0
  371. package/dist/server/server/ingestion/apply.js +345 -0
  372. package/dist/server/server/ingestion/backfill.d.ts +123 -0
  373. package/dist/server/server/ingestion/backfill.js +160 -0
  374. package/dist/server/server/ingestion/cap-limiter.d.ts +148 -0
  375. package/dist/server/server/ingestion/cap-limiter.js +264 -0
  376. package/dist/server/server/ingestion/cohort-recorder-memory.d.ts +25 -0
  377. package/dist/server/server/ingestion/cohort-recorder-memory.js +78 -0
  378. package/dist/server/server/ingestion/cohort-recorder-store.d.ts +12 -0
  379. package/dist/server/server/ingestion/cohort-recorder-store.js +99 -0
  380. package/dist/server/server/ingestion/cohort-resume.d.ts +22 -0
  381. package/dist/server/server/ingestion/cohort-resume.js +171 -0
  382. package/dist/server/server/ingestion/cohort-store.d.ts +227 -0
  383. package/dist/server/server/ingestion/cohort-store.js +462 -0
  384. package/dist/server/server/ingestion/composio/gateway.d.ts +8 -0
  385. package/dist/server/server/ingestion/composio/gateway.js +469 -0
  386. package/dist/server/server/ingestion/dry-run.d.ts +70 -0
  387. package/dist/server/server/ingestion/dry-run.js +142 -0
  388. package/dist/server/server/ingestion/errors.d.ts +48 -0
  389. package/dist/server/server/ingestion/errors.js +63 -0
  390. package/dist/server/server/ingestion/external-user-id.d.ts +24 -0
  391. package/dist/server/server/ingestion/external-user-id.js +35 -0
  392. package/dist/server/server/ingestion/filters/store.d.ts +28 -0
  393. package/dist/server/server/ingestion/filters/store.js +74 -0
  394. package/dist/server/server/ingestion/fingerprint.d.ts +13 -0
  395. package/dist/server/server/ingestion/fingerprint.js +31 -0
  396. package/dist/server/server/ingestion/grouping.d.ts +26 -0
  397. package/dist/server/server/ingestion/grouping.js +116 -0
  398. package/dist/server/server/ingestion/hard-failure.d.ts +73 -0
  399. package/dist/server/server/ingestion/hard-failure.js +125 -0
  400. package/dist/server/server/ingestion/health.d.ts +38 -0
  401. package/dist/server/server/ingestion/health.js +90 -0
  402. package/dist/server/server/ingestion/ledger-schema.d.ts +99 -0
  403. package/dist/server/server/ingestion/ledger-schema.js +359 -0
  404. package/dist/server/server/ingestion/ledger.d.ts +562 -0
  405. package/dist/server/server/ingestion/ledger.js +881 -0
  406. package/dist/server/server/ingestion/match.d.ts +57 -0
  407. package/dist/server/server/ingestion/match.js +102 -0
  408. package/dist/server/server/ingestion/pipedream/gateway.d.ts +8 -0
  409. package/dist/server/server/ingestion/pipedream/gateway.js +282 -0
  410. package/dist/server/server/ingestion/presets.d.ts +57 -0
  411. package/dist/server/server/ingestion/presets.js +57 -0
  412. package/dist/server/server/ingestion/reconcile/artifact-kind.d.ts +19 -0
  413. package/dist/server/server/ingestion/reconcile/artifact-kind.js +65 -0
  414. package/dist/server/server/ingestion/reconcile/calendar.d.ts +19 -0
  415. package/dist/server/server/ingestion/reconcile/calendar.js +110 -0
  416. package/dist/server/server/ingestion/reconcile/constants.d.ts +60 -0
  417. package/dist/server/server/ingestion/reconcile/constants.js +62 -0
  418. package/dist/server/server/ingestion/reconcile/github.d.ts +21 -0
  419. package/dist/server/server/ingestion/reconcile/github.js +83 -0
  420. package/dist/server/server/ingestion/reconcile/gitlab.d.ts +23 -0
  421. package/dist/server/server/ingestion/reconcile/gitlab.js +94 -0
  422. package/dist/server/server/ingestion/reconcile/gmail.d.ts +9 -0
  423. package/dist/server/server/ingestion/reconcile/gmail.js +141 -0
  424. package/dist/server/server/ingestion/reconcile/jira.d.ts +17 -0
  425. package/dist/server/server/ingestion/reconcile/jira.js +76 -0
  426. package/dist/server/server/ingestion/reconcile/kinds.d.ts +16 -0
  427. package/dist/server/server/ingestion/reconcile/kinds.js +59 -0
  428. package/dist/server/server/ingestion/reconcile/mcp-call.d.ts +18 -0
  429. package/dist/server/server/ingestion/reconcile/mcp-call.js +105 -0
  430. package/dist/server/server/ingestion/reconcile/payload.d.ts +38 -0
  431. package/dist/server/server/ingestion/reconcile/payload.js +82 -0
  432. package/dist/server/server/ingestion/reconcile/registry.d.ts +40 -0
  433. package/dist/server/server/ingestion/reconcile/registry.js +72 -0
  434. package/dist/server/server/ingestion/reconcile/runner.d.ts +43 -0
  435. package/dist/server/server/ingestion/reconcile/runner.js +91 -0
  436. package/dist/server/server/ingestion/reconcile/sentry.d.ts +20 -0
  437. package/dist/server/server/ingestion/reconcile/sentry.js +85 -0
  438. package/dist/server/server/ingestion/reconcile/service.d.ts +134 -0
  439. package/dist/server/server/ingestion/reconcile/service.js +409 -0
  440. package/dist/server/server/ingestion/reconcile/signature-guard.d.ts +30 -0
  441. package/dist/server/server/ingestion/reconcile/signature-guard.js +82 -0
  442. package/dist/server/server/ingestion/reconcile/testing/fake-mcp-server.d.ts +68 -0
  443. package/dist/server/server/ingestion/reconcile/testing/fake-mcp-server.js +158 -0
  444. package/dist/server/server/ingestion/reconcile/types.d.ts +65 -0
  445. package/dist/server/server/ingestion/reconcile/types.js +11 -0
  446. package/dist/server/server/ingestion/reconcile/verdict-mapping.d.ts +54 -0
  447. package/dist/server/server/ingestion/reconcile/verdict-mapping.js +82 -0
  448. package/dist/server/server/ingestion/resolve-items.d.ts +23 -0
  449. package/dist/server/server/ingestion/resolve-items.js +54 -0
  450. package/dist/server/server/ingestion/run-projection.d.ts +35 -0
  451. package/dist/server/server/ingestion/run-projection.js +76 -0
  452. package/dist/server/server/ingestion/service.d.ts +147 -0
  453. package/dist/server/server/ingestion/service.js +364 -0
  454. package/dist/server/server/ingestion/sources/store.d.ts +27 -0
  455. package/dist/server/server/ingestion/sources/store.js +71 -0
  456. package/dist/server/server/ingestion/testing/claim-and-hang.d.ts +2 -0
  457. package/dist/server/server/ingestion/testing/claim-and-hang.js +21 -0
  458. package/dist/server/server/ingestion/testing/cohort-crash.d.ts +2 -0
  459. package/dist/server/server/ingestion/testing/cohort-crash.js +89 -0
  460. package/dist/server/server/ingestion/types.d.ts +226 -0
  461. package/dist/server/server/ingestion/types.js +18 -0
  462. package/dist/server/server/ingestion/utc-day.d.ts +27 -0
  463. package/dist/server/server/ingestion/utc-day.js +44 -0
  464. package/dist/server/server/json-utils.d.ts +11 -0
  465. package/dist/server/server/json-utils.js +45 -0
  466. package/dist/server/server/lifecycle-reasons.d.ts +4 -0
  467. package/dist/server/server/lifecycle-reasons.js +6 -0
  468. package/dist/server/server/logger.d.ts +29 -0
  469. package/dist/server/server/logger.js +125 -0
  470. package/dist/server/server/loop-service.d.ts +234 -0
  471. package/dist/server/server/loop-service.js +769 -0
  472. package/dist/server/server/managed-processes/managed-processes.d.ts +76 -0
  473. package/dist/server/server/managed-processes/managed-processes.js +326 -0
  474. package/dist/server/server/meetings/capture-http.d.ts +3 -0
  475. package/dist/server/server/meetings/capture-http.js +71 -0
  476. package/dist/server/server/meetings/capture-orchestrator.d.ts +123 -0
  477. package/dist/server/server/meetings/capture-orchestrator.js +531 -0
  478. package/dist/server/server/meetings/capture-stream-ws.d.ts +42 -0
  479. package/dist/server/server/meetings/capture-stream-ws.js +68 -0
  480. package/dist/server/server/meetings/live-transcription.d.ts +57 -0
  481. package/dist/server/server/meetings/live-transcription.js +280 -0
  482. package/dist/server/server/meetings/meetings-http.d.ts +42 -0
  483. package/dist/server/server/meetings/meetings-http.js +266 -0
  484. package/dist/server/server/messages.d.ts +9 -0
  485. package/dist/server/server/messages.js +29 -0
  486. package/dist/server/server/migrations/backfill-workspace-id.migration.d.ts +9 -0
  487. package/dist/server/server/migrations/backfill-workspace-id.migration.js +64 -0
  488. package/dist/server/server/monitoring/telemetry.d.ts +13 -0
  489. package/dist/server/server/monitoring/telemetry.js +21 -0
  490. package/dist/server/server/package-version.d.ts +19 -0
  491. package/dist/server/server/package-version.js +60 -0
  492. package/dist/server/server/pagination/cursor.d.ts +16 -0
  493. package/dist/server/server/pagination/cursor.js +62 -0
  494. package/dist/server/server/pagination/sortable-pager.d.ts +24 -0
  495. package/dist/server/server/pagination/sortable-pager.js +68 -0
  496. package/dist/server/server/pairing-offer.d.ts +18 -0
  497. package/dist/server/server/pairing-offer.js +47 -0
  498. package/dist/server/server/pairing-qr.d.ts +7 -0
  499. package/dist/server/server/pairing-qr.js +45 -0
  500. package/dist/server/server/paseo-env.d.ts +13 -0
  501. package/dist/server/server/paseo-env.js +53 -0
  502. package/dist/server/server/paseo-home.d.ts +2 -0
  503. package/dist/server/server/paseo-home.js +19 -0
  504. package/dist/server/server/paseo-worktree-service.d.ts +52 -0
  505. package/dist/server/server/paseo-worktree-service.js +294 -0
  506. package/dist/server/server/path-utils.d.ts +5 -0
  507. package/dist/server/server/path-utils.js +34 -0
  508. package/dist/server/server/persisted-config.d.ts +390 -0
  509. package/dist/server/server/persisted-config.js +424 -0
  510. package/dist/server/server/persistence-hooks.d.ts +32 -0
  511. package/dist/server/server/persistence-hooks.js +99 -0
  512. package/dist/server/server/pid-lock.d.ts +32 -0
  513. package/dist/server/server/pid-lock.js +170 -0
  514. package/dist/server/server/private-files.d.ts +6 -0
  515. package/dist/server/server/private-files.js +37 -0
  516. package/dist/server/server/process-diagnostics.d.ts +17 -0
  517. package/dist/server/server/process-diagnostics.js +22 -0
  518. package/dist/server/server/push/categories.d.ts +35 -0
  519. package/dist/server/server/push/categories.js +40 -0
  520. package/dist/server/server/push/expo-worker.d.ts +51 -0
  521. package/dist/server/server/push/expo-worker.js +188 -0
  522. package/dist/server/server/push/index.d.ts +39 -0
  523. package/dist/server/server/push/index.js +45 -0
  524. package/dist/server/server/push/notifications.d.ts +9 -0
  525. package/dist/server/server/push/notifications.js +15 -0
  526. package/dist/server/server/push/push-service.d.ts +20 -0
  527. package/dist/server/server/push/push-service.js +66 -0
  528. package/dist/server/server/push/routes.d.ts +28 -0
  529. package/dist/server/server/push/routes.js +74 -0
  530. package/dist/server/server/push/subscriptions.d.ts +42 -0
  531. package/dist/server/server/push/subscriptions.js +112 -0
  532. package/dist/server/server/push/token-store.d.ts +29 -0
  533. package/dist/server/server/push/token-store.js +78 -0
  534. package/dist/server/server/push/triggers.d.ts +68 -0
  535. package/dist/server/server/push/triggers.js +103 -0
  536. package/dist/server/server/push/vapid-keys.d.ts +15 -0
  537. package/dist/server/server/push/vapid-keys.js +52 -0
  538. package/dist/server/server/push/web-worker.d.ts +44 -0
  539. package/dist/server/server/push/web-worker.js +99 -0
  540. package/dist/server/server/reference-enricher.d.ts +41 -0
  541. package/dist/server/server/reference-enricher.js +392 -0
  542. package/dist/server/server/relay-transport.d.ts +31 -0
  543. package/dist/server/server/relay-transport.js +545 -0
  544. package/dist/server/server/resolve-workspace-id-for-path.d.ts +4 -0
  545. package/dist/server/server/resolve-workspace-id-for-path.js +71 -0
  546. package/dist/server/server/resolve-worktree-creation-intent.d.ts +32 -0
  547. package/dist/server/server/resolve-worktree-creation-intent.js +121 -0
  548. package/dist/server/server/restart-manifest.d.ts +83 -0
  549. package/dist/server/server/restart-manifest.js +122 -0
  550. package/dist/server/server/resume-after-restart.d.ts +50 -0
  551. package/dist/server/server/resume-after-restart.js +108 -0
  552. package/dist/server/server/schedule/create-cadence.d.ts +22 -0
  553. package/dist/server/server/schedule/create-cadence.js +70 -0
  554. package/dist/server/server/schedule/cron.d.ts +8 -0
  555. package/dist/server/server/schedule/cron.js +114 -0
  556. package/dist/server/server/schedule/service.d.ts +207 -0
  557. package/dist/server/server/schedule/service.js +867 -0
  558. package/dist/server/server/schedule/source-prompt.d.ts +42 -0
  559. package/dist/server/server/schedule/source-prompt.js +87 -0
  560. package/dist/server/server/schedule/store.d.ts +13 -0
  561. package/dist/server/server/schedule/store.js +57 -0
  562. package/dist/server/server/script-health-monitor.d.ts +39 -0
  563. package/dist/server/server/script-health-monitor.js +159 -0
  564. package/dist/server/server/script-proxy.d.ts +3 -0
  565. package/dist/server/server/script-proxy.js +2 -0
  566. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  567. package/dist/server/server/script-route-branch-handler.js +11 -0
  568. package/dist/server/server/script-status-projection.d.ts +36 -0
  569. package/dist/server/server/script-status-projection.js +200 -0
  570. package/dist/server/server/search/extract.d.ts +53 -0
  571. package/dist/server/server/search/extract.js +222 -0
  572. package/dist/server/server/search/index-store.d.ts +83 -0
  573. package/dist/server/server/search/index-store.js +241 -0
  574. package/dist/server/server/search/indexer.d.ts +69 -0
  575. package/dist/server/server/search/indexer.js +362 -0
  576. package/dist/server/server/search/resolve-cwd.d.ts +40 -0
  577. package/dist/server/server/search/resolve-cwd.js +109 -0
  578. package/dist/server/server/search/session-search-service.d.ts +59 -0
  579. package/dist/server/server/search/session-search-service.js +171 -0
  580. package/dist/server/server/server-id.d.ts +17 -0
  581. package/dist/server/server/server-id.js +68 -0
  582. package/dist/server/server/service-proxy.d.ts +237 -0
  583. package/dist/server/server/service-proxy.js +714 -0
  584. package/dist/server/server/session/agent-config/agent-config-session.d.ts +50 -0
  585. package/dist/server/server/session/agent-config/agent-config-session.js +98 -0
  586. package/dist/server/server/session/agent-updates/agent-updates-service.d.ts +59 -0
  587. package/dist/server/server/session/agent-updates/agent-updates-service.js +220 -0
  588. package/dist/server/server/session/chat/chat-ingestion-session.d.ts +285 -0
  589. package/dist/server/server/session/chat/chat-ingestion-session.js +504 -0
  590. package/dist/server/server/session/chat/chat-schedule-loop-session.d.ts +175 -0
  591. package/dist/server/server/session/chat/chat-schedule-loop-session.js +720 -0
  592. package/dist/server/server/session/checkout/checkout-session.d.ts +140 -0
  593. package/dist/server/server/session/checkout/checkout-session.js +927 -0
  594. package/dist/server/server/session/checkout/git-metadata-generator.d.ts +53 -0
  595. package/dist/server/server/session/checkout/git-metadata-generator.js +159 -0
  596. package/dist/server/server/session/daemon/daemon-self-update-session-controller.d.ts +32 -0
  597. package/dist/server/server/session/daemon/daemon-self-update-session-controller.js +88 -0
  598. package/dist/server/server/session/daemon/daemon-self-updater.d.ts +32 -0
  599. package/dist/server/server/session/daemon/daemon-self-updater.js +56 -0
  600. package/dist/server/server/session/daemon/daemon-session.d.ts +89 -0
  601. package/dist/server/server/session/daemon/daemon-session.js +179 -0
  602. package/dist/server/server/session/daemon/diagnostics.d.ts +41 -0
  603. package/dist/server/server/session/daemon/diagnostics.js +431 -0
  604. package/dist/server/server/session/daemon/install-origin.d.ts +7 -0
  605. package/dist/server/server/session/daemon/install-origin.js +64 -0
  606. package/dist/server/server/session/daemon/npm-global-cli.d.ts +29 -0
  607. package/dist/server/server/session/daemon/npm-global-cli.js +98 -0
  608. package/dist/server/server/session/files/workspace-files-session.d.ts +53 -0
  609. package/dist/server/server/session/files/workspace-files-session.js +245 -0
  610. package/dist/server/server/session/git-mutation/git-mutation-service.d.ts +34 -0
  611. package/dist/server/server/session/git-mutation/git-mutation-service.js +71 -0
  612. package/dist/server/server/session/ingestion/source-session.d.ts +78 -0
  613. package/dist/server/server/session/ingestion/source-session.js +191 -0
  614. package/dist/server/server/session/project-config/project-config-session.d.ts +34 -0
  615. package/dist/server/server/session/project-config/project-config-session.js +125 -0
  616. package/dist/server/server/session/provider/provider-catalog-session.d.ts +105 -0
  617. package/dist/server/server/session/provider/provider-catalog-session.js +364 -0
  618. package/dist/server/server/session/session-rename-route.d.ts +4 -0
  619. package/dist/server/server/session/session-rename-route.js +71 -0
  620. package/dist/server/server/session/session-rename-service.d.ts +25 -0
  621. package/dist/server/server/session/session-rename-service.js +76 -0
  622. package/dist/server/server/session/voice/voice-session.d.ts +166 -0
  623. package/dist/server/server/session/voice/voice-session.js +899 -0
  624. package/dist/server/server/session/voice/voice-turn-controller.d.ts +38 -0
  625. package/dist/server/server/session/voice/voice-turn-controller.js +393 -0
  626. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.d.ts +36 -0
  627. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.js +134 -0
  628. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.d.ts +46 -0
  629. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.js +214 -0
  630. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.d.ts +41 -0
  631. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.js +100 -0
  632. package/dist/server/server/session.d.ts +677 -0
  633. package/dist/server/server/session.js +6531 -0
  634. package/dist/server/server/speech/audio.d.ts +10 -0
  635. package/dist/server/server/speech/audio.js +101 -0
  636. package/dist/server/server/speech/provider-resolver.d.ts +3 -0
  637. package/dist/server/server/speech/provider-resolver.js +7 -0
  638. package/dist/server/server/speech/providers/local/config.d.ts +30 -0
  639. package/dist/server/server/speech/providers/local/config.js +134 -0
  640. package/dist/server/server/speech/providers/local/models.d.ts +11 -0
  641. package/dist/server/server/speech/providers/local/models.js +17 -0
  642. package/dist/server/server/speech/providers/local/runtime.d.ts +31 -0
  643. package/dist/server/server/speech/providers/local/runtime.js +135 -0
  644. package/dist/server/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
  645. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +56 -0
  646. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +74 -0
  647. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +15 -0
  648. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +142 -0
  649. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +49 -0
  650. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +73 -0
  651. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +9 -0
  652. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +107 -0
  653. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
  654. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +137 -0
  655. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
  656. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +133 -0
  657. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts +18 -0
  658. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  659. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
  660. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +101 -0
  661. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts +19 -0
  662. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js +49 -0
  663. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts +38 -0
  664. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js +176 -0
  665. package/dist/server/server/speech/providers/local/worker-bytes.d.ts +4 -0
  666. package/dist/server/server/speech/providers/local/worker-bytes.js +9 -0
  667. package/dist/server/server/speech/providers/local/worker-client.d.ts +93 -0
  668. package/dist/server/server/speech/providers/local/worker-client.js +611 -0
  669. package/dist/server/server/speech/providers/local/worker-process.d.ts +2 -0
  670. package/dist/server/server/speech/providers/local/worker-process.js +270 -0
  671. package/dist/server/server/speech/providers/local/worker-protocol.d.ts +95 -0
  672. package/dist/server/server/speech/providers/local/worker-protocol.js +2 -0
  673. package/dist/server/server/speech/providers/openai/config.d.ts +19 -0
  674. package/dist/server/server/speech/providers/openai/config.js +148 -0
  675. package/dist/server/server/speech/providers/openai/runtime.d.ts +29 -0
  676. package/dist/server/server/speech/providers/openai/runtime.js +102 -0
  677. package/dist/server/server/speech/providers/openai/stt.d.ts +23 -0
  678. package/dist/server/server/speech/providers/openai/stt.js +209 -0
  679. package/dist/server/server/speech/providers/openai/tts.d.ts +19 -0
  680. package/dist/server/server/speech/providers/openai/tts.js +48 -0
  681. package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
  682. package/dist/server/server/speech/speech-config-resolver.js +132 -0
  683. package/dist/server/server/speech/speech-provider.d.ts +59 -0
  684. package/dist/server/server/speech/speech-provider.js +2 -0
  685. package/dist/server/server/speech/speech-runtime.d.ts +45 -0
  686. package/dist/server/server/speech/speech-runtime.js +562 -0
  687. package/dist/server/server/speech/speech-types.d.ts +22 -0
  688. package/dist/server/server/speech/speech-types.js +8 -0
  689. package/dist/server/server/speech/turn-detection-provider.d.ts +23 -0
  690. package/dist/server/server/speech/turn-detection-provider.js +2 -0
  691. package/dist/server/server/tenant-token-verifier.d.ts +43 -0
  692. package/dist/server/server/tenant-token-verifier.js +79 -0
  693. package/dist/server/server/update/installer.d.ts +70 -0
  694. package/dist/server/server/update/installer.js +181 -0
  695. package/dist/server/server/update/registry.d.ts +47 -0
  696. package/dist/server/server/update/registry.js +95 -0
  697. package/dist/server/server/update/slots.d.ts +45 -0
  698. package/dist/server/server/update/slots.js +97 -0
  699. package/dist/server/server/update/state.d.ts +41 -0
  700. package/dist/server/server/update/state.js +65 -0
  701. package/dist/server/server/uploads/file-attachment-validation.d.ts +61 -0
  702. package/dist/server/server/uploads/file-attachment-validation.js +56 -0
  703. package/dist/server/server/uploads/staging-service.d.ts +91 -0
  704. package/dist/server/server/uploads/staging-service.js +144 -0
  705. package/dist/server/server/utils/diff-highlighter.d.ts +57 -0
  706. package/dist/server/server/utils/diff-highlighter.js +279 -0
  707. package/dist/server/server/voice/voice-turn-controller.d.ts +38 -0
  708. package/dist/server/server/voice/voice-turn-controller.js +393 -0
  709. package/dist/server/server/voice-config.d.ts +15 -0
  710. package/dist/server/server/voice-config.js +54 -0
  711. package/dist/server/server/voice-permission-policy.d.ts +4 -0
  712. package/dist/server/server/voice-permission-policy.js +13 -0
  713. package/dist/server/server/voice-types.d.ts +12 -0
  714. package/dist/server/server/voice-types.js +2 -0
  715. package/dist/server/server/watch/composer-dictate.d.ts +42 -0
  716. package/dist/server/server/watch/composer-dictate.js +37 -0
  717. package/dist/server/server/watch/notification-action.d.ts +38 -0
  718. package/dist/server/server/watch/notification-action.js +54 -0
  719. package/dist/server/server/watch/notification-registry.d.ts +16 -0
  720. package/dist/server/server/watch/notification-registry.js +2 -0
  721. package/dist/server/server/web-ui.d.ts +10 -0
  722. package/dist/server/server/web-ui.js +247 -0
  723. package/dist/server/server/websocket/runtime-metrics.d.ts +94 -0
  724. package/dist/server/server/websocket/runtime-metrics.js +148 -0
  725. package/dist/server/server/websocket-server.d.ts +231 -0
  726. package/dist/server/server/websocket-server.js +1853 -0
  727. package/dist/server/server/whatsapp-bridge.d.ts +74 -0
  728. package/dist/server/server/whatsapp-bridge.js +142 -0
  729. package/dist/server/server/workflow/workflow-agent-resolution.d.ts +82 -0
  730. package/dist/server/server/workflow/workflow-agent-resolution.js +105 -0
  731. package/dist/server/server/workflow/workflow-feature.d.ts +2 -0
  732. package/dist/server/server/workflow/workflow-feature.js +8 -0
  733. package/dist/server/server/workflow/workflow-http-routes.d.ts +27 -0
  734. package/dist/server/server/workflow/workflow-http-routes.js +97 -0
  735. package/dist/server/server/workflow/workflow-manager.d.ts +363 -0
  736. package/dist/server/server/workflow/workflow-manager.js +852 -0
  737. package/dist/server/server/workflow/workflow-progress.d.ts +148 -0
  738. package/dist/server/server/workflow/workflow-progress.js +274 -0
  739. package/dist/server/server/workflow/workflow-storage.d.ts +36 -0
  740. package/dist/server/server/workflow/workflow-storage.js +143 -0
  741. package/dist/server/server/workspace/all-sessions-route.d.ts +32 -0
  742. package/dist/server/server/workspace/all-sessions-route.js +218 -0
  743. package/dist/server/server/workspace/recall-search-feature.d.ts +2 -0
  744. package/dist/server/server/workspace/recall-search-feature.js +31 -0
  745. package/dist/server/server/workspace/session-openable.d.ts +16 -0
  746. package/dist/server/server/workspace/session-openable.js +48 -0
  747. package/dist/server/server/workspace/sessions-route.d.ts +15 -0
  748. package/dist/server/server/workspace/sessions-route.js +108 -0
  749. package/dist/server/server/workspace/sessions-search-route.d.ts +40 -0
  750. package/dist/server/server/workspace/sessions-search-route.js +74 -0
  751. package/dist/server/server/workspace-archive-service.d.ts +65 -0
  752. package/dist/server/server/workspace-archive-service.js +229 -0
  753. package/dist/server/server/workspace-auto-name.d.ts +55 -0
  754. package/dist/server/server/workspace-auto-name.js +128 -0
  755. package/dist/server/server/workspace-bootstrap-dedupe.d.ts +34 -0
  756. package/dist/server/server/workspace-bootstrap-dedupe.js +23 -0
  757. package/dist/server/server/workspace-directory.d.ts +93 -0
  758. package/dist/server/server/workspace-directory.js +440 -0
  759. package/dist/server/server/workspace-git-metadata.d.ts +24 -0
  760. package/dist/server/server/workspace-git-metadata.js +55 -0
  761. package/dist/server/server/workspace-git-service.d.ts +257 -0
  762. package/dist/server/server/workspace-git-service.js +1386 -0
  763. package/dist/server/server/workspace-reconciliation-service.d.ts +57 -0
  764. package/dist/server/server/workspace-reconciliation-service.js +278 -0
  765. package/dist/server/server/workspace-registry-bootstrap.d.ts +13 -0
  766. package/dist/server/server/workspace-registry-bootstrap.js +121 -0
  767. package/dist/server/server/workspace-registry-model.d.ts +55 -0
  768. package/dist/server/server/workspace-registry-model.js +190 -0
  769. package/dist/server/server/workspace-registry.d.ts +117 -0
  770. package/dist/server/server/workspace-registry.js +194 -0
  771. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  772. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  773. package/dist/server/server/workspace-service-env.d.ts +18 -0
  774. package/dist/server/server/workspace-service-env.js +85 -0
  775. package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
  776. package/dist/server/server/workspace-service-port-registry.js +59 -0
  777. package/dist/server/server/worktree/commands.d.ts +55 -0
  778. package/dist/server/server/worktree/commands.js +107 -0
  779. package/dist/server/server/worktree-bootstrap.d.ts +76 -0
  780. package/dist/server/server/worktree-bootstrap.js +720 -0
  781. package/dist/server/server/worktree-branch-name-generator.d.ts +35 -0
  782. package/dist/server/server/worktree-branch-name-generator.js +91 -0
  783. package/dist/server/server/worktree-core.d.ts +31 -0
  784. package/dist/server/server/worktree-core.js +105 -0
  785. package/dist/server/server/worktree-errors.d.ts +12 -0
  786. package/dist/server/server/worktree-errors.js +28 -0
  787. package/dist/server/server/worktree-session.d.ts +152 -0
  788. package/dist/server/server/worktree-session.js +466 -0
  789. package/dist/server/services/github-service.d.ts +337 -0
  790. package/dist/server/services/github-service.js +2101 -0
  791. package/dist/server/services/quota-fetcher/manifest.d.ts +4 -0
  792. package/dist/server/services/quota-fetcher/manifest.js +52 -0
  793. package/dist/server/services/quota-fetcher/provider.d.ts +17 -0
  794. package/dist/server/services/quota-fetcher/provider.js +2 -0
  795. package/dist/server/services/quota-fetcher/providers/claude.d.ts +26 -0
  796. package/dist/server/services/quota-fetcher/providers/claude.js +217 -0
  797. package/dist/server/services/quota-fetcher/providers/codex.d.ts +23 -0
  798. package/dist/server/services/quota-fetcher/providers/codex.js +211 -0
  799. package/dist/server/services/quota-fetcher/providers/copilot.d.ts +17 -0
  800. package/dist/server/services/quota-fetcher/providers/copilot.js +75 -0
  801. package/dist/server/services/quota-fetcher/providers/cursor.d.ts +17 -0
  802. package/dist/server/services/quota-fetcher/providers/cursor.js +123 -0
  803. package/dist/server/services/quota-fetcher/providers/grok.d.ts +18 -0
  804. package/dist/server/services/quota-fetcher/providers/grok.js +89 -0
  805. package/dist/server/services/quota-fetcher/providers/kimi.d.ts +20 -0
  806. package/dist/server/services/quota-fetcher/providers/kimi.js +89 -0
  807. package/dist/server/services/quota-fetcher/providers/minimax.d.ts +29 -0
  808. package/dist/server/services/quota-fetcher/providers/minimax.js +227 -0
  809. package/dist/server/services/quota-fetcher/providers/zai.d.ts +17 -0
  810. package/dist/server/services/quota-fetcher/providers/zai.js +58 -0
  811. package/dist/server/services/quota-fetcher/service.d.ts +28 -0
  812. package/dist/server/services/quota-fetcher/service.js +58 -0
  813. package/dist/server/services/quota-fetcher/usage.d.ts +22 -0
  814. package/dist/server/services/quota-fetcher/usage.js +49 -0
  815. package/dist/server/terminal/activity/terminal-activity-tracker.d.ts +20 -0
  816. package/dist/server/terminal/activity/terminal-activity-tracker.js +59 -0
  817. package/dist/server/terminal/agent-hooks/agent-hook-installer.d.ts +62 -0
  818. package/dist/server/terminal/agent-hooks/agent-hook-installer.js +117 -0
  819. package/dist/server/terminal/agent-hooks/claude/claude-settings.d.ts +7 -0
  820. package/dist/server/terminal/agent-hooks/claude/claude-settings.js +88 -0
  821. package/dist/server/terminal/agent-hooks/claude/claude.d.ts +4 -0
  822. package/dist/server/terminal/agent-hooks/claude/claude.js +47 -0
  823. package/dist/server/terminal/agent-hooks/codex/codex-settings.d.ts +7 -0
  824. package/dist/server/terminal/agent-hooks/codex/codex-settings.js +99 -0
  825. package/dist/server/terminal/agent-hooks/codex/codex.d.ts +4 -0
  826. package/dist/server/terminal/agent-hooks/codex/codex.js +30 -0
  827. package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.d.ts +4 -0
  828. package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.js +46 -0
  829. package/dist/server/terminal/agent-hooks/opencode/opencode.d.ts +3 -0
  830. package/dist/server/terminal/agent-hooks/opencode/opencode.js +23 -0
  831. package/dist/server/terminal/agent-hooks/provider-registry.d.ts +24 -0
  832. package/dist/server/terminal/agent-hooks/provider-registry.js +36 -0
  833. package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.d.ts +10 -0
  834. package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.js +26 -0
  835. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  836. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  837. package/dist/server/terminal/terminal-capture.d.ts +12 -0
  838. package/dist/server/terminal/terminal-capture.js +43 -0
  839. package/dist/server/terminal/terminal-manager-factory.d.ts +6 -0
  840. package/dist/server/terminal/terminal-manager-factory.js +5 -0
  841. package/dist/server/terminal/terminal-manager.d.ts +78 -0
  842. package/dist/server/terminal/terminal-manager.js +319 -0
  843. package/dist/server/terminal/terminal-output-coalescer.d.ts +34 -0
  844. package/dist/server/terminal/terminal-output-coalescer.js +73 -0
  845. package/dist/server/terminal/terminal-restore.d.ts +18 -0
  846. package/dist/server/terminal/terminal-restore.js +52 -0
  847. package/dist/server/terminal/terminal-session-controller.d.ts +85 -0
  848. package/dist/server/terminal/terminal-session-controller.js +819 -0
  849. package/dist/server/terminal/terminal-ts-loader.mjs +20 -0
  850. package/dist/server/terminal/terminal-worker-process.d.ts +2 -0
  851. package/dist/server/terminal/terminal-worker-process.js +304 -0
  852. package/dist/server/terminal/terminal-worker-protocol.d.ts +119 -0
  853. package/dist/server/terminal/terminal-worker-protocol.js +2 -0
  854. package/dist/server/terminal/terminal.d.ts +151 -0
  855. package/dist/server/terminal/terminal.js +1161 -0
  856. package/dist/server/terminal/worker-terminal-manager.d.ts +20 -0
  857. package/dist/server/terminal/worker-terminal-manager.js +688 -0
  858. package/dist/server/utils/build-metadata-prompt.d.ts +19 -0
  859. package/dist/server/utils/build-metadata-prompt.js +29 -0
  860. package/dist/server/utils/checkout-git.d.ts +253 -0
  861. package/dist/server/utils/checkout-git.js +2238 -0
  862. package/dist/server/utils/directory-suggestions.d.ts +26 -0
  863. package/dist/server/utils/directory-suggestions.js +860 -0
  864. package/dist/server/utils/git-rev-parse-path.d.ts +3 -0
  865. package/dist/server/utils/git-rev-parse-path.js +21 -0
  866. package/dist/server/utils/github-remote.d.ts +9 -0
  867. package/dist/server/utils/github-remote.js +62 -0
  868. package/dist/server/utils/paseo-config-file.d.ts +30 -0
  869. package/dist/server/utils/paseo-config-file.js +90 -0
  870. package/dist/server/utils/path.d.ts +18 -0
  871. package/dist/server/utils/path.js +123 -0
  872. package/dist/server/utils/project-icon.d.ts +39 -0
  873. package/dist/server/utils/project-icon.js +364 -0
  874. package/dist/server/utils/promise-timeout.d.ts +9 -0
  875. package/dist/server/utils/promise-timeout.js +25 -0
  876. package/dist/server/utils/run-git-command.d.ts +37 -0
  877. package/dist/server/utils/run-git-command.js +232 -0
  878. package/dist/server/utils/spawn.d.ts +33 -0
  879. package/dist/server/utils/spawn.js +71 -0
  880. package/dist/server/utils/string-command-shell.d.ts +10 -0
  881. package/dist/server/utils/string-command-shell.js +21 -0
  882. package/dist/server/utils/tree-kill.d.ts +18 -0
  883. package/dist/server/utils/tree-kill.js +77 -0
  884. package/dist/server/utils/windows-command.d.ts +15 -0
  885. package/dist/server/utils/windows-command.js +41 -0
  886. package/dist/server/utils/worktree-metadata.d.ts +39 -0
  887. package/dist/server/utils/worktree-metadata.js +174 -0
  888. package/dist/server/utils/worktree.d.ts +205 -0
  889. package/dist/server/utils/worktree.js +1119 -0
  890. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css +1 -0
  891. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.br +0 -0
  892. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.gz +0 -0
  893. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-67f19cbfce758da6aa23c38c2dbd6a33.js +5 -0
  894. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-67f19cbfce758da6aa23c38c2dbd6a33.js.br +0 -0
  895. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-67f19cbfce758da6aa23c38c2dbd6a33.js.gz +0 -0
  896. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-67f19cbfce758da6aa23c38c2dbd6a33.js.map.br +0 -0
  897. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-67f19cbfce758da6aa23c38c2dbd6a33.js.map.gz +0 -0
  898. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-6888615a6b700f975c1f78501ad8577c.js +3 -0
  899. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-6888615a6b700f975c1f78501ad8577c.js.br +0 -0
  900. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-6888615a6b700f975c1f78501ad8577c.js.gz +0 -0
  901. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-6888615a6b700f975c1f78501ad8577c.js.map.br +0 -0
  902. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-6888615a6b700f975c1f78501ad8577c.js.map.gz +0 -0
  903. package/dist/server/web-ui/_expo/static/js/web/index-dc1e81e7cbad84d30a01c48dcc9a5a3e.js +16683 -0
  904. package/dist/server/web-ui/_expo/static/js/web/index-dc1e81e7cbad84d30a01c48dcc9a5a3e.js.br +0 -0
  905. package/dist/server/web-ui/_expo/static/js/web/index-dc1e81e7cbad84d30a01c48dcc9a5a3e.js.gz +0 -0
  906. package/dist/server/web-ui/_expo/static/js/web/index-dc1e81e7cbad84d30a01c48dcc9a5a3e.js.map.br +0 -0
  907. package/dist/server/web-ui/_expo/static/js/web/index-dc1e81e7cbad84d30a01c48dcc9a5a3e.js.map.gz +0 -0
  908. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-991ae7fd00f9fed45084fbb39160e8b8.js +3 -0
  909. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-991ae7fd00f9fed45084fbb39160e8b8.js.br +0 -0
  910. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-991ae7fd00f9fed45084fbb39160e8b8.js.gz +0 -0
  911. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-991ae7fd00f9fed45084fbb39160e8b8.js.map.br +0 -0
  912. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-991ae7fd00f9fed45084fbb39160e8b8.js.map.gz +0 -0
  913. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-fdb4d787a259ce350f76280ca0e2bfa2.js +5 -0
  914. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-fdb4d787a259ce350f76280ca0e2bfa2.js.br +0 -0
  915. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-fdb4d787a259ce350f76280ca0e2bfa2.js.gz +0 -0
  916. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-fdb4d787a259ce350f76280ca0e2bfa2.js.map.br +0 -0
  917. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-fdb4d787a259ce350f76280ca0e2bfa2.js.map.gz +0 -0
  918. package/dist/server/web-ui/_expo/static/js/web/profiler-9502a8e721925a6353ec45f7613f537e.js +11 -0
  919. package/dist/server/web-ui/_expo/static/js/web/profiler-9502a8e721925a6353ec45f7613f537e.js.br +0 -0
  920. package/dist/server/web-ui/_expo/static/js/web/profiler-9502a8e721925a6353ec45f7613f537e.js.gz +0 -0
  921. package/dist/server/web-ui/_expo/static/js/web/profiler-9502a8e721925a6353ec45f7613f537e.js.map.br +0 -0
  922. package/dist/server/web-ui/_expo/static/js/web/profiler-9502a8e721925a6353ec45f7613f537e.js.map.gz +0 -0
  923. package/dist/server/web-ui/_expo/static/js/web/startRecording-4ed5094aa059a0fc724f5ae70dd2f693.js +60 -0
  924. package/dist/server/web-ui/_expo/static/js/web/startRecording-4ed5094aa059a0fc724f5ae70dd2f693.js.br +0 -0
  925. package/dist/server/web-ui/_expo/static/js/web/startRecording-4ed5094aa059a0fc724f5ae70dd2f693.js.gz +0 -0
  926. package/dist/server/web-ui/_expo/static/js/web/startRecording-4ed5094aa059a0fc724f5ae70dd2f693.js.map.br +0 -0
  927. package/dist/server/web-ui/_expo/static/js/web/startRecording-4ed5094aa059a0fc724f5ae70dd2f693.js.map.gz +0 -0
  928. package/dist/server/web-ui/apple-touch-icon.png +0 -0
  929. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon-mask.0a328cd9c1afd0afe8e3b1ec5165b1b4.png +0 -0
  930. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon.35ba0eaec5a4f5ed12ca16fabeae451d.png +0 -0
  931. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55.png +0 -0
  932. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@2x.png +0 -0
  933. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@3x.png +0 -0
  934. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@4x.png +0 -0
  935. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7.png +0 -0
  936. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@2x.png +0 -0
  937. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@3x.png +0 -0
  938. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@4x.png +0 -0
  939. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/search-icon.286d67d3f74808a60a78d3ebf1a5fb57.png +0 -0
  940. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/arrow_down.017bc6ba3fc25503e5eb5e53826d48a8.png +0 -0
  941. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/error.d1ea1496f9057eb392d5bbf3732a61b7.png +0 -0
  942. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/file.19eeb73b9593a38f8e9f418337fc7d10.png +0 -0
  943. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/forward.d8b800c443b8972542883e0b9de2bdc6.png +0 -0
  944. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/pkg.ab19f4cbc543357183a20571f68380a3.png +0 -0
  945. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/sitemap.412dd9275b6b48ad28f5e3d81bb1f626.png +0 -0
  946. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/unmatched.20e71bdf79e3a97bf55fd9e164041578.png +0 -0
  947. package/dist/server/web-ui/assets/assets/images/editor-apps/antigravity.6e91a685c33435e0b466a56db86cf141.png +0 -0
  948. package/dist/server/web-ui/assets/assets/images/editor-apps/cursor.c31d6bce4fe9aadc3fe59962f4c4fcf3.png +0 -0
  949. package/dist/server/web-ui/assets/assets/images/editor-apps/file-explorer.3e15e8f72c825c85ce336bcb0cdef776.png +0 -0
  950. package/dist/server/web-ui/assets/assets/images/editor-apps/finder.7f68fc2c475621a672e1be09309d5567.png +0 -0
  951. package/dist/server/web-ui/assets/assets/images/editor-apps/vscode.832bdb4c685d930f1c864c793703600b.png +0 -0
  952. package/dist/server/web-ui/assets/assets/images/editor-apps/webstorm.aa5dc2cd8c20cc0a155c4c5c5ab3c5f5.png +0 -0
  953. package/dist/server/web-ui/assets/assets/images/editor-apps/zed.f3a670b7f9aa226da4fe53fb86f1abbd.png +0 -0
  954. package/dist/server/web-ui/assets/assets/images/favicon-dark-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
  955. package/dist/server/web-ui/assets/assets/images/favicon-dark-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
  956. package/dist/server/web-ui/assets/assets/images/favicon-dark.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
  957. package/dist/server/web-ui/assets/assets/images/favicon-light-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
  958. package/dist/server/web-ui/assets/assets/images/favicon-light-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
  959. package/dist/server/web-ui/assets/assets/images/favicon-light.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
  960. package/dist/server/web-ui/assets/assets/images/notification-icon.3bf81d33ddbf380606bdd248ba83e158.png +0 -0
  961. package/dist/server/web-ui/favicon.ico +0 -0
  962. package/dist/server/web-ui/index.html +196 -0
  963. package/dist/server/web-ui/index.html.br +0 -0
  964. package/dist/server/web-ui/index.html.gz +0 -0
  965. package/dist/server/web-ui/manifest.json +27 -0
  966. package/dist/server/web-ui/manifest.json.br +0 -0
  967. package/dist/server/web-ui/manifest.json.gz +0 -0
  968. package/dist/server/web-ui/metadata.json +1 -0
  969. package/dist/server/web-ui/metadata.json.br +1 -0
  970. package/dist/server/web-ui/metadata.json.gz +0 -0
  971. package/dist/server/web-ui/pwa-icon-192.png +0 -0
  972. package/dist/server/web-ui/pwa-icon-512.png +0 -0
  973. package/dist/server/web-ui/robots.txt +2 -0
  974. package/dist/server/web-ui/service-worker.js +87 -0
  975. package/dist/server/web-ui/service-worker.js.br +0 -0
  976. package/dist/server/web-ui/service-worker.js.gz +0 -0
  977. package/dist/src/executable-resolution/executable-resolution.js +118 -0
  978. package/dist/src/executable-resolution/windows.js +65 -0
  979. package/dist/src/server/agent/provider-launch-config.js +183 -0
  980. package/dist/src/server/paseo-env.js +53 -0
  981. package/dist/src/server/paseo-home.js +19 -0
  982. package/dist/src/server/persisted-config.js +424 -0
  983. package/dist/src/server/pid-lock.js +170 -0
  984. package/dist/src/server/private-files.js +37 -0
  985. package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  986. package/dist/src/server/update/slots.js +97 -0
  987. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  988. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  989. package/dist/src/utils/spawn.js +71 -0
  990. package/dist/src/utils/windows-command.js +41 -0
  991. package/package.json +146 -0
@@ -0,0 +1,852 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { PARENT_AGENT_ID_LABEL, WORKFLOW_ID_LABEL, WORKFLOW_TASK_ID_LABEL, } from "@hyperdrive.bot/fleet-protocol/agent-labels";
3
+ import { startCreatedAgentInitialPrompt } from "../agent/agent-prompt.js";
4
+ import { assertSchedulableGraph, projectWorkflowPhases, projectWorkflowProgress, resolveExecutionLayers, } from "./workflow-progress.js";
5
+ import { assertKnownAgents, resolveTaskConfig } from "./workflow-agent-resolution.js";
6
+ // Re-exported for back-compat: this error used to be declared here before the
7
+ // execution-layer logic moved to `workflow-progress.ts` (Epic 3, Story 3.1).
8
+ export { WorkflowCycleError } from "./workflow-progress.js";
9
+ // Re-exported alongside WorkflowCycleError so every create-time graph rejection is
10
+ // importable from ONE module. Callers of `createWorkflow` catch against the manager's
11
+ // surface; making them reach into `workflow-progress.js` for half the errors would leak
12
+ // the internal split.
13
+ export { WorkflowInvalidGraphError } from "./workflow-progress.js";
14
+ // Re-exported for the same reason as WorkflowCycleError above: the class is declared in
15
+ // the leaf module `workflow-agent-resolution.ts` (which this file imports as a value) so
16
+ // there is no runtime import cycle, but callers import it from the manager.
17
+ export { WorkflowUnknownAgentError } from "./workflow-agent-resolution.js";
18
+ // Default settle window (ms) for coalescing a burst of child `agent_state` events
19
+ // into ONE projection emit. Mirrors AGENT_STREAM_COALESCE_DEFAULT_WINDOW_MS.
20
+ export const WORKFLOW_PROJECTION_COALESCE_WINDOW_MS = 60;
21
+ /** Thrown when a workflow id resolves to nothing in memory or storage. */
22
+ export class WorkflowNotFoundError extends Error {
23
+ constructor(workflowId) {
24
+ super(`Workflow ${workflowId} not found`);
25
+ this.workflowId = workflowId;
26
+ this.name = "WorkflowNotFoundError";
27
+ }
28
+ }
29
+ /** Thrown when cancel targets a workflow that has already reached a terminal state. */
30
+ export class WorkflowAlreadyTerminalError extends Error {
31
+ constructor(workflowId, status) {
32
+ super(`Workflow ${workflowId} is already ${status} and cannot be cancelled`);
33
+ this.workflowId = workflowId;
34
+ this.status = status;
35
+ this.name = "WorkflowAlreadyTerminalError";
36
+ }
37
+ }
38
+ export class WorkflowManager {
39
+ constructor(options) {
40
+ this.workflows = new Map();
41
+ this.subscribers = new Set();
42
+ this.projectionTimers = new Map();
43
+ this.agentManager = options.agentManager;
44
+ this.storage = options.storage;
45
+ this.coalesceWindowMs = options.coalesceWindowMs ?? WORKFLOW_PROJECTION_COALESCE_WINDOW_MS;
46
+ this.timers = options.timers ?? { setTimeout, clearTimeout };
47
+ this.logger = options.logger;
48
+ // Subscribe to child lifecycle changes so progress is projected live. We only
49
+ // care about FUTURE state - `replayState: false` skips the synchronous replay of
50
+ // every existing agent at construction time.
51
+ this.unsubscribeAgents = this.agentManager.subscribe((event) => this.onAgentEvent(event), {
52
+ replayState: false,
53
+ });
54
+ }
55
+ /**
56
+ * Detach the AgentManager subscription and cancel any pending projection timers.
57
+ * Idempotent; safe to call on daemon shutdown.
58
+ */
59
+ dispose() {
60
+ this.unsubscribeAgents();
61
+ for (const timer of this.projectionTimers.values()) {
62
+ this.timers.clearTimeout(timer);
63
+ }
64
+ this.projectionTimers.clear();
65
+ }
66
+ /**
67
+ * Build a workflow snapshot from a task graph, persist it (Story 1.1 storage),
68
+ * register it in memory, emit to subscribers, and return the snapshot. No process
69
+ * is spawned here - that happens in {@link startWorkflow}/{@link spawnPhaseAgent}.
70
+ */
71
+ async createWorkflow(input) {
72
+ // FIRST statement: an unschedulable graph must be rejected before an id is minted,
73
+ // before layers are resolved, and above all before anything is written to disk or
74
+ // registered in `this.workflows`. Throws WorkflowInvalidGraphError (no tasks at all,
75
+ // or the same task id twice) or WorkflowCycleError (dangling dependency, cycle);
76
+ // both callers (session.ts RPC, mcp-server.ts workflow_start) already surface
77
+ // `error.message` verbatim to the operator, which is why those messages name ids.
78
+ assertSchedulableGraph(input.graph);
79
+ // SECOND guard in the same validation region, above the id mint and above every
80
+ // write: a task naming an agent nobody defined is a create-time error, never a
81
+ // silent downgrade to `baseConfig`. Kept separate from `assertSchedulableGraph`,
82
+ // whose contract is pinned to `(graph) => void` derived from dependencies alone.
83
+ assertKnownAgents({
84
+ graph: input.graph,
85
+ agentPresets: input.agentPresets ?? {},
86
+ workflowId: input.id,
87
+ });
88
+ const id = input.id ?? randomUUID();
89
+ const now = new Date().toISOString();
90
+ const layers = resolveExecutionLayers(input.graph);
91
+ const phases = layers.map((layer, index) => ({
92
+ id: `layer-${index + 1}`,
93
+ title: `Layer ${index + 1}`,
94
+ status: "pending",
95
+ storyCount: layer.length,
96
+ completedStoryCount: 0,
97
+ }));
98
+ const snapshot = {
99
+ id,
100
+ cwd: input.cwd,
101
+ status: "pending",
102
+ title: input.title ?? input.graph.goal,
103
+ labels: input.labels ?? {},
104
+ // Gated on non-empty, not `?? {}`: `saveWorkflow` serialises the record verbatim,
105
+ // so an unconditional spread would add an `"agentPresets": {}` line to every
106
+ // workflow file the daemon has ever written (Story 2.2 AC2).
107
+ ...(input.agentPresets && Object.keys(input.agentPresets).length > 0
108
+ ? { agentPresets: input.agentPresets }
109
+ : {}),
110
+ phases,
111
+ childAgentIds: [],
112
+ totalStoryCount: input.graph.tasks.length,
113
+ completedStoryCount: 0,
114
+ createdAt: now,
115
+ updatedAt: now,
116
+ };
117
+ await this.storage.saveWorkflow(snapshot);
118
+ this.workflows.set(id, {
119
+ snapshot,
120
+ graph: input.graph,
121
+ baseConfig: input.baseConfig,
122
+ agentPresets: input.agentPresets ?? {},
123
+ parentAgentId: input.parentAgentId,
124
+ terminalOutcomes: new Map(),
125
+ closeRequestedAgentIds: new Set(),
126
+ spawnedTaskIds: new Set(),
127
+ childTaskIds: new Map(),
128
+ });
129
+ this.emit(snapshot);
130
+ return snapshot;
131
+ }
132
+ /**
133
+ * List every known workflow - storage records overlaid with in-memory snapshots.
134
+ * Live workflows are returned with progress PROJECTED from current child state
135
+ * (Story 3.1), so list surfaces show the same live counts as the detail/SSE views.
136
+ */
137
+ async listWorkflows() {
138
+ const byId = new Map();
139
+ for (const record of await this.storage.listWorkflows()) {
140
+ byId.set(record.id, record);
141
+ }
142
+ for (const live of this.workflows.values()) {
143
+ byId.set(live.snapshot.id, this.projectSnapshot(live));
144
+ }
145
+ return Array.from(byId.values());
146
+ }
147
+ /**
148
+ * Resolve a single workflow. A hard miss throws {@link WorkflowNotFoundError}.
149
+ * For a live workflow the returned snapshot carries progress PROJECTED from the
150
+ * current child-agent states - the persisted counter is never trusted as truth.
151
+ */
152
+ async getWorkflow(id) {
153
+ const live = this.workflows.get(id);
154
+ if (live) {
155
+ return this.projectSnapshot(live);
156
+ }
157
+ const stored = await this.storage.loadWorkflow(id);
158
+ if (!stored) {
159
+ throw new WorkflowNotFoundError(id);
160
+ }
161
+ return stored;
162
+ }
163
+ /**
164
+ * Cancel a workflow: flip it to the terminal `cancelled` status, persist, and
165
+ * emit. Resolves a live OR storage-only workflow. Throws
166
+ * {@link WorkflowNotFoundError} for an unknown id and
167
+ * {@link WorkflowAlreadyTerminalError} when it has already finished. Child-agent
168
+ * teardown is the separate concern of {@link cascadeArchiveChildren}.
169
+ */
170
+ async cancelWorkflow(workflowId) {
171
+ const live = this.workflows.get(workflowId);
172
+ const current = live?.snapshot ?? (await this.storage.loadWorkflow(workflowId));
173
+ if (!current) {
174
+ throw new WorkflowNotFoundError(workflowId);
175
+ }
176
+ if (isTerminalStatus(current.status)) {
177
+ throw new WorkflowAlreadyTerminalError(workflowId, current.status);
178
+ }
179
+ const now = new Date().toISOString();
180
+ const cancelled = {
181
+ ...current,
182
+ status: "cancelled",
183
+ completedAt: now,
184
+ updatedAt: now,
185
+ };
186
+ if (live) {
187
+ live.snapshot = cancelled;
188
+ }
189
+ await this.storage.saveWorkflow(cancelled);
190
+ this.emit(cancelled);
191
+ return cancelled;
192
+ }
193
+ /**
194
+ * Return the workflow's recorded lifecycle events, derived deterministically
195
+ * from its snapshot's timestamps (created/started/completed/archived). A
196
+ * one-shot read - continuous event push is Epic 2. Throws
197
+ * {@link WorkflowNotFoundError} for an unknown id.
198
+ */
199
+ async getWorkflowEvents(workflowId) {
200
+ const snapshot = await this.getWorkflow(workflowId);
201
+ return projectWorkflowEvents(snapshot);
202
+ }
203
+ /**
204
+ * Readiness predicate for the spawn scheduler - a pure function of `live`.
205
+ *
206
+ * Returns, in `graph.tasks` array order (so spawn order is deterministic), the NODE of
207
+ * every task that is not yet spawned, not yet terminal, and whose every declared
208
+ * dependency has already recorded a `"success"` outcome. Nodes, not ids: both callers
209
+ * need the node to spawn it, and returning ids made each of them re-scan `graph.tasks`
210
+ * (an O(n^2) lookup) behind an unreachable `if (!node) continue` guard.
211
+ *
212
+ * Readiness is computed from `TaskNode.dependencies` DIRECTLY, never from
213
+ * `resolveExecutionLayers`, whose declared-layer branch returns
214
+ * `metadata.executionLayers` verbatim and unvalidated, and never from layer output.
215
+ *
216
+ * A dependency id absent from `terminalOutcomes` is NOT satisfied. That single rule
217
+ * also makes an out-of-graph dependency unsatisfiable: a ghost id can never gain a
218
+ * terminal outcome, because outcomes are only ever written for real spawned children.
219
+ * This is a DELIBERATE divergence from `computeLayersFromDependencies`
220
+ * (workflow-progress.ts:268), whose `|| !byId.has(dep)` clause treats an out-of-graph
221
+ * dep as already met so it can keep layering already-stored graphs. Under a scheduler,
222
+ * "satisfied because it does not exist" would launch a task whose stated precondition
223
+ * was never met.
224
+ *
225
+ * Performs no I/O, no clock read and no `agentManager` call.
226
+ */
227
+ readyTaskNodes(live) {
228
+ return live.graph.tasks.filter((node) => !live.spawnedTaskIds.has(node.id) &&
229
+ !live.terminalOutcomes.has(node.id) &&
230
+ node.dependencies.every((dep) => live.terminalOutcomes.get(dep) === "success"));
231
+ }
232
+ /**
233
+ * Drive a workflow's FIRST spawn wave: transition pending -> running, then spawn
234
+ * exactly the tasks that are ready: those whose declared `dependencies` are already
235
+ * satisfied. On a fresh graph that is the dependency-free set; a task that declares a
236
+ * dependency is deliberately NOT launched here, which is what makes
237
+ * `TaskNode.dependencies` a real runtime constraint rather than a decorative field.
238
+ *
239
+ * Parallelism is residual, not declared: two tasks run together because nothing holds
240
+ * them, not because a layer listed them side by side.
241
+ *
242
+ * This method never launches a later wave. Tasks unblocked by a child reaching a
243
+ * terminal state are launched by the continuation path (Story 1.2), driven from
244
+ * `onAgentEvent`, not from here. Returns the updated snapshot.
245
+ */
246
+ async startWorkflow(workflowId) {
247
+ const live = this.requireLive(workflowId);
248
+ const startedAt = new Date().toISOString();
249
+ live.snapshot = {
250
+ ...live.snapshot,
251
+ status: "running",
252
+ startedAt,
253
+ updatedAt: startedAt,
254
+ };
255
+ await this.persist(live);
256
+ this.emit(live.snapshot);
257
+ // Claim the WHOLE first wave before the first await, not one id per iteration. The
258
+ // ledger must be authoritative for every readiness check that runs while any
259
+ // `createAgent` is in flight -- and from Story 1.2 onward such checks exist: spawning
260
+ // the first child dispatches `agent_state` synchronously inside `await createAgent`
261
+ // (agent-manager.ts:2848, :2854), which re-enters `onAgentEvent` -> `continueWorkflow`
262
+ // while this loop is still suspended on its first await. Claiming per-iteration would
263
+ // leave the rest of the wave unclaimed at that moment, so continuation would spawn
264
+ // those tasks and this loop would then spawn them a second time.
265
+ const firstWave = this.readyTaskNodes(live);
266
+ for (const node of firstWave) {
267
+ live.spawnedTaskIds.add(node.id);
268
+ }
269
+ for (const node of firstWave) {
270
+ // Re-read the status BETWEEN spawns, never once up front: `cancelWorkflow` mutates
271
+ // this same `live.snapshot` and can land while this loop is suspended on a previous
272
+ // `await`. Without this, cancelling a 3-task wave mid-flight still launched every
273
+ // remaining task into a workflow the caller had already stopped.
274
+ //
275
+ // `revokesInFlightWork`, NOT `isTerminalStatus`: a task failing elsewhere in this
276
+ // same wave must not abandon the independent tasks after it. Only a cancel stops
277
+ // the wave. See {@link revokesInFlightWork}.
278
+ if (revokesInFlightWork(live.snapshot.status)) {
279
+ break;
280
+ }
281
+ await this.spawnPhaseAgent({
282
+ workflowId,
283
+ node,
284
+ config: resolveTaskConfig({
285
+ node,
286
+ baseConfig: live.baseConfig,
287
+ agentPresets: live.agentPresets,
288
+ }),
289
+ });
290
+ }
291
+ return this.requireLive(workflowId).snapshot;
292
+ }
293
+ /**
294
+ * Spawn a single child agent for one task node via the public
295
+ * `agentManager.createAgent` surface, tagging it with WORKFLOW_ID_LABEL (and
296
+ * PARENT_AGENT_ID_LABEL when the workflow is owned by a parent agent). Records the
297
+ * child id on the snapshot and persists. Never spawns a process directly.
298
+ *
299
+ * `config` arrives ALREADY RESOLVED by the caller (`resolveTaskConfig`, Story 2.1);
300
+ * this method performs no resolution of its own, so one helper serves both spawn
301
+ * call sites with no duplicated precedence rule.
302
+ *
303
+ * Returns the child on the normal path and `undefined` when the workflow was cancelled
304
+ * mid-spawn and the child was discarded (gate 1.002 NIT-4). The two cases are otherwise
305
+ * indistinguishable to a caller - same type, same shape - and the discarded agent is a
306
+ * corpse: archived, and deliberately absent from `childAgentIds`. `undefined` is the
307
+ * only honest way to say "there is no child here" through a public surface.
308
+ */
309
+ async spawnPhaseAgent(args) {
310
+ const { workflowId, node, config } = args;
311
+ const live = this.requireLive(workflowId);
312
+ const labels = {
313
+ ...live.snapshot.labels,
314
+ [WORKFLOW_ID_LABEL]: workflowId,
315
+ // Story 3.1 - map this child to its specific story node so the live progress
316
+ // projection can derive completion/phase/gate from real child lifecycle state.
317
+ [WORKFLOW_TASK_ID_LABEL]: node.id,
318
+ };
319
+ if (live.parentAgentId) {
320
+ labels[PARENT_AGENT_ID_LABEL] = live.parentAgentId;
321
+ }
322
+ // NOTE: `createAgent`'s options bag DECLARES `initialPrompt` and never reads it
323
+ // (agent-manager.ts:1005 declares, zero readers; `initialTitle` at :1028 is read).
324
+ // Passing it here created agents that sat idle forever with no prompt and no
325
+ // provider session, so a workflow reported `running` while doing nothing. The
326
+ // prompt is sent below, through the same helper the MCP/CLI create path uses.
327
+ const agent = await this.agentManager.createAgent(config, undefined, {
328
+ labels,
329
+ initialTitle: node.title,
330
+ });
331
+ // RECONCILE AFTER THE AWAIT. `createAgent` is the only slow step here, and
332
+ // `cancelWorkflow` mutates this same `live.snapshot` synchronously from another task,
333
+ // so the workflow can be CANCELLED while this spawn is in flight. The pre-spawn checks
334
+ // in `startWorkflow`/`continueWorkflow` cannot see that: they ran before this await.
335
+ // Without this branch a cancelled workflow still gained a live, unarchived child and
336
+ // persisted its id onto the cancelled snapshot.
337
+ //
338
+ // Scoped to cancellation on purpose. A workflow that settles to `failed` while this
339
+ // spawn is in flight keeps the child: settling observes the graph, it does not revoke
340
+ // siblings. See {@link revokesInFlightWork} for why the wider test was a defect.
341
+ if (revokesInFlightWork(live.snapshot.status)) {
342
+ await this.discardOrphanedChild(agent.id, workflowId, node.id);
343
+ return undefined;
344
+ }
345
+ // Bound here, in the same synchronous step as the `childAgentIds` append and after the
346
+ // same cancellation reconcile, so the two can never disagree: every acknowledged child
347
+ // has a task binding, and a discarded orphan has neither.
348
+ live.childTaskIds.set(agent.id, node.id);
349
+ live.snapshot = {
350
+ ...live.snapshot,
351
+ childAgentIds: [...live.snapshot.childAgentIds, agent.id],
352
+ updatedAt: new Date().toISOString(),
353
+ };
354
+ await this.persist(live);
355
+ this.emit(live.snapshot);
356
+ // Start the run only AFTER `childTaskIds` is bound and the snapshot is persisted:
357
+ // a child that terminates immediately would otherwise fire `onAgentEvent` before
358
+ // its task binding existed, and its outcome would be dropped on the floor.
359
+ try {
360
+ await startCreatedAgentInitialPrompt({
361
+ agentManager: this.agentManager,
362
+ agentId: agent.id,
363
+ snapshot: agent,
364
+ prompt: node.prompt,
365
+ logger: this.logger,
366
+ });
367
+ }
368
+ catch (error) {
369
+ // A child that never starts can never reach a terminal outcome, so its
370
+ // dependents never become ready and the workflow stalls at `running`. That is
371
+ // the failure this whole story exists to remove, so it is logged loudly rather
372
+ // than swallowed. The child is left in place and visible.
373
+ this.logger?.error({ err: error, workflowId, taskId: node.id, agentId: agent.id }, "Workflow child agent was created but its initial prompt failed to start");
374
+ }
375
+ return agent;
376
+ }
377
+ /**
378
+ * Tear down a child that was created for a workflow which went terminal mid-spawn.
379
+ * Uses `archiveAgent`, the same public surface {@link cascadeArchiveChildren} uses, so
380
+ * the child is closed and marked archived rather than left running for a workflow
381
+ * nobody is watching. The child id is deliberately NOT appended to the snapshot: a
382
+ * cancelled workflow gains no children.
383
+ *
384
+ * Best effort and never throws. It runs on the failure path of a spawn that has already
385
+ * happened; a teardown error must not turn into a rejected `startWorkflow`, nor into an
386
+ * unhandled rejection from the detached continuation IIFE.
387
+ */
388
+ async discardOrphanedChild(agentId, workflowId, taskId) {
389
+ try {
390
+ await this.agentManager.archiveAgent(agentId);
391
+ }
392
+ catch (error) {
393
+ this.logger?.error({ workflowId, taskId, agentId, err: error }, "workflow.spawn.discard_failed");
394
+ }
395
+ }
396
+ /**
397
+ * Archive every child agent tagged to the workflow - no orphans - mirroring
398
+ * `AgentManager.cascadeArchiveChildren`, but keyed on WORKFLOW_ID_LABEL and using
399
+ * only the public archive surface (`listAgents` + `archiveAgent`). `archiveAgent`
400
+ * requires a live agent, so we iterate the live set exactly as the original guards
401
+ * on `agents.has(id)`. The workflow snapshot itself is marked archived.
402
+ */
403
+ async cascadeArchiveChildren(workflowId) {
404
+ for (const agent of this.agentManager.listAgents()) {
405
+ if (agent.labels?.[WORKFLOW_ID_LABEL] !== workflowId) {
406
+ continue;
407
+ }
408
+ await this.agentManager.archiveAgent(agent.id);
409
+ }
410
+ const live = this.workflows.get(workflowId);
411
+ if (live) {
412
+ const archivedAt = new Date().toISOString();
413
+ const status = terminalStatusForArchive(live.snapshot.status);
414
+ live.snapshot = { ...live.snapshot, status, archivedAt, updatedAt: archivedAt };
415
+ await this.persist(live);
416
+ this.emit(live.snapshot);
417
+ }
418
+ }
419
+ /**
420
+ * Number of live snapshot subscribers. Read-only observability - used by the
421
+ * SSE route's leak-guard test (Story 2.1) to assert that a disconnected client
422
+ * unsubscribes back to baseline. Additive; does not affect emit behaviour.
423
+ */
424
+ get subscriberCount() {
425
+ return this.subscribers.size;
426
+ }
427
+ /** Subscribe to workflow snapshot changes. Returns an unsubscribe function. */
428
+ subscribe(subscriber) {
429
+ this.subscribers.add(subscriber);
430
+ return () => {
431
+ this.subscribers.delete(subscriber);
432
+ };
433
+ }
434
+ emit(workflow) {
435
+ for (const subscriber of this.subscribers) {
436
+ try {
437
+ subscriber({ workflow });
438
+ }
439
+ catch {
440
+ // Subscriber error isolation - one bad listener never blocks the others.
441
+ }
442
+ }
443
+ }
444
+ /**
445
+ * AgentManager subscription handler. Reacts only to child state changes for an
446
+ * agent tagged to a tracked, RUNNING workflow (pending, cancelled and finished
447
+ * workflows are all rejected by the early return). It does three things:
448
+ *
449
+ * 1. Records the child's terminal outcome while the event still carries the closed
450
+ * agent (Story 3.1),
451
+ * 2. Drives ORCHESTRATION (Story 1.2): every surviving event sweeps the graph for
452
+ * tasks whose dependencies just became satisfied and spawns them. This is the
453
+ * only continuation path; there is no poll loop and no second `startWorkflow`, and
454
+ * 3. SETTLES the workflow (Story 1.3): once every declared task has a terminal
455
+ * outcome it flips to `completed`, and the first `failed` outcome flips it to
456
+ * `failed`, freezing the projected counts into the snapshot at that instant.
457
+ *
458
+ * Then it schedules a coalesced projection emit for the workflow. Continuation runs
459
+ * ALONGSIDE that emit, never behind it: the 60 ms window throttles display, and
460
+ * routing scheduling through it would add a window's dead time per graph edge.
461
+ *
462
+ * MUST stay synchronous and MUST NOT throw. `AgentManager.dispatch` invokes
463
+ * `subscriber.callback(event)` with no try/catch (agent-manager.ts:3992), so a throw
464
+ * here starves every later subscriber and propagates out of the caller's
465
+ * `await closeAgent(id)`. Making it `async` is the other half of the same bug:
466
+ * `dispatch` ignores the returned promise, so a rejection becomes an unhandled one.
467
+ */
468
+ onAgentEvent(event) {
469
+ if (event.type !== "agent_state") {
470
+ return;
471
+ }
472
+ const workflowId = event.agent.labels?.[WORKFLOW_ID_LABEL];
473
+ if (workflowId === undefined) {
474
+ return;
475
+ }
476
+ const live = this.workflows.get(workflowId);
477
+ // `!== "running"` rather than `!isTerminalStatus(...)`. Both reject a cancelled or
478
+ // finished workflow; only this one also rejects a PENDING one. That mattered the
479
+ // moment continuation shipped: before it, only `startWorkflow` could spawn, so a
480
+ // stray `agent_state` carrying a pending workflow's WORKFLOW_ID_LABEL was harmless.
481
+ // With continuation, the same event drove a never-started workflow into spawning its
482
+ // first wave - leaving it with children while `status` stayed "pending" and
483
+ // `startedAt` stayed null, so the lifecycle projection disagreed with reality. The
484
+ // label is client-reachable (the WS `agent.create` message and MCP `agent_spawn` both
485
+ // forward arbitrary labels), so this is reachable, not theoretical.
486
+ if (!live || live.snapshot.status !== "running") {
487
+ return;
488
+ }
489
+ // A child that reaches a terminal lifecycle is DELETED from AgentManager's live map
490
+ // (prepareAgentForClosure), so the live projection would never witness its completion.
491
+ // Record the terminal outcome now -- keyed by task, while the event still carries the
492
+ // closed agent -- so projectSnapshot counts it even after the agent is gone.
493
+ //
494
+ // OWNERSHIP GATE (gate 1.003 MAJOR-1, closed the rest of the way by MINOR-4). The task
495
+ // id comes from `live.childTaskIds`, the binding `spawnPhaseAgent` wrote itself, NOT
496
+ // from the event's WORKFLOW_TASK_ID_LABEL. Two separate defects need that:
497
+ //
498
+ // 1. The label is client-SETTABLE at create time (the WS `agent.create` message and
499
+ // MCP `agent_spawn` forward an arbitrary `Record<string, string>`), so any stranger
500
+ // wearing a workflow id plus a task id could write into that workflow's ledger, and
501
+ // since Story 1.3 the ledger decides a TERMINAL status. Reproduced twice: a stranger
502
+ // labelled `task-002` failing its turn drove a healthy workflow to `failed` while
503
+ // task-001's real child was still running, and the same stranger closing cleanly
504
+ // produced `completed` with `completedStoryCount: 2` on a graph whose second task
505
+ // had never been spawned. The terminal early return above makes that lie permanent
506
+ // and persists it to disk.
507
+ // 2. The label stays WRITABLE after spawn (`update_agent_request` merges arbitrary
508
+ // labels onto a live agent), so a membership check on `childAgentIds` alone was not
509
+ // enough: relabelling a workflow's OWN child from `task-001` to `task-002` filed
510
+ // task-001's close under task-002, leaving task-001 in `spawnedTaskIds` with no
511
+ // outcome it can ever gain. `allTerminal` was then unreachable and the workflow sat
512
+ // `running` forever, reporting task-001 pending and task-002 completed with zero
513
+ // live children. Only `cancelWorkflow` could end it.
514
+ //
515
+ // A `childTaskIds` hit IS the ownership proof, so no second membership test is needed:
516
+ // the map is written in the same synchronous step as the `childAgentIds` append, after
517
+ // the cancellation reconcile, so a discarded orphan is absent from both. It also subsumes
518
+ // the out-of-graph case (a key can only ever be a `node.id`), which keeps the graph read
519
+ // in `settleWorkflow` a second layer rather than the only one. The label survives as what
520
+ // it was always good for: display, and the live progress projection's own lookup
521
+ // (`workflow-progress.ts:159`), where a wrong label misdraws a row and settles nothing.
522
+ const taskId = live.childTaskIds.get(event.agent.id);
523
+ if (taskId !== undefined) {
524
+ if (event.agent.lifecycle === "closed") {
525
+ live.terminalOutcomes.set(taskId, event.agent.lastError ? "failed" : "success");
526
+ }
527
+ else if (event.agent.lifecycle === "error") {
528
+ live.terminalOutcomes.set(taskId, "failed");
529
+ }
530
+ }
531
+ // A paseo agent that finishes its task does NOT reach a terminal lifecycle. It goes
532
+ // `idle` with `requiresAttention: true, attentionReason: "finished"` and stays alive
533
+ // awaiting more input, exactly as an interactive session should. `terminalOutcomes`
534
+ // above only records on `closed`/`error`, so without this the ledger stayed empty,
535
+ // `readyTaskIds` never saw a satisfied dependency, and NO workflow could advance past
536
+ // its first layer or ever settle. Measured against a real daemon: task `first` reached
537
+ // attentionReason "finished" at 14:19:52 and the workflow still read 0/2 minutes later.
538
+ //
539
+ // `loop-service.ts` (`:682`, `:798`) already closes its worker for this same reason;
540
+ // workflows simply never did. Closing here re-enters `onAgentEvent` with `closed`, so
541
+ // the outcome logic above stays the single place a task's result is decided.
542
+ //
543
+ // ONLY on "finished". `"permission"` means a human is being asked something and closing
544
+ // would silently discard the request; `"error"` is already handled by the error branch.
545
+ // `AttentionState` is a union carried alongside the lifecycle union, so narrowing on
546
+ // `lifecycle === "idle"` picks `ManagedAgentIdle` and loses sight of it. Read the two
547
+ // fields through an explicit shape rather than widening the public ManagedAgent type.
548
+ // The LIVE agent nests this as `agent.attention` (agent-manager.ts:1542/1778/3841).
549
+ // The flat `requiresAttention` / `attentionReason` pair only exists in the PERSISTED
550
+ // shape, so reading it off the event silently never matched and the close never fired.
551
+ const attention = event.agent.attention;
552
+ if (taskId !== undefined &&
553
+ event.agent.lifecycle === "idle" &&
554
+ attention?.requiresAttention === true &&
555
+ attention.attentionReason === "finished" &&
556
+ !live.closeRequestedAgentIds.has(event.agent.id)) {
557
+ live.closeRequestedAgentIds.add(event.agent.id);
558
+ const finishedAgentId = event.agent.id;
559
+ void this.agentManager.closeAgent(finishedAgentId).catch((error) => {
560
+ // Leave the id in `closeRequestedAgentIds`: retrying on every subsequent event
561
+ // would hammer a failing close. The task simply gains no outcome, which surfaces
562
+ // as a workflow stuck at `running` rather than a silent wrong result.
563
+ this.logger?.error({ err: error, workflowId, taskId, agentId: finishedAgentId }, "Workflow child finished its turn but could not be closed");
564
+ });
565
+ }
566
+ // Called unconditionally, not only on terminal lifecycles: the readiness sweep is a
567
+ // pure function plus a synchronously guarded spawn, so a non-terminal event is a free
568
+ // no-op. That unconditional call is also what exercises the re-entrancy the ledger
569
+ // insert in `continueWorkflow` is there to absorb.
570
+ this.continueWorkflow(live);
571
+ // Continuation BEFORE settling, per the epic, and provably safe: one `agent_state`
572
+ // event carries exactly one agent, so at most one task becomes terminal per event.
573
+ // A FAILING task satisfies no dependency, so `readyTaskNodes` returns empty on that
574
+ // event and nothing is spawned before the flip.
575
+ //
576
+ // `void ... .catch(...)` is mandatory, not stylistic: an `async` function converts a
577
+ // synchronous throw in its prefix into a rejection, so this single `.catch` covers
578
+ // both a bad projection and a failed storage write. `onAgentEvent` stays
579
+ // `void`-returning and never awaits.
580
+ void this.settleWorkflow(live).catch((error) => {
581
+ this.logger?.error({ workflowId, err: error }, "workflow.settle.failed");
582
+ });
583
+ this.scheduleProjectionEmit(workflowId);
584
+ }
585
+ /**
586
+ * Spawn every task whose dependencies have just become satisfied. Takes the ALREADY
587
+ * RESOLVED `LiveWorkflow` rather than a workflow id, so it can never call
588
+ * `requireLive` and can never throw `WorkflowNotFoundError` synchronously into
589
+ * `AgentManager.dispatch`. Returns `void`, never a promise, and never throws.
590
+ *
591
+ * The ENTRY guard deliberately lives in the caller (`onAgentEvent`'s early return), not
592
+ * here: a workflow that is not `running` never reaches this method, so cancellation
593
+ * wins for free with no second entry guard to keep in sync. The re-read inside the
594
+ * detached loop is a different question - not "may I start?" but "is this still true
595
+ * after the last await?" - and it has no equivalent in the caller, which returned long
596
+ * before that loop runs.
597
+ *
598
+ * Readiness comes from `readyTaskNodes`, the single Story 1.1 rule. This method adds no
599
+ * second readiness rule, does not flip the workflow status, does not stamp
600
+ * `completedAt` and does not record an outcome for a task whose spawn failed:
601
+ * inventing a failure outcome here would change the projection's counts.
602
+ */
603
+ continueWorkflow(live) {
604
+ const nodes = this.readyTaskNodes(live);
605
+ if (nodes.length === 0) {
606
+ return;
607
+ }
608
+ for (const node of nodes) {
609
+ // THE idempotency guarantee: claimed synchronously, before any `await` anywhere in
610
+ // this method. Spawning a child dispatches further `agent_state` events for this
611
+ // workflow synchronously inside `await createAgent` (agent-manager.ts:2848, :2854),
612
+ // each of which re-enters `onAgentEvent` while this same spawn is still in flight.
613
+ // With the claim before the await, those re-entrant sweeps see the task already
614
+ // taken and do nothing; after the await, every one of them re-spawns it.
615
+ live.spawnedTaskIds.add(node.id);
616
+ }
617
+ // Detached on purpose: `onAgentEvent` must not become async. One try/catch per node so
618
+ // a single failing spawn never blocks its siblings.
619
+ void (async () => {
620
+ for (const node of nodes) {
621
+ // Same between-spawn re-read as `startWorkflow`'s loop: a cancel landing while
622
+ // this loop is suspended on a previous spawn must stop the remaining ones. A
623
+ // failure settling the workflow does not - see {@link revokesInFlightWork}.
624
+ if (revokesInFlightWork(live.snapshot.status)) {
625
+ return;
626
+ }
627
+ try {
628
+ await this.spawnPhaseAgent({
629
+ workflowId: live.snapshot.id,
630
+ node,
631
+ config: resolveTaskConfig({
632
+ node,
633
+ baseConfig: live.baseConfig,
634
+ agentPresets: live.agentPresets,
635
+ }),
636
+ });
637
+ }
638
+ catch (error) {
639
+ this.logger?.error({ workflowId: live.snapshot.id, taskId: node.id, err: error }, "workflow.continue.spawn_failed");
640
+ }
641
+ }
642
+ })();
643
+ }
644
+ /**
645
+ * Settle the workflow to a terminal status once its graph has finished. Takes the
646
+ * ALREADY RESOLVED `LiveWorkflow`, never a workflow id, so it can never call
647
+ * `requireLive` and can never throw `WorkflowNotFoundError` into
648
+ * `AgentManager.dispatch`.
649
+ *
650
+ * The rule is read THROUGH `graph.tasks`, not off `terminalOutcomes.values()`. With the
651
+ * ledger keyed on `live.childTaskIds` (gate 1.003 MINOR-4) an out-of-graph key can no
652
+ * longer enter the map at all, so this is a second layer rather than the only one; it is
653
+ * kept because it costs nothing and it is the layer that survives if the key ever becomes
654
+ * derivable from an event again. Mapping the declared tasks over the map also means a
655
+ * partially populated ledger reads as "not finished" rather than as "finished".
656
+ *
657
+ * Everything up to the first `await` is synchronous ON PURPOSE. `AgentManager.dispatch`
658
+ * is a plain synchronous loop invoked from inside `await closeAgent(...)`, so the status
659
+ * flip and the frozen counts are committed to memory before that expression resolves -
660
+ * which is what lets a caller read the terminal snapshot on the very next line with no
661
+ * polling. Only `persist` and `emit` are asynchronous.
662
+ *
663
+ * Children are never cancelled, closed, archived or interrupted here: an independent
664
+ * in-flight sibling keeps running after a failure.
665
+ */
666
+ async settleWorkflow(live) {
667
+ // pending never has children, and a terminal workflow is already filtered by the
668
+ // early return in `onAgentEvent`. Belt and braces, one line.
669
+ if (live.snapshot.status !== "running") {
670
+ return;
671
+ }
672
+ const outcomes = live.graph.tasks.map((task) => live.terminalOutcomes.get(task.id));
673
+ const anyFailed = outcomes.some((outcome) => outcome === "failed");
674
+ const allTerminal = outcomes.every((outcome) => outcome !== undefined);
675
+ if (!anyFailed && !allTerminal) {
676
+ return;
677
+ }
678
+ // FREEZE THE COUNTS FIRST. `projectSnapshot` short-circuits on a terminal status and
679
+ // returns `live.snapshot` verbatim, whose `completedStoryCount` is still the literal
680
+ // `0` written at createWorkflow - every live count a reader has ever seen came from
681
+ // the projection overlay, never from that stored field. So project WHILE STILL
682
+ // RUNNING, then flip. Spreading `live.snapshot` here instead compiles, type-checks
683
+ // and lints, and silently zeroes every finished workflow's progress.
684
+ const projected = this.projectSnapshot(live);
685
+ const now = new Date().toISOString();
686
+ live.snapshot = {
687
+ ...projected,
688
+ status: anyFailed ? "failed" : "completed",
689
+ completedAt: now,
690
+ updatedAt: now,
691
+ };
692
+ // Persist then emit - the same order as `cancelWorkflow`.
693
+ await this.persist(live);
694
+ this.emit(live.snapshot);
695
+ }
696
+ /**
697
+ * Coalesce a burst of child updates into ONE projection emit per settled window
698
+ * (the `agent-stream-coalescer.ts` discipline). The first event in a burst arms a
699
+ * timer; subsequent events within the window are absorbed. On fire, the current
700
+ * child states are projected and the updated snapshot is emitted through the
701
+ * existing `workflow.*` / HTTP / SSE channels - no new transport, no polling.
702
+ */
703
+ scheduleProjectionEmit(workflowId) {
704
+ if (this.projectionTimers.has(workflowId)) {
705
+ return;
706
+ }
707
+ const timer = this.timers.setTimeout(() => {
708
+ this.projectionTimers.delete(workflowId);
709
+ const live = this.workflows.get(workflowId);
710
+ if (!live) {
711
+ return;
712
+ }
713
+ this.emit(this.projectSnapshot(live));
714
+ }, this.coalesceWindowMs);
715
+ timer.unref?.();
716
+ this.projectionTimers.set(workflowId, timer);
717
+ }
718
+ /**
719
+ * Overlay LIVE derived progress onto a workflow's base snapshot. Counts, per-phase
720
+ * gate status, and per-phase completion are recomputed from the current child-agent
721
+ * states - never read back from the persisted snapshot. Terminal workflows are
722
+ * returned unchanged (nothing left to project). The base snapshot's lifecycle
723
+ * fields (status, childAgentIds, timestamps, id/title) are preserved verbatim; only
724
+ * derived progress fields are overlaid, so this stays back-compat and additive.
725
+ */
726
+ projectSnapshot(live) {
727
+ const base = live.snapshot;
728
+ if (isTerminalStatus(base.status)) {
729
+ return base;
730
+ }
731
+ const children = this.agentManager
732
+ .listAgents()
733
+ .filter((agent) => agent.labels?.[WORKFLOW_ID_LABEL] === base.id);
734
+ const projectedPhases = projectWorkflowPhases({
735
+ children,
736
+ taskGraph: live.graph,
737
+ terminalOutcomes: live.terminalOutcomes,
738
+ });
739
+ const progress = projectWorkflowProgress({
740
+ children,
741
+ taskGraph: live.graph,
742
+ terminalOutcomes: live.terminalOutcomes,
743
+ });
744
+ // Overlay by index - preserve each phase's persisted id/title, refresh its gate.
745
+ const phases = base.phases.map((phase, index) => {
746
+ const projected = projectedPhases[index];
747
+ if (!projected) {
748
+ return phase;
749
+ }
750
+ return {
751
+ ...phase,
752
+ status: projected.status,
753
+ storyCount: projected.storyCount,
754
+ completedStoryCount: projected.completedStoryCount,
755
+ };
756
+ });
757
+ return {
758
+ ...base,
759
+ phases,
760
+ totalStoryCount: progress.totalStoryCount,
761
+ completedStoryCount: progress.completedStoryCount,
762
+ };
763
+ }
764
+ requireLive(workflowId) {
765
+ const live = this.workflows.get(workflowId);
766
+ if (!live) {
767
+ throw new WorkflowNotFoundError(workflowId);
768
+ }
769
+ return live;
770
+ }
771
+ async persist(live) {
772
+ await this.storage.saveWorkflow(live.snapshot);
773
+ }
774
+ }
775
+ /** A workflow in a terminal state can no longer be cancelled. */
776
+ function isTerminalStatus(status) {
777
+ return status === "completed" || status === "failed" || status === "cancelled";
778
+ }
779
+ /**
780
+ * The ONE status that revokes work already in motion. Deliberately narrower than
781
+ * {@link isTerminalStatus}: cancellation is the operator saying "stop", so a spawn still
782
+ * parked inside `createAgent` when it lands is work nobody asked for and gets discarded.
783
+ *
784
+ * A `failed` or `completed` workflow is the opposite case. Settling is an OBSERVATION
785
+ * about the graph, not an instruction about the children, and Story 1.3's contract is
786
+ * explicit that a failure leaves independent siblings alone ("Children are never
787
+ * cancelled, closed, archived or interrupted here" - see {@link WorkflowManager.settleWorkflow}).
788
+ * Keying the spawn-abort on `isTerminalStatus` made that contract depend on the clock:
789
+ * with a fast provider both wave-1 children landed before the failure and survived, while
790
+ * at real provider latency (hundreds of ms per PTY) the in-flight sibling was archived
791
+ * mid-launch and the untouched rest of the wave was never asked for at all - a different
792
+ * surviving work set for the same graph and the same failure. Gate 1.002 MAJOR-3.
793
+ */
794
+ function revokesInFlightWork(status) {
795
+ return status === "cancelled";
796
+ }
797
+ /** The lifecycle-event type that corresponds to a terminal status. */
798
+ function terminalEventType(status) {
799
+ switch (status) {
800
+ case "failed":
801
+ return "failed";
802
+ case "cancelled":
803
+ return "cancelled";
804
+ // `completedAt` is only ever stamped alongside a terminal status, so the
805
+ // remaining cases (completed / pending / running) all map to "completed".
806
+ default:
807
+ return "completed";
808
+ }
809
+ }
810
+ /**
811
+ * Derive the ordered lifecycle-event list from a snapshot's timestamps. Pure and
812
+ * deterministic - the same snapshot always yields the same events.
813
+ */
814
+ function projectWorkflowEvents(snapshot) {
815
+ const events = [
816
+ { workflowId: snapshot.id, type: "created", status: "pending", at: snapshot.createdAt },
817
+ ];
818
+ if (snapshot.startedAt) {
819
+ events.push({
820
+ workflowId: snapshot.id,
821
+ type: "started",
822
+ status: "running",
823
+ at: snapshot.startedAt,
824
+ });
825
+ }
826
+ if (snapshot.completedAt) {
827
+ events.push({
828
+ workflowId: snapshot.id,
829
+ type: terminalEventType(snapshot.status),
830
+ status: snapshot.status,
831
+ at: snapshot.completedAt,
832
+ });
833
+ }
834
+ if (snapshot.archivedAt) {
835
+ events.push({
836
+ workflowId: snapshot.id,
837
+ type: "archived",
838
+ status: snapshot.status,
839
+ at: snapshot.archivedAt,
840
+ });
841
+ }
842
+ return events;
843
+ }
844
+ /** Map a workflow status to its terminal tag when the workflow is archived. */
845
+ function terminalStatusForArchive(status) {
846
+ if (status === "completed" || status === "failed") {
847
+ return status;
848
+ }
849
+ // pending / running / cancelled -> a workflow torn down before finishing is cancelled.
850
+ return "cancelled";
851
+ }
852
+ //# sourceMappingURL=workflow-manager.js.map