@phnx-labs/agents-cli 1.22.34 → 1.22.37

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 (493) hide show
  1. package/CHANGELOG.md +672 -2
  2. package/README.md +82 -35
  3. package/dist/bin/agents +0 -0
  4. package/dist/bootstrap.d.ts +15 -0
  5. package/dist/bootstrap.js +1211 -0
  6. package/dist/commands/accounts.d.ts +4 -11
  7. package/dist/commands/accounts.js +159 -27
  8. package/dist/commands/attach.js +17 -4
  9. package/dist/commands/audit.d.ts +8 -8
  10. package/dist/commands/audit.js +57 -47
  11. package/dist/commands/browser.js +15 -11
  12. package/dist/commands/cloud.js +1 -1
  13. package/dist/commands/commands.js +0 -11
  14. package/dist/commands/computer-actions.js +33 -0
  15. package/dist/commands/computer-sessions-picker.d.ts +21 -0
  16. package/dist/commands/computer-sessions-picker.js +141 -0
  17. package/dist/commands/computer.d.ts +16 -0
  18. package/dist/commands/computer.js +37 -0
  19. package/dist/commands/config.d.ts +17 -0
  20. package/dist/commands/config.js +401 -0
  21. package/dist/commands/cp.d.ts +84 -0
  22. package/dist/commands/cp.js +231 -0
  23. package/dist/commands/daemon.js +243 -14
  24. package/dist/commands/detach-core.d.ts +1 -1
  25. package/dist/commands/detach-core.js +12 -2
  26. package/dist/commands/detach.js +1 -1
  27. package/dist/commands/doctor.js +64 -5
  28. package/dist/commands/events.d.ts +24 -12
  29. package/dist/commands/events.js +144 -28
  30. package/dist/commands/exec.js +85 -41
  31. package/dist/commands/feed.d.ts +1 -1
  32. package/dist/commands/feed.js +16 -8
  33. package/dist/commands/focus.d.ts +33 -1
  34. package/dist/commands/focus.js +177 -17
  35. package/dist/commands/funnel.d.ts +1 -1
  36. package/dist/commands/go.js +9 -8
  37. package/dist/commands/harness-wizard.d.ts +1 -0
  38. package/dist/commands/harness-wizard.js +18 -20
  39. package/dist/commands/harness.d.ts +2 -0
  40. package/dist/commands/harness.js +59 -26
  41. package/dist/commands/hooks.js +0 -11
  42. package/dist/commands/inspect.d.ts +94 -1
  43. package/dist/commands/inspect.js +866 -40
  44. package/dist/commands/lease.d.ts +4 -4
  45. package/dist/commands/lease.js +6 -6
  46. package/dist/commands/login.js +0 -13
  47. package/dist/commands/logs.d.ts +2 -2
  48. package/dist/commands/logs.js +2 -2
  49. package/dist/commands/mcp.js +7 -2
  50. package/dist/commands/memory.js +7 -2
  51. package/dist/commands/message.d.ts +1 -1
  52. package/dist/commands/message.js +37 -6
  53. package/dist/commands/models.js +4 -0
  54. package/dist/commands/monitors.d.ts +0 -1
  55. package/dist/commands/monitors.js +199 -16
  56. package/dist/commands/open.d.ts +18 -0
  57. package/dist/commands/open.js +57 -0
  58. package/dist/commands/packages.js +2 -107
  59. package/dist/commands/plugins.js +6 -3
  60. package/dist/commands/profiles.d.ts +1 -0
  61. package/dist/commands/profiles.js +16 -160
  62. package/dist/commands/projects.d.ts +28 -0
  63. package/dist/commands/projects.js +125 -5
  64. package/dist/commands/reconnect.js +9 -3
  65. package/dist/commands/repo.js +42 -1
  66. package/dist/commands/resource-view.d.ts +17 -0
  67. package/dist/commands/resource-view.js +36 -14
  68. package/dist/commands/resume.js +9 -2
  69. package/dist/commands/routines.d.ts +0 -2
  70. package/dist/commands/routines.js +473 -289
  71. package/dist/commands/secrets.js +52 -9
  72. package/dist/commands/sessions-export.d.ts +47 -0
  73. package/dist/commands/sessions-export.js +116 -6
  74. package/dist/commands/sessions-import.d.ts +17 -0
  75. package/dist/commands/sessions-import.js +114 -6
  76. package/dist/commands/sessions-migrate.d.ts +27 -0
  77. package/dist/commands/sessions-migrate.js +50 -9
  78. package/dist/commands/sessions-picker.js +23 -4
  79. package/dist/commands/sessions-resume.d.ts +5 -3
  80. package/dist/commands/sessions-resume.js +30 -8
  81. package/dist/commands/sessions-watch.d.ts +2 -0
  82. package/dist/commands/sessions-watch.js +53 -0
  83. package/dist/commands/sessions.d.ts +66 -3
  84. package/dist/commands/sessions.js +298 -47
  85. package/dist/commands/set.d.ts +1 -1
  86. package/dist/commands/set.js +2 -2
  87. package/dist/commands/setup-browser.js +2 -2
  88. package/dist/commands/setup-mine.js +0 -1
  89. package/dist/commands/setup-preferences.js +1 -1
  90. package/dist/commands/setup-share.js +34 -4
  91. package/dist/commands/setup.d.ts +5 -0
  92. package/dist/commands/setup.js +26 -0
  93. package/dist/commands/share.d.ts +85 -0
  94. package/dist/commands/share.js +379 -8
  95. package/dist/commands/skills.js +0 -11
  96. package/dist/commands/snapshot.js +1 -1
  97. package/dist/commands/ssh.d.ts +18 -0
  98. package/dist/commands/ssh.js +549 -210
  99. package/dist/commands/sync.d.ts +5 -0
  100. package/dist/commands/sync.js +212 -32
  101. package/dist/commands/teams.d.ts +13 -0
  102. package/dist/commands/teams.js +187 -30
  103. package/dist/commands/tickets.d.ts +2 -0
  104. package/dist/commands/tickets.js +43 -0
  105. package/dist/commands/update.js +2 -4
  106. package/dist/commands/usage.js +5 -3
  107. package/dist/commands/versions.js +11 -5
  108. package/dist/commands/view.js +15 -7
  109. package/dist/commands/webhook.d.ts +2 -2
  110. package/dist/commands/webhook.js +7 -7
  111. package/dist/index.d.ts +18 -2
  112. package/dist/index.js +53 -1264
  113. package/dist/lib/account-catalog.d.ts +18 -0
  114. package/dist/lib/account-catalog.js +38 -0
  115. package/dist/lib/account-provider-registry.d.ts +18 -0
  116. package/dist/lib/account-provider-registry.js +59 -0
  117. package/dist/lib/account-registry.d.ts +40 -0
  118. package/dist/lib/account-registry.js +239 -0
  119. package/dist/lib/account-schema.d.ts +44 -0
  120. package/dist/lib/account-schema.js +91 -0
  121. package/dist/lib/account-state-service.d.ts +21 -0
  122. package/dist/lib/account-state-service.js +60 -0
  123. package/dist/lib/activity.d.ts +1 -1
  124. package/dist/lib/activity.js +8 -1
  125. package/dist/lib/add-dir.d.ts +80 -0
  126. package/dist/lib/add-dir.js +241 -0
  127. package/dist/lib/agent-cli-commands.d.ts +11 -0
  128. package/dist/lib/agent-cli-commands.js +30 -0
  129. package/dist/lib/agents.js +44 -36
  130. package/dist/lib/answer-router.js +1 -1
  131. package/dist/lib/audit/log.d.ts +10 -27
  132. package/dist/lib/audit/log.js +20 -33
  133. package/dist/lib/auth-health.d.ts +9 -2
  134. package/dist/lib/auth-health.js +42 -9
  135. package/dist/lib/auto-pull-worker.js +7 -3
  136. package/dist/lib/auto-pull.d.ts +44 -3
  137. package/dist/lib/auto-pull.js +88 -5
  138. package/dist/lib/binary-shadow.d.ts +28 -0
  139. package/dist/lib/binary-shadow.js +121 -0
  140. package/dist/lib/brand.js +9 -3
  141. package/dist/lib/browser/ipc.d.ts +30 -0
  142. package/dist/lib/browser/ipc.js +81 -4
  143. package/dist/lib/browser/profiles.d.ts +3 -2
  144. package/dist/lib/browser/profiles.js +65 -22
  145. package/dist/lib/browser/service.d.ts +4 -0
  146. package/dist/lib/browser/service.js +30 -3
  147. package/dist/lib/browser/sessions-list.d.ts +22 -2
  148. package/dist/lib/browser/sessions-list.js +54 -6
  149. package/dist/lib/browser/stream.d.ts +2 -0
  150. package/dist/lib/browser/stream.js +1 -0
  151. package/dist/lib/browser/types.d.ts +19 -0
  152. package/dist/lib/byok-usage.d.ts +9 -2
  153. package/dist/lib/byok-usage.js +133 -31
  154. package/dist/lib/cli-entry.d.ts +11 -0
  155. package/dist/lib/cli-entry.js +46 -0
  156. package/dist/lib/cloud/host.d.ts +1 -1
  157. package/dist/lib/cloud/host.js +2 -2
  158. package/dist/lib/cloud/registry.js +1 -1
  159. package/dist/lib/cloud/types.d.ts +1 -1
  160. package/dist/lib/codex-policy.d.ts +9 -1
  161. package/dist/lib/codex-policy.js +17 -2
  162. package/dist/lib/commands.d.ts +2 -0
  163. package/dist/lib/commands.js +2 -0
  164. package/dist/lib/computer/sessions-list.d.ts +150 -0
  165. package/dist/lib/computer/sessions-list.js +363 -0
  166. package/dist/lib/config-keys.d.ts +86 -0
  167. package/dist/lib/config-keys.js +193 -0
  168. package/dist/lib/config-machine-keys.d.ts +12 -0
  169. package/dist/lib/config-machine-keys.js +17 -0
  170. package/dist/lib/config-transfer.js +3 -4
  171. package/dist/lib/crabbox/cli.d.ts +2 -2
  172. package/dist/lib/crabbox/cli.js +3 -3
  173. package/dist/lib/daemon-health.d.ts +22 -0
  174. package/dist/lib/daemon-health.js +33 -3
  175. package/dist/lib/daemon-services.d.ts +50 -0
  176. package/dist/lib/daemon-services.js +147 -0
  177. package/dist/lib/daemon-ticks.d.ts +35 -66
  178. package/dist/lib/daemon-ticks.js +77 -159
  179. package/dist/lib/daemon.d.ts +72 -4
  180. package/dist/lib/daemon.js +792 -202
  181. package/dist/lib/deeplink/register.d.ts +49 -0
  182. package/dist/lib/deeplink/register.js +253 -0
  183. package/dist/lib/deeplink/url.d.ts +34 -0
  184. package/dist/lib/deeplink/url.js +78 -0
  185. package/dist/lib/device-config.d.ts +124 -29
  186. package/dist/lib/device-config.js +346 -141
  187. package/dist/lib/devices/config-migration.d.ts +42 -0
  188. package/dist/lib/devices/config-migration.js +203 -0
  189. package/dist/lib/devices/connect.js +14 -7
  190. package/dist/lib/devices/doctor-findings.d.ts +4 -1
  191. package/dist/lib/devices/doctor-findings.js +20 -1
  192. package/dist/lib/devices/harness-inventory.d.ts +11 -2
  193. package/dist/lib/devices/harness-inventory.js +0 -0
  194. package/dist/lib/devices/health.d.ts +1 -1
  195. package/dist/lib/devices/health.js +1 -1
  196. package/dist/lib/devices/pending.d.ts +22 -1
  197. package/dist/lib/devices/pending.js +67 -2
  198. package/dist/lib/devices/registry.d.ts +0 -25
  199. package/dist/lib/devices/registry.js +2 -83
  200. package/dist/lib/devices/resolve-profile.d.ts +20 -0
  201. package/dist/lib/devices/resolve-profile.js +44 -0
  202. package/dist/lib/devices/rollout-verify.d.ts +101 -0
  203. package/dist/lib/devices/rollout-verify.js +193 -0
  204. package/dist/lib/devices/ssh-config.js +10 -6
  205. package/dist/lib/event-families.d.ts +28 -0
  206. package/dist/lib/event-families.js +159 -0
  207. package/dist/lib/event-stream.d.ts +9 -1
  208. package/dist/lib/event-stream.js +26 -9
  209. package/dist/lib/events.d.ts +9 -1
  210. package/dist/lib/events.js +21 -6
  211. package/dist/lib/exec.d.ts +30 -0
  212. package/dist/lib/exec.js +220 -122
  213. package/dist/lib/feed-broadcast.d.ts +25 -0
  214. package/dist/lib/feed-broadcast.js +33 -0
  215. package/dist/lib/feed.d.ts +1 -1
  216. package/dist/lib/feed.js +12 -2
  217. package/dist/lib/fleet/capture.js +15 -0
  218. package/dist/lib/fleet/manifest.js +9 -0
  219. package/dist/lib/fleet/types.d.ts +9 -0
  220. package/dist/lib/fleet-status.js +10 -8
  221. package/dist/lib/git.d.ts +20 -6
  222. package/dist/lib/git.js +121 -17
  223. package/dist/lib/hosts/dispatch.d.ts +8 -3
  224. package/dist/lib/hosts/dispatch.js +29 -3
  225. package/dist/lib/hosts/logs.d.ts +2 -2
  226. package/dist/lib/hosts/logs.js +2 -2
  227. package/dist/lib/hosts/option.js +1 -1
  228. package/dist/lib/hosts/passthrough.d.ts +2 -3
  229. package/dist/lib/hosts/passthrough.js +10 -24
  230. package/dist/lib/hosts/progress.js +2 -2
  231. package/dist/lib/hosts/providers/devices.d.ts +3 -3
  232. package/dist/lib/hosts/providers/devices.js +18 -12
  233. package/dist/lib/hosts/ready.d.ts +5 -1
  234. package/dist/lib/hosts/ready.js +9 -3
  235. package/dist/lib/hosts/reconcile.d.ts +2 -2
  236. package/dist/lib/hosts/reconcile.js +2 -2
  237. package/dist/lib/hosts/registry.js +14 -9
  238. package/dist/lib/hosts/remote-cmd.js +1 -1
  239. package/dist/lib/hosts/remote-os.d.ts +9 -6
  240. package/dist/lib/hosts/remote-os.js +13 -6
  241. package/dist/lib/hosts/routing-flag.d.ts +23 -0
  242. package/dist/lib/hosts/routing-flag.js +41 -0
  243. package/dist/lib/hosts/run-target.js +1 -1
  244. package/dist/lib/hosts/session-index.js +1 -1
  245. package/dist/lib/hosts/tasks.d.ts +6 -6
  246. package/dist/lib/hosts/tasks.js +4 -4
  247. package/dist/lib/hosts/types.js +1 -2
  248. package/dist/lib/installations/resolve.js +2 -8
  249. package/dist/lib/isolation-boundary-report.js +0 -1
  250. package/dist/lib/linear-cache.d.ts +7 -0
  251. package/dist/lib/linear-cache.js +31 -4
  252. package/dist/lib/linear-project-counts.d.ts +1 -1
  253. package/dist/lib/linear-project-counts.js +2 -3
  254. package/dist/lib/linear-projects.js +1 -1
  255. package/dist/lib/loop.d.ts +2 -2
  256. package/dist/lib/loop.js +1 -1
  257. package/dist/lib/mailbox-target.d.ts +1 -1
  258. package/dist/lib/mailbox-target.js +1 -1
  259. package/dist/lib/manifest.js +7 -4
  260. package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
  261. package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
  262. package/dist/lib/menubar/snapshot.d.ts +3 -2
  263. package/dist/lib/menubar/snapshot.js +6 -2
  264. package/dist/lib/migrate-fold.d.ts +33 -0
  265. package/dist/lib/migrate-fold.js +130 -0
  266. package/dist/lib/migrate.d.ts +34 -34
  267. package/dist/lib/migrate.js +106 -128
  268. package/dist/lib/model-tier-overrides.d.ts +1 -1
  269. package/dist/lib/model-tier-overrides.js +15 -2
  270. package/dist/lib/monitors/config.d.ts +17 -3
  271. package/dist/lib/monitors/config.js +52 -18
  272. package/dist/lib/monitors/engine.d.ts +32 -1
  273. package/dist/lib/monitors/engine.js +94 -11
  274. package/dist/lib/monitors/fingerprint.d.ts +46 -0
  275. package/dist/lib/monitors/fingerprint.js +100 -0
  276. package/dist/lib/monitors/remote.d.ts +47 -0
  277. package/dist/lib/monitors/remote.js +81 -0
  278. package/dist/lib/monitors/state.d.ts +39 -0
  279. package/dist/lib/monitors/state.js +56 -0
  280. package/dist/lib/onepassword.d.ts +17 -0
  281. package/dist/lib/onepassword.js +52 -22
  282. package/dist/lib/open-url.js +1 -1
  283. package/dist/lib/picker.d.ts +14 -2
  284. package/dist/lib/picker.js +35 -13
  285. package/dist/lib/placement.d.ts +1 -1
  286. package/dist/lib/placement.js +1 -1
  287. package/dist/lib/pr-land-detach.d.ts +32 -0
  288. package/dist/lib/pr-land-detach.js +79 -0
  289. package/dist/lib/profiles-presets.js +13 -0
  290. package/dist/lib/profiles.d.ts +2 -0
  291. package/dist/lib/profiles.js +44 -1
  292. package/dist/lib/project-focus.d.ts +1 -1
  293. package/dist/lib/project-focus.js +1 -1
  294. package/dist/lib/project-key.d.ts +17 -0
  295. package/dist/lib/project-key.js +26 -0
  296. package/dist/lib/project-probe.d.ts +4 -1
  297. package/dist/lib/project-probe.js +5 -4
  298. package/dist/lib/project-resources.js +2 -18
  299. package/dist/lib/project-root.d.ts +16 -0
  300. package/dist/lib/project-root.js +20 -2
  301. package/dist/lib/projects.d.ts +20 -1
  302. package/dist/lib/projects.js +78 -1
  303. package/dist/lib/refresh-coordinator.d.ts +24 -0
  304. package/dist/lib/refresh-coordinator.js +52 -0
  305. package/dist/lib/registry.d.ts +2 -2
  306. package/dist/lib/registry.js +1 -1
  307. package/dist/lib/resource-aliases.d.ts +13 -0
  308. package/dist/lib/resource-aliases.js +26 -0
  309. package/dist/lib/resources/types.d.ts +1 -1
  310. package/dist/lib/resources.d.ts +16 -0
  311. package/dist/lib/resources.js +66 -10
  312. package/dist/lib/rotate.d.ts +3 -4
  313. package/dist/lib/rotate.js +4 -5
  314. package/dist/lib/routine-activation.d.ts +22 -2
  315. package/dist/lib/routine-activation.js +63 -16
  316. package/dist/lib/routine-context.d.ts +9 -2
  317. package/dist/lib/routine-context.js +21 -6
  318. package/dist/lib/routines-project.d.ts +58 -48
  319. package/dist/lib/routines-project.js +190 -159
  320. package/dist/lib/routines.d.ts +41 -6
  321. package/dist/lib/routines.js +92 -34
  322. package/dist/lib/run-defaults.d.ts +5 -0
  323. package/dist/lib/run-defaults.js +11 -1
  324. package/dist/lib/runner.d.ts +10 -8
  325. package/dist/lib/runner.js +122 -39
  326. package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
  327. package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
  328. package/dist/lib/secrets/agent.d.ts +10 -3
  329. package/dist/lib/secrets/agent.js +43 -8
  330. package/dist/lib/secrets/bundles.d.ts +1 -0
  331. package/dist/lib/secrets/bundles.js +92 -80
  332. package/dist/lib/secrets/index.js +32 -9
  333. package/dist/lib/secrets/install-helper.d.ts +4 -4
  334. package/dist/lib/secrets/install-helper.js +4 -4
  335. package/dist/lib/secrets/push.d.ts +40 -6
  336. package/dist/lib/secrets/push.js +58 -11
  337. package/dist/lib/secrets/read-backoff.d.ts +1 -1
  338. package/dist/lib/secrets/read-backoff.js +1 -1
  339. package/dist/lib/secrets/remote.d.ts +24 -0
  340. package/dist/lib/secrets/remote.js +54 -4
  341. package/dist/lib/self-update.d.ts +108 -0
  342. package/dist/lib/self-update.js +276 -1
  343. package/dist/lib/session/active.d.ts +89 -5
  344. package/dist/lib/session/active.js +165 -10
  345. package/dist/lib/session/actor-sidecar.d.ts +1 -1
  346. package/dist/lib/session/actor-sidecar.js +2 -1
  347. package/dist/lib/session/db.d.ts +176 -2
  348. package/dist/lib/session/db.js +484 -17
  349. package/dist/lib/session/discover.js +27 -4
  350. package/dist/lib/session/hook-sessions.js +2 -2
  351. package/dist/lib/session/host-link.d.ts +2 -2
  352. package/dist/lib/session/host-link.js +2 -2
  353. package/dist/lib/session/pid-registry.d.ts +21 -0
  354. package/dist/lib/session/pid-registry.js +57 -0
  355. package/dist/lib/session/remote-active.js +15 -1
  356. package/dist/lib/session/remote.js +2 -2
  357. package/dist/lib/session/session-cache.d.ts +14 -7
  358. package/dist/lib/session/session-cache.js +51 -9
  359. package/dist/lib/session/state.d.ts +2 -2
  360. package/dist/lib/session/state.js +1 -1
  361. package/dist/lib/session/sync/config.d.ts +10 -10
  362. package/dist/lib/session/sync/config.js +10 -10
  363. package/dist/lib/session/sync/r2.d.ts +34 -0
  364. package/dist/lib/session/sync/r2.js +123 -0
  365. package/dist/lib/session/throughput.d.ts +1 -1
  366. package/dist/lib/session/throughput.js +1 -1
  367. package/dist/lib/session/types.d.ts +23 -1
  368. package/dist/lib/session/types.js +15 -0
  369. package/dist/lib/session/viewing-in.d.ts +1 -1
  370. package/dist/lib/session/viewing-in.js +1 -1
  371. package/dist/lib/session/watch.d.ts +101 -0
  372. package/dist/lib/session/watch.js +242 -0
  373. package/dist/lib/share/config.d.ts +4 -0
  374. package/dist/lib/share/config.js +1 -0
  375. package/dist/lib/share/delete.d.ts +93 -0
  376. package/dist/lib/share/delete.js +127 -0
  377. package/dist/lib/share/provision.d.ts +38 -0
  378. package/dist/lib/share/provision.js +50 -0
  379. package/dist/lib/share/publish.d.ts +40 -1
  380. package/dist/lib/share/publish.js +116 -3
  381. package/dist/lib/share/worker-template.js +71 -6
  382. package/dist/lib/shims.d.ts +17 -3
  383. package/dist/lib/shims.js +136 -27
  384. package/dist/lib/signin-badge.js +3 -2
  385. package/dist/lib/skills.js +2 -0
  386. package/dist/lib/smart-launch.d.ts +8 -8
  387. package/dist/lib/smart-launch.js +80 -59
  388. package/dist/lib/ssh-exec.d.ts +1 -1
  389. package/dist/lib/ssh-exec.js +1 -1
  390. package/dist/lib/staleness/prune.d.ts +88 -0
  391. package/dist/lib/staleness/prune.js +69 -0
  392. package/dist/lib/staleness/registry.d.ts +1 -1
  393. package/dist/lib/staleness/writers/commands.js +34 -2
  394. package/dist/lib/staleness/writers/hooks.js +16 -0
  395. package/dist/lib/staleness/writers/kinds.d.ts +6 -0
  396. package/dist/lib/staleness/writers/skills.js +19 -0
  397. package/dist/lib/staleness/writers/subagents.d.ts +2 -3
  398. package/dist/lib/staleness/writers/subagents.js +0 -4
  399. package/dist/lib/staleness/writers/types.d.ts +32 -0
  400. package/dist/lib/startup/command-registry.d.ts +6 -12
  401. package/dist/lib/startup/command-registry.js +14 -31
  402. package/dist/lib/startup/dev-build.d.ts +10 -0
  403. package/dist/lib/startup/dev-build.js +13 -1
  404. package/dist/lib/startup/spellcheck.d.ts +18 -0
  405. package/dist/lib/startup/spellcheck.js +45 -0
  406. package/dist/lib/state.d.ts +36 -9
  407. package/dist/lib/state.js +96 -46
  408. package/dist/lib/subagents-registry.d.ts +0 -7
  409. package/dist/lib/subagents-registry.js +38 -65
  410. package/dist/lib/subagents.d.ts +0 -33
  411. package/dist/lib/subagents.js +0 -75
  412. package/dist/lib/sync-umbrella.js +1 -1
  413. package/dist/lib/teams/agents.d.ts +41 -1
  414. package/dist/lib/teams/agents.js +187 -9
  415. package/dist/lib/teams/api.d.ts +11 -1
  416. package/dist/lib/teams/api.js +11 -2
  417. package/dist/lib/teams/delivery.d.ts +41 -0
  418. package/dist/lib/teams/delivery.js +60 -0
  419. package/dist/lib/teams/registry.d.ts +14 -0
  420. package/dist/lib/teams/registry.js +51 -1
  421. package/dist/lib/teams/remoteWorktree.d.ts +19 -0
  422. package/dist/lib/teams/remoteWorktree.js +29 -0
  423. package/dist/lib/teams/scheduler.d.ts +1 -1
  424. package/dist/lib/teams/scheduler.js +1 -1
  425. package/dist/lib/teams/worktree.d.ts +24 -0
  426. package/dist/lib/teams/worktree.js +42 -0
  427. package/dist/lib/terminal/backends/vscodium-agent.d.ts +10 -1
  428. package/dist/lib/terminal/backends/vscodium-agent.js +16 -5
  429. package/dist/lib/terminal/engine.d.ts +4 -0
  430. package/dist/lib/terminal/engine.js +8 -2
  431. package/dist/lib/terminal/types.d.ts +21 -2
  432. package/dist/lib/testdata/refresh-coordinator-worker.d.ts +1 -0
  433. package/dist/lib/testdata/refresh-coordinator-worker.js +23 -0
  434. package/dist/lib/tickets/list.d.ts +53 -0
  435. package/dist/lib/tickets/list.js +153 -0
  436. package/dist/lib/tmux/orphan-reap.d.ts +320 -0
  437. package/dist/lib/tmux/orphan-reap.js +644 -0
  438. package/dist/lib/tmux/session.d.ts +68 -3
  439. package/dist/lib/tmux/session.js +95 -5
  440. package/dist/lib/triggers/handlers.d.ts +20 -0
  441. package/dist/lib/triggers/handlers.js +6 -1
  442. package/dist/lib/types.d.ts +46 -34
  443. package/dist/lib/usage-fleet.d.ts +32 -0
  444. package/dist/lib/usage-fleet.js +125 -0
  445. package/dist/lib/usage-refresh.d.ts +3 -3
  446. package/dist/lib/usage-refresh.js +19 -16
  447. package/dist/lib/usage.d.ts +51 -47
  448. package/dist/lib/usage.js +145 -153
  449. package/dist/lib/version-duplicates.js +2 -2
  450. package/dist/lib/versions.d.ts +56 -13
  451. package/dist/lib/versions.js +195 -45
  452. package/dist/lib/watchdog/log.d.ts +1 -1
  453. package/dist/lib/watchdog/log.js +3 -3
  454. package/dist/lib/watchdog/rotate.d.ts +6 -6
  455. package/dist/lib/watchdog/rotate.js +6 -6
  456. package/dist/lib/workflows.d.ts +1 -1
  457. package/dist/lib/yaml-io.d.ts +47 -0
  458. package/dist/lib/yaml-io.js +55 -0
  459. package/package.json +2 -1
  460. package/scripts/install-helper.js +2 -2
  461. package/scripts/postinstall.js +23 -20
  462. package/dist/commands/defaults.d.ts +0 -7
  463. package/dist/commands/defaults.js +0 -107
  464. package/dist/commands/export.d.ts +0 -11
  465. package/dist/commands/export.js +0 -215
  466. package/dist/commands/helper.d.ts +0 -12
  467. package/dist/commands/helper.js +0 -87
  468. package/dist/commands/hosts.d.ts +0 -11
  469. package/dist/commands/hosts.js +0 -330
  470. package/dist/commands/lock.d.ts +0 -12
  471. package/dist/commands/lock.js +0 -70
  472. package/dist/commands/pull.d.ts +0 -17
  473. package/dist/commands/pull.js +0 -39
  474. package/dist/commands/push.d.ts +0 -14
  475. package/dist/commands/push.js +0 -30
  476. package/dist/commands/wallet.d.ts +0 -20
  477. package/dist/commands/wallet.js +0 -216
  478. package/dist/commands/worktree.d.ts +0 -19
  479. package/dist/commands/worktree.js +0 -272
  480. package/dist/lib/account-labels.d.ts +0 -24
  481. package/dist/lib/account-labels.js +0 -72
  482. package/dist/lib/auto-dispatch-linear.d.ts +0 -18
  483. package/dist/lib/auto-dispatch-linear.js +0 -107
  484. package/dist/lib/auto-dispatch-provider.d.ts +0 -10
  485. package/dist/lib/auto-dispatch-provider.js +0 -30
  486. package/dist/lib/auto-dispatch.d.ts +0 -93
  487. package/dist/lib/auto-dispatch.js +0 -128
  488. package/dist/lib/export.d.ts +0 -72
  489. package/dist/lib/export.js +0 -269
  490. package/dist/lib/lock.d.ts +0 -93
  491. package/dist/lib/lock.js +0 -207
  492. package/dist/lib/wallet/index.d.ts +0 -78
  493. package/dist/lib/wallet/index.js +0 -253
