@phnx-labs/agents-cli 1.22.119 → 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 +236 -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 +20 -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,12 +1,3 @@
1
- /**
2
- * `agents projects` — named, multi-repo projects and the progress
3
- * rollup. Definitions live in `~/.agents/projects/<name>.yaml` (see
4
- * `lib/projects.ts`); this registers the command tree over them.
5
- *
6
- * The headline is `status`: instead of the vague per-agent activity line, it
7
- * rolls every session up by project (matched on cwd) into one card — agents by
8
- * lifecycle state, plan completion, open PRs, and tickets in flight.
9
- */
10
1
  import chalk from 'chalk';
11
2
  import * as fs from 'fs';
12
3
  import * as path from 'path';
@@ -30,29 +21,24 @@ import { checkRepoSlug } from '../lib/project-doctor.js';
30
21
  import { formatFocusAreas, readFocusAreas } from '../lib/project-focus.js';
31
22
  import { formatVerdict, scheduleVerdict } from '../lib/project-schedule.js';
32
23
  import { buildLinearImportCandidates, validateImportOpts, } from '../lib/project-import.js';
33
- import { buildProjectPrs, mergeProjectPr, resolveTargetSlugs, MERGE_METHODS } from '../lib/github/project-prs.js';
24
+ import { approveProjectPr, buildProjectPrs, commentOnProjectPr, markProjectPrReady, mergeProjectPr, resolveTargetSlugs, setProjectPrAutoMerge, MERGE_METHODS, MERGED_WINDOW_DAYS, } from '../lib/github/project-prs.js';
34
25
  import { ghExec } from '../lib/github/pr-mergeable.js';
35
- /** Recursion guard: a peer answering a probe fan-out never re-fans-out itself. */
26
+ import { readCiFailure, rerunFailedJobs } from '../lib/github/ci-failure.js';
27
+ import { registerProjectTodoCommands } from './projects-todo.js';
28
+ function ciMark(state) {
29
+ if (state === 'SUCCESS')
30
+ return chalk.green('✓');
31
+ if (state === 'FAILURE' || state === 'ERROR')
32
+ return chalk.red('✗');
33
+ if (state === 'PENDING' || state === 'EXPECTED')
34
+ return chalk.yellow('●');
35
+ return ' ';
36
+ }
36
37
  const PROJECTS_NO_FANOUT_ENV = 'AGENTS_PROJECTS_LOCAL';
37
- /** Max peers named in the skipped note before the rest collapse to `+N`. */
38
38
  const SKIPPED_NAME_LIMIT = 4;
39
- /**
40
- * A path-shaped `agents projects view` argument — `.`, `..`, a `~`-prefixed
41
- * value, or anything containing a path separator — means "auto-detect the
42
- * project for this DIRECTORY", not "a project named literally this". A bare
43
- * token (no separators) stays a project name, exactly as before.
44
- */
45
39
  export function looksLikePath(token) {
46
40
  return token === '.' || token === '..' || token.startsWith('~') || token.includes('/');
47
41
  }
48
- /**
49
- * Best-effort cwd->project detection for `agents projects view <path>`. Delegates
50
- * to the shared {@link projectNameForCwd} (def-root containment, longest wins),
51
- * then reads the matched definition's Linear binding and root so ONE call yields
52
- * the name AND the Linear projectId. Fail-open: an all-null shape when nothing
53
- * contains the path — never throws, so a scripted caller stays unscoped rather
54
- * than crashing. This subsumes the removed `agents projects for-cwd`.
55
- */
56
42
  export function detectProjectForPath(cwd, defs) {
57
43
  const name = projectNameForCwd(cwd, defs);
58
44
  const def = name ? defs.find((d) => d.name === name) : undefined;
@@ -65,13 +51,6 @@ export function detectProjectForPath(cwd, defs) {
65
51
  root: def?.root ?? null,
66
52
  };
67
53
  }
