@phnx-labs/agents-cli 1.22.35 → 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 (487) hide show
  1. package/CHANGELOG.md +666 -2
  2. package/README.md +75 -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 +67 -0
  94. package/dist/commands/share.js +275 -12
  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/commands.d.ts +2 -0
  161. package/dist/lib/commands.js +2 -0
  162. package/dist/lib/computer/sessions-list.d.ts +150 -0
  163. package/dist/lib/computer/sessions-list.js +363 -0
  164. package/dist/lib/config-keys.d.ts +86 -0
  165. package/dist/lib/config-keys.js +193 -0
  166. package/dist/lib/config-machine-keys.d.ts +12 -0
  167. package/dist/lib/config-machine-keys.js +17 -0
  168. package/dist/lib/config-transfer.js +3 -4
  169. package/dist/lib/crabbox/cli.d.ts +2 -2
  170. package/dist/lib/crabbox/cli.js +3 -3
  171. package/dist/lib/daemon-health.d.ts +22 -0
  172. package/dist/lib/daemon-health.js +33 -3
  173. package/dist/lib/daemon-services.d.ts +50 -0
  174. package/dist/lib/daemon-services.js +147 -0
  175. package/dist/lib/daemon-ticks.d.ts +35 -66
  176. package/dist/lib/daemon-ticks.js +77 -159
  177. package/dist/lib/daemon.d.ts +72 -4
  178. package/dist/lib/daemon.js +792 -202
  179. package/dist/lib/deeplink/register.d.ts +49 -0
  180. package/dist/lib/deeplink/register.js +253 -0
  181. package/dist/lib/deeplink/url.d.ts +34 -0
  182. package/dist/lib/deeplink/url.js +78 -0
  183. package/dist/lib/device-config.d.ts +124 -29
  184. package/dist/lib/device-config.js +346 -141
  185. package/dist/lib/devices/config-migration.d.ts +42 -0
  186. package/dist/lib/devices/config-migration.js +203 -0
  187. package/dist/lib/devices/connect.js +14 -7
  188. package/dist/lib/devices/doctor-findings.d.ts +4 -1
  189. package/dist/lib/devices/doctor-findings.js +20 -1
  190. package/dist/lib/devices/harness-inventory.d.ts +11 -2
  191. package/dist/lib/devices/harness-inventory.js +0 -0
  192. package/dist/lib/devices/health.d.ts +1 -1
  193. package/dist/lib/devices/health.js +1 -1
  194. package/dist/lib/devices/pending.d.ts +22 -1
  195. package/dist/lib/devices/pending.js +67 -2
  196. package/dist/lib/devices/registry.d.ts +0 -25
  197. package/dist/lib/devices/registry.js +2 -83
  198. package/dist/lib/devices/resolve-profile.d.ts +20 -0
  199. package/dist/lib/devices/resolve-profile.js +44 -0
  200. package/dist/lib/devices/rollout-verify.d.ts +101 -0
  201. package/dist/lib/devices/rollout-verify.js +193 -0
  202. package/dist/lib/devices/ssh-config.js +10 -6
  203. package/dist/lib/event-families.d.ts +28 -0
  204. package/dist/lib/event-families.js +159 -0
  205. package/dist/lib/event-stream.d.ts +9 -1
  206. package/dist/lib/event-stream.js +26 -9
  207. package/dist/lib/events.d.ts +9 -1
  208. package/dist/lib/events.js +21 -6
  209. package/dist/lib/exec.d.ts +30 -0
  210. package/dist/lib/exec.js +219 -121
  211. package/dist/lib/feed-broadcast.d.ts +25 -0
  212. package/dist/lib/feed-broadcast.js +33 -0
  213. package/dist/lib/feed.d.ts +1 -1
  214. package/dist/lib/feed.js +12 -2
  215. package/dist/lib/fleet/capture.js +15 -0
  216. package/dist/lib/fleet/manifest.js +9 -0
  217. package/dist/lib/fleet/types.d.ts +9 -0
  218. package/dist/lib/fleet-status.js +10 -8
  219. package/dist/lib/git.d.ts +20 -6
  220. package/dist/lib/git.js +121 -17
  221. package/dist/lib/hosts/dispatch.d.ts +8 -3
  222. package/dist/lib/hosts/dispatch.js +29 -3
  223. package/dist/lib/hosts/logs.d.ts +2 -2
  224. package/dist/lib/hosts/logs.js +2 -2
  225. package/dist/lib/hosts/option.js +1 -1
  226. package/dist/lib/hosts/passthrough.d.ts +2 -3
  227. package/dist/lib/hosts/passthrough.js +10 -24
  228. package/dist/lib/hosts/progress.js +2 -2
  229. package/dist/lib/hosts/providers/devices.d.ts +3 -3
  230. package/dist/lib/hosts/providers/devices.js +18 -12
  231. package/dist/lib/hosts/ready.d.ts +5 -1
  232. package/dist/lib/hosts/ready.js +9 -3
  233. package/dist/lib/hosts/reconcile.d.ts +2 -2
  234. package/dist/lib/hosts/reconcile.js +2 -2
  235. package/dist/lib/hosts/registry.js +14 -9
  236. package/dist/lib/hosts/remote-cmd.js +1 -1
  237. package/dist/lib/hosts/remote-os.d.ts +9 -6
  238. package/dist/lib/hosts/remote-os.js +13 -6
  239. package/dist/lib/hosts/routing-flag.d.ts +23 -0
  240. package/dist/lib/hosts/routing-flag.js +41 -0
  241. package/dist/lib/hosts/run-target.js +1 -1
  242. package/dist/lib/hosts/session-index.js +1 -1
  243. package/dist/lib/hosts/tasks.d.ts +6 -6
  244. package/dist/lib/hosts/tasks.js +4 -4
  245. package/dist/lib/hosts/types.js +1 -2
  246. package/dist/lib/installations/resolve.js +2 -8
  247. package/dist/lib/isolation-boundary-report.js +0 -1
  248. package/dist/lib/linear-cache.d.ts +7 -0
  249. package/dist/lib/linear-cache.js +31 -4
  250. package/dist/lib/linear-project-counts.d.ts +1 -1
  251. package/dist/lib/linear-project-counts.js +2 -3
  252. package/dist/lib/linear-projects.js +1 -1
  253. package/dist/lib/loop.d.ts +2 -2
  254. package/dist/lib/loop.js +1 -1
  255. package/dist/lib/mailbox-target.d.ts +1 -1
  256. package/dist/lib/mailbox-target.js +1 -1
  257. package/dist/lib/manifest.js +7 -4
  258. package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
  259. package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
  260. package/dist/lib/menubar/snapshot.d.ts +3 -2
  261. package/dist/lib/menubar/snapshot.js +6 -2
  262. package/dist/lib/migrate-fold.d.ts +33 -0
  263. package/dist/lib/migrate-fold.js +130 -0
  264. package/dist/lib/migrate.d.ts +34 -34
  265. package/dist/lib/migrate.js +106 -128
  266. package/dist/lib/model-tier-overrides.d.ts +1 -1
  267. package/dist/lib/model-tier-overrides.js +15 -2
  268. package/dist/lib/monitors/config.d.ts +17 -3
  269. package/dist/lib/monitors/config.js +52 -18
  270. package/dist/lib/monitors/engine.d.ts +32 -1
  271. package/dist/lib/monitors/engine.js +94 -11
  272. package/dist/lib/monitors/fingerprint.d.ts +46 -0
  273. package/dist/lib/monitors/fingerprint.js +100 -0
  274. package/dist/lib/monitors/remote.d.ts +47 -0
  275. package/dist/lib/monitors/remote.js +81 -0
  276. package/dist/lib/monitors/state.d.ts +39 -0
  277. package/dist/lib/monitors/state.js +56 -0
  278. package/dist/lib/onepassword.d.ts +17 -0
  279. package/dist/lib/onepassword.js +52 -22
  280. package/dist/lib/open-url.js +1 -1
  281. package/dist/lib/picker.d.ts +14 -2
  282. package/dist/lib/picker.js +35 -13
  283. package/dist/lib/placement.d.ts +1 -1
  284. package/dist/lib/placement.js +1 -1
  285. package/dist/lib/pr-land-detach.d.ts +32 -0
  286. package/dist/lib/pr-land-detach.js +79 -0
  287. package/dist/lib/profiles-presets.js +13 -0
  288. package/dist/lib/profiles.d.ts +2 -0
  289. package/dist/lib/profiles.js +44 -1
  290. package/dist/lib/project-focus.d.ts +1 -1
  291. package/dist/lib/project-focus.js +1 -1
  292. package/dist/lib/project-probe.d.ts +4 -1
  293. package/dist/lib/project-probe.js +5 -4
  294. package/dist/lib/project-resources.js +2 -18
  295. package/dist/lib/project-root.d.ts +16 -0
  296. package/dist/lib/project-root.js +20 -2
  297. package/dist/lib/projects.d.ts +20 -1
  298. package/dist/lib/projects.js +78 -1
  299. package/dist/lib/refresh-coordinator.d.ts +24 -0
  300. package/dist/lib/refresh-coordinator.js +52 -0
  301. package/dist/lib/registry.d.ts +2 -2
  302. package/dist/lib/registry.js +1 -1
  303. package/dist/lib/resource-aliases.d.ts +13 -0
  304. package/dist/lib/resource-aliases.js +26 -0
  305. package/dist/lib/resources/types.d.ts +1 -1
  306. package/dist/lib/resources.d.ts +16 -0
  307. package/dist/lib/resources.js +66 -10
  308. package/dist/lib/rotate.d.ts +3 -4
  309. package/dist/lib/rotate.js +4 -5
  310. package/dist/lib/routine-activation.d.ts +22 -2
  311. package/dist/lib/routine-activation.js +63 -16
  312. package/dist/lib/routine-context.d.ts +9 -2
  313. package/dist/lib/routine-context.js +21 -6
  314. package/dist/lib/routines-project.d.ts +58 -48
  315. package/dist/lib/routines-project.js +190 -159
  316. package/dist/lib/routines.d.ts +41 -6
  317. package/dist/lib/routines.js +92 -34
  318. package/dist/lib/run-defaults.d.ts +5 -0
  319. package/dist/lib/run-defaults.js +11 -1
  320. package/dist/lib/runner.d.ts +10 -8
  321. package/dist/lib/runner.js +122 -39
  322. package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
  323. package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
  324. package/dist/lib/secrets/agent.d.ts +10 -3
  325. package/dist/lib/secrets/agent.js +43 -8
  326. package/dist/lib/secrets/bundles.d.ts +1 -0
  327. package/dist/lib/secrets/bundles.js +92 -80
  328. package/dist/lib/secrets/index.js +32 -9
  329. package/dist/lib/secrets/install-helper.d.ts +4 -4
  330. package/dist/lib/secrets/install-helper.js +4 -4
  331. package/dist/lib/secrets/push.d.ts +40 -6
  332. package/dist/lib/secrets/push.js +58 -11
  333. package/dist/lib/secrets/read-backoff.d.ts +1 -1
  334. package/dist/lib/secrets/read-backoff.js +1 -1
  335. package/dist/lib/secrets/remote.d.ts +24 -0
  336. package/dist/lib/secrets/remote.js +54 -4
  337. package/dist/lib/self-update.d.ts +108 -0
  338. package/dist/lib/self-update.js +276 -1
  339. package/dist/lib/session/active.d.ts +89 -5
  340. package/dist/lib/session/active.js +165 -10
  341. package/dist/lib/session/actor-sidecar.d.ts +1 -1
  342. package/dist/lib/session/actor-sidecar.js +2 -1
  343. package/dist/lib/session/db.d.ts +176 -2
  344. package/dist/lib/session/db.js +484 -17
  345. package/dist/lib/session/discover.js +27 -4
  346. package/dist/lib/session/hook-sessions.js +2 -2
  347. package/dist/lib/session/host-link.d.ts +2 -2
  348. package/dist/lib/session/host-link.js +2 -2
  349. package/dist/lib/session/pid-registry.d.ts +21 -0
  350. package/dist/lib/session/pid-registry.js +57 -0
  351. package/dist/lib/session/remote-active.js +15 -1
  352. package/dist/lib/session/remote.js +2 -2
  353. package/dist/lib/session/session-cache.d.ts +14 -7
  354. package/dist/lib/session/session-cache.js +51 -9
  355. package/dist/lib/session/state.d.ts +2 -2
  356. package/dist/lib/session/state.js +1 -1
  357. package/dist/lib/session/sync/config.d.ts +10 -10
  358. package/dist/lib/session/sync/config.js +10 -10
  359. package/dist/lib/session/sync/r2.d.ts +34 -0
  360. package/dist/lib/session/sync/r2.js +123 -0
  361. package/dist/lib/session/throughput.d.ts +1 -1
  362. package/dist/lib/session/throughput.js +1 -1
  363. package/dist/lib/session/types.d.ts +23 -1
  364. package/dist/lib/session/types.js +15 -0
  365. package/dist/lib/session/viewing-in.d.ts +1 -1
  366. package/dist/lib/session/viewing-in.js +1 -1
  367. package/dist/lib/session/watch.d.ts +101 -0
  368. package/dist/lib/session/watch.js +242 -0
  369. package/dist/lib/share/config.d.ts +4 -0
  370. package/dist/lib/share/config.js +1 -0
  371. package/dist/lib/share/provision.d.ts +38 -0
  372. package/dist/lib/share/provision.js +50 -0
  373. package/dist/lib/share/publish.d.ts +40 -1
  374. package/dist/lib/share/publish.js +116 -3
  375. package/dist/lib/share/worker-template.js +71 -6
  376. package/dist/lib/shims.d.ts +17 -3
  377. package/dist/lib/shims.js +98 -26
  378. package/dist/lib/signin-badge.js +3 -2
  379. package/dist/lib/skills.js +2 -0
  380. package/dist/lib/smart-launch.d.ts +8 -8
  381. package/dist/lib/smart-launch.js +80 -59
  382. package/dist/lib/ssh-exec.d.ts +1 -1
  383. package/dist/lib/ssh-exec.js +1 -1
  384. package/dist/lib/staleness/prune.d.ts +88 -0
  385. package/dist/lib/staleness/prune.js +69 -0
  386. package/dist/lib/staleness/registry.d.ts +1 -1
  387. package/dist/lib/staleness/writers/commands.js +34 -2
  388. package/dist/lib/staleness/writers/hooks.js +16 -0
  389. package/dist/lib/staleness/writers/kinds.d.ts +6 -0
  390. package/dist/lib/staleness/writers/skills.js +19 -0
  391. package/dist/lib/staleness/writers/subagents.d.ts +2 -3
  392. package/dist/lib/staleness/writers/subagents.js +0 -4
  393. package/dist/lib/staleness/writers/types.d.ts +32 -0
  394. package/dist/lib/startup/command-registry.d.ts +6 -12
  395. package/dist/lib/startup/command-registry.js +11 -31
  396. package/dist/lib/startup/dev-build.d.ts +10 -0
  397. package/dist/lib/startup/dev-build.js +13 -1
  398. package/dist/lib/startup/spellcheck.d.ts +18 -0
  399. package/dist/lib/startup/spellcheck.js +45 -0
  400. package/dist/lib/state.d.ts +36 -9
  401. package/dist/lib/state.js +96 -46
  402. package/dist/lib/subagents-registry.d.ts +0 -7
  403. package/dist/lib/subagents-registry.js +38 -65
  404. package/dist/lib/subagents.d.ts +0 -33
  405. package/dist/lib/subagents.js +0 -75
  406. package/dist/lib/sync-umbrella.js +1 -1
  407. package/dist/lib/teams/agents.d.ts +41 -1
  408. package/dist/lib/teams/agents.js +187 -9
  409. package/dist/lib/teams/api.d.ts +11 -1
  410. package/dist/lib/teams/api.js +11 -2
  411. package/dist/lib/teams/delivery.d.ts +41 -0
  412. package/dist/lib/teams/delivery.js +60 -0
  413. package/dist/lib/teams/registry.d.ts +14 -0
  414. package/dist/lib/teams/registry.js +51 -1
  415. package/dist/lib/teams/remoteWorktree.d.ts +19 -0
  416. package/dist/lib/teams/remoteWorktree.js +29 -0
  417. package/dist/lib/teams/scheduler.d.ts +1 -1
  418. package/dist/lib/teams/scheduler.js +1 -1
  419. package/dist/lib/teams/worktree.d.ts +24 -0
  420. package/dist/lib/teams/worktree.js +42 -0
  421. package/dist/lib/terminal/backends/vscodium-agent.d.ts +10 -1
  422. package/dist/lib/terminal/backends/vscodium-agent.js +16 -5
  423. package/dist/lib/terminal/engine.d.ts +4 -0
  424. package/dist/lib/terminal/engine.js +8 -2
  425. package/dist/lib/terminal/types.d.ts +21 -2
  426. package/dist/lib/testdata/refresh-coordinator-worker.d.ts +1 -0
  427. package/dist/lib/testdata/refresh-coordinator-worker.js +23 -0
  428. package/dist/lib/tickets/list.d.ts +53 -0
  429. package/dist/lib/tickets/list.js +153 -0
  430. package/dist/lib/tmux/orphan-reap.d.ts +320 -0
  431. package/dist/lib/tmux/orphan-reap.js +644 -0
  432. package/dist/lib/tmux/session.d.ts +68 -3
  433. package/dist/lib/tmux/session.js +95 -5
  434. package/dist/lib/triggers/handlers.d.ts +20 -0
  435. package/dist/lib/triggers/handlers.js +6 -1
  436. package/dist/lib/types.d.ts +46 -34
  437. package/dist/lib/usage-fleet.d.ts +32 -0
  438. package/dist/lib/usage-fleet.js +125 -0
  439. package/dist/lib/usage-refresh.d.ts +3 -3
  440. package/dist/lib/usage-refresh.js +19 -16
  441. package/dist/lib/usage.d.ts +51 -47
  442. package/dist/lib/usage.js +145 -153
  443. package/dist/lib/version-duplicates.js +2 -2
  444. package/dist/lib/versions.d.ts +56 -13
  445. package/dist/lib/versions.js +195 -45
  446. package/dist/lib/watchdog/log.d.ts +1 -1
  447. package/dist/lib/watchdog/log.js +3 -3
  448. package/dist/lib/watchdog/rotate.d.ts +6 -6
  449. package/dist/lib/watchdog/rotate.js +6 -6
  450. package/dist/lib/workflows.d.ts +1 -1
  451. package/dist/lib/yaml-io.d.ts +47 -0
  452. package/dist/lib/yaml-io.js +55 -0
  453. package/package.json +2 -1
  454. package/scripts/install-helper.js +2 -2
  455. package/scripts/postinstall.js +23 -20
  456. package/dist/commands/defaults.d.ts +0 -7
  457. package/dist/commands/defaults.js +0 -107
  458. package/dist/commands/export.d.ts +0 -11
  459. package/dist/commands/export.js +0 -215
  460. package/dist/commands/helper.d.ts +0 -12
  461. package/dist/commands/helper.js +0 -87
  462. package/dist/commands/hosts.d.ts +0 -11
  463. package/dist/commands/hosts.js +0 -330
  464. package/dist/commands/lock.d.ts +0 -12
  465. package/dist/commands/lock.js +0 -70
  466. package/dist/commands/pull.d.ts +0 -17
  467. package/dist/commands/pull.js +0 -39
  468. package/dist/commands/push.d.ts +0 -14
  469. package/dist/commands/push.js +0 -30
  470. package/dist/commands/wallet.d.ts +0 -20
  471. package/dist/commands/wallet.js +0 -216
  472. package/dist/commands/worktree.d.ts +0 -19
  473. package/dist/commands/worktree.js +0 -272
  474. package/dist/lib/account-labels.d.ts +0 -24
  475. package/dist/lib/account-labels.js +0 -72
  476. package/dist/lib/auto-dispatch-linear.d.ts +0 -18
  477. package/dist/lib/auto-dispatch-linear.js +0 -107
  478. package/dist/lib/auto-dispatch-provider.d.ts +0 -10
  479. package/dist/lib/auto-dispatch-provider.js +0 -30
  480. package/dist/lib/auto-dispatch.d.ts +0 -93
  481. package/dist/lib/auto-dispatch.js +0 -128
  482. package/dist/lib/export.d.ts +0 -72
  483. package/dist/lib/export.js +0 -269
  484. package/dist/lib/lock.d.ts +0 -93
  485. package/dist/lib/lock.js +0 -207
  486. package/dist/lib/wallet/index.d.ts +0 -78
  487. package/dist/lib/wallet/index.js +0 -253
