@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,9 +1,3 @@
1
- /**
2
- * Account rotation across agent versions.
3
- *
4
- * Detects which installed versions have expired credentials and rotates
5
- * authentication tokens so users maintain active sessions across version switches.
6
- */
7
1
  import * as fs from 'fs';
8
2
  import * as path from 'path';
9
3
  import { isAgentId } from '../types.js';
@@ -28,13 +22,6 @@ function getRotateDir() {
28
22
  return dir;
29
23
  }
30
24
  export const RUN_STRATEGIES = ['pinned', 'available', 'balanced'];
31
- /**
32
- * Return a run strategy when the input is valid, otherwise null.
33
- *
34
- * `'rotate'` is accepted as a deprecated alias for `'balanced'` so old yaml
35
- * configs and `--strategy rotate` invocations keep working. The legacy alias
36
- * normalizes to `'balanced'` and uses the weighted-random algorithm.
37
- */
38
25
  export function normalizeRunStrategy(value) {
39
26
  if (typeof value !== 'string')
40
27
  return null;
@@ -42,7 +29,6 @@ export function normalizeRunStrategy(value) {
42
29
  return 'balanced';
43
30
  return RUN_STRATEGIES.includes(value) ? value : null;
44
31
  }
45
- /** Read project-local run strategy from the nearest agents.yaml, if present. */
46
32
  function getProjectRunStrategy(agent, startPath) {
47
33
  for (const runConfig of getProjectRunConfigs(startPath)) {
48
34
  const strategy = normalizeRunStrategy(runConfig[agent]?.strategy);
@@ -51,28 +37,11 @@ function getProjectRunStrategy(agent, startPath) {
51
37
  }
52
38
  return null;
53
39
  }
54
- /**
55
- * Resolve the configured strategy. Lookup order:
56
- * 1. project-local agents.yaml (nearest to `startPath`)
57
- * 2. ~/.agents/.system/agents.yaml
58
- * 3. default: `balanced` (weighted-random across all healthy accounts by
59
- * remaining headroom, skipping any that are currently rate-limited). A
60
- * bare `agents run <agent>` — e.g. every new terminal the extension spawns
61
- * — should spread load and never launch into a throttled account, rather
62
- * than stick to the pinned default even when it's maxed.
63
- */
64
40
  export function getConfiguredRunStrategy(agent, startPath = process.cwd()) {
65
41
  return getProjectRunStrategy(agent, startPath)
66
42
  ?? normalizeRunStrategy(readMeta().run?.[agent]?.strategy)
67
43
  ?? 'balanced';
68
44
  }
69
- /**
70
- * Whether an account may be rotated INTO right now. Defined in terms of
71
- * {@link readinessFromCandidate} so the router's pick gate and the pre-flight
72
- * warning can never disagree: an account is eligible iff its readiness is
73
- * `ready` — signed in, not server-revoked, and not out of usage.
74
- */
75
- /** Slot verdicts balanced/available will launch (PHNX-3940 T5). */
76
45
  const LAUNCHABLE_SLOT_VERDICTS = new Set(['live', 'unverified']);
77
46
  function isLaunchableSlotVerdict(verdict) {
78
47
  return verdict !== null && LAUNCHABLE_SLOT_VERDICTS.has(verdict);
@@ -82,20 +51,6 @@ function isRotationEligible(candidate, nowMs = Date.now(), model) {
82
51
  return false;
83
52
  return readinessFromCandidate(candidate, nowMs, model).ready;
84
53
  }
85
- /**
86
- * Whether a version home can actually authenticate a launch.
87
- *
88
- * `getAccountInfo` falls back to the active/global HOME when a version home has
89
- * no credential of its own, so `agents view` still shows who is logged in. Launch
90
- * paths isolate config (GROK_HOME, CODEX_HOME, KIMI_CODE_HOME, CLAUDE_CONFIG_DIR,
91
- * …) to the per-version home, so a home that only "inherits" the active login
92
- * cannot spawn a signed-in agent — balanced kept picking those empty homes and
93
- * the run died on "Not signed in".
94
- *
95
- * When we know where the credential lives (`knownLocation`), require it under
96
- * THIS version home. When we don't (keychain-only / unmapped agents), trust the
97
- * existing `signedIn` signal.
98
- */
99
54
  export function isLaunchableSignedIn(signedIn, presence) {
100
55
  if (!signedIn)
101
56
  return false;
@@ -103,82 +58,16 @@ export function isLaunchableSignedIn(signedIn, presence) {
103
58
  return true;
104
59
  return presence.perVersion;
105
60
  }
106
- /**
107
- * Whether a SPECIFIC installed version is launchable-signed-in on THIS device,
108
- * plus the account email when it is. Mirrors EXACTLY the per-version gate
109
- * {@link collectRunCandidates} applies (getVersionHomePath -> getAccountInfo ->
110
- * {@link isLaunchableSignedIn} over {@link credentialPresence}), so the
111
- * pre-launch `run.launch` event can report the same signed-in verdict the
112
- * balanced router computes for that version.
113
- *
114
- * The point is to make a launch into a logged-out version VISIBLE at spawn time:
115
- * `--device auto` only guarantees SOME account is ready on the device, not that
116
- * the specific version launched is signed in there (the yosemite-m3 2.1.219
117
- * incident — 2.1.219 was logged out, the router correctly excluded it, yet it
118
- * launched). Non-fatal by construction: callers wrap it best-effort.
119
- */
120
61
  export async function isVersionLaunchableHere(agent, version) {
121
62
  const home = getVersionHomePath(agent, version);
122
63
  const info = await getAccountInfo(agent, home);
123
64
  const launchable = isLaunchableSignedIn(info.signedIn, credentialPresence(agent, home));
124
65
  return { launchable, email: launchable ? info.email : null };
125
66
  }
126
- /**
127
- * How old a usage snapshot may be and still settle a routing DECISION.
128
- *
129
- * A display may show an older cached bar, but the router choosing an account
130
- * from one costs the whole run. Measured case: `yosemite-s1` held snapshots 26
131
- * hours to 2.7 days old
132
- * with a failing refresh, so balanced read `muqsit@getrush.ai` as 48% used and
133
- * launched into it while the account was actually at its weekly cap.
134
- */
135
67
  export const USAGE_DECISION_MAX_AGE_MS = 5 * 60 * 1000;
136
- /**
137
- * How old a *synced* snapshot (arrived from the account's poller through the
138
- * fleet store) may be and still settle a routing decision. Matches the
139
- * usage-sync tick so a worker that only ever sees 15-minute-old rows does not
140
- * drop to the account picker. Local captures (`poll` / `statusline`) keep
141
- * {@link USAGE_DECISION_MAX_AGE_MS}.
142
- */
143
68
  export const USAGE_SYNC_TRUST_MS = 15 * 60 * 1000;
144
- /**
145
- * How old a usage snapshot may be before routing REFUSES to run at all
146
- * (NO_VERIFIED_USAGE), as opposed to merely declining to *weight* by its number.
147
- *
148
- * These are two different risks and now two different bars. Weighting on a
149
- * slightly-old number is cheap to get wrong (a floored weight, {@link
150
- * USAGE_DECISION_MAX_AGE_MS} = 5 min); refusing to launch at all is expensive to
151
- * get wrong — it fails the user's `agents run` outright. The daemon's usage
152
- * refresher paces proactive fetches under a fixed per-provider budget
153
- * (`usage-refresh.ts`, PROVIDER_HOURLY_BUDGET), so on a multi-account fleet an
154
- * IDLE account is deliberately refreshed on a stretched round-robin cadence
155
- * (bounded at N × spacing — ~16 min at 8 accounts, ~32 min at 16) rather than
156
- * every 5 min, which would 429 the endpoint and park it for up to an hour. A
157
- * budget-paced idle reading of 10–30 min is NOT the failure this refusal exists
158
- * to catch. That failure is the `yosemite-s1` case: a box whose refresh is
159
- * genuinely BROKEN, holding readings 26 h – 2.7 d old. 40 min sits comfortably
160
- * above the worst-case budget cadence and still an order of magnitude below the
161
- * multi-hour staleness of a broken box — and actively-used accounts refresh for
162
- * free via the statusline ingest, so a *busy* account is never even this old.
163
- */
164
69
  export const USAGE_STALE_REFUSAL_MAX_AGE_MS = 40 * 60 * 1000;
165
- /**
166
- * Whether this candidate's usage number is recent enough to route on. A missing
167
- * snapshot is unverified by definition — there is no number to trust.
168
- *
169
- * A snapshot with NO windows is unverified for the same reason, however fresh
170
- * it is: it carries a subscription plan and no utilization, so there is still
171
- * no number. Freshness alone would make a meterless harness (Grok reports a
172
- * tier and no meters) verify against nothing — and since `preferVerified`
173
- * narrows the pool to verified candidates, the one account whose billing log
174
- * was touched most recently would win every draw, then win again because
175
- * running it refreshes that log. That self-reinforcing pin is exactly what the
176
- * narrowing rule below exists to prevent.
177
- */
178
70
  export function usageVerifiedMaxAgeMs(snapshot) {
179
- // D8: a row that arrived via sync from the account's own poller is trusted
180
- // for the sync cadence. A locally captured row (poll / statusline / unset)
181
- // keeps the 5-minute bar — the poller is on this box and can refresh it.
182
71
  return snapshot?.freshness?.source === 'sync' ? USAGE_SYNC_TRUST_MS : USAGE_DECISION_MAX_AGE_MS;
183
72
  }
184
73
  export function isUsageVerified(candidate, nowMs = Date.now()) {
@@ -188,37 +77,11 @@ export function isUsageVerified(candidate, nowMs = Date.now()) {
188
77
  return false;
189
78
  return nowMs - capturedAt.getTime() <= usageVerifiedMaxAgeMs(snapshot);
190
79
  }
191
- /**
192
- * Whether this candidate carries a GENUINELY-STALE usage number: a snapshot with
193
- * windows whose capture time is older than {@link USAGE_STALE_REFUSAL_MAX_AGE_MS}.
194
- *
195
- * This is the misleading case the initial route must refuse — the number reads
196
- * "48% used" with the same confidence whether captured a minute or three days
197
- * ago, and a box whose refresh is failing stays wrong indefinitely. Two things
198
- * make it NARROWER than "not verified":
199
- * 1. It uses the wider REFUSAL bar, not the 5-min weighting bar. A merely
200
- * budget-paced idle account (10–30 min old) is not-verified — so it weights
201
- * at the floor, conservatively — but it is NOT "stale" and must not, on its
202
- * own, drive the whole provider to a NO_VERIFIED_USAGE refusal. Only a
203
- * genuinely broken refresh (hours old) trips this.
204
- * 2. A BLIND candidate with no snapshot (or a plan-only meterless one with no
205
- * windows) carries no number to be misled by — a worker box whose usage
206
- * endpoint 403s (RUSH-2392), or a meterless Grok login — so it is not
207
- * "stale", and an entirely-blind pool still draws a pick (PHNX-3392) rather
208
- * than fail loud with NO_VERIFIED_USAGE.
209
- */
210
80
  export function hasStaleUsage(candidate, nowMs = Date.now()) {
211
81
  const snapshot = candidate.usageSnapshot;
212
82
  const capturedAt = snapshot?.capturedAt;
213
83
  if (!capturedAt || !snapshot?.windows.length)
214
84
  return false;
215
- // A row that arrived via sync (D1, PHNX-4116) cannot be refreshed on THIS box —
216
- // the account's poller lives on the headed device that published it, not here.
217
- // Its age is shown, never used to refuse: a blind synced pool takes a
218
- // floor-weight pick (capacityWeight → UNVERIFIED_WEIGHT) and
219
- // rotationFailoverChain handles a real 429. Only a locally-captured reading a
220
- // broken poller left hours old is genuinely "stale" for a refusal. See the
221
- // GWT-E5d amendment.
222
85
  if (snapshot.freshness?.source === 'sync')
223
86
  return false;
224
87
  return nowMs - capturedAt.getTime() > USAGE_STALE_REFUSAL_MAX_AGE_MS;
@@ -226,53 +89,19 @@ export function hasStaleUsage(candidate, nowMs = Date.now()) {
226
89
  function hasUsageAvailable(candidate, now = Date.now()) {
227
90
  const snapshot = candidate.usageSnapshot;
228
91
  if (snapshot) {
229
- // Eligibility mirrors the `agents view` throttle badge exactly
230
- // (deriveUsageStatusFromSnapshot): an account maxed on ANY blocking window —
231
- // including the 5-hour session window — cannot serve the next request, so it
232
- // must not be picked. Previously this checked only non-session windows
233
- // (getRoutingUsedPercent), so a session-maxed account with weekly headroom
234
- // stayed "eligible" and the router kept launching into it while `ag view`
235
- // showed it rate-limited. Capacity *weighting* still ranks eligible accounts
236
- // by weekly headroom; this gate only decides can-it-run-right-now.
237
92
  const status = deriveUsageStatusFromSnapshot(snapshot, now);
238
93
  if (status !== null)
239
94
  return status !== 'rate_limited';
240
95
  }
241
- // No live snapshot: fall back to the coarse cached status.
242
96
  if (candidate.usageStatus === 'out_of_credits' || candidate.usageStatus === 'rate_limited') {
243
97
  return false;
244
98
  }
245
99
  return true;
246
100
  }
247
- /**
248
- * Pure decision reusing the router's own eligibility gate (`hasUsageAvailable`
249
- * + canonical signed-in state, i.e. `isRotationEligible`), so a pre-flight warning can NEVER
250
- * disagree with what rotation would actually do. The `reason` combines the two
251
- * signals `hasUsageAvailable` reads: the live snapshot (session-inclusive
252
- * rate-limit) and the coarse cached `usageStatus` (out-of-credits, which a
253
- * snapshot never carries). When a live snapshot exists it wins over the cached
254
- * status — matching the gate — so a stale `out_of_credits` cache is not
255
- * reported while the account is actually serving requests.
256
- *
257
- * `model`, when supplied, additionally consults a per-(account, model)
258
- * refusal Claude can surface on ONE model family ("You've reached your Fable
259
- * limit…") while the account's other models and its global usage windows stay
260
- * healthy — a global rate_limited/out_of_credits marker would wrongly exclude
261
- * the whole account for an unrelated model. Keyed on the candidate's stable
262
- * native account id (never the org-shared usageKey) via
263
- * {@link candidateAccountKey}, so a model-only limit on one login can never
264
- * poison a sibling account that merely shares the same org usage bucket.
265
- * Omitting `model` (every existing caller) leaves generic account status
266
- * completely unaffected — the model check runs only when a caller opts in.
267
- */
268
101
  export function readinessFromCandidate(candidate, now = Date.now(), model) {
269
102
  if (!candidate.signedIn) {
270
103
  return { ready: false, reason: 'signed_out', email: candidate.email };
271
104
  }
272
- // A token the daemon's live probe saw rejected (401/403 -> `revoked`) will fail
273
- // auth at spawn no matter how much usage headroom it has. Exclude it BEFORE the
274
- // usage gate so rotation never routes into a doomed login. Fail-open: any other
275
- // (or null) verdict does not gate — see `RotateCandidate.authVerdict`.
276
105
  const authFresh = candidate.authCheckedAt == null
277
106
  || now - candidate.authCheckedAt <= AUTH_PROBE_MAX_AGE_MS;
278
107
  if (authFresh && candidate.authVerdict !== null && isDeadVerdict(candidate.authVerdict)) {
@@ -296,40 +125,12 @@ export function readinessFromCandidate(candidate, now = Date.now(), model) {
296
125
  const reason = !snapRateLimited && candidate.usageStatus === 'out_of_credits' ? 'out_of_credits' : 'rate_limited';
297
126
  return { ready: false, reason, email: candidate.email };
298
127
  }
299
- /**
300
- * Whether a human sitting at a terminal can clear this exclusion by launching
301
- * the agent and signing in. The two unhealthy classes are opposites, and the
302
- * zero-healthy callers MUST NOT treat them alike:
303
- *
304
- * - `signed_out` / `revoked` — recoverable. There is no credential (or the
305
- * server rejected it), and the harness's own TUI is the login surface, so
306
- * launching it is exactly the fix. Refusing to launch strands the user with
307
- * no way to authenticate through agents-cli at all (RUSH-2334).
308
- * - `rate_limited` / `out_of_credits` — NOT recoverable. The account is signed
309
- * in and throttled; launching it just hammers an exhausted account, which is
310
- * precisely the loop RUSH-2132's fail-loud guard exists to stop. Only a
311
- * window reset clears these.
312
- */
313
128
  export function isSignInRecoverable(readiness) {
314
129
  return !readiness.ready && (readiness.reason === 'signed_out' || readiness.reason === 'revoked');
315
130
  }
316
- /**
317
- * The subset of an `exhausted` set whose exclusion a sign-in would clear, so an
318
- * interactive caller can offer the login instead of dead-ending. Empty means
319
- * every account is throttled — nothing a human can fix right now, so the caller
320
- * keeps failing loud.
321
- */
322
131
  export function signInRecoverableCandidates(candidates) {
323
132
  return candidates.filter((c) => isSignInRecoverable(readinessFromCandidate(c)));
324
133
  }
325
- /**
326
- * Readiness for a specific installed (agent, version). Returns `{ ready: true }`
327
- * when the version isn't among the collected candidates — absence is the
328
- * caller's `isVersionInstalled` concern, not ours; don't cry wolf. Only
329
- * meaningful for a version-pinned target: a bare target rotates to a healthy
330
- * account on its own, and a profile injects its own auth (a different account
331
- * than the version home carries), so neither is checkable here.
332
- */
333
134
  export async function checkRunAccountReadiness(agent, version) {
334
135
  const candidates = await collectRunCandidates(agent);
335
136
  const candidate = candidates.find((c) => c.version === version);
@@ -361,13 +162,6 @@ function compareCandidates(a, b) {
361
162
  return ta - tb;
362
163
  return Math.random() - 0.5;
363
164
  }
364
- /**
365
- * Identity a candidate dedups on. Quota is tracked per-org, so two versions
366
- * that share an org are the same rate-limit bucket and must collapse — but two
367
- * orgs under the same email (e.g. Enterprise + Personal on one Google identity)
368
- * are genuinely separate buckets and must stay distinct. Prefer the org usage
369
- * key; fall back to email only when no usage identity is available.
370
- */
371
165
  export function candidateAccountKey(c) {
372
166
  if (c.nativeAccountId)
373
167
  return `native:${c.nativeAccountId}`;
@@ -389,35 +183,6 @@ function dedupeAndSortCandidates(candidates) {
389
183
  }
390
184
  return [...byIdentity.values()].sort(compareCandidates);
391
185
  }
392
- /**
393
- * Pick a healthy candidate using weighted random by remaining capacity.
394
- *
395
- * Each healthy candidate gets weight = max(1, 100 - usedPercent) where
396
- * usedPercent is the highest-utilized non-session window (week / sonnet_week
397
- * for Claude). An account at 10% used gets weight 90; one at 90% used gets
398
- * weight 10 — so the fresher account is 9× more likely to be picked. Over N
399
- * calls, traffic distributes across healthy accounts proportional to their
400
- * headroom, with no stampede on the lowest-usage one. Stateless — parallel
401
- * callers naturally fan out via the random roll.
402
- *
403
- * Eligibility: signed in according to AccountInfo and not currently
404
- * rate-limited — no blocking window (session OR weekly) at 100%, matching the
405
- * `agents view` badge; or the local cached status is usable when no live
406
- * snapshot exists. Note the split: eligibility considers the session window
407
- * (a session-maxed account can't run now), but the capacity *weight* above is
408
- * driven by weekly headroom so a brief session spike doesn't distort routing.
409
- *
410
- * Dedupe: when multiple versions share a usage/account identity, collapse to
411
- * one candidate (the least-recently-active version). The org-scoped usage key
412
- * wins over email so same-email personal and Team accounts remain distinct.
413
- *
414
- * Returns null if no candidate is eligible — callers fall back to the pinned
415
- * version so behavior stays predictable.
416
- *
417
- * `model`, when supplied, additionally excludes an account carrying a live
418
- * per-model refusal for that exact model (see {@link readinessFromCandidate}).
419
- * Omitted (every pre-existing caller), eligibility is unchanged.
420
- */
421
186
  export function pickBalancedCandidate(candidates, nowMs = Date.now(), model) {
422
187
  const healthy = [];
423
188
  const excluded = [];
@@ -439,57 +204,11 @@ export function pickBalancedCandidate(candidates, nowMs = Date.now(), model) {
439
204
  const { picked, usageUnverified, noVerifiedUsage } = preferVerified(sorted, nowMs, (from) => weightedRandomByCapacity(from, nowMs), 'representative');
440
205
  return { picked, healthy: sorted, excluded, usageUnverified, noVerifiedUsage };
441
206
  }
442
- /**
443
- * Choose from the VERIFIED candidates when they are a representative share of
444
- * the pool (at least half), else from the whole pool.
445
- *
446
- * An eligible account whose usage we could not confirm is a guess, not a green
447
- * light: the snapshot reads "48% used" with equal confidence whether it was
448
- * captured a minute or three days ago, and a box whose refresh is failing stays
449
- * wrong indefinitely. Confirmed headroom therefore beats apparent headroom, even
450
- * when the unconfirmed number looks better.
451
- *
452
- * But narrowing to a verified MINORITY inverts the safety. When the usage
453
- * endpoint 429-throttles a machine, each refresh cycle confirms roughly one
454
- * account before backing off — so "verified" is a singleton, `choose` runs over
455
- * a one-element list, and every launch lands on the same account. Launching
456
- * into it refreshes that account's snapshot again, so it stays the only
457
- * verified candidate while the rest are never picked and never probed: the
458
- * rotation degrades to a fixed pin that burns one account to its weekly cap
459
- * while its siblings idle (observed 2026-08-20 across yosemite-s0/s1 — the
460
- * "same version every time under --strategy balanced" incident).
461
- *
462
- * The two failure modes belong to different CHOOSERS, so `narrowing` is picked
463
- * per caller: `'representative'` (the weighted-random balanced path) narrows to
464
- * verified only when they cover at least half the pool — below that the whole
465
- * pool competes, fresh candidates keep their confirmed weights, stale/unknown
466
- * ones get the full default weight `capacityWeight` assigns to "no signal", and
467
- * the random roll spreads the load. `'any-verified'` (deterministic `from[0]`
468
- * choosers: `--strategy available`, run-auto harness classification) keeps the
469
- * original rule — narrow whenever ANY verified candidate exists — because a
470
- * deterministic pick over the whole pool would hand the front slot back to an
471
- * unconfirmed "48% used" over an accurate "90% used", the exact yosemite-s1
472
- * inversion above, and a deterministic chooser cannot spread load anyway, so
473
- * the singleton-collapse concern does not apply to it.
474
- *
475
- * `healthy` deliberately keeps every eligible candidate rather than just the
476
- * verified ones. Declining to *pick* an account on stale data and declining to
477
- * *fail over to* it after the primary has already hit a 429 are different risks:
478
- * by then the alternative is not launching at all, so the failover chain
479
- * (rotationFailoverChain, which reads `healthy`) keeps its full safety net —
480
- * exactly on the machines this guard is protecting.
481
- */
482
207
  function preferVerified(pool, nowMs, choose, narrowing = 'any-verified') {
483
208
  const verified = pool.filter((c) => isUsageVerified(c, nowMs));
484
209
  const narrow = verified.length > 0 &&
485
210
  (narrowing === 'any-verified' || verified.length >= Math.ceil(pool.length / 2));
486
211
  const picked = choose(narrow ? verified : pool);
487
- // Entirely-stale = zero verified AND at least one stale-but-present number. A
488
- // BLIND pool (no snapshots at all) does NOT trip this — it carries no
489
- // misleading figure, so it still draws a pick (see {@link hasStaleUsage}). The
490
- // chosen `picked` is still returned so `healthy` (which includes it) stays
491
- // whole for bounded post-rejection failover; the INITIAL selection acts on
492
- // this flag instead of launching that stale pick.
493
212
  const noVerifiedUsage = verified.length === 0 && pool.some((c) => hasStaleUsage(c, nowMs));
494
213
  return {
495
214
  picked,
@@ -497,26 +216,9 @@ function preferVerified(pool, nowMs, choose, narrowing = 'any-verified') {
497
216
  noVerifiedUsage,
498
217
  };
499
218
  }
500
- // capacityWeight + PROJECTION_HORIZON_MIN moved to ./capacity.js (a pure,
501
- // dependency-free module the account pool can import without this file's heavy
502
- // graph). Imported at the top for internal use; re-exported here so existing
503
- // importers keep resolving them from rotate.
504
219
  export { PROJECTION_HORIZON_MIN, capacityWeight };
505
- /**
506
- * Pick one candidate from `sorted` using weights proportional to remaining
507
- * routing capacity (see {@link capacityWeight}). Floor each weight at 1 so a
508
- * near-exhausted-but-still-eligible candidate can still be picked occasionally.
509
- */
510
220
  function weightedRandomByCapacity(sorted, nowMs = Date.now()) {
511
- const weights = sorted.map((c) => capacityWeight(
512
- // An unverified (stale or absent) snapshot carries no trustworthy number,
513
- // so it weights as UNVERIFIED_WEIGHT (the floor) instead of by its frozen
514
- // usedPercent. Otherwise a day-old "45% used" competes as if it were live
515
- // headroom and can win the draw over a verified-healthy account — which is
516
- // exactly how balanced launched into an account already at its weekly cap
517
- // on a worker whose usage refresh had stalled (PHNX-3479). A verified
518
- // snapshot keeps its real remaining-headroom weight.
519
- isUsageVerified(c, nowMs) ? getRoutingUsedPercent(c.usageSnapshot) : null, c.usageMinutesToLimit));
221
+ const weights = sorted.map((c) => capacityWeight(isUsageVerified(c, nowMs) ? getRoutingUsedPercent(c.usageSnapshot) : null, c.usageMinutesToLimit));
520
222
  const total = weights.reduce((sum, w) => sum + w, 0);
521
223
  if (total <= 0)
522
224
  return sorted[0];
@@ -528,11 +230,6 @@ function weightedRandomByCapacity(sorted, nowMs = Date.now()) {
528
230
  }
529
231
  return sorted[sorted.length - 1];
530
232
  }
531
- /**
532
- * Pick an available candidate. Prefers the configured pinned version when that
533
- * version has usage available; otherwise routes to the candidate with the most
534
- * usage headroom.
535
- */
536
233
  export function pickAvailableCandidate(candidates, preferredVersion, nowMs = Date.now(), model) {
537
234
  const healthy = [];
538
235
  const excluded = [];
@@ -551,34 +248,12 @@ export function pickAvailableCandidate(candidates, preferredVersion, nowMs = Dat
551
248
  if (!deduped.has(c))
552
249
  excluded.push(c);
553
250
  }
554
- // `available` sorts by apparent headroom and takes the front of the list, so an
555
- // unconfirmed "48% used" outranks an accurate "90% used" — the same inversion
556
- // that put a launch on an exhausted account under `balanced`. It routes on the
557
- // same cache, so it gets the same rule: confirmed headroom first.
558
251
  const { picked: bestVerified, usageUnverified, noVerifiedUsage } = preferVerified(sorted, nowMs, (from) => from[0]);
559
- // An explicit version preference is an instruction, not a ranking signal, so it
560
- // still wins — but only while that version is actually eligible.
561
252
  const preferred = preferredVersion
562
253
  ? sorted.find((candidate) => candidate.version === preferredVersion)
563
254
  : undefined;
564
- // `noVerifiedUsage` rides along even when a `preferred` default resolves: an
565
- // all-stale pool can only make `preferred` a stale pick too (a verified
566
- // preferred would make verified.length > 0), and auto-selecting the default
567
- // pin on a stale number is the very thing PHNX-2526 refuses. The initial
568
- // route (resolveRunVersion) acts on the flag; the failover chain keeps
569
- // `healthy` regardless.
570
255
  return { picked: preferred ?? bestVerified, healthy: sorted, excluded, usageUnverified, noVerifiedUsage };
571
256
  }
572
- /**
573
- * Classify every harness's candidates into healthy (with a representative
574
- * best account) vs excluded (with per-reason counts). Pure — the pick and the
575
- * zero-healthy error message both read this, so they can never disagree.
576
- *
577
- * Health uses the exact account-layer gate (`isRotationEligible`: signed in
578
- * AND not maxed on ANY blocking window, weekly included). The representative
579
- * best account honors `preferVerified`: confirmed headroom beats apparent
580
- * headroom, the same freshness rule the account layer routes on.
581
- */
582
257
  export function classifyHarnessCandidates(byHarness, nowMs = Date.now()) {
583
258
  const summaries = [];
584
259
  for (const [agent, candidates] of byHarness) {
@@ -613,17 +288,6 @@ export function classifyHarnessCandidates(byHarness, nowMs = Date.now()) {
613
288
  }
614
289
  return summaries;
615
290
  }
616
- /**
617
- * Pick a harness for `agents run auto` using weighted random by best-account
618
- * headroom (RUSH-2132).
619
- *
620
- * A harness's capacity is `100 − min(routingUsed% across its healthy accounts)`
621
- * — its best account's headroom. The pick reuses `weightedRandomByCapacity` on
622
- * the representative best accounts, so host/harness/account layers all share
623
- * one sampling behavior. Harnesses with zero healthy accounts are EXCLUDED,
624
- * not down-weighted. Returns null when no harness has any healthy account;
625
- * call `classifyHarnessCandidates` for the exclusion detail to message with.
626
- */
627
291
  export function pickHarnessWeighted(byHarness, nowMs = Date.now()) {
628
292
  const summaries = classifyHarnessCandidates(byHarness, nowMs);
629
293
  const healthy = summaries.filter((s) => s.best !== null);
@@ -634,7 +298,6 @@ export function pickHarnessWeighted(byHarness, nowMs = Date.now()) {
634
298
  const picked = healthy.find((s) => s.best === pickedBest);
635
299
  return { picked, healthy, excluded };
636
300
  }
637
- /** One-line banner naming the auto-picked harness and why (headroom). */
638
301
  export function formatHarnessPickBanner(result) {
639
302
  const { picked, healthy, excluded } = result;
640
303
  const headroom = picked.bestUsedPercent === null
@@ -643,11 +306,6 @@ export function formatHarnessPickBanner(result) {
643
306
  const ratio = `${healthy.length} of ${healthy.length + excluded.length} harnesses healthy`;
644
307
  return `[agents] auto picked ${picked.agent} (${headroom}, ${ratio})`;
645
308
  }
646
- /**
647
- * The earliest FUTURE window reset across these candidates' usage snapshots —
648
- * when the first exhausted account becomes usable again. Null when no snapshot
649
- * carries a reset timestamp.
650
- */
651
309
  export function earliestResetAcross(candidates, nowMs = Date.now()) {
652
310
  let earliest = null;
653
311
  for (const c of candidates) {
@@ -660,19 +318,9 @@ export function earliestResetAcross(candidates, nowMs = Date.now()) {
660
318
  }
661
319
  return earliest === null ? null : new Date(earliest);
662
320
  }
663
- /**
664
- * The `resets <summary>` fragment both zero-healthy errors share. ISO 8601 so
665
- * a watchdog can parse the cooldown straight off the line; `unknown` when no
666
- * snapshot carries a reset (a parser falls back to its default cooldown).
667
- */
668
321
  function formatResetSummary(reset) {
669
322
  return reset ? reset.toISOString() : 'unknown (no reset timestamps in any snapshot)';
670
323
  }
671
- /**
672
- * The zero-healthy-account error (RUSH-2132). EXACT contract — the Factory
673
- * watchdog tail-detects this text: it must contain the literal `no healthy`
674
- * and `resets <time>` (parsed for the rotate cooldown). Do not deviate.
675
- */
676
324
  export function formatNoHealthyAccountError(agent, strategy, excluded, nowMs = Date.now()) {
677
325
  const excludedStr = excluded.length === 0
678
326
  ? 'no installed versions'
@@ -684,33 +332,17 @@ export function formatNoHealthyAccountError(agent, strategy, excluded, nowMs = D
684
332
  const resetSummary = formatResetSummary(earliestResetAcross(excluded, nowMs));
685
333
  return `agents: no healthy ${agent} account under strategy '${strategy}' — excluded: ${excludedStr}; earliest window resets ${resetSummary}. Use --strategy pinned to force the default.`;
686
334
  }
687
- /**
688
- * How old this candidate's usage snapshot is, in whole minutes, or null when it
689
- * carries no dated snapshot (a blind account). Used only to explain WHY a route
690
- * was refused as unverified — never to route on.
691
- */
692
335
  function snapshotAgeMinutes(candidate, nowMs) {
693
336
  const capturedAt = candidate.usageSnapshot?.capturedAt;
694
337
  if (!capturedAt || !candidate.usageSnapshot?.windows.length)
695
338
  return null;
696
339
  return Math.max(0, Math.round((nowMs - capturedAt.getTime()) / 60_000));
697
340
  }
698
- /**
699
- * The all-stale-usage error (PHNX-2526) an UNATTENDED `balanced`/`available`
700
- * run fails loud with when no account's usage is fresh enough to route on. EXACT
701
- * contract — it MUST contain the literal `NO_VERIFIED_USAGE` so a machine caller
702
- * (and the Factory watchdog) can tail-detect it distinctly from the
703
- * `no healthy` throttle error, which is a different condition (throttled vs
704
- * merely stale). Names each candidate with how stale its snapshot is, so the
705
- * operator can see the failing-refresh box rather than guess.
706
- */
707
341
  export function formatNoVerifiedUsageError(agent, strategy, candidates, nowMs = Date.now()) {
708
342
  const detail = candidates.length === 0
709
343
  ? 'no signed-in accounts'
710
344
  : candidates.map((c) => {
711
345
  const age = snapshotAgeMinutes(c, nowMs);
712
- // A synced row's age never drives a refusal (see hasStaleUsage), so name
713
- // it as synced rather than letting the operator read it as the culprit.
714
346
  const synced = c.usageSnapshot?.freshness?.source === 'sync';
715
347
  const staleness = age === null
716
348
  ? 'no usage snapshot'
@@ -720,10 +352,6 @@ export function formatNoVerifiedUsageError(agent, strategy, candidates, nowMs =
720
352
  const maxAgeMin = Math.round(USAGE_STALE_REFUSAL_MAX_AGE_MS / 60_000);
721
353
  return `agents: NO_VERIFIED_USAGE — no signed-in ${agent} account has usage newer than ${maxAgeMin}m under strategy '${strategy}', so routing refuses to guess on a stale number: ${detail}. Refresh usage (agents view ${agent}) or pin the default with --strategy pinned.`;
722
354
  }
723
- /**
724
- * The zero-healthy-harness error for `agents run auto` — names each harness's
725
- * exclusion reason plus the earliest reset across all snapshots.
726
- */
727
355
  export function formatNoHealthyHarnessError(summaries, nowMs = Date.now()) {
728
356
  const excludedStr = summaries.length === 0
729
357
  ? 'no installed harnesses'
@@ -737,10 +365,6 @@ export function formatNoHealthyHarnessError(summaries, nowMs = Date.now()) {
737
365
  }
738
366
  export async function collectRunCandidates(agent) {
739
367
  const versions = listInstalledVersions(agent);
740
- // Read the local auth-health probe cache once (cache-only, no network — the
741
- // daemon is the sole writer). A `revoked` verdict for a (host, agent, version)
742
- // excludes that account from the pick; a missing row is fail-open. Keyed by the
743
- // LOCAL host — routing decides which local version to launch.
744
368
  const authCache = readAuthHealthCache();
745
369
  const localHost = machineId();
746
370
  const meta = readMeta();
@@ -794,23 +418,11 @@ export async function collectRunCandidates(agent) {
794
418
  slotDirs.add(fs.realpathSync(row.home));
795
419
  }
796
420
  }
797
- // Legacy per-account installations (`acct-*` homes) until T7 migrates them.
798
421
  const versionRows = await Promise.all(versions.map(async (version) => {
799
422
  const home = getVersionHomePath(agent, version);
800
423
  if (fs.existsSync(home) && slotDirs.has(fs.realpathSync(home)))
801
424
  return null;
802
425
  const info = await getAccountInfo(agent, home);
803
- // We used to additionally call isClaudeAuthValid(home), which reads
804
- // "Claude Code-credentials-<hash>" from the system keychain. That item is
805
- // written by Claude Code itself with its own process in the ACL, so our
806
- // helper triggers a macOS keychain-authorization sheet on every probe —
807
- // one per installed version, every time `agents run` cold-starts. If
808
- // claude's stored token has actually expired, the spawned agent detects
809
- // it at its own startup and re-auths; that's the correct UX.
810
- //
811
- // Gate signedIn on a real per-version credential when we know where it
812
- // lives — see isLaunchableSignedIn. Do not reuse the active-home fallback
813
- // identity for routing, or empty version homes look healthy and die at spawn.
814
426
  const launchable = isLaunchableSignedIn(info.signedIn, credentialPresence(agent, home));
815
427
  const authHealth = authCache[authCacheKey(localHost, agent, version)];
816
428
  const authVerdict = authHealth?.verdict ?? null;
@@ -831,16 +443,6 @@ export async function collectRunCandidates(agent) {
831
443
  };
832
444
  }));
833
445
  const rows = [...slotRows, ...versionRows.filter((row) => row !== null)];
834
- // These candidates feed a routing decision on the `agents run` hot path, so
835
- // this read is CACHE-ONLY (`readOnly`): it never blocks on a live provider
836
- // fetch. A snapshot older than USAGE_DECISION_MAX_AGE_MS is not trusted for
837
- // the pick — but the guard that enforces that is `isUsageVerified` below, not
838
- // a blocking refresh here. Keeping the cache fresh is the daemon's job
839
- // (`runUsageRefresh`, adaptive + rate-capped, sole-writer per local account),
840
- // so a cold `agents run` reads the last daemon-written snapshot instead of
841
- // stalling on N parallel HTTP round trips (the measured cold-start stall this
842
- // removes). A stale-or-absent snapshot routes as unverified, exactly as a
843
- // failed live read did before.
844
446
  const { usageByKey } = await getUsageInfoByIdentity(rows.map(({ home, info, version }) => ({
845
447
  agentId: agent,
846
448
  home,
@@ -850,9 +452,6 @@ export async function collectRunCandidates(agent) {
850
452
  return rows.map(({ home: _home, info, ...candidate }) => {
851
453
  const usageKey = getUsageLookupKey(info);
852
454
  const usage = usageKey ? usageByKey.get(usageKey) : undefined;
853
- // Projected headroom is a separate cache-only read (also off the network) —
854
- // the daemon publishes minutesToLimit; a cold cache yields null and routing
855
- // falls back to snapshot-only weighting.
856
455
  const headroom = usageKey ? readAccountHeadroom(usageKey) : null;
857
456
  return {
858
457
  ...candidate,
@@ -863,12 +462,6 @@ export async function collectRunCandidates(agent) {
863
462
  };
864
463
  });
865
464
  }
866
- /**
867
- * Collect run candidates for every harness with ≥1 installed version — the
868
- * probe `agents run auto` routes on (the same per-harness account probe
869
- * `agents view` aggregates). Harnesses with nothing installed are absent from
870
- * the map: not a candidate at all, rather than an excluded one.
871
- */
872
465
  export async function collectHarnessCandidates(agentIds = ALL_AGENT_IDS) {
873
466
  const entries = await Promise.all(agentIds.map(async (agent) => {
874
467
  if (listInstalledVersions(agent).length === 0)
@@ -882,13 +475,6 @@ export async function collectHarnessCandidates(agentIds = ALL_AGENT_IDS) {
882
475
  }
883
476
  return byHarness;
884
477
  }
885
- /**
886
- * Resolve an account identity to the installed version slot that holds it, over
887
- * an already-collected candidate list. Pure — no I/O — so it is unit-tested
888
- * directly. Matches, case-insensitively, against a candidate's login `email`
889
- * (the usual form) or its `accountKey`, and only ever returns a signed-in slot.
890
- * Returns null when nothing matches, so the caller can fall back and warn.
891
- */
892
478
  export function matchAccountCandidate(candidates, account, preferredLabel) {
893
479
  const needle = account.trim().toLowerCase();
894
480
  if (!needle)
@@ -904,16 +490,6 @@ export function matchAccountCandidate(candidates, account, preferredLabel) {
904
490
  export function matchAccountVersion(candidates, account, preferredLabel) {
905
491
  return matchAccountCandidate(candidates, account, preferredLabel)?.version ?? null;
906
492
  }
907
- /**
908
- * Resolve a routine's `account:` pin (login email, account key, or native
909
- * account name) to the candidate currently holding that account. Thin I/O
910
- * wrapper over {@link collectRunCandidates} + {@link matchAccountCandidate};
911
- * returns null when no signed-in candidate matches. Pinning a routine to a
912
- * distinct account is the durable cure for the shared-single-use-refresh-token
913
- * revocation storm (RUSH-1957): the pinned run never rotates and never lands
914
- * on another routine's credential. Post-T5 the candidate's `nativeAccount`
915
- * (not just `version`) is what disambiguates two slots on one managed install.
916
- */
917
493
  export async function resolveAccountCandidate(agent, account, preferredLabel) {
918
494
  const candidates = await collectRunCandidates(agent);
919
495
  return matchAccountCandidate(candidates, account, preferredLabel);
@@ -921,36 +497,16 @@ export async function resolveAccountCandidate(agent, account, preferredLabel) {
921
497
  export async function resolveAccountVersion(agent, account, preferredLabel) {
922
498
  return (await resolveAccountCandidate(agent, account, preferredLabel))?.version ?? null;
923
499
  }
924
- /**
925
- * Pick a healthy version for `agent` using weighted random by remaining
926
- * capacity. See `pickBalancedCandidate` for algorithm details.
927
- *
928
- * No external state — health and capacity are both read off per-version
929
- * AccountInfo (same data `agents view` surfaces). The weighted random roll
930
- * keeps parallel callers fanned out without rotation files or locks.
931
- *
932
- * Returns null if no installed version is eligible. Callers fall back to the
933
- * global default so behavior stays predictable — we never refuse to run.
934
- */
935
500
  export async function selectBalancedVersion(agent) {
936
501
  return pickBalancedCandidate(await collectRunCandidates(agent));
937
502
  }
938
- /**
939
- * Record a rotation pick so parallel callers see it as recently-used.
940
- * Writes a stamp file per agent — lightweight, no locking needed since
941
- * a torn write just means the next reader sees a stale timestamp (harmless).
942
- */
943
503
  function recordRotationPick(agent, version) {
944
504
  const stampPath = path.join(getRotateDir(), `stamp-${agent}.json`);
945
505
  try {
946
506
  fs.writeFileSync(stampPath, JSON.stringify({ version, ts: Date.now() }), 'utf-8');
947
507
  }
948
- catch { /* best effort — doesn't block the run */ }
508
+ catch { }
949
509
  }
950
- /**
951
- * Read the most recent rotation pick for an agent. Returns null if no stamp
952
- * or stamp is older than 60 seconds (stale).
953
- */
954
510
  function readRotationStamp(agent) {
955
511
  const stampPath = path.join(getRotateDir(), `stamp-${agent}.json`);
956
512
  try {
@@ -958,35 +514,10 @@ function readRotationStamp(agent) {
958
514
  if (Date.now() - raw.ts < 60_000)
959
515
  return raw.version;
960
516
  }
961
- catch { /* missing or corrupt — treat as no stamp */ }
517
+ catch { }
962
518
  return null;
963
519
  }
964
- /** Cap on candidates serialized into a rotation decision event — a pathological
965
- * backstop on the log line; a real fleet is ~19 accounts, well under it. The
966
- * candidates are emitted as a keyed OBJECT (not an array) so the event sink's
967
- * generic `sanitizeNested` does not truncate them to its 10-element array cap
968
- * (feed/events.ts) — an object is recursed uncapped, so the whole pool up to
969
- * this bound survives. */
970
520
  const ROTATION_EVENT_CANDIDATE_CAP = 32;
971
- /**
972
- * Compact, queryable descriptor of ONE candidate exactly as the router saw it,
973
- * for the `rotation.resolved`/`rotation.unresolved` event. These are the fields
974
- * that disambiguate WHY a route landed on a bad account, so a post-mortem reads
975
- * them from `agents events` instead of guessing:
976
- *
977
- * - `usageKey` is the per-org quota key — the ONLY identity that joins the same
978
- * account across devices (version numbers are device-local and meaningless
979
- * across the fleet).
980
- * - `tier` is the freshness class the weighting actually used: `verified`
981
- * (fresh windowed → routed at real headroom), `stale` (windowed but past the
982
- * {@link USAGE_DECISION_MAX_AGE_MS} decision window → floored weight), `blind`
983
- * (no snapshot at all — a worker whose usage endpoint 403s, or a never-synced
984
- * network:false harness → still drawn at floor weight).
985
- * - `source`/`ageMs`/`capturedAt` expose staleness and provenance: a `last_seen`
986
- * snapshot showing `tier: verified` with a large `ageMs` is the cross-host
987
- * clock-skew failure (capturedAt is stamped by the reading host's clock, this
988
- * `ageMs` by the routing host's — they disagree under skew).
989
- */
990
521
  function describeRotationCandidate(c, nowMs) {
991
522
  const snap = c.usageSnapshot;
992
523
  const capturedAtMs = snap?.capturedAt ? snap.capturedAt.getTime() : null;
@@ -994,20 +525,11 @@ function describeRotationCandidate(c, nowMs) {
994
525
  const readiness = readinessFromCandidate(c);
995
526
  return {
996
527
  usageKey: c.usageKey,
997
- // A RUSH-3182 provider/setup-token account carries a null usageKey and
998
- // shares its `version` with the native login and every sibling provider
999
- // account, so neither is a unique identity here. `accountKey` is the pool's
1000
- // own dedup boundary (foldRegistryCandidates), and `providerAccount` names
1001
- // the injected account — together they keep same-version rows distinct.
1002
528
  accountKey: c.accountKey,
1003
529
  providerAccount: c.providerAccount ?? null,
1004
530
  email: c.email,
1005
531
  version: c.version,
1006
532
  signedIn: c.signedIn,
1007
- // NOT `authVerdict`: the event sink's generic sanitizer redacts any payload
1008
- // key matching /auth/i to "[REDACTED]" (feed/events.ts SENSITIVE_PAYLOAD_KEY),
1009
- // which would silently blank this field on every row. `credentialVerdict`
1010
- // carries the same value ('revoked'/null/…) past the redaction.
1011
533
  credentialVerdict: c.authVerdict,
1012
534
  usageStatus: c.usageStatus,
1013
535
  tier,
@@ -1023,15 +545,6 @@ function describeRotationCandidate(c, nowMs) {
1023
545
  excludedReason: readiness.ready ? null : readiness.reason,
1024
546
  };
1025
547
  }
1026
- /**
1027
- * Build the enriched `rotation.resolved`/`rotation.unresolved` event payload:
1028
- * the full candidate pool as the router saw it, the pick and WHY, and a
1029
- * freshness tally. Replaces the old `{ version, healthy: <n>, excluded: <n> }`
1030
- * shape, which recorded only counts and a device-local version and so could not
1031
- * tell a blind-pool draw from a skewed-verified pick from a refused-stale route
1032
- * — the exact ambiguity that keeps a bad pick undebuggable from the log. All
1033
- * candidates share ONE `nowMs` so their `tier`/`ageMs` are mutually consistent.
1034
- */
1035
548
  export function buildRotationDecisionEvent(rotation, agent, strategy) {
1036
549
  const nowMs = Date.now();
1037
550
  const tally = { verified: 0, stale: 0, blind: 0 };
@@ -1044,12 +557,6 @@ export function buildRotationDecisionEvent(rotation, agent, strategy) {
1044
557
  : hasStaleUsage(rotation.picked, nowMs)
1045
558
  ? 'stale'
1046
559
  : 'blind';
1047
- // WHY the pick: a verified-weighted draw is the healthy path; an
1048
- // `unverified-*-draw` names the fallback the router was forced into (a blind
1049
- // worker pool, or a stale-but-plausible number); `refused-no-verified` is the
1050
- // fail-closed exit where no version launches. Read straight from the result's
1051
- // own `usageUnverified`/`noVerifiedUsage`, so the event can never disagree
1052
- // with what rotation actually did.
1053
560
  const pickReason = rotation.noVerifiedUsage
1054
561
  ? 'refused-no-verified'
1055
562
  : rotation.usageUnverified
@@ -1071,58 +578,20 @@ export function buildRotationDecisionEvent(rotation, agent, strategy) {
1071
578
  healthy: rotation.healthy.length,
1072
579
  excluded: rotation.excluded.length,
1073
580
  freshness: tally,
1074
- // An OBJECT (not an array), so the sink cannot truncate it to 10 entries
1075
- // (see ROTATION_EVENT_CANDIDATE_CAP). Keyed by POOL INDEX, not by version or
1076
- // usageKey: a RUSH-3182 provider-account pool has multiple candidates
1077
- // sharing one `version` AND a null `usageKey` (foldRegistryCandidates), so
1078
- // either would collide and silently drop rows via Object.fromEntries. The
1079
- // index is structural only; each row's identity is its `accountKey` /
1080
- // `usageKey` / `providerAccount`. `candidatesTotal` reveals cap overflow.
1081
581
  candidates: Object.fromEntries(pool.slice(0, ROTATION_EVENT_CANDIDATE_CAP).map((c, i) => [String(i), describeRotationCandidate(c, nowMs)])),
1082
582
  candidatesTotal: pool.length,
1083
583
  };
1084
584
  }
1085
- /**
1086
- * Build AND emit a rotation decision event without ever letting an observability
1087
- * bug crash a live route. `emit` swallows its own IO errors, but the payload
1088
- * ARGUMENT is evaluated before `emit` is called, so a future null-deref inside
1089
- * `describeRotationCandidate` would otherwise propagate into `resolveRunVersion`
1090
- * and abort the launch. This wraps both build and emit, so the worst case is a
1091
- * lost log line, never a failed run.
1092
- */
1093
585
  function emitRotationDecision(event, rotation, agent, strategy, extra = {}) {
1094
586
  try {
1095
587
  emit(event, { ...buildRotationDecisionEvent(rotation, agent, strategy), ...extra });
1096
588
  }
1097
589
  catch {
1098
- /* observability must never break a route */
1099
590
  }
1100
591
  }
1101
- /**
1102
- * Resolve the version `agents run` should use when the caller did not pin
1103
- * one with `@version`. The caller supplies the effective strategy.
1104
- *
1105
- * `pinned` still prefers the workspace/global default, but it MUST NOT launch
1106
- * a logged-out (or revoked) default when the same device holds a signed-in
1107
- * version that can run — that was a silent 1-second death on fleet workers
1108
- * whose default home had no credential (PHNX-2685). A rate-limited pin is
1109
- * still honoured: `--strategy pinned` remains the escape hatch to force the
1110
- * default through a throttle. When the default is auth-blocked and nothing
1111
- * else is healthy, `exhausted` is set so the caller fails loud instead of
1112
- * spawning into a credential-less home.
1113
- */
1114
592
  export async function resolveRunVersion(agent, strategy, cwd = process.cwd(), collect = collectRunCandidates, model) {
1115
593
  const fallback = resolveVersion(agent, cwd);
1116
594
  const candidates = await collect(agent);
1117
- // Entirely stale usage (PHNX-2526): every eligible account carries a
1118
- // stale-but-present number and none is verified. Refuse to auto-pick on a
1119
- // number that looks plausible but is wrong. `rotation` is returned so its
1120
- // `healthy` set survives for BOUNDED post-rejection failover, but `version`
1121
- // is null so the caller diverts — interactive to the account picker,
1122
- // unattended to a loud NO_VERIFIED_USAGE exit. Shared across BOTH rotating
1123
- // paths (the pinned auth-blocked-pin fallback AND balanced/available), since
1124
- // both reuse `pickAvailableCandidate`/`pickBalancedCandidate` and neither may
1125
- // launch a stale pick.
1126
595
  const refuseStaleUsage = (rotation) => {
1127
596
  emitRotationDecision('rotation.unresolved', rotation, agent, strategy, {
1128
597
  reason: 'no_verified_usage',
@@ -1133,14 +602,8 @@ export async function resolveRunVersion(agent, strategy, cwd = process.cwd(), co
1133
602
  const pinnedCandidate = fallback
1134
603
  ? candidates.find((c) => c.version === fallback)
1135
604
  : undefined;
1136
- // Auth-blocked pin: the home cannot authenticate, so launching it is a
1137
- // guaranteed miss. Prefer a signed-in sibling on this device.
1138
605
  if (pinnedCandidate && isSignInRecoverable(readinessFromCandidate(pinnedCandidate))) {
1139
606
  const rotation = pickAvailableCandidate(candidates, fallback, undefined, model);
1140
- // The auth-blocked pin rotates to a sibling — an initial selection, so it
1141
- // gets the same verified-only gate as balanced/available. Without this, a
1142
- // revoked pin with only stale siblings launched one blind (the yosemite-s1
1143
- // trap through the pinned path — PR #3295 review).
1144
607
  if (rotation && rotation.noVerifiedUsage)
1145
608
  return refuseStaleUsage(rotation);
1146
609
  if (rotation) {
@@ -1161,10 +624,6 @@ export async function resolveRunVersion(agent, strategy, cwd = process.cwd(), co
1161
624
  if (rotation && rotation.noVerifiedUsage)
1162
625
  return refuseStaleUsage(rotation);
1163
626
  if (rotation) {
1164
- // `available` is sticky to the pinned default when healthy. Use the 60s
1165
- // anti-collision stamp to nudge parallel callers off the same version.
1166
- // `balanced` doesn't need this — its weighted random roll already
1167
- // distributes naturally across healthy accounts.
1168
627
  if (strategy === 'available') {
1169
628
  const recentPick = readRotationStamp(agent);
1170
629
  if (recentPick === rotation.picked.version && rotation.healthy.length > 1) {
@@ -1179,42 +638,14 @@ export async function resolveRunVersion(agent, strategy, cwd = process.cwd(), co
1179
638
  }
1180
639
  return { version: fallback, rotation: null, exhausted: candidates.length > 0 ? candidates : undefined };
1181
640
  }
1182
- /**
1183
- * Cap on the number of healthy accounts a single run will re-dispatch through
1184
- * after a mid-run rate limit. Bounds the synthesized chain so a machine signed
1185
- * into many accounts can't turn one 429 into an unbounded cascade of retries.
1186
- */
1187
641
  export const DEFAULT_ROTATION_FAILOVER_LIMIT = 3;
1188
- /**
1189
- * Synthesize a same-agent, cross-account fallback chain from a pre-flight
1190
- * rotation result (issue #348: mid-run rate-limit failover).
1191
- *
1192
- * The account rotation picks ONE version pre-spawn; today a 429 mid-run kills
1193
- * the run with no recovery. `runWithFallback` + `detectRateLimit` already
1194
- * re-dispatch to the NEXT chain entry on a rate limit and hand off the session
1195
- * via `/continue <id>` — but only for explicit `--fallback` chains. This turns
1196
- * the OTHER healthy rotation candidates (every account except the one already
1197
- * picked as the primary) into `FallbackEntry`s so that SAME machinery re-runs
1198
- * the task on the next healthy account of the same agent when the primary 429s.
1199
- *
1200
- * Each account is a distinct installed version (its own home/auth), so the
1201
- * entries are same-agent, different-version — exactly what runWithFallback
1202
- * spawns and what buildFallbackPrompt continues (claude→claude via `/continue`).
1203
- * Candidates are consumed in `rotation.healthy` order, which is sorted by
1204
- * remaining capacity (most headroom first, see compareCandidates), so failover
1205
- * prefers the freshest account.
1206
- *
1207
- * Returns `[]` when there is no rotation (pinned strategy) or the picked account
1208
- * is the only healthy one — so single-account users and non-rotation runs are
1209
- * completely unchanged.
1210
- */
1211
642
  export function rotationFailoverChain(rotation, pickedVersion, limit = DEFAULT_ROTATION_FAILOVER_LIMIT) {
1212
643
  if (!rotation || limit <= 0)
1213
644
  return [];
1214
645
  const chain = [];
1215
646
  for (const candidate of rotation.healthy) {
1216
647
  if (candidate.version === pickedVersion)
1217
- continue; // the primary account
648
+ continue;
1218
649
  chain.push({ agent: candidate.agent, version: candidate.version });
1219
650
  if (chain.length >= limit)
1220
651
  break;
@@ -1230,30 +661,6 @@ export function preflightHandoffEligible(ctx) {
1230
661
  !ctx.resume &&
1231
662
  !ctx.workflowScoped);
1232
663
  }
1233
- /**
1234
- * The permitted alternate harness to launch when EVERY account of the primary
1235
- * agent is already exhausted at PREFLIGHT (PHNX-3999 F19).
1236
- *
1237
- * `runWithFallback` only reaches a `--fallback` entry after the primary has
1238
- * actually RUN and hit a rate limit. When the primary's accounts are throttled
1239
- * before the run starts, version resolution reports `exhausted` and the run used
1240
- * to exit — so the alternate a user configured for exactly this case never fired.
1241
- * This resolves the first usable alternate from the same `--fallback` spec, and
1242
- * returns the remainder of the spec so the alternate becomes the primary and is
1243
- * not also listed as its own fallback.
1244
- *
1245
- * Deliberately NOT a second parser: an entry this cannot resolve exactly — a
1246
- * typo, an alias the canonical parse would fuzzy-match, the primary itself —
1247
- * makes the WHOLE spec yield `null`, so the run reaches the one canonical
1248
- * `--fallback` parse and fails (or corrects) there with the message it already
1249
- * has. `--fallback typoo,codex` must never silently launch codex while dropping
1250
- * `typoo`.
1251
- *
1252
- * Returns `null` when there is no spec, when any entry is not an exact agent id
1253
- * or names the primary, or when the primary is only sign-in-recoverable rather
1254
- * than throttled — a logged-out account is fixed by logging in, not by silently
1255
- * running a different harness.
1256
- */
1257
664
  export function preflightFallbackHandoff(spec, primary, exhausted) {
1258
665
  if (!spec)
1259
666
  return null;
@@ -1265,7 +672,6 @@ export function preflightFallbackHandoff(spec, primary, exhausted) {
1265
672
  if (entries.length === 0)
1266
673
  return null;
1267
674
  const parsed = entries.map((entry) => entry.split('@'));
1268
- // Every entry has to be exactly resolvable, or this defers entirely.
1269
675
  if (parsed.some(([name]) => !isAgentId(name) || name === primary))
1270
676
  return null;
1271
677
  const [name, version] = parsed[0];