@phnx-labs/agents-cli 1.22.120 → 1.22.121

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 (1603) hide show
  1. package/CHANGELOG.md +227 -0
  2. package/README.md +19 -2
  3. package/dist/bootstrap.d.ts +0 -15
  4. package/dist/bootstrap.js +10 -409
  5. package/dist/cli/command-registry.d.ts +0 -58
  6. package/dist/cli/command-registry.js +2 -74
  7. package/dist/commands/accounts.d.ts +0 -17
  8. package/dist/commands/accounts.js +1 -52
  9. package/dist/commands/alias.d.ts +0 -12
  10. package/dist/commands/alias.js +0 -6
  11. package/dist/commands/apply.d.ts +0 -15
  12. package/dist/commands/apply.js +0 -63
  13. package/dist/commands/audit.d.ts +0 -12
  14. package/dist/commands/audit.js +0 -13
  15. package/dist/commands/auth.js +4 -12
  16. package/dist/commands/beta.d.ts +0 -6
  17. package/dist/commands/beta.js +2 -6
  18. package/dist/commands/browser-sessions-picker.d.ts +0 -8
  19. package/dist/commands/browser-sessions-picker.js +0 -26
  20. package/dist/commands/browser.d.ts +0 -57
  21. package/dist/commands/browser.js +0 -80
  22. package/dist/commands/budget.d.ts +0 -13
  23. package/dist/commands/budget.js +0 -2
  24. package/dist/commands/cli.d.ts +0 -12
  25. package/dist/commands/cli.js +0 -4
  26. package/dist/commands/cloud.d.ts +0 -9
  27. package/dist/commands/cloud.js +0 -43
  28. package/dist/commands/commands.d.ts +0 -9
  29. package/dist/commands/commands.js +0 -18
  30. package/dist/commands/computer-sessions-picker.d.ts +0 -11
  31. package/dist/commands/computer-sessions-picker.js +0 -29
  32. package/dist/commands/computer.d.ts +0 -62
  33. package/dist/commands/computer.js +3 -114
  34. package/dist/commands/config.d.ts +0 -14
  35. package/dist/commands/config.js +21 -60
  36. package/dist/commands/cost.d.ts +0 -11
  37. package/dist/commands/cost.js +1 -17
  38. package/dist/commands/daemon-test-harness.d.ts +0 -32
  39. package/dist/commands/daemon-test-harness.js +1 -36
  40. package/dist/commands/daemon.d.ts +0 -46
  41. package/dist/commands/daemon.js +8 -255
  42. package/dist/commands/detach-core.d.ts +0 -28
  43. package/dist/commands/detach-core.js +0 -30
  44. package/dist/commands/detach.d.ts +1 -12
  45. package/dist/commands/detach.js +16 -52
  46. package/dist/commands/device-config-test-harness.js +0 -12
  47. package/dist/commands/doctor.d.ts +0 -103
  48. package/dist/commands/doctor.js +3 -279
  49. package/dist/commands/events.d.ts +0 -29
  50. package/dist/commands/events.js +1 -55
  51. package/dist/commands/exec.d.ts +0 -163
  52. package/dist/commands/exec.js +15 -964
  53. package/dist/commands/factory.d.ts +0 -6
  54. package/dist/commands/factory.js +0 -2
  55. package/dist/commands/feed-watch.js +0 -20
  56. package/dist/commands/feed.d.ts +0 -38
  57. package/dist/commands/feed.js +1 -151
  58. package/dist/commands/feedback.d.ts +0 -5
  59. package/dist/commands/feedback.js +0 -5
  60. package/dist/commands/fleet-capture.d.ts +0 -12
  61. package/dist/commands/fleet-capture.js +1 -39
  62. package/dist/commands/focus.d.ts +6 -94
  63. package/dist/commands/focus.js +13 -183
  64. package/dist/commands/fork.d.ts +0 -21
  65. package/dist/commands/fork.js +0 -45
  66. package/dist/commands/funnel.d.ts +0 -3
  67. package/dist/commands/go.d.ts +2 -71
  68. package/dist/commands/go.js +5 -99
  69. package/dist/commands/harness-hooks.d.ts +0 -41
  70. package/dist/commands/harness-hooks.js +0 -48
  71. package/dist/commands/harness-wizard.d.ts +0 -137
  72. package/dist/commands/harness-wizard.js +0 -109
  73. package/dist/commands/harness.d.ts +0 -63
  74. package/dist/commands/harness.js +0 -103
  75. package/dist/commands/hooks.d.ts +0 -9
  76. package/dist/commands/hooks.js +0 -26
  77. package/dist/commands/humans.d.ts +0 -8
  78. package/dist/commands/humans.js +0 -8
  79. package/dist/commands/import.d.ts +0 -22
  80. package/dist/commands/import.js +0 -79
  81. package/dist/commands/insights.d.ts +0 -37
  82. package/dist/commands/insights.js +3 -115
  83. package/dist/commands/inspect.d.ts +0 -117
  84. package/dist/commands/inspect.js +2 -448
  85. package/dist/commands/lease.d.ts +0 -28
  86. package/dist/commands/lease.js +0 -43
  87. package/dist/commands/logs.d.ts +0 -23
  88. package/dist/commands/logs.js +0 -30
  89. package/dist/commands/mailboxes.d.ts +0 -18
  90. package/dist/commands/mailboxes.js +0 -29
  91. package/dist/commands/mcp.d.ts +0 -9
  92. package/dist/commands/mcp.js +0 -53
  93. package/dist/commands/memory.d.ts +0 -7
  94. package/dist/commands/memory.js +0 -7
  95. package/dist/commands/menubar.d.ts +0 -8
  96. package/dist/commands/menubar.js +0 -24
  97. package/dist/commands/message.d.ts +0 -23
  98. package/dist/commands/message.js +0 -50
  99. package/dist/commands/mine.d.ts +0 -22
  100. package/dist/commands/mine.js +0 -21
  101. package/dist/commands/models.d.ts +0 -8
  102. package/dist/commands/models.js +0 -33
  103. package/dist/commands/modes.d.ts +0 -10
  104. package/dist/commands/modes.js +0 -13
  105. package/dist/commands/monitors.d.ts +0 -9
  106. package/dist/commands/monitors.js +3 -160
  107. package/dist/commands/open.d.ts +0 -26
  108. package/dist/commands/open.js +0 -10
  109. package/dist/commands/output.d.ts +0 -18
  110. package/dist/commands/output.js +1 -34
  111. package/dist/commands/packages-materialize.d.ts +0 -11
  112. package/dist/commands/packages-materialize.js +0 -3
  113. package/dist/commands/packages.d.ts +0 -10
  114. package/dist/commands/packages.js +0 -50
  115. package/dist/commands/perf.d.ts +0 -41
  116. package/dist/commands/perf.js +0 -55
  117. package/dist/commands/permissions.d.ts +0 -9
  118. package/dist/commands/permissions.js +0 -43
  119. package/dist/commands/plugins.d.ts +0 -14
  120. package/dist/commands/plugins.js +2 -55
  121. package/dist/commands/profiles.d.ts +0 -25
  122. package/dist/commands/profiles.js +0 -27
  123. package/dist/commands/projects-todo.d.ts +2 -0
  124. package/dist/commands/projects-todo.js +132 -0
  125. package/dist/commands/projects.d.ts +0 -85
  126. package/dist/commands/projects.js +344 -291
  127. package/dist/commands/prune.js +0 -30
  128. package/dist/commands/ps-roster.d.ts +92 -0
  129. package/dist/commands/ps-roster.js +744 -0
  130. package/dist/commands/ps.d.ts +6 -0
  131. package/dist/commands/ps.js +98 -0
  132. package/dist/commands/refresh-rules.d.ts +0 -13
  133. package/dist/commands/refresh-rules.js +0 -14
  134. package/dist/commands/reminders.d.ts +0 -7
  135. package/dist/commands/repo.d.ts +0 -89
  136. package/dist/commands/repo.js +7 -205
  137. package/dist/commands/resource-view.d.ts +0 -33
  138. package/dist/commands/resource-view.js +0 -49
  139. package/dist/commands/resume.d.ts +1 -19
  140. package/dist/commands/resume.js +0 -50
  141. package/dist/commands/route.d.ts +0 -10
  142. package/dist/commands/route.js +0 -19
  143. package/dist/commands/routines.d.ts +0 -42
  144. package/dist/commands/routines.js +5 -290
  145. package/dist/commands/routines.test-fixture.d.ts +0 -34
  146. package/dist/commands/routines.test-fixture.js +4 -100
  147. package/dist/commands/rules.d.ts +0 -9
  148. package/dist/commands/rules.js +1 -6
  149. package/dist/commands/run-account-picker.d.ts +0 -59
  150. package/dist/commands/run-account-picker.js +0 -71
  151. package/dist/commands/run-broadcast.d.ts +0 -9
  152. package/dist/commands/run-broadcast.js +0 -7
  153. package/dist/commands/run-cloud.d.ts +0 -15
  154. package/dist/commands/run-cloud.js +0 -37
  155. package/dist/commands/run-device-picker.d.ts +0 -25
  156. package/dist/commands/run-device-picker.js +1 -53
  157. package/dist/commands/secrets-passthrough.d.ts +0 -31
  158. package/dist/commands/secrets-passthrough.js +0 -10
  159. package/dist/commands/send.d.ts +0 -20
  160. package/dist/commands/send.js +14 -18
  161. package/dist/commands/sessions-backfill.d.ts +0 -7
  162. package/dist/commands/sessions-backfill.js +1 -16
  163. package/dist/commands/sessions-backup-setup.js +0 -11
  164. package/dist/commands/sessions-bookmark.d.ts +0 -8
  165. package/dist/commands/sessions-bookmark.js +0 -28
  166. package/dist/commands/sessions-browser.d.ts +2 -117
  167. package/dist/commands/sessions-browser.js +5 -243
  168. package/dist/commands/sessions-export.d.ts +1 -26
  169. package/dist/commands/sessions-export.js +3 -81
  170. package/dist/commands/sessions-import.d.ts +0 -14
  171. package/dist/commands/sessions-import.js +0 -59
  172. package/dist/commands/sessions-inject.d.ts +0 -60
  173. package/dist/commands/sessions-inject.js +3 -96
  174. package/dist/commands/sessions-migrate.d.ts +2 -37
  175. package/dist/commands/sessions-migrate.js +7 -159
  176. package/dist/commands/sessions-optimize.d.ts +0 -12
  177. package/dist/commands/sessions-picker-factory.d.ts +0 -7
  178. package/dist/commands/sessions-picker-factory.js +0 -8
  179. package/dist/commands/sessions-picker.d.ts +4 -103
  180. package/dist/commands/sessions-picker.js +13 -352
  181. package/dist/commands/sessions-render.d.ts +1 -2
  182. package/dist/commands/sessions-render.js +3 -7
  183. package/dist/commands/sessions-resume.d.ts +1 -24
  184. package/dist/commands/sessions-resume.js +2 -65
  185. package/dist/commands/sessions-share.d.ts +1 -9
  186. package/dist/commands/sessions-share.js +1 -45
  187. package/dist/commands/sessions-stats.d.ts +0 -24
  188. package/dist/commands/sessions-stats.js +0 -49
  189. package/dist/commands/sessions-stop.d.ts +1 -20
  190. package/dist/commands/sessions-stop.js +4 -9
  191. package/dist/commands/sessions-tail.d.ts +1 -19
  192. package/dist/commands/sessions-tail.js +3 -36
  193. package/dist/commands/sessions-trace.d.ts +5 -36
  194. package/dist/commands/sessions-trace.js +7 -82
  195. package/dist/commands/sessions.d.ts +1 -666
  196. package/dist/commands/sessions.js +30 -2279
  197. package/dist/commands/sessions.test-fixture.d.ts +0 -9
  198. package/dist/commands/sessions.test-fixture.js +8 -23
  199. package/dist/commands/setup-accounts.d.ts +0 -6
  200. package/dist/commands/setup-browser.d.ts +0 -23
  201. package/dist/commands/setup-browser.js +0 -28
  202. package/dist/commands/setup-computer.d.ts +0 -16
  203. package/dist/commands/setup-computer.js +0 -28
  204. package/dist/commands/setup-fleet.d.ts +0 -8
  205. package/dist/commands/setup-fleet.js +0 -11
  206. package/dist/commands/setup-mine.d.ts +0 -14
  207. package/dist/commands/setup-mine.js +0 -25
  208. package/dist/commands/setup-preferences.d.ts +0 -47
  209. package/dist/commands/setup-preferences.js +0 -53
  210. package/dist/commands/setup-secrets.d.ts +2 -24
  211. package/dist/commands/setup-secrets.js +0 -24
  212. package/dist/commands/setup-term.d.ts +0 -21
  213. package/dist/commands/setup-term.js +0 -21
  214. package/dist/commands/setup-terminal.d.ts +0 -1
  215. package/dist/commands/setup-terminal.js +0 -1
  216. package/dist/commands/setup-tools.d.ts +2 -0
  217. package/dist/commands/setup-tools.js +73 -0
  218. package/dist/commands/setup.d.ts +0 -20
  219. package/dist/commands/setup.js +4 -57
  220. package/dist/commands/skills.d.ts +0 -9
  221. package/dist/commands/skills.js +1 -22
  222. package/dist/commands/snapshot.d.ts +0 -9
  223. package/dist/commands/snapshot.js +0 -10
  224. package/dist/commands/ssh.d.ts +0 -64
  225. package/dist/commands/ssh.js +9 -420
  226. package/dist/commands/status.d.ts +0 -12
  227. package/dist/commands/status.js +0 -26
  228. package/dist/commands/subagents.d.ts +0 -8
  229. package/dist/commands/subagents.js +0 -31
  230. package/dist/commands/sync.d.ts +0 -37
  231. package/dist/commands/sync.js +0 -256
  232. package/dist/commands/teams-picker.d.ts +0 -3
  233. package/dist/commands/teams-picker.js +0 -34
  234. package/dist/commands/teams.d.ts +1 -76
  235. package/dist/commands/teams.js +9 -477
  236. package/dist/commands/tmux.d.ts +0 -25
  237. package/dist/commands/tmux.js +0 -46
  238. package/dist/commands/traces.js +0 -19
  239. package/dist/commands/trash.d.ts +0 -17
  240. package/dist/commands/trash.js +1 -11
  241. package/dist/commands/uninstall.d.ts +0 -9
  242. package/dist/commands/uninstall.js +0 -6
  243. package/dist/commands/update.d.ts +0 -22
  244. package/dist/commands/update.js +0 -44
  245. package/dist/commands/upgrade.d.ts +0 -1
  246. package/dist/commands/upgrade.js +0 -1
  247. package/dist/commands/utils.d.ts +0 -85
  248. package/dist/commands/utils.js +1 -95
  249. package/dist/commands/versions.d.ts +0 -16
  250. package/dist/commands/versions.js +0 -134
  251. package/dist/commands/view.d.ts +0 -90
  252. package/dist/commands/view.js +4 -343
  253. package/dist/commands/watchdog.d.ts +0 -19
  254. package/dist/commands/watchdog.js +3 -43
  255. package/dist/commands/webhook.d.ts +0 -8
  256. package/dist/commands/webhook.js +0 -14
  257. package/dist/commands/workflows.d.ts +0 -8
  258. package/dist/commands/workflows.js +0 -6
  259. package/dist/index.d.ts +0 -25
  260. package/dist/index.js +5 -119
  261. package/dist/lib/account-capabilities.d.ts +0 -34
  262. package/dist/lib/account-capabilities.js +0 -32
  263. package/dist/lib/account-catalog.d.ts +0 -128
  264. package/dist/lib/account-catalog.js +8 -154
  265. package/dist/lib/account-provider-registry.d.ts +0 -14
  266. package/dist/lib/account-provider-registry.js +0 -8
  267. package/dist/lib/account-registry.d.ts +0 -74
  268. package/dist/lib/account-registry.js +14 -189
  269. package/dist/lib/account-schema.d.ts +0 -19
  270. package/dist/lib/account-schema.js +0 -43
  271. package/dist/lib/accounting/account-launch.d.ts +0 -15
  272. package/dist/lib/accounting/account-launch.js +1 -3
  273. package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
  274. package/dist/lib/accounting/account-pool-collect.js +0 -42
  275. package/dist/lib/accounting/account-pool.d.ts +0 -41
  276. package/dist/lib/accounting/account-pool.js +0 -17
  277. package/dist/lib/accounting/capacity.d.ts +0 -32
  278. package/dist/lib/accounting/capacity.js +0 -32
  279. package/dist/lib/accounting/rotate.d.ts +0 -518
  280. package/dist/lib/accounting/rotate.js +4 -598
  281. package/dist/lib/accounting/usage-ingest.d.ts +0 -1
  282. package/dist/lib/accounting/usage-ingest.js +0 -44
  283. package/dist/lib/accounting/usage-sync.d.ts +0 -60
  284. package/dist/lib/accounting/usage-sync.js +4 -51
  285. package/dist/lib/accounting/usage.d.ts +0 -632
  286. package/dist/lib/accounting/usage.js +14 -1055
  287. package/dist/lib/accounts/add.d.ts +0 -60
  288. package/dist/lib/accounts/add.js +0 -127
  289. package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
  290. package/dist/lib/accounts/auth-operation-lock.js +0 -4
  291. package/dist/lib/accounts/migrate.d.ts +0 -9
  292. package/dist/lib/accounts/migrate.js +3 -42
  293. package/dist/lib/accounts/slots.d.ts +0 -25
  294. package/dist/lib/accounts/slots.js +1 -49
  295. package/dist/lib/acp/client.d.ts +0 -16
  296. package/dist/lib/acp/client.js +0 -29
  297. package/dist/lib/acp/harnesses.d.ts +0 -15
  298. package/dist/lib/acp/harnesses.js +0 -16
  299. package/dist/lib/acp/run.d.ts +0 -8
  300. package/dist/lib/acp/run.js +0 -8
  301. package/dist/lib/actor.d.ts +1 -71
  302. package/dist/lib/actor.js +1 -99
  303. package/dist/lib/add-dir.d.ts +0 -46
  304. package/dist/lib/add-dir.js +1 -70
  305. package/dist/lib/address.d.ts +0 -17
  306. package/dist/lib/address.js +0 -15
  307. package/dist/lib/agent-cli-commands.d.ts +0 -10
  308. package/dist/lib/agent-cli-commands.js +0 -10
  309. package/dist/lib/agent-modes.d.ts +0 -29
  310. package/dist/lib/agent-modes.js +0 -31
  311. package/dist/lib/agent-spec/agents.d.ts +0 -426
  312. package/dist/lib/agent-spec/agents.js +37 -924
  313. package/dist/lib/agent-spec/index.d.ts +0 -5
  314. package/dist/lib/agent-spec/index.js +0 -14
  315. package/dist/lib/agent-spec/materialize.d.ts +0 -10
  316. package/dist/lib/agent-spec/materialize.js +2 -139
  317. package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
  318. package/dist/lib/agent-spec/package-resolve.js +1 -44
  319. package/dist/lib/agent-spec/package-schema.d.ts +0 -2
  320. package/dist/lib/agent-spec/package-schema.js +0 -11
  321. package/dist/lib/agent-spec/package-types.d.ts +0 -27
  322. package/dist/lib/agent-spec/package-types.js +0 -1
  323. package/dist/lib/agent-spec/primitives.d.ts +0 -18
  324. package/dist/lib/agent-spec/primitives.js +0 -27
  325. package/dist/lib/agent-spec/provider.js +0 -2
  326. package/dist/lib/agent-spec/resolve.d.ts +0 -23
  327. package/dist/lib/agent-spec/resolve.js +0 -41
  328. package/dist/lib/agent-spec/types.d.ts +0 -34
  329. package/dist/lib/agent-spec/types.js +0 -6
  330. package/dist/lib/agents.d.ts +0 -1
  331. package/dist/lib/agents.js +0 -1
  332. package/dist/lib/analytics/mix-commands.d.ts +0 -23
  333. package/dist/lib/analytics/mix-commands.js +0 -26
  334. package/dist/lib/analytics/recipes.d.ts +0 -1
  335. package/dist/lib/analytics/recipes.js +5 -10
  336. package/dist/lib/analytics/usage-db.js +4 -6
  337. package/dist/lib/answer-router.d.ts +0 -61
  338. package/dist/lib/answer-router.js +0 -57
  339. package/dist/lib/app-bundle-install.d.ts +0 -13
  340. package/dist/lib/app-bundle-install.js +0 -50
  341. package/dist/lib/artifact-actions.d.ts +0 -15
  342. package/dist/lib/artifact-actions.js +0 -18
  343. package/dist/lib/artifacts-client.d.ts +0 -10
  344. package/dist/lib/artifacts-client.js +0 -17
  345. package/dist/lib/ask-classifier.d.ts +0 -38
  346. package/dist/lib/ask-classifier.js +0 -27
  347. package/dist/lib/audit/log.d.ts +0 -47
  348. package/dist/lib/audit/log.js +1 -59
  349. package/dist/lib/auth-health.d.ts +0 -213
  350. package/dist/lib/auth-health.js +16 -266
  351. package/dist/lib/auth-mint.d.ts +0 -83
  352. package/dist/lib/auth-mint.js +8 -85
  353. package/dist/lib/auto-pull-worker.d.ts +0 -10
  354. package/dist/lib/auto-pull-worker.js +3 -48
  355. package/dist/lib/auto-pull.d.ts +0 -64
  356. package/dist/lib/auto-pull.js +0 -79
  357. package/dist/lib/beta.d.ts +0 -9
  358. package/dist/lib/beta.js +0 -9
  359. package/dist/lib/binary-shadow.d.ts +0 -22
  360. package/dist/lib/binary-shadow.js +4 -34
  361. package/dist/lib/boot-profile.d.ts +0 -10
  362. package/dist/lib/boot-profile.js +1 -31
  363. package/dist/lib/brand.d.ts +0 -20
  364. package/dist/lib/brand.js +0 -50
  365. package/dist/lib/browser/context.d.ts +0 -54
  366. package/dist/lib/browser/context.js +0 -49
  367. package/dist/lib/browser/paths.d.ts +0 -21
  368. package/dist/lib/browser/paths.js +0 -26
  369. package/dist/lib/browser/record.d.ts +0 -34
  370. package/dist/lib/browser/record.js +0 -38
  371. package/dist/lib/browser/sessions-list.d.ts +1 -79
  372. package/dist/lib/browser/sessions-list.js +2 -98
  373. package/dist/lib/browser-client.d.ts +0 -112
  374. package/dist/lib/browser-client.js +1 -90
  375. package/dist/lib/budget/config.d.ts +0 -6
  376. package/dist/lib/budget/config.js +0 -29
  377. package/dist/lib/budget/enforce.d.ts +0 -50
  378. package/dist/lib/budget/enforce.js +0 -27
  379. package/dist/lib/budget/ledger.d.ts +0 -23
  380. package/dist/lib/budget/ledger.js +0 -28
  381. package/dist/lib/budget/live-cloud.d.ts +0 -26
  382. package/dist/lib/budget/live-cloud.js +0 -12
  383. package/dist/lib/budget/live-team.d.ts +0 -17
  384. package/dist/lib/budget/live-team.js +1 -35
  385. package/dist/lib/budget/preflight.d.ts +0 -51
  386. package/dist/lib/budget/preflight.js +0 -36
  387. package/dist/lib/byok-usage.d.ts +0 -20
  388. package/dist/lib/byok-usage.js +1 -24
  389. package/dist/lib/capabilities.d.ts +0 -24
  390. package/dist/lib/capabilities.js +0 -29
  391. package/dist/lib/catchup.d.ts +0 -87
  392. package/dist/lib/catchup.js +1 -81
  393. package/dist/lib/channels/owner-forward.d.ts +0 -70
  394. package/dist/lib/channels/owner-forward.js +1 -43
  395. package/dist/lib/channels/owner-sink.js +0 -21
  396. package/dist/lib/channels/providers/desktop.d.ts +0 -37
  397. package/dist/lib/channels/providers/desktop.js +0 -72
  398. package/dist/lib/channels/providers/index.d.ts +0 -1
  399. package/dist/lib/channels/providers/index.js +2 -6
  400. package/dist/lib/channels/providers/mailbox.js +0 -7
  401. package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
  402. package/dist/lib/channels/providers/rush.d.ts +0 -2
  403. package/dist/lib/channels/providers/rush.js +0 -26
  404. package/dist/lib/channels/providers/session.d.ts +2 -0
  405. package/dist/lib/channels/providers/session.js +26 -0
  406. package/dist/lib/channels/registry.d.ts +0 -27
  407. package/dist/lib/channels/registry.js +0 -10
  408. package/dist/lib/channels/resolve.d.ts +0 -19
  409. package/dist/lib/channels/resolve.js +0 -2
  410. package/dist/lib/channels/send.d.ts +0 -50
  411. package/dist/lib/channels/send.js +0 -25
  412. package/dist/lib/checkpoint.d.ts +0 -36
  413. package/dist/lib/checkpoint.js +0 -28
  414. package/dist/lib/claude-account-token.d.ts +0 -98
  415. package/dist/lib/claude-account-token.js +7 -169
  416. package/dist/lib/claude-statusline.d.ts +0 -41
  417. package/dist/lib/claude-statusline.js +0 -68
  418. package/dist/lib/cli-entry.d.ts +0 -26
  419. package/dist/lib/cli-entry.js +1 -61
  420. package/dist/lib/cli-resources.d.ts +31 -89
  421. package/dist/lib/cli-resources.js +116 -152
  422. package/dist/lib/cloud/antigravity.d.ts +0 -29
  423. package/dist/lib/cloud/antigravity.js +0 -36
  424. package/dist/lib/cloud/codex.d.ts +0 -8
  425. package/dist/lib/cloud/codex.js +0 -41
  426. package/dist/lib/cloud/cursor.d.ts +0 -5
  427. package/dist/lib/cloud/cursor.js +2 -7
  428. package/dist/lib/cloud/dispatch.d.ts +0 -13
  429. package/dist/lib/cloud/dispatch.js +1 -48
  430. package/dist/lib/cloud/factory.d.ts +0 -52
  431. package/dist/lib/cloud/factory.js +3 -67
  432. package/dist/lib/cloud/host.d.ts +0 -39
  433. package/dist/lib/cloud/host.js +5 -48
  434. package/dist/lib/cloud/registry.d.ts +0 -25
  435. package/dist/lib/cloud/registry.js +0 -29
  436. package/dist/lib/cloud/rush.d.ts +0 -47
  437. package/dist/lib/cloud/rush.js +1 -82
  438. package/dist/lib/cloud/session-index.d.ts +0 -27
  439. package/dist/lib/cloud/session-index.js +1 -32
  440. package/dist/lib/cloud/store.d.ts +0 -18
  441. package/dist/lib/cloud/store.js +0 -28
  442. package/dist/lib/cloud/stream.d.ts +0 -14
  443. package/dist/lib/cloud/stream.js +0 -25
  444. package/dist/lib/cloud/types.d.ts +0 -168
  445. package/dist/lib/cloud/types.js +0 -46
  446. package/dist/lib/cloudflare/creds.d.ts +0 -2
  447. package/dist/lib/cloudflare/creds.js +0 -14
  448. package/dist/lib/cloudflare/provision.d.ts +0 -8
  449. package/dist/lib/cloudflare/provision.js +1 -19
  450. package/dist/lib/codex-home.d.ts +0 -60
  451. package/dist/lib/codex-home.js +2 -72
  452. package/dist/lib/codex-policy.d.ts +0 -10
  453. package/dist/lib/codex-policy.js +0 -13
  454. package/dist/lib/command-skills.d.ts +0 -10
  455. package/dist/lib/command-skills.js +0 -10
  456. package/dist/lib/commands.d.ts +0 -74
  457. package/dist/lib/commands.js +0 -112
  458. package/dist/lib/comms-render.d.ts +0 -5
  459. package/dist/lib/comms-render.js +0 -5
  460. package/dist/lib/computer/context.d.ts +0 -23
  461. package/dist/lib/computer/context.js +0 -14
  462. package/dist/lib/computer/policy.d.ts +0 -20
  463. package/dist/lib/computer/policy.js +0 -53
  464. package/dist/lib/computer/record.d.ts +0 -33
  465. package/dist/lib/computer/record.js +1 -48
  466. package/dist/lib/computer/sessions-list.d.ts +1 -128
  467. package/dist/lib/computer/sessions-list.js +6 -165
  468. package/dist/lib/computer-client.d.ts +0 -106
  469. package/dist/lib/computer-client.js +5 -86
  470. package/dist/lib/concurrency.d.ts +0 -14
  471. package/dist/lib/concurrency.js +0 -3
  472. package/dist/lib/config-drift.d.ts +0 -31
  473. package/dist/lib/config-drift.js +0 -32
  474. package/dist/lib/config-keys.d.ts +1 -65
  475. package/dist/lib/config-keys.js +6 -52
  476. package/dist/lib/config-transfer.d.ts +0 -14
  477. package/dist/lib/config-transfer.js +0 -26
  478. package/dist/lib/convert.d.ts +0 -17
  479. package/dist/lib/convert.js +0 -18
  480. package/dist/lib/crabbox/cli.d.ts +0 -156
  481. package/dist/lib/crabbox/cli.js +1 -188
  482. package/dist/lib/crabbox/config.d.ts +0 -18
  483. package/dist/lib/crabbox/config.js +1 -19
  484. package/dist/lib/crabbox/lease.d.ts +0 -93
  485. package/dist/lib/crabbox/lease.js +4 -148
  486. package/dist/lib/crabbox/progress.d.ts +0 -56
  487. package/dist/lib/crabbox/progress.js +2 -49
  488. package/dist/lib/crabbox/runtimes.d.ts +0 -94
  489. package/dist/lib/crabbox/runtimes.js +1 -111
  490. package/dist/lib/crabbox/setup-copy.d.ts +0 -64
  491. package/dist/lib/crabbox/setup-copy.js +1 -53
  492. package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
  493. package/dist/lib/daemon/account-state-daemon-service.js +2 -63
  494. package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
  495. package/dist/lib/daemon/attention-notify-service.js +1 -24
  496. package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
  497. package/dist/lib/daemon/auth-sync-service.js +0 -56
  498. package/dist/lib/daemon/catchup-service.d.ts +0 -34
  499. package/dist/lib/daemon/catchup-service.js +0 -30
  500. package/dist/lib/daemon/daemon.d.ts +0 -374
  501. package/dist/lib/daemon/daemon.js +44 -1049
  502. package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
  503. package/dist/lib/daemon/daemon.test-fixture.js +1 -24
  504. package/dist/lib/daemon/device-probe-service.d.ts +0 -16
  505. package/dist/lib/daemon/device-probe-service.js +0 -20
  506. package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
  507. package/dist/lib/daemon/feed-stream-service.js +0 -20
  508. package/dist/lib/daemon/harness-update-service.d.ts +2 -61
  509. package/dist/lib/daemon/harness-update-service.js +6 -86
  510. package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
  511. package/dist/lib/daemon/heartbeat-service.js +0 -1
  512. package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
  513. package/dist/lib/daemon/leaked-daemons.js +2 -78
  514. package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
  515. package/dist/lib/daemon/monitor-engine-service.js +3 -15
  516. package/dist/lib/daemon/runner.d.ts +0 -194
  517. package/dist/lib/daemon/runner.js +39 -760
  518. package/dist/lib/daemon/self-heal-service.d.ts +18 -17
  519. package/dist/lib/daemon/self-heal-service.js +83 -37
  520. package/dist/lib/daemon/self-update-service.d.ts +1 -131
  521. package/dist/lib/daemon/self-update-service.js +26 -189
  522. package/dist/lib/daemon/service.d.ts +0 -73
  523. package/dist/lib/daemon/service.js +0 -34
  524. package/dist/lib/daemon/session-index-service.d.ts +0 -12
  525. package/dist/lib/daemon/session-index-service.js +0 -23
  526. package/dist/lib/daemon/session-state-service.d.ts +0 -8
  527. package/dist/lib/daemon/session-state-service.js +0 -8
  528. package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
  529. package/dist/lib/daemon/session-summarizer-service.js +1 -19
  530. package/dist/lib/daemon/session-title-service.d.ts +0 -25
  531. package/dist/lib/daemon/session-title-service.js +0 -32
  532. package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
  533. package/dist/lib/daemon/state-dir-check-service.js +0 -29
  534. package/dist/lib/daemon/supervisor.d.ts +0 -112
  535. package/dist/lib/daemon/supervisor.js +4 -147
  536. package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
  537. package/dist/lib/daemon/testdata/process-view-start.js +0 -5
  538. package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
  539. package/dist/lib/daemon/tmux-reap-service.js +0 -1
  540. package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
  541. package/dist/lib/daemon/usage-sync-service.js +0 -26
  542. package/dist/lib/daemon/watchdog-service.d.ts +0 -9
  543. package/dist/lib/daemon/watchdog-service.js +0 -13
  544. package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
  545. package/dist/lib/daemon/webhook-receiver-service.js +0 -1
  546. package/dist/lib/daemon-health.d.ts +0 -55
  547. package/dist/lib/daemon-health.js +4 -77
  548. package/dist/lib/daemon-services.d.ts +0 -36
  549. package/dist/lib/daemon-services.js +0 -45
  550. package/dist/lib/daemon-ticks.d.ts +0 -126
  551. package/dist/lib/daemon-ticks.js +1 -156
  552. package/dist/lib/daemon-webhooks.d.ts +0 -57
  553. package/dist/lib/daemon-webhooks.js +2 -54
  554. package/dist/lib/deeplink/register.d.ts +0 -15
  555. package/dist/lib/deeplink/register.js +0 -60
  556. package/dist/lib/deeplink/url.d.ts +0 -24
  557. package/dist/lib/deeplink/url.js +1 -33
  558. package/dist/lib/device-config.d.ts +1 -192
  559. package/dist/lib/device-config.js +86 -240
  560. package/dist/lib/devices/config-migration.d.ts +0 -43
  561. package/dist/lib/devices/config-migration.js +7 -127
  562. package/dist/lib/devices/connect.d.ts +0 -168
  563. package/dist/lib/devices/connect.js +6 -254
  564. package/dist/lib/devices/device-docs.d.ts +0 -24
  565. package/dist/lib/devices/device-docs.js +0 -46
  566. package/dist/lib/devices/discovery-policy.d.ts +0 -30
  567. package/dist/lib/devices/discovery-policy.js +3 -34
  568. package/dist/lib/devices/doctor-findings.d.ts +0 -109
  569. package/dist/lib/devices/doctor-findings.js +30 -326
  570. package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
  571. package/dist/lib/devices/doctor-overview-cache.js +0 -81
  572. package/dist/lib/devices/fleet-divergence.d.ts +0 -89
  573. package/dist/lib/devices/fleet-divergence.js +1 -60
  574. package/dist/lib/devices/fleet-inventory.d.ts +0 -27
  575. package/dist/lib/devices/fleet-inventory.js +0 -38
  576. package/dist/lib/devices/fleet.d.ts +0 -95
  577. package/dist/lib/devices/fleet.js +0 -79
  578. package/dist/lib/devices/harness-inventory.d.ts +0 -75
  579. package/dist/lib/devices/harness-inventory.js +0 -101
  580. package/dist/lib/devices/health-report.d.ts +0 -37
  581. package/dist/lib/devices/health-report.js +0 -73
  582. package/dist/lib/devices/health.d.ts +0 -71
  583. package/dist/lib/devices/health.js +2 -82
  584. package/dist/lib/devices/interactive-host.d.ts +0 -10
  585. package/dist/lib/devices/interactive-host.js +0 -34
  586. package/dist/lib/devices/known-hosts.d.ts +0 -45
  587. package/dist/lib/devices/known-hosts.js +0 -77
  588. package/dist/lib/devices/pending.d.ts +0 -31
  589. package/dist/lib/devices/pending.js +7 -67
  590. package/dist/lib/devices/pool.d.ts +0 -36
  591. package/dist/lib/devices/pool.js +0 -30
  592. package/dist/lib/devices/reachability.d.ts +0 -25
  593. package/dist/lib/devices/reachability.js +0 -14
  594. package/dist/lib/devices/registry.d.ts +0 -141
  595. package/dist/lib/devices/registry.js +4 -151
  596. package/dist/lib/devices/resolve-profile.d.ts +0 -18
  597. package/dist/lib/devices/resolve-profile.js +0 -18
  598. package/dist/lib/devices/resolve-target.d.ts +0 -20
  599. package/dist/lib/devices/resolve-target.js +1 -51
  600. package/dist/lib/devices/rollout-verify.d.ts +1 -81
  601. package/dist/lib/devices/rollout-verify.js +0 -77
  602. package/dist/lib/devices/self-host.d.ts +0 -7
  603. package/dist/lib/devices/self-host.js +1 -29
  604. package/dist/lib/devices/ssh-config.d.ts +0 -18
  605. package/dist/lib/devices/ssh-config.js +0 -9
  606. package/dist/lib/devices/stats-cache.d.ts +0 -48
  607. package/dist/lib/devices/stats-cache.js +0 -80
  608. package/dist/lib/devices/sync.d.ts +0 -97
  609. package/dist/lib/devices/sync.js +0 -88
  610. package/dist/lib/devices/tailscale.d.ts +0 -18
  611. package/dist/lib/devices/tailscale.js +1 -38
  612. package/dist/lib/devices/terminfo.d.ts +0 -27
  613. package/dist/lib/devices/terminfo.js +2 -64
  614. package/dist/lib/devices/worker-pick.d.ts +0 -15
  615. package/dist/lib/devices/worker-pick.js +0 -48
  616. package/dist/lib/diff-text.d.ts +0 -18
  617. package/dist/lib/diff-text.js +0 -15
  618. package/dist/lib/doctor-diff.d.ts +0 -79
  619. package/dist/lib/doctor-diff.js +2 -181
  620. package/dist/lib/drift-sync.d.ts +0 -29
  621. package/dist/lib/drift-sync.js +0 -40
  622. package/dist/lib/drift.d.ts +0 -43
  623. package/dist/lib/drift.js +0 -31
  624. package/dist/lib/event-families.d.ts +0 -17
  625. package/dist/lib/event-families.js +0 -33
  626. package/dist/lib/event-provenance.d.ts +0 -4
  627. package/dist/lib/event-provenance.js +0 -5
  628. package/dist/lib/event-stream.d.ts +0 -29
  629. package/dist/lib/event-stream.js +0 -36
  630. package/dist/lib/events-ingest.d.ts +0 -27
  631. package/dist/lib/events-ingest.js +0 -54
  632. package/dist/lib/exec-account-home.d.ts +0 -24
  633. package/dist/lib/exec-account-home.js +0 -41
  634. package/dist/lib/exec-bounded.d.ts +1 -37
  635. package/dist/lib/exec-bounded.js +10 -46
  636. package/dist/lib/exec.d.ts +3 -583
  637. package/dist/lib/exec.js +18 -1025
  638. package/dist/lib/factory/snapshot.js +1 -15
  639. package/dist/lib/feed/activity-stream.d.ts +0 -27
  640. package/dist/lib/feed/activity-stream.js +4 -80
  641. package/dist/lib/feed/activity.d.ts +1 -243
  642. package/dist/lib/feed/activity.js +8 -273
  643. package/dist/lib/feed/answer.d.ts +0 -103
  644. package/dist/lib/feed/answer.js +0 -267
  645. package/dist/lib/feed/attention.d.ts +0 -56
  646. package/dist/lib/feed/attention.js +0 -161
  647. package/dist/lib/feed/envelope.d.ts +2 -17
  648. package/dist/lib/feed/envelope.js +0 -14
  649. package/dist/lib/feed/events.d.ts +0 -118
  650. package/dist/lib/feed/events.js +13 -213
  651. package/dist/lib/feed/feed.d.ts +1 -250
  652. package/dist/lib/feed/feed.js +24 -334
  653. package/dist/lib/feed/hub-server.d.ts +0 -100
  654. package/dist/lib/feed/hub-server.js +1 -191
  655. package/dist/lib/feed/hub.d.ts +0 -53
  656. package/dist/lib/feed/hub.js +0 -89
  657. package/dist/lib/feed/pr-status.d.ts +1 -19
  658. package/dist/lib/feed/pr-status.js +0 -18
  659. package/dist/lib/feed/tool-activity.d.ts +0 -59
  660. package/dist/lib/feed/tool-activity.js +1 -119
  661. package/dist/lib/feed/tools.d.ts +0 -100
  662. package/dist/lib/feed/tools.js +0 -89
  663. package/dist/lib/feed/watch.d.ts +0 -33
  664. package/dist/lib/feed/watch.js +2 -94
  665. package/dist/lib/feed-broadcast.d.ts +0 -148
  666. package/dist/lib/feed-broadcast.js +1 -283
  667. package/dist/lib/feed-outcome.d.ts +0 -50
  668. package/dist/lib/feed-outcome.js +1 -67
  669. package/dist/lib/feed-policy.d.ts +0 -6
  670. package/dist/lib/feed-policy.js +1 -27
  671. package/dist/lib/feed-post.d.ts +0 -61
  672. package/dist/lib/feed-post.js +4 -61
  673. package/dist/lib/feed-ranking.d.ts +1 -1
  674. package/dist/lib/fleet/apply.d.ts +0 -64
  675. package/dist/lib/fleet/apply.js +0 -125
  676. package/dist/lib/fleet/auth-sync.d.ts +0 -48
  677. package/dist/lib/fleet/auth-sync.js +4 -49
  678. package/dist/lib/fleet/capture.d.ts +0 -26
  679. package/dist/lib/fleet/capture.js +1 -36
  680. package/dist/lib/fleet/manifest.d.ts +0 -38
  681. package/dist/lib/fleet/manifest.js +0 -40
  682. package/dist/lib/fleet/types.d.ts +1 -138
  683. package/dist/lib/fleet/types.js +0 -12
  684. package/dist/lib/fleet-cache.d.ts +0 -12
  685. package/dist/lib/fleet-cache.js +0 -24
  686. package/dist/lib/fleet-shared-state.d.ts +6 -59
  687. package/dist/lib/fleet-shared-state.js +5 -51
  688. package/dist/lib/fleet-status.d.ts +0 -27
  689. package/dist/lib/fleet-status.js +0 -48
  690. package/dist/lib/format.d.ts +0 -74
  691. package/dist/lib/format.js +3 -77
  692. package/dist/lib/friction-heuristics.d.ts +0 -20
  693. package/dist/lib/friction-heuristics.js +0 -8
  694. package/dist/lib/fs-atomic.d.ts +0 -51
  695. package/dist/lib/fs-atomic.js +8 -66
  696. package/dist/lib/fs-walk.d.ts +0 -13
  697. package/dist/lib/fs-walk.js +0 -22
  698. package/dist/lib/fuzzy.d.ts +0 -29
  699. package/dist/lib/fuzzy.js +0 -31
  700. package/dist/lib/gemini-settings.js +0 -12
  701. package/dist/lib/git.d.ts +0 -366
  702. package/dist/lib/git.js +7 -574
  703. package/dist/lib/github/ci-failure.d.ts +30 -0
  704. package/dist/lib/github/ci-failure.js +95 -0
  705. package/dist/lib/github/gh-overload.d.ts +0 -38
  706. package/dist/lib/github/gh-overload.js +3 -55
  707. package/dist/lib/github/pr-mergeable.d.ts +3 -34
  708. package/dist/lib/github/pr-mergeable.js +2 -42
  709. package/dist/lib/github/pr-verdict.d.ts +0 -44
  710. package/dist/lib/github/pr-verdict.js +0 -36
  711. package/dist/lib/github/project-prs.d.ts +135 -105
  712. package/dist/lib/github/project-prs.js +530 -170
  713. package/dist/lib/github/release-drift.d.ts +45 -0
  714. package/dist/lib/github/release-drift.js +91 -0
  715. package/dist/lib/github/rest.d.ts +0 -50
  716. package/dist/lib/github/rest.js +0 -49
  717. package/dist/lib/github/viewer.d.ts +27 -0
  718. package/dist/lib/github/viewer.js +101 -0
  719. package/dist/lib/goose-commands.d.ts +0 -29
  720. package/dist/lib/goose-commands.js +3 -48
  721. package/dist/lib/harness/adapter.d.ts +0 -151
  722. package/dist/lib/harness/adapter.js +0 -41
  723. package/dist/lib/harness/adapters/claude.d.ts +0 -8
  724. package/dist/lib/harness/adapters/claude.js +0 -89
  725. package/dist/lib/harness/adapters/codex.js +0 -18
  726. package/dist/lib/harness/adapters/copilot.js +0 -3
  727. package/dist/lib/harness/adapters/cursor.js +0 -16
  728. package/dist/lib/harness/adapters/droid.js +0 -3
  729. package/dist/lib/harness/adapters/kimi.js +0 -19
  730. package/dist/lib/harness/adapters/muse.js +0 -9
  731. package/dist/lib/harness/adapters/opencode.js +0 -2
  732. package/dist/lib/harness/exec-config-version.d.ts +0 -2
  733. package/dist/lib/harness/exec-config-version.js +0 -13
  734. package/dist/lib/harness/index.js +0 -10
  735. package/dist/lib/harness-auth-capabilities.d.ts +0 -26
  736. package/dist/lib/harness-auth-capabilities.js +0 -18
  737. package/dist/lib/harness-connection-test.d.ts +0 -27
  738. package/dist/lib/harness-connection-test.js +2 -20
  739. package/dist/lib/heal.d.ts +0 -45
  740. package/dist/lib/heal.js +2 -82
  741. package/dist/lib/help.d.ts +0 -32
  742. package/dist/lib/help.js +0 -41
  743. package/dist/lib/helper-download.d.ts +0 -85
  744. package/dist/lib/helper-download.js +0 -95
  745. package/dist/lib/helper-versions.d.ts +0 -51
  746. package/dist/lib/helper-versions.js +1 -45
  747. package/dist/lib/hooks/cache.d.ts +0 -40
  748. package/dist/lib/hooks/cache.js +8 -122
  749. package/dist/lib/hooks/install.d.ts +0 -253
  750. package/dist/lib/hooks/install.js +49 -822
  751. package/dist/lib/hooks/match.d.ts +0 -24
  752. package/dist/lib/hooks/match.js +0 -31
  753. package/dist/lib/hooks/profile.d.ts +0 -21
  754. package/dist/lib/hooks/profile.js +0 -28
  755. package/dist/lib/hosts/credential-transport.d.ts +0 -6
  756. package/dist/lib/hosts/credential-transport.js +0 -17
  757. package/dist/lib/hosts/credentials.d.ts +0 -35
  758. package/dist/lib/hosts/credentials.js +0 -38
  759. package/dist/lib/hosts/dispatch.d.ts +0 -140
  760. package/dist/lib/hosts/dispatch.js +0 -176
  761. package/dist/lib/hosts/logs.d.ts +0 -25
  762. package/dist/lib/hosts/logs.js +1 -51
  763. package/dist/lib/hosts/option.d.ts +0 -12
  764. package/dist/lib/hosts/option.js +0 -12
  765. package/dist/lib/hosts/passthrough.d.ts +0 -129
  766. package/dist/lib/hosts/passthrough.js +12 -249
  767. package/dist/lib/hosts/progress.d.ts +0 -90
  768. package/dist/lib/hosts/progress.js +5 -115
  769. package/dist/lib/hosts/providers/devices.d.ts +0 -19
  770. package/dist/lib/hosts/providers/devices.js +1 -34
  771. package/dist/lib/hosts/providers/local.d.ts +0 -14
  772. package/dist/lib/hosts/providers/local.js +0 -22
  773. package/dist/lib/hosts/ready.d.ts +0 -99
  774. package/dist/lib/hosts/ready.js +0 -101
  775. package/dist/lib/hosts/reconcile.d.ts +0 -38
  776. package/dist/lib/hosts/reconcile.js +1 -50
  777. package/dist/lib/hosts/reconnect.d.ts +0 -75
  778. package/dist/lib/hosts/reconnect.js +0 -98
  779. package/dist/lib/hosts/registry.d.ts +0 -74
  780. package/dist/lib/hosts/registry.js +0 -110
  781. package/dist/lib/hosts/remote-cmd.d.ts +1 -228
  782. package/dist/lib/hosts/remote-cmd.js +19 -294
  783. package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
  784. package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
  785. package/dist/lib/hosts/remote-os.d.ts +0 -19
  786. package/dist/lib/hosts/remote-os.js +0 -22
  787. package/dist/lib/hosts/remote-session-id.d.ts +0 -22
  788. package/dist/lib/hosts/remote-session-id.js +0 -24
  789. package/dist/lib/hosts/routing-flag.d.ts +0 -21
  790. package/dist/lib/hosts/routing-flag.js +0 -21
  791. package/dist/lib/hosts/run-target.d.ts +0 -53
  792. package/dist/lib/hosts/run-target.js +0 -56
  793. package/dist/lib/hosts/session-index.d.ts +1 -53
  794. package/dist/lib/hosts/session-index.js +2 -59
  795. package/dist/lib/hosts/session-marker.d.ts +0 -31
  796. package/dist/lib/hosts/session-marker.js +0 -32
  797. package/dist/lib/hosts/ssh-config.d.ts +0 -25
  798. package/dist/lib/hosts/ssh-config.js +1 -32
  799. package/dist/lib/hosts/tasks.d.ts +0 -54
  800. package/dist/lib/hosts/tasks.js +0 -35
  801. package/dist/lib/hosts/types.d.ts +0 -39
  802. package/dist/lib/hosts/types.js +0 -22
  803. package/dist/lib/humans.d.ts +0 -21
  804. package/dist/lib/humans.js +0 -30
  805. package/dist/lib/identity/client.d.ts +1 -35
  806. package/dist/lib/identity/client.js +3 -29
  807. package/dist/lib/identity/index.d.ts +3 -27
  808. package/dist/lib/identity/index.js +8 -24
  809. package/dist/lib/import.d.ts +0 -104
  810. package/dist/lib/import.js +1 -137
  811. package/dist/lib/installations/active-check.d.ts +0 -53
  812. package/dist/lib/installations/active-check.js +0 -49
  813. package/dist/lib/installations/index.d.ts +0 -9
  814. package/dist/lib/installations/index.js +0 -9
  815. package/dist/lib/installations/installation-lock.js +0 -8
  816. package/dist/lib/installations/launch-gate.d.ts +0 -56
  817. package/dist/lib/installations/launch-gate.js +0 -83
  818. package/dist/lib/installations/migrate.d.ts +0 -100
  819. package/dist/lib/installations/migrate.js +105 -572
  820. package/dist/lib/installations/native-command.d.ts +0 -1
  821. package/dist/lib/installations/native-command.js +0 -6
  822. package/dist/lib/installations/resolve.d.ts +0 -24
  823. package/dist/lib/installations/resolve.js +0 -24
  824. package/dist/lib/installations/shims.d.ts +0 -395
  825. package/dist/lib/installations/shims.js +30 -957
  826. package/dist/lib/installations/store.d.ts +0 -199
  827. package/dist/lib/installations/store.js +1 -297
  828. package/dist/lib/installations/strategies.d.ts +0 -44
  829. package/dist/lib/installations/strategies.js +0 -87
  830. package/dist/lib/installations/types.d.ts +1 -67
  831. package/dist/lib/installations/types.js +0 -6
  832. package/dist/lib/installations/update-cancellation.d.ts +0 -74
  833. package/dist/lib/installations/update-cancellation.js +0 -74
  834. package/dist/lib/installations/update-policy.d.ts +0 -57
  835. package/dist/lib/installations/update-policy.js +0 -62
  836. package/dist/lib/installations/update-runtime.d.ts +0 -88
  837. package/dist/lib/installations/update-runtime.js +1 -127
  838. package/dist/lib/installations/update.d.ts +0 -53
  839. package/dist/lib/installations/update.js +0 -95
  840. package/dist/lib/installations/versions.d.ts +0 -310
  841. package/dist/lib/installations/versions.js +14 -837
  842. package/dist/lib/isolation-boundary-report.d.ts +0 -7
  843. package/dist/lib/isolation-boundary-report.js +0 -7
  844. package/dist/lib/launch-identity.d.ts +0 -8
  845. package/dist/lib/launch-identity.js +0 -8
  846. package/dist/lib/linear-autoclose.d.ts +0 -25
  847. package/dist/lib/linear-autoclose.js +0 -19
  848. package/dist/lib/linear-cache.d.ts +0 -57
  849. package/dist/lib/linear-cache.js +1 -81
  850. package/dist/lib/linear-project-counts.d.ts +0 -83
  851. package/dist/lib/linear-project-counts.js +2 -64
  852. package/dist/lib/linear-projects.d.ts +0 -62
  853. package/dist/lib/linear-projects.js +0 -85
  854. package/dist/lib/linear-rate-limit.d.ts +0 -21
  855. package/dist/lib/linear-rate-limit.js +1 -93
  856. package/dist/lib/linux-userns.d.ts +1 -42
  857. package/dist/lib/linux-userns.js +0 -47
  858. package/dist/lib/lock-compromise.d.ts +0 -7
  859. package/dist/lib/lock-compromise.js +0 -7
  860. package/dist/lib/log-follow.d.ts +0 -2
  861. package/dist/lib/log-follow.js +5 -15
  862. package/dist/lib/loop.d.ts +0 -106
  863. package/dist/lib/loop.js +0 -135
  864. package/dist/lib/machine-id.d.ts +0 -19
  865. package/dist/lib/machine-id.js +0 -19
  866. package/dist/lib/mailbox-gc.d.ts +0 -7
  867. package/dist/lib/mailbox-gc.js +0 -25
  868. package/dist/lib/mailbox-target.d.ts +0 -31
  869. package/dist/lib/mailbox-target.js +0 -27
  870. package/dist/lib/mailbox.d.ts +0 -77
  871. package/dist/lib/mailbox.js +5 -105
  872. package/dist/lib/manifest.d.ts +0 -4
  873. package/dist/lib/manifest.js +0 -36
  874. package/dist/lib/markdown.d.ts +0 -3
  875. package/dist/lib/markdown.js +0 -9
  876. package/dist/lib/mcp-registry.d.ts +1 -50
  877. package/dist/lib/mcp-registry.js +0 -64
  878. package/dist/lib/mcp.d.ts +0 -115
  879. package/dist/lib/mcp.js +3 -199
  880. package/dist/lib/memory-cache.d.ts +0 -11
  881. package/dist/lib/memory-cache.js +0 -9
  882. package/dist/lib/memory.d.ts +0 -52
  883. package/dist/lib/memory.js +12 -74
  884. package/dist/lib/menubar/download-menubar.d.ts +0 -35
  885. package/dist/lib/menubar/download-menubar.js +0 -38
  886. package/dist/lib/menubar/install-menubar.d.ts +0 -405
  887. package/dist/lib/menubar/install-menubar.js +25 -667
  888. package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
  889. package/dist/lib/menubar/migrate-prefs.js +1 -70
  890. package/dist/lib/menubar/notify-desktop.d.ts +0 -82
  891. package/dist/lib/menubar/notify-desktop.js +0 -68
  892. package/dist/lib/menubar/resolve-version.d.ts +0 -41
  893. package/dist/lib/menubar/resolve-version.js +2 -44
  894. package/dist/lib/menubar/snapshot.d.ts +13 -66
  895. package/dist/lib/menubar/snapshot.js +45 -39
  896. package/dist/lib/merged-resources.d.ts +0 -10
  897. package/dist/lib/merged-resources.js +0 -10
  898. package/dist/lib/migrate-fold.d.ts +0 -31
  899. package/dist/lib/migrate-fold.js +6 -38
  900. package/dist/lib/model-tier-overrides.d.ts +0 -30
  901. package/dist/lib/model-tier-overrides.js +0 -14
  902. package/dist/lib/model-tiers.d.ts +0 -43
  903. package/dist/lib/model-tiers.js +5 -78
  904. package/dist/lib/models.d.ts +0 -145
  905. package/dist/lib/models.js +3 -333
  906. package/dist/lib/monitors/config.d.ts +0 -187
  907. package/dist/lib/monitors/config.js +4 -101
  908. package/dist/lib/monitors/dispatch.d.ts +0 -22
  909. package/dist/lib/monitors/dispatch.js +0 -35
  910. package/dist/lib/monitors/engine.d.ts +1 -53
  911. package/dist/lib/monitors/engine.js +17 -106
  912. package/dist/lib/monitors/fingerprint.d.ts +0 -43
  913. package/dist/lib/monitors/fingerprint.js +0 -57
  914. package/dist/lib/monitors/pid-watch.d.ts +0 -31
  915. package/dist/lib/monitors/pid-watch.js +0 -31
  916. package/dist/lib/monitors/remote.d.ts +0 -52
  917. package/dist/lib/monitors/remote.js +0 -42
  918. package/dist/lib/monitors/sources/command.d.ts +2 -9
  919. package/dist/lib/monitors/sources/command.js +13 -34
  920. package/dist/lib/monitors/sources/device.d.ts +0 -10
  921. package/dist/lib/monitors/sources/device.js +0 -14
  922. package/dist/lib/monitors/sources/failure.d.ts +0 -27
  923. package/dist/lib/monitors/sources/failure.js +0 -27
  924. package/dist/lib/monitors/sources/file.d.ts +0 -10
  925. package/dist/lib/monitors/sources/file.js +0 -11
  926. package/dist/lib/monitors/sources/http.d.ts +0 -7
  927. package/dist/lib/monitors/sources/http.js +0 -9
  928. package/dist/lib/monitors/sources/index.d.ts +0 -9
  929. package/dist/lib/monitors/sources/index.js +0 -9
  930. package/dist/lib/monitors/sources/poll.d.ts +0 -8
  931. package/dist/lib/monitors/sources/poll.js +0 -8
  932. package/dist/lib/monitors/sources/types.d.ts +0 -18
  933. package/dist/lib/monitors/sources/types.js +0 -8
  934. package/dist/lib/monitors/sources/webhook.d.ts +0 -7
  935. package/dist/lib/monitors/sources/webhook.js +0 -7
  936. package/dist/lib/monitors/sources/ws.d.ts +0 -10
  937. package/dist/lib/monitors/sources/ws.js +3 -13
  938. package/dist/lib/monitors/state.d.ts +0 -132
  939. package/dist/lib/monitors/state.js +2 -86
  940. package/dist/lib/native-accounts.d.ts +0 -32
  941. package/dist/lib/native-accounts.js +0 -17
  942. package/dist/lib/net-close.d.ts +0 -9
  943. package/dist/lib/net-close.js +0 -5
  944. package/dist/lib/notify.d.ts +0 -47
  945. package/dist/lib/notify.js +0 -30
  946. package/dist/lib/onepassword.d.ts +0 -14
  947. package/dist/lib/onepassword.js +0 -12
  948. package/dist/lib/open-url.d.ts +0 -38
  949. package/dist/lib/open-url.js +1 -69
  950. package/dist/lib/openclaw-keychain.js +2 -7
  951. package/dist/lib/operator.d.ts +0 -9
  952. package/dist/lib/operator.js +0 -34
  953. package/dist/lib/origin-machine.d.ts +0 -16
  954. package/dist/lib/origin-machine.js +0 -16
  955. package/dist/lib/output/git-output.d.ts +0 -31
  956. package/dist/lib/output/git-output.js +4 -43
  957. package/dist/lib/overdue.d.ts +0 -35
  958. package/dist/lib/overdue.js +0 -60
  959. package/dist/lib/owner-message.d.ts +0 -20
  960. package/dist/lib/owner-message.js +1 -40
  961. package/dist/lib/packages/output-home.d.ts +0 -28
  962. package/dist/lib/packages/output-home.js +0 -114
  963. package/dist/lib/paths.d.ts +0 -26
  964. package/dist/lib/paths.js +1 -27
  965. package/dist/lib/percentile.d.ts +0 -11
  966. package/dist/lib/percentile.js +0 -11
  967. package/dist/lib/perf/db.d.ts +0 -16
  968. package/dist/lib/perf/db.js +3 -32
  969. package/dist/lib/perf/spool.d.ts +0 -12
  970. package/dist/lib/perf/spool.js +0 -13
  971. package/dist/lib/perf/types.d.ts +0 -26
  972. package/dist/lib/perf/types.js +0 -1
  973. package/dist/lib/permissions-registry.d.ts +0 -48
  974. package/dist/lib/permissions-registry.js +0 -108
  975. package/dist/lib/permissions.d.ts +0 -215
  976. package/dist/lib/permissions.js +4 -407
  977. package/dist/lib/picker.d.ts +0 -124
  978. package/dist/lib/picker.js +0 -140
  979. package/dist/lib/placement.d.ts +0 -57
  980. package/dist/lib/placement.js +0 -47
  981. package/dist/lib/platform/exec.d.ts +0 -73
  982. package/dist/lib/platform/exec.js +0 -80
  983. package/dist/lib/platform/index.d.ts +0 -14
  984. package/dist/lib/platform/index.js +0 -14
  985. package/dist/lib/platform/ipc.d.ts +0 -10
  986. package/dist/lib/platform/ipc.js +0 -13
  987. package/dist/lib/platform/links.d.ts +0 -14
  988. package/dist/lib/platform/links.js +0 -25
  989. package/dist/lib/platform/paths.d.ts +0 -48
  990. package/dist/lib/platform/paths.js +0 -52
  991. package/dist/lib/platform/posixpath.d.ts +0 -18
  992. package/dist/lib/platform/posixpath.js +0 -62
  993. package/dist/lib/platform/process.d.ts +0 -67
  994. package/dist/lib/platform/process.js +5 -99
  995. package/dist/lib/platform/winpath.d.ts +0 -50
  996. package/dist/lib/platform/winpath.js +0 -81
  997. package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
  998. package/dist/lib/plugins/plugin-marketplace.js +10 -238
  999. package/dist/lib/plugins/plugins.d.ts +0 -238
  1000. package/dist/lib/plugins/plugins.js +20 -454
  1001. package/dist/lib/plugins/skills.d.ts +0 -86
  1002. package/dist/lib/plugins/skills.js +1 -139
  1003. package/dist/lib/pr-land-detach.d.ts +0 -17
  1004. package/dist/lib/pr-land-detach.js +0 -30
  1005. package/dist/lib/pricing/cost.d.ts +0 -29
  1006. package/dist/lib/pricing/cost.js +0 -38
  1007. package/dist/lib/pricing/index.d.ts +0 -6
  1008. package/dist/lib/pricing/index.js +0 -6
  1009. package/dist/lib/pricing/table.d.ts +0 -8
  1010. package/dist/lib/pricing/table.js +3 -56
  1011. package/dist/lib/probe.d.ts +0 -5
  1012. package/dist/lib/probe.js +0 -40
  1013. package/dist/lib/profiles-presets.d.ts +0 -20
  1014. package/dist/lib/profiles-presets.js +1 -36
  1015. package/dist/lib/profiles.d.ts +0 -185
  1016. package/dist/lib/profiles.js +1 -158
  1017. package/dist/lib/project-doctor.d.ts +0 -29
  1018. package/dist/lib/project-doctor.js +0 -26
  1019. package/dist/lib/project-focus.d.ts +0 -41
  1020. package/dist/lib/project-focus.js +0 -49
  1021. package/dist/lib/project-import.d.ts +0 -41
  1022. package/dist/lib/project-import.js +0 -36
  1023. package/dist/lib/project-key.d.ts +0 -65
  1024. package/dist/lib/project-key.js +0 -70
  1025. package/dist/lib/project-launch.d.ts +0 -49
  1026. package/dist/lib/project-launch.js +2 -91
  1027. package/dist/lib/project-probe.d.ts +0 -86
  1028. package/dist/lib/project-probe.js +1 -88
  1029. package/dist/lib/project-pull.d.ts +0 -96
  1030. package/dist/lib/project-pull.js +0 -122
  1031. package/dist/lib/project-resources.d.ts +0 -44
  1032. package/dist/lib/project-resources.js +7 -171
  1033. package/dist/lib/project-root.d.ts +0 -95
  1034. package/dist/lib/project-root.js +0 -101
  1035. package/dist/lib/project-schedule.d.ts +0 -43
  1036. package/dist/lib/project-schedule.js +0 -52
  1037. package/dist/lib/project-status.d.ts +0 -108
  1038. package/dist/lib/project-status.js +0 -117
  1039. package/dist/lib/projects.d.ts +0 -197
  1040. package/dist/lib/projects.js +1 -213
  1041. package/dist/lib/pwsh.d.ts +0 -41
  1042. package/dist/lib/pwsh.js +0 -51
  1043. package/dist/lib/quick-todo.d.ts +84 -0
  1044. package/dist/lib/quick-todo.js +243 -0
  1045. package/dist/lib/reconcile-and-repair.d.ts +0 -78
  1046. package/dist/lib/reconcile-and-repair.js +3 -66
  1047. package/dist/lib/redact.d.ts +0 -29
  1048. package/dist/lib/redact.js +0 -54
  1049. package/dist/lib/refresh-coordinator.d.ts +0 -15
  1050. package/dist/lib/refresh-coordinator.js +0 -10
  1051. package/dist/lib/refresh.d.ts +0 -39
  1052. package/dist/lib/refresh.js +0 -45
  1053. package/dist/lib/registry.d.ts +0 -65
  1054. package/dist/lib/registry.js +0 -127
  1055. package/dist/lib/reminders.d.ts +0 -21
  1056. package/dist/lib/reminders.js +0 -30
  1057. package/dist/lib/remote-agents-json.d.ts +0 -44
  1058. package/dist/lib/remote-agents-json.js +1 -44
  1059. package/dist/lib/reserved-stores.d.ts +0 -28
  1060. package/dist/lib/reserved-stores.js +2 -28
  1061. package/dist/lib/resource-aliases.d.ts +0 -12
  1062. package/dist/lib/resource-aliases.js +0 -12
  1063. package/dist/lib/resource-content-diff.d.ts +0 -28
  1064. package/dist/lib/resource-content-diff.js +7 -34
  1065. package/dist/lib/resource-inventory.d.ts +0 -51
  1066. package/dist/lib/resource-inventory.js +0 -45
  1067. package/dist/lib/resource-patterns.d.ts +0 -32
  1068. package/dist/lib/resource-patterns.js +0 -34
  1069. package/dist/lib/resource-profiles.d.ts +0 -7
  1070. package/dist/lib/resource-profiles.js +0 -11
  1071. package/dist/lib/resources/types.d.ts +0 -50
  1072. package/dist/lib/resources/types.js +0 -7
  1073. package/dist/lib/resources/workflows.d.ts +0 -7
  1074. package/dist/lib/resources/workflows.js +0 -13
  1075. package/dist/lib/resources.d.ts +0 -65
  1076. package/dist/lib/resources.js +0 -78
  1077. package/dist/lib/routers.d.ts +0 -67
  1078. package/dist/lib/routers.js +0 -60
  1079. package/dist/lib/routine-activation.d.ts +0 -23
  1080. package/dist/lib/routine-activation.js +0 -24
  1081. package/dist/lib/routine-context.d.ts +1 -91
  1082. package/dist/lib/routine-context.js +0 -107
  1083. package/dist/lib/routine-notify-owner.d.ts +0 -79
  1084. package/dist/lib/routine-notify-owner.js +1 -103
  1085. package/dist/lib/routine-notify.d.ts +0 -70
  1086. package/dist/lib/routine-notify.js +1 -75
  1087. package/dist/lib/routine-process-cleanup.d.ts +0 -1
  1088. package/dist/lib/routine-process-cleanup.js +1 -4
  1089. package/dist/lib/routine-readiness.d.ts +0 -63
  1090. package/dist/lib/routine-readiness.js +4 -86
  1091. package/dist/lib/routines-format.d.ts +0 -40
  1092. package/dist/lib/routines-format.js +0 -67
  1093. package/dist/lib/routines-placement.d.ts +0 -33
  1094. package/dist/lib/routines-placement.js +0 -40
  1095. package/dist/lib/routines-project.d.ts +0 -57
  1096. package/dist/lib/routines-project.js +6 -80
  1097. package/dist/lib/rules/compile.d.ts +0 -66
  1098. package/dist/lib/rules/compile.js +6 -118
  1099. package/dist/lib/rules/compose.d.ts +0 -56
  1100. package/dist/lib/rules/compose.js +2 -83
  1101. package/dist/lib/rules/rules.d.ts +0 -23
  1102. package/dist/lib/rules/rules.js +0 -35
  1103. package/dist/lib/rules/run-sync.d.ts +0 -16
  1104. package/dist/lib/rules/run-sync.js +1 -44
  1105. package/dist/lib/run-config.d.ts +0 -7
  1106. package/dist/lib/run-config.js +0 -8
  1107. package/dist/lib/run-defaults.d.ts +0 -14
  1108. package/dist/lib/run-defaults.js +0 -14
  1109. package/dist/lib/run-notify.d.ts +0 -18
  1110. package/dist/lib/run-notify.js +0 -36
  1111. package/dist/lib/run-trace-sync.d.ts +0 -21
  1112. package/dist/lib/run-trace-sync.js +2 -66
  1113. package/dist/lib/rush-session.d.ts +0 -26
  1114. package/dist/lib/rush-session.js +0 -28
  1115. package/dist/lib/sandbox.d.ts +0 -45
  1116. package/dist/lib/sandbox.js +5 -93
  1117. package/dist/lib/scheduler.d.ts +0 -28
  1118. package/dist/lib/scheduler.js +0 -45
  1119. package/dist/lib/scheduling/routines.d.ts +0 -652
  1120. package/dist/lib/scheduling/routines.js +8 -475
  1121. package/dist/lib/secrets-cli.d.ts +3 -8
  1122. package/dist/lib/secrets-cli.js +1 -19
  1123. package/dist/lib/secrets-client.d.ts +0 -117
  1124. package/dist/lib/secrets-client.js +4 -275
  1125. package/dist/lib/secrets-policy.d.ts +0 -142
  1126. package/dist/lib/secrets-policy.js +4 -237
  1127. package/dist/lib/secrets-types.d.ts +0 -87
  1128. package/dist/lib/secrets-types.js +0 -13
  1129. package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
  1130. package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
  1131. package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
  1132. package/dist/lib/self-heal/checks/install-staging.js +1 -28
  1133. package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
  1134. package/dist/lib/self-heal/checks/path.js +0 -9
  1135. package/dist/lib/self-heal/checks/resources.js +0 -5
  1136. package/dist/lib/self-heal/checks/shadowing.js +2 -16
  1137. package/dist/lib/self-heal/checks/shims.js +0 -14
  1138. package/dist/lib/self-heal/child.d.ts +12 -0
  1139. package/dist/lib/self-heal/child.js +23 -0
  1140. package/dist/lib/self-heal/registry.d.ts +0 -9
  1141. package/dist/lib/self-heal/registry.js +0 -16
  1142. package/dist/lib/self-heal/types.d.ts +0 -12
  1143. package/dist/lib/self-heal/types.js +0 -15
  1144. package/dist/lib/self-update.d.ts +0 -312
  1145. package/dist/lib/self-update.js +9 -360
  1146. package/dist/lib/service-manifest.d.ts +0 -39
  1147. package/dist/lib/service-manifest.js +0 -72
  1148. package/dist/lib/session/active.d.ts +13 -869
  1149. package/dist/lib/session/active.js +17 -976
  1150. package/dist/lib/session/actor-sidecar.d.ts +1 -32
  1151. package/dist/lib/session/actor-sidecar.js +1 -41
  1152. package/dist/lib/session/bookmarks.d.ts +0 -33
  1153. package/dist/lib/session/bookmarks.js +0 -37
  1154. package/dist/lib/session/bundle.d.ts +0 -86
  1155. package/dist/lib/session/bundle.js +0 -54
  1156. package/dist/lib/session/claude-accounts.d.ts +0 -40
  1157. package/dist/lib/session/claude-accounts.js +0 -49
  1158. package/dist/lib/session/cloud.d.ts +1 -23
  1159. package/dist/lib/session/cloud.js +0 -26
  1160. package/dist/lib/session/db.d.ts +5 -658
  1161. package/dist/lib/session/db.js +22 -1443
  1162. package/dist/lib/session/detached.d.ts +0 -21
  1163. package/dist/lib/session/detached.js +0 -29
  1164. package/dist/lib/session/discover.d.ts +3 -420
  1165. package/dist/lib/session/discover.js +30 -1123
  1166. package/dist/lib/session/fork.d.ts +1 -41
  1167. package/dist/lib/session/fork.js +0 -19
  1168. package/dist/lib/session/ghostty-tabs.d.ts +0 -24
  1169. package/dist/lib/session/ghostty-tabs.js +0 -37
  1170. package/dist/lib/session/glance-files.d.ts +19 -0
  1171. package/dist/lib/session/glance-files.js +258 -0
  1172. package/dist/lib/session/hook-sessions.d.ts +0 -33
  1173. package/dist/lib/session/hook-sessions.js +4 -99
  1174. package/dist/lib/session/host-link.d.ts +1 -94
  1175. package/dist/lib/session/host-link.js +1 -81
  1176. package/dist/lib/session/inject-target.d.ts +8 -0
  1177. package/dist/lib/session/inject-target.js +32 -0
  1178. package/dist/lib/session/inject.d.ts +0 -15
  1179. package/dist/lib/session/inject.js +0 -15
  1180. package/dist/lib/session/live-metadata.d.ts +1 -34
  1181. package/dist/lib/session/live-metadata.js +1 -73
  1182. package/dist/lib/session/local-tmux-attach.d.ts +0 -37
  1183. package/dist/lib/session/local-tmux-attach.js +1 -76
  1184. package/dist/lib/session/migrate-targets.d.ts +0 -46
  1185. package/dist/lib/session/migrate-targets.js +0 -24
  1186. package/dist/lib/session/migrations.d.ts +0 -12
  1187. package/dist/lib/session/migrations.js +1 -20
  1188. package/dist/lib/session/mirror.d.ts +0 -32
  1189. package/dist/lib/session/mirror.js +0 -77
  1190. package/dist/lib/session/origin-machine.js +0 -3
  1191. package/dist/lib/session/pid-registry.d.ts +0 -80
  1192. package/dist/lib/session/pid-registry.js +2 -81
  1193. package/dist/lib/session/presence.d.ts +0 -39
  1194. package/dist/lib/session/presence.js +2 -52
  1195. package/dist/lib/session/process-view.d.ts +0 -11
  1196. package/dist/lib/session/process-view.js +0 -25
  1197. package/dist/lib/session/projection.d.ts +0 -3
  1198. package/dist/lib/session/projection.js +0 -10
  1199. package/dist/lib/session/provenance.d.ts +1 -37
  1200. package/dist/lib/session/provenance.js +0 -69
  1201. package/dist/lib/session/recovery.d.ts +1 -40
  1202. package/dist/lib/session/recovery.js +2 -80
  1203. package/dist/lib/session/relative-time.js +0 -3
  1204. package/dist/lib/session/remote/peer-stream.d.ts +0 -42
  1205. package/dist/lib/session/remote/peer-stream.js +0 -64
  1206. package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
  1207. package/dist/lib/session/remote/remote-bundle.js +0 -21
  1208. package/dist/lib/session/remote/remote-list.d.ts +1 -110
  1209. package/dist/lib/session/remote/remote-list.js +5 -139
  1210. package/dist/lib/session/remote/remote.d.ts +0 -98
  1211. package/dist/lib/session/remote/remote.js +3 -119
  1212. package/dist/lib/session/remote/watch.d.ts +1 -34
  1213. package/dist/lib/session/remote/watch.js +12 -72
  1214. package/dist/lib/session/remote-active.d.ts +0 -35
  1215. package/dist/lib/session/remote-active.js +0 -48
  1216. package/dist/lib/session/remote-bundle.js +0 -2
  1217. package/dist/lib/session/remote-list.js +0 -2
  1218. package/dist/lib/session/remote-preview-cache.d.ts +0 -7
  1219. package/dist/lib/session/remote-preview-cache.js +1 -76
  1220. package/dist/lib/session/remote.js +0 -2
  1221. package/dist/lib/session/resume-command.d.ts +0 -6
  1222. package/dist/lib/session/resume-command.js +0 -6
  1223. package/dist/lib/session/resume-owner.d.ts +1 -52
  1224. package/dist/lib/session/resume-owner.js +0 -56
  1225. package/dist/lib/session/run-names.d.ts +0 -24
  1226. package/dist/lib/session/run-names.js +0 -26
  1227. package/dist/lib/session/session-cache.d.ts +2 -146
  1228. package/dist/lib/session/session-cache.js +26 -203
  1229. package/dist/lib/session/short-id.js +0 -3
  1230. package/dist/lib/session/sync/agents.d.ts +0 -68
  1231. package/dist/lib/session/sync/agents.js +0 -0
  1232. package/dist/lib/session/sync/backend.d.ts +0 -39
  1233. package/dist/lib/session/sync/backend.js +0 -45
  1234. package/dist/lib/session/sync/config.d.ts +0 -27
  1235. package/dist/lib/session/sync/config.js +0 -56
  1236. package/dist/lib/session/sync/managed-config.d.ts +0 -17
  1237. package/dist/lib/session/sync/managed-config.js +0 -17
  1238. package/dist/lib/session/sync/managed-key.d.ts +0 -38
  1239. package/dist/lib/session/sync/managed-key.js +1 -42
  1240. package/dist/lib/session/sync/net-client.d.ts +0 -36
  1241. package/dist/lib/session/sync/net-client.js +0 -30
  1242. package/dist/lib/session/sync/provision.d.ts +0 -2
  1243. package/dist/lib/session/sync/provision.js +0 -13
  1244. package/dist/lib/session/sync/r2.d.ts +0 -20
  1245. package/dist/lib/session/sync/r2.js +0 -20
  1246. package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
  1247. package/dist/lib/session/sync/transcript-crypto.js +5 -37
  1248. package/dist/lib/session/sync/worker-template.d.ts +0 -5
  1249. package/dist/lib/session/sync/worker-template.js +0 -40
  1250. package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
  1251. package/dist/lib/session/testdata/process-view-private.js +0 -1
  1252. package/dist/lib/session/throughput.d.ts +0 -24
  1253. package/dist/lib/session/throughput.js +1 -25
  1254. package/dist/lib/session/timeline-pass.d.ts +1 -63
  1255. package/dist/lib/session/timeline-pass.js +161 -148
  1256. package/dist/lib/session/title.d.ts +0 -182
  1257. package/dist/lib/session/title.js +0 -139
  1258. package/dist/lib/session/tool-index.d.ts +2 -21
  1259. package/dist/lib/session/tool-index.js +3 -75
  1260. package/dist/lib/session/tool-store.d.ts +2 -48
  1261. package/dist/lib/session/tool-store.js +1 -33
  1262. package/dist/lib/session/viewing-in.d.ts +0 -67
  1263. package/dist/lib/session/viewing-in.js +1 -71
  1264. package/dist/lib/session/watch.js +0 -2
  1265. package/dist/lib/session/width.js +0 -3
  1266. package/dist/lib/sessions-client.d.ts +0 -46
  1267. package/dist/lib/sessions-client.js +36 -113
  1268. package/dist/lib/settings-manifest.d.ts +1 -17
  1269. package/dist/lib/settings-manifest.js +4 -57
  1270. package/dist/lib/setup-tool-install.d.ts +0 -1
  1271. package/dist/lib/setup-tool-install.js +2 -7
  1272. package/dist/lib/setup-tool-status.d.ts +0 -3
  1273. package/dist/lib/setup-tool-status.js +4 -14
  1274. package/dist/lib/sha256-asset.d.ts +0 -20
  1275. package/dist/lib/sha256-asset.js +0 -20
  1276. package/dist/lib/share-runtime.d.ts +0 -10
  1277. package/dist/lib/share-runtime.js +1 -27
  1278. package/dist/lib/shim-heal.d.ts +0 -15
  1279. package/dist/lib/shim-heal.js +3 -29
  1280. package/dist/lib/signin-badge.d.ts +0 -72
  1281. package/dist/lib/signin-badge.js +0 -86
  1282. package/dist/lib/sink-format.d.ts +0 -32
  1283. package/dist/lib/sink-format.js +0 -14
  1284. package/dist/lib/smart-launch.d.ts +0 -75
  1285. package/dist/lib/smart-launch.js +1 -83
  1286. package/dist/lib/snapshot.d.ts +0 -46
  1287. package/dist/lib/snapshot.js +5 -31
  1288. package/dist/lib/spinner.d.ts +0 -37
  1289. package/dist/lib/spinner.js +0 -37
  1290. package/dist/lib/sqlite.d.ts +0 -13
  1291. package/dist/lib/sqlite.js +3 -71
  1292. package/dist/lib/ssh-exec.d.ts +0 -209
  1293. package/dist/lib/ssh-exec.js +11 -248
  1294. package/dist/lib/ssh-tunnel.d.ts +0 -43
  1295. package/dist/lib/ssh-tunnel.js +2 -48
  1296. package/dist/lib/staleness/checkers/commands.d.ts +0 -4
  1297. package/dist/lib/staleness/checkers/commands.js +0 -4
  1298. package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
  1299. package/dist/lib/staleness/checkers/hooks.js +0 -15
  1300. package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
  1301. package/dist/lib/staleness/checkers/mcp.js +0 -9
  1302. package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
  1303. package/dist/lib/staleness/checkers/permissions.js +0 -13
  1304. package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
  1305. package/dist/lib/staleness/checkers/plugins.js +0 -8
  1306. package/dist/lib/staleness/checkers/rules.d.ts +0 -15
  1307. package/dist/lib/staleness/checkers/rules.js +0 -26
  1308. package/dist/lib/staleness/checkers/skills.d.ts +0 -4
  1309. package/dist/lib/staleness/checkers/skills.js +0 -4
  1310. package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
  1311. package/dist/lib/staleness/checkers/subagents.js +0 -9
  1312. package/dist/lib/staleness/checkers/types.d.ts +0 -34
  1313. package/dist/lib/staleness/checkers/types.js +0 -19
  1314. package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
  1315. package/dist/lib/staleness/checkers/workflows.js +0 -7
  1316. package/dist/lib/staleness/detectors/commands.js +0 -17
  1317. package/dist/lib/staleness/detectors/hooks.js +1 -6
  1318. package/dist/lib/staleness/detectors/mcp.js +0 -4
  1319. package/dist/lib/staleness/detectors/permissions.js +10 -23
  1320. package/dist/lib/staleness/detectors/rules.js +0 -6
  1321. package/dist/lib/staleness/detectors/skills.d.ts +0 -1
  1322. package/dist/lib/staleness/detectors/skills.js +1 -12
  1323. package/dist/lib/staleness/detectors/types.d.ts +0 -10
  1324. package/dist/lib/staleness/fingerprint.d.ts +0 -19
  1325. package/dist/lib/staleness/fingerprint.js +0 -35
  1326. package/dist/lib/staleness/index.d.ts +0 -28
  1327. package/dist/lib/staleness/index.js +1 -45
  1328. package/dist/lib/staleness/layers.d.ts +0 -23
  1329. package/dist/lib/staleness/layers.js +0 -34
  1330. package/dist/lib/staleness/prune.d.ts +0 -71
  1331. package/dist/lib/staleness/prune.js +2 -27
  1332. package/dist/lib/staleness/registry.d.ts +0 -10
  1333. package/dist/lib/staleness/registry.js +3 -33
  1334. package/dist/lib/staleness/types.d.ts +0 -36
  1335. package/dist/lib/staleness/types.js +0 -5
  1336. package/dist/lib/staleness/writers/commands.js +1 -48
  1337. package/dist/lib/staleness/writers/hooks.js +1 -18
  1338. package/dist/lib/staleness/writers/kinds.d.ts +0 -12
  1339. package/dist/lib/staleness/writers/kinds.js +0 -1
  1340. package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
  1341. package/dist/lib/staleness/writers/mcp.js +0 -13
  1342. package/dist/lib/staleness/writers/plugins.js +0 -4
  1343. package/dist/lib/staleness/writers/rules.d.ts +0 -1
  1344. package/dist/lib/staleness/writers/rules.js +1 -19
  1345. package/dist/lib/staleness/writers/skills.js +3 -14
  1346. package/dist/lib/staleness/writers/sources.d.ts +0 -11
  1347. package/dist/lib/staleness/writers/sources.js +0 -32
  1348. package/dist/lib/staleness/writers/subagents.js +0 -16
  1349. package/dist/lib/staleness/writers/types.d.ts +0 -58
  1350. package/dist/lib/staleness/writers/workflows.js +1 -1
  1351. package/dist/lib/standalone-tools.d.ts +24 -0
  1352. package/dist/lib/standalone-tools.js +58 -0
  1353. package/dist/lib/star-nudge.d.ts +0 -32
  1354. package/dist/lib/star-nudge.js +2 -36
  1355. package/dist/lib/startup/command-registry.d.ts +0 -45
  1356. package/dist/lib/startup/command-registry.js +1 -46
  1357. package/dist/lib/startup/dev-build.d.ts +0 -9
  1358. package/dist/lib/startup/dev-build.js +1 -42
  1359. package/dist/lib/startup/root-command.d.ts +0 -19
  1360. package/dist/lib/startup/root-command.js +0 -19
  1361. package/dist/lib/startup/spellcheck.d.ts +0 -13
  1362. package/dist/lib/startup/spellcheck.js +0 -13
  1363. package/dist/lib/state.d.ts +0 -376
  1364. package/dist/lib/state.js +19 -737
  1365. package/dist/lib/storage/selection.d.ts +0 -40
  1366. package/dist/lib/storage/selection.js +0 -29
  1367. package/dist/lib/subagents-registry.d.ts +0 -56
  1368. package/dist/lib/subagents-registry.js +0 -99
  1369. package/dist/lib/subagents.d.ts +0 -128
  1370. package/dist/lib/subagents.js +1 -158
  1371. package/dist/lib/summarizer/config.d.ts +0 -37
  1372. package/dist/lib/summarizer/config.js +0 -37
  1373. package/dist/lib/summarizer/pass.d.ts +0 -20
  1374. package/dist/lib/summarizer/pass.js +1 -34
  1375. package/dist/lib/summarizer/summarize.d.ts +1 -49
  1376. package/dist/lib/summarizer/summarize.js +0 -35
  1377. package/dist/lib/sync-passphrase.d.ts +0 -16
  1378. package/dist/lib/sync-passphrase.js +1 -18
  1379. package/dist/lib/sync-status.d.ts +0 -72
  1380. package/dist/lib/sync-status.js +0 -55
  1381. package/dist/lib/sync-umbrella.d.ts +0 -54
  1382. package/dist/lib/sync-umbrella.js +0 -48
  1383. package/dist/lib/system-run-sync.d.ts +0 -5
  1384. package/dist/lib/system-run-sync.js +1 -31
  1385. package/dist/lib/teams/agents.d.ts +1 -444
  1386. package/dist/lib/teams/agents.js +11 -871
  1387. package/dist/lib/teams/api.d.ts +2 -52
  1388. package/dist/lib/teams/api.js +4 -63
  1389. package/dist/lib/teams/debug.d.ts +0 -6
  1390. package/dist/lib/teams/debug.js +0 -6
  1391. package/dist/lib/teams/delivery.d.ts +0 -41
  1392. package/dist/lib/teams/delivery.js +0 -32
  1393. package/dist/lib/teams/file_ops.d.ts +0 -11
  1394. package/dist/lib/teams/file_ops.js +0 -11
  1395. package/dist/lib/teams/forEach.d.ts +0 -76
  1396. package/dist/lib/teams/forEach.js +1 -77
  1397. package/dist/lib/teams/index.d.ts +1 -7
  1398. package/dist/lib/teams/index.js +1 -7
  1399. package/dist/lib/teams/parsers.d.ts +0 -4
  1400. package/dist/lib/teams/parsers.js +0 -81
  1401. package/dist/lib/teams/persistence.d.ts +0 -2
  1402. package/dist/lib/teams/persistence.js +0 -12
  1403. package/dist/lib/teams/placement-probe.d.ts +0 -12
  1404. package/dist/lib/teams/placement-probe.js +1 -51
  1405. package/dist/lib/teams/pr-watch.d.ts +0 -107
  1406. package/dist/lib/teams/pr-watch.js +1 -107
  1407. package/dist/lib/teams/registry.d.ts +0 -36
  1408. package/dist/lib/teams/registry.js +0 -47
  1409. package/dist/lib/teams/remoteWorktree.d.ts +0 -50
  1410. package/dist/lib/teams/remoteWorktree.js +1 -96
  1411. package/dist/lib/teams/scheduler.d.ts +0 -111
  1412. package/dist/lib/teams/scheduler.js +2 -125
  1413. package/dist/lib/teams/summarizer.d.ts +0 -22
  1414. package/dist/lib/teams/summarizer.js +6 -50
  1415. package/dist/lib/teams/supervisor.d.ts +0 -38
  1416. package/dist/lib/teams/supervisor.js +0 -21
  1417. package/dist/lib/teams/worktree.d.ts +0 -95
  1418. package/dist/lib/teams/worktree.js +3 -110
  1419. package/dist/lib/template.d.ts +0 -21
  1420. package/dist/lib/template.js +0 -23
  1421. package/dist/lib/term-client.d.ts +0 -26
  1422. package/dist/lib/term-client.js +0 -48
  1423. package/dist/lib/term-driver.d.ts +0 -5
  1424. package/dist/lib/term-driver.js +0 -8
  1425. package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
  1426. package/dist/lib/terminal/backends/ghostty.js +0 -12
  1427. package/dist/lib/terminal/backends/index.d.ts +0 -17
  1428. package/dist/lib/terminal/backends/index.js +0 -15
  1429. package/dist/lib/terminal/backends/iterm.d.ts +0 -2
  1430. package/dist/lib/terminal/backends/iterm.js +0 -10
  1431. package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
  1432. package/dist/lib/terminal/backends/terminal-app.js +0 -30
  1433. package/dist/lib/terminal/backends/tmux.d.ts +0 -10
  1434. package/dist/lib/terminal/backends/tmux.js +0 -2
  1435. package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
  1436. package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
  1437. package/dist/lib/terminal/engine.d.ts +0 -17
  1438. package/dist/lib/terminal/engine.js +0 -10
  1439. package/dist/lib/terminal/index.d.ts +0 -8
  1440. package/dist/lib/terminal/inject.d.ts +1 -173
  1441. package/dist/lib/terminal/inject.js +0 -146
  1442. package/dist/lib/terminal/policy.d.ts +0 -8
  1443. package/dist/lib/terminal/policy.js +0 -1
  1444. package/dist/lib/terminal/preferred.d.ts +0 -66
  1445. package/dist/lib/terminal/preferred.js +0 -30
  1446. package/dist/lib/terminal/quote.d.ts +0 -8
  1447. package/dist/lib/terminal/quote.js +0 -8
  1448. package/dist/lib/terminal/resolve.d.ts +0 -46
  1449. package/dist/lib/terminal/resolve.js +0 -30
  1450. package/dist/lib/terminal/run-surface.d.ts +0 -56
  1451. package/dist/lib/terminal/run-surface.js +0 -46
  1452. package/dist/lib/terminal/shell.d.ts +0 -3
  1453. package/dist/lib/terminal/shell.js +0 -13
  1454. package/dist/lib/terminal/transport.d.ts +0 -14
  1455. package/dist/lib/terminal/transport.js +1 -30
  1456. package/dist/lib/terminal/types.d.ts +0 -40
  1457. package/dist/lib/terminal/types.js +0 -10
  1458. package/dist/lib/text/relative-time.d.ts +0 -36
  1459. package/dist/lib/text/relative-time.js +0 -43
  1460. package/dist/lib/text/short-id.d.ts +0 -16
  1461. package/dist/lib/text/short-id.js +0 -16
  1462. package/dist/lib/text/width.d.ts +0 -24
  1463. package/dist/lib/text/width.js +10 -52
  1464. package/dist/lib/tmux/binary.d.ts +0 -36
  1465. package/dist/lib/tmux/binary.js +0 -28
  1466. package/dist/lib/tmux/index.d.ts +0 -5
  1467. package/dist/lib/tmux/index.js +0 -5
  1468. package/dist/lib/tmux/orphan-reap.d.ts +0 -253
  1469. package/dist/lib/tmux/orphan-reap.js +3 -299
  1470. package/dist/lib/tmux/paths.d.ts +0 -14
  1471. package/dist/lib/tmux/paths.js +0 -14
  1472. package/dist/lib/tmux/session.d.ts +0 -263
  1473. package/dist/lib/tmux/session.js +6 -344
  1474. package/dist/lib/traces/backend.d.ts +0 -20
  1475. package/dist/lib/traces/backend.js +0 -23
  1476. package/dist/lib/traces/classify.d.ts +0 -20
  1477. package/dist/lib/traces/classify.js +0 -7
  1478. package/dist/lib/traces/insights.d.ts +1 -84
  1479. package/dist/lib/traces/insights.js +0 -126
  1480. package/dist/lib/traces/phenotype.d.ts +0 -69
  1481. package/dist/lib/traces/phenotype.js +0 -150
  1482. package/dist/lib/traces/provision.d.ts +0 -1
  1483. package/dist/lib/traces/provision.js +0 -5
  1484. package/dist/lib/traces/schema2-build.d.ts +3 -60
  1485. package/dist/lib/traces/schema2-build.js +8 -149
  1486. package/dist/lib/traces/schema2-danger.d.ts +0 -30
  1487. package/dist/lib/traces/schema2-danger.js +1 -63
  1488. package/dist/lib/traces/schema2.d.ts +0 -11
  1489. package/dist/lib/traces/segments.d.ts +0 -44
  1490. package/dist/lib/traces/segments.js +0 -65
  1491. package/dist/lib/traces/sync.d.ts +2 -239
  1492. package/dist/lib/traces/sync.js +15 -237
  1493. package/dist/lib/traces/worker-template.d.ts +0 -3
  1494. package/dist/lib/traces/worker-template.js +0 -29
  1495. package/dist/lib/triggers/handlers.d.ts +0 -82
  1496. package/dist/lib/triggers/handlers.js +0 -75
  1497. package/dist/lib/triggers/webhook.d.ts +0 -158
  1498. package/dist/lib/triggers/webhook.js +0 -143
  1499. package/dist/lib/types.d.ts +0 -736
  1500. package/dist/lib/types.js +0 -50
  1501. package/dist/lib/uninstall.d.ts +0 -17
  1502. package/dist/lib/uninstall.js +0 -75
  1503. package/dist/lib/usage-backoff.d.ts +0 -20
  1504. package/dist/lib/usage-backoff.js +3 -60
  1505. package/dist/lib/usage-refresh.d.ts +0 -154
  1506. package/dist/lib/usage-refresh.js +8 -212
  1507. package/dist/lib/verbs.d.ts +0 -12
  1508. package/dist/lib/verbs.js +0 -12
  1509. package/dist/lib/version-duplicates.d.ts +0 -6
  1510. package/dist/lib/version-duplicates.js +0 -6
  1511. package/dist/lib/version.d.ts +0 -55
  1512. package/dist/lib/version.js +1 -58
  1513. package/dist/lib/view-types.d.ts +0 -48
  1514. package/dist/lib/warn-unpushed.d.ts +0 -27
  1515. package/dist/lib/warn-unpushed.js +1 -45
  1516. package/dist/lib/watchdog/history.d.ts +0 -1
  1517. package/dist/lib/watchdog/history.js +0 -3
  1518. package/dist/lib/watchdog/index.js +0 -2
  1519. package/dist/lib/watchdog/log.d.ts +0 -19
  1520. package/dist/lib/watchdog/log.js +0 -34
  1521. package/dist/lib/watchdog/read.d.ts +0 -27
  1522. package/dist/lib/watchdog/read.js +3 -58
  1523. package/dist/lib/watchdog/rotate.d.ts +0 -139
  1524. package/dist/lib/watchdog/rotate.js +2 -151
  1525. package/dist/lib/watchdog/runner.d.ts +0 -125
  1526. package/dist/lib/watchdog/runner.js +3 -223
  1527. package/dist/lib/watchdog/service.d.ts +0 -1
  1528. package/dist/lib/watchdog/service.js +0 -2
  1529. package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
  1530. package/dist/lib/watchdog/watchdog-agent.js +0 -27
  1531. package/dist/lib/watchdog/watchdog.d.ts +0 -7
  1532. package/dist/lib/watchdog/watchdog.js +0 -10
  1533. package/dist/lib/watchdog/watchdogTail.js +0 -7
  1534. package/dist/lib/whats-new.d.ts +0 -10
  1535. package/dist/lib/whats-new.js +0 -21
  1536. package/dist/lib/workflows-registry.d.ts +0 -45
  1537. package/dist/lib/workflows-registry.js +0 -60
  1538. package/dist/lib/workflows.d.ts +0 -282
  1539. package/dist/lib/workflows.js +3 -213
  1540. package/dist/lib/worktree/held.d.ts +0 -89
  1541. package/dist/lib/worktree/held.js +1 -103
  1542. package/dist/lib/wrap.d.ts +0 -32
  1543. package/dist/lib/wrap.js +0 -32
  1544. package/dist/lib/yaml-io.d.ts +0 -45
  1545. package/dist/lib/yaml-io.js +0 -47
  1546. package/dist/session-tracker/dist/adapters/claude.js +0 -2
  1547. package/dist/session-tracker/dist/hook.sh +4 -37
  1548. package/dist/session-tracker/dist/index.d.ts +0 -7
  1549. package/dist/session-tracker/dist/index.js +0 -5
  1550. package/dist/session-tracker/dist/install-hook.d.ts +0 -5
  1551. package/dist/session-tracker/dist/install-hook.js +1 -15
  1552. package/dist/session-tracker/dist/prune-state.js +0 -4
  1553. package/dist/session-tracker/dist/reader.js +0 -4
  1554. package/dist/session-tracker/dist/state-file.d.ts +0 -3
  1555. package/dist/session-tracker/dist/state-file.js +3 -8
  1556. package/package.json +3 -4
  1557. package/scripts/postinstall.js +8 -116
  1558. package/dist/lib/session/artifacts.d.ts +0 -14
  1559. package/dist/lib/session/artifacts.js +0 -101
  1560. package/dist/lib/session/bash-command.d.ts +0 -63
  1561. package/dist/lib/session/bash-command.js +0 -490
  1562. package/dist/lib/session/digest.d.ts +0 -66
  1563. package/dist/lib/session/digest.js +0 -328
  1564. package/dist/lib/session/highlights.d.ts +0 -151
  1565. package/dist/lib/session/highlights.js +0 -391
  1566. package/dist/lib/session/insights.d.ts +0 -165
  1567. package/dist/lib/session/insights.js +0 -563
  1568. package/dist/lib/session/linear.d.ts +0 -19
  1569. package/dist/lib/session/linear.js +0 -99
  1570. package/dist/lib/session/parse.d.ts +0 -224
  1571. package/dist/lib/session/parse.js +0 -2408
  1572. package/dist/lib/session/prompt.d.ts +0 -213
  1573. package/dist/lib/session/prompt.js +0 -601
  1574. package/dist/lib/session/render.d.ts +0 -133
  1575. package/dist/lib/session/render.js +0 -1047
  1576. package/dist/lib/session/share-html.d.ts +0 -35
  1577. package/dist/lib/session/share-html.js +0 -319
  1578. package/dist/lib/session/shell-programs.d.ts +0 -33
  1579. package/dist/lib/session/shell-programs.js +0 -380
  1580. package/dist/lib/session/state.d.ts +0 -269
  1581. package/dist/lib/session/state.js +0 -777
  1582. package/dist/lib/session/stream-render.d.ts +0 -4
  1583. package/dist/lib/session/stream-render.js +0 -131
  1584. package/dist/lib/session/tail.d.ts +0 -88
  1585. package/dist/lib/session/tail.js +0 -294
  1586. package/dist/lib/session/team-filter.d.ts +0 -129
  1587. package/dist/lib/session/team-filter.js +0 -269
  1588. package/dist/lib/session/timeline.d.ts +0 -172
  1589. package/dist/lib/session/timeline.js +0 -636
  1590. package/dist/lib/session/tool-calls.d.ts +0 -132
  1591. package/dist/lib/session/tool-calls.js +0 -674
  1592. package/dist/lib/session/trajectory-compare.d.ts +0 -48
  1593. package/dist/lib/session/trajectory-compare.js +0 -116
  1594. package/dist/lib/session/trajectory-html.d.ts +0 -19
  1595. package/dist/lib/session/trajectory-html.js +0 -771
  1596. package/dist/lib/session/trajectory-lineage.d.ts +0 -93
  1597. package/dist/lib/session/trajectory-lineage.js +0 -195
  1598. package/dist/lib/session/trajectory-text.d.ts +0 -38
  1599. package/dist/lib/session/trajectory-text.js +0 -284
  1600. package/dist/lib/session/trajectory.d.ts +0 -145
  1601. package/dist/lib/session/trajectory.js +0 -394
  1602. package/dist/lib/session/types.d.ts +0 -627
  1603. package/dist/lib/session/types.js +0 -43
