@cydm/happy-elves 0.1.0-beta.49 → 0.1.0-beta.491

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 (460) hide show
  1. package/README.md +0 -2
  2. package/apps/cli/dist/commands/account.js +1 -0
  3. package/apps/cli/dist/commands/app.js +20 -5
  4. package/apps/cli/dist/commands/artifact.d.ts +2 -0
  5. package/apps/cli/dist/commands/artifact.js +97 -0
  6. package/apps/cli/dist/commands/collect.js +1 -0
  7. package/apps/cli/dist/commands/command.js +1 -0
  8. package/apps/cli/dist/commands/config.js +3 -2
  9. package/apps/cli/dist/commands/daemon.js +101 -13
  10. package/apps/cli/dist/commands/dispatch.d.ts +2 -0
  11. package/apps/cli/dist/commands/dispatch.js +130 -0
  12. package/apps/cli/dist/commands/gateway.d.ts +2 -0
  13. package/apps/cli/dist/commands/gateway.js +429 -0
  14. package/apps/cli/dist/commands/lib/args.js +81 -8
  15. package/apps/cli/dist/commands/lib/audit.js +1 -0
  16. package/apps/cli/dist/commands/lib/bootstrap-config.js +1 -0
  17. package/apps/cli/dist/commands/lib/bootstrap-daemon.js +12 -4
  18. package/apps/cli/dist/commands/lib/bootstrap-output.js +1 -0
  19. package/apps/cli/dist/commands/lib/bootstrap.js +1 -0
  20. package/apps/cli/dist/commands/lib/config.d.ts +0 -1
  21. package/apps/cli/dist/commands/lib/config.js +55 -15
  22. package/apps/cli/dist/commands/lib/doctor.d.ts +11 -0
  23. package/apps/cli/dist/commands/lib/doctor.js +279 -13
  24. package/apps/cli/dist/commands/lib/exit.js +2 -2
  25. package/apps/cli/dist/commands/lib/gateway-store.d.ts +38 -0
  26. package/apps/cli/dist/commands/lib/gateway-store.js +33 -0
  27. package/apps/cli/dist/commands/lib/index.d.ts +3 -1
  28. package/apps/cli/dist/commands/lib/index.js +4 -1
  29. package/apps/cli/dist/commands/lib/json.d.ts +2 -2
  30. package/apps/cli/dist/commands/lib/json.js +8 -4
  31. package/apps/cli/dist/commands/lib/local-daemon.d.ts +1 -0
  32. package/apps/cli/dist/commands/lib/local-daemon.js +40 -9
  33. package/apps/cli/dist/commands/lib/loop-store.js +8 -16
  34. package/apps/cli/dist/commands/lib/paths.d.ts +2 -0
  35. package/apps/cli/dist/commands/lib/paths.js +3 -0
  36. package/apps/cli/dist/commands/lib/relay-db-audit.d.ts +37 -0
  37. package/apps/cli/dist/commands/lib/relay-db-audit.js +287 -0
  38. package/apps/cli/dist/commands/lib/relay-debug.d.ts +84 -0
  39. package/apps/cli/dist/commands/lib/relay-debug.js +190 -0
  40. package/apps/cli/dist/commands/lib/relay-http.js +5 -15
  41. package/apps/cli/dist/commands/lib/scope.d.ts +4 -3
  42. package/apps/cli/dist/commands/lib/scope.js +10 -13
  43. package/apps/cli/dist/commands/lib/session-output.d.ts +12 -1
  44. package/apps/cli/dist/commands/lib/session-output.js +291 -57
  45. package/apps/cli/dist/commands/lib/session-view.js +1 -0
  46. package/apps/cli/dist/commands/lib/status.js +24 -7
  47. package/apps/cli/dist/commands/lib/types.d.ts +14 -6
  48. package/apps/cli/dist/commands/lib/types.js +1 -0
  49. package/apps/cli/dist/commands/lib/usage.js +174 -108
  50. package/apps/cli/dist/commands/lib/workspace.d.ts +6 -1
  51. package/apps/cli/dist/commands/lib/workspace.js +41 -2
  52. package/apps/cli/dist/commands/loop.js +17 -64
  53. package/apps/cli/dist/commands/machine.js +51 -9
  54. package/apps/cli/dist/commands/memory.d.ts +2 -0
  55. package/apps/cli/dist/commands/memory.js +179 -0
  56. package/apps/cli/dist/commands/queue.d.ts +2 -0
  57. package/apps/cli/dist/commands/queue.js +95 -0
  58. package/apps/cli/dist/commands/relay.d.ts +1 -1
  59. package/apps/cli/dist/commands/relay.js +335 -26
  60. package/apps/cli/dist/commands/release.d.ts +2 -0
  61. package/apps/cli/dist/commands/release.js +224 -0
  62. package/apps/cli/dist/commands/remote.js +13 -4
  63. package/apps/cli/dist/commands/schedule.d.ts +2 -0
  64. package/apps/cli/dist/commands/schedule.js +273 -0
  65. package/apps/cli/dist/commands/session.js +135 -208
  66. package/apps/cli/dist/commands/sidechat.d.ts +2 -0
  67. package/apps/cli/dist/commands/sidechat.js +72 -0
  68. package/apps/cli/dist/commands/token.js +27 -10
  69. package/apps/cli/dist/commands/turn.js +314 -22
  70. package/apps/cli/dist/commands/workspace.d.ts +2 -0
  71. package/apps/cli/dist/commands/workspace.js +68 -0
  72. package/apps/cli/dist/errors.js +1 -0
  73. package/apps/cli/dist/index.js +1 -0
  74. package/apps/cli/package.json +6 -0
  75. package/apps/daemon/dist/app.js +1 -0
  76. package/apps/daemon/dist/args.js +1 -0
  77. package/apps/daemon/dist/artifact/handler.d.ts +17 -0
  78. package/apps/daemon/dist/artifact/handler.js +858 -0
  79. package/apps/daemon/dist/artifact/pitch-review-sdk.d.ts +1 -0
  80. package/apps/daemon/dist/artifact/pitch-review-sdk.js +63 -0
  81. package/apps/daemon/dist/artifact/store.d.ts +141 -0
  82. package/apps/daemon/dist/artifact/store.js +652 -0
  83. package/apps/daemon/dist/artifact/vendor/lavish-axi/LICENSE +21 -0
  84. package/apps/daemon/dist/artifact/vendor/lavish-axi/artifact-sdk.js +2729 -0
  85. package/apps/daemon/dist/artifact/vendor/lavish-axi/mermaid-node.js +83 -0
  86. package/apps/daemon/dist/artifact/vendor/lavish-axi/table-cell.js +168 -0
  87. package/apps/daemon/dist/audit.js +1 -0
  88. package/apps/daemon/dist/cli.js +1 -0
  89. package/apps/daemon/dist/config.js +35 -0
  90. package/apps/daemon/dist/direct/server.d.ts +8 -0
  91. package/apps/daemon/dist/direct/server.js +1122 -0
  92. package/apps/daemon/dist/direct/state.d.ts +10 -0
  93. package/apps/daemon/dist/direct/state.js +8 -0
  94. package/apps/daemon/dist/direct/tickets.d.ts +65 -0
  95. package/apps/daemon/dist/direct/tickets.js +242 -0
  96. package/apps/daemon/dist/errors.js +1 -0
  97. package/apps/daemon/dist/gateway/adapters.d.ts +38 -0
  98. package/apps/daemon/dist/gateway/adapters.js +2 -0
  99. package/apps/daemon/dist/gateway/feishu.d.ts +65 -0
  100. package/apps/daemon/dist/gateway/feishu.js +493 -0
  101. package/apps/daemon/dist/gateway/format.d.ts +2 -0
  102. package/apps/daemon/dist/gateway/format.js +19 -0
  103. package/apps/daemon/dist/gateway/handler.d.ts +7 -0
  104. package/apps/daemon/dist/gateway/handler.js +162 -0
  105. package/apps/daemon/dist/gateway/runtime.d.ts +33 -0
  106. package/apps/daemon/dist/gateway/runtime.js +850 -0
  107. package/apps/daemon/dist/gateway/store.d.ts +92 -0
  108. package/apps/daemon/dist/gateway/store.js +268 -0
  109. package/apps/daemon/dist/loop/runner.js +95 -101
  110. package/apps/daemon/dist/loop/store.js +8 -16
  111. package/apps/daemon/dist/memory/handler.d.ts +7 -0
  112. package/apps/daemon/dist/memory/handler.js +127 -0
  113. package/apps/daemon/dist/memory/manager.d.ts +44 -0
  114. package/apps/daemon/dist/memory/manager.js +359 -0
  115. package/apps/daemon/dist/memory/settings.d.ts +11 -0
  116. package/apps/daemon/dist/memory/settings.js +56 -0
  117. package/apps/daemon/dist/orchestration/crew-queue.d.ts +28 -0
  118. package/apps/daemon/dist/orchestration/crew-queue.js +865 -0
  119. package/apps/daemon/dist/orchestration/handler.d.ts +35 -0
  120. package/apps/daemon/dist/orchestration/handler.js +1517 -0
  121. package/apps/daemon/dist/orchestration/queue-state.d.ts +49 -0
  122. package/apps/daemon/dist/orchestration/queue-state.js +172 -0
  123. package/apps/daemon/dist/orchestration/runner.d.ts +2 -0
  124. package/apps/daemon/dist/orchestration/runner.js +449 -0
  125. package/apps/daemon/dist/orchestration/store-file.d.ts +3 -0
  126. package/apps/daemon/dist/orchestration/store-file.js +20 -0
  127. package/apps/daemon/dist/orchestration/store.d.ts +286 -0
  128. package/apps/daemon/dist/orchestration/store.js +1541 -0
  129. package/apps/daemon/dist/orchestration/wake-identity.d.ts +13 -0
  130. package/apps/daemon/dist/orchestration/wake-identity.js +20 -0
  131. package/apps/daemon/dist/orchestration/watcher.d.ts +22 -0
  132. package/apps/daemon/dist/orchestration/watcher.js +302 -0
  133. package/apps/daemon/dist/pair.js +2 -1
  134. package/apps/daemon/dist/paths.d.ts +8 -1
  135. package/apps/daemon/dist/paths.js +9 -1
  136. package/apps/daemon/dist/process.d.ts +1 -0
  137. package/apps/daemon/dist/process.js +12 -4
  138. package/apps/daemon/dist/relay/admission.d.ts +44 -0
  139. package/apps/daemon/dist/relay/admission.js +238 -0
  140. package/apps/daemon/dist/relay/connection.d.ts +2 -0
  141. package/apps/daemon/dist/relay/connection.js +569 -18
  142. package/apps/daemon/dist/relay/devtools.js +84 -12
  143. package/apps/daemon/dist/relay/inbound-prompt.d.ts +14 -0
  144. package/apps/daemon/dist/relay/inbound-prompt.js +151 -0
  145. package/apps/daemon/dist/relay/prompt-admission-store.d.ts +49 -0
  146. package/apps/daemon/dist/relay/prompt-admission-store.js +352 -0
  147. package/apps/daemon/dist/relay/register.js +68 -27
  148. package/apps/daemon/dist/relay/remote-command.d.ts +22 -0
  149. package/apps/daemon/dist/relay/remote-command.js +155 -0
  150. package/apps/daemon/dist/relay/send.d.ts +11 -2
  151. package/apps/daemon/dist/relay/send.js +787 -28
  152. package/apps/daemon/dist/relay-http.js +1 -0
  153. package/apps/daemon/dist/runtime/headless-binding.d.ts +13 -0
  154. package/apps/daemon/dist/runtime/headless-binding.js +32 -0
  155. package/apps/daemon/dist/runtime/headless-event-projector.d.ts +44 -0
  156. package/apps/daemon/dist/runtime/headless-event-projector.js +1107 -0
  157. package/apps/daemon/dist/runtime/headless-history-reader.d.ts +13 -0
  158. package/apps/daemon/dist/runtime/headless-history-reader.js +113 -0
  159. package/apps/daemon/dist/runtime/headless-manager.d.ts +60 -0
  160. package/apps/daemon/dist/runtime/headless-manager.js +305 -0
  161. package/apps/daemon/dist/runtime/headless-official-tool-bridge.d.ts +4 -0
  162. package/apps/daemon/dist/runtime/headless-official-tool-bridge.js +95 -0
  163. package/apps/daemon/dist/runtime/headless-server-request.d.ts +17 -0
  164. package/apps/daemon/dist/runtime/headless-server-request.js +32 -0
  165. package/apps/daemon/dist/runtime/headless-session-context.d.ts +11 -0
  166. package/apps/daemon/dist/runtime/headless-session-context.js +41 -0
  167. package/apps/daemon/dist/runtime/headless-session-history.d.ts +13 -0
  168. package/apps/daemon/dist/runtime/headless-session-history.js +526 -0
  169. package/apps/daemon/dist/runtime/headless-session-primitives.d.ts +33 -0
  170. package/apps/daemon/dist/runtime/headless-session-primitives.js +64 -0
  171. package/apps/daemon/dist/runtime/headless-turn-inspector.d.ts +8 -0
  172. package/apps/daemon/dist/runtime/headless-turn-inspector.js +116 -0
  173. package/apps/daemon/dist/runtime/headless-turn-runner.d.ts +29 -0
  174. package/apps/daemon/dist/runtime/headless-turn-runner.js +388 -0
  175. package/apps/daemon/dist/runtime.d.ts +10 -5
  176. package/apps/daemon/dist/runtime.js +85 -61
  177. package/apps/daemon/dist/schedule/handler.d.ts +9 -0
  178. package/apps/daemon/dist/schedule/handler.js +159 -0
  179. package/apps/daemon/dist/schedule/runner.d.ts +21 -0
  180. package/apps/daemon/dist/schedule/runner.js +547 -0
  181. package/apps/daemon/dist/schedule/store.d.ts +9 -0
  182. package/apps/daemon/dist/schedule/store.js +143 -0
  183. package/apps/daemon/dist/session/create-session.js +8 -1
  184. package/apps/daemon/dist/session/directory.d.ts +1 -6
  185. package/apps/daemon/dist/session/directory.js +48 -106
  186. package/apps/daemon/dist/session/events.d.ts +8 -2
  187. package/apps/daemon/dist/session/events.js +145 -39
  188. package/apps/daemon/dist/session/file-preview.js +7 -3
  189. package/apps/daemon/dist/session/he-official/approval.d.ts +12 -0
  190. package/apps/daemon/dist/session/he-official/approval.js +52 -0
  191. package/apps/daemon/dist/session/he-official/artifact-commands.d.ts +6 -0
  192. package/apps/daemon/dist/session/he-official/artifact-commands.js +295 -0
  193. package/apps/daemon/dist/session/he-official/common.d.ts +429 -0
  194. package/apps/daemon/dist/session/he-official/common.js +326 -0
  195. package/apps/daemon/dist/session/he-official/delegate-commands.d.ts +5 -0
  196. package/apps/daemon/dist/session/he-official/delegate-commands.js +424 -0
  197. package/apps/daemon/dist/session/he-official/options.d.ts +4 -0
  198. package/apps/daemon/dist/session/he-official/options.js +72 -0
  199. package/apps/daemon/dist/session/he-official/orchestration-commands.d.ts +75 -0
  200. package/apps/daemon/dist/session/he-official/orchestration-commands.js +428 -0
  201. package/apps/daemon/dist/session/he-official/result.d.ts +34 -0
  202. package/apps/daemon/dist/session/he-official/result.js +292 -0
  203. package/apps/daemon/dist/session/he-official/session-commands.d.ts +20 -0
  204. package/apps/daemon/dist/session/he-official/session-commands.js +323 -0
  205. package/apps/daemon/dist/session/he-official/trace.d.ts +65 -0
  206. package/apps/daemon/dist/session/he-official/trace.js +210 -0
  207. package/apps/daemon/dist/session/he-official/turn-commands.d.ts +40 -0
  208. package/apps/daemon/dist/session/he-official/turn-commands.js +390 -0
  209. package/apps/daemon/dist/session/he-official-tools.d.ts +6 -0
  210. package/apps/daemon/dist/session/he-official-tools.js +102 -0
  211. package/apps/daemon/dist/session/history-backfill.d.ts +45 -0
  212. package/apps/daemon/dist/session/history-backfill.js +139 -0
  213. package/apps/daemon/dist/session/lifecycle.d.ts +9 -16
  214. package/apps/daemon/dist/session/lifecycle.js +777 -390
  215. package/apps/daemon/dist/session/metadata.d.ts +3 -2
  216. package/apps/daemon/dist/session/metadata.js +120 -11
  217. package/apps/daemon/dist/session/native-history-refresh.d.ts +25 -0
  218. package/apps/daemon/dist/session/native-history-refresh.js +268 -0
  219. package/apps/daemon/dist/session/native-identity.d.ts +21 -0
  220. package/apps/daemon/dist/session/native-identity.js +48 -0
  221. package/apps/daemon/dist/session/primitives.js +83 -68
  222. package/apps/daemon/dist/session/prompt.d.ts +43 -2
  223. package/apps/daemon/dist/session/prompt.js +1181 -162
  224. package/apps/daemon/dist/session/reconcile.d.ts +3 -0
  225. package/apps/daemon/dist/session/reconcile.js +236 -0
  226. package/apps/daemon/dist/session/runtime-read.d.ts +7 -0
  227. package/apps/daemon/dist/session/runtime-read.js +23 -0
  228. package/apps/daemon/dist/session/runtime-truth.d.ts +26 -0
  229. package/apps/daemon/dist/session/runtime-truth.js +459 -0
  230. package/apps/daemon/dist/session/sidechat.d.ts +11 -0
  231. package/apps/daemon/dist/session/sidechat.js +236 -0
  232. package/apps/daemon/dist/session/store.d.ts +21 -0
  233. package/apps/daemon/dist/session/store.js +245 -0
  234. package/apps/daemon/dist/start.js +46 -41
  235. package/apps/daemon/dist/state.d.ts +25 -6
  236. package/apps/daemon/dist/state.js +64 -0
  237. package/apps/daemon/dist/turn-coordinator.d.ts +1 -0
  238. package/apps/daemon/dist/turn-coordinator.js +5 -0
  239. package/apps/daemon/dist/types.d.ts +111 -23
  240. package/apps/daemon/dist/types.js +1 -0
  241. package/apps/daemon/dist/utils.js +1 -0
  242. package/apps/daemon/package.json +1 -1
  243. package/apps/relay/dist/auth.js +7 -5
  244. package/apps/relay/dist/control-plane-store.d.ts +229 -0
  245. package/apps/relay/dist/control-plane-store.js +263 -0
  246. package/apps/relay/dist/db.d.ts +1 -2
  247. package/apps/relay/dist/db.js +57 -317
  248. package/apps/relay/dist/direct-ticket-grants.d.ts +1 -0
  249. package/apps/relay/dist/direct-ticket-grants.js +16 -0
  250. package/apps/relay/dist/errors.d.ts +2 -1
  251. package/apps/relay/dist/errors.js +4 -1
  252. package/apps/relay/dist/http-routes.js +215 -505
  253. package/apps/relay/dist/http-schemas.d.ts +58 -56
  254. package/apps/relay/dist/http-schemas.js +50 -47
  255. package/apps/relay/dist/index.js +89 -25
  256. package/apps/relay/dist/packet-store.d.ts +73 -0
  257. package/apps/relay/dist/packet-store.js +272 -0
  258. package/apps/relay/dist/relay-context.d.ts +268 -143
  259. package/apps/relay/dist/relay-context.js +525 -737
  260. package/apps/relay/dist/relay-migration.d.ts +49 -0
  261. package/apps/relay/dist/relay-migration.js +230 -0
  262. package/apps/relay/dist/retention.d.ts +10 -0
  263. package/apps/relay/dist/retention.js +22 -2
  264. package/apps/relay/dist/security.js +1 -0
  265. package/apps/relay/dist/storage-worker.d.ts +137 -0
  266. package/apps/relay/dist/storage-worker.js +490 -0
  267. package/apps/relay/dist/types.d.ts +36 -91
  268. package/apps/relay/dist/types.js +1 -0
  269. package/apps/relay/dist/websocket.d.ts +29 -0
  270. package/apps/relay/dist/websocket.js +867 -130
  271. package/package.json +15 -28
  272. package/packages/agent-sdk/dist/index.d.ts +8 -124
  273. package/packages/agent-sdk/dist/index.js +13 -198
  274. package/packages/client/dist/account.d.ts +20 -2
  275. package/packages/client/dist/account.js +169 -3
  276. package/packages/client/dist/client.d.ts +83 -12
  277. package/packages/client/dist/client.js +880 -146
  278. package/packages/client/dist/command-contracts.d.ts +6 -0
  279. package/packages/client/dist/command-contracts.js +22 -0
  280. package/packages/client/dist/direct.d.ts +12 -0
  281. package/packages/client/dist/direct.js +427 -0
  282. package/packages/client/dist/errors.d.ts +1 -0
  283. package/packages/client/dist/errors.js +1 -0
  284. package/packages/client/dist/http.d.ts +1 -1
  285. package/packages/client/dist/http.js +4 -15
  286. package/packages/client/dist/index.d.ts +2 -4
  287. package/packages/client/dist/index.js +1 -2
  288. package/packages/client/dist/parsers.d.ts +28 -1
  289. package/packages/client/dist/parsers.js +179 -19
  290. package/packages/client/dist/product-materializer.d.ts +39 -0
  291. package/packages/client/dist/product-materializer.js +492 -0
  292. package/packages/client/dist/transport.d.ts +57 -4
  293. package/packages/client/dist/transport.js +458 -185
  294. package/packages/client/dist/types.d.ts +387 -21
  295. package/packages/client/dist/types.js +1 -0
  296. package/packages/client/dist/validation.d.ts +1 -2
  297. package/packages/client/dist/validation.js +1 -20
  298. package/packages/client/dist/workspace-shared-config.d.ts +23 -0
  299. package/packages/client/dist/workspace-shared-config.js +492 -0
  300. package/packages/headless-runtime/dist/claude-provider.d.ts +20 -0
  301. package/packages/headless-runtime/dist/claude-provider.js +1313 -0
  302. package/packages/{runtime-cli → headless-runtime}/dist/claude-session-store.d.ts +2 -1
  303. package/packages/{runtime-cli → headless-runtime}/dist/claude-session-store.js +34 -12
  304. package/packages/headless-runtime/dist/cli.d.ts +3 -0
  305. package/packages/headless-runtime/dist/cli.js +1243 -0
  306. package/packages/headless-runtime/dist/client.d.ts +78 -0
  307. package/packages/headless-runtime/dist/client.js +493 -0
  308. package/packages/headless-runtime/dist/codex-provider.d.ts +9 -0
  309. package/packages/headless-runtime/dist/codex-provider.js +1825 -0
  310. package/packages/headless-runtime/dist/core.d.ts +373 -0
  311. package/packages/headless-runtime/dist/core.js +3653 -0
  312. package/packages/headless-runtime/dist/event-log.d.ts +11 -0
  313. package/packages/headless-runtime/dist/event-log.js +257 -0
  314. package/packages/headless-runtime/dist/history-index.d.ts +28 -0
  315. package/packages/headless-runtime/dist/history-index.js +72 -0
  316. package/packages/headless-runtime/dist/host-tools.d.ts +21 -0
  317. package/packages/headless-runtime/dist/host-tools.js +252 -0
  318. package/packages/headless-runtime/dist/host.d.ts +63 -0
  319. package/packages/headless-runtime/dist/host.js +451 -0
  320. package/packages/headless-runtime/dist/index.d.ts +45 -0
  321. package/packages/headless-runtime/dist/index.js +528 -0
  322. package/packages/headless-runtime/dist/ipc.d.ts +4 -0
  323. package/packages/headless-runtime/dist/ipc.js +28 -0
  324. package/packages/headless-runtime/dist/mock-scenario.d.ts +7 -0
  325. package/packages/headless-runtime/dist/mock-scenario.js +65 -0
  326. package/packages/headless-runtime/dist/model-catalog.d.ts +21 -0
  327. package/packages/headless-runtime/dist/model-catalog.js +271 -0
  328. package/packages/headless-runtime/dist/provider-command.d.ts +10 -0
  329. package/packages/headless-runtime/dist/provider-command.js +432 -0
  330. package/packages/headless-runtime/dist/provider-turn-metadata.d.ts +9 -0
  331. package/packages/headless-runtime/dist/provider-turn-metadata.js +76 -0
  332. package/packages/headless-runtime/dist/public-response.d.ts +9 -0
  333. package/packages/headless-runtime/dist/public-response.js +112 -0
  334. package/packages/headless-runtime/dist/runtime-projection-store.d.ts +50 -0
  335. package/packages/headless-runtime/dist/runtime-projection-store.js +349 -0
  336. package/packages/headless-runtime/dist/trace-log.d.ts +31 -0
  337. package/packages/headless-runtime/dist/trace-log.js +106 -0
  338. package/packages/pie-provider/dist/index.d.ts +1 -0
  339. package/packages/pie-provider/dist/index.js +927 -740
  340. package/packages/runtime/dist/headless.d.ts +648 -0
  341. package/packages/runtime/dist/headless.js +3 -0
  342. package/packages/runtime/dist/index.d.ts +246 -104
  343. package/packages/runtime/dist/index.js +1 -0
  344. package/packages/shared/dist/args.d.ts +2 -0
  345. package/packages/shared/dist/args.js +9 -2
  346. package/packages/shared/dist/crypto.d.ts +2 -0
  347. package/packages/shared/dist/crypto.js +6 -0
  348. package/packages/shared/dist/diagnostics.d.ts +31 -0
  349. package/packages/shared/dist/diagnostics.js +81 -0
  350. package/packages/shared/dist/file-lock.d.ts +29 -0
  351. package/packages/shared/dist/file-lock.js +301 -0
  352. package/packages/shared/dist/he-official-tools.d.ts +78 -0
  353. package/packages/shared/dist/he-official-tools.js +737 -0
  354. package/packages/shared/dist/ids.d.ts +1 -0
  355. package/packages/shared/dist/ids.js +1 -0
  356. package/packages/shared/dist/index.d.ts +8 -0
  357. package/packages/shared/dist/index.js +8 -0
  358. package/packages/shared/dist/orchestration-routing.d.ts +10 -0
  359. package/packages/shared/dist/orchestration-routing.js +113 -0
  360. package/packages/shared/dist/packet-relay.d.ts +228 -0
  361. package/packages/shared/dist/packet-relay.js +123 -0
  362. package/packages/shared/dist/protocol-schemas.d.ts +2935 -40
  363. package/packages/shared/dist/protocol-schemas.js +884 -1
  364. package/packages/shared/dist/protocol-types.d.ts +899 -3
  365. package/packages/shared/dist/protocol-types.js +1 -0
  366. package/packages/shared/dist/protocol.d.ts +747 -23
  367. package/packages/shared/dist/protocol.js +834 -26
  368. package/packages/shared/dist/relay-scope.d.ts +32 -0
  369. package/packages/shared/dist/relay-scope.js +23 -0
  370. package/packages/shared/dist/session-name.d.ts +1 -0
  371. package/packages/shared/dist/session-name.js +1 -0
  372. package/packages/shared/dist/session-state.d.ts +2 -1
  373. package/packages/shared/dist/session-state.js +1 -0
  374. package/packages/shared/dist/session-tags.d.ts +12 -0
  375. package/packages/shared/dist/session-tags.js +50 -0
  376. package/apps/cli/dist/commands/lib/orchestrator.d.ts +0 -30
  377. package/apps/cli/dist/commands/lib/orchestrator.js +0 -146
  378. package/apps/cli/dist/commands/orchestrator.d.ts +0 -2
  379. package/apps/cli/dist/commands/orchestrator.js +0 -411
  380. package/apps/cli/dist/commands/skill.d.ts +0 -2
  381. package/apps/cli/dist/commands/skill.js +0 -214
  382. package/apps/daemon/dist/runtime/external-provider.d.ts +0 -20
  383. package/apps/daemon/dist/runtime/external-provider.js +0 -910
  384. package/apps/daemon/dist/session/runtime-handle.d.ts +0 -7
  385. package/apps/daemon/dist/session/runtime-handle.js +0 -47
  386. package/apps/daemon/dist/session/workspace-paths.d.ts +0 -3
  387. package/apps/daemon/dist/session/workspace-paths.js +0 -30
  388. package/apps/relay/dist/connections.d.ts +0 -29
  389. package/apps/relay/dist/connections.js +0 -10
  390. package/apps/relay/dist/controller-handlers.d.ts +0 -54
  391. package/apps/relay/dist/controller-handlers.js +0 -921
  392. package/apps/relay/dist/event-visibility.d.ts +0 -7
  393. package/apps/relay/dist/event-visibility.js +0 -46
  394. package/apps/relay/dist/machine-command-result-handlers.d.ts +0 -4
  395. package/apps/relay/dist/machine-command-result-handlers.js +0 -532
  396. package/apps/relay/dist/machine-handler-context.d.ts +0 -79
  397. package/apps/relay/dist/machine-handler-context.js +0 -1
  398. package/apps/relay/dist/machine-handlers.d.ts +0 -4
  399. package/apps/relay/dist/machine-handlers.js +0 -20
  400. package/apps/relay/dist/machine-reliability.d.ts +0 -7
  401. package/apps/relay/dist/machine-reliability.js +0 -12
  402. package/apps/relay/dist/projection-repository.d.ts +0 -87
  403. package/apps/relay/dist/projection-repository.js +0 -220
  404. package/apps/relay/dist/projections.d.ts +0 -7
  405. package/apps/relay/dist/projections.js +0 -124
  406. package/apps/relay/dist/repositories.d.ts +0 -13
  407. package/apps/relay/dist/repositories.js +0 -71
  408. package/apps/relay/dist/scope.d.ts +0 -33
  409. package/apps/relay/dist/scope.js +0 -187
  410. package/apps/relay/dist/session-projection-reducer.d.ts +0 -4
  411. package/apps/relay/dist/session-projection-reducer.js +0 -448
  412. package/npm-shrinkwrap.json +0 -1615
  413. package/packages/client/dist/live-session-state.d.ts +0 -15
  414. package/packages/client/dist/live-session-state.js +0 -60
  415. package/packages/client/dist/live-state.d.ts +0 -8
  416. package/packages/client/dist/live-state.js +0 -33
  417. package/packages/client/dist/live-types.d.ts +0 -113
  418. package/packages/client/dist/live-types.js +0 -1
  419. package/packages/client/dist/live.d.ts +0 -85
  420. package/packages/client/dist/live.js +0 -1056
  421. package/packages/client/dist/session-event-order.d.ts +0 -16
  422. package/packages/client/dist/session-event-order.js +0 -83
  423. package/packages/client/dist/session-event-window.d.ts +0 -5
  424. package/packages/client/dist/session-event-window.js +0 -54
  425. package/packages/provider-protocol/dist/index.d.ts +0 -843
  426. package/packages/provider-protocol/dist/index.js +0 -332
  427. package/packages/runtime-acpx/dist/index.d.ts +0 -10
  428. package/packages/runtime-acpx/dist/index.js +0 -111
  429. package/packages/runtime-cli/dist/async-queue.d.ts +0 -9
  430. package/packages/runtime-cli/dist/async-queue.js +0 -31
  431. package/packages/runtime-cli/dist/claude-history.d.ts +0 -6
  432. package/packages/runtime-cli/dist/claude-history.js +0 -343
  433. package/packages/runtime-cli/dist/claude-json.d.ts +0 -28
  434. package/packages/runtime-cli/dist/claude-json.js +0 -28
  435. package/packages/runtime-cli/dist/claude-rename.d.ts +0 -5
  436. package/packages/runtime-cli/dist/claude-rename.js +0 -14
  437. package/packages/runtime-cli/dist/claude-turn.d.ts +0 -12
  438. package/packages/runtime-cli/dist/claude-turn.js +0 -131
  439. package/packages/runtime-cli/dist/codex-app-server.d.ts +0 -69
  440. package/packages/runtime-cli/dist/codex-app-server.js +0 -462
  441. package/packages/runtime-cli/dist/codex-approvals.d.ts +0 -7
  442. package/packages/runtime-cli/dist/codex-approvals.js +0 -32
  443. package/packages/runtime-cli/dist/codex-history.d.ts +0 -16
  444. package/packages/runtime-cli/dist/codex-history.js +0 -710
  445. package/packages/runtime-cli/dist/codex-json-rpc.d.ts +0 -29
  446. package/packages/runtime-cli/dist/codex-json-rpc.js +0 -198
  447. package/packages/runtime-cli/dist/codex-lifecycle.d.ts +0 -24
  448. package/packages/runtime-cli/dist/codex-lifecycle.js +0 -71
  449. package/packages/runtime-cli/dist/codex-protocol.d.ts +0 -5
  450. package/packages/runtime-cli/dist/codex-protocol.js +0 -52
  451. package/packages/runtime-cli/dist/command-resolver.d.ts +0 -23
  452. package/packages/runtime-cli/dist/command-resolver.js +0 -100
  453. package/packages/runtime-cli/dist/history-merge.d.ts +0 -17
  454. package/packages/runtime-cli/dist/history-merge.js +0 -286
  455. package/packages/runtime-cli/dist/index.d.ts +0 -10
  456. package/packages/runtime-cli/dist/index.js +0 -257
  457. package/packages/runtime-cli/dist/permissions.d.ts +0 -5
  458. package/packages/runtime-cli/dist/permissions.js +0 -21
  459. package/packages/runtime-cli/dist/session-store.d.ts +0 -32
  460. package/packages/runtime-cli/dist/session-store.js +0 -91