68
- /**
69
- * One compact trailing note for peers that didn't answer the `--fleet`
70
- * fan-out — unreachable, running an agents-cli too old to carry `projects
71
- * probe`, or too slow to finish inside the 12s SSH budget. Mirrors
72
- * `formatUnreachableNote` (activity) with the probe-specific reasons; empty
73
- * string when everything answered.
74
- */
75
54
  export function formatFleetSkippedNote(skipped) {
76
55
  if (skipped.length === 0)
77
56
  return '';
@@ -81,14 +60,6 @@ export function formatFleetSkippedNote(skipped) {
81
60
  const noun = skipped.length === 1 ? 'device' : 'devices';
82
61
  return chalk.gray(` · ${skipped.length} ${noun} didn't answer (unreachable, older agents-cli, or timed out): ${list}\n`);
83
62
  }
84
- /**
85
- * One compact trailing note for peers that DID answer a fan-out but whose
86
- * payload failed verification — a wrong machine id, a fingerprint that doesn't
87
- * match the targets we sent, or a malformed row. Deliberately separate from
88
- * {@link formatFleetSkippedNote}: silence means a peer never ran, while this
89
- * means it ran and we cannot trust what it reports, which is the worse state.
90
- * Empty string when every answer verified.
91
- */
92
63
  export function formatFleetUnverifiedNote(unverified) {
93
64
  if (unverified.length === 0)
94
65
  return '';
@@ -98,14 +69,12 @@ export function formatFleetUnverifiedNote(unverified) {
98
69
  const noun = unverified.length === 1 ? 'device' : 'devices';
99
70
  return chalk.red(` · ${unverified.length} ${noun} answered with a result that could not be verified: ${list}\n`);
100
71
  }
101
- /** `path:purpose` → a context anchor. Purpose may contain colons. */
102
72
  function parseContextFlag(raw) {
103
73
  const i = raw.indexOf(':');
104
74
  if (i === -1)
105
75
  return { path: raw.trim(), purpose: '' };
106
76
  return { path: raw.slice(0, i).trim(), purpose: raw.slice(i + 1).trim() };
107
77
  }
108
- /** `objective:measure` → a goal. The measure is optional; the objective may contain colons only after the first is claimed. */
109
78
  function parseGoalFlag(raw) {
110
79
  const i = raw.indexOf(':');
111
80
  if (i === -1)
@@ -116,14 +85,6 @@ function parseGoalFlag(raw) {
116
85
  goal.measure = measure;
117
86
  return goal;
118
87
  }
119
- /**
120
- * Best-effort `owner/repo` from a repo's origin remote.
121
- *
122
- * `stderr: 'ignore'` is load-bearing, not tidiness. A checkout with no origin
123
- * makes git print `error: No such remote 'origin'` on ITS stderr, which is the
124
- * terminal's — the catch below never sees it. Absence of a remote is an
125
- * expected answer here (`undefined`), not something to report.
126
- */
127
88
  export function originSlug(cwd) {
128
89
  try {
129
90
  const url = execFileSync('git', ['remote', 'get-url', 'origin'], {
@@ -137,18 +98,6 @@ export function originSlug(cwd) {
137
98
  return undefined;
138
99
  }
139
100
  }
140
- /**
141
- * Turn a `--dir` / `--add-dir` value into a `repos[]` row.
142
- *
143
- * The slug comes from the DIRECTORY'S OWN origin remote, never from its path:
144
- * a checkout at `~/src/github.com/muqsitnawaz/agents-cli` whose origin is
145
- * `phnx-labs/agents-cli` must record the remote it actually pushes to. Pass
146
- * `slugOverride` for a directory with no origin (a vendored tree, a fresh
147
- * `git init`).
148
- *
149
- * The stored `path` is left for `writeProjectDef` to normalize home-relative,
150
- * so the same definition re-roots on every machine.
151
- */
152
101
  export function projectRepoFromDir(dir, slugOverride) {
153
102
  const abs = path.resolve(expandLocalHome(dir));
154
103
  if (!fs.existsSync(abs))
@@ -165,12 +114,6 @@ export function projectRepoFromDir(dir, slugOverride) {
165
114
  }
166
115
  return { ok: true, repo: { slug, path: toHomeRelative(abs) } };
167
116
  }
168
- /**
169
- * List the workspace's Linear projects and plan their import, binding each to a
170
- * local checkout under the configured projects root when the names match
171
- * exactly. A missing / logged-out `linear` CLI is loud (this is an explicit user
172
- * command), and nothing is written before the whole plan is built.
173
- */
174
117
  function runLinearImport(existing, opts) {
175
118
  let list;
176
119
  try {
@@ -180,8 +123,6 @@ function runLinearImport(existing, opts) {
180
123
  console.error(chalk.red(e instanceof Error ? e.message : String(e)));
181
124
  process.exit(1);
182
125
  }
183
- // No projects root configured (or unreadable) → no local matching; every def
184
- // still imports, carrying its Linear link and nothing it can't prove.
185
126
  const rootAbs = getProjectRoot() ? expandLocalHome(getProjectRoot()) : undefined;
186
127
  let localDirs = [];
187
128
  if (rootAbs) {
@@ -201,14 +142,7 @@ function runLinearImport(existing, opts) {
201
142
  resolveOrigin: (dir) => (rootAbs ? originSlug(path.join(rootAbs, dir)) : undefined),
202
143
  }, opts);
203
144
  }
204
- /** Longest path a `list` row shows before it truncates. */
205
145
  const LIST_PATH_MAX = 48;
206
- /**
207
- * Column widths for `projects list`, sized to the rows actually being printed.
208
- * Fixed padding was the bug: home-relative roots run past 50 characters, so a
209
- * hardcoded 32 pushed the repo column off its gridline on every long path.
210
- * Paths longer than {@link LIST_PATH_MAX} truncate rather than widen the table.
211
- */
212
146
  export function computeProjectListWidths(rows) {
213
147
  const widest = (pick, cap) => Math.min(cap, rows.reduce((w, r) => Math.max(w, pick(r).length), 0));
214
148
  return {
@@ -217,13 +151,6 @@ export function computeProjectListWidths(rows) {
217
151
  repo: widest((r) => r.repo, 64),
218
152
  };
219
153
  }
220
- /**
221
- * A milestone's target date as a person would say it — "due tomorrow",
222
- * "overdue by 3 days", "due Aug 21" — never a raw `2026-08-21` or a duration in
223
- * hours. Linear stores a calendar date with no timezone, so both sides are
224
- * compared at LOCAL midnight; parsing `YYYY-MM-DD` with `new Date(str)` would
225
- * read it as UTC and shift the answer by a day for anyone west of Greenwich.
226
- */
227
154
  export function formatMilestoneDue(targetDate, nowMs) {
228
155
  const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(targetDate.trim());
229
156
  if (!m)
@@ -252,25 +179,10 @@ export function formatMilestoneDue(targetDate, nowMs) {
252
179
  });
253
180
  return `due ${label}`;
254
181
  }
255
- /**
256
- * The milestone block. `status` prints one line — the next checkpoint — because
257
- * a roll-up across projects has to stay scannable. `view` prints every declared
258
- * milestone, because "how many are there and when are they due" is the shape of
259
- * the plan and the reason to open one project.
260
- *
261
- * Pure (chalk only) so the layout is testable without a Linear account.
262
- */
263
182
  export function formatMilestoneLines(milestones, next, nowMs, limit) {
264
183
  if (milestones.length === 0) {
265
- // `next` without a list only happens on a cached answer written before the
266
- // list existed; render what we have rather than dropping the row.
267
184
  return next ? [` ${chalk.dim('next')} ${formatNextMilestone(next, nowMs)}`] : [];
268
185
  }
269
- // The next milestone leads, always. Linear can flag a LATER-dated milestone
270
- // as next, and `milestones` is date-ordered — so slicing the front would show
271
- // an earlier one and hide the actual next behind "+N more", which is the one
272
- // thing this row exists to say. Identity is name+targetDate: two milestones
273
- // can share a name, and matching on name alone labelled the wrong row.
274
186
  const key = (m) => `${m.name}${m.targetDate ?? ''}`;
275
187
  const lead = next ? milestones.filter((m) => key(m) === key(next)).slice(0, 1) : [];
276
188
  const others = next ? milestones.filter((m) => key(m) !== key(next)) : milestones;
@@ -286,11 +198,8 @@ export function formatMilestoneLines(milestones, next, nowMs, limit) {
286
198
  }
287
199
  return out;
288
200
  }
289
- /** The `next` card line: what this project is due to hit, and how far along it is. */
290
201
  export function formatNextMilestone(ms, nowMs) {
291
202
  const parts = [chalk.bold(ms.name)];
292
- // A milestone with nothing filed under it yet has no progress to report —
293
- // `0/0` is noise, not information.
294
203
  if (ms.total > 0)
295
204
  parts.push(`${ms.done}/${ms.total}`);
296
205
  const due = ms.targetDate ? formatMilestoneDue(ms.targetDate, nowMs) : undefined;
@@ -309,36 +218,16 @@ function statusBar(r) {
309
218
  push(r.byStatus.input_required, 'need-input', chalk.yellow);
310
219
  push(r.byStatus.queued, 'queued', chalk.gray);
311
220
  const shown = (r.byStatus.running ?? 0) + (r.byStatus.idle ?? 0) + (r.byStatus.input_required ?? 0) + (r.byStatus.queued ?? 0);
312
- // The remainder is the LIVE sessions in a state without its own chip
313
- // (orphaned, unknown). Dead ones are on their own row now, so counting them
314
- // here made the line disagree with the headline — `19 live` beside
315
- // `+24 other`, which invites the reader to trust neither.
316
221
  const live = liveDeadSplit(r.byStatus).live;
317
222
  if (live > shown)
318
223
  parts.push(chalk.gray(`+${live - shown} other`));
319
224
  return parts.join(' · ') || chalk.gray('no live agents');
320
225
  }
321
- /**
322
- * Gather the live/remote/Linear/focus signals for the projects about to be
323
- * rendered. `status` and `view` share this deliberately: `view` used to build
324
- * its own thinner picture, so the command you open to learn everything about
325
- * ONE project showed strictly less than the roll-up across all of them — no
326
- * agents, no ships, no focus, no schedule verdict. One gatherer means a signal
327
- * added for either surface appears on both.
328
- *
329
- * Only the shown projects are enriched. `skipRemote` still reads the local
330
- * artifact log and git focus, and skips just the network calls (`gh`, Linear).
331
- */
332
226
  async function enrichProjectsForRender(defs, all, opts) {
333
- // Local getActiveSessions() leaves `machine` unset (the sessions renderer
334
- // falls back to this box). Host-grouped agents need an explicit stamp so
335
- // under `--fleet` this box does not render as `@local` next to peers that
336
- // carry real device ids.
337
227
  const local = withDefaultMachine(await getActiveSessions(), machineId());
338
228
  const roll = rollupSessionsByProject(all, [...local, ...(opts.extraSessions ?? [])]);
339
229
  const remote = new Map();
340
230
  const linear = new Map();
341
- // Local git, no API, no rate limit — measured 0.23s over a 897-commit week.
342
231
  const focus = new Map();
343
232
  await Promise.all(defs.map(async (d) => {
344
233
  const [sig, counts] = await Promise.all([
@@ -355,34 +244,15 @@ async function enrichProjectsForRender(defs, all, opts) {
355
244
  }));
356
245
  return { roll, remote, linear, focus };
357
246
  }
358
- function renderCard(def, r, remote, fleet, linear, nowMs = Date.now(),
359
- /** How many milestones to print. `status` shows the next one; `view` shows all. */
360
- milestoneLimit = 1,
361
- /** Directories the window's work landed in, from local git. */
362
- focus = [],
363
- /** `view` mode: the caller prints the stored definition in full afterwards. */
364
- detail = false,
365
- /**
366
- * Workspace probe rows used only for the warnings footer. May be the full
367
- * `--fleet` set or a local-only probe so drift is never silent by default.
368
- */
369
- warnWorkspaces = []) {
370
- // The headline counts LIVE agents. It used to be every matched session, which
371
- // read `39 agents` on a project where 19 had crashed. `planPct` used to sit
372
- // here too and is gone: it summed each session's latest checklist snapshot,
373
- // so one agent opening a fresh 40-item plan rendered the whole project `0%`.
247
+ function renderCard(def, r, remote, fleet, linear, nowMs = Date.now(), milestoneLimit = 1, focus = [], detail = false, warnWorkspaces = []) {
374
248
  const split = r ? liveDeadSplit(r.byStatus) : { live: 0, dead: 0, deadByStatus: [] };
375
249
  console.log(`${chalk.bold(def.name)} ${chalk.dim('·')} ${chalk.bold(`${split.live} live`)}`);
376
250
  if (def.description)
377
251
  console.log(` ${chalk.dim(def.description)}`);
378
252
  console.log(` ${chalk.dim('live')} ${r ? statusBar(r) : chalk.gray('no live agents')}`);
379
253
  if (split.dead > 0) {
380
- // Wreckage is worth a number of its own — 19 crashed sessions is a thing to
381
- // go fix, not a throughput signal to fold into the headline.
382
254
  console.log(` ${chalk.dim('dead')} ${formatDeadSummary(split)}`);
383
255
  }
384
- // Live only, grouped by host when machine stamps exist so "who is on which
385
- // box" is visible. Flat collapse hid that when harness×status matched across hosts.
386
256
  const liveMembers = r?.members.filter((m) => !isDeadStatus(m.status)) ?? [];
387
257
  if (liveMembers.length) {
388
258
  const agentLines = formatProjectMembersByHost(liveMembers);
@@ -409,8 +279,6 @@ warnWorkspaces = []) {
409
279
  for (const line of formatMilestoneLines(linear?.milestones ?? [], linear?.nextMilestone, nowMs, milestoneLimit)) {
410
280
  console.log(line);
411
281
  }
412
- // Informational schedule only. Warn-level verdicts land in the footer so the
413
- // bottom of the card is the one place you look for "what needs attention".
414
282
  const verdict = linear?.milestones?.length ? formatVerdict(scheduleVerdict(linear.milestones, nowMs)) : undefined;
415
283
  if (verdict && !verdict.warn) {
416
284
  console.log(` ${chalk.dim('schedule')} ${verdict.text}`);
@@ -428,9 +296,6 @@ warnWorkspaces = []) {
428
296
  console.log(` ${chalk.dim('fleet')} ${chalk.gray('no workspace paths (set root or repos[].path)')}`);
429
297
  }
430
298
  else {
431
- // A compact health line first (scan without reading every host), then the
432
- // full per-host table under it. The grouped footer carries the actionable
433
- // subset; this line + the table carry the whole picture.
434
299
  [formatFleetSummary(fleet), ...table].forEach((line, i) => {
435
300
  console.log(` ${chalk.dim((i === 0 ? 'fleet' : '').padEnd(5))} ${line}`);
436
301
  });
@@ -443,8 +308,6 @@ warnWorkspaces = []) {
443
308
  const repos = [def.repo, ...(def.repos ?? []).map((x) => x.slug)].filter(Boolean);
444
309
  if (repos.length)
445
310
  console.log(` ${chalk.dim('repos')} ${[...new Set(repos)].join(' · ')}`);
446
- // Warnings footer — critical (🔴) then continue (⚠️). Sources: repo slug
447
- // mismatch, workspace drift/dirty/missing, schedule that cannot measure.
448
311
  const warnings = [];
449
312
  const mismatch = def.root ? checkRepoSlug(def, originSlug(expandLocalHome(def.root))) : undefined;
450
313
  if (mismatch) {
@@ -466,8 +329,6 @@ warnWorkspaces = []) {
466
329
  }
467
330
  for (const line of formatProjectWarnings(warnings))
468
331
  console.log(line);
469
- // `view` prints these in full (path + purpose, label + URL) right below, so
470
- // the compact one-line summaries would just say the same thing twice.
471
332
  if (!detail && def.goals?.length) {
472
333
  console.log(` ${chalk.dim('goal')} ${def.goals.map((g) => g.objective).join(' · ')}`);
473
334
  }
@@ -480,10 +341,6 @@ warnWorkspaces = []) {
480
341
  if (!detail)
481
342
  console.log('');
482
343
  }
483
- /**
484
- * Merge `--device a b` (variadic) and `--devices a,b,c` (comma list) into one
485
- * deduped device filter; undefined when neither was given (= whole fleet).
486
- */
487
344
  function resolveDeviceFilter(device, devices) {
488
345
  const merged = [
489
346
  ...(device ?? []),
@@ -491,7 +348,6 @@ function resolveDeviceFilter(device, devices) {
491
348
  ];
492
349
  return merged.length ? [...new Set(merged)] : undefined;
493
350
  }
494
- /** Print the YAML-side fields that sit under the shared card in `view` mode. */
495
351
  function printProjectDefinition(def, name) {
496
352
  console.log();
497
353
  if (def.root)
@@ -518,6 +374,57 @@ function printProjectDefinition(def, name) {
518
374
  console.log(` ${chalk.dim('doc')} ${d}`);
519
375
  console.log(chalk.gray(` ${projectDefPath(name)}`));
520
376
  }
377
+ function prFail(message) {
378
+ console.error(chalk.red(message));
379
+ process.exit(1);
380
+ }
381
+ function prProjectOrExit(name) {
382
+ return loadProjectDef(name) ?? prFail(`No project named "${name}". List them: agents projects list`);
383
+ }
384
+ function prNumberOrExit(raw) {
385
+ const t = raw.trim();
386
+ const number = /^\d+$/.test(t) ? Number.parseInt(t, 10) : NaN;
387
+ if (!Number.isSafeInteger(number) || number <= 0)
388
+ prFail(`--number expects a positive integer, got "${raw}".`);
389
+ return number;
390
+ }
391
+ function prShaOrExit(raw) {
392
+ const sha = raw.trim();
393
+ if (!/^[0-9a-f]{7,40}$/i.test(sha))
394
+ prFail(`--sha expects a commit SHA, got "${raw}".`);
395
+ return sha;
396
+ }
397
+ function prCommentBodyOrExit(body, bodyFile) {
398
+ if ((body === undefined) === (bodyFile === undefined))
399
+ prFail('Pass exactly one of --body <text> or --body-file <path|->.');
400
+ let text = body;
401
+ if (bodyFile !== undefined) {
402
+ try {
403
+ text = fs.readFileSync(bodyFile === '-' ? 0 : bodyFile, 'utf-8');
404
+ }
405
+ catch (e) {
406
+ prFail(`Could not read --body-file ${bodyFile}: ${e instanceof Error ? e.message : String(e)}`);
407
+ }
408
+ }
409
+ if (!text || !text.trim())
410
+ prFail('The comment is empty.');
411
+ return text.trimEnd();
412
+ }
413
+ function prMethodOrExit(raw) {
414
+ if (raw !== undefined && !MERGE_METHODS.includes(raw)) {
415
+ prFail(`--method expects one of ${MERGE_METHODS.join(', ')}, got "${raw}".`);
416
+ }
417
+ return raw;
418
+ }
419
+ async function prRepoOrExit(def, repo) {
420
+ try {
421
+ const [resolved] = await resolveTargetSlugs(def, repo, ghExec);
422
+ return resolved;
423
+ }
424
+ catch (e) {
425
+ return prFail(e instanceof Error ? e.message : String(e));
426
+ }
427
+ }
521
428
  export function registerProjectsCommands(program) {
522
429
  const projects = program
523
430
  .command('projects')
@@ -553,7 +460,6 @@ export function registerProjectsCommands(program) {
553
460
  an --add-dir grant (Claude, Codex, Cursor, Kimi, Grok consume it; others ignore).
554
461
  `,
555
462
  });
556
- // ---- list ----
557
463
  projects
558
464
  .command('list')
559
465
  .description('List defined projects (definitions only by default; no session scan).')
@@ -561,9 +467,6 @@ export function registerProjectsCommands(program) {
561
467
  .option('--with-agents', 'Include local active agent counts (opt-in; never SSH)')
562
468
  .action(async (opts) => {
563
469
  const defs = listProjectDefs();
564
- // Definitions-only by default: zero session scan / SSH. --with-agents is
565
- // an explicit opt-in for local active counts only (getActiveSessions is
566
- // local; it never fans out).
567
470
  const roll = opts.withAgents
568
471
  ? rollupSessionsByProject(defs, await getActiveSessions())
569
472
  : undefined;
@@ -589,7 +492,6 @@ export function registerProjectsCommands(program) {
589
492
  console.log(` ${chalk.bold(row.name.padEnd(w.name))} ${chalk.dim(row.path.padEnd(w.path))} ${chalk.cyan(row.repo.padEnd(w.repo))}${agentsSuffix}`);
590
493
  }
591
494
  });
592
- // ---- add ----
593
495
  projects
594
496
  .command('add <name>')
595
497
  .description('Define a project. Infers root and repo from the current git repo when not given.')
@@ -656,8 +558,6 @@ export function registerProjectsCommands(program) {
656
558
  async function runProjectCard(name, opts, mode) {
657
559
  const detail = mode === 'view';
658
560
  const all = listProjectDefs();
659
- // Named lookup goes through the strict single-def loader so a broken
660
- // <name>.yaml surfaces its validation error instead of "No project named".
661
561
  const defs = name ? [loadProjectDef(name)].filter((d) => d !== undefined) : all;
662
562
  if (name && !defs.length) {
663
563
  console.error(chalk.red(detail
@@ -674,11 +574,6 @@ export function registerProjectsCommands(program) {
674
574
  }
675
575
  const windowDays = Math.max(1, Number.parseInt(opts.window ?? '7', 10) || 7);
676
576
  const nowMs = Date.now();
677
- // Fleet is the default: probe each shown def's workspace paths (root +
678
- // repos[].path) locally AND on every peer in one parallel SSH round, and
679
- // widen the live-session rollup to the fleet via the sessions fan-out.
680
- // `--device`/`--devices` scopes the remote fan-out to a subset; with no
681
- // filter every registered device is dialled.
682
577
  const fleetTargets = [...new Set(defs.flatMap(workspaceTargetsForDef))];
683
578
  let fleetWs = [];
684
579
  let fleetSkipped = [];
@@ -708,7 +603,6 @@ export function registerProjectsCommands(program) {
708
603
  skipRemote: opts.remote === false,
709
604
  extraSessions: fleetSessions,
710
605
  });
711
- /** This def's slice of the fleet probe, in its own target order. */
712
606
  const fleetFor = (d) => {
713
607
  const targets = new Set(workspaceTargetsForDef(d));
714
608
  return fleetWs.filter((s) => targets.has(s.path));
@@ -716,9 +610,6 @@ export function registerProjectsCommands(program) {
716
610
  if (opts.json) {
717
611
  if (fleetSkipped.length > 0)
718
612
  process.stderr.write(formatFleetSkippedNote(fleetSkipped));
719
- // `view` used to nest the def fields at the top level and omit plan /
720
- // worktrees / windowDays; keep one machine shape for both verbs so a
721
- // consumer that switches `status`↔`view` does not re-learn the schema.
722
613
  console.log(JSON.stringify(defs.map((d) => {
723
614
  const r = roll.get(d.name);
724
615
  const rem = remote.get(d.name);
@@ -748,11 +639,7 @@ export function registerProjectsCommands(program) {
748
639
  }), null, 2));
749
640
  return;
750
641
  }
751
- // Compact rollup shows the next milestone; `view` shows every declared one.
752
642
  const milestoneLimit = detail ? Number.POSITIVE_INFINITY : 1;
753
- // Stamp the fleet-wide rollup with when it was taken, so a scrollback isn't
754
- // mistaken for a live snapshot. A single named `view` skips it (one card, and
755
- // its own detail makes the freshness obvious).
756
643
  if (!detail) {
757
644
  const t = new Date(nowMs);
758
645
  const hhmm = `${String(t.getHours()).padStart(2, '0')}:${String(t.getMinutes()).padStart(2, '0')}`;
@@ -760,10 +647,7 @@ export function registerProjectsCommands(program) {
760
647
  console.log('');
761
648
  }
762
649
  for (const d of defs) {
763
- renderCard(d, roll.get(d.name), remote.get(d.name), fleetFor(d), linear.get(d.name), nowMs, milestoneLimit, focus.get(d.name) ?? [], detail,
764
- // Always feed workspace rows into the warnings footer so behind/dirty
765
- // is never silent.
766
- fleetFor(d));
650
+ renderCard(d, roll.get(d.name), remote.get(d.name), fleetFor(d), linear.get(d.name), nowMs, milestoneLimit, focus.get(d.name) ?? [], detail, fleetFor(d));
767
651
  if (detail)
768
652
  printProjectDefinition(d, d.name);
769
653
  }
@@ -781,12 +665,6 @@ export function registerProjectsCommands(program) {
781
665
  .option('--device <name...>', 'Scope fleet status to one or more devices (repeatable)')
782
666
  .option('--devices <names>', 'Scope fleet status to a comma-separated list of devices')
783
667
  .action(async (name, rawOpts) => {
784
- // Path mode: an explicit --path, or a path-shaped positional (., .., a
785
- // ~-prefixed value, or a /-containing value) means "auto-detect the
786
- // project for this DIRECTORY" rather than "a project named literally
787
- // this". projectNameForCwd resolves the dir (expandLocalHome +
788
- // path.resolve), so `.`, `~/…`, and relative paths all normalize. This
789
- // subsumes the removed `agents projects for-cwd`.
790
668
  let detectDir;
791
669
  if (typeof rawOpts.path === 'string')
792
670
  detectDir = rawOpts.path;
@@ -804,13 +682,8 @@ export function registerProjectsCommands(program) {
804
682
  console.log(chalk.gray(`No defined project contains ${detectDir}`));
805
683
  return;
806
684
  }
807
- // Non-JSON: fall through and render the full card for the detected project.
808
685
  name = detection.name;
809
686
  }
810
- // Named invocation = `view` depth (all milestones + definition). Unnamed
811
- // stays the scannable multi-project rollup. `view` is a commander alias
812
- // of this same command, so there is only one implementation.
813
- // Fleet is dialled by default; --device/--devices narrows it to a subset.
814
687
  const opts = {
815
688
  json: rawOpts.json,
816
689
  window: rawOpts.window,
@@ -820,12 +693,9 @@ export function registerProjectsCommands(program) {
820
693
  const mode = name ? 'view' : 'status';
821
694
  await runProjectCard(name, opts, mode);
822
695
  });
823
- // ---- prs ----
824
- // `list` is the default so `prs <name>` keeps its shape; a bare parent with
825
- // no options of its own is what lets `prs merge` own --repo/--number/--json.
826
696
  const prsCmd = projects
827
697
  .command('prs')
828
- .description('A project\'s open pull requests: list them (default), or merge one.');
698
+ .description('A project\'s open pull requests: list them (default), act on one (ready, review, comment, merge), or read and re-run failed CI (failure, rerun).');
829
699
  const prsListCmd = prsCmd
830
700
  .command('list <name>', { isDefault: true })
831
701
  .description('Every OPEN pull request across a project\'s attached repos (drafts included, no author filter), scoped to this project\'s paths in a shared repo.')
@@ -844,8 +714,6 @@ export function registerProjectsCommands(program) {
844
714
  console.error(chalk.red('--number names one PR in one repo; pass --repo <owner/repo> with it.'));
845
715
  process.exit(1);
846
716
  }
847
- // Require the WHOLE token to be digits — Number.parseInt would accept
848
- // "12junk" / "12.9" as 12 and silently query the wrong PR.
849
717
  const raw = opts.number.trim();
850
718
  number = /^\d+$/.test(raw) ? Number.parseInt(raw, 10) : NaN;
851
719
  if (!Number.isSafeInteger(number) || number <= 0) {
@@ -858,17 +726,10 @@ export function registerProjectsCommands(program) {
858
726
  envelope = await buildProjectPrs(def, { repo: opts.repo, number }, undefined, listProjectDefs());
859
727
  }
860
728
  catch (e) {
861
- // A restriction error (repo not attached) is a hard, up-front failure —
862
- // distinct from a per-repo fetch failure, which rides in the envelope.
863
729
  console.error(chalk.red(e instanceof Error ? e.message : String(e)));
864
730
  process.exit(1);
865
731
  }
866
732
  if (opts.json) {
867
- // A machine caller reads the envelope from stdout regardless of exit
868
- // code: `partial` + per-repo `error` ARE the failure signal, and the
869
- // successful repositories ride alongside them. So --json always exits 0
870
- // (the envelope is authoritative); a native consumer must not discard
871
- // stdout on a non-zero exit. Only the human path below exits non-zero.
872
733
  console.log(JSON.stringify(envelope, null, 2));
873
734
  return;
874
735
  }
@@ -878,18 +739,35 @@ export function registerProjectsCommands(program) {
878
739
  console.log(`${chalk.bold(r.slug)} ${chalk.red(`— fetch failed: ${r.error}`)}`);
879
740
  continue;
880
741
  }
881
- console.log(`${chalk.bold(r.slug)} ${chalk.dim(`${r.pullRequests.length} open`)}`);
742
+ const branch = r.defaultBranch ? ` ${r.defaultBranch.name} ${ciMark(r.defaultBranch.ciState)}` : '';
743
+ console.log(`${chalk.bold(r.slug)} ${chalk.dim(`${r.pullRequests.length} open`)}${branch}`);
882
744
  for (const pr of r.pullRequests) {
883
745
  const draft = pr.isDraft ? chalk.gray(' [draft]') : '';
884
746
  const wide = pr.scope === 'repo-wide' ? chalk.gray(' [repo-wide]') : '';
885
- console.log(` #${pr.number}${draft}${wide} ${pr.title} ${chalk.gray(`@${pr.author.login} · ${pr.headRefName}`)}`);
747
+ console.log(` ${ciMark(pr.ciState)} #${pr.number}${draft}${wide} ${pr.title} ${chalk.gray(`@${pr.author.login} · ${pr.headRefName}`)}`);
748
+ }
749
+ if (r.release) {
750
+ const npm = r.release.npm?.version ? ` · npm ${r.release.npm.version}` : '';
751
+ const since = `${r.release.mergesSince}${r.release.mergesSinceComplete ? '' : '+'}`;
752
+ console.log(chalk.dim(` ${r.release.latestTag} tagged ${r.release.latestTagAt.slice(0, 10)}${npm} · ${since} merged since`));
753
+ }
754
+ if (r.releaseError)
755
+ console.log(chalk.yellow(` Latest release could not be read: ${r.releaseError}`));
756
+ if (r.ciError)
757
+ console.log(chalk.yellow(` CI and merged PRs are incomplete: ${r.ciError}`));
758
+ if (r.truncated)
759
+ console.log(chalk.yellow(' Merged list may be missing PRs: too many closed PRs were updated this week to read them all.'));
760
+ if (r.recentlyMerged.length > 0) {
761
+ console.log(chalk.dim(` merged in the last ${MERGED_WINDOW_DAYS} days:`));
762
+ for (const pr of r.recentlyMerged) {
763
+ console.log(` ${ciMark(pr.ciState)} #${pr.number} ${pr.title} ${chalk.gray(`@${pr.author.login} · ${pr.mergedAt.slice(0, 10)}`)}`);
764
+ }
886
765
  }
887
766
  }
888
767
  if (envelope.partial) {
889
768
  console.log(chalk.yellow('\nSome repositories could not be fetched — the list above is incomplete.'));
890
769
  }
891
770
  }
892
- // A partial result (any repo fetch failed) is not a clean success.
893
771
  if (envelope.partial)
894
772
  process.exit(1);
895
773
  });
@@ -900,36 +778,15 @@ export function registerProjectsCommands(program) {
900
778
  .requiredOption('--number <n>', 'The PR number')
901
779
  .requiredOption('--sha <head-sha>', 'The head SHA you reviewed; GitHub refuses if the branch moved since')
902
780
  .option('--method <method>', `${MERGE_METHODS.join(' | ')} (default: the first the repo allows, in that order)`)
781
+ .option('--admin', 'Merge a PR branch protection blocks, as a repository admin. For a person\'s explicit confirm only; agents must never pass it')
903
782
  .option('--json', 'Machine-readable result')
904
783
  .action(async (name, opts) => {
905
- const def = loadProjectDef(name);
906
- if (!def) {
907
- console.error(chalk.red(`No project named "${name}". List them: agents projects list`));
908
- process.exit(1);
909
- }
910
- const raw = opts.number.trim();
911
- const number = /^\d+$/.test(raw) ? Number.parseInt(raw, 10) : NaN;
912
- if (!Number.isSafeInteger(number) || number <= 0) {
913
- console.error(chalk.red(`--number expects a positive integer, got "${opts.number}".`));
914
- process.exit(1);
915
- }
916
- if (!/^[0-9a-f]{7,40}$/i.test(opts.sha.trim())) {
917
- console.error(chalk.red(`--sha expects a commit SHA, got "${opts.sha}".`));
918
- process.exit(1);
919
- }
920
- if (opts.method !== undefined && !MERGE_METHODS.includes(opts.method)) {
921
- console.error(chalk.red(`--method expects one of ${MERGE_METHODS.join(', ')}, got "${opts.method}".`));
922
- process.exit(1);
923
- }
924
- let repo;
925
- try {
926
- [repo] = await resolveTargetSlugs(def, opts.repo, ghExec);
927
- }
928
- catch (e) {
929
- console.error(chalk.red(e instanceof Error ? e.message : String(e)));
930
- process.exit(1);
931
- }
932
- const result = await mergeProjectPr(repo, number, opts.sha.trim(), opts.method);
784
+ const def = prProjectOrExit(name);
785
+ const number = prNumberOrExit(opts.number);
786
+ const sha = prShaOrExit(opts.sha);
787
+ const method = prMethodOrExit(opts.method);
788
+ const repo = await prRepoOrExit(def, opts.repo);
789
+ const result = await mergeProjectPr(repo, number, sha, method, { admin: opts.admin === true });
933
790
  if (opts.json) {
934
791
  console.log(JSON.stringify(result, null, 2));
935
792
  }
@@ -950,16 +807,263 @@ export function registerProjectsCommands(program) {
950
807
  `,
951
808
  notes: `
952
809
  The merge is a single REST call pinned to --sha: if anything was pushed after
953
- you read the PR, GitHub refuses and nothing merges. Branch protection, required
954
- checks and reviews stay GitHub's to enforce; a refusal exits 1 with GitHub's
955
- message (merged: false in --json).
810
+ you read the PR, GitHub refuses and nothing merges. Without --admin, a PR whose
811
+ live mergeable_state is not clean/unstable/has_hooks (blocked by a pending or red
812
+ required check or a review, behind, conflicted, or not computed yet) is refused
813
+ before the call. --admin skips that refusal and lets a
814
+ repository admin merge past branch protection where GitHub allows it; it exists
815
+ for a person's explicit confirm (AGI Menu's "Confirm admin merge") and agents
816
+ must never pass it. To land a PR once its checks pass, use prs automerge. A
817
+ refusal exits 1 with GitHub's reason (merged: false in --json).
818
+ `,
819
+ });
820
+ const automergeCmd = prsCmd
821
+ .command('automerge <name>')
822
+ .description('Turn GitHub auto-merge on (or off with --off) for one open PR, so it merges itself once its required checks pass.')
823
+ .requiredOption('--repo <owner/repo>', 'One of the project\'s attached repos')
824
+ .requiredOption('--number <n>', 'The PR number')
825
+ .option('--sha <head-sha>', 'The head SHA you reviewed (required to turn it on); GitHub refuses if the branch moved since')
826
+ .option('--method <method>', `${MERGE_METHODS.join(' | ')} (default: the first the repo allows, in that order)`)
827
+ .option('--off', 'Turn auto-merge off instead')
828
+ .option('--json', 'Machine-readable result')
829
+ .action(async (name, opts) => {
830
+ const def = prProjectOrExit(name);
831
+ const number = prNumberOrExit(opts.number);
832
+ const enable = opts.off !== true;
833
+ if (enable && opts.sha === undefined)
834
+ prFail('Pass --sha <head-sha>: auto-merge is pinned to the head you reviewed.');
835
+ if (!enable && opts.method !== undefined)
836
+ prFail('--method only applies when turning auto-merge on.');
837
+ const sha = opts.sha === undefined ? undefined : prShaOrExit(opts.sha);
838
+ const method = prMethodOrExit(opts.method);
839
+ const repo = await prRepoOrExit(def, opts.repo);
840
+ const result = await setProjectPrAutoMerge(repo, number, enable && sha !== undefined ? { enable: true, sha, method } : { enable: false });
841
+ const ok = result.enabled === enable;
842
+ if (opts.json)
843
+ console.log(JSON.stringify(result, null, 2));
844
+ else if (ok)
845
+ console.log(`${chalk.green(result.message)}: ${repo}#${number}`);
846
+ else
847
+ console.error(chalk.red(`Auto-merge not changed: ${repo}#${number}: ${result.message}`));
848
+ if (!ok)
849
+ process.exit(1);
850
+ });
851
+ setHelpSections(automergeCmd, {
852
+ examples: `
853
+ agents projects prs rush --json --repo phnx-labs/agi-cli --number 3646 # read headSha + merge.autoMergeAllowed
854
+ agents projects prs automerge rush --repo phnx-labs/agi-cli --number 3646 --sha <headSha>
855
+ agents projects prs automerge rush --repo phnx-labs/agi-cli --number 3646 --off --json
856
+ `,
857
+ notes: `
858
+ GitHub has no REST endpoint for auto-merge, so each call is one GraphQL
859
+ mutation (enablePullRequestAutoMerge / disablePullRequestAutoMerge) after a REST
860
+ read. Turning it on passes expectedHeadOid, so a branch that moved since --sha
861
+ is refused. The repository must allow auto-merge (merge.autoMergeAllowed in
862
+ prs --json), and GitHub refuses it on a PR that can already merge: use prs merge
863
+ for that. Exits 1 unless auto-merge ends in the requested state.
864
+ `,
865
+ });
866
+ const readyCmd = prsCmd
867
+ .command('ready <name>')
868
+ .description('Mark one draft PR of a project ready for review.')
869
+ .requiredOption('--repo <owner/repo>', 'One of the project\'s attached repos')
870
+ .requiredOption('--number <n>', 'The PR number')
871
+ .option('--sha <head-sha>', 'The head SHA you looked at; refused if the branch moved since')
872
+ .option('--json', 'Machine-readable result')
873
+ .action(async (name, opts) => {
874
+ const def = prProjectOrExit(name);
875
+ const number = prNumberOrExit(opts.number);
876
+ const sha = opts.sha === undefined ? undefined : prShaOrExit(opts.sha);
877
+ const repo = await prRepoOrExit(def, opts.repo);
878
+ const result = await markProjectPrReady(repo, number, sha);
879
+ if (opts.json)
880
+ console.log(JSON.stringify(result, null, 2));
881
+ else if (result.ready)
882
+ console.log(`${chalk.green(result.message)}: ${repo}#${number}`);
883
+ else
884
+ console.error(chalk.red(`Not marked ready: ${repo}#${number}: ${result.message}`));
885
+ if (!result.ready)
886
+ process.exit(1);
887
+ });
888
+ setHelpSections(readyCmd, {
889
+ examples: `
890
+ agents projects prs rush --json --repo phnx-labs/agi-cli --number 3646 # read isDraft + headSha
891
+ agents projects prs ready rush --repo phnx-labs/agi-cli --number 3646 --sha <headSha>
892
+ agents projects prs ready rush --repo phnx-labs/agi-cli --number 3646 --json
893
+ `,
894
+ notes: `
895
+ GitHub has no REST endpoint for this, so it is one GraphQL mutation
896
+ (markPullRequestReadyForReview) after a REST read. A PR that is already ready
897
+ succeeds without a write. With --sha, a head that moved is refused before the
898
+ write; GitHub cannot pin the mutation itself, so that check is not atomic.
899
+ `,
900
+ });
901
+ const reviewCmd = prsCmd
902
+ .command('review <name>')
903
+ .description('Approve one open PR of a project, pinned to the head SHA you reviewed.')
904
+ .requiredOption('--repo <owner/repo>', 'One of the project\'s attached repos')
905
+ .requiredOption('--number <n>', 'The PR number')
906
+ .requiredOption('--sha <head-sha>', 'The head SHA you reviewed; refused if the branch moved since')
907
+ .option('--approve', 'Submit an approving review (the only review this command submits)')
908
+ .option('--body <text>', 'Text to post with the approval')
909
+ .option('--json', 'Machine-readable result')
910
+ .action(async (name, opts) => {
911
+ const def = prProjectOrExit(name);
912
+ const number = prNumberOrExit(opts.number);
913
+ const sha = prShaOrExit(opts.sha);
914
+ if (!opts.approve)
915
+ prFail('Pass --approve: approving is the only review this command submits.');
916
+ const repo = await prRepoOrExit(def, opts.repo);
917
+ const result = await approveProjectPr(repo, number, sha, opts.body);
918
+ if (opts.json)
919
+ console.log(JSON.stringify(result, null, 2));
920
+ else if (result.submitted)
921
+ console.log(`${chalk.green('Approved')} ${repo}#${number} at ${chalk.gray((result.sha ?? '').slice(0, 7))}`);
922
+ else
923
+ console.error(chalk.red(`Not approved: ${repo}#${number}: ${result.message}`));
924
+ if (!result.submitted)
925
+ process.exit(1);
926
+ });
927
+ setHelpSections(reviewCmd, {
928
+ examples: `
929
+ agents projects prs rush --json --repo phnx-labs/agi-cli --number 3646 # read headSha
930
+ agents projects prs review rush --repo phnx-labs/agi-cli --number 3646 --approve --sha <headSha>
931
+ agents projects prs review rush --repo phnx-labs/agi-cli --number 3646 --approve --sha <headSha> --body "Checked the migration" --json
932
+ `,
933
+ notes: `
934
+ One REST call (POST pulls/{n}/reviews, event APPROVE). The live head is read
935
+ first and a moved head is refused; the review carries commit_id = that SHA, so
936
+ it is recorded against the code you saw. On your own PR it answers at once
937
+ (exit 1, submitted: false) without calling GitHub, which never allows that.
938
+ `,
939
+ });
940
+ const commentCmd = prsCmd
941
+ .command('comment <name>')
942
+ .description('Post a comment on one open PR of a project.')
943
+ .requiredOption('--repo <owner/repo>', 'One of the project\'s attached repos')
944
+ .requiredOption('--number <n>', 'The PR number')
945
+ .option('--body <text>', 'The comment text')
946
+ .option('--body-file <path>', 'Read the comment from a file; - reads stdin')
947
+ .option('--json', 'Machine-readable result')
948
+ .action(async (name, opts) => {
949
+ const def = prProjectOrExit(name);
950
+ const number = prNumberOrExit(opts.number);
951
+ const body = prCommentBodyOrExit(opts.body, opts.bodyFile);
952
+ const repo = await prRepoOrExit(def, opts.repo);
953
+ const result = await commentOnProjectPr(repo, number, body);
954
+ if (opts.json)
955
+ console.log(JSON.stringify(result, null, 2));
956
+ else if (result.commented)
957
+ console.log(`${chalk.green('Commented')} on ${repo}#${number} ${chalk.gray(result.url ?? '')}`);
958
+ else
959
+ console.error(chalk.red(`Not commented: ${repo}#${number}: ${result.message}`));
960
+ if (!result.commented)
961
+ process.exit(1);
962
+ });
963
+ setHelpSections(commentCmd, {
964
+ examples: `
965
+ agents projects prs comment rush --repo phnx-labs/agi-cli --number 3646 --body "Looks good once CI is green"
966
+ printf 'Two notes:\\n- one\\n- two\\n' | agents projects prs comment rush --repo phnx-labs/agi-cli --number 3646 --body-file - --json
967
+ `,
968
+ notes: `
969
+ One REST call (POST issues/{n}/comments), not the GraphQL-backed gh pr comment.
970
+ Pass exactly one of --body or --body-file; an empty comment is refused.
971
+ `,
972
+ });
973
+ const failureCmd = prsCmd
974
+ .command('failure <name>')
975
+ .description('Why one commit\'s CI failed: each failing check with the error lines of its job log.')
976
+ .requiredOption('--repo <owner/repo>', 'One of the project\'s attached repos')
977
+ .requiredOption('--sha <commit>', 'The commit whose checks failed: a PR head, a merge commit, or the default branch head')
978
+ .option('--json', 'Machine-readable result')
979
+ .action(async (name, opts) => {
980
+ const def = prProjectOrExit(name);
981
+ const sha = prShaOrExit(opts.sha);
982
+ const repo = await prRepoOrExit(def, opts.repo);
983
+ const report = await readCiFailure(repo, sha);
984
+ if (opts.json) {
985
+ console.log(JSON.stringify(report, null, 2));
986
+ }
987
+ else if (report.error) {
988
+ console.error(chalk.red(`Could not read the checks of ${repo}@${sha.slice(0, 7)}: ${report.error}`));
989
+ }
990
+ else if (report.checks.length === 0) {
991
+ console.log(`No failing checks on ${repo}@${sha.slice(0, 7)}.`);
992
+ }
993
+ else {
994
+ for (const check of report.checks) {
995
+ console.log(`${chalk.red('✗')} ${chalk.bold(check.name)} ${chalk.gray(check.conclusion.toLowerCase())}${check.url ? ` ${chalk.gray(check.url)}` : ''}`);
996
+ for (const line of check.excerpt)
997
+ console.log(` ${line}`);
998
+ if (check.excerptError)
999
+ console.log(chalk.yellow(` ${check.excerptError}`));
1000
+ if (check.runId !== null)
1001
+ console.log(chalk.gray(` re-run: agents projects prs rerun ${name} --repo ${repo} --run-id ${check.runId}`));
1002
+ }
1003
+ }
1004
+ if (report.error)
1005
+ process.exit(1);
1006
+ });
1007
+ setHelpSections(failureCmd, {
1008
+ examples: `
1009
+ agents projects prs rush --json # read a ✗: defaultBranch.sha, a PR's headSha, or a merge's mergeCommitSha
1010
+ agents projects prs failure rush --repo phnx-labs/agi-cli --sha <sha>
1011
+ agents projects prs failure rush --repo phnx-labs/agi-cli --sha <sha> --json
1012
+ `,
1013
+ notes: `
1014
+ REST only: the commit's check runs and statuses, then each failing GitHub
1015
+ Actions job's log (GET actions/jobs/{job}/logs). The excerpt drops timestamps,
1016
+ colour and the runner's cleanup after "Post job cleanup.", and keeps the lines
1017
+ that read like an error with one line of context each side, at most 12. A log
1018
+ that cannot be read empties that excerpt and says why in excerptError; a check
1019
+ that is not an Actions job has no log here. Exits 1 only when the checks
1020
+ themselves could not be read.
1021
+ `,
1022
+ });
1023
+ const rerunCmd = prsCmd
1024
+ .command('rerun <name>')
1025
+ .description('Re-run the failed jobs of one GitHub Actions workflow run.')
1026
+ .requiredOption('--repo <owner/repo>', 'One of the project\'s attached repos')
1027
+ .requiredOption('--run-id <id>', 'The workflow run (runId from prs failure --json)')
1028
+ .option('--json', 'Machine-readable result')
1029
+ .action(async (name, opts) => {
1030
+ const def = prProjectOrExit(name);
1031
+ const raw = opts.runId.trim();
1032
+ const runId = /^\d+$/.test(raw) ? Number(raw) : NaN;
1033
+ if (!Number.isSafeInteger(runId) || runId <= 0)
1034
+ prFail(`--run-id expects a positive integer, got "${opts.runId}".`);
1035
+ const repo = await prRepoOrExit(def, opts.repo);
1036
+ const result = await rerunFailedJobs(repo, runId);
1037
+ if (opts.json)
1038
+ console.log(JSON.stringify(result, null, 2));
1039
+ else if (result.requested)
1040
+ console.log(`${chalk.green(result.message)}: ${repo} run ${runId}`);
1041
+ else
1042
+ console.error(chalk.red(`Not re-run: ${repo} run ${runId}: ${result.message}`));
1043
+ if (!result.requested)
1044
+ process.exit(1);
1045
+ });
1046
+ setHelpSections(rerunCmd, {
1047
+ examples: `
1048
+ agents projects prs failure rush --repo phnx-labs/agi-cli --sha <sha> --json # runId per failing check
1049
+ agents projects prs rerun rush --repo phnx-labs/agi-cli --run-id 37243157132
1050
+ `,
1051
+ notes: `
1052
+ One REST call (POST actions/runs/{id}/rerun-failed-jobs). Re-running only
1053
+ repeats jobs, so it is safe to click again; GitHub refuses a run that is still
1054
+ in progress (exit 1, requested: false in --json).
956
1055
  `,
957
1056
  });
958
1057
  setHelpSections(prsCmd, {
959
1058
  examples: `
960
1059
  agents projects prs rush --json # every open PR across rush's repos (= prs list rush)
961
1060
  agents projects prs rush --json --repo phnx-labs/agi-cli --number 3646 # one PR, with checks + mergeability
1061
+ agents projects prs ready rush --repo phnx-labs/agi-cli --number 3646 --sha <headSha>
1062
+ agents projects prs review rush --repo phnx-labs/agi-cli --number 3646 --approve --sha <headSha>
1063
+ agents projects prs comment rush --repo phnx-labs/agi-cli --number 3646 --body-file -
962
1064
  agents projects prs merge rush --repo phnx-labs/agi-cli --number 3646 --sha <headSha>
1065
+ agents projects prs failure rush --repo phnx-labs/agi-cli --sha <sha>
1066
+ agents projects prs rerun rush --repo phnx-labs/agi-cli --run-id <runId>
963
1067
  `,
964
1068
  });
965
1069
  setHelpSections(prsListCmd, {
@@ -989,7 +1093,7 @@ export function registerProjectsCommands(program) {
989
1093
  partial (JSON reports errors per repository; text mode exits non-zero).
990
1094
  `,
991
1095
  });
992
- // ---- edit ----
1096
+ registerProjectTodoCommands(projects);
993
1097
  projects
994
1098
  .command('edit <name>')
995
1099
  .description('Open the project YAML in $EDITOR (it is hand-editable regardless).')
@@ -1000,33 +1104,21 @@ export function registerProjectsCommands(program) {
1000
1104
  process.exit(1);
1001
1105
  }
1002
1106
  const editor = process.env.VISUAL || process.env.EDITOR || 'vi';
1003
- // $EDITOR commonly carries args ("code --wait") — split like monitors/routines do.
1004
1107
  const parts = editor.split(/\s+/).filter(Boolean);
1005
1108
  const res = spawnSync(parts[0], [...parts.slice(1), target], { stdio: 'inherit' });
1006
1109
  process.exit(res.status ?? 0);
1007
1110
  });
1008
- // ---- probe (hidden; the peer half of `status --fleet`) ----
1009
1111
  projects
1010
1112
  .command('probe [paths...]', { hidden: true })
1011
1113
  .description('Probe workspace repos (presence, branch, drift, dirtiness) and print JSON. Answers for this machine only.')
1012
1114
  .action((paths) => {
1013
- // Never fans out — the recursion guard env is set by the parent fan-out,
1014
- // and this command has no remote code path either way.
1015
1115
  console.log(JSON.stringify(probeProjectWorkspaces(paths ?? []), null, 2));
1016
1116
  });
1017
- // ---- pull-local (hidden; the peer half of `pull`) ----
1018
1117
  projects
1019
1118
  .command('pull-local', { hidden: true })
1020
1119
  .description('Fast-forward workspace repos (default-branch only) and print JSON. Answers for this machine only.')
1021
1120
  .requiredOption('--targets <json>', 'JSON array of {path, expectedSlug} targets, from the orchestrating `pull`')
1022
1121
  .action(async (opts) => {
1023
- // Never fans out — this is the peer half of the fleet fan-out.
1024
- //
1025
- // Targets arrive as {path, expectedSlug} PAIRS, not bare paths: the slug
1026
- // is what lets this machine refuse to fast-forward a directory hosting a
1027
- // different repo, and it is hashed into the fingerprint the caller
1028
- // verifies. Decoding failures exit non-zero so the caller records this
1029
- // peer as skipped instead of reading a missing answer as "nothing to do".
1030
1122
  let targets;
1031
1123
  try {
1032
1124
  targets = decodePullTargets(opts.targets);
@@ -1039,7 +1131,6 @@ export function registerProjectsCommands(program) {
1039
1131
  const envelope = buildPullEnvelope(results, targets);
1040
1132
  console.log(JSON.stringify(envelope, null, 2));
1041
1133
  });
1042
- // ---- pull ----
1043
1134
  const pullCmd = projects
1044
1135
  .command('pull <name>')
1045
1136
  .description('Fast-forward every fleet checkout of a named project to its remote default branch.')
@@ -1058,14 +1149,8 @@ export function registerProjectsCommands(program) {
1058
1149
  process.exit(0);
1059
1150
  }
1060
1151
  const deviceFilter = resolveDeviceFilter(rawOpts.device, rawOpts.devices);
1061
- // Pull locally first.
1062
1152
  const self = machineId();
1063
1153
  const localResults = await pullProjectTargets(targets, self);
1064
- // Fan out to fleet peers. Send the full {path, expectedSlug} targets —
1065
- // bare paths would disable slug verification on every peer AND make the
1066
- // peer's fingerprint (which hashes the slug) unmatchable, so its whole
1067
- // answer would be discarded. Compute the fingerprint once so every peer
1068
- // envelope can be verified against the exact target set we sent.
1069
1154
  const expectedFingerprint = fingerprintTargets(targets);
1070
1155
  const remoteRes = await gatherRemoteAgentsJson({
1071
1156
  args: pullLocalArgs(targets),
@@ -1077,10 +1162,6 @@ export function registerProjectsCommands(program) {
1077
1162
  });
1078
1163
  const allResults = [...localResults, ...remoteRes.items];
1079
1164
  if (rawOpts.json) {
1080
- // Mirror `status --json`: peers that didn't answer, or answered
1081
- // unverifiably, go to stderr so a machine caller can still tell them
1082
- // apart from a device with nothing to report (the JSON array itself
1083
- // stays a clean result list).
1084
1165
  if (remoteRes.skipped.length > 0)
1085
1166
  process.stderr.write(formatFleetSkippedNote(remoteRes.skipped));
1086
1167
  if (remoteRes.parseFailed.length > 0)
@@ -1090,8 +1171,6 @@ export function registerProjectsCommands(program) {
1090
1171
  else {
1091
1172
  printProjectPullSummary(name, allResults, remoteRes.skipped, remoteRes.parseFailed);
1092
1173
  }
1093
- // A peer whose answer could not be verified already ran a real pull whose
1094
- // outcome we cannot see — that is a failed pull, not a quiet success.
1095
1174
  if (!projectPullComplete(allResults) || remoteRes.parseFailed.length > 0) {
1096
1175
  process.exit(1);
1097
1176
  }
@@ -1119,7 +1198,6 @@ export function registerProjectsCommands(program) {
1119
1198
  as unavailable and does not.
1120
1199
  `,
1121
1200
  });
1122
- // ---- import ----
1123
1201
  projects
1124
1202
  .command('import')
1125
1203
  .description('Import project definitions from Linear (via the `linear` CLI).')
@@ -1144,7 +1222,6 @@ export function registerProjectsCommands(program) {
1144
1222
  for (const skip of result.skipped)
1145
1223
  console.log(chalk.gray(` skip ${skip.name}: ${skip.reason}`));
1146
1224
  });
1147
- // ---- set ----
1148
1225
  projects
1149
1226
  .command('set <name>')
1150
1227
  .description('Change one field on a project definition, preserving everything else.')
@@ -1168,15 +1245,10 @@ export function registerProjectsCommands(program) {
1168
1245
  console.error(chalk.red('Nothing to set. Pass a field, e.g. --repo <owner/repo>.'));
1169
1246
  process.exit(1);
1170
1247
  }
1171
- // One --slug cannot name two directories. Refuse rather than guess which
1172
- // --add-dir it was meant for.
1173
1248
  if (opts.slug && opts.addDir.length !== 1) {
1174
1249
  console.error(chalk.red('--slug names a single --add-dir; pass exactly one --add-dir with it.'));
1175
1250
  process.exit(1);
1176
1251
  }
1177
- // Load, mutate the named fields, write back — the `link` pattern. NEVER
1178
- // the `add --force` pattern, which rebuilds the def from flags alone and
1179
- // silently drops linear/contexts/integrations that were not re-passed.
1180
1252
  if (opts.repo !== undefined)
1181
1253
  def.repo = opts.repo;
1182
1254
  if (opts.root !== undefined)
@@ -1186,11 +1258,6 @@ export function registerProjectsCommands(program) {
1186
1258
  if (opts.goal?.length)
1187
1259
  def.goals = opts.goal.map(parseGoalFlag);
1188
1260
  if (opts.path !== undefined) {
1189
- // `--path` is a subdir OF the root, so without one there is nothing to
1190
- // hang it off. A def imported with `--from-linear` that found no local
1191
- // checkout carries name + linear and no root — joining against '' there
1192
- // would silently write `/apps/cli`, an absolute path at the filesystem
1193
- // root, and the def would resolve somewhere that does not exist.
1194
1261
  const base = (opts.root ?? def.root ?? '').replace(/\/$/, '');
1195
1262
  if (!base) {
1196
1263
  console.error(chalk.red(`"${def.name}" has no root, so --path has nothing to resolve against.`));
@@ -1199,8 +1266,6 @@ export function registerProjectsCommands(program) {
1199
1266
  }
1200
1267
  def.defaultPath = `${base}/${opts.path.replace(/^\//, '')}`;
1201
1268
  }
1202
- // --rm-dir before --add-dir, so re-pointing one directory in a single
1203
- // command (`--rm-dir old --add-dir new`) does what it reads like.
1204
1269
  const removed = [];
1205
1270
  for (const d of opts.rmDir) {
1206
1271
  const target = path.resolve(expandLocalHome(d));
@@ -1241,7 +1306,6 @@ export function registerProjectsCommands(program) {
1241
1306
  for (const r of added)
1242
1307
  console.log(chalk.gray(` + dir ${r.path} · ${r.slug}`));
1243
1308
  });
1244
- // ---- link ----
1245
1309
  projects
1246
1310
  .command('link <name>')
1247
1311
  .description('Attach an external tracker to a project definition (writes linear.projectId + name into the YAML; re-run to pick up a Linear rename).')
@@ -1256,8 +1320,6 @@ export function registerProjectsCommands(program) {
1256
1320
  console.error(chalk.red('Nothing to link. Pass a tracker flag, e.g. --linear [query].'));
1257
1321
  process.exit(1);
1258
1322
  }
1259
- // Explicit user command — a missing/unauthenticated `linear` CLI is loud,
1260
- // unlike the best-effort card enrichment.
1261
1323
  let list;
1262
1324
  try {
1263
1325
  list = listLinearProjects();
@@ -1272,9 +1334,6 @@ export function registerProjectsCommands(program) {
1272
1334
  pick = pickLinearProject(query, list);
1273
1335
  }
1274
1336
  else {
1275
- // Auto-suggest from the def's own identity — the primary repo slug is
1276
- // the sharpest key, then the def name. Only an exact normalized match
1277
- // writes itself; anything weaker asks the user to disambiguate.
1278
1337
  pick = { kind: 'none' };
1279
1338
  for (const hint of [def.repo, def.name].filter((h) => typeof h === 'string' && h.length > 0)) {
1280
1339
  const d = pickLinearProject(hint, list);
@@ -1301,21 +1360,16 @@ export function registerProjectsCommands(program) {
1301
1360
  process.exit(1);
1302
1361
  }
1303
1362
  const p = pick.project;
1304
- // Preserve every other field — load, set linear, write back. Keep a
1305
- // previously linked url when the new CLI row carries none.
1306
1363
  if (def.linear?.projectId && def.linear.projectId !== p.id) {
1307
1364
  console.log(chalk.gray(` replacing previous Linear link (${def.linear.projectId})`));
1308
1365
  }
1309
1366
  if (def.linear?.name && def.linear.name !== p.name) {
1310
1367
  console.log(chalk.gray(` renaming "${def.linear.name}" → "${p.name}" (Linear is authoritative)`));
1311
1368
  }
1312
- // Assigned, not spread over `def.linear`: a spread would resurrect a url
1313
- // that nextLinearLink deliberately dropped. The block has no other fields.
1314
1369
  def.linear = nextLinearLink(def.linear, p);
1315
1370
  writeProjectDef(def);
1316
1371
  console.log(chalk.green(`${def.name} → Linear project "${p.name}" (${p.id})${p.url ? ` ${p.url}` : ''}`));
1317
1372
  });
1318
- // ---- save ----
1319
1373
  projects
1320
1374
  .command('save')
1321
1375
  .description('Create or update one project from a complete ProjectDef JSON object on stdin.')
@@ -1357,7 +1411,6 @@ export function registerProjectsCommands(program) {
1357
1411
  }
1358
1412
  console.log(JSON.stringify(saved, null, 2));
1359
1413
  });
1360
- // ---- rm ----
1361
1414
  projects
1362
1415
  .command('remove <name>')
1363
1416
  .alias('rm')