@@ -16,6 +16,7 @@ import { isInteractiveTerminal } from './utils.js';
16
16
  import { listProfiles, readProfile, writeProfile, deleteProfile, profileExists, profileHostLabel, profileProviderLabel, profileModelLabel, profileAuthLabel, profileLabel, forkProfile, editProfile, renameProfile, profileFromHostModel, authEnvKeyForHost, modelEnvKeyForHost, baseUrlEnvKeyForHost, getProfilePath, validateProfileName, } from '../lib/profiles.js';
17
17
  import { listPresets, getPreset } from '../lib/profiles-presets.js';
18
18
  import { AGENTS, ALL_AGENT_IDS, resolveAgentName } from '../lib/agents.js';
19
+ import { findAccount } from '../lib/account-registry.js';
19
20
  import { runWizardSteps, createSteps, editSteps, defaultWizardIO, } from './harness-wizard.js';
20
21
  /** Short capability summary for a native harness — its supported run modes. */
21
22
  function nativeModes(id) {
@@ -39,6 +40,8 @@ export function renderHarnessDetail(name) {
39
40
  console.log(`Fallback: ${p.fallback_model}`);
40
41
  console.log(`Provider: ${profileProviderLabel(p)}`);
41
42
  console.log(`Auth: ${profileAuthLabel(p)}`);
43
+ if (p.account)
44
+ console.log(`Account: ${findAccount(p.account)?.name ?? p.account}`);
42
45
  if (p.forkedFrom)
43
46
  console.log(`Forked: from ${p.forkedFrom}`);
44
47
  console.log(chalk.gray(getProfilePath(p.name)));
@@ -54,14 +57,24 @@ export function renderHarnessDetail(name) {
54
57
  * copy a model from.
55
58
  */
56
59
  export function buildFork(source, name, opts) {
60
+ if (opts.authProvider || opts.fromSecrets)
61
+ throw new Error("Harnesses no longer own credentials. Add one with 'agents accounts add <name> --provider <provider> --auth <type>', then pass --account <name>.");
57
62
  if (profileExists(source)) {
58
- return forkProfile(readProfile(source), name, {
63
+ const profile = forkProfile(readProfile(source), name, {
59
64
  model: opts.model,
60
65
  baseUrl: opts.baseUrl,
61
66
  provider: opts.authProvider,
62
67
  version: opts.version,
63
68
  description: opts.description,
64
69
  });
70
+ if (opts.account) {
71
+ const account = findAccount(opts.account);
72
+ if (!account)
73
+ throw new Error(`Unknown account '${opts.account}'.`);
74
+ profile.account = account.id;
75
+ profile.provider = account.provider;
76
+ }
77
+ return profile;
65
78
  }
66
79
  const host = resolveAgentName(source);
67
80
  if (!host) {
@@ -71,13 +84,21 @@ export function buildFork(source, name, opts) {
71
84
  if (!opts.model) {
72
85
  throw new Error(`--model <id> is required when forking the native '${host}' harness (there is no model to inherit).`);
73
86
  }
74
- return profileFromHostModel(name, host, opts.model, {
87
+ const profile = profileFromHostModel(name, host, opts.model, {
75
88
  version: opts.version,
76
89
  baseUrl: opts.baseUrl,
77
90
  provider: opts.authProvider,
78
91
  authEnvVar: opts.authProvider ? authEnvKeyForHostOrThrow(host) : undefined,
79
92
  description: opts.description ?? `Forked from ${host}: ${opts.model}`,
80
93
  });
94
+ if (opts.account) {
95
+ const account = findAccount(opts.account);
96
+ if (!account)
97
+ throw new Error(`Unknown account '${opts.account}'.`);
98
+ profile.account = account.id;
99
+ profile.provider = account.provider;
100
+ }
101
+ return profile;
81
102
  }
82
103
  /** Auth env var for a host, as a hard error when the host declares none. */
83
104
  function authEnvKeyForHostOrThrow(host) {
@@ -111,6 +132,7 @@ export function hasEditFlags(opts) {
111
132
  return (opts.model !== undefined ||
112
133
  opts.baseUrl !== undefined ||
113
134
  opts.authProvider !== undefined ||
135
+ opts.account !== undefined ||
114
136
  opts.version !== undefined ||
115
137
  opts.description !== undefined ||
116
138
  opts.fallbackModel !== undefined ||
@@ -132,6 +154,15 @@ export function buildEdit(name, opts) {
132
154
  }
133
155
  const source = readProfile(name);
134
156
  const edited = editProfile(source, buildEditOverrides(opts));
157
+ if (opts.authProvider || opts.fromSecrets)
158
+ throw new Error("Harnesses no longer own credentials. Add one with 'agents accounts add <name> --provider <provider> --auth <type>', then pass --account <name>.");
159
+ if (opts.account !== undefined) {
160
+ const account = findAccount(opts.account);
161
+ if (!account)
162
+ throw new Error(`Unknown account '${opts.account}'.`);
163
+ edited.account = account.id;
164
+ edited.provider = account.provider;
165
+ }
135
166
  if (opts.version === '')
136
167
  delete edited.host.version;
137
168
  if (opts.fallbackModel !== undefined) {
@@ -210,8 +241,7 @@ async function runCreateWizard() {
210
241
  opts: {
211
242
  model: draft.model,
212
243
  baseUrl: draft.baseUrl,
213
- authProvider: draft.authProvider,
214
- fromSecrets: draft.fromSecrets,
244
+ account: draft.account,
215
245
  },
216
246
  };
217
247
  }
@@ -238,10 +268,8 @@ export function draftToEditOptions(draft, original) {
238
268
  opts.model = draft.model;
239
269
  if (draft.baseUrl && draft.baseUrl !== curBaseUrl)
240
270
  opts.baseUrl = draft.baseUrl;
241
- if (draft.authProvider !== undefined)
242
- opts.authProvider = draft.authProvider;
243
- if (draft.fromSecrets !== undefined)
244
- opts.fromSecrets = draft.fromSecrets;
271
+ if (draft.account !== undefined)
272
+ opts.account = draft.account;
245
273
  if (draft.version !== undefined && draft.version !== curVersion)
246
274
  opts.version = draft.version;
247
275
  if (draft.fallbackModel !== undefined && draft.fallbackModel !== curFallback)
@@ -300,7 +328,7 @@ Examples:
300
328
  agents run spark "refactor api/handlers/checkout.py"
301
329
 
302
330
  # Fork a native harness, or copy one of your own and swap the model
303
- agents harness fork opencode deepseek --model deepseek/deepseek-v4-flash-0731 --auth-provider openrouter
331
+ agents harness fork opencode deepseek --model deepseek/deepseek-v4-flash-0731 --account openrouter-work
304
332
  agents harness fork deepseek deepseek-chat --model deepseek/deepseek-chat-v3
305
333
 
306
334
  # Per-run model override still wins
@@ -310,14 +338,14 @@ Examples:
310
338
  agents harness edit deepseek --fallback-model deepseek/deepseek-chat-v3
311
339
  agents harness rename deepseek deepseek-classic
312
340
 
313
- # No args, in an interactive terminal: a wizard walks you through host, model, provider, key
341
+ # No args, in an interactive terminal: a wizard walks you through host, model, and account
314
342
  agents harness add
315
343
 
316
344
  # See custom harnesses, addable presets, and native harnesses
317
345
  agents harness list
318
346
 
319
- # Private OpenAI/Anthropic-compatible endpoint (stores a keychain key)
320
- agents harness add corp --host claude --model gpt-x --base-url https://gw.corp/v1 --auth-provider corp
347
+ # Private OpenAI/Anthropic-compatible endpoint using an existing account
348
+ agents harness add corp --host claude --model gpt-x --base-url https://gw.corp/v1 --account corp
321
349
 
322
350
  # Custom harnesses are just profiles — this also works via 'agents profiles'
323
351
  `);
@@ -327,14 +355,17 @@ Examples:
327
355
  .option('--host <agent>', 'Host CLI to run under (opencode, claude, codex, grok, antigravity, ...) — pair with --model')
328
356
  .option('--model <id>', 'Model id to pin on the host (e.g., meta/muse-spark-1.1) — pair with --host')
329
357
  .option('--base-url <url>', 'Custom endpoint base URL (claude/codex hosts)')
330
- .option('--auth-provider <provider>', 'Attach a keychain-backed API key under this provider (for private endpoints)')
358
+ .option('--account <name>', 'Default durable credential account')
359
+ .option('--auth-provider <provider>', 'Removed: use agents accounts add, then --account')
331
360
  .option('--preset <preset>', 'Apply a built-in preset instead of --host/--model')
332
361
  .option('--version <version>', 'Pin the host CLI version (e.g., 1.16.0)')
333
- .option('--from-secrets <bundle>[:<key>]', "Copy a value from an agents secrets bundle into this harness's own keychain item, once (not a live link)")
362
+ .option('--from-secrets <bundle>[:<key>]', 'Removed: import the value with agents accounts add, then use --account')
334
363
  .option('--key-stdin', 'Read API key from stdin instead of prompting (for scripts/CI)')
335
364
  .option('--force', 'Overwrite an existing harness with the same name')
336
365
  .action(async (name, opts) => {
337
366
  try {
367
+ if (opts.authProvider || opts.fromSecrets)
368
+ throw new Error("Harnesses no longer own credentials. Add one with 'agents accounts add <name> --provider <provider> --auth <type>', then pass --account <name>.");
338
369
  if (addNeedsWizard(name, opts)) {
339
370
  if (!isInteractiveTerminal()) {
340
371
  throw new Error("'agents harness add' needs --preset or --host + --model (or a name and an interactive terminal for the wizard).");
@@ -355,25 +386,26 @@ Examples:
355
386
  .description('Fork a native harness (claude, opencode, ...) or an existing custom one into a new named harness. Omit args in a terminal for the interactive wizard.')
356
387
  .option('--model <id>', 'Model to pin on the fork (required when forking a native harness)')
357
388
  .option('--base-url <url>', 'Custom endpoint base URL (claude/codex hosts)')
358
- .option('--auth-provider <provider>', 'Attach a keychain-backed API key under this provider')
389
+ .option('--account <name>', 'Default durable credential account')
390
+ .option('--auth-provider <provider>', 'Removed: use agents accounts add, then --account')
359
391
  .option('--version <version>', 'Pin the host CLI version (e.g., 1.16.0)')
360
392
  .option('--description <text>', 'One-line description')
361
- .option('--from-secrets <bundle>[:<key>]', "Copy a value from an agents secrets bundle into this harness's own keychain item, once (not a live link)")
393
+ .option('--from-secrets <bundle>[:<key>]', 'Removed: import the value with agents accounts add, then use --account')
362
394
  .option('--key-stdin', 'Read the API key from stdin instead of prompting (for scripts/CI)')
363
395
  .option('--force', 'Overwrite an existing harness with the same name')
364
396
  .addHelpText('after', `
365
397
  Examples:
366
398
  # Fork OpenCode into a harness pinned to a DeepSeek model on OpenRouter
367
- agents harness fork opencode deepseek --model deepseek/deepseek-v4-flash-0731 --auth-provider openrouter
399
+ agents harness fork opencode deepseek --model deepseek/deepseek-v4-flash-0731 --account openrouter-work
368
400
 
369
401
  # Fork Claude Code onto a private gateway
370
- agents harness fork claude corp --model gpt-x --base-url https://gw.corp/v1 --auth-provider corp
402
+ agents harness fork claude corp --model gpt-x --base-url https://gw.corp/v1 --account corp
371
403
 
372
404
  # Copy an existing harness and swap only the model
373
405
  agents harness fork deepseek deepseek-chat --model deepseek/deepseek-chat-v3
374
406
 
375
- # Copy a key out of an existing secrets bundle instead of typing it
376
- agents harness fork claude corp --model gpt-x --auth-provider corp --from-secrets prod:OPENROUTER_KEY
407
+ # Attach an account whose credential came from agents secrets
408
+ agents harness fork claude corp --model gpt-x --account corp
377
409
 
378
410
  # No args, in an interactive terminal: walks through source, preset/model, name, key
379
411
  agents harness fork
@@ -400,19 +432,20 @@ Examples:
400
432
  .description('Edit an existing custom harness in place — model, endpoint, auth, version, description, fallback. Omit flags in a terminal for the interactive wizard.')
401
433
  .option('--model <id>', 'Swap the pinned model')
402
434
  .option('--base-url <url>', 'Swap the custom endpoint base URL')
403
- .option('--auth-provider <provider>', 'Repoint auth at a different provider (keychain-backed)')
435
+ .option('--account <name>', 'Change the default durable credential account')
436
+ .option('--auth-provider <provider>', 'Removed: use agents accounts add, then --account')
404
437
  .option('--version <version>', 'Re-pin the host CLI version (pass an empty string to unpin)')
405
438
  .option('--description <text>', 'Update the one-line description')
406
439
  .option('--fallback-model <id>', 'Secondary model retried on the same host on a rate limit (pass an empty string to clear it)')
407
- .option('--from-secrets <bundle>[:<key>]', "Copy a value from an agents secrets bundle into this harness's own keychain item, once (not a live link)")
440
+ .option('--from-secrets <bundle>[:<key>]', 'Removed: import the value with agents accounts add, then use --account')
408
441
  .option('--key-stdin', 'Read the API key from stdin instead of prompting (for scripts/CI)')
409
442
  .addHelpText('after', `
410
443
  Examples:
411
444
  # Swap the pinned model
412
445
  agents harness edit deepseek --model deepseek/deepseek-v3.2
413
446
 
414
- # Repoint auth at a different provider and re-enter the key
415
- agents harness edit corp --auth-provider corp2
447
+ # Repoint auth at a different durable account
448
+ agents harness edit corp --account corp2
416
449
 
417
450
  # Unpin the host CLI version
418
451
  agents harness edit spark --version ""
@@ -420,8 +453,8 @@ Examples:
420
453
  # Add a same-host fallback model for rate-limit retries
421
454
  agents harness edit deepseek --fallback-model deepseek/deepseek-chat-v3
422
455
 
423
- # Copy a key out of an existing secrets bundle instead of typing it
424
- agents harness edit corp --from-secrets prod:OPENROUTER_KEY
456
+ # Rotate the attached credential without editing the harness
457
+ agents accounts set-key corp2 --from-secrets prod:OPENROUTER_KEY
425
458
 
426
459
  # No flags, in an interactive terminal: a wizard walks each field pre-filled
427
460
  agents harness edit deepseek
@@ -517,17 +517,6 @@ Examples:
517
517
  console.log(chalk.gray('Central source unchanged. Hooks will re-sync on next agent launch.'));
518
518
  }
519
519
  });
520
- // `hooks sync` is gone — sync runs automatically when the agent launches.
521
- hooksCmd
522
- .command('sync', { hidden: true })
523
- .allowUnknownOption()
524
- .allowExcessArguments()
525
- .action(() => {
526
- console.error(chalk.red('"agents hooks sync" is gone.'));
527
- console.error(chalk.gray('Sync runs automatically when you launch the agent.'));
528
- console.error(chalk.gray('To remove orphans, use: agents prune cleanup hooks'));
529
- process.exit(1);
530
- });
531
520
  // `hooks prune` moved to the top-level `agents prune cleanup` command.
532
521
  hooksCmd
533
522
  .command('prune', { hidden: true })
@@ -15,8 +15,9 @@ import { Command } from 'commander';
15
15
  import type { ManifestHook } from '../lib/types.js';
16
16
  import { type McpYamlConfig } from '../lib/mcp.js';
17
17
  import { type PluginResourceGroup } from '../lib/plugins.js';
18
+ import { type JobConfig, type RunMeta } from '../lib/routines.js';
18
19
  /** Resource kinds the inspect command can drill into. */
19
- declare const DRILLABLE_KINDS: readonly ["commands", "skills", "hooks", "mcp", "rules", "plugins", "workflows", "subagents"];
20
+ declare const DRILLABLE_KINDS: readonly ["commands", "skills", "hooks", "mcp", "rules", "plugins", "workflows", "subagents", "routines"];
20
21
  type DrillableKind = typeof DRILLABLE_KINDS[number];
21
22
  /** Wrap a separator-joined value list under `prefix`, preserving a hanging indent. */
22
23
  export declare function wrapJoined(prefix: string, items: string[], sep: string, width: number): string[];
@@ -33,6 +34,11 @@ interface ResourceItem {
33
34
  extra?: Array<[string, string]>;
34
35
  /** For plugins: the resource categories (skills, commands, …) the bundle packages. */
35
36
  groups?: PluginResourceGroup[];
37
+ /**
38
+ * Machine-shaped fields for `--json`, when the display strings in `extra` would
39
+ * lose information a script needs (a routine's raw cron, its device arrays).
40
+ */
41
+ json?: Record<string, unknown>;
36
42
  }
37
43
  export interface InspectOptions {
38
44
  brief?: boolean;
@@ -45,6 +51,7 @@ export interface InspectOptions {
45
51
  plugins?: boolean | string;
46
52
  workflows?: boolean | string;
47
53
  subagents?: boolean | string;
54
+ routines?: boolean | string;
48
55
  command?: string;
49
56
  skill?: string;
50
57
  hook?: string;
@@ -52,6 +59,7 @@ export interface InspectOptions {
52
59
  plugin?: string;
53
60
  workflow?: string;
54
61
  subagent?: string;
62
+ routine?: string;
55
63
  }
56
64
  export declare function registerInspectCommand(program: Command): void;
57
65
  export declare function inspectAction(target: string, options: InspectOptions): Promise<void>;
@@ -71,6 +79,55 @@ export declare function resolveRepoTarget(target: string, cwd?: string): RepoTar
71
79
  export declare function inspectRepo(repo: RepoTarget, options: InspectOptions): Promise<void>;
72
80
  /** List one resource kind from a single repo root — no layering, no overrides. */
73
81
  export declare function collectRepoKind(repo: RepoTarget, kind: DrillableKind): ResourceItem[];
82
+ /** The live answers about one routine — what the YAML alone cannot say. */
83
+ export interface RoutineLiveState {
84
+ /** Devices whose `routines:` allowlist names it. Empty means it fires nowhere. */
85
+ devices: string[];
86
+ /** False until some device has materialized an allowlist at all. */
87
+ materialized: boolean;
88
+ /** This machine's name, for reporting whether the routine is enabled here. */
89
+ thisDevice: string;
90
+ /**
91
+ * THIS machine's activation answer, from `routineEnabledOnThisDevice` — the
92
+ * same call `applyDeviceActivation` makes. `null` means this device has not
93
+ * materialized its own allowlist, so the file's `enabled:` still governs.
94
+ *
95
+ * Deliberately separate from `materialized`, which is fleet-wide: a box whose
96
+ * own device doc has no `routines:` key while a synced peer's does is the
97
+ * normal state of a freshly-joined machine, and conflating the two reported
98
+ * `enabled: no` for routines the daemon was actively firing.
99
+ */
100
+ enabledHere: boolean | null;
101
+ /** Last run's status, or null if it has never run on a device we can see. */
102
+ lastStatus: RunMeta['status'] | null;
103
+ /** ISO timestamp of that run's start. */
104
+ lastAt: string | null;
105
+ }
106
+ /** `2h` / `3d` / `just now` — compact enough for a 10-column cell. */
107
+ export declare function compactAge(iso: string | null, now?: Date): string;
108
+ /** What makes this routine fire: a humanized cron, an event trigger, or nothing. */
109
+ export declare function routineFireLabel(job: JobConfig, now?: Date): string;
110
+ /** What the routine actually executes. Exactly one of agent/workflow/command is set. */
111
+ export declare function routineTargetLabel(job: JobConfig): string;
112
+ /**
113
+ * A routine's one-line intent.
114
+ *
115
+ * Routine YAML has no `description:` key, so the generic first-prose-line reader
116
+ * returns `name: growth-metrics` for one file and a real sentence for the next.
117
+ * Prefer the prompt's first sentence, then the file's leading comment block, then
118
+ * the first meaningful line of a shell command.
119
+ */
120
+ export declare function routineDescription(job: JobConfig | null, raw: string): string;
121
+ /**
122
+ * Read every routine one DotAgents repo declares.
123
+ *
124
+ * Reads exactly `<root>/routines/`, never the layered `listJobs` — `collectRepoKind`
125
+ * is a single-root view, and returning `~/.agents` routines while inspecting a
126
+ * project repo would be a lie. `live` is injectable because `getUserAgentsDir()`
127
+ * and `getRunsDir()` have no env override, so tests cannot otherwise keep this
128
+ * off the developer's real fleet state.
129
+ */
130
+ export declare function collectRepoRoutines(repo: RepoTarget, live?: (name: string) => RoutineLiveState, now?: Date): ResourceItem[];
74
131
  /** Recursive size + file count of a path; symlinks are not followed. */
75
132
  export declare function pathSize(p: string): {
76
133
  bytes: number;
@@ -106,6 +163,24 @@ export interface RepoGitInfo {
106
163
  behind: number | null;
107
164
  }
108
165
  export declare function repoGitInfo(root: string): RepoGitInfo | null;
166
+ /**
167
+ * The scannable half of a description: everything before the trigger clause, and
168
+ * only the first sentence of that. 15 of 20 skills in .system lead with their
169
+ * purpose and then append "Triggers on: …" — in a one-line row that boilerplate
170
+ * is what survives truncation, so the row says nothing. The full text still
171
+ * renders in the preview pane.
172
+ */
173
+ export declare function summaryLine(description: string): string;
174
+ /**
175
+ * The preview pane for one row, refreshed as the selection moves.
176
+ *
177
+ * Adaptive on purpose — the sessions picker sets the precedent: a Cursor
178
+ * session shows Dirs/Repos/Artifacts, a Codex one shows a different set, and
179
+ * empty fields simply do not render. A hook's useful metadata (what fires it,
180
+ * whether it is wired) has nothing in common with a skill's (what invokes it,
181
+ * where it is synced), so each kind contributes its own rows and blanks drop out.
182
+ */
183
+ export declare function previewFor(kind: DrillableKind, item: ResourceItem, hookManifest: Map<string, ManifestHook>): string;
109
184
  /**
110
185
  * Compact one-liner for a hook from its manifest entry: the firing events (with
111
186
  * the matcher/tool-name in parens), then a `·`-separated predicate summary, then
@@ -121,4 +196,22 @@ export declare function summarizeMcp(cfg: McpYamlConfig): string;
121
196
  * script basename, not the manifest key.
122
197
  */
123
198
  export declare function hookManifestByScript(manifest: Record<string, ManifestHook>): Map<string, ManifestHook>;
199
+ /**
200
+ * Health tier for the section ordering. Lower sorts first.
201
+ *
202
+ * `printExpandedSection` shows only the first handful before a `…(+N)` tail, so
203
+ * for a repo with 24 routines the sort IS the section. Same reasoning as
204
+ * `hookRows` putting wired hooks first: a routine that fires nowhere is exactly
205
+ * what the reader opened this for, and must never hide behind the tail.
206
+ */
207
+ export declare function routineHealthTier(item: ResourceItem): number;
208
+ /**
209
+ * The one-line warning under the Routines section, or null when it would mislead.
210
+ *
211
+ * Silent until some device has materialized a `routines:` list — before that,
212
+ * every routine is legitimately unpinned and "will not fire" would be noise.
213
+ */
214
+ export declare function routineDarkWarning(items: ResourceItem[]): string | null;
215
+ /** Read a repo/agents.yaml `hooks:` section into a name→ManifestHook map (best-effort). */
216
+ export declare function hookManifestFromFile(agentsYamlPath: string): Record<string, ManifestHook>;
124
217
  export {};