package/README.md CHANGED
@@ -11,7 +11,5 @@ happy-elves account create --relay https://relay.happyelves.ai --device-name "CL
11
11
  ## Self-host relay
12
12
 
13
13
  ```bash
14
- HAPPY_ELVES_ENV=production \
15
- HAPPY_ELVES_ALLOWED_ORIGINS=https://your-controller.example \
16
14
  happy-elves relay serve --host 0.0.0.0 --port 8787 --json
17
15
  ```
@@ -49,3 +49,4 @@ export async function handleAccount({ domain, action, flags }) {
49
49
  }
50
50
  return false;
51
51
  }
52
+ //# sourceMappingURL=account.js.map
@@ -4,15 +4,22 @@ import { handleAccount } from "./account.js";
4
4
  import { handleCollect } from "./collect.js";
5
5
  import { handleConfig } from "./config.js";
6
6
  import { handleDaemon } from "./daemon.js";
7
+ import { handleDispatch } from "./dispatch.js";
8
+ import { handleArtifact } from "./artifact.js";
9
+ import { handleGateway } from "./gateway.js";
7
10
  import { handleLoop } from "./loop.js";
8
11
  import { handleMachine } from "./machine.js";
9
- import { handleOrchestrator } from "./orchestrator.js";
12
+ import { handleMemory } from "./memory.js";
13
+ import { handleQueue } from "./queue.js";
10
14
  import { handleRelay } from "./relay.js";
