@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
@@ -1,107 +0,0 @@
1
- /**
2
- * Concrete Linear gateway for auto-dispatch.
3
- *
4
- * Talks to the Linear GraphQL API. The API key is read from the LINEAR_API_KEY
5
- * env var, falling back to the macOS keychain generic-password `linear-api-key`
6
- * (how the rest of the stack stores it). If no key is resolvable, the gateway is
7
- * absent and the daemon skips auto-dispatch entirely.
8
- *
9
- * "Started" (Doing) and "unstarted" (Todo) are Linear state *types*, so we never
10
- * hardcode a team's custom state names. `startIssue` resolves the team's first
11
- * started-type state (cached per team) and moves the issue there — the existing
12
- * factory webhook turns that transition into a real run.
13
- */
14
- import { execFileSync } from 'child_process';
15
- const LINEAR_API = 'https://api.linear.app/graphql';
16
- /** Resolve the Linear API key from env or (on macOS) the keychain. Null if absent. */
17
- export function resolveLinearApiKey() {
18
- const fromEnv = process.env.LINEAR_API_KEY?.trim();
19
- if (fromEnv)
20
- return fromEnv;
21
- if (process.platform === 'darwin') {
22
- try {
23
- const out = execFileSync('security', ['find-generic-password', '-s', 'linear-api-key', '-w'], {
24
- encoding: 'utf-8',
25
- stdio: ['ignore', 'pipe', 'ignore'],
26
- });
27
- const key = out.trim();
28
- if (key)
29
- return key;
30
- }
31
- catch {
32
- // not in keychain — fall through
33
- }
34
- }
35
- return null;
36
- }
37
- async function gql(apiKey, query, variables) {
38
- const res = await fetch(LINEAR_API, {
39
- method: 'POST',
40
- headers: { Authorization: apiKey, 'Content-Type': 'application/json' },
41
- body: JSON.stringify({ query, variables }),
42
- });
43
- if (!res.ok)
44
- throw new Error(`Linear API HTTP ${res.status}`);
45
- const json = (await res.json());
46
- if (json.errors?.length)
47
- throw new Error(`Linear API: ${json.errors.map((e) => e.message).join('; ')}`);
48
- if (!json.data)
49
- throw new Error('Linear API: empty response');
50
- return json.data;
51
- }
52
- /** Build a real Linear gateway, or null when no API key is configured. */
53
- export function createLinearGateway() {
54
- const apiKey = resolveLinearApiKey();
55
- if (!apiKey)
56
- return null;
57
- // Cache the resolved started-state id per team so we don't re-query each dispatch.
58
- const startedStateByTeam = new Map();
59
- async function resolveStartedState(teamId) {
60
- const cached = startedStateByTeam.get(teamId);
61
- if (cached)
62
- return cached;
63
- const data = await gql(apiKey, `query($t:String!){ workflowStates(filter:{ team:{ id:{ eq:$t } }, type:{ eq:"started" } }, first:10){ nodes{ id type position } } }`, { t: teamId });
64
- const nodes = data.workflowStates.nodes.slice().sort((a, b) => a.position - b.position);
65
- const state = nodes[0];
66
- if (!state)
67
- throw new Error(`no started-type workflow state for team ${teamId}`);
68
- startedStateByTeam.set(teamId, state.id);
69
- return state.id;
70
- }
71
- // team id per issue, captured during fetchDelegatedTodo, so startIssue can resolve state.
72
- const teamByIssue = new Map();
73
- return {
74
- async countInFlight(linearProjectId) {
75
- const data = await gql(apiKey, `query($p:ID!){ issues(filter:{ project:{ id:{ eq:$p } }, state:{ type:{ eq:"started" } }, delegate:{ null:false } }, first:250){ nodes{ id } } }`, { p: linearProjectId });
76
- return data.issues.nodes.length;
77
- },
78
- async fetchDelegatedTodo(linearProjectId) {
79
- const data = await gql(apiKey, `query($p:ID!){ issues(filter:{ project:{ id:{ eq:$p } }, state:{ type:{ eq:"unstarted" } }, delegate:{ null:false } }, first:50){ nodes{ id identifier title priority delegate{ name } team{ id } } } }`, { p: linearProjectId });
80
- const out = [];
81
- for (const n of data.issues.nodes) {
82
- if (!n.delegate?.name)
83
- continue;
84
- if (n.team?.id)
85
- teamByIssue.set(n.id, n.team.id);
86
- out.push({ id: n.id, identifier: n.identifier, title: n.title ?? '', priority: n.priority ?? 0, delegateName: n.delegate.name });
87
- }
88
- return out;
89
- },
90
- async markStarted(issueId, delegateName) {
91
- const teamId = teamByIssue.get(issueId);
92
- if (!teamId)
93
- throw new Error(`unknown team for issue ${issueId} (fetch it first)`);
94
- const stateId = await resolveStartedState(teamId);
95
- const data = await gql(apiKey, `mutation($id:String!,$s:String!){ issueUpdate(id:$id, input:{ stateId:$s }){ success } }`, { id: issueId, s: stateId });
96
- if (!data.issueUpdate.success)
97
- throw new Error(`issueUpdate failed for ${issueId}`);
98
- // Leave a trail so the auto-dispatch is visible in the ticket history.
99
- try {
100
- await gql(apiKey, `mutation($i:String!,$b:String!){ commentCreate(input:{ issueId:$i, body:$b }){ success } }`, { i: issueId, b: `Auto-dispatched to **${delegateName}** by the factory (moved Todo → Doing).` });
101
- }
102
- catch {
103
- // comment is best-effort — the state change is what matters
104
- }
105
- },
106
- };
107
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Concrete Dispatcher for auto-dispatch — runs a ticket through agents-cli's own
3
- * cloud-provider abstraction (`resolveProvider().dispatch()`), the same layer as
4
- * `agents cloud run`. Rush (Prix) is one provider among rush/codex/factory; a
5
- * project pins its provider via `provider` in projects.json, else the delegate
6
- * agent's native cloud is used. This is what removes the hidden Prix coupling —
7
- * auto-dispatch no longer depends on the prix/api webhook.
8
- */
9
- import type { Dispatcher } from './auto-dispatch.js';
10
- export declare function createProviderDispatcher(): Dispatcher;
@@ -1,30 +0,0 @@
1
- /**
2
- * Concrete Dispatcher for auto-dispatch — runs a ticket through agents-cli's own
3
- * cloud-provider abstraction (`resolveProvider().dispatch()`), the same layer as
4
- * `agents cloud run`. Rush (Prix) is one provider among rush/codex/factory; a
5
- * project pins its provider via `provider` in projects.json, else the delegate
6
- * agent's native cloud is used. This is what removes the hidden Prix coupling —
7
- * auto-dispatch no longer depends on the prix/api webhook.
8
- */
9
- import { resolveProvider } from './cloud/registry.js';
10
- export function createProviderDispatcher() {
11
- return {
12
- async dispatch({ agent, prompt, repo, provider, host }) {
13
- const p = resolveProvider(provider, agent);
14
- const caps = p.capabilities();
15
- if (!caps.available) {
16
- throw new Error(`cloud provider '${p.id}' is not available (auth/binary missing)`);
17
- }
18
- if (!caps.dispatch) {
19
- throw new Error(`cloud provider '${p.id}' does not support dispatch`);
20
- }
21
- // The host provider clones nothing — a repo target is meaningless there
22
- // and its dispatch() rejects it; a ticket project pinned to 'host' relies
23
- // on the machine's own checkout (the project's `host` names the machine).
24
- const task = p.id === 'host'
25
- ? await p.dispatch({ agent, prompt, providerOptions: { host } })
26
- : await p.dispatch({ agent, prompt, repo });
27
- return { id: task.id };
28
- },
29
- };
30
- }
@@ -1,93 +0,0 @@
1
- /**
2
- * Auto-dispatch — pull side of the factory dispatch loop.
3
- *
4
- * Polls Linear for issues that are delegated to an agent and still in Todo for a
5
- * managed project, and — up to a per-project concurrency cap — DISPATCHES each
6
- * through agents-cli's own cloud-provider abstraction (`resolveProvider().dispatch()`),
7
- * then marks the ticket Doing so it isn't picked up twice.
8
- *
9
- * The dispatch goes through the same provider layer as `agents cloud run`, so Rush
10
- * (Prix) is just one provider among rush/codex/factory — NOT a hidden requirement.
11
- * A project pins its provider via `dispatch.provider` in its
12
- * ~/.agents/projects/<name>.yaml definition.
13
- *
14
- * OPT-IN: a project auto-dispatches ONLY when `dispatch.enabled: true` AND
15
- * `dispatch.maxAgents > 0` AND it has a `linear.projectId`. Nothing is on by default.
16
- */
17
- /** The subset of a project definition this module needs. */
18
- export interface AutoDispatchProject {
19
- id: string;
20
- name: string;
21
- linearProjectId?: string;
22
- repoSlug?: string;
23
- autoDispatch?: boolean;
24
- maxAgents?: number;
25
- provider?: string;
26
- host?: string;
27
- }
28
- /** A Linear issue that is a candidate for dispatch. */
29
- export interface DelegatedIssue {
30
- id: string;
31
- identifier: string;
32
- title: string;
33
- delegateName: string;
34
- priority: number;
35
- }
36
- /** One planned dispatch: which issue, to which agent, in which project. */
37
- export interface PlannedDispatch {
38
- projectId: string;
39
- repoSlug?: string;
40
- provider?: string;
41
- host?: string;
42
- issueId: string;
43
- identifier: string;
44
- title: string;
45
- delegateName: string;
46
- }
47
- /**
48
- * Read auto-dispatch candidates from canonical project YAML definitions
49
- * (~/.agents/projects/<name>.yaml). Only projects with `dispatch.enabled: true`
50
- * are returned; the caller's `isEligible` gate then checks the cap and Linear id.
51
- */
52
- export declare function readAutoDispatchProjects(): AutoDispatchProject[];
53
- /** A project is eligible only when it has explicitly opted in with a positive cap. */
54
- export declare function isEligible(p: AutoDispatchProject): boolean;
55
- /**
56
- * PURE planner. Given eligible projects, in-flight counts, and delegated-Todo
57
- * issues per project, decide which issues to dispatch — never exceeding
58
- * `maxAgents` in-flight. Highest Linear priority first.
59
- */
60
- export declare function planAutoDispatch(projects: AutoDispatchProject[], inFlightByProject: Record<string, number>, delegatedTodoByProject: Record<string, DelegatedIssue[]>): PlannedDispatch[];
61
- /** Map Linear priority to a sortable rank (urgent first, none last). */
62
- export declare function priorityRank(priority: number): number;
63
- /** Build the prompt an auto-dispatched agent receives for a ticket. */
64
- export declare function dispatchPrompt(identifier: string, title: string): string;
65
- /** Linear I/O surface — discovery + bookkeeping (NOT the dispatch trigger). */
66
- export interface LinearGateway {
67
- /** Count issues in a started ("Doing") state whose delegate is set, per project. */
68
- countInFlight(linearProjectId: string): Promise<number>;
69
- /** Fetch delegated issues in an unstarted ("Todo") state for a project. */
70
- fetchDelegatedTodo(linearProjectId: string): Promise<DelegatedIssue[]>;
71
- /** After a successful dispatch: move the issue Todo -> Doing so it isn't re-picked. */
72
- markStarted(issueId: string, delegateName: string): Promise<void>;
73
- }
74
- /** Dispatch surface — runs a ticket through agents-cli's cloud/local provider layer. */
75
- export interface Dispatcher {
76
- dispatch(opts: {
77
- agent: string;
78
- prompt: string;
79
- repo?: string;
80
- provider?: string;
81
- host?: string;
82
- }): Promise<{
83
- id: string;
84
- }>;
85
- }
86
- export interface AutoDispatchDeps {
87
- projects: AutoDispatchProject[];
88
- linear: LinearGateway;
89
- dispatcher: Dispatcher;
90
- log?: (level: 'INFO' | 'WARN' | 'ERROR', msg: string) => void;
91
- }
92
- /** One tick: read state per eligible project, plan, dispatch, then mark started. */
93
- export declare function autoDispatchTick(deps: AutoDispatchDeps): Promise<PlannedDispatch[]>;
@@ -1,128 +0,0 @@
1
- /**
2
- * Auto-dispatch — pull side of the factory dispatch loop.
3
- *
4
- * Polls Linear for issues that are delegated to an agent and still in Todo for a
5
- * managed project, and — up to a per-project concurrency cap — DISPATCHES each
6
- * through agents-cli's own cloud-provider abstraction (`resolveProvider().dispatch()`),
7
- * then marks the ticket Doing so it isn't picked up twice.
8
- *
9
- * The dispatch goes through the same provider layer as `agents cloud run`, so Rush
10
- * (Prix) is just one provider among rush/codex/factory — NOT a hidden requirement.
11
- * A project pins its provider via `dispatch.provider` in its
12
- * ~/.agents/projects/<name>.yaml definition.
13
- *
14
- * OPT-IN: a project auto-dispatches ONLY when `dispatch.enabled: true` AND
15
- * `dispatch.maxAgents > 0` AND it has a `linear.projectId`. Nothing is on by default.
16
- */
17
- import { listProjectDefs } from './projects.js';
18
- /**
19
- * Read auto-dispatch candidates from canonical project YAML definitions
20
- * (~/.agents/projects/<name>.yaml). Only projects with `dispatch.enabled: true`
21
- * are returned; the caller's `isEligible` gate then checks the cap and Linear id.
22
- */
23
- export function readAutoDispatchProjects() {
24
- return listProjectDefs()
25
- .filter((d) => d.dispatch?.enabled === true)
26
- .map((d) => ({
27
- id: d.name,
28
- name: d.name,
29
- linearProjectId: d.linear?.projectId,
30
- repoSlug: d.repo ?? d.repos?.[0]?.slug,
31
- autoDispatch: d.dispatch?.enabled ?? false,
32
- maxAgents: d.dispatch?.maxAgents,
33
- provider: d.dispatch?.provider,
34
- host: d.dispatch?.host,
35
- }));
36
- }
37
- /** A project is eligible only when it has explicitly opted in with a positive cap. */
38
- export function isEligible(p) {
39
- return p.autoDispatch === true && typeof p.maxAgents === 'number' && p.maxAgents > 0 && !!p.linearProjectId;
40
- }
41
- /**
42
- * PURE planner. Given eligible projects, in-flight counts, and delegated-Todo
43
- * issues per project, decide which issues to dispatch — never exceeding
44
- * `maxAgents` in-flight. Highest Linear priority first.
45
- */
46
- export function planAutoDispatch(projects, inFlightByProject, delegatedTodoByProject) {
47
- const plan = [];
48
- for (const p of projects) {
49
- if (!isEligible(p))
50
- continue;
51
- const cap = p.maxAgents;
52
- const slots = cap - (inFlightByProject[p.id] ?? 0);
53
- if (slots <= 0)
54
- continue;
55
- const candidates = (delegatedTodoByProject[p.id] ?? [])
56
- .slice()
57
- .sort((a, b) => priorityRank(a.priority) - priorityRank(b.priority));
58
- for (const issue of candidates.slice(0, slots)) {
59
- plan.push({
60
- projectId: p.id,
61
- repoSlug: p.repoSlug,
62
- provider: p.provider,
63
- host: p.host,
64
- issueId: issue.id,
65
- identifier: issue.identifier,
66
- title: issue.title,
67
- delegateName: issue.delegateName,
68
- });
69
- }
70
- }
71
- return plan;
72
- }
73
- /** Map Linear priority to a sortable rank (urgent first, none last). */
74
- export function priorityRank(priority) {
75
- return priority === 0 ? 5 : priority;
76
- }
77
- /** Build the prompt an auto-dispatched agent receives for a ticket. */
78
- export function dispatchPrompt(identifier, title) {
79
- return `Work on Linear ticket ${identifier}: ${title}. Read the ticket for full context, implement it, and open a PR when done.`;
80
- }
81
- /** One tick: read state per eligible project, plan, dispatch, then mark started. */
82
- export async function autoDispatchTick(deps) {
83
- const log = deps.log ?? (() => { });
84
- const eligible = deps.projects.filter(isEligible);
85
- if (eligible.length === 0)
86
- return [];
87
- const inFlight = {};
88
- const todo = {};
89
- for (const p of eligible) {
90
- const pid = p.linearProjectId;
91
- try {
92
- inFlight[p.id] = await deps.linear.countInFlight(pid);
93
- todo[p.id] = await deps.linear.fetchDelegatedTodo(pid);
94
- }
95
- catch (err) {
96
- log('WARN', `auto-dispatch: failed to read Linear state for '${p.name}': ${err.message}`);
97
- inFlight[p.id] = Number.MAX_SAFE_INTEGER; // fail closed for this project
98
- todo[p.id] = [];
99
- }
100
- }
101
- const plan = planAutoDispatch(eligible, inFlight, todo);
102
- const dispatched = [];
103
- for (const d of plan) {
104
- try {
105
- const task = await deps.dispatcher.dispatch({
106
- agent: d.delegateName.trim().toLowerCase(),
107
- prompt: dispatchPrompt(d.identifier, d.title),
108
- repo: d.repoSlug,
109
- provider: d.provider,
110
- host: d.host,
111
- });
112
- // Bookkeeping only — dispatch already happened; moving to Doing keeps the
113
- // ticket out of the next Todo poll. A failure here is non-fatal.
114
- try {
115
- await deps.linear.markStarted(d.issueId, d.delegateName);
116
- }
117
- catch (err) {
118
- log('WARN', `auto-dispatch: dispatched ${d.identifier} but failed to mark Doing: ${err.message}`);
119
- }
120
- dispatched.push(d);
121
- log('INFO', `auto-dispatch: dispatched ${d.identifier} to ${d.delegateName} (task ${task.id})`);
122
- }
123
- catch (err) {
124
- log('WARN', `auto-dispatch: failed to dispatch ${d.identifier}: ${err.message}`);
125
- }
126
- }
127
- return dispatched;
128
- }
@@ -1,72 +0,0 @@
1
- import type { AgentId } from './types.js';
2
- export type ExportMode = 'merge' | 'replace' | 'staged';
3
- /** Filename of the provenance receipt written into the agent's config dir. */
4
- export declare const RECEIPT_NAME = ".agents-cli-export.json";
5
- /** Suffix for the incoming copy of a file the user already has. */
6
- export declare const CONFLICT_SUFFIX = ".from-agents-cli";
7
- /** Why an export cannot proceed. Each maps to a distinct user-facing remedy. */
8
- export type ExportBlocker = {
9
- kind: 'not-installed';
10
- } | {
11
- kind: 'not-isolated';
12
- } | {
13
- kind: 'no-config';
14
- source: string;
15
- } | {
16
- kind: 'dest-adopted';
17
- realPath: string;
18
- adoptedVersion: string;
19
- };
20
- /** What the destination `~/.<agent>` currently is. */
21
- export type DestKind = 'absent' | 'real-dir' | 'foreign-symlink';
22
- /** One file the export would place, relative to the config dir root. */
23
- export interface ExportEntry {
24
- /** Path relative to the config dir, e.g. `prompts/review.md`. */
25
- rel: string;
26
- /** Absolute source file inside the isolated home. */
27
- source: string;
28
- /** Absolute path this file will be written to. */
29
- target: string;
30
- /**
31
- * Set when the user already has `rel`. `target` then points at the
32
- * `.from-agents-cli` sibling, and `existing` is the untouched original.
33
- */
34
- existing?: string;
35
- }
36
- export interface ExportPlan {
37
- agent: AgentId;
38
- version: string;
39
- mode: ExportMode;
40
- /** The isolated config dir, e.g. `<versionDir>/home/.codex`. */
41
- source: string;
42
- /** The user's real config dir, e.g. `~/.codex`. */
43
- dest: string;
44
- destKind: DestKind;
45
- /** Files with no counterpart in `dest` — written in place. */
46
- writes: ExportEntry[];
47
- /** Files the user already has — written alongside, never over. */
48
- conflicts: ExportEntry[];
49
- /** replace mode only: where `dest` gets moved first. */
50
- backupPath: string | null;
51
- /** staged mode only: the subdirectory receiving the whole tree. */
52
- stagedPath: string | null;
53
- receiptPath: string;
54
- blocker: ExportBlocker | null;
55
- }
56
- export interface ExportResult {
57
- exported: boolean;
58
- dest: string;
59
- written: string[];
60
- conflicts: Array<{
61
- path: string;
62
- theirs: string;
63
- }>;
64
- backupPath: string | null;
65
- stagedPath: string | null;
66
- receiptPath: string | null;
67
- errors: string[];
68
- }
69
- /** Build a read-only plan. Performs no mutations. */
70
- export declare function planExport(agent: AgentId, version: string, timestamp: number, mode?: ExportMode): ExportPlan;
71
- /** Execute a plan from {@link planExport}. */
72
- export declare function executeExport(plan: ExportPlan, timestamp: number): ExportResult;