@@ -1,14 +1,3 @@
1
- /**
2
- * `agents devices` (registry) + `agents ssh` (smart wrapper).
3
- *
4
- * `agents devices` keeps a registry of SSH device profiles — platform, login
5
- * user, address, and auth — self-populated from `tailscale status --json`.
6
- * `agents ssh <name>` then connects through one hardened path: preflight
7
- * (offline → fail fast instead of a 2-minute hang), platform-aware exec
8
- * (PowerShell on Windows), and password-from-bundle auth via an askpass shim.
9
- * Rendering the registry to an ssh_config include also lets plain ssh / scp /
10
- * rsync / `agents sessions --device` resolve the same logical names.
11
- */
12
1
  import { spawnSync } from 'child_process';
13
2
  import * as fs from 'fs';
14
3
  import * as os from 'os';
@@ -63,14 +52,9 @@ import { filterAutoPool, listWorkerDevices } from '../lib/devices/pool.js';
63
52
  import { registerCommandGroups, setHelpSections } from '../lib/help.js';
64
53
  import { isSelfHost } from '../lib/devices/self-host.js';
65
54
  import { collectHeldWorktrees, collectHeldWorktreesUnder, summarizeHeld, aggregateHeld, pushStrandedBranch, } from '../lib/worktree/held.js';