15
+ import { handleRelease } from "./release.js";
16
+ import { handleSchedule } from "./schedule.js";
11
17
  import { handleRemote } from "./remote.js";
12
18
  import { handleSession } from "./session.js";
13
- import { handleSkill } from "./skill.js";
19
+ import { handleSidechat } from "./sidechat.js";
14
20
  import { handleToken } from "./token.js";
15
21
  import { handleTurn } from "./turn.js";
22
+ import { handleWorkspace } from "./workspace.js";
16
23
  import { commandUsage, commandUsageText, handleCliError, parseCliFlags, skillText, startBootstrap, topLevelDoctor, topLevelStatus, usage, usageText } from "./lib/index.js";
17
24
  export { handleCliError };
18
25
  const domainHandlers = [
@@ -20,14 +27,21 @@ const domainHandlers = [
20
27
  handleConfig,
21
28
  handleRemote,
22
29
  handleToken,
30
+ handleGateway,
23
31
  handleLoop,
32
+ handleDispatch,
33
+ handleQueue,
34
+ handleArtifact,
35
+ handleSidechat,
24
36
  handleDaemon,
25
37
  handleRelay,
38
+ handleRelease,
26
39
  handleMachine,
27
- handleOrchestrator,
40
+ handleMemory,
41
+ handleSchedule,
28
42
  handleSession,
29
- handleSkill,
30
43
  handleTurn,
44
+ handleWorkspace,
31
45
  handleCollect,
32
46
  ];
33
47
  export async function main() {
@@ -35,7 +49,7 @@ export async function main() {
35
49
  const [domain] = argv;
36
50
  if (!domain)
37
51
  usage();
38
- if (domain === "--skill") {
52
+ if (domain === "--skill" || domain === "skill") {
39
53
  console.log(skillText());
40
54
  return;
41
55
  }
@@ -101,3 +115,4 @@ function cliVersion() {
101
115
  }
102
116
  return "0.1.0";
103
117
  }
118
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1,2 @@
1
+ import type { CommandInput } from "./command.js";
2
+ export declare function handleArtifact({ domain, action, positional, flags }: CommandInput): Promise<boolean>;
@@ -0,0 +1,97 @@
1
+ import { CliError, ControllerClient, ok, readConfig, requirePositional, requireString, wantsJson, } from "./lib/index.js";
2
+ export async function handleArtifact({ domain, action, positional, flags }) {
3
+ if (domain !== "artifact")
4
+ return false;
5
+ const config = await readConfig(flags);
6
+ const client = new ControllerClient(config);
7
+ if (action === "register") {
8
+ const machineId = requireString(flags, "machine");
9
+ const consumerSessionId = requireString(flags, "consumer-session");
10
+ const file = requireString(flags, "file");
11
+ const publish = typeof flags.publish === "string" ? flags.publish : undefined;
12
+ if (publish !== undefined && publish !== "relay") {
13
+ throw new CliError(`Unsupported --publish value: ${publish}`, "INVALID_ARGUMENT");
14
+ }
15
+ const result = await client.artifactRegister({
16
+ machineId,
17
+ consumerSessionId,
18
+ file,
19
+ ...(typeof flags["artifact-id"] === "string" ? { artifactId: flags["artifact-id"] } : {}),
20
+ ...(typeof flags["task-id"] === "string" ? { taskId: flags["task-id"] } : {}),
21
+ ...(typeof flags["crew-session"] === "string" ? { crewSessionId: flags["crew-session"] } : {}),
22
+ ...(typeof flags["turn-id"] === "string" ? { turnId: flags["turn-id"] } : {}),
23
+ ...(typeof flags.title === "string" ? { title: flags.title } : {}),
24
+ ...(typeof flags["request-id"] === "string" ? { requestId: flags["request-id"] } : {}),
25
+ ...(publish === "relay" ? { publish: "relay" } : {}),
26
+ });
27
+ if (!wantsJson(flags)) {
28
+ console.log(`${result.artifactId} rev:${result.revision} ${result.admission}/${result.publishState} ${result.url}`);
29
+ if (result.publishState === "failed")
30
+ process.exitCode = 1;
31
+ return true;
32
+ }
33
+ ok("artifact.register", result, { requestId: result.requestId, machineId }, result.publishState !== "failed");
34
+ if (result.publishState === "failed")
35
+ process.exitCode = 1;
36
+ return true;
37
+ }
38
+ if (action === "list") {
39
+ const machineId = requireString(flags, "machine");
40
+ const result = await client.artifactList({
41
+ machineId,
42
+ ...(typeof flags["consumer-session"] === "string" ? { consumerSessionId: flags["consumer-session"] } : {}),
43
+ ...(typeof flags["task-id"] === "string" ? { taskId: flags["task-id"] } : {}),
44
+ ...(typeof flags["request-id"] === "string" ? { requestId: flags["request-id"] } : {}),
45
+ });
46
+ if (!wantsJson(flags)) {
47
+ if (result.records.length === 0)
48
+ console.log("No artifacts.");
49
+ else
50
+ for (const record of result.records) {
51
+ console.log(`${record.artifactId} rev:${record.revision} ${record.publishState} consumer:${record.consumerSessionId} task:${record.taskId ?? "-"}`);
52
+ }
53
+ return true;
54
+ }
55
+ ok("artifact.list", result, { requestId: result.requestId, machineId });
56
+ return true;
57
+ }
58
+ if (action === "status") {
59
+ const machineId = requireString(flags, "machine");
60
+ const artifactId = requirePositional(positional[0], "artifactId");
61
+ const result = await client.artifactStatus({
62
+ machineId,
63
+ artifactId,
64
+ ...(typeof flags["request-id"] === "string" ? { requestId: flags["request-id"] } : {}),
65
+ });
66
+ if (!wantsJson(flags)) {
67
+ const artifact = result.artifact;
68
+ console.log(artifact ? `${artifact.artifactId} rev:${artifact.revision} ${artifact.publishState} feedback:${artifact.feedbackCursor ?? "-"}` : "Artifact not found.");
69
+ return true;
70
+ }
71
+ ok("artifact.status", result, { requestId: result.requestId, machineId });
72
+ return true;
73
+ }
74
+ if (action === "feedback" && positional[0] === "list") {
75
+ const machineId = requireString(flags, "machine");
76
+ const artifactId = requirePositional(positional[1], "artifactId");
77
+ const result = await client.artifactFeedbackList({
78
+ machineId,
79
+ artifactId,
80
+ ...(typeof flags.after === "string" ? { after: flags.after } : {}),
81
+ ...(typeof flags["request-id"] === "string" ? { requestId: flags["request-id"] } : {}),
82
+ });
83
+ if (!wantsJson(flags)) {
84
+ if (result.records.length === 0)
85
+ console.log("No feedback.");
86
+ else
87
+ for (const record of result.records) {
88
+ console.log(`${record.feedbackCursor} ${record.kind} rev:${record.revision} ${record.prompt}`);
89
+ }
90
+ return true;
91
+ }
92
+ ok("artifact.feedback.list", result, { requestId: result.requestId, machineId });
93
+ return true;
94
+ }
95
+ return false;
96
+ }
97
+ //# sourceMappingURL=artifact.js.map
@@ -28,3 +28,4 @@ export async function handleCollect({ domain, action, flags }) {
28
28
  }
29
29
  return true;
30
30
  }
31
+ //# sourceMappingURL=collect.js.map
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=command.js.map
@@ -1,4 +1,4 @@
1
- import { configPath, ok, readConfig, redactedControllerConfig, redactedRelayUrl, requireRelayUrl, requireString, wantsJson, writeConfig } from "./lib/index.js";
1
+ import { configPath, ok, readConfig, redactedControllerConfig, requireRelayUrl, requireString, wantsJson, writeConfig } from "./lib/index.js";
2
2
  export async function handleConfig({ domain, action, flags }) {
3
3
  if (domain === "config" && action === "init") {
4
4
  const config = {
@@ -7,7 +7,7 @@ export async function handleConfig({ domain, action, flags }) {
7
7
  accountSecret: requireString(flags, "secret"),
8
8
  };
9
9
  await writeConfig(config);
10
- ok("config.init", { path: configPath, relayUrl: redactedRelayUrl(config.relayUrl) });
10
+ ok("config.init", { path: configPath, relayUrl: config.relayUrl });
11
11
  return true;
12
12
  }
13
13
  if (domain === "config" && action === "show") {
@@ -28,3 +28,4 @@ export async function handleConfig({ domain, action, flags }) {
28
28
  }
29
29
  return false;
30
30
  }
31
+ //# sourceMappingURL=config.js.map
@@ -1,6 +1,6 @@
1
1
  import os from "node:os";
2
2
  import path from "node:path";
3
- import { CliError, compactText, ControllerClient, configDir, configPath, daemonPidPath, deriveOrchestration, idleSessionStatuses, localDaemonStatus, ok, parsePairingClaimResponse, randomId, readConfig, readDaemonConfig, readLocalAuditLog, readRelayJson, redactedDaemonConfig, requirePositional, requireRelayUrl, requireString, showMachine, spawnDaemonStart, stopLocalDaemon, throwRelayHttpError, wantsJson, writeDaemonConfig } from "./lib/index.js";
3
+ import { CliError, compactText, ControllerClient, configDir, configPath, deriveOrchestration, ensureDaemonRunning, idleSessionStatuses, localDaemonStatus, ok, parsePairingClaimResponse, randomId, readConfig, readDaemonConfig, readLocalAuditLog, readRelayJson, redactedDaemonConfig, requirePositional, requireRelayUrl, requireString, restartDaemonForNewConfig, showMachine, stopLocalDaemon, throwRelayHttpError, waitForMachineProjection, wantsJson, writeDaemonConfig } from "./lib/index.js";
4
4
  export async function handleDaemon({ domain, action, flags }) {
5
5
  if (domain === "daemon" && action === "pair") {
6
6
  const relayUrl = requireRelayUrl(flags);
@@ -25,11 +25,87 @@ export async function handleDaemon({ domain, action, flags }) {
25
25
  machineToken: claimed.machineToken,
26
26
  accountSecret,
27
27
  };
28
+ const localBefore = await localDaemonStatus();
28
29
  const daemonConfigPath = await writeDaemonConfig(daemonConfig);
29
- ok("daemon.pair", {
30
+ let daemonStart = { skipped: true, reason: "not requested" };
31
+ let projection = { checked: false, reason: "not checked" };
32
+ let startError;
33
+ if (flags["no-start"] === true) {
34
+ daemonStart = { skipped: true, reason: "--no-start" };
35
+ projection = { checked: false, reason: "--no-start" };
36
+ }
37
+ else {
38
+ try {
39
+ const startResult = localBefore.running
40
+ ? await restartDaemonForNewConfig(relayUrl)
41
+ : await ensureDaemonRunning(relayUrl);
42
+ daemonStart = {
43
+ skipped: false,
44
+ restarted: localBefore.running,
45
+ local: startResult.local,
46
+ started: startResult.started,
47
+ ...(startResult.startedPid ? { startedPid: startResult.startedPid } : {}),
48
+ ...("stopped" in startResult ? { stop: startResult.stopped } : {}),
49
+ };
50
+ try {
51
+ const controllerConfig = await readConfig({ relay: relayUrl });
52
+ const machine = await waitForMachineProjection(new ControllerClient(controllerConfig), claimed.machineId, 10_000);
53
+ projection = {
54
+ checked: true,
55
+ online: machine?.online === true,
56
+ machineId: claimed.machineId,
57
+ ...(machine?.lastSeen ? { lastSeen: machine.lastSeen } : {}),
58
+ };
59
+ }
60
+ catch (error) {
61
+ projection = {
62
+ checked: false,
63
+ reason: error instanceof Error ? error.message : String(error),
64
+ };
65
+ }
66
+ }
67
+ catch (error) {
68
+ const code = error instanceof CliError ? error.code : "DAEMON_START_FAILED";
69
+ startError = { code, message: error instanceof Error ? error.message : String(error) };
70
+ process.exitCode = 1;
71
+ daemonStart = { skipped: true, reason: "start failed" };
72
+ projection = { checked: false, reason: "daemon did not start" };
73
+ }
74
+ }
75
+ const data = {
30
76
  path: daemonConfigPath,
31
77
  config: redactedDaemonConfig(daemonConfig),
32
- });
78
+ daemon: daemonStart,
79
+ projection,
80
+ ...(startError ? { error: startError } : {}),
81
+ };
82
+ const commandOk = !startError && !(projection.checked && !projection.online);
83
+ if (!commandOk)
84
+ process.exitCode = 1;
85
+ if (!wantsJson(flags)) {
86
+ console.log(`Paired ${machineName} with ${relayUrl}`);
87
+ console.log(`Config: ${daemonConfigPath}`);
88
+ if (startError) {
89
+ console.error(`Daemon start failed: ${startError.message}`);
90
+ }
91
+ else if (daemonStart.skipped) {
92
+ console.log(`Daemon start: skipped (${daemonStart.reason})`);
93
+ }
94
+ else {
95
+ console.log(`${daemonStart.restarted ? "Restarted" : "Started"} daemon${daemonStart.startedPid ? ` pid ${daemonStart.startedPid}` : ""}`);
96
+ }
97
+ if (projection.checked) {
98
+ console.log(`Relay projection: ${projection.online ? "online" : "offline"} (${projection.machineId})`);
99
+ if (!projection.online) {
100
+ console.log("If this stays offline, run happy-elves daemon logs --tail 100 and happy-elves daemon status --local.");
101
+ }
102
+ }
103
+ else {
104
+ console.log(`Relay projection: not checked (${projection.reason})`);
105
+ }
106
+ return true;
107
+ }
108
+ ok("daemon.pair", data, { machineId: claimed.machineId }, commandOk);
33
109
  return true;
34
110
  }
35
111
  if (domain === "daemon" && action === "doctor") {
@@ -57,9 +133,13 @@ export async function handleDaemon({ domain, action, flags }) {
57
133
  for (const check of checks) {
58
134
  console.log(`${check.ok ? "ok" : "fail"} ${check.name}: ${check.message}`);
59
135
  }
136
+ if (!data.ok)
137
+ process.exitCode = 1;
60
138
  return true;
61
139
  }
62
- ok("daemon.doctor", data);
140
+ if (!data.ok)
141
+ process.exitCode = 1;
142
+ ok("daemon.doctor", data, {}, data.ok);
63
143
  return true;
64
144
  }
65
145
  if (domain === "daemon" && action === "config") {
@@ -114,13 +194,21 @@ export async function handleDaemon({ domain, action, flags }) {
114
194
  if (domain === "daemon" && action === "start") {
115
195
  const status = await localDaemonStatus();
116
196
  if (status.running) {
197
+ const existingConfig = await readDaemonConfig();
198
+ if (typeof flags.relay === "string")
199
+ existingConfig.relayUrl = requireRelayUrl(flags);
200
+ const restarted = await ensureDaemonRunning(existingConfig.relayUrl);
201
+ if (restarted.started) {
202
+ ok("daemon.start", { ...restarted.local, started: true, startedPid: restarted.startedPid, restartedForChangedConfig: true });
203
+ return true;
204
+ }
117
205
  ok("daemon.start", { ...status, started: false });
118
206
  return true;
119
207
  }
120
- await readDaemonConfig();
121
- const startArgs = typeof flags.relay === "string" ? ["--relay", flags.relay] : [];
122
- const pid = spawnDaemonStart(startArgs);
123
- ok("daemon.start", { pid, pidPath: daemonPidPath, started: true });
208
+ const daemonConfig = await readDaemonConfig();
209
+ const relayUrl = typeof flags.relay === "string" ? requireRelayUrl(flags) : daemonConfig.relayUrl;
210
+ const started = await ensureDaemonRunning(relayUrl);
211
+ ok("daemon.start", { ...started.local, started: started.started, startedPid: started.startedPid, startupLogPath: path.join(configDir, "daemon.startup.log") });
124
212
  return true;
125
213
  }
126
214
  if (domain === "daemon" && action === "stop") {
@@ -128,11 +216,10 @@ export async function handleDaemon({ domain, action, flags }) {
128
216
  return true;
129
217
  }
130
218
  if (domain === "daemon" && action === "restart") {
131
- await readDaemonConfig();
132
- const stop = await stopLocalDaemon();
133
- const startArgs = typeof flags.relay === "string" ? ["--relay", flags.relay] : [];
134
- const pid = spawnDaemonStart(startArgs);
135
- ok("daemon.restart", { stop, startedPid: pid, pidPath: daemonPidPath });
219
+ const daemonConfig = await readDaemonConfig();
220
+ const relayUrl = typeof flags.relay === "string" ? requireRelayUrl(flags) : daemonConfig.relayUrl;
221
+ const restarted = await restartDaemonForNewConfig(relayUrl);
222
+ ok("daemon.restart", { stop: restarted.stopped, ...restarted.local, startedPid: restarted.startedPid, startupLogPath: path.join(configDir, "daemon.startup.log") });
136
223
  return true;
137
224
  }
138
225
  if (domain === "daemon" && action === "status" && flags.local === true) {
@@ -216,3 +303,4 @@ export async function handleDaemon({ domain, action, flags }) {
216
303
  }
217
304
  return false;
218
305
  }
306
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1,2 @@
1
+ import type { CommandInput } from "./command.js";
2
+ export declare function handleDispatch({ domain, action, positional, flags }: CommandInput): Promise<boolean>;
@@ -0,0 +1,130 @@
1
+ import { CliError, ControllerClient, ok, parsePermissionMode, readConfig, readPromptTextFile, requirePositional, requireString, wantsJson, } from "./lib/index.js";
2
+ export async function handleDispatch({ domain, action, positional, flags }) {
3
+ if (domain !== "dispatch")
4
+ return false;
5
+ const config = await readConfig(flags);
6
+ const client = new ControllerClient(config);
7
+ if (action === "run") {
8
+ const machineId = requireString(flags, "machine");
9
+ const consumerSessionId = requireString(flags, "consumer-session");
10
+ const agent = requireString(flags, "agent");
11
+ const cwd = requireString(flags, "cwd");
12
+ const briefFile = requireString(flags, "brief-file");
13
+ const brief = await readPromptTextFile(briefFile);
14
+ if (!brief.trim())
15
+ throw new CliError("--brief-file is empty", "MISSING_ARGUMENT");
16
+ if (typeof flags["crew-session"] === "string" && typeof flags["fork-from-crew"] === "string") {
17
+ throw new CliError("--crew-session and --fork-from-crew are mutually exclusive", "INVALID_ARGUMENT");
18
+ }
19
+ const routeDecision = routeDecisionFromFlags(flags);
20
+ const permissionMode = parsePermissionMode(flags["permission-mode"] ?? flags.permission);
21
+ const result = await client.dispatchRun({
22
+ machineId,
23
+ consumerSessionId,
24
+ agent,
25
+ cwd,
26
+ brief,
27
+ ...(typeof flags["task-id"] === "string" ? { taskId: flags["task-id"] } : {}),
28
+ ...(typeof flags["request-id"] === "string" ? { requestId: flags["request-id"] } : {}),
29
+ ...(typeof flags["crew-session"] === "string" ? { crewSessionId: flags["crew-session"] } : {}),
30
+ ...(typeof flags["fork-from-crew"] === "string" ? { forkFromCrewSessionId: flags["fork-from-crew"] } : {}),
31
+ ...(typeof flags["fork-checkpoint"] === "string" ? { forkCheckpointId: flags["fork-checkpoint"] } : {}),
32
+ ...(routeDecision ? { routeDecision } : {}),
33
+ ...(permissionMode ? { permissionMode } : {}),
34
+ ...(typeof flags.model === "string" ? { model: flags.model } : {}),
35
+ ...(typeof flags["thinking-level"] === "string" ? { thinkingLevel: flags["thinking-level"] } : {}),
36
+ subscribe: flags.subscribe !== false,
37
+ });
38
+ if (!wantsJson(flags)) {
39
+ console.log(`${result.taskId} ${result.admission}/${result.dispatch} owner:${result.consumerMachineId ?? "-"} crewMachine:${result.crewMachineId ?? machineId} crew:${result.crewSessionId ?? "-"} turn:${result.turnId ?? "-"}`);
40
+ return true;
41
+ }
42
+ ok("dispatch.run", result, {
43
+ requestId: result.requestId,
44
+ machineId: result.consumerMachineId ?? machineId,
45
+ consumerMachineId: result.consumerMachineId ?? machineId,
46
+ crewMachineId: result.crewMachineId ?? machineId,
47
+ sessionId: result.crewSessionId,
48
+ turnId: result.turnId,
49
+ }, result.dispatch !== "failed");
50
+ return true;
51
+ }
52
+ if (action === "status") {
53
+ const machineId = requireString(flags, "machine");
54
+ const taskId = requirePositional(positional[0], "taskId");
55
+ const result = await client.dispatchStatus({
56
+ machineId,
57
+ taskId,
58
+ ...(typeof flags["request-id"] === "string" ? { requestId: flags["request-id"] } : {}),
59
+ });
60
+ if (!wantsJson(flags)) {
61
+ const admission = result.admission;
62
+ const attention = result.attention;
63
+ console.log(`${result.taskId} admission:${admission?.admission ?? "-"} dispatch:${admission?.dispatch ?? "-"} attention:${attention?.status ?? "-"}`);
64
+ return true;
65
+ }
66
+ ok("dispatch.status", result, { requestId: result.requestId, machineId });
67
+ return true;
68
+ }
69
+ if (action === "list") {
70
+ const machineId = requireString(flags, "machine");
71
+ const result = await client.dispatchList({
72
+ machineId,
73
+ ...(typeof flags["consumer-session"] === "string" ? { consumerSessionId: flags["consumer-session"] } : {}),
74
+ ...(typeof flags["request-id"] === "string" ? { requestId: flags["request-id"] } : {}),
75
+ });
76
+ if (!wantsJson(flags)) {
77
+ for (const record of result.records) {
78
+ const attention = record.attention;
79
+ const reason = attention?.reasons.at(-1) ?? record.error ?? record.briefPreview ?? "";
80
+ console.log([
81
+ record.taskId,
82
+ `dispatch:${record.dispatch}`,
83
+ `attention:${attention?.status ?? "-"}`,
84
+ `crew:${record.crewSessionId ?? "-"}`,
85
+ reason ? `reason:${reason}` : "",
86
+ ].filter(Boolean).join(" "));
87
+ }
88
+ return true;
89
+ }
90
+ ok("dispatch.list", result, { requestId: result.requestId, machineId });
91
+ return true;
92
+ }
93
+ return false;
94
+ }
95
+ function routeDecisionFromFlags(flags) {
96
+ const raw = flags["route-decision"];
97
+ const ifBusy = flags["if-busy"];
98
+ if (ifBusy !== undefined && ifBusy !== "queue") {
99
+ throw new CliError("--if-busy must be queue", "INVALID_ARGUMENT");
100
+ }
101
+ if (typeof raw !== "string") {
102
+ if (ifBusy === "queue" && typeof flags["crew-session"] === "string" && typeof flags["fork-from-crew"] !== "string") {
103
+ return { kind: "reuse", crewSessionId: flags["crew-session"], ifBusy };
104
+ }
105
+ if (ifBusy === "queue")
106
+ throw new CliError("--if-busy queue requires --crew-session or --route-decision reuse", "INVALID_ARGUMENT");
107
+ return undefined;
108
+ }
109
+ if (raw === "new") {
110
+ if (ifBusy === "queue")
111
+ throw new CliError("--if-busy queue is only valid with --route-decision reuse", "INVALID_ARGUMENT");
112
+ return { kind: "new" };
113
+ }
114
+ if (raw === "reuse") {
115
+ const crewSessionId = requireString(flags, "crew-session");
116
+ return { kind: "reuse", crewSessionId, ...(ifBusy === "queue" ? { ifBusy } : {}) };
117
+ }
118
+ if (ifBusy === "queue")
119
+ throw new CliError("--if-busy queue is only valid with --route-decision reuse", "INVALID_ARGUMENT");
120
+ if (raw === "fork") {
121
+ const crewSessionId = requireString(flags, "fork-from-crew");
122
+ return {
123
+ kind: "fork",
124
+ crewSessionId,
125
+ ...(typeof flags["fork-checkpoint"] === "string" ? { forkCheckpointId: flags["fork-checkpoint"] } : {}),
126
+ };
127
+ }
128
+ throw new CliError("--route-decision must be one of new, reuse, or fork", "INVALID_ARGUMENT");
129
+ }
130
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1,2 @@
1
+ import type { CommandInput } from "./command.js";
2
+ export declare function handleGateway({ domain, action, positional, flags }: CommandInput): Promise<boolean>;