@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
@@ -0,0 +1,84 @@
1
+ /**
2
+ * `agents cp <src> <dst>` — first-class fleet file transfer.
3
+ *
4
+ * Accepts `host:path` on either side (local = bare absolute path). Resolves
5
+ * `~` and `$HOME` remote paths ON the remote before transfer so a `$HOME` in
6
+ * the remote spec can never silently expand to the local user's home directory
7
+ * — the documented silent-failure class in `remote-dispatch-mutation-safety`.
8
+ *
9
+ * Reuses the same SSH fabric (SSH_OPTS, deviceIdentityArgs, resolveDeviceTarget)
10
+ * that `agents ssh` and `--host` dispatch use.
11
+ */
12
+ import type { Command } from 'commander';
13
+ /**
14
+ * A remote endpoint — host (device name or user@device) and a path on that
15
+ * host. The path may begin with `~` or `$HOME`; {@link resolveRemotePath}
16
+ * expands those on the remote before transfer.
17
+ */
18
+ export interface RemoteEndpoint {
19
+ isRemote: true;
20
+ /** Device name, user@device, or ad-hoc host literal. */
21
+ host: string;
22
+ /** Path as given by the caller — may contain `~` or `$HOME`. */
23
+ path: string;
24
+ }
25
+ /** A local endpoint — an absolute local path. */
26
+ export interface LocalEndpoint {
27
+ isRemote: false;
28
+ /** Absolute local path. */
29
+ path: string;
30
+ }
31
+ export type Endpoint = RemoteEndpoint | LocalEndpoint;
32
+ /**
33
+ * Parse one CLI token into an {@link Endpoint}.
34
+ *
35
+ * Grammar: `host:path` is remote; anything else is local. The host part must
36
+ * not contain a `/` (that would be a local absolute path with a colon in it —
37
+ * unusual but valid; the colon test covers the common fleet pattern and rejects
38
+ * the almost-never-seen edge case in favour of local-path semantics).
39
+ *
40
+ * Windows drive letters (`C:path`) are excluded by requiring the host part to
41
+ * be at least two characters and not a single capital letter.
42
+ */
43
+ export declare function parseEndpoint(token: string): Endpoint;
44
+ /**
45
+ * Resolve the remote HOME directory in one SSH round-trip. Returns the
46
+ * absolute path (always starts with `/`), or throws on failure.
47
+ */
48
+ export declare function resolveRemoteHome(target: string, extraSshArgs: string[]): Promise<string>;
49
+ /**
50
+ * Pure home-prefix expansion. Given a remote HOME (already resolved on the
51
+ * remote) and a raw path token, substitute a leading `~` or `$HOME`. Paths
52
+ * without those prefixes are returned unchanged. Never consults
53
+ * `process.env.HOME` — the local home must not leak into a remote path.
54
+ */
55
+ export declare function expandRemoteHomePrefix(rawPath: string, remoteHome: string): string;
56
+ /**
57
+ * Expand a remote path's leading `~` or literal `$HOME` to an absolute path
58
+ * resolved **on the remote**, not locally. A path that already starts with `/`
59
+ * is returned unchanged (no round-trip).
60
+ *
61
+ * This is the safeguard against the silent-failure class: a `$HOME` or `~`
62
+ * that would expand to the **local** user's home if left in a shell command.
63
+ */
64
+ export declare function resolveRemotePath(rawPath: string, target: string, extraSshArgs: string[]): Promise<string>;
65
+ /**
66
+ * Build the argv for the `scp` invocation. Pure — no spawning — so it is
67
+ * unit-testable.
68
+ *
69
+ * `scp` accepts ssh `-o` options, so `SSH_OPTS` flows through unchanged.
70
+ * Identity args (`-i key -o IdentitiesOnly=yes`) are included only when a
71
+ * single remote device is involved; for two-remote transfers the identity
72
+ * applies to both connections, which works when the fleet uses a shared key.
73
+ *
74
+ * Remote endpoints are formatted as `user@host:path` (or bare `host:path`),
75
+ * local endpoints as their absolute path. Paths have already been resolved
76
+ * (no `~` or `$HOME`) by the time this is called.
77
+ */
78
+ export declare function buildScpArgv({ srcSpec, dstSpec, identityArgs, recursive, }: {
79
+ srcSpec: string;
80
+ dstSpec: string;
81
+ identityArgs: string[];
82
+ recursive: boolean;
83
+ }): string[];
84
+ export declare function registerCpCommand(program: Command): void;
@@ -0,0 +1,231 @@
1
+ /**
2
+ * `agents cp <src> <dst>` — first-class fleet file transfer.
3
+ *
4
+ * Accepts `host:path` on either side (local = bare absolute path). Resolves
5
+ * `~` and `$HOME` remote paths ON the remote before transfer so a `$HOME` in
6
+ * the remote spec can never silently expand to the local user's home directory
7
+ * — the documented silent-failure class in `remote-dispatch-mutation-safety`.
8
+ *
9
+ * Reuses the same SSH fabric (SSH_OPTS, deviceIdentityArgs, resolveDeviceTarget)
10
+ * that `agents ssh` and `--host` dispatch use.
11
+ */
12
+ import { spawnSync } from 'child_process';
13
+ import chalk from 'chalk';
14
+ import { setHelpSections } from '../lib/help.js';
15
+ import { resolveDeviceTarget } from '../lib/devices/resolve-target.js';
16
+ import { sshTargetFor, deviceIdentityArgs } from '../lib/devices/connect.js';
17
+ import { sshExec, SSH_OPTS } from '../lib/ssh-exec.js';
18
+ /**
19
+ * Parse one CLI token into an {@link Endpoint}.
20
+ *
21
+ * Grammar: `host:path` is remote; anything else is local. The host part must
22
+ * not contain a `/` (that would be a local absolute path with a colon in it —
23
+ * unusual but valid; the colon test covers the common fleet pattern and rejects
24
+ * the almost-never-seen edge case in favour of local-path semantics).
25
+ *
26
+ * Windows drive letters (`C:path`) are excluded by requiring the host part to
27
+ * be at least two characters and not a single capital letter.
28
+ */
29
+ export function parseEndpoint(token) {
30
+ const colonIdx = token.indexOf(':');
31
+ if (colonIdx > 1 && !token.startsWith('/')) {
32
+ const host = token.slice(0, colonIdx);
33
+ const path = token.slice(colonIdx + 1);
34
+ // A bare single uppercase letter before `:` looks like a Windows drive
35
+ // letter — treat as local to avoid a confusing error.
36
+ if (!/^[A-Z]$/.test(host) && !host.includes('/')) {
37
+ return { isRemote: true, host, path };
38
+ }
39
+ }
40
+ return { isRemote: false, path: token };
41
+ }
42
+ // ---------------------------------------------------------------------------
43
+ // Remote path resolution — the core safeguard
44
+ // ---------------------------------------------------------------------------
45
+ /**
46
+ * Resolve the remote HOME directory in one SSH round-trip. Returns the
47
+ * absolute path (always starts with `/`), or throws on failure.
48
+ */
49
+ export async function resolveRemoteHome(target, extraSshArgs) {
50
+ const res = sshExec(target, 'printf "%s" "$HOME"', {
51
+ extraSshArgs,
52
+ timeoutMs: 10_000,
53
+ });
54
+ if (res.code !== 0) {
55
+ throw new Error(`Cannot resolve remote $HOME on ${target}: ${res.stderr.trim() || 'ssh exited ' + String(res.code)}`);
56
+ }
57
+ const home = res.stdout.trim();
58
+ if (!home || !home.startsWith('/')) {
59
+ throw new Error(`Remote $HOME on ${target} is not an absolute path: ${JSON.stringify(home)}`);
60
+ }
61
+ return home;
62
+ }
63
+ /**
64
+ * Pure home-prefix expansion. Given a remote HOME (already resolved on the
65
+ * remote) and a raw path token, substitute a leading `~` or `$HOME`. Paths
66
+ * without those prefixes are returned unchanged. Never consults
67
+ * `process.env.HOME` — the local home must not leak into a remote path.
68
+ */
69
+ export function expandRemoteHomePrefix(rawPath, remoteHome) {
70
+ if (rawPath === '~' || rawPath.startsWith('~/')) {
71
+ return rawPath === '~' ? remoteHome : remoteHome + rawPath.slice(1);
72
+ }
73
+ if (rawPath === '$HOME' || rawPath.startsWith('$HOME/')) {
74
+ return rawPath === '$HOME' ? remoteHome : remoteHome + rawPath.slice(5);
75
+ }
76
+ return rawPath;
77
+ }
78
+ /**
79
+ * Expand a remote path's leading `~` or literal `$HOME` to an absolute path
80
+ * resolved **on the remote**, not locally. A path that already starts with `/`
81
+ * is returned unchanged (no round-trip).
82
+ *
83
+ * This is the safeguard against the silent-failure class: a `$HOME` or `~`
84
+ * that would expand to the **local** user's home if left in a shell command.
85
+ */
86
+ export async function resolveRemotePath(rawPath, target, extraSshArgs) {
87
+ if (rawPath === '~' ||
88
+ rawPath.startsWith('~/') ||
89
+ rawPath === '$HOME' ||
90
+ rawPath.startsWith('$HOME/')) {
91
+ const home = await resolveRemoteHome(target, extraSshArgs);
92
+ return expandRemoteHomePrefix(rawPath, home);
93
+ }
94
+ return rawPath;
95
+ }
96
+ // ---------------------------------------------------------------------------
97
+ // scp invocation
98
+ // ---------------------------------------------------------------------------
99
+ /**
100
+ * Build the argv for the `scp` invocation. Pure — no spawning — so it is
101
+ * unit-testable.
102
+ *
103
+ * `scp` accepts ssh `-o` options, so `SSH_OPTS` flows through unchanged.
104
+ * Identity args (`-i key -o IdentitiesOnly=yes`) are included only when a
105
+ * single remote device is involved; for two-remote transfers the identity
106
+ * applies to both connections, which works when the fleet uses a shared key.
107
+ *
108
+ * Remote endpoints are formatted as `user@host:path` (or bare `host:path`),
109
+ * local endpoints as their absolute path. Paths have already been resolved
110
+ * (no `~` or `$HOME`) by the time this is called.
111
+ */
112
+ export function buildScpArgv({ srcSpec, dstSpec, identityArgs, recursive, }) {
113
+ const opts = [...SSH_OPTS, ...identityArgs];
114
+ if (recursive)
115
+ opts.push('-r');
116
+ // Two-remote transfers route through the local machine (-3) to avoid
117
+ // requiring direct SSH access between the two fleet boxes.
118
+ if (srcSpec.includes(':') && dstSpec.includes(':'))
119
+ opts.push('-3');
120
+ return [...opts, srcSpec, dstSpec];
121
+ }
122
+ async function resolveEndpoint(ep) {
123
+ if (!ep.isRemote) {
124
+ return { spec: ep.path, identityArgs: [] };
125
+ }
126
+ const device = await resolveDeviceTarget(ep.host);
127
+ if (!device) {
128
+ throw new Error(`Unknown device ${JSON.stringify(ep.host)}. Register it with \`agents devices add\` or check \`agents devices\`.`);
129
+ }
130
+ const target = sshTargetFor(device);
131
+ const idArgs = deviceIdentityArgs(device);
132
+ const resolvedPath = await resolveRemotePath(ep.path, target, idArgs);
133
+ if (!resolvedPath.startsWith('/')) {
134
+ throw new Error(`Remote path on ${ep.host} must be absolute after expansion, got: ${JSON.stringify(resolvedPath)}. Use an absolute path or start with ~/`);
135
+ }
136
+ return { spec: `${target}:${resolvedPath}`, identityArgs: idArgs };
137
+ }
138
+ // ---------------------------------------------------------------------------
139
+ // Validation
140
+ // ---------------------------------------------------------------------------
141
+ /** Validate a local path: must be absolute. */
142
+ function validateLocalPath(raw) {
143
+ if (!raw.startsWith('/')) {
144
+ throw new Error(`Local path must be absolute, got: ${JSON.stringify(raw)}`);
145
+ }
146
+ }
147
+ /** Validate a remote path: non-empty. */
148
+ function validateRemotePath(raw, host) {
149
+ if (!raw) {
150
+ throw new Error(`Remote path for ${JSON.stringify(host)} is empty. Expected: ${host}:/abs/path`);
151
+ }
152
+ }
153
+ // ---------------------------------------------------------------------------
154
+ // Command registration
155
+ // ---------------------------------------------------------------------------
156
+ export function registerCpCommand(program) {
157
+ const cmd = program
158
+ .command('cp <src> <dst>')
159
+ .description('Copy a file or directory between fleet hosts. Either endpoint may be host:path (remote) or an absolute local path.')
160
+ .option('-r, --recursive', 'Copy directories recursively')
161
+ .action(async (srcToken, dstToken, opts) => {
162
+ const recursive = opts.recursive ?? false;
163
+ const srcEp = parseEndpoint(srcToken);
164
+ const dstEp = parseEndpoint(dstToken);
165
+ if (!srcEp.isRemote && !dstEp.isRemote) {
166
+ process.stderr.write(chalk.red('error:') +
167
+ ' At least one endpoint must be remote (host:path). For local-only copies use `cp`.\n');
168
+ process.exit(1);
169
+ }
170
+ let srcResolved;
171
+ let dstResolved;
172
+ try {
173
+ // Validate shapes before any network calls.
174
+ if (!srcEp.isRemote)
175
+ validateLocalPath(srcEp.path);
176
+ if (srcEp.isRemote)
177
+ validateRemotePath(srcEp.path, srcEp.host);
178
+ if (!dstEp.isRemote)
179
+ validateLocalPath(dstEp.path);
180
+ if (dstEp.isRemote)
181
+ validateRemotePath(dstEp.path, dstEp.host);
182
+ [srcResolved, dstResolved] = await Promise.all([
183
+ resolveEndpoint(srcEp),
184
+ resolveEndpoint(dstEp),
185
+ ]);
186
+ }
187
+ catch (err) {
188
+ process.stderr.write(chalk.red('error:') + ' ' + err.message + '\n');
189
+ process.exit(1);
190
+ }
191
+ // Merge identity args: for two-remote transfers, omit per-device identity
192
+ // args (they apply to both connections via -3; a conflict would need
193
+ // separate -i per connection which scp doesn't support). A shared fleet
194
+ // key works without explicit -i.
195
+ const identityArgs = srcResolved.identityArgs.length > 0 && dstResolved.identityArgs.length === 0
196
+ ? srcResolved.identityArgs
197
+ : dstResolved.identityArgs.length > 0 && srcResolved.identityArgs.length === 0
198
+ ? dstResolved.identityArgs
199
+ : srcResolved.identityArgs.join(',') === dstResolved.identityArgs.join(',')
200
+ ? srcResolved.identityArgs
201
+ : []; // two remotes with different keys — skip per-device flag, use agent's default key
202
+ const argv = buildScpArgv({
203
+ srcSpec: srcResolved.spec,
204
+ dstSpec: dstResolved.spec,
205
+ identityArgs,
206
+ recursive,
207
+ });
208
+ const res = spawnSync('scp', argv, { stdio: 'inherit' });
209
+ const code = typeof res.status === 'number' ? res.status : 1;
210
+ if (code !== 0) {
211
+ // scp already printed a diagnostic; just exit non-zero.
212
+ process.exit(code);
213
+ }
214
+ });
215
+ setHelpSections(cmd, {
216
+ examples: `
217
+ agents cp yosemite-s0:/abs/data.json /tmp/data.json # download a file from a fleet host
218
+ agents cp /tmp/build.tar.gz mac-mini:/abs/deploy/ # upload a local file to a fleet host
219
+ agents cp -r yosemite-s0:/abs/src/ mac-mini:/abs/dst/ # copy a directory between two fleet hosts
220
+ agents cp yosemite-s0:~/logs/run.log /tmp/run.log # ~ is resolved on the remote host
221
+ `,
222
+ notes: `
223
+ Local paths must be absolute (use /abs/path, not ./relative).
224
+ Remote paths must be absolute after ~ / $HOME expansion.
225
+ Remote $HOME is resolved on the remote host — never in the local shell.
226
+ Both local-to-remote and remote-to-local transfers are supported.
227
+ Remote-to-remote transfers route through the local machine (-3).
228
+ Devices must be registered: 'agents devices' to list, 'agents devices add' to enroll.
229
+ `,
230
+ });
231
+ }