66
- /** One-line summary of a device for `list`. `isSelf` marks the machine this
67
- * command is running on so it stands out from the rest of the tailnet.
68
- * `isInteractive` marks the configured interactive host (`devices config <name> interactive.host`). */
69
55
  function deviceSummary(d, isSelf = false, stats, isInteractive = false, roles) {
70
56
  d = resolveDeviceProfile(d);
71
57
  const addr = hostNameFor(d) ?? chalk.gray('no address');
72
- // Prefer a fresh live verdict (this run's probe, else the written-back
73
- // reachability) over the stale tailscale.online snapshot (RUSH-1965).
74
58
  const state = deviceOnlineState(d, stats);
75
59
  const online = state === 'online'
76
60
  ? chalk.green('online')
@@ -81,18 +65,11 @@ function deviceSummary(d, isSelf = false, stats, isInteractive = false, roles) {
81
65
  const marker = isSelf ? chalk.cyan('▸ ') : ' ';
82
66
  const name = isSelf ? chalk.bold.cyan(d.name.padEnd(16)) : chalk.bold(d.name.padEnd(16));
83
67
  const here = isSelf ? chalk.cyan(' ← this machine') : '';
84
- // `roles` defaults to a single-device roster so a fleet-wide `role` default
85
- // still reaches this device even when it has no per-device doc of its own.
86
68
  const roleMap = roles ?? listConfiguredDeviceRoles([d.name]);
87
- // `personal` already means "the interactive box you sit at", so the star would
88
- // just repeat it — show it only when the interactive host is NOT a personal box
89
- // (e.g. an unmarked or worker box deliberately pinned as the artifact target).
90
69
  const interactive = isInteractive && roleMap[d.name] !== 'personal' ? chalk.yellow(' ★ interactive') : '';
91
70
  const role = roleTag(d.name, roleMap);
92
71
  return `${marker}${name} ${String(d.platform).padEnd(8)} ${(d.user ? d.user + '@' : '') + addr} ${online}${reach}${here}${interactive}${role}`;
93
72
  }
94
- /** The fleet-wide role mark, rendered for a device row. Empty when unmarked —
95
- * an unmarked device is the common case and must not add a column of noise. */
96
73
  function roleTag(name, roles) {
97
74
  const role = roles[name];
98
75
  if (!role)
@@ -112,7 +89,6 @@ const HEADROOM_BADGE = {
112
89
  loaded: chalk.red('● loaded'),
113
90
  unknown: chalk.gray('· —'),
114
91
  };
115
- /** A right-aligned percentage cell, colored by severity (green/yellow/red). */
116
92
  function pctCell(v, width) {
117
93
  if (v === undefined)
118
94
  return chalk.gray('—'.padStart(width));
@@ -123,45 +99,19 @@ function pctCell(v, width) {
123
99
  return chalk.yellow(s);
124
100
  return chalk.red(s);
125
101
  }
126
- /** Floor for the `spec` column; the real width is measured from the rows.
127
- *
128
- * A fixed width cannot work here: `fmtBytes` emits an optional decimal, so a
129
- * spec string runs from `8c 16G 256G` (11) to `10c 23.5G 460G` (14) depending
130
- * purely on the hardware behind it. Anything narrower than the widest row
131
- * pushes load/mem/disk/headroom out of alignment row-to-row AND against the
132
- * header — which defeats the scannability this column exists for. */
133
102
  const SPEC_WIDTH_MIN = 12;
134
- /** The static hardware as one compact cell — `12c 64G 1T`: cores, total RAM,
135
- * total root disk via fmtBytes. `—` covers two cases: no probe has ever seen
136
- * the box, or the probe answered but yielded no usable core count (`parseNcpu`
137
- * finding none, or the Windows `ncpu` group failing the finite-and-positive
138
- * check) — the cell is keyed on `ncpu` because a spec string without it would
139
- * read as a machine with zero cores.
140
- *
141
- * Deliberately NOT gated on `reachable`: hardware does not change while a
142
- * machine is down, so an offline device keeps rendering the spec from its last
143
- * successful probe (`retainHardwareFacts`, RUSH-3096) rather than blanking a
144
- * fact that is still true. The volatile columns beside it — load, mem, disk
145
- * used — stay `—`, and `fleetCapacity` still counts only reachable boxes, so
146
- * a down machine never contributes to usable capacity.
147
- *
148
- * Unpadded; {@link renderDeviceTable} pads to the measured column width. */
149
103
  function specText(stats) {
150
104
  if (!stats?.ncpu)
151
105
  return '—';
152
106
  return `${stats.ncpu}c ${fmtBytes(stats.memTotalBytes)} ${fmtBytes(stats.diskTotalBytes)}`;
153
107
  }
154
- /** The widest spec string across the rows actually being rendered, floored at
155
- * SPEC_WIDTH_MIN so a short fleet still lines up with the header. */
156
108
  function specColumnWidth(names, statsMap) {
157
109
  return Math.max(SPEC_WIDTH_MIN, ...names.map((n) => stringWidth(specText(statsMap.get(n)))));
158
110
  }
159
- /** Colour + pad one spec cell to the measured column width. */
160
111
  function specCell(stats, width) {
161
112
  const text = specText(stats);
162
113
  return (text === '—' ? chalk.gray : chalk.greenBright)(text.padEnd(width));
163
114
  }
164
- /** The one-line `description` config value per device (absent when unset). */
165
115
  function listDeviceDescriptions(names) {
166
116
  const out = {};
167
117
  for (const n of names) {
@@ -171,37 +121,19 @@ function listDeviceDescriptions(names) {
171
121
  }
172
122
  return out;
173
123
  }
174
- /**
175
- * Fit a device row to the terminal width. The description is the FIRST thing
176
- * to truncate, then the role tag; the fixed columns (device, platform, spec,
177
- * load/mem/disk numbers, headroom, and the ▸/★/←/relay markers) never
178
- * truncate. `role` and `desc` arrive fully rendered (ansi + leading gap).
179
- */
180
124
  function fitDeviceRow(fixed, role, desc, width) {
181
125
  const w = (s) => stringWidth(stripAnsi(s));
182
126
  let over = w(fixed) + w(role) + w(desc) - width;
183
127
  if (over > 0 && desc) {
184
- // `desc` is ' ' + gray(text) — truncate the text, keep the gap.
185
128
  const text = stripAnsi(desc).slice(2);
186
129
  const budget = w(text) - over;
187
130
  desc = budget > 0 ? ' ' + chalk.gray(truncateToWidth(text, budget)) : '';
188
131
  over = w(fixed) + w(role) + w(desc) - width;
189
132
  }
190
- // A partial role word ("work…") reads as a bug — when it can't fit whole,
191
- // it drops entirely. The numbers are never touched.
192
133
  if (over > 0 && role)
193
134
  role = '';
194
135
  return fixed + role + desc;
195
136
  }
196
- /**
197
- * Render the device list. When `statsMap` is provided, resource columns are
198
- * appended — a `spec` cell (cores / total RAM / total disk), normalized load,
199
- * memory and disk-used percentages, a headroom badge, and (in `full` mode)
200
- * free/total memory — with the per-device role and `description` riding the
201
- * tail, so it's obvious which boxes have room and what each box is for.
202
- * Without it (probe skipped) the classic reachability line is used. A fleet
203
- * capacity summary is appended whenever stats were gathered.
204
- */
205
137
  export function renderDeviceTable(reg, names, self, statsMap, full = false, interactiveHost, opts = {}) {
206
138
  if (!statsMap) {
207
139
  const roles = listConfiguredDeviceRoles(names);
@@ -229,8 +161,6 @@ export function renderDeviceTable(reg, names, self, statsMap, full = false, inte
229
161
  chalk.gray('description');
230
162
  lines.push(head);
231
163
  for (const name of names) {
232
- // Effective profile: the operator's central config (ssh.*/platform/user)
233
- // overlays the discovery record, so the table shows what would be dialed.
234
164
  const d = resolveDeviceProfile(reg[name]);
235
165
  const isSelf = name === self;
236
166
  const marker = isSelf ? chalk.cyan('▸ ') : ' ';
@@ -239,21 +169,8 @@ export function renderDeviceTable(reg, names, self, statsMap, full = false, inte
239
169
  const stats = statsMap.get(name);
240
170
  const role = roleTag(name, deviceRoles);
241
171
  const desc = descriptions[name] ? ' ' + chalk.gray(descriptions[name]) : '';
242
- // Prefer this run's live probe, then the written-back verdict, over the
243
- // stale tailscale.online snapshot — so a reachable box never renders
244
- // "offline" while its live load/mem sit one column over (RUSH-1965).
245
172
  const offline = deviceOnlineState(d, stats) === 'offline';
246
173
  if (offline) {
247
- // The spec cell rides the offline row: hardware is what the box IS, not
248
- // what it is doing, so it stays legible while the machine is down
249
- // (RUSH-3096). The live columns are omitted rather than dashed — there is
250
- // no current load/mem/disk to report for a box that did not answer.
251
- //
252
- // The explicit gap is load-bearing: `specCell` pads to the MEASURED
253
- // column width, so the widest spec on the fleet pads to nothing and the
254
- // marker would collide with it ("455Goffline"). An online row gets its
255
- // separation for free from `pctCell`'s right-alignment; this one has no
256
- // numeric cell to lean on.
257
174
  lines.push(fitDeviceRow(`${marker}${label}${plat} ${specCell(stats, specWidth)} ${chalk.gray('offline')}`, role, desc, width));
258
175
  continue;
259
176
  }
@@ -269,13 +186,9 @@ export function renderDeviceTable(reg, names, self, statsMap, full = false, inte
269
186
  : '';
270
187
  const badge = HEADROOM_BADGE[headroom(stats)];
271
188
  const here = isSelf ? chalk.cyan(' ← this machine') : '';
272
- // A `personal` role already conveys "your interactive seat"; don't double-
273
- // render the star on it. Keep it for a non-personal pinned interactive host.
274
189
  const interactive = name === interactiveHost && deviceRoles[name] !== 'personal' ? chalk.yellow(' ★ interactive') : '';
275
190
  lines.push(fitDeviceRow(`${marker}${label}${plat} ${specCell(stats, specWidth)}${load}${mem}${disk}${freeTotal} ${badge}${relay}${here}${interactive}`, role, desc, width));
276
191
  }
277
- // Fleet capacity summary — total cores, how much RAM is free right now, and
278
- // total free root disk across the reachable fleet.
279
192
  const cap = fleetCapacity(statsMap.values());
280
193
  if (cap.reachable > 0) {
281
194
  const freePct = cap.memTotalBytes > 0 ? Math.round((cap.memFreeBytes / cap.memTotalBytes) * 100) : 0;
@@ -290,13 +203,6 @@ export function renderDeviceTable(reg, names, self, statsMap, full = false, inte
290
203
  }
291
204
  return lines;
292
205
  }
293
- /**
294
- * Live "Leased boxes" section for `agents devices` (F4, RUSH-1923), computed
295
- * from `crabboxList()` — these are ephemeral crabbox leases, NEVER written into
296
- * the device registry. Returns [] when crabbox is unavailable / has no creds /
297
- * reports no boxes, so the section is simply omitted. `nowSecs` is injected so
298
- * the row formatting is deterministic in tests.
299
- */
300
206
  export function renderLeasedBoxesSection(boxes, nowSecs) {
301
207
  if (boxes.length === 0)
302
208
  return [];
@@ -323,40 +229,25 @@ export function renderLeasedBoxesSection(boxes, nowSecs) {
323
229
  lines.push(chalk.gray(' Reuse a box with `agents run --box <slug>` · stop with `agents devices lease stop <slug>`'));
324
230
  return lines;
325
231
  }
326
- /** The leased-box rows for the devices list, or [] when crabbox can't be read. */
327
232
  function loadLeasedBoxesSection() {
328
233
  try {
329
234
  const boxes = crabboxList({ secretsBundle: process.env.AGENTS_LEASE_SECRETS_BUNDLE, timeoutMs: 5000 });
330
235
  return renderLeasedBoxesSection(boxes, Math.floor(Date.now() / 1000));
331
236
  }
332
237
  catch {
333
- return []; // crabbox not installed / no provider creds — omit the section
238
+ return [];
334
239
  }
335
240
  }
336
- /**
337
- * Whether `agents devices list` shows the "Leased boxes" section (RUSH-2190).
338
- * Opt-in via --all only: loading it scans the keychain for bundle credentials
339
- * and can raise a Touch ID sheet after the table has printed, so the default
340
- * list must never reach for it. --no-stats stays the hard "instant, no provider
341
- * calls" opt-out even when --all is passed.
342
- */
343
241
  export function showLeasedBoxesSection(opts) {
344
242
  return opts.all === true && opts.stats !== false;
345
243
  }
346
- /**
347
- * `agents ssh <slug>` targeting a leased crabbox box. crabbox provisions a
348
- * per-lease identity key, so we ssh via crabbox's OWN emitted invocation
349
- * (`crabboxSshArgv`) — a raw `ssh crabbox@ip` fails publickey. Returns false when
350
- * `name` is not a known crabbox slug so the caller can fall through to the normal
351
- * "Unknown device" error.
352
- */
353
244
  function trySshLeasedBox(name, cmd) {
354
245
  let box;
355
246
  try {
356
247
  box = crabboxFind(name, { secretsBundle: process.env.AGENTS_LEASE_SECRETS_BUNDLE, timeoutMs: 5000 });
357
248
  }
358
249
  catch {
359
- return false; // crabbox unavailable — not a leased-box target
250
+ return false;
360
251
  }
361
252
  if (!box)
362
253
  return false;
@@ -365,22 +256,13 @@ function trySshLeasedBox(name, cmd) {
365
256
  console.error(chalk.red(`Leased box '${name}' is not reachable yet (status: ${boxStatus(box)}).`));
366
257
  process.exit(1);
367
258
  }
368
- // Crabbox ssh does not go through buildSshInvocation; stamp the same
369
- // consent marker so a browser drive on a leased box is gated too.
370
259
  const remoteCmd = leasedBoxRemoteCmd(cmd);
371
260
  const res = spawnSync(sshArgv[0], [...sshArgv.slice(1), ...remoteCmd], { stdio: 'inherit' });
372
261
  process.exit(res.status ?? 1);
373
262
  }
374
- /**
375
- * Remote argv for `agents ssh <slug>` into a leased crabbox. Crabbox ssh does
376
- * not go through {@link buildSshInvocation}, so this stamps the same
377
- * AGENTS_FLEET_REMOTE consent marker a registered-device ssh would (PHNX-3065).
378
- * Exported so the branch is unit-testable without a live crabbox.
379
- */
380
263
  export function leasedBoxRemoteCmd(cmd) {
381
264
  return isAgentsBrowserDrive(cmd) ? markFleetRemote(cmd, { shell: 'posix' }) : cmd;
382
265
  }
383
- /** Resolve a device or exit with a clear error. */
384
266
  async function mustGetDevice(name) {
385
267
  const d = await getDevice(name);
386
268
  if (!d) {
@@ -389,14 +271,6 @@ async function mustGetDevice(name) {
389
271
  }
390
272
  return d;
391
273
  }
392
- /**
393
- * Interactive `agents devices sync`: discover tailscale nodes, present a
394
- * checkbox pre-checked with what's already registered, and reconcile the
395
- * choice. Checked = registered (and un-ignored). Unchecked = removed from the
396
- * registry AND added to the ignore-list, so auto-discovery never re-suggests
397
- * it — this is the "click to register/unregister" surface, with dismissals that
398
- * stick.
399
- */
400
274
  async function runInteractiveDeviceSync() {
401
275
  const spinner = ora('Reading tailscale status...').start();
402
276
  let nodes;
@@ -418,12 +292,6 @@ async function runInteractiveDeviceSync() {
418
292
  let selected;
419
293
  try {
420
294
  selected = await checkbox({
421
- // Everything not already dismissed starts checked, so pressing Enter keeps
422
- // the fleet as-is (matching what auto-sync would register). Unchecking a
423
- // device removes it AND dismisses it so auto-sync never re-adds it.
424
- // Sharee nodes (shared in by another user) start unchecked unless already
425
- // registered — registering one must be a deliberate check, never the
426
- // default Enter.
427
295
  message: 'Your fleet — uncheck a device to remove and stop suggesting it:',
428
296
  pageSize: Math.min(nodes.length, 20),
429
297
  choices: nodes.map((n) => {
@@ -464,16 +332,6 @@ async function runInteractiveDeviceSync() {
464
332
  ].filter(Boolean);
465
333
  console.log(parts.join(chalk.gray(' · ')));
466
334
  }
467
- /**
468
- * Print a per-device result table for fleet update/run.
469
- *
470
- * `verifications` is supplied only by the rollout (`agents fleet update`), which
471
- * re-probes what `agents` resolves to on each upgraded box. A box that upgraded
472
- * with `exit 0` but still resolves to another copy — the dev-install shadow of
473
- * RUSH-2446 — is rendered `stale` / `unverified`, counted as **not upgraded**,
474
- * and makes the command exit non-zero. An `exit 0` alone never reads as `ok` on
475
- * a rollout again.
476
- */
477
335
  function printFleetResults(results, verifications) {
478
336
  const nameW = Math.max(8, ...results.map((r) => r.name.length));
479
337
  console.log(chalk.bold('DEVICE'.padEnd(nameW)) + ' ' +
@@ -520,15 +378,9 @@ async function localHealthRow(self, stats) {
520
378
  clis: checkAllClis(),
521
379
  sync: checkSyncStatus(process.cwd()),
522
380
  orphans: countOrphans(),
523
- // Local baseline inventory for cross-device divergence (RUSH-2027) — the
524
- // yardstick every remote box is compared against.
525
381
  inventory: await collectLocalFleetInventory(process.cwd()),
526
382
  };
527
383
  }
528
- /** SSH into a host and read its already-computed fleet-status row (a cheap
529
- * `fleet status --local --json` on the peer — NOT a fresh remote resource probe;
530
- * the peer's daemon keeps that row warm). Bounded + reaped via sshExecAsync's
531
- * timeout (RUSH-2114). */
532
384
  async function probeRemoteFleetStatus(target) {
533
385
  const isWin = /^win/i.test((target.platform ?? '').trim());
534
386
  const env = isWin ? undefined : { PATH: '$HOME/.agents/.cache/shims:$HOME/.local/bin:$PATH' };
@@ -556,23 +408,13 @@ async function probeRemoteHealth(target) {
556
408
  clis: parsed.clis ?? {},
557
409
  sync: parsed.sync ?? [],
558
410
  orphans: parsed.orphans ?? [],
559
- // The remote self-reports its own cached auth rollup (fresh via its daemon),
560
- // so the Auth column is current without a prior fleet-wide `fleet ping`.
561
- // Older remotes that don't emit it fall back to this host's cache below.
562
411
  auth: parsed.auth,
563
- // Harness inventory (resources / agent versions / repo state) for
564
- // cross-device divergence detection (RUSH-2027). Undefined on an older CLI
565
- // that doesn't emit the `fleet` field — the comparator skips it.
566
412
  inventory: parsed.fleet,
567
413
  };
568
414
  }
569
- /** Device-layer config only (not fleet defaults), keyed by the canonical YAML key. */
570
415
  function deviceConfigJson(name) {
571
416
  const config = {};
572
417
  for (const entry of listConfig({ device: name })) {
573
- // The device's OWN layer only — a fleet-default value is not this
574
- // device's setting (the effective profile fields already carry the
575
- // merged view via resolveDeviceProfile).
576
418
  if (entry.source !== 'device')
577
419
  continue;
578
420
  config[entry.spec.yamlKey] = entry.value;
@@ -583,10 +425,6 @@ async function runFleetStatus(opts) {
583
425
  const reg = await loadDevices();
584
426
  const self = machineId();
585
427
  const forceRefresh = Boolean(opts.refresh || opts.live);
586
- // `--local`: the publish endpoint the read-union reads over ssh. Probe THIS
587
- // host only (resource stats + live-agent workload, no ssh) and print its row.
588
- // Publishes into the local mirror as a side effect so a same-host reader is
589
- // instantly warm too.
590
428
  if (opts.local) {
591
429
  const { publishLocalFleetStatus } = await import('../lib/fleet-status.js');
592
430
  const row = await publishLocalFleetStatus(self);
@@ -598,26 +436,15 @@ async function runFleetStatus(opts) {
598
436
  }
599
437
  const planned = planFleetTargets(reg);
600
438
  const probeable = planned.filter((t) => !t.skip).map((t) => t.device);
601
- // Cache-first: serve remote stats from the daemon-warmed cache (instant),
602
- // probe this machine locally, and only ssh out for missing/forced rows.
603
439
  const statsMap = opts.stats === false
604
440
  ? new Map()
605
441
  : (await loadFleetStats(probeable, { forceRefresh, selfName: self })).stats;
606
- // Persist the live probe's reachability verdict so the online/offline word is
607
- // read from a fresh probe, not a stale tailscale snapshot (RUSH-1965).
608
- // Best-effort: a registry write must never break the status render.
609
442
  await writeReachability(collectReachabilityWriteBacks(reg, statsMap)).catch(() => { });
610
443
  const rows = [await localHealthRow(self, statsMap.get(self))];
611
444
  const remoteTargets = remoteFleetTargets(planned, self)
612
445
  .map((t) => ({
613
446
  name: t.device.name,
614
447
  platform: resolveDeviceProfile(t.device).platform,
615
- // Fail fast: gate the expensive version+doctor dials on the reachability
616
- // verdict the cheap stats probe already computed one step earlier. A box
617
- // it found unreachable skips straight to an `unreachable` row instead of
618
- // burning 15s+30s per box — so one genuinely-offline device can't stall
619
- // the matrix for ~60s (RUSH-1964). See {@link fleetHealthSkip} for why
620
- // this is trusted on the default path, not just under `--refresh`.
621
448
  skip: fleetHealthSkip(t.skip, statsMap.get(t.device.name)),
622
449
  dialTarget: fleetDialTarget(t.device),
623
450
  extraSshArgs: deviceIdentityArgs(t.device),
@@ -646,30 +473,16 @@ async function runFleetStatus(opts) {
646
473
  });
647
474
  }
648
475
  }
649
- // Auth column: remote rows already carry the host's self-reported rollup from
650
- // its `doctor --json`. Fill the rest (this machine; older remotes that don't
651
- // emit it) from this host's local cache — written by `agents fleet ping` and
652
- // the daemon's local refresh. A never-probed host rolls up to "—". No network.
653
476
  const authCache = readAuthHealthCache();
654
477
  for (const row of rows) {
655
478
  if (!row.auth)
656
479
  row.auth = summarizeHostAuth(authCache, row.name);
657
- // Resolve the online/offline verdict and last-seen once (RUSH-1966) so the
658
- // summary view reads one truth — the same `deviceOnlineState` ordering the
659
- // registry write-back uses — instead of re-deriving it from error/skipped.
660
480
  const profile = reg[row.name];
661
481
  if (profile) {
662
482
  row.online = deviceOnlineState(profile, statsMap.get(row.name));
663
483
  row.lastSeen = profile.tailscale?.lastSeen ?? profile.reachability?.checkedAt;
664
484
  }
665
485
  }
666
- // Live-agent workload (RUSH-2061): publish THIS host's row, then union peers'
667
- // rows cache-first. The daemon no longer probes the fleet (publish-own /
668
- // read-union), so cross-host counts are gathered HERE, on demand — a mirror row
669
- // younger than the freshness window is served without ssh; a missing/stale one
670
- // is read over ssh via `fleet status --local --json` (bounded + kill-on-timeout
671
- // through sshExecAsync/fanOutDevices, RUSH-2114). Best-effort: agent counts are
672
- // additive, so a failed gather never breaks the status render.
673
486
  try {
674
487
  const { publishLocalFleetStatus, readFleetStatus, writeFleetStatusRows } = await import('../lib/fleet-status.js');
675
488
  const selfRow = await publishLocalFleetStatus(self);
@@ -702,7 +515,6 @@ async function runFleetStatus(opts) {
702
515
  }
703
516
  }
704
517
  catch {
705
- // best-effort — agent counts are additive to the health view
706
518
  }
707
519
  const report = buildFleetHealthReport(rows, new Date(), { self });
708
520
  if (opts.json) {
@@ -722,7 +534,6 @@ async function runFleetStatus(opts) {
722
534
  }, null, 2));
723
535
  }
724
536
  else if (opts.verbose) {
725
- // Full grid: the auth/CLI/sync/version columns and the warnings rollup.
726
537
  for (const line of renderFleetWarnings(report))
727
538
  console.log(line);
728
539
  console.log();
@@ -730,14 +541,12 @@ async function runFleetStatus(opts) {
730
541
  console.log(line);
731
542
  }
732
543
  else {
733
- // Default: rollup + NEEDS ATTENTION + OS-grouped quiet rows + footer.
734
544
  for (const line of renderFleetSummary(report, { self }))
735
545
  console.log(line);
736
546
  }
737
547
  if (opts.strict && report.hasWarnings)
738
548
  process.exitCode = 1;
739
549
  }
740
- /** SSH into a host and run its local auth probe, returning its rows. */
741
550
  async function probeRemoteAuth(target) {
742
551
  const isWin = /^win/i.test((target.platform ?? '').trim());
743
552
  const env = isWin ? undefined : { PATH: '$HOME/.agents/.cache/shims:$HOME/.local/bin:$PATH' };
@@ -749,27 +558,12 @@ async function probeRemoteAuth(target) {
749
558
  const parsed = JSON.parse(res.stdout);
750
559
  return parsed.rows ?? [];
751
560
  }
752
- /**
753
- * Race `fanOut` against an overall wall-clock deadline (RUSH-2041).
754
- *
755
- * If `fanOut` settles first the result passes through unchanged. If the
756
- * deadline fires first every pending remote target is mapped to `failed` (or
757
- * `skipped` for pre-skipped targets), so callers always get a complete result
758
- * array and the command exits promptly rather than hanging.
759
- *
760
- * Exported so the unit test can exercise the real path with a hanging probe
761
- * instead of reimplementing the logic.
762
- */
763
561
  export async function raceFleetPingDeadline(fanOut, remoteTargets, overallTimeoutMs) {
764
562
  const overallDeadline = new Promise((_, reject) => setTimeout(() => reject(new Error('fleet ping overall deadline exceeded')), overallTimeoutMs));
765
563
  try {
766
564
  return await Promise.race([fanOut, overallDeadline]);
767
565
  }
768
566
  catch (err) {
769
- // Overall deadline hit before all devices settled — mark every pending
770
- // device as failed so the command exits promptly. Individual probes that
771
- // already settled are not retrievable (Promise.all internals), so we
772
- // record all remote targets as timed out / skipped.
773
567
  const errMsg = err instanceof Error ? err.message : String(err);
774
568
  return remoteTargets.map((t) => ({
775
569
  name: t.name,
@@ -782,20 +576,9 @@ export async function raceFleetPingDeadline(fanOut, remoteTargets, overallTimeou
782
576
  async function runFleetPing(opts) {
783
577
  const self = machineId();
784
578
  const { refreshLocalFleetAuthState } = await import('../lib/daemon-ticks.js');
785
- // --local: probe just this host. Used both directly and as the fan-out worker.
786
- // force: this command promises "a real request for every account" (--strict
787
- // gates on it), so it must never reuse the periodic tick's rate-limit-throttled
788
- // cached verdict (RUSH-2998).
789
579
  if (opts.local) {
790
580
  const { authRows: rows } = await refreshLocalFleetAuthState({ force: true });
791
581
  if (opts.json) {
792
- // Per-agent launchability from the SAME run-router path the local readiness
793
- // check uses (`collectRunCandidates`/`isLaunchableSignedIn`), so a consumer
794
- // can tell a box that simply could not probe — a worker's setup-token box,
795
- // or a headed box that spent its usage-endpoint budget, both DROP their
796
- // `no_evidence` row — from a box with no credential at all. From `rows`
797
- // alone the two are indistinguishable, which broke `--host` routine
798
- // readiness on every worker (PHNX-4116).
799
582
  const { collectRunCandidates } = await import('../lib/accounting/rotate.js');
800
583
  const launchable = (await Promise.all(ALL_AGENT_IDS.map(async (agent) => (await collectRunCandidates(agent)).some((candidate) => candidate.signedIn) ? agent : null))).filter((agent) => agent !== null);
801
584
  console.log(JSON.stringify({ host: self, rows, launchable }));
@@ -809,15 +592,9 @@ async function runFleetPing(opts) {
809
592
  }
810
593
  return;
811
594
  }
812
- // Origin: probe locally, then fan out to the rest of the fleet in parallel.
813
595
  const reg = await loadDevices();
814
596
  const planned = planFleetTargets(reg);
815
597
  const results = [];
816
- // force: same as the --local worker below — this command promises a real
817
- // request for every account and --strict gates on it, so the self row must
818
- // never reuse the periodic tick's rate-limit-throttled cached verdict. Each
819
- // remote peer is force-probed via its own `devices ping --local` worker (see
820
- // probeRemoteAuth); the self row must match (RUSH-2998).
821
598
  const { authRows: localRows } = await refreshLocalFleetAuthState({ force: true });
822
599
  results.push({ host: self, rows: localRows });
823
600
  const remoteTargets = remoteFleetTargets(planned, self).map((t) => ({
@@ -831,10 +608,6 @@ async function runFleetPing(opts) {
831
608
  const spinner = isInteractiveTerminal() && !opts.json
832
609
  ? ora(`Pinging ${probeable} device${probeable === 1 ? '' : 's'}…`).start()
833
610
  : undefined;
834
- // Per-device: 15 s (matches the version probe budget; enough for the ~8 s
835
- // provider-fetch inside the remote local auth probe, with headroom).
836
- // Overall: 30 s hard cap so the command can never outlast a reasonable
837
- // budget when several devices are simultaneously unreachable (RUSH-2041).
838
611
  const FLEET_PING_DEVICE_TIMEOUT_MS = 15_000;
839
612
  const FLEET_PING_OVERALL_TIMEOUT_MS = 30_000;
840
613
  let remote;
@@ -870,7 +643,6 @@ async function runFleetPing(opts) {
870
643
  if (opts.strict && anyBad)
871
644
  process.exitCode = 1;
872
645
  }
873
- /** SSH into a host and read its raw harness rows (the `--local --json` worker). */
874
646
  async function probeRemoteHarnesses(target, refresh) {
875
647
  const isWin = /^win/i.test((target.platform ?? '').trim());
876
648
  const env = isWin ? undefined : { PATH: '$HOME/.agents/.cache/shims:$HOME/.local/bin:$PATH' };
@@ -885,13 +657,6 @@ async function probeRemoteHarnesses(target, refresh) {
885
657
  const parsed = JSON.parse(res.stdout);
886
658
  return parsed.rows ?? [];
887
659
  }
888
- /**
889
- * Gather harness rows across the fleet: THIS host in process, every reachable
890
- * peer over SSH. Shared by both `harnesses` and `accounts` (they differ only in
891
- * how the rows are rendered). Honors an optional `--device` allowlist on both
892
- * the local and remote rows. Bounded by the same per-device + overall deadlines
893
- * as `fleet ping`, so one unreachable box can never stall the glance.
894
- */
895
660
  export async function collectFleetHarnesses(opts) {
896
661
  const self = machineId();
897
662
  const want = opts.devices?.length ? new Set(opts.devices) : null;
@@ -989,7 +754,6 @@ export async function runDevicesAccounts(opts) {
989
754
  console.log(line);
990
755
  }
991
756
  }
992
- /** Resolve an {@link AuthCellColor} to a chalk painter. Single map for cells + labels. */
993
757
  const CELL_PAINT = {
994
758
  green: chalk.green,
995
759
  yellow: chalk.yellow,
@@ -997,14 +761,6 @@ const CELL_PAINT = {
997
761
  gray: chalk.gray,
998
762
  dim: chalk.dim,
999
763
  };
1000
- /**
1001
- * Color a per-host×agent cell. The numerator counts accounts that are usable
1002
- * right now — live-verified PLUS signed-in-but-unverifiable (codex/grok) — over
1003
- * the total, so a logged-in codex fleet reads "1/1", not a scary "0/1". Color is
1004
- * the shared {@link authCellColor}: red only for revoked (re-login), yellow for
1005
- * soft/expired (self-refreshes), gray for present-but-unverifiable, green when
1006
- * all live.
1007
- */
1008
764
  function authCell(summary, width) {
1009
765
  if (summary.total === 0)
1010
766
  return chalk.dim('·'.padEnd(width));
@@ -1012,15 +768,13 @@ function authCell(summary, width) {
1012
768
  const padded = `${ok}/${summary.total}`.padEnd(width);
1013
769
  return CELL_PAINT[authCellColor(summary)](padded);
1014
770
  }
1015
- /** Render the fleet auth matrix (device rows × agent columns) plus an optional per-account breakdown. */
1016
771
  function renderAuthMatrix(results, opts) {
1017
- // Only show agent columns that appear somewhere in the results.
1018
772
  const present = new Set();
1019
773
  for (const r of results)
1020
774
  for (const row of r.rows)
1021
775
  present.add(row.agent);
1022
776
  const agents = ALL_AGENT_IDS.filter((a) => present.has(a));
1023
- const cellW = 6; // 6 disambiguates opencode/openclaw (both 'openc' at 5)
777
+ const cellW = 6;
1024
778
  const nameW = Math.max(6, ...results.map((r) => r.host.length));
1025
779
  const lines = [chalk.bold('Fleet auth')];
1026
780
  const header = ` ${'Device'.padEnd(nameW)} ${agents.map((a) => a.slice(0, cellW).padEnd(cellW)).join(' ')}`;
@@ -1063,7 +817,6 @@ function renderAuthMatrix(results, opts) {
1063
817
  }
1064
818
  return lines;
1065
819
  }
1066
- /** Register the `agents devices` command tree (also aliased as `fleet`). */
1067
820
  function registerDevicesCommands(program) {
1068
821
  const devicesCmd = program
1069
822
  .command('devices')
@@ -1133,9 +886,7 @@ function registerDevicesCommands(program) {
1133
886
  process.exit(1);
1134
887
  }
1135
888
  });
1136
- // `agents fleet capture` — snapshot live state into agents.yaml fleet:.
1137
889
  registerFleetCaptureCommand(devicesCmd);
1138
- // `agents fleet apply` — canonical fleet reconcile (top-level apply is retired).
1139
890
  registerFleetApplyAlias(devicesCmd);
1140
891
  devicesCmd
1141
892
  .command('register <name>')
@@ -1148,14 +899,11 @@ function registerDevicesCommands(program) {
1148
899
  console.error(chalk.red(`'${name}' is not a current tailscale node. See 'agents devices sync'.`));
1149
900
  process.exit(1);
1150
901
  }
1151
- await removeIgnored(name); // clear THIS box's dismissal, if any
902
+ await removeIgnored(name);
1152
903
  const d = await upsertDevice(name, nodeToDeviceInput(node));
1153
904
  setDeviceDiscoveryStatus(name, 'approved');
1154
- clearPendingSentinel(name); // drop the notification immediately
905
+ clearPendingSentinel(name);
1155
906
  console.log(chalk.green(`Registered '${name}'`) + chalk.gray(` (${d.platform})`));
1156
- // A dismissal on another box still wins the union (ignored beats
1157
- // approved), so approving here does not un-dismiss it fleet-wide — say so
1158
- // rather than imply the node is now discoverable everywhere (PHNX-3315).
1159
907
  const otherDismissals = loadIgnoredEntries().filter((e) => e.name === name);
1160
908
  if (otherDismissals.length > 0 || getDeviceDiscoveryStatus(name) === 'ignored') {
1161
909
  const boxes = [...new Set(otherDismissals.map((e) => e.ignoredOn))].sort().join(', ') || 'another box';
@@ -1176,7 +924,7 @@ function registerDevicesCommands(program) {
1176
924
  await removeDevice(name);
1177
925
  await addIgnored(name);
1178
926
  setDeviceDiscoveryStatus(name, 'ignored');
1179
- clearPendingSentinel(name); // drop the notification immediately
927
+ clearPendingSentinel(name);
1180
928
  console.log(chalk.green(`Ignored '${name}'`) + chalk.gray(" — it won't be suggested again. Undo with `agents devices unignore`."));
1181
929
  }
1182
930
  catch (err) {
@@ -1189,13 +937,8 @@ function registerDevicesCommands(program) {
1189
937
  .description('Undo `ignore`: allow a node to be discovered and registered again.')
1190
938
  .action(async (name) => {
1191
939
  const wasIgnored = getDeviceDiscoveryStatus(name) === 'ignored' || loadIgnoredEntries().some((e) => e.name === name);
1192
- // A box can edit only its OWN device doc (PHNX-3315), so this clears just
1193
- // this box's dismissal/approval decision.
1194
940
  await removeIgnored(name);
1195
941
  setDeviceDiscoveryStatus(name, undefined);
1196
- // Re-evaluate the cross-box union AFTER clearing our slice: another box's
1197
- // dismissal keeps the node ignored fleet-wide (ignored beats approved), so
1198
- // never report a false "no longer ignoring" — name the box(es) to clear.
1199
942
  const remaining = loadIgnoredEntries().filter((e) => e.name === name);
1200
943
  if (remaining.length > 0 || getDeviceDiscoveryStatus(name) === 'ignored') {
1201
944
  const boxes = [...new Set(remaining.map((e) => e.ignoredOn))].sort().join(', ') || 'another box';
@@ -1252,13 +995,6 @@ function registerDevicesCommands(program) {
1252
995
  is where dismissals are visible.
1253
996
  `,
1254
997
  });
1255
- // ─── devices config (unified settings surface) ────────────────────────────
1256
- //
1257
- // ONE command for every per-device setting: `agents devices config <name>
1258
- // [key] [value] [--unset] [--json]`. configure, note, set-interactive, set,
1259
- // prefer, and unprefer are deleted (PHNX-4051) — use this command directly.
1260
- // enable/disable stay as first-class sugar over auto-launch.enabled.
1261
- /** Parse a raw CLI string into a config key's typed value (bool/int pass validation, strings verbatim). */
1262
998
  const parseConfigValueInput = (spec, raw) => {
1263
999
  switch (spec.type) {
1264
1000
  case 'int': {
@@ -1281,16 +1017,13 @@ function registerDevicesCommands(program) {
1281
1017
  const writeJson = (payload) => {
1282
1018
  process.stdout.write(JSON.stringify(payload, null, 2) + '\n');
1283
1019
  };
1284
- /** The device-scope config entries for `name` (what the config surface edits). */
1285
1020
  const deviceConfigEntries = (name) => listConfig({ device: name }).filter((e) => e.spec.scope === 'device');
1286
- /** Render one entry's effective value with its layer tag. */
1287
1021
  const entryValueText = (e) => {
1288
1022
  if (e.source === 'default')
1289
1023
  return chalk.gray('— (default)');
1290
1024
  const tag = e.source === 'fleet' ? chalk.yellow(' (fleet default)') : e.source === 'user' ? chalk.gray(' (user scope)') : '';
1291
1025
  return chalk.cyan(JSON.stringify(e.value)) + tag;
1292
1026
  };
1293
- /** Print the full resolved config for a device (bare invocation, non-menu). */
1294
1027
  const printDevicesConfig = (name, json) => {
1295
1028
  const entries = deviceConfigEntries(name);
1296
1029
  if (json) {
@@ -1305,7 +1038,6 @@ function registerDevicesCommands(program) {
1305
1038
  console.log(` ${e.spec.name.padEnd(24)} ${entryValueText(e)}${chalk.gray(` ${e.spec.description}`)}`);
1306
1039
  }
1307
1040
  };
1308
- /** Print the fleet-wide defaults layer (`config --fleet`, bare). */
1309
1041
  const printFleetConfig = (json) => {
1310
1042
  const entries = listConfig({ fleet: true }).filter((e) => e.spec.scope === 'device');
1311
1043
  if (json) {
@@ -1321,16 +1053,8 @@ function registerDevicesCommands(program) {
1321
1053
  console.log(` ${e.spec.name.padEnd(24)} ${value}${chalk.gray(` ${e.spec.description}`)}`);
1322
1054
  }
1323
1055
  };
1324
- /**
1325
- * The `devices config` engine — shared by the config command's action and
1326
- * every tombstone. `quiet` performs the write with no output (a tombstone
1327
- * that prints its own legacy shape). `fleet` targets the fleet-wide defaults
1328
- * layer instead of a device (`name` is then unused). Throws on a bad
1329
- * key/value; callers map that to exit 1.
1330
- */
1331
1056
  const runDevicesConfig = async (name, key, valueParts, opts) => {
1332
- const spec = key ? configKeySpec(key) : undefined; // unknown key → throw listing the valid keys
1333
- // ── Fleet-defaults layer (`--fleet`): no device involved.
1057
+ const spec = key ? configKeySpec(key) : undefined;
1334
1058
  if (opts.fleet) {
1335
1059
  if (spec && spec.scope === 'user') {
1336
1060
  throw new Error(`Config key '${spec.name}' is user-scope (already fleet-wide) — --fleet does not apply.`);
@@ -1378,8 +1102,6 @@ function registerDevicesCommands(program) {
1378
1102
  printFleetConfig(Boolean(opts.json));
1379
1103
  return;
1380
1104
  }
1381
- // User-scope keys (interactive.host) are stored centrally — the device name
1382
- // is syntax only, so an unregistered name is not an error for them.
1383
1105
  if (!spec || spec.scope === 'device')
1384
1106
  await mustGetDevice(name);
1385
1107
  if (opts.unset) {
@@ -1397,7 +1119,6 @@ function registerDevicesCommands(program) {
1397
1119
  if (spec && valueParts.length > 0) {
1398
1120
  let value;
1399
1121
  if (spec.type === 'string-list') {
1400
- // List keys (notes) APPEND — one entry per invocation.
1401
1122
  const existing = getConfigValue(spec.name, { device: name }).value ?? [];
1402
1123
  value = [...existing, valueParts.join(' ')];
1403
1124
  }
@@ -1425,29 +1146,17 @@ function registerDevicesCommands(program) {
1425
1146
  }
1426
1147
  return;
1427
1148
  }
1428
- // Bare: TTY → the interactive settings menu; piped/--json → print.
1429
1149
  if (opts.json || !isInteractiveTerminal()) {
1430
1150
  printDevicesConfig(name, Boolean(opts.json));
1431
1151
  return;
1432
1152
  }
1433
1153
  await runDevicesConfigMenu(name);
1434
1154
  };
1435
- /**
1436
- * The `devices role` engine — read or write the fleet-wide role mark, and say
1437
- * what it does to automatic placement.
1438
- *
1439
- * A role written here lands in that device's tracked per-device doc
1440
- * (`devices/<name>/agents.yaml` `config.role`) and syncs with repo
1441
- * push/pull. The vocabulary is `worker | personal | desktop`.
1442
- */
1443
1155
  const runDevicesRole = async (name, role, opts) => {
1444
1156
  if (!name) {
1445
1157
  if (role)
1446
1158
  throw new Error('Name a device: agents devices role <name> <worker|personal|desktop>');
1447
1159
  const reg = await loadDevices();
1448
- // The full registered roster, not just online — a fleet-wide `role`
1449
- // default must reach a registered device even when it has no per-device
1450
- // doc of its own, or it silently falls out of the worker allowlist.
1451
1160
  const roles = listConfiguredDeviceRoles(Object.keys(reg));
1452
1161
  const mode = autoPoolMode();
1453
1162
  const online = Object.entries(reg)
@@ -1491,13 +1200,7 @@ function registerDevicesCommands(program) {
1491
1200
  console.log(` ${name.padEnd(20)} ${current ? chalk.cyan(current) : chalk.gray('— (unmarked)')}`);
1492
1201
  return;
1493
1202
  }
1494
- // configuredDeviceRole's key spec validates the value; a bad one throws with
1495
- // the accepted list, which the command's catch turns into exit 1.
1496
1203
  setConfiguredDeviceRole(name, role);
1497
- // Full registered roster, mirroring the bare-listing branch above — a
1498
- // fleet-wide `role` default must reach a doc-less registered device here
1499
- // too, or `autoPoolWorkers` under-reports the allowlist right after this
1500
- // write changed it.
1501
1204
  const roles = listConfiguredDeviceRoles(Object.keys(await loadDevices()));
1502
1205
  if (opts.json) {
1503
1206
  writeJson({ device: name, role, autoPoolWorkers: listWorkerDevices({ roles }) });
@@ -1513,9 +1216,6 @@ function registerDevicesCommands(program) {
1513
1216
  }
1514
1217
  console.log(chalk.gray('Sync it to the fleet with `agents repo push`.'));
1515
1218
  };
1516
- /** The interactive settings menu: pick a key, edit it, repeat. TTY-only.
1517
- * Shows EFFECTIVE values (with a fleet tag when inherited); edits always
1518
- * write the device layer. */
1519
1219
  const runDevicesConfigMenu = async (name) => {
1520
1220
  const { select, input, confirm } = await import('@inquirer/prompts');
1521
1221
  const DONE = '__done__';
@@ -1573,7 +1273,7 @@ function registerDevicesCommands(program) {
1573
1273
  }
1574
1274
  catch (err) {
1575
1275
  if (isPromptCancelled(err))
1576
- return; // ctrl-c / esc — leave the menu quietly
1276
+ return;
1577
1277
  throw err;
1578
1278
  }
1579
1279
  };
@@ -1589,7 +1289,6 @@ function registerDevicesCommands(program) {
1589
1289
  .action(async (name, key, valueParts, opts) => {
1590
1290
  try {
1591
1291
  if (opts.fleet) {
1592
- // Positionals shift left: the first one is the key, the rest the value.
1593
1292
  const fleetValue = [key, ...(valueParts ?? [])].filter((v) => v !== undefined);
1594
1293
  await runDevicesConfig(undefined, name, fleetValue, opts);
1595
1294
  return;
@@ -1709,8 +1408,6 @@ function registerDevicesCommands(program) {
1709
1408
  .option('--json', 'output machine-readable JSON')
1710
1409
  .action(async (name, textParts, opts) => {
1711
1410
  try {
1712
- // Thin sugar over the 'description' config key — the same engine that
1713
- // backs `agents devices config <name> description`, not a second path.
1714
1411
  await runDevicesConfig(name, 'description', textParts ?? [], opts);
1715
1412
  }
1716
1413
  catch (err) {
@@ -1751,13 +1448,9 @@ function registerDevicesCommands(program) {
1751
1448
  let statsMap;
1752
1449
  let freshness;
1753
1450
  if (opts.stats !== false) {
1754
- // Cache-first: serve remote devices from the daemon-warmed cache
1755
- // (instant), probe this machine locally, and only ssh out for missing or
1756
- // forced (--refresh/--live) rows — so a warm read never hangs on a box.
1757
1451
  const probeable = planFleetTargets(reg)
1758
1452
  .filter((t) => !t.skip)
1759
1453
  .map((t) => t.device);
1760
- // Only spin when we'll actually ssh (forced, or a cold/partial cache).
1761
1454
  const cache = readStatsCache();
1762
1455
  const willSsh = forceRefresh || probeable.some((d) => d.name !== self && (!cache[d.name] || !isFreshDeviceStats(cache[d.name])));
1763
1456
  const spinner = willSsh && isInteractiveTerminal()
@@ -1771,8 +1464,6 @@ function registerDevicesCommands(program) {
1771
1464
  finally {
1772
1465
  spinner?.stop();
1773
1466
  }
1774
- // Write the live verdict back so this and every other consumer read one
1775
- // reachability truth instead of the stale tailscale snapshot (RUSH-1965).
1776
1467
  if (statsMap)
1777
1468
  await writeReachability(collectReachabilityWriteBacks(reg, statsMap)).catch(() => { });
1778
1469
  }
@@ -1786,9 +1477,6 @@ function registerDevicesCommands(program) {
1786
1477
  return {
1787
1478
  ...resolveDeviceProfile(reg[name]),
1788
1479
  interactive: name === interactiveHost,
1789
- // Roles as machine-readable fields: `role` is what the operator
1790
- // marked (absent when unmarked), `autoPool` is the answer that
1791
- // matters to a caller — may `--device auto` pick this box.
1792
1480
  ...(jsonRoles[name] ? { role: jsonRoles[name] } : {}),
1793
1481
  ...(typeof description === 'string' && description ? { description } : {}),
1794
1482
  autoPool: autoPool.has(name),
@@ -1799,21 +1487,12 @@ function registerDevicesCommands(program) {
1799
1487
  return;
1800
1488
  }
1801
1489
  console.log(chalk.bold(`Devices (${names.length})`));
1802
- // Dismissed nodes are not devices (never in the registry) — surface their
1803
- // count under the table so a "missing" node is explainable from the list.
1804
1490
  const ignoredCount = loadIgnoredEntries().length;
1805
1491
  for (const line of renderDeviceTable(reg, names, self, statsMap, opts.full, interactiveHost, { ignoredCount }))
1806
1492
  console.log(line);
1807
1493
  if (freshness?.servedFromCache && freshness.oldestFetchedAt != null) {
1808
1494
  console.log(chalk.gray(` updated ${formatCheckedAge(freshness.oldestFetchedAt)} — pass --refresh (--live) for a live probe`));
1809
1495
  }
1810
- // Ephemeral crabbox leases live alongside the registered fleet but are never
1811
- // written into the registry — surface them as their own live section, but only
1812
- // behind --all (RUSH-2190). Reading them routes through crabboxEnv, whose
1813
- // bundle auto-detect scans the keychain and can raise a Touch ID sheet AFTER
1814
- // the table has printed — unacceptable for the default list, which hooks and
1815
- // other non-interactive callers rely on. The predicate is exported so the
1816
- // gate itself is unit-tested; keep it the ONLY condition guarding this call.
1817
1496
  if (showLeasedBoxesSection(opts)) {
1818
1497
  for (const line of loadLeasedBoxesSection())
1819
1498
  console.log(line);
@@ -1870,10 +1549,6 @@ function registerDevicesCommands(program) {
1870
1549
  .option('--local', "this machine only: print THIS host's status row (resource stats + live-agent workload). The publish endpoint the fleet-status read-union reads over ssh.")
1871
1550
  .option('--verbose', 'show the full per-device auth/CLI/sync/version grid instead of the summary')
1872
1551
  .action(async (opts, cmd) => {
1873
- // The root program also defines a global `--verbose`; commander binds a
1874
- // shared long flag to the program, not the leaf. Read the effective value
1875
- // from the merged globals so `fleet status --verbose` works at either level
1876
- // (same pattern as `fleet ping --verbose`).
1877
1552
  const verbose = opts.verbose ?? Boolean(cmd.optsWithGlobals().verbose);
1878
1553
  await runFleetStatus({ ...opts, verbose });
1879
1554
  });
@@ -1885,11 +1560,6 @@ function registerDevicesCommands(program) {
1885
1560
  .option('--verbose', 'show a per-account breakdown, not just the per-host rollup')
1886
1561
  .option('--strict', 'exit non-zero when any account is revoked (expired is soft — it self-refreshes)')
1887
1562
  .action(async (opts, cmd) => {
1888
- // The root program also defines a global `--verbose` (startup self-heal
1889
- // detail), and commander binds a shared long flag to the program, not the
1890
- // leaf — so `fleet ping --verbose` never set opts.verbose and the
1891
- // per-account breakdown was silently unreachable. Read the effective value
1892
- // from the merged globals so the flag works at either level.
1893
1563
  const verbose = opts.verbose ?? Boolean(cmd.optsWithGlobals().verbose);
1894
1564
  await runFleetPing({ ...opts, verbose });
1895
1565
  });
@@ -1906,8 +1576,6 @@ function registerDevicesCommands(program) {
1906
1576
  plan = await resolveWorkerDevice({ platforms: csvList(opts.platform) });
1907
1577
  }
1908
1578
  catch (err) {
1909
- // Fail loud with the resolver's own message. Never print a device name
1910
- // we did not actually pick: a caller reading stdout would ship a tree to it.
1911
1579
  console.error(err instanceof Error ? err.message : String(err));
1912
1580
  process.exitCode = 1;
1913
1581
  return;
@@ -1916,8 +1584,6 @@ function registerDevicesCommands(program) {
1916
1584
  console.log(JSON.stringify(plan, null, 2));
1917
1585
  return;
1918
1586
  }
1919
- // stdout is the name alone (`box="$(agents devices pick)"`); the human
1920
- // detail goes to stderr so it never pollutes that capture.
1921
1587
  const detail = plan.candidates
1922
1588
  .map((c) => `${c.device}:${c.loadPercent === undefined ? '?' : `${Math.round(c.loadPercent)}%`}`)
1923
1589
  .join(' ');
@@ -1989,9 +1655,6 @@ email) into a single row. Use \`agents devices harnesses\` for the per-install v
1989
1655
  .option('--platform <platform>', 'windows | linux | macos')
1990
1656
  .action(async (name, target, opts) => {
1991
1657
  try {
1992
- // The one place a device name is CHOSEN rather than observed, so the one
1993
- // place the reserved-sentinel policy belongs. upsertDevice itself stays
1994
- // shape-only — `devices sync` feeds it tailnet node names in a loop.
1995
1658
  assertRegistrableDeviceName(name);
1996
1659
  const { host, user } = splitUserHost(target);
1997
1660
  const isIp = /^\d{1,3}(\.\d{1,3}){3}$/.test(host);
@@ -2085,9 +1748,6 @@ is reported \`failed\` (exit non-zero), never a stranded \`ok\`.
2085
1748
  console.log(chalk.gray(`Running \`${cmd.join(' ')}\` on ${targets.filter((t) => !t.skip).length} online device(s)…`));
2086
1749
  const self = machineId();
2087
1750
  const results = runFleet(targets, cmd, { self });
2088
- // `exit 0` from the upgrade only proves the npm global moved. Ask each box
2089
- // what `agents` actually resolves to before calling the rollout a success
2090
- // (RUSH-2446) — a dev install shadowing the global keeps running old code.
2091
1751
  const verifications = verifyFleetRollout(targets, results, version, { self });
2092
1752
  printFleetResults(results, verifications);
2093
1753
  });
@@ -2171,13 +1831,6 @@ function fmtWtSize(n) {
2171
1831
  }
2172
1832
  return `${v.toFixed(v < 10 ? 1 : 0)}${units[i]}`;
2173
1833
  }
2174
- /**
2175
- * `agents fleet worktrees` — surface the held set the sweep only counts. Never
2176
- * removes anything; `--push` publishes on-no-remote stranded branches. This is
2177
- * the CLI-native surfacing half of PHNX-3520 (the sweep itself lives in
2178
- * phnx-labs/.agents; it still emits a bare count until a sibling change teaches
2179
- * it to consume this).
2180
- */
2181
1834
  async function runWorktreesHeld(opts) {
2182
1835
  if (opts.bucket && !isHeldBucket(opts.bucket)) {
2183
1836
  console.error(chalk.red(`Unknown bucket '${opts.bucket}'. Use one of: ${BUCKET_ORDER.join(', ')}`));
@@ -2236,7 +1889,6 @@ async function runWorktreesHeld(opts) {
2236
1889
  console.log('\n' + chalk.yellow(`${stranded} branch${stranded === 1 ? '' : 'es'} with unmerged commits on no remote. Recover: agents fleet worktrees --push`));
2237
1890
  }
2238
1891
  }
2239
- /** `--push`: publish every on-no-remote stranded branch. Never deletes. */
2240
1892
  async function runWorktreesPush(held, opts) {
2241
1893
  const candidates = held.filter((w) => w.bucket === 'unmerged-commits' && !w.hasRemoteBranch && w.branch);
2242
1894
  if (candidates.length === 0) {
@@ -2267,7 +1919,6 @@ async function runWorktreesPush(held, opts) {
2267
1919
  }
2268
1920
  console.log('\n' + chalk.green(`Published ${pushed}/${candidates.length} stranded branch${candidates.length === 1 ? '' : 'es'}.`));
2269
1921
  }
2270
- /** `--fleet`: run this same read-only surface on every online device, aggregate. */
2271
1922
  async function runWorktreesHeldFleet(opts) {
2272
1923
  const reg = await loadDevices();
2273
1924
  const targets = planFleetTargets(reg);
@@ -2296,10 +1947,6 @@ async function runWorktreesHeldFleet(opts) {
2296
1947
  console.error(chalk.gray(` ${name}: unparseable output (older CLI?)`));
2297
1948
  }
2298
1949
  }
2299
- // Apply the bucket filter to the per-device inputs BEFORE aggregating, so
2300
- // `total`, per-`devices` totals, and `buckets` all describe the same filtered
2301
- // set — zeroing buckets after the sum leaves `total` counting rows the output
2302
- // no longer lists.
2303
1950
  const scoped = opts.bucket
2304
1951
  ? perDevice.map((d) => ({ device: d.device, held: d.held.filter((w) => w.bucket === opts.bucket) }))
2305
1952
  : perDevice;
@@ -2322,12 +1969,6 @@ async function runWorktreesHeldFleet(opts) {
2322
1969
  }
2323
1970
  }
2324
1971
  }
2325
- /**
2326
- * `agents devices ps` — list tasks dispatched to devices (`agents run --device
2327
- * <name> --no-follow`). Heals any 'running' record whose local follower died
2328
- * (dropped connection, laptop sleep) against the remote `.exit` before listing,
2329
- * so a finished run never shows stuck at 'running'.
2330
- */
2331
1972
  async function doDeviceTaskPs(json) {
2332
1973
  const tasks = reconcileRunningTasks(listTasks());
2333
1974
  if (json) {
@@ -2347,9 +1988,7 @@ async function doDeviceTaskPs(json) {
2347
1988
  console.log(t.id.padEnd(11) + nameCol + t.host.padEnd(16) + t.agent.padEnd(10) + status.padEnd(11) + promptCol);
2348
1989
  }
2349
1990
  }
2350
- /** `agents devices stop <id>` — terminate a running dispatched task from the origin machine. */
2351
1991
  async function doDeviceTaskStop(ref) {
2352
- // Heal first so we don't try to kill a process that already exited.
2353
1992
  const current = resolveTaskRef(ref);
2354
1993
  if (!current) {
2355
1994
  console.log(chalk.red(`Unknown task "${ref}".`));
@@ -2380,11 +2019,6 @@ async function doDeviceTaskStop(ref) {
2380
2019
  process.exitCode = 1;
2381
2020
  }
2382
2021
  }
2383
- /**
2384
- * Parse `--argv`'s JSON array, or report exactly what was wrong and return
2385
- * undefined. Fails loud rather than coercing: a caller that meant to pass argv
2386
- * and typo'd the JSON must not silently get shell-string semantics instead.
2387
- */
2388
2022
  export function parseArgvJson(raw, log = (line) => console.error(line)) {
2389
2023
  let parsed;
2390
2024
  try {
@@ -2407,7 +2041,6 @@ export function parseArgvJson(raw, log = (line) => console.error(line)) {
2407
2041
  }
2408
2042
  return parsed;
2409
2043
  }
2410
- /** Register the `agents ssh` smart wrapper. */
2411
2044
  function registerSshWrapper(program) {
2412
2045
  const sshCmd = program
2413
2046
  .command('ssh <name> [cmd...]')
@@ -2444,8 +2077,6 @@ arrives intact. The positional form keeps its existing semantics — the remote
2444
2077
  shell parses it — so the two are mutually exclusive rather than interchangeable.
2445
2078
  `)
2446
2079
  .action(async (name, cmd, opts) => {
2447
- // `--argv` is a DIFFERENT delivery contract, not a spelling of the
2448
- // positional form, so accepting both would have to silently pick one.
2449
2080
  if (opts.argv !== undefined && cmd.length > 0) {
2450
2081
  console.error(chalk.red('Pass either --argv <json> or a positional command, not both.'));
2451
2082
  console.error(chalk.gray('--argv delivers exact tokens; the positional form is parsed by the remote shell.'));
@@ -2462,20 +2093,10 @@ shell parses it — so the two are mutually exclusive rather than interchangeabl
2462
2093
  }
2463
2094
  cmd = argvTokens;
2464
2095
  }
2465
- // Hidden askpass bridge: ssh execs the shim, which re-invokes us here.
2466
2096
  if (name === '__askpass') {
2467
2097
  await runAskpass();
2468
2098
  return;
2469
2099
  }
2470
- // `auto` is the same affinity sentinel `agents run --device auto` resolves
2471
- // (RUSH-2185) — pick the concrete device up front via the SAME engine
2472
- // (resolveDeviceAffinity), rather than leaning on matchHost's generic
2473
- // self-resolution (../lib/hosts/registry.js): `agents ssh` connects OUT to
2474
- // a remote device, so a pick that lands on THIS machine is refused with a
2475
- // clear message instead of self-SSHing — which also holds when this
2476
- // machine was never itself enrolled as a device (matchHost would have
2477
- // nothing to resolve "self" to, and mis-report the pick as "Unknown
2478
- // device").
2479
2100
  let target = name;
2480
2101
  if (isDeviceInteractive(name)) {
2481
2102
  const pinned = resolveInteractiveDevice();
@@ -2495,23 +2116,13 @@ shell parses it — so the two are mutually exclusive rather than interchangeabl
2495
2116
  process.stderr.write(chalk.gray(`[agents] device=auto → ${plan.host}\n`));
2496
2117
  target = plan.host;
2497
2118
  }
2498
- // Accept the full fleet target grammar: a registered `name`, a
2499
- // `user@device` (same device, login user overridden — dialed via its
2500
- // Tailscale route, not LAN DNS), or an ad-hoc `user@host`/`host` literal.
2501
- // A bare unregistered alias still errors as "Unknown device".
2502
2119
  const resolvedTarget = await resolveDeviceTarget(target);
2503
2120
  if (!resolvedTarget) {
2504
- // Not a registered device — it may be a leased crabbox box slug. ssh into
2505
- // it directly (crabbox@<tailnet|ip>:2222) before giving up.
2506
- trySshLeasedBox(target, cmd); // exits the process on a match
2121
+ trySshLeasedBox(target, cmd);
2507
2122
  console.error(chalk.red(`Unknown device '${target}'. See 'agents devices list'.`));
2508
2123
  process.exit(1);
2509
2124
  }
2510
- // The effective profile: central config (ssh.*/platform/user) overlaid on
2511
- // the discovery record.
2512
2125
  const device = resolveDeviceProfile(resolvedTarget);
2513
- // Preflight: a device Tailscale last saw offline would otherwise hang
2514
- // for the full ConnectTimeout. Fail fast with a clear message instead.
2515
2126
  if (device.tailscale && !device.tailscale.online) {
2516
2127
  console.error(chalk.red(`Device '${device.name}' is offline (Tailscale last saw it ${device.tailscale.lastSeen ?? 'a while ago'}).`));
2517
2128
  console.error(chalk.gray("Run 'agents devices sync' to refresh reachability."));
@@ -2522,22 +2133,11 @@ shell parses it — so the two are mutually exclusive rather than interchangeabl
2522
2133
  }
2523
2134
  try {
2524
2135
  const shim = writeAskpassShim();
2525
- // Pin the host key on first connect and verify strictly thereafter: the
2526
- // managed known_hosts store must exist before ssh writes the learned key
2527
- // into it, and a host already recorded there is checked with
2528
- // StrictHostKeyChecking=yes (RUSH-1767).
2529
2136
  ensureManagedKnownHostsDir();
2530
2137
  const addr = hostNameFor(device);
2531
2138
  const pinned = addr ? isHostPinned(addr) : false;
2532
- // Interactive login (no cmd): mirror the caller's project directory on
2533
- // the target when the same home-relative checkout exists there, matching
2534
- // `agents run --device` (deriveMirroredCwd). Best-effort — a missing dir
2535
- // falls back to the remote home. An explicit `cmd` keeps its cwd (RUSH-2412).
2536
2139
  const mirrorCwd = cmd.length === 0 ? deriveMirroredCwd(process.cwd()) : undefined;
2537
2140
  const { args, env } = buildSshInvocation(device, cmd, shim, { pinned }, { interactiveCwd: mirrorCwd, ...(argvTokens ? { argv: true } : {}) });
2538
- // Interactive login: make the local terminal's terminfo (e.g.
2539
- // xterm-ghostty) available on the remote so backspace/colors/clear work.
2540
- // Best-effort + cached per host — never blocks the login (see terminfo.ts).
2541
2141
  if (cmd.length === 0 && shouldSyncTerminfo({ term: process.env.TERM, shell: device.shell, interactive: process.stdout.isTTY ?? false })) {
2542
2142
  const { args: tinfoArgs, env: tinfoEnv } = buildSshInvocation(device, ['tic', '-x', '-'], shim, { pinned });
2543
2143
  syncTerminfoToDevice({ device, host: terminfoHostKey(device, addr), term: process.env.TERM, sshArgs: tinfoArgs, sshEnv: tinfoEnv });
@@ -2553,15 +2153,8 @@ shell parses it — so the two are mutually exclusive rather than interchangeabl
2553
2153
  process.exit(1);
2554
2154
  }
2555
2155
  });
2556
- // Keep the hidden askpass invocation out of help.
2557
2156
  void sshCmd;
2558
2157
  }
2559
- /**
2560
- * The askpass side of password auth. Invoked by the shim (which ssh execs with
2561
- * SSH_ASKPASS): read the target bundle/key from the environment the wrapper
2562
- * set, resolve it through the existing Keychain path, and print the password
2563
- * to stdout for ssh to consume.
2564
- */
2565
2158
  async function runAskpass() {
2566
2159
  const bundle = process.env[ASKPASS_BUNDLE_ENV];
2567
2160
  const key = process.env[ASKPASS_KEY_ENV] ?? 'password';
@@ -2569,9 +2162,6 @@ async function runAskpass() {
2569
2162
  console.error(`askpass: ${ASKPASS_BUNDLE_ENV} not set`);
2570
2163
  process.exit(1);
2571
2164
  }
2572
- // A read-only stats probe sets ASKPASS_AGENT_ONLY_ENV to force a broker-only
2573
- // resolve even under a TTY — so `agents devices` never pops Touch ID just to
2574
- // render load/mem for an uncached password-auth device (RUSH-1970).
2575
2165
  const agentOnly = true;
2576
2166
  try {
2577
2167
  const { env } = await readAndResolveBundleEnv(bundle, { caller: 'agents ssh', keys: [key], keyMode: 'storage', agentOnly });
@@ -2587,7 +2177,6 @@ async function runAskpass() {
2587
2177
  process.exit(1);
2588
2178
  }
2589
2179
  }
2590
- /** Register both `agents ssh` and `agents devices`. */
2591
2180
  export function registerSshCommands(program) {
2592
2181
  registerSshWrapper(program);
2593
2182
  registerDevicesCommands(program);