@@ -375,49 +375,52 @@ function retargetManagedLinksToNativeBin() {
375
375
  }
376
376
 
377
377
  /**
378
- * Self-heal long-running processes onto the just-installed code (macOS).
378
+ * Self-heal long-running processes onto the just-installed code (darwin + linux).
379
379
  *
380
380
  * The root cause behind stale-behavior bugs is a daemon/broker that keeps
381
381
  * running pre-upgrade code for days. An in-place `npm i -g` swaps the files but
382
382
  * not the running processes — so we bounce them here, the one moment we know the
383
- * code just changed. Best-effort and non-fatal: a failure must never break the
384
- * install. Skipped in CI and when AGENTS_NO_HEAL=1.
383
+ * code just changed. Always start (or restart) the supervised daemon so a fresh
384
+ * install gets launchd/systemd KeepAlive without waiting for routines add.
385
+ * Best-effort and non-fatal: a failure must never break the install. Skipped in
386
+ * CI and when AGENTS_NO_HEAL=1. Windows is out of scope (detached-only, no KeepAlive).
385
387
  */
386
388
  async function healLongRunningProcesses() {
387
- if (process.platform !== 'darwin') return;
389
+ if (process.platform !== 'darwin' && process.platform !== 'linux') return;
388
390
  if (process.env.CI || process.env.AGENTS_NO_HEAL === '1') return;
389
391
 
390
392
  // Retire the legacy standalone secrets-agent service FIRST (#416 step 2) so
391
393
  // that when the daemon (re)starts below its coexistence guard sees no
392
394
  // standalone broker and hosts the broker socket itself. No-op if no legacy
393
- // plist is present; never blocks.
394
- let retiredLegacyBroker = false;
395
+ // plist is present; never blocks. Darwin-only in practice (launchd service).
395
396
  try {
396
397
  const a = await import('../dist/lib/secrets/agent.js');
397
398
  if (a.secretsAgentServiceInstalled?.()) {
398
399
  a.retireLegacySecretsAgentService?.();
399
- retiredLegacyBroker = true;
400
400
  console.log(' Retired the standalone secrets-agent service — the daemon now hosts the broker.');
401
401
  }
402
402
  } catch { /* best effort */ }
403
403
 
404
- // Routines daemon: restart so it reloads new code (e.g. picks up keychain
405
- // read-memoization / broker fast-path that a stale daemon wouldn't have) and
406
- // (re)hosts the broker socket now the legacy service is gone. If it wasn't
407
- // running but we just retired a broker the user relied on, start it so the
408
- // socket has a host.
404
+ // Always (re)start so first install writes the LaunchAgent/systemd unit and
405
+ // upgrades bounce onto the new binary but honor daemon.enabled for cold
406
+ // starts (SING-4a). If it was already running under a disable, stop and leave
407
+ // it down so upgrade does not resurrect a killed switch.
409
408
  try {
410
409
  const d = await import('../dist/lib/daemon.js');
411
- if (d.isDaemonRunning?.()) {
410
+ const { isDaemonEnabled } = await import('../dist/lib/device-config.js');
411
+ const wasRunning = Boolean(d.isDaemonRunning?.());
412
+ const enabled = typeof isDaemonEnabled === 'function' ? isDaemonEnabled() : true;
413
+ if (wasRunning) {
412
414
  d.stopDaemon?.();
413
- // This lifecycle script is process.argv[1] while npm is installing. Pin
414
- // the restart to the installed CLI entrypoint so the service manifest
415
- // never records scripts/postinstall.js as the daemon command.
416
- d.startDaemon?.(AGENTS_BIN);
417
- console.log(' Restarted the routines daemon onto this version.');
418
- } else if (retiredLegacyBroker) {
415
+ if (enabled) {
416
+ d.startDaemon?.(AGENTS_BIN);
417
+ console.log(' Restarted the routines daemon onto this version.');
418
+ } else {
419
+ console.log(' Stopped the routines daemon (daemon.enabled=false not restarted).');
420
+ }
421
+ } else if (enabled) {
419
422
  d.startDaemon?.(AGENTS_BIN);
420
- console.log(' Started the daemon to host the secrets broker.');
423
+ console.log(' Started the always-on agents daemon.');
421
424
  }
422
425
  } catch { /* best effort */ }
423
426
  }
@@ -1,7 +0,0 @@
1
- /**
2
- * Defaults command tree.
3
- *
4
- * `agents defaults run ...` manages selector-based defaults for `agents run`.
5
- */
6
- import type { Command } from 'commander';
7
- export declare function registerDefaultsCommands(program: Command): void;
@@ -1,107 +0,0 @@
1
- /**
2
- * Defaults command tree.
3
- *
4
- * `agents defaults run ...` manages selector-based defaults for `agents run`.
5
- */
6
- import chalk from 'chalk';
7
- import { setHelpSections } from '../lib/help.js';
8
- import { formatRunDefaultEntry, listRunDefaults, setRunDefault, unsetRunDefault, } from '../lib/run-defaults.js';
9
- import { getProjectRoot, setProjectRoot } from '../lib/project-root.js';
10
- export function registerDefaultsCommands(program) {
11
- const defaults = program
12
- .command('defaults')
13
- .description('Manage default options for agents-cli commands');
14
- const run = defaults
15
- .command('run')
16
- .description('Manage selector-based defaults for `agents run`');
17
- setHelpSections(run, {
18
- examples: `
19
- agents defaults run list
20
- agents defaults run set 'claude:*' --mode auto --model opus
21
- agents defaults run set claude@2.1.45 --mode plan --model sonnet
22
- agents defaults run unset 'claude:*'
23
- `,
24
- notes: `
25
- Selectors use <agent>:<version>. Use * for all versions of an agent.
26
- Exact selectors override wildcard selectors field by field.
27
- Explicit flags on agents run always win over configured defaults.
28
- `,
29
- });
30
- run
31
- .command('list')
32
- .description('List configured run defaults')
33
- .action(() => {
34
- const entries = listRunDefaults();
35
- if (entries.length === 0) {
36
- console.log(chalk.gray('No run defaults configured.'));
37
- console.log(chalk.gray("Set one with: agents defaults run set 'claude:*' --mode auto --model opus"));
38
- return;
39
- }
40
- console.log(chalk.bold('Run Defaults\n'));
41
- for (const entry of entries) {
42
- console.log(` ${formatRunDefaultEntry(entry)}`);
43
- }
44
- });
45
- run
46
- .command('set <selector>')
47
- .description('Set defaults for an agent/version selector')
48
- .option('--mode <mode>', "Default mode: plan, edit, auto, skip. 'full' accepted as alias for skip.")
49
- .option('--model <model>', 'Default model or model alias, forwarded via --model')
50
- .option('--effort <effort>', 'Default reasoning effort: low, medium, high, xhigh, max, or auto')
51
- .action((selector, options) => {
52
- try {
53
- const entry = setRunDefault(selector, {
54
- ...(options.mode !== undefined ? { mode: options.mode } : {}),
55
- ...(options.model !== undefined ? { model: options.model } : {}),
56
- ...(options.effort !== undefined ? { effort: options.effort } : {}),
57
- });
58
- console.log(chalk.green('Set run default:'));
59
- console.log(` ${formatRunDefaultEntry(entry)}`);
60
- }
61
- catch (err) {
62
- console.error(chalk.red(err.message));
63
- process.exit(1);
64
- }
65
- });
66
- run
67
- .command('unset <selector>')
68
- .description('Remove defaults for an agent/version selector')
69
- .action((selector) => {
70
- try {
71
- const removed = unsetRunDefault(selector);
72
- if (removed) {
73
- console.log(chalk.green(`Removed run default ${selector}`));
74
- }
75
- else {
76
- console.log(chalk.gray(`No run default matched ${selector}`));
77
- }
78
- }
79
- catch (err) {
80
- console.error(chalk.red(err.message));
81
- process.exit(1);
82
- }
83
- });
84
- defaults
85
- .command('project-root [path]')
86
- .description('Show or set the projects root for `agents run --project` (auto-inferred when unset)')
87
- .action((rootPath) => {
88
- try {
89
- if (!rootPath) {
90
- const current = getProjectRoot();
91
- if (current) {
92
- console.log(`Projects root: ${chalk.white(current)}`);
93
- }
94
- else {
95
- console.log(chalk.gray('Projects root not set — auto-inferred and cached on first `--project` use.'));
96
- }
97
- return;
98
- }
99
- const stored = setProjectRoot(rootPath);
100
- console.log(chalk.green(`Set projects root: ${stored}`));
101
- }
102
- catch (err) {
103
- console.error(chalk.red(err.message));
104
- process.exit(1);
105
- }
106
- });
107
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * `agents export <agent>[@<version>]` — copy an isolated install's config out to the
3
- * user's real `~/.<agent>`.
4
- *
5
- * The exit door for `--isolated`. Default is additive: your files are never modified,
6
- * and anything that collides is written beside yours so you can diff and take what you
7
- * want. A receipt records what came from the export, so "which of these are mine?" has
8
- * an answer and the whole thing can be undone.
9
- */
10
- import type { Command } from 'commander';
11
- export declare function registerExportCommand(program: Command): void;
@@ -1,215 +0,0 @@
1
- import chalk from 'chalk';
2
- import { execFileSync } from 'child_process';
3
- import { confirm, select } from '@inquirer/prompts';
4
- import { AGENTS, agentLabel, formatAgentError, resolveAgentName } from '../lib/agents.js';
5
- import { listInstalledVersions, isVersionIsolated } from '../lib/versions.js';
6
- import { planExport, executeExport, CONFLICT_SUFFIX } from '../lib/export.js';
7
- import { isInteractiveTerminal, isPromptCancelled } from './utils.js';
8
- function isolatedVersions(agent) {
9
- return listInstalledVersions(agent).filter((v) => isVersionIsolated(agent, v));
10
- }
11
- /** Explain a blocker in terms of what the user should do instead. */
12
- function reportBlocker(plan) {
13
- const label = agentLabel(plan.agent);
14
- const b = plan.blocker;
15
- switch (b.kind) {
16
- case 'not-installed':
17
- console.log(chalk.red(`${label}@${plan.version} is not installed.`));
18
- console.log(chalk.gray(` Installed: ${listInstalledVersions(plan.agent).join(', ') || 'none'}`));
19
- break;
20
- case 'not-isolated':
21
- console.log(chalk.yellow(`${label}@${plan.version} is not an isolated install.`));
22
- console.log(chalk.gray(` A normal install's config already IS ${plan.dest} (adoption symlinks it),`));
23
- console.log(chalk.gray(' so there is nothing to export. To un-adopt it, use: agents uninstall'));
24
- break;
25
- case 'no-config':
26
- console.log(chalk.yellow(`${label}@${plan.version} has no config to export yet (${b.source} is empty).`));
27
- console.log(chalk.gray(` Run it once first: agents run ${plan.agent}@${plan.version}`));
28
- break;
29
- case 'dest-adopted':
30
- console.log(chalk.red(`${b.realPath} is managed by agents-cli (adopted by ${label}@${b.adoptedVersion}).`));
31
- console.log(chalk.gray(' Exporting would write into that version\'s home, not your real config.'));
32
- console.log(chalk.gray(` Release it first: agents uninstall (or agents remove ${plan.agent}@${b.adoptedVersion})`));
33
- break;
34
- }
35
- }
36
- /** Unified diff between the user's file and the incoming one, via git. */
37
- function printDiff(existing, incoming) {
38
- try {
39
- execFileSync('git', ['diff', '--no-index', '--color', '--', existing, incoming], {
40
- stdio: ['ignore', 'inherit', 'ignore'],
41
- });
42
- }
43
- catch {
44
- // git diff --no-index exits 1 when files differ; output already streamed.
45
- }
46
- }
47
- function printPlan(plan, opts) {
48
- const label = agentLabel(plan.agent);
49
- console.log(chalk.bold(`Export ${label}@${plan.version} -> ${plan.dest} ${chalk.gray(`[${plan.mode}]`)}\n`));
50
- console.log(` ${chalk.gray('from')} ${plan.source}`);
51
- console.log(` ${chalk.gray('to')} ${plan.stagedPath ?? plan.dest}`);
52
- console.log();
53
- if (plan.mode === 'replace') {
54
- console.log(chalk.yellow(` Replacing ${plan.dest} wholesale — ${plan.writes.length} file(s).`));
55
- if (plan.backupPath)
56
- console.log(chalk.gray(` Your current config moves to: ${plan.backupPath}`));
57
- else if (plan.destKind === 'foreign-symlink') {
58
- console.log(chalk.yellow(` ${plan.dest} is a symlink agents-cli does not own; it will be removed.`));
59
- console.log(chalk.gray(' Its target is left untouched.'));
60
- }
61
- }
62
- else if (plan.mode === 'staged') {
63
- console.log(chalk.gray(` Writing ${plan.writes.length} file(s) into ${plan.stagedPath}.`));
64
- console.log(chalk.gray(' Nothing is activated — your config is untouched.'));
65
- }
66
- else {
67
- if (plan.writes.length > 0) {
68
- console.log(chalk.green(` ${plan.writes.length} new file(s) will be added:`));
69
- for (const w of plan.writes.slice(0, 15))
70
- console.log(chalk.gray(` + ${w.rel}`));
71
- if (plan.writes.length > 15)
72
- console.log(chalk.gray(` + ${plan.writes.length - 15} more`));
73
- }
74
- else {
75
- console.log(chalk.gray(' No new files to add.'));
76
- }
77
- if (plan.conflicts.length > 0) {
78
- console.log();
79
- console.log(chalk.yellow(` ${plan.conflicts.length} file(s) you already have — YOURS ARE NOT MODIFIED.`));
80
- console.log(chalk.gray(` The incoming version is written beside each as *${CONFLICT_SUFFIX}:`));
81
- for (const c of plan.conflicts.slice(0, 15))
82
- console.log(chalk.gray(` ~ ${c.rel}`));
83
- if (plan.conflicts.length > 15)
84
- console.log(chalk.gray(` ~ ${plan.conflicts.length - 15} more`));
85
- }
86
- }
87
- if (opts.diff && plan.conflicts.length > 0) {
88
- for (const c of plan.conflicts) {
89
- console.log(chalk.bold(`\n─── ${c.rel} ───`));
90
- printDiff(c.existing, c.source);
91
- }
92
- }
93
- console.log(chalk.gray(`\n Receipt: ${plan.receiptPath}`));
94
- }
95
- export function registerExportCommand(program) {
96
- program
97
- .command('export <spec>')
98
- .description('Copy an isolated install\'s config out to your real ~/.<agent>')
99
- .option('--replace', 'Replace your config wholesale (yours is backed up) instead of merging')
100
- .option('--staged', 'Write into ~/.<agent>/.agents-export-<ts>/ and activate nothing')
101
- .option('--diff', 'Show a unified diff for each file you already have')
102
- .option('--dry-run', 'Show what would change without writing anything')
103
- .option('-y, --yes', 'Skip the confirmation prompt')
104
- .addHelpText('after', `
105
- Modes:
106
- (default) merge — additive. Your files are NEVER modified. Anything that
107
- collides is written beside yours as <name>${CONFLICT_SUFFIX}
108
- so you can diff and take the parts you want.
109
- --replace — the isolated config becomes ~/.<agent>; yours is moved to
110
- backups/<agent>/<ts>. For promoting a sandbox wholesale.
111
- --staged — dump the tree into ~/.<agent>/.agents-export-<ts>/ and
112
- activate nothing. For inspecting first.
113
-
114
- Every mode writes a receipt to ~/.<agent>/.agents-cli-export.json listing exactly
115
- what came from the export — so you can tell your settings from the CLI's, and undo it.
116
-
117
- Examples:
118
- agents export codex --dry-run # see the plan
119
- agents export codex --diff # ...and the deltas on colliding files
120
- agents export codex # additive; nothing of yours changes
121
- agents export codex@0.144.6 --replace # promote the sandbox wholesale
122
-
123
- Note: file CONTENTS are never auto-merged. The TOML parser here does not preserve
124
- comments, so merging keys would silently delete them. You get both files and a diff.
125
- `)
126
- .action(async (spec, options) => {
127
- if (options.replace && options.staged) {
128
- console.error(chalk.red('--replace and --staged are mutually exclusive; pass only one.'));
129
- process.exit(1);
130
- }
131
- const mode = options.replace ? 'replace' : options.staged ? 'staged' : 'merge';
132
- const [rawAgent, rawVersion] = spec.split('@');
133
- const agent = resolveAgentName(rawAgent);
134
- if (!agent) {
135
- console.error(chalk.red(formatAgentError(rawAgent)));
136
- process.exit(1);
137
- }
138
- let version = rawVersion;
139
- if (!version) {
140
- const candidates = isolatedVersions(agent);
141
- if (candidates.length === 0) {
142
- console.log(chalk.yellow(`No isolated ${agentLabel(agent)} installs to export.`));
143
- console.log(chalk.gray(` Create one with: agents add ${agent}@<version> --isolated`));
144
- return;
145
- }
146
- if (candidates.length === 1) {
147
- version = candidates[0];
148
- }
149
- else if (isInteractiveTerminal()) {
150
- version = await select({
151
- message: `Which isolated ${agentLabel(agent)} version?`,
152
- choices: candidates.map((v) => ({ name: v, value: v })),
153
- }).catch((err) => {
154
- if (isPromptCancelled(err))
155
- process.exit(130);
156
- throw err;
157
- });
158
- }
159
- else {
160
- console.error(chalk.red(`${agentLabel(agent)} has several isolated installs; name one.`));
161
- console.error(chalk.gray(` ${candidates.map((v) => `agents export ${agent}@${v}`).join('\n ')}`));
162
- process.exit(1);
163
- }
164
- }
165
- const timestamp = Date.now();
166
- const plan = planExport(agent, version, timestamp, mode);
167
- if (plan.blocker) {
168
- reportBlocker(plan);
169
- process.exit(1);
170
- }
171
- printPlan(plan, { diff: options.diff });
172
- if (options.dryRun) {
173
- console.log(chalk.gray('\nDry run — nothing was written.'));
174
- return;
175
- }
176
- // Only `--replace` can destroy anything, so it is the only mode that demands
177
- // confirmation. merge and staged are additive by construction.
178
- if (mode === 'replace' && !options.yes) {
179
- if (!isInteractiveTerminal()) {
180
- console.error(chalk.red('\nRefusing to replace your config without confirmation in a non-interactive shell.'));
181
- console.error(chalk.gray(' Re-run with --yes once you have checked --dry-run.'));
182
- process.exit(1);
183
- }
184
- const ok = await confirm({ message: `Replace ${plan.dest}?`, default: false }).catch((err) => {
185
- if (isPromptCancelled(err))
186
- process.exit(130);
187
- throw err;
188
- });
189
- if (!ok) {
190
- console.log(chalk.gray('Aborted.'));
191
- return;
192
- }
193
- }
194
- const result = executeExport(plan, timestamp);
195
- if (!result.exported) {
196
- console.error(chalk.red(`Export failed: ${result.errors.join('; ')}`));
197
- process.exit(1);
198
- }
199
- console.log();
200
- if (result.written.length > 0)
201
- console.log(chalk.green(`Added ${result.written.length} file(s) to ${result.dest}`));
202
- if (result.conflicts.length > 0) {
203
- console.log(chalk.yellow(`${result.conflicts.length} of your file(s) were left untouched; incoming copies written as *${CONFLICT_SUFFIX}`));
204
- console.log(chalk.gray(` Compare them with: agents export ${agent}@${version} --diff --dry-run`));
205
- }
206
- if (result.backupPath)
207
- console.log(chalk.gray(`Previous config kept at: ${result.backupPath}`));
208
- if (result.stagedPath)
209
- console.log(chalk.gray(`Staged (nothing activated): ${result.stagedPath}`));
210
- console.log(chalk.gray(`Receipt: ${result.receiptPath}`));
211
- if (mode !== 'staged') {
212
- console.log(chalk.gray(` ${AGENTS[plan.agent].cliCommand} reads this config directly.`));
213
- }
214
- });
215
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * `agents helper` -- install, inspect, and reinstall the signed macOS
3
- * Keychain helper at the stable user path.
4
- *
5
- * The signed `Agents CLI.app` ships inside the npm package, but its keychain
6
- * ACLs need a stable signature-pinned location to survive `npm i -g` and
7
- * version bumps. This command copies it to
8
- * `~/Library/Application Support/agents-cli/` once and lets users force a
9
- * reinstall when the trusted-app ACL needs to be re-established.
10
- */
11
- import type { Command } from 'commander';
12
- export declare function registerHelperCommand(program: Command): void;
@@ -1,87 +0,0 @@
1
- /**
2
- * `agents helper` -- install, inspect, and reinstall the signed macOS
3
- * Keychain helper at the stable user path.
4
- *
5
- * The signed `Agents CLI.app` ships inside the npm package, but its keychain
6
- * ACLs need a stable signature-pinned location to survive `npm i -g` and
7
- * version bumps. This command copies it to
8
- * `~/Library/Application Support/agents-cli/` once and lets users force a
9
- * reinstall when the trusted-app ACL needs to be re-established.
10
- */
11
- import chalk from 'chalk';
12
- import { ensureKeychainHelperInstalled, getKeychainHelperPath, getKeychainHelperStatus, } from '../lib/secrets/install-helper.js';
13
- function requireDarwin() {
14
- if (process.platform !== 'darwin') {
15
- console.error(chalk.red('agents helper: macOS only.'));
16
- process.exit(1);
17
- }
18
- }
19
- export function registerHelperCommand(program) {
20
- const cmd = program
21
- .command('helper')
22
- .description('Manage the signed macOS Keychain helper (.app) install');
23
- cmd
24
- .command('install')
25
- .description('Copy the bundled .app to ~/Library/Application Support/agents-cli/')
26
- .action(() => {
27
- requireDarwin();
28
- try {
29
- ensureKeychainHelperInstalled({ forceReinstall: true });
30
- }
31
- catch (err) {
32
- console.error(chalk.red(err.message || String(err)));
33
- process.exit(1);
34
- }
35
- const s = getKeychainHelperStatus();
36
- console.log(chalk.green('Installed:'), s.destination);
37
- console.log(chalk.dim('codesign:'), s.codesignOk ? chalk.green('ok') : chalk.red(s.codesignOutput));
38
- console.log(chalk.dim('spctl: '), s.spctlOk ? chalk.green('ok') : chalk.yellow(s.spctlOutput));
39
- });
40
- cmd
41
- .command('update')
42
- .description('Reinstall the .app, overwriting any existing copy (alias of install)')
43
- .action(() => {
44
- requireDarwin();
45
- try {
46
- ensureKeychainHelperInstalled({ forceReinstall: true });
47
- }
48
- catch (err) {
49
- console.error(chalk.red(err.message || String(err)));
50
- process.exit(1);
51
- }
52
- const s = getKeychainHelperStatus();
53
- console.log(chalk.green('Updated: '), s.destination);
54
- console.log(chalk.dim('codesign:'), s.codesignOk ? chalk.green('ok') : chalk.red(s.codesignOutput));
55
- console.log(chalk.dim('spctl: '), s.spctlOk ? chalk.green('ok') : chalk.yellow(s.spctlOutput));
56
- });
57
- cmd
58
- .command('status')
59
- .description('Show source, destination, codesign and notarization status')
60
- .action(() => {
61
- requireDarwin();
62
- const s = getKeychainHelperStatus();
63
- console.log(chalk.bold('Source: '), s.source ?? chalk.red('(not found)'));
64
- console.log(chalk.bold('Destination:'), s.destination);
65
- console.log(chalk.bold('Installed: '), s.installed ? chalk.green('yes') : chalk.yellow('no'));
66
- if (s.installed) {
67
- console.log(chalk.bold('codesign: '), s.codesignOk ? chalk.green('ok') : chalk.red(s.codesignOutput));
68
- console.log(chalk.bold('spctl: '), s.spctlOk ? chalk.green('ok') : chalk.yellow(s.spctlOutput));
69
- }
70
- else {
71
- console.log(chalk.dim('Run `agents helper install` to copy the bundled .app to the destination.'));
72
- }
73
- });
74
- cmd
75
- .command('where')
76
- .description('Print the absolute path to the installed helper executable')
77
- .action(() => {
78
- requireDarwin();
79
- try {
80
- console.log(getKeychainHelperPath());
81
- }
82
- catch (err) {
83
- console.error(chalk.red(err.message || String(err)));
84
- process.exit(1);
85
- }
86
- });
87
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * `agents hosts` — register and inspect agent hosts (machines you offload runs to).
3
- *
4
- * The registry is a thin overlay: ssh-config hosts are dispatchable with zero
5
- * registration (connection details stay in ~/.ssh/config); enrollment only adds
6
- * capability metadata or bootstraps agents-cli, plus inline (non-ssh-config)
7
- * hosts. Dispatch itself is `agents run --host <name>` (see commands/exec.ts).
8
- */
9
- import type { Command } from 'commander';
10
- /** Register the `agents hosts` command tree. */
11
- export declare function registerHostsCommand(program: Command): void;