@cydm/happy-elves 0.1.0-beta.2 → 0.1.0-beta.29

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 (399) hide show
  1. package/apps/cli/dist/commands/account.d.ts +2 -0
  2. package/apps/cli/dist/commands/account.js +52 -0
  3. package/apps/cli/dist/commands/account.js.map +1 -0
  4. package/apps/cli/dist/commands/app.d.ts +3 -0
  5. package/apps/cli/dist/commands/app.js +100 -0
  6. package/apps/cli/dist/commands/app.js.map +1 -0
  7. package/apps/cli/dist/commands/collect.d.ts +2 -0
  8. package/apps/cli/dist/commands/collect.js +31 -0
  9. package/apps/cli/dist/commands/collect.js.map +1 -0
  10. package/apps/cli/dist/commands/command.d.ts +6 -0
  11. package/apps/cli/dist/commands/command.js +2 -0
  12. package/apps/cli/dist/commands/command.js.map +1 -0
  13. package/apps/cli/dist/commands/config.d.ts +2 -0
  14. package/apps/cli/dist/commands/config.js +31 -0
  15. package/apps/cli/dist/commands/config.js.map +1 -0
  16. package/apps/cli/dist/commands/daemon.d.ts +2 -0
  17. package/apps/cli/dist/commands/daemon.js +219 -0
  18. package/apps/cli/dist/commands/daemon.js.map +1 -0
  19. package/apps/cli/dist/commands/lib/args.d.ts +4 -0
  20. package/apps/cli/dist/commands/lib/args.js +78 -0
  21. package/apps/cli/dist/commands/lib/args.js.map +1 -0
  22. package/apps/cli/dist/commands/lib/audit.d.ts +1 -0
  23. package/apps/cli/dist/commands/lib/audit.js +26 -0
  24. package/apps/cli/dist/commands/lib/audit.js.map +1 -0
  25. package/apps/cli/dist/commands/lib/bootstrap-config.d.ts +28 -0
  26. package/apps/cli/dist/commands/lib/bootstrap-config.js +150 -0
  27. package/apps/cli/dist/commands/lib/bootstrap-config.js.map +1 -0
  28. package/apps/cli/dist/commands/lib/bootstrap-daemon.d.ts +15 -0
  29. package/apps/cli/dist/commands/lib/bootstrap-daemon.js +46 -0
  30. package/apps/cli/dist/commands/lib/bootstrap-daemon.js.map +1 -0
  31. package/apps/cli/dist/commands/lib/bootstrap-output.d.ts +18 -0
  32. package/apps/cli/dist/commands/lib/bootstrap-output.js +40 -0
  33. package/apps/cli/dist/commands/lib/bootstrap-output.js.map +1 -0
  34. package/apps/cli/dist/commands/lib/bootstrap.d.ts +1 -0
  35. package/apps/cli/dist/commands/lib/bootstrap.js +96 -0
  36. package/apps/cli/dist/commands/lib/bootstrap.js.map +1 -0
  37. package/apps/cli/dist/commands/lib/config.d.ts +18 -0
  38. package/apps/cli/dist/commands/lib/config.js +149 -0
  39. package/apps/cli/dist/commands/lib/config.js.map +1 -0
  40. package/apps/cli/dist/commands/lib/doctor.d.ts +1 -0
  41. package/apps/cli/dist/commands/lib/doctor.js +49 -0
  42. package/apps/cli/dist/commands/lib/doctor.js.map +1 -0
  43. package/apps/cli/dist/commands/lib/exit.d.ts +1 -0
  44. package/apps/cli/dist/commands/lib/exit.js +132 -0
  45. package/apps/cli/dist/commands/lib/exit.js.map +1 -0
  46. package/apps/cli/dist/commands/lib/index.d.ts +24 -0
  47. package/apps/cli/dist/commands/lib/index.js +25 -0
  48. package/apps/cli/dist/commands/lib/index.js.map +1 -0
  49. package/apps/cli/dist/commands/lib/json.d.ts +5 -0
  50. package/apps/cli/dist/commands/lib/json.js +17 -0
  51. package/apps/cli/dist/commands/lib/json.js.map +1 -0
  52. package/apps/cli/dist/commands/lib/local-daemon.d.ts +13 -0
  53. package/apps/cli/dist/commands/lib/local-daemon.js +133 -0
  54. package/apps/cli/dist/commands/lib/local-daemon.js.map +1 -0
  55. package/apps/cli/dist/commands/lib/loop-store.d.ts +5 -0
  56. package/apps/cli/dist/commands/lib/loop-store.js +78 -0
  57. package/apps/cli/dist/commands/lib/loop-store.js.map +1 -0
  58. package/apps/cli/dist/commands/lib/paths.d.ts +9 -0
  59. package/apps/cli/dist/commands/lib/paths.js +14 -0
  60. package/apps/cli/dist/commands/lib/paths.js.map +1 -0
  61. package/apps/cli/dist/commands/lib/relay-http.d.ts +18 -0
  62. package/apps/cli/dist/commands/lib/relay-http.js +102 -0
  63. package/apps/cli/dist/commands/lib/relay-http.js.map +1 -0
  64. package/apps/cli/dist/commands/lib/scope.d.ts +17 -0
  65. package/apps/cli/dist/commands/lib/scope.js +100 -0
  66. package/apps/cli/dist/commands/lib/scope.js.map +1 -0
  67. package/apps/cli/dist/commands/lib/session-output.d.ts +59 -0
  68. package/apps/cli/dist/commands/lib/session-output.js +343 -0
  69. package/apps/cli/dist/commands/lib/session-output.js.map +1 -0
  70. package/apps/cli/dist/commands/lib/session-view.d.ts +80 -0
  71. package/apps/cli/dist/commands/lib/session-view.js +197 -0
  72. package/apps/cli/dist/commands/lib/session-view.js.map +1 -0
  73. package/apps/cli/dist/commands/lib/status.d.ts +1 -0
  74. package/apps/cli/dist/commands/lib/status.js +63 -0
  75. package/apps/cli/dist/commands/lib/status.js.map +1 -0
  76. package/apps/cli/dist/commands/lib/types.d.ts +82 -0
  77. package/apps/cli/dist/commands/lib/types.js +2 -0
  78. package/apps/cli/dist/commands/lib/types.js.map +1 -0
  79. package/apps/cli/dist/commands/lib/usage.d.ts +5 -0
  80. package/apps/cli/dist/commands/lib/usage.js +242 -0
  81. package/apps/cli/dist/commands/lib/usage.js.map +1 -0
  82. package/apps/cli/dist/commands/lib/workspace.d.ts +25 -0
  83. package/apps/cli/dist/commands/lib/workspace.js +58 -0
  84. package/apps/cli/dist/commands/lib/workspace.js.map +1 -0
  85. package/apps/cli/dist/commands/loop.d.ts +2 -0
  86. package/apps/cli/dist/commands/loop.js +165 -0
  87. package/apps/cli/dist/commands/loop.js.map +1 -0
  88. package/apps/cli/dist/commands/machine.d.ts +2 -0
  89. package/apps/cli/dist/commands/machine.js +261 -0
  90. package/apps/cli/dist/commands/machine.js.map +1 -0
  91. package/apps/cli/dist/commands/relay.d.ts +2 -0
  92. package/apps/cli/dist/commands/relay.js +61 -0
  93. package/apps/cli/dist/commands/relay.js.map +1 -0
  94. package/apps/cli/dist/commands/remote.d.ts +2 -0
  95. package/apps/cli/dist/commands/remote.js +143 -0
  96. package/apps/cli/dist/commands/remote.js.map +1 -0
  97. package/apps/cli/dist/commands/session.d.ts +2 -0
  98. package/apps/cli/dist/commands/session.js +297 -0
  99. package/apps/cli/dist/commands/session.js.map +1 -0
  100. package/apps/cli/dist/commands/token.d.ts +2 -0
  101. package/apps/cli/dist/commands/token.js +51 -0
  102. package/apps/cli/dist/commands/token.js.map +1 -0
  103. package/apps/cli/dist/commands/turn.d.ts +2 -0
  104. package/apps/cli/dist/commands/turn.js +247 -0
  105. package/apps/cli/dist/commands/turn.js.map +1 -0
  106. package/apps/cli/dist/errors.d.ts +4 -0
  107. package/apps/cli/dist/errors.js +9 -0
  108. package/apps/cli/dist/errors.js.map +1 -0
  109. package/apps/cli/dist/index.js +2 -1873
  110. package/apps/cli/dist/index.js.map +1 -1
  111. package/apps/daemon/dist/app.d.ts +2 -0
  112. package/apps/daemon/dist/app.js +118 -0
  113. package/apps/daemon/dist/app.js.map +1 -0
  114. package/apps/daemon/dist/args.d.ts +2 -0
  115. package/apps/daemon/dist/args.js +15 -0
  116. package/apps/daemon/dist/args.js.map +1 -0
  117. package/apps/daemon/dist/audit.d.ts +9 -0
  118. package/apps/daemon/dist/audit.js +51 -0
  119. package/apps/daemon/dist/audit.js.map +1 -0
  120. package/apps/daemon/dist/cli.js +2 -1775
  121. package/apps/daemon/dist/cli.js.map +1 -1
  122. package/apps/daemon/dist/config.d.ts +8 -0
  123. package/apps/daemon/dist/config.js +90 -0
  124. package/apps/daemon/dist/config.js.map +1 -0
  125. package/apps/daemon/dist/errors.d.ts +6 -0
  126. package/apps/daemon/dist/errors.js +22 -0
  127. package/apps/daemon/dist/errors.js.map +1 -0
  128. package/apps/daemon/dist/loop/runner.d.ts +2 -0
  129. package/apps/daemon/dist/loop/runner.js +213 -0
  130. package/apps/daemon/dist/loop/runner.js.map +1 -0
  131. package/apps/daemon/dist/loop/store.d.ts +3 -0
  132. package/apps/daemon/dist/loop/store.js +64 -0
  133. package/apps/daemon/dist/loop/store.js.map +1 -0
  134. package/apps/daemon/dist/pair.d.ts +1 -0
  135. package/apps/daemon/dist/pair.js +46 -0
  136. package/apps/daemon/dist/pair.js.map +1 -0
  137. package/apps/daemon/dist/paths.d.ts +11 -0
  138. package/apps/daemon/dist/paths.js +17 -0
  139. package/apps/daemon/dist/paths.js.map +1 -0
  140. package/apps/daemon/dist/process.d.ts +14 -0
  141. package/apps/daemon/dist/process.js +100 -0
  142. package/apps/daemon/dist/process.js.map +1 -0
  143. package/apps/daemon/dist/relay/connection.d.ts +2 -0
  144. package/apps/daemon/dist/relay/connection.js +147 -0
  145. package/apps/daemon/dist/relay/connection.js.map +1 -0
  146. package/apps/daemon/dist/relay/devtools.d.ts +4 -0
  147. package/apps/daemon/dist/relay/devtools.js +355 -0
  148. package/apps/daemon/dist/relay/devtools.js.map +1 -0
  149. package/apps/daemon/dist/relay/register.d.ts +2 -0
  150. package/apps/daemon/dist/relay/register.js +60 -0
  151. package/apps/daemon/dist/relay/register.js.map +1 -0
  152. package/apps/daemon/dist/relay/send.d.ts +16 -0
  153. package/apps/daemon/dist/relay/send.js +216 -0
  154. package/apps/daemon/dist/relay/send.js.map +1 -0
  155. package/apps/daemon/dist/relay-http.d.ts +8 -0
  156. package/apps/daemon/dist/relay-http.js +71 -0
  157. package/apps/daemon/dist/relay-http.js.map +1 -0
  158. package/apps/daemon/dist/runtime/external-provider.d.ts +20 -0
  159. package/apps/daemon/dist/runtime/external-provider.js +667 -0
  160. package/apps/daemon/dist/runtime/external-provider.js.map +1 -0
  161. package/apps/daemon/dist/runtime.d.ts +13 -0
  162. package/apps/daemon/dist/runtime.js +82 -0
  163. package/apps/daemon/dist/runtime.js.map +1 -0
  164. package/apps/daemon/dist/session/create-session.d.ts +23 -0
  165. package/apps/daemon/dist/session/create-session.js +29 -0
  166. package/apps/daemon/dist/session/create-session.js.map +1 -0
  167. package/apps/daemon/dist/session/directory.d.ts +3 -0
  168. package/apps/daemon/dist/session/directory.js +104 -0
  169. package/apps/daemon/dist/session/directory.js.map +1 -0
  170. package/apps/daemon/dist/session/events.d.ts +20 -0
  171. package/apps/daemon/dist/session/events.js +141 -0
  172. package/apps/daemon/dist/session/events.js.map +1 -0
  173. package/apps/daemon/dist/session/file-preview.d.ts +4 -0
  174. package/apps/daemon/dist/session/file-preview.js +173 -0
  175. package/apps/daemon/dist/session/file-preview.js.map +1 -0
  176. package/apps/daemon/dist/session/lifecycle.d.ts +26 -0
  177. package/apps/daemon/dist/session/lifecycle.js +716 -0
  178. package/apps/daemon/dist/session/lifecycle.js.map +1 -0
  179. package/apps/daemon/dist/session/metadata.d.ts +7 -0
  180. package/apps/daemon/dist/session/metadata.js +87 -0
  181. package/apps/daemon/dist/session/metadata.js.map +1 -0
  182. package/apps/daemon/dist/session/primitives.d.ts +5 -0
  183. package/apps/daemon/dist/session/primitives.js +398 -0
  184. package/apps/daemon/dist/session/primitives.js.map +1 -0
  185. package/apps/daemon/dist/session/prompt.d.ts +4 -0
  186. package/apps/daemon/dist/session/prompt.js +226 -0
  187. package/apps/daemon/dist/session/prompt.js.map +1 -0
  188. package/apps/daemon/dist/session/runtime-handle.d.ts +7 -0
  189. package/apps/daemon/dist/session/runtime-handle.js +48 -0
  190. package/apps/daemon/dist/session/runtime-handle.js.map +1 -0
  191. package/apps/daemon/dist/start.d.ts +1 -0
  192. package/apps/daemon/dist/start.js +43 -0
  193. package/apps/daemon/dist/start.js.map +1 -0
  194. package/apps/daemon/dist/state.d.ts +16 -0
  195. package/apps/daemon/dist/state.js +11 -0
  196. package/apps/daemon/dist/state.js.map +1 -0
  197. package/apps/daemon/dist/turn-coordinator.d.ts +27 -0
  198. package/apps/daemon/dist/turn-coordinator.js +80 -0
  199. package/apps/daemon/dist/turn-coordinator.js.map +1 -0
  200. package/apps/daemon/dist/types.d.ts +115 -0
  201. package/apps/daemon/dist/types.js +2 -0
  202. package/apps/daemon/dist/types.js.map +1 -0
  203. package/apps/daemon/dist/utils.d.ts +1 -0
  204. package/apps/daemon/dist/utils.js +4 -0
  205. package/apps/daemon/dist/utils.js.map +1 -0
  206. package/apps/daemon/package.json +2 -0
  207. package/apps/relay/dist/auth.d.ts +1 -0
  208. package/apps/relay/dist/auth.js +16 -0
  209. package/apps/relay/dist/auth.js.map +1 -0
  210. package/apps/relay/dist/connections.d.ts +11 -0
  211. package/apps/relay/dist/connections.js +11 -0
  212. package/apps/relay/dist/connections.js.map +1 -0
  213. package/apps/relay/dist/controller-handlers.d.ts +39 -0
  214. package/apps/relay/dist/controller-handlers.js +465 -0
  215. package/apps/relay/dist/controller-handlers.js.map +1 -0
  216. package/apps/relay/dist/db.d.ts +5 -0
  217. package/apps/relay/dist/db.js +44 -0
  218. package/apps/relay/dist/db.js.map +1 -1
  219. package/apps/relay/dist/errors.d.ts +5 -0
  220. package/apps/relay/dist/errors.js +10 -0
  221. package/apps/relay/dist/errors.js.map +1 -0
  222. package/apps/relay/dist/http-routes.d.ts +3 -0
  223. package/apps/relay/dist/http-routes.js +395 -0
  224. package/apps/relay/dist/http-routes.js.map +1 -0
  225. package/apps/relay/dist/http-schemas.d.ts +3 -1
  226. package/apps/relay/dist/http-schemas.js +12 -4
  227. package/apps/relay/dist/http-schemas.js.map +1 -1
  228. package/apps/relay/dist/index.js +39 -1302
  229. package/apps/relay/dist/index.js.map +1 -1
  230. package/apps/relay/dist/machine-handlers.d.ts +50 -0
  231. package/apps/relay/dist/machine-handlers.js +435 -0
  232. package/apps/relay/dist/machine-handlers.js.map +1 -0
  233. package/apps/relay/dist/projections.d.ts +2 -1
  234. package/apps/relay/dist/projections.js +64 -3
  235. package/apps/relay/dist/projections.js.map +1 -1
  236. package/apps/relay/dist/relay-context.d.ts +99 -0
  237. package/apps/relay/dist/relay-context.js +494 -0
  238. package/apps/relay/dist/relay-context.js.map +1 -0
  239. package/apps/relay/dist/repositories.d.ts +13 -0
  240. package/apps/relay/dist/repositories.js +71 -0
  241. package/apps/relay/dist/repositories.js.map +1 -0
  242. package/apps/relay/dist/retention.d.ts +9 -0
  243. package/apps/relay/dist/retention.js +26 -0
  244. package/apps/relay/dist/retention.js.map +1 -0
  245. package/apps/relay/dist/scope.d.ts +20 -0
  246. package/apps/relay/dist/scope.js +60 -0
  247. package/apps/relay/dist/scope.js.map +1 -0
  248. package/apps/relay/dist/security.d.ts +0 -1
  249. package/apps/relay/dist/security.js +0 -3
  250. package/apps/relay/dist/security.js.map +1 -1
  251. package/apps/relay/dist/types.d.ts +2 -0
  252. package/apps/relay/dist/websocket.d.ts +3 -0
  253. package/apps/relay/dist/websocket.js +140 -0
  254. package/apps/relay/dist/websocket.js.map +1 -0
  255. package/package.json +6 -2
  256. package/packages/agent-sdk/dist/index.d.ts +341 -0
  257. package/packages/agent-sdk/dist/index.d.ts.map +1 -0
  258. package/packages/agent-sdk/dist/index.js +168 -0
  259. package/packages/agent-sdk/dist/index.js.map +1 -0
  260. package/packages/agent-sdk/package.json +20 -0
  261. package/packages/client/dist/account.d.ts +24 -0
  262. package/packages/client/dist/account.d.ts.map +1 -0
  263. package/packages/client/dist/account.js +78 -0
  264. package/packages/client/dist/account.js.map +1 -0
  265. package/packages/client/dist/client.d.ts +63 -0
  266. package/packages/client/dist/client.d.ts.map +1 -0
  267. package/packages/client/dist/client.js +513 -0
  268. package/packages/client/dist/client.js.map +1 -0
  269. package/packages/client/dist/errors.d.ts +20 -0
  270. package/packages/client/dist/errors.d.ts.map +1 -0
  271. package/packages/client/dist/errors.js +28 -0
  272. package/packages/client/dist/errors.js.map +1 -0
  273. package/packages/client/dist/http.d.ts +10 -0
  274. package/packages/client/dist/http.d.ts.map +1 -0
  275. package/packages/client/dist/http.js +82 -0
  276. package/packages/client/dist/http.js.map +1 -0
  277. package/packages/client/dist/index.d.ts +3 -240
  278. package/packages/client/dist/index.d.ts.map +1 -1
  279. package/packages/client/dist/index.js +2 -979
  280. package/packages/client/dist/index.js.map +1 -1
  281. package/packages/client/dist/parsers.d.ts +25 -0
  282. package/packages/client/dist/parsers.d.ts.map +1 -0
  283. package/packages/client/dist/parsers.js +178 -0
  284. package/packages/client/dist/parsers.js.map +1 -0
  285. package/packages/client/dist/transport.d.ts +41 -0
  286. package/packages/client/dist/transport.d.ts.map +1 -0
  287. package/packages/client/dist/transport.js +288 -0
  288. package/packages/client/dist/transport.js.map +1 -0
  289. package/packages/client/dist/types.d.ts +257 -0
  290. package/packages/client/dist/types.d.ts.map +1 -0
  291. package/packages/client/dist/types.js +2 -0
  292. package/packages/client/dist/types.js.map +1 -0
  293. package/packages/client/dist/validation.d.ts +15 -0
  294. package/packages/client/dist/validation.d.ts.map +1 -0
  295. package/packages/client/dist/validation.js +87 -0
  296. package/packages/client/dist/validation.js.map +1 -0
  297. package/packages/pie-provider/dist/index.d.ts +3 -0
  298. package/packages/pie-provider/dist/index.d.ts.map +1 -0
  299. package/packages/pie-provider/dist/index.js +1002 -0
  300. package/packages/pie-provider/dist/index.js.map +1 -0
  301. package/packages/pie-provider/package.json +26 -0
  302. package/packages/runtime/dist/index.d.ts +63 -5
  303. package/packages/runtime/dist/index.d.ts.map +1 -1
  304. package/packages/runtime-acpx/dist/index.d.ts +1 -0
  305. package/packages/runtime-acpx/dist/index.d.ts.map +1 -1
  306. package/packages/runtime-acpx/dist/index.js +71 -1
  307. package/packages/runtime-acpx/dist/index.js.map +1 -1
  308. package/packages/runtime-cli/dist/claude-history.d.ts +8 -0
  309. package/packages/runtime-cli/dist/claude-history.d.ts.map +1 -0
  310. package/packages/runtime-cli/dist/claude-history.js +347 -0
  311. package/packages/runtime-cli/dist/claude-history.js.map +1 -0
  312. package/packages/runtime-cli/dist/claude-json.d.ts +29 -0
  313. package/packages/runtime-cli/dist/claude-json.d.ts.map +1 -0
  314. package/packages/runtime-cli/dist/claude-json.js +29 -0
  315. package/packages/runtime-cli/dist/claude-json.js.map +1 -0
  316. package/packages/runtime-cli/dist/claude-rename.d.ts +6 -0
  317. package/packages/runtime-cli/dist/claude-rename.d.ts.map +1 -0
  318. package/packages/runtime-cli/dist/claude-rename.js +15 -0
  319. package/packages/runtime-cli/dist/claude-rename.js.map +1 -0
  320. package/packages/runtime-cli/dist/claude-session-store.d.ts +3 -0
  321. package/packages/runtime-cli/dist/claude-session-store.d.ts.map +1 -1
  322. package/packages/runtime-cli/dist/claude-session-store.js +50 -13
  323. package/packages/runtime-cli/dist/claude-session-store.js.map +1 -1
  324. package/packages/runtime-cli/dist/claude-turn.d.ts +13 -0
  325. package/packages/runtime-cli/dist/claude-turn.d.ts.map +1 -0
  326. package/packages/runtime-cli/dist/claude-turn.js +102 -0
  327. package/packages/runtime-cli/dist/claude-turn.js.map +1 -0
  328. package/packages/runtime-cli/dist/codex-app-server.d.ts +21 -13
  329. package/packages/runtime-cli/dist/codex-app-server.d.ts.map +1 -1
  330. package/packages/runtime-cli/dist/codex-app-server.js +202 -340
  331. package/packages/runtime-cli/dist/codex-app-server.js.map +1 -1
  332. package/packages/runtime-cli/dist/codex-approvals.d.ts +8 -0
  333. package/packages/runtime-cli/dist/codex-approvals.d.ts.map +1 -0
  334. package/packages/runtime-cli/dist/codex-approvals.js +33 -0
  335. package/packages/runtime-cli/dist/codex-approvals.js.map +1 -0
  336. package/packages/runtime-cli/dist/codex-history.d.ts +18 -0
  337. package/packages/runtime-cli/dist/codex-history.d.ts.map +1 -0
  338. package/packages/runtime-cli/dist/codex-history.js +705 -0
  339. package/packages/runtime-cli/dist/codex-history.js.map +1 -0
  340. package/packages/runtime-cli/dist/codex-json-rpc.d.ts +28 -0
  341. package/packages/runtime-cli/dist/codex-json-rpc.d.ts.map +1 -0
  342. package/packages/runtime-cli/dist/codex-json-rpc.js +125 -0
  343. package/packages/runtime-cli/dist/codex-json-rpc.js.map +1 -0
  344. package/packages/runtime-cli/dist/codex-lifecycle.d.ts +25 -0
  345. package/packages/runtime-cli/dist/codex-lifecycle.d.ts.map +1 -0
  346. package/packages/runtime-cli/dist/codex-lifecycle.js +72 -0
  347. package/packages/runtime-cli/dist/codex-lifecycle.js.map +1 -0
  348. package/packages/runtime-cli/dist/codex-protocol.d.ts +6 -0
  349. package/packages/runtime-cli/dist/codex-protocol.d.ts.map +1 -0
  350. package/packages/runtime-cli/dist/codex-protocol.js +53 -0
  351. package/packages/runtime-cli/dist/codex-protocol.js.map +1 -0
  352. package/packages/runtime-cli/dist/command-resolver.d.ts +24 -0
  353. package/packages/runtime-cli/dist/command-resolver.d.ts.map +1 -0
  354. package/packages/runtime-cli/dist/command-resolver.js +101 -0
  355. package/packages/runtime-cli/dist/command-resolver.js.map +1 -0
  356. package/packages/runtime-cli/dist/history-merge.d.ts +18 -0
  357. package/packages/runtime-cli/dist/history-merge.d.ts.map +1 -0
  358. package/packages/runtime-cli/dist/history-merge.js +274 -0
  359. package/packages/runtime-cli/dist/history-merge.js.map +1 -0
  360. package/packages/runtime-cli/dist/index.d.ts +2 -0
  361. package/packages/runtime-cli/dist/index.d.ts.map +1 -1
  362. package/packages/runtime-cli/dist/index.js +131 -357
  363. package/packages/runtime-cli/dist/index.js.map +1 -1
  364. package/packages/runtime-cli/dist/permissions.d.ts +6 -0
  365. package/packages/runtime-cli/dist/permissions.d.ts.map +1 -0
  366. package/packages/runtime-cli/dist/permissions.js +22 -0
  367. package/packages/runtime-cli/dist/permissions.js.map +1 -0
  368. package/packages/runtime-cli/dist/session-store.d.ts +32 -0
  369. package/packages/runtime-cli/dist/session-store.d.ts.map +1 -0
  370. package/packages/runtime-cli/dist/session-store.js +92 -0
  371. package/packages/runtime-cli/dist/session-store.js.map +1 -0
  372. package/packages/shared/dist/args.d.ts +10 -0
  373. package/packages/shared/dist/args.d.ts.map +1 -0
  374. package/packages/shared/dist/args.js +35 -0
  375. package/packages/shared/dist/args.js.map +1 -0
  376. package/packages/shared/dist/index.d.ts +3 -0
  377. package/packages/shared/dist/index.d.ts.map +1 -1
  378. package/packages/shared/dist/index.js +3 -0
  379. package/packages/shared/dist/index.js.map +1 -1
  380. package/packages/shared/dist/protocol-schemas.d.ts +380 -0
  381. package/packages/shared/dist/protocol-schemas.d.ts.map +1 -0
  382. package/packages/shared/dist/protocol-schemas.js +180 -0
  383. package/packages/shared/dist/protocol-schemas.js.map +1 -0
  384. package/packages/shared/dist/protocol-types.d.ts +230 -0
  385. package/packages/shared/dist/protocol-types.d.ts.map +1 -0
  386. package/packages/shared/dist/protocol-types.js +2 -0
  387. package/packages/shared/dist/protocol-types.js.map +1 -0
  388. package/packages/shared/dist/protocol.d.ts +158 -145
  389. package/packages/shared/dist/protocol.d.ts.map +1 -1
  390. package/packages/shared/dist/protocol.js +172 -85
  391. package/packages/shared/dist/protocol.js.map +1 -1
  392. package/packages/shared/dist/session-name.d.ts +4 -0
  393. package/packages/shared/dist/session-name.d.ts.map +1 -0
  394. package/packages/shared/dist/session-name.js +26 -0
  395. package/packages/shared/dist/session-name.js.map +1 -0
  396. package/packages/shared/dist/session-state.d.ts +16 -0
  397. package/packages/shared/dist/session-state.d.ts.map +1 -0
  398. package/packages/shared/dist/session-state.js +48 -0
  399. package/packages/shared/dist/session-state.js.map +1 -0
@@ -0,0 +1,2 @@
1
+ import type { CommandInput } from "./command.js";
2
+ export declare function handleAccount({ domain, action, flags }: CommandInput): Promise<boolean>;
@@ -0,0 +1,52 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { configDir, configPath, generateAccountSecret, ok, parsePairingStartResponse, randomId, readRelayJson, requireRelayUrl, stopLocalDaemon, throwRelayHttpError, writeConfig } from "./lib/index.js";
5
+ export async function handleAccount({ domain, action, flags }) {
6
+ if (domain === "account" && action === "create") {
7
+ const relayUrl = requireRelayUrl(flags);
8
+ const deviceId = typeof flags["device-id"] === "string" ? flags["device-id"] : randomId("dev");
9
+ const deviceName = typeof flags["device-name"] === "string" ? flags["device-name"] : os.hostname();
10
+ const accountSecret = generateAccountSecret();
11
+ const response = await fetch(`${relayUrl}/api/pairing/start`, {
12
+ method: "POST",
13
+ headers: { "content-type": "application/json" },
14
+ body: JSON.stringify({ deviceId, deviceName }),
15
+ });
16
+ if (!response.ok) {
17
+ await throwRelayHttpError(response, "Account creation failed");
18
+ }
19
+ const paired = parsePairingStartResponse(await readRelayJson(response, "Account creation response is not valid JSON"));
20
+ const config = {
21
+ relayUrl,
22
+ controllerToken: paired.controllerToken,
23
+ accountSecret,
24
+ };
25
+ await writeConfig(config);
26
+ ok("account.create", {
27
+ accountId: paired.accountId,
28
+ configPath,
29
+ relayUrl,
30
+ deviceId,
31
+ controllerToken: paired.controllerToken,
32
+ accountSecret,
33
+ pairingCode: paired.pairingCode,
34
+ expiresAt: paired.expiresAt,
35
+ });
36
+ return true;
37
+ }
38
+ if (domain === "account" && action === "reset") {
39
+ const stop = await stopLocalDaemon().catch((error) => ({
40
+ error: error instanceof Error ? error.message : String(error),
41
+ }));
42
+ await fs.rm(configPath, { force: true });
43
+ await fs.rm(path.join(configDir, "daemon.json"), { force: true });
44
+ ok("account.reset", {
45
+ removed: [configPath, path.join(configDir, "daemon.json")],
46
+ stop,
47
+ });
48
+ return true;
49
+ }
50
+ return false;
51
+ }
52
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/commands/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { handleCliError } from "./lib/index.js";
2
+ export { handleCliError };
3
+ export declare function main(): Promise<void>;
@@ -0,0 +1,100 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { handleAccount } from "./account.js";
4
+ import { handleCollect } from "./collect.js";
5
+ import { handleConfig } from "./config.js";
6
+ import { handleDaemon } from "./daemon.js";
7
+ import { handleLoop } from "./loop.js";
8
+ import { handleMachine } from "./machine.js";
9
+ import { handleRelay } from "./relay.js";
10
+ import { handleRemote } from "./remote.js";
11
+ import { handleSession } from "./session.js";
12
+ import { handleToken } from "./token.js";
13
+ import { handleTurn } from "./turn.js";
14
+ import { commandUsage, commandUsageText, handleCliError, parseCliFlags, skillText, startBootstrap, topLevelDoctor, topLevelStatus, usage, usageText } from "./lib/index.js";
15
+ export { handleCliError };
16
+ const domainHandlers = [
17
+ handleAccount,
18
+ handleConfig,
19
+ handleRemote,
20
+ handleToken,
21
+ handleLoop,
22
+ handleDaemon,
23
+ handleRelay,
24
+ handleMachine,
25
+ handleSession,
26
+ handleTurn,
27
+ handleCollect,
28
+ ];
29
+ export async function main() {
30
+ const argv = process.argv.slice(2);
31
+ const [domain] = argv;
32
+ if (!domain)
33
+ usage();
34
+ if (domain === "--skill" || domain === "skill") {
35
+ console.log(skillText());
36
+ return;
37
+ }
38
+ if (domain === "--help" || domain === "-h" || domain === "help") {
39
+ console.log(usageText());
40
+ return;
41
+ }
42
+ if (domain === "--version" || domain === "-v" || domain === "version") {
43
+ console.log(cliVersion());
44
+ return;
45
+ }
46
+ const topLevelHelpRequested = argv[1] === "help" || argv.slice(1).some((arg) => arg === "--help" || arg === "-h");
47
+ if (topLevelHelpRequested && commandUsageText(domain)) {
48
+ console.log(commandUsageText(domain));
49
+ return;
50
+ }
51
+ if (domain === "start") {
52
+ const { flags } = parseCliFlags(argv.slice(1));
53
+ await startBootstrap(flags);
54
+ return;
55
+ }
56
+ if (domain === "doctor") {
57
+ const { flags } = parseCliFlags(argv.slice(1));
58
+ await topLevelDoctor(flags);
59
+ return;
60
+ }
61
+ if (domain === "status") {
62
+ const { flags } = parseCliFlags(argv.slice(1));
63
+ await topLevelStatus(flags);
64
+ return;
65
+ }
66
+ const action = argv[1];
67
+ const rest = argv.slice(2);
68
+ if ((!action || action.startsWith("-")) && commandUsageText(domain)) {
69
+ commandUsage(domain);
70
+ }
71
+ const { positional, flags } = parseCliFlags(rest);
72
+ if (action === "--help" || action === "-h" || action === "help" || flags.help === true || flags.h === true) {
73
+ console.log(commandUsageText(domain) ?? usageText());
74
+ return;
75
+ }
76
+ const input = { domain, action, positional, flags };
77
+ for (const handle of domainHandlers) {
78
+ if (await handle(input))
79
+ return;
80
+ }
81
+ usage();
82
+ }
83
+ function cliVersion() {
84
+ for (const candidate of [
85
+ path.resolve(import.meta.dirname, "..", "..", "..", "..", "package.json"),
86
+ path.resolve(import.meta.dirname, "..", "..", "..", "package.json"),
87
+ path.resolve(import.meta.dirname, "..", "..", "package.json"),
88
+ ]) {
89
+ try {
90
+ const parsed = JSON.parse(fs.readFileSync(candidate, "utf8"));
91
+ if (typeof parsed.version === "string" && parsed.version.trim())
92
+ return parsed.version.trim();
93
+ }
94
+ catch {
95
+ // Try the next packaged/source layout.
96
+ }
97
+ }
98
+ return "0.1.0";
99
+ }
100
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CommandInput } from "./command.js";
2
+ export declare function handleCollect({ domain, action, flags }: CommandInput): Promise<boolean>;
@@ -0,0 +1,31 @@
1
+ import { CliError, ControllerClient, conciseEvents, ok, parseEventCursor, printConciseEvents, readConfig, requirePositional, wantsJson, wantsVerbose } from "./lib/index.js";
2
+ export async function handleCollect({ domain, action, flags }) {
3
+ if (domain !== "collect")
4
+ return false;
5
+ const config = await readConfig(flags);
6
+ const client = new ControllerClient(config);
7
+ const sessionId = requirePositional(action, "sessionId");
8
+ const since = parseEventCursor(flags.since);
9
+ const limit = typeof flags.limit === "string" ? Number(flags.limit) : undefined;
10
+ if (limit !== undefined && (!Number.isInteger(limit) || limit <= 0)) {
11
+ throw new CliError(`Invalid --limit: ${flags.limit}`, "INVALID_ARGUMENT");
12
+ }
13
+ const events = await client.collect(sessionId, { since, limit });
14
+ const lastEventId = events.at(-1)?.id;
15
+ const nextSince = lastEventId === undefined ? (since ?? null) : `cursor_${lastEventId}`;
16
+ if (wantsJson(flags) || wantsVerbose(flags)) {
17
+ ok("session.collect", {
18
+ sessionId,
19
+ debugOnly: true,
20
+ cursor: nextSince,
21
+ nextSince,
22
+ ...(wantsVerbose(flags) ? { events } : { events: conciseEvents(events) }),
23
+ }, { sessionId });
24
+ }
25
+ else {
26
+ printConciseEvents(events);
27
+ console.log(`nextSince: ${nextSince ?? "none"}`);
28
+ }
29
+ return true;
30
+ }
31
+ //# sourceMappingURL=collect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/commands/collect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG7K,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAgB;IACzE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,KAAK,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,WAAW,EAAE,CAAC;IACxF,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,EAAE,CAAC,iBAAiB,EAAE;YACpB,SAAS;YACT,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,SAAS;YACjB,SAAS;YACT,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;SAC1E,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type CommandInput = {
2
+ domain: string;
3
+ action: string | undefined;
4
+ positional: string[];
5
+ flags: Record<string, string | boolean>;
6
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/commands/command.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import type { CommandInput } from "./command.js";
2
+ export declare function handleConfig({ domain, action, flags }: CommandInput): Promise<boolean>;
@@ -0,0 +1,31 @@
1
+ import { configPath, ok, readConfig, redactedControllerConfig, requireRelayUrl, requireString, wantsJson, writeConfig } from "./lib/index.js";
2
+ export async function handleConfig({ domain, action, flags }) {
3
+ if (domain === "config" && action === "init") {
4
+ const config = {
5
+ relayUrl: requireRelayUrl(flags),
6
+ controllerToken: requireString(flags, "token"),
7
+ accountSecret: requireString(flags, "secret"),
8
+ };
9
+ await writeConfig(config);
10
+ ok("config.init", { path: configPath, relayUrl: config.relayUrl });
11
+ return true;
12
+ }
13
+ if (domain === "config" && action === "show") {
14
+ const config = await readConfig(flags);
15
+ if (!wantsJson(flags)) {
16
+ const redacted = redactedControllerConfig(config);
17
+ console.log(`Config: ${configPath}`);
18
+ console.log(`Relay: ${redacted.relayUrl}`);
19
+ console.log(`Controller token: ${redacted.hasControllerToken ? "configured" : "missing"}`);
20
+ console.log(`Account secret: ${redacted.hasAccountSecret ? "configured" : "missing"}`);
21
+ return true;
22
+ }
23
+ ok("config.show", {
24
+ path: configPath,
25
+ config: redactedControllerConfig(config),
26
+ });
27
+ return true;
28
+ }
29
+ return false;
30
+ }
31
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG9I,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAgB;IACxE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC;YAChC,eAAe,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;YAC9C,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;SAC9C,CAAC;QACF,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1B,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,aAAa,EAAE;YAChB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,wBAAwB,CAAC,MAAM,CAAC;SACzC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CommandInput } from "./command.js";
2
+ export declare function handleDaemon({ domain, action, flags }: CommandInput): Promise<boolean>;
@@ -0,0 +1,219 @@
1
+ import os from "node:os";
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";
4
+ export async function handleDaemon({ domain, action, flags }) {
5
+ if (domain === "daemon" && action === "pair") {
6
+ const relayUrl = requireRelayUrl(flags);
7
+ const code = requireString(flags, "code");
8
+ const accountSecret = requireString(flags, "secret");
9
+ const machineName = typeof flags.name === "string" && flags.name.trim() ? flags.name.trim() : os.hostname();
10
+ const machineId = typeof flags["machine-id"] === "string" ? flags["machine-id"] : randomId("mach");
11
+ const response = await fetch(`${relayUrl}/api/pairing/claim`, {
12
+ method: "POST",
13
+ headers: { "content-type": "application/json" },
14
+ body: JSON.stringify({ code, machineId }),
15
+ });
16
+ if (!response.ok) {
17
+ await throwRelayHttpError(response, "Pairing failed");
18
+ }
19
+ const claimed = parsePairingClaimResponse(await readRelayJson(response, "Pairing response is not valid JSON"));
20
+ const daemonConfig = {
21
+ relayUrl,
22
+ accountId: claimed.accountId,
23
+ machineId: claimed.machineId,
24
+ machineName,
25
+ machineToken: claimed.machineToken,
26
+ accountSecret,
27
+ };
28
+ const daemonConfigPath = await writeDaemonConfig(daemonConfig);
29
+ ok("daemon.pair", {
30
+ path: daemonConfigPath,
31
+ config: redactedDaemonConfig(daemonConfig),
32
+ });
33
+ return true;
34
+ }
35
+ if (domain === "daemon" && action === "doctor") {
36
+ const checks = [];
37
+ let config;
38
+ try {
39
+ config = await readConfig(flags);
40
+ checks.push({ name: "config", ok: true, message: configPath });
41
+ }
42
+ catch (error) {
43
+ checks.push({ name: "config", ok: false, message: error instanceof Error ? error.message : String(error) });
44
+ }
45
+ if (config) {
46
+ try {
47
+ const response = await fetch(`${config.relayUrl}/health`);
48
+ checks.push({ name: "relay", ok: response.ok, message: response.ok ? "reachable" : await response.text() });
49
+ }
50
+ catch (error) {
51
+ checks.push({ name: "relay", ok: false, message: error instanceof Error ? error.message : String(error) });
52
+ }
53
+ }
54
+ const data = { ok: checks.every((check) => check.ok), checks };
55
+ if (!wantsJson(flags)) {
56
+ console.log(`Daemon doctor: ${data.ok ? "ok" : "issues found"}`);
57
+ for (const check of checks) {
58
+ console.log(`${check.ok ? "ok" : "fail"} ${check.name}: ${check.message}`);
59
+ }
60
+ return true;
61
+ }
62
+ ok("daemon.doctor", data);
63
+ return true;
64
+ }
65
+ if (domain === "daemon" && action === "config") {
66
+ const daemonConfig = await readDaemonConfig();
67
+ const redacted = redactedDaemonConfig(daemonConfig);
68
+ if (!wantsJson(flags)) {
69
+ console.log(`Config: ${path.join(configDir, "daemon.json")}`);
70
+ console.log(`Relay: ${redacted.relayUrl}`);
71
+ console.log(`Account: ${redacted.accountId}`);
72
+ console.log(`Machine: ${redacted.machineName} (${redacted.machineId})`);
73
+ console.log(`Machine token: ${redacted.hasMachineToken ? "configured" : "missing"}`);
74
+ console.log(`Account secret: ${redacted.hasAccountSecret ? "configured" : "missing"}`);
75
+ return true;
76
+ }
77
+ ok("daemon.config", {
78
+ path: path.join(configDir, "daemon.json"),
79
+ config: redacted,
80
+ });
81
+ return true;
82
+ }
83
+ if (domain === "daemon" && action === "logs") {
84
+ const tail = typeof flags.tail === "string" ? Number(flags.tail) : 100;
85
+ if (!Number.isInteger(tail) || tail <= 0) {
86
+ throw new CliError(`Invalid --tail: ${flags.tail}`, "INVALID_ARGUMENT");
87
+ }
88
+ const entries = await readLocalAuditLog(tail);
89
+ if (!wantsJson(flags)) {
90
+ if (entries.length === 0) {
91
+ console.log("No daemon audit log entries.");
92
+ return true;
93
+ }
94
+ for (const entry of entries) {
95
+ const record = entry;
96
+ const createdAt = typeof record.createdAt === "string" ? record.createdAt : "-";
97
+ const action = typeof record.action === "string" ? record.action : "unknown";
98
+ const actor = typeof record.actor === "string" ? record.actor : "unknown";
99
+ const sessionId = typeof record.sessionId === "string" ? record.sessionId : undefined;
100
+ const summary = typeof record.summary === "string" ? record.summary : JSON.stringify(record);
101
+ console.log(`${createdAt} ${action} ${actor}`);
102
+ if (sessionId)
103
+ console.log(` session: ${sessionId}`);
104
+ console.log(` ${compactText(summary, 160)}`);
105
+ }
106
+ return true;
107
+ }
108
+ ok("daemon.logs", {
109
+ path: path.join(configDir, "audit.jsonl"),
110
+ entries,
111
+ });
112
+ return true;
113
+ }
114
+ if (domain === "daemon" && action === "start") {
115
+ const status = await localDaemonStatus();
116
+ if (status.running) {
117
+ ok("daemon.start", { ...status, started: false });
118
+ return true;
119
+ }
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 });
124
+ return true;
125
+ }
126
+ if (domain === "daemon" && action === "stop") {
127
+ ok("daemon.stop", await stopLocalDaemon());
128
+ return true;
129
+ }
130
+ 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 });
136
+ return true;
137
+ }
138
+ if (domain === "daemon" && action === "status" && flags.local === true) {
139
+ const local = await localDaemonStatus();
140
+ if (!wantsJson(flags)) {
141
+ console.log(local.running ? `Daemon: running${local.pid ? ` pid ${local.pid}` : ""}` : "Daemon: stopped");
142
+ console.log(`Pid file: ${local.pidPath}`);
143
+ return true;
144
+ }
145
+ ok("daemon.status", { local });
146
+ return true;
147
+ }
148
+ if (domain === "daemon" && action === "status") {
149
+ const config = await readConfig(flags);
150
+ const client = new ControllerClient(config);
151
+ const local = await localDaemonStatus();
152
+ const response = await fetch(`${config.relayUrl}/health`);
153
+ const snapshot = await client.snapshot();
154
+ const machineFilter = flags.machine === true ? requirePositional(undefined, "machineId") : typeof flags.machine === "string" ? flags.machine : undefined;
155
+ const machines = machineFilter
156
+ ? snapshot.machines.filter((machine) => machine.id === machineFilter)
157
+ : snapshot.machines;
158
+ if (machineFilter && machines.length === 0)
159
+ throw new CliError("Machine not found", "MACHINE_NOT_FOUND");
160
+ const machineIds = new Set(machines.map((machine) => machine.id));
161
+ const sessions = snapshot.sessions.filter((session) => machineIds.has(session.machineId));
162
+ const projectedMachines = await Promise.all(machines.map((machine) => showMachine(client, machine)));
163
+ const projectedSessions = await Promise.all(sessions.map(async (session) => ({
164
+ sessionId: session.id,
165
+ machineId: session.machineId,
166
+ agent: session.agent,
167
+ status: session.status,
168
+ orchestration: deriveOrchestration(session, await client.history(session.id, 20)),
169
+ updatedAt: session.updatedAt,
170
+ capabilities: session.capabilities,
171
+ })));
172
+ const data = {
173
+ configPath,
174
+ local,
175
+ relayUrl: config.relayUrl,
176
+ relayReachable: response.ok,
177
+ relay: response.ok ? await response.json() : await response.text(),
178
+ machines: projectedMachines.map((machine) => ({
179
+ machineId: machine.id,
180
+ name: machine.metadata.name ?? machine.name,
181
+ online: machine.online,
182
+ lastSeen: machine.lastSeen,
183
+ defaultCwd: machine.defaultCwd,
184
+ daemonVersion: machine.capabilities.daemonVersion,
185
+ acpxVersion: machine.capabilities.acpxVersion,
186
+ sessionPrimitives: machine.capabilities.sessionPrimitives,
187
+ agents: machine.capabilities.agents,
188
+ metadata: machine.metadata,
189
+ })),
190
+ sessions: projectedSessions,
191
+ summary: {
192
+ machineCount: machines.length,
193
+ onlineMachineCount: machines.filter((machine) => machine.online).length,
194
+ sessionCount: projectedSessions.length,
195
+ runningSessionCount: projectedSessions.filter((session) => session.status === "running").length,
196
+ idleSessionCount: projectedSessions.filter((session) => idleSessionStatuses.includes(session.status)).length,
197
+ blockedSessionCount: projectedSessions.filter((session) => session.orchestration.blocked).length,
198
+ activeSessionCount: projectedSessions.filter((session) => session.orchestration.state === "active").length,
199
+ completedSessionCount: projectedSessions.filter((session) => session.orchestration.completed).length,
200
+ needsUserSessionCount: projectedSessions.filter((session) => session.orchestration.needsUser).length,
201
+ },
202
+ };
203
+ if (!wantsJson(flags)) {
204
+ console.log(`Relay: ${data.relayUrl} ${data.relayReachable ? "ok" : "unreachable"}`);
205
+ console.log(data.local.running ? `Local daemon: running${data.local.pid ? ` pid ${data.local.pid}` : ""}` : "Local daemon: stopped");
206
+ console.log(`Machines: ${data.summary.onlineMachineCount}/${data.summary.machineCount} online`);
207
+ console.log(`Sessions: ${data.summary.sessionCount} total, ${data.summary.runningSessionCount} running, ${data.summary.needsUserSessionCount} needs user`);
208
+ for (const machine of data.machines) {
209
+ console.log(`- ${machine.name} (${machine.machineId}) ${machine.online ? "online" : "offline"}`);
210
+ console.log(` cwd: ${machine.defaultCwd ?? "-"}`);
211
+ }
212
+ return true;
213
+ }
214
+ ok("daemon.status", data, machineFilter ? { machineId: machineFilter } : {});
215
+ return true;
216
+ }
217
+ return false;
218
+ }
219
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,EAAE,EAAE,yBAAyB,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,iBAAiB,EAAqC,MAAM,gBAAgB,CAAC;AAGpe,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAgB;IACxE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC1F,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,oBAAoB,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC,CAAC;QAC/G,MAAM,YAAY,GAAiB;YACjC,QAAQ;YACR,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW;YACX,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,aAAa;SACd,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC/D,EAAE,CAAC,aAAa,EAAE;YAChB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,oBAAoB,CAAC,YAAY,CAAC;SAC3C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,MAAM,GAA0D,EAAE,CAAC;QACzE,IAAI,MAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,SAAS,CAAC,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9G,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,eAAe,EAAE;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YACzC,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,QAAQ,CAAC,mBAAmB,KAAK,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,KAAgC,CAAC;gBAChD,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;gBAChF,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtF,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC7F,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;gBACjD,IAAI,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,aAAa,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YACzC,OAAO;SACR,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,EAAE,CAAC,cAAc,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,gBAAgB,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3C,EAAE,CAAC,aAAa,EAAE,MAAM,eAAe,EAAE,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,gBAAgB,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACxC,EAAE,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC1G,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,SAAS,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,aAAa,GACjB,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACrI,MAAM,QAAQ,GAAG,aAAa;YAC5B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,aAAa,CAAC;YACrE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtB,IAAI,aAAa,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;QACzG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1F,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjF,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC,CACJ,CAAC;QACF,MAAM,IAAI,GAAG;YACX,UAAU;YACV,KAAK;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,QAAQ,CAAC,EAAE;YAC3B,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE;YAClE,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC5C,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI;gBAC3C,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,aAAa;gBACjD,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,WAAW;gBAC7C,iBAAiB,EAAE,OAAO,CAAC,YAAY,CAAC,iBAAiB;gBACzD,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM;gBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;YACH,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE;gBACP,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM;gBACvE,YAAY,EAAE,iBAAiB,CAAC,MAAM;gBACtC,mBAAmB,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;gBAC/F,gBAAgB,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBAC5G,mBAAmB,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM;gBAChG,kBAAkB,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,MAAM;gBAC1G,qBAAqB,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM;gBACpG,qBAAqB,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM;aACrG;SACF,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;YACrI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,SAAS,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CACT,aAAa,IAAI,CAAC,OAAO,CAAC,YAAY,WAAW,IAAI,CAAC,OAAO,CAAC,mBAAmB,aAAa,IAAI,CAAC,OAAO,CAAC,qBAAqB,aAAa,CAC9I,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBACjG,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function parseCliFlags(argv: string[]): {
2
+ positional: string[];
3
+ flags: Record<string, string | boolean>;
4
+ };
@@ -0,0 +1,78 @@
1
+ import { parseFlags as parseSharedFlags } from "../../../../../packages/shared/dist/index.js";
2
+ import { CliError } from "../../errors.js";
3
+ const valueFlags = new Set([
4
+ "agent",
5
+ "code",
6
+ "controller",
7
+ "cwd",
8
+ "device-id",
9
+ "device-name",
10
+ "from",
11
+ "host",
12
+ "invite-secret",
13
+ "join-url-base",
14
+ "limit",
15
+ "machine",
16
+ "machine-id",
17
+ "name",
18
+ "mode",
19
+ "output",
20
+ "path",
21
+ "port",
22
+ "permission",
23
+ "permission-mode",
24
+ "prompt",
25
+ "prompt-file",
26
+ "every",
27
+ "reason",
28
+ "relay",
29
+ "root",
30
+ "shell",
31
+ "actions",
32
+ "expires-in",
33
+ "format",
34
+ "loops",
35
+ "machines",
36
+ "sessions",
37
+ "secret",
38
+ "since",
39
+ "stop-on",
40
+ "tail",
41
+ "text",
42
+ "text-file",
43
+ "timeout",
44
+ "timeout-ms",
45
+ "wait-timeout-ms",
46
+ "runtime-timeout",
47
+ "to",
48
+ "token",
49
+ "ttl",
50
+ "url",
51
+ "turn",
52
+ "until",
53
+ ]);
54
+ const booleanFlags = new Set([
55
+ "all",
56
+ "detach",
57
+ "help",
58
+ "h",
59
+ "include-archived",
60
+ "json",
61
+ "local",
62
+ "no-open",
63
+ "no-wait",
64
+ "summary",
65
+ "verbose",
66
+ "wait",
67
+ ]);
68
+ const knownFlags = new Set([...valueFlags, ...booleanFlags]);
69
+ const dashPrefixedValueFlags = new Set(["secret"]);
70
+ export function parseCliFlags(argv) {
71
+ const parsed = parseSharedFlags(argv, { valueFlags, dashPrefixedValueFlags });
72
+ const unknown = Object.keys(parsed.flags).filter((flag) => !knownFlags.has(flag));
73
+ if (unknown.length > 0) {
74
+ throw new CliError(`Unknown flag: --${unknown[0]}`, "UNKNOWN_FLAG");
75
+ }
76
+ return parsed;
77
+ }
78
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/commands/lib/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,OAAO;IACP,MAAM;IACN,YAAY;IACZ,KAAK;IACL,WAAW;IACX,aAAa;IACb,MAAM;IACN,MAAM;IACN,eAAe;IACf,eAAe;IACf,OAAO;IACP,SAAS;IACT,YAAY;IACZ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,QAAQ;IACR,aAAa;IACb,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,OAAO;IACP,UAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;IACP,SAAS;IACT,MAAM;IACN,MAAM;IACN,WAAW;IACX,SAAS;IACT,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,IAAI;IACJ,OAAO;IACP,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,KAAK;IACL,QAAQ;IACR,MAAM;IACN,GAAG;IACH,kBAAkB;IAClB,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,MAAM;CACP,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;AAC7D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEnD,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,QAAQ,CAAC,mBAAmB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function readLocalAuditLog(tail?: number): Promise<unknown[]>;
@@ -0,0 +1,26 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { CliError } from "../../errors.js";
4
+ import { configDir } from "./paths.js";
5
+ export async function readLocalAuditLog(tail = 100) {
6
+ const auditPath = path.join(configDir, "audit.jsonl");
7
+ let content = "";
8
+ try {
9
+ content = await fs.readFile(auditPath, "utf8");
10
+ }
11
+ catch (error) {
12
+ if (error.code === "ENOENT")
13
+ return [];
14
+ throw error;
15
+ }
16
+ try {
17
+ return content.trim().split("\n").filter(Boolean).slice(-tail).map((line) => JSON.parse(line));
18
+ }
19
+ catch (error) {
20
+ if (error instanceof SyntaxError) {
21
+ throw new CliError("Local audit log contains invalid JSON.", "AUDIT_LOG_INVALID");
22
+ }
23
+ throw error;
24
+ }
25
+ }
26
+ //# sourceMappingURL=audit.js.map