@phnx-labs/agents-cli 1.22.120 → 1.22.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1603) hide show
  1. package/CHANGELOG.md +227 -0
  2. package/README.md +19 -2
  3. package/dist/bootstrap.d.ts +0 -15
  4. package/dist/bootstrap.js +10 -409
  5. package/dist/cli/command-registry.d.ts +0 -58
  6. package/dist/cli/command-registry.js +2 -74
  7. package/dist/commands/accounts.d.ts +0 -17
  8. package/dist/commands/accounts.js +1 -52
  9. package/dist/commands/alias.d.ts +0 -12
  10. package/dist/commands/alias.js +0 -6
  11. package/dist/commands/apply.d.ts +0 -15
  12. package/dist/commands/apply.js +0 -63
  13. package/dist/commands/audit.d.ts +0 -12
  14. package/dist/commands/audit.js +0 -13
  15. package/dist/commands/auth.js +4 -12
  16. package/dist/commands/beta.d.ts +0 -6
  17. package/dist/commands/beta.js +2 -6
  18. package/dist/commands/browser-sessions-picker.d.ts +0 -8
  19. package/dist/commands/browser-sessions-picker.js +0 -26
  20. package/dist/commands/browser.d.ts +0 -57
  21. package/dist/commands/browser.js +0 -80
  22. package/dist/commands/budget.d.ts +0 -13
  23. package/dist/commands/budget.js +0 -2
  24. package/dist/commands/cli.d.ts +0 -12
  25. package/dist/commands/cli.js +0 -4
  26. package/dist/commands/cloud.d.ts +0 -9
  27. package/dist/commands/cloud.js +0 -43
  28. package/dist/commands/commands.d.ts +0 -9
  29. package/dist/commands/commands.js +0 -18
  30. package/dist/commands/computer-sessions-picker.d.ts +0 -11
  31. package/dist/commands/computer-sessions-picker.js +0 -29
  32. package/dist/commands/computer.d.ts +0 -62
  33. package/dist/commands/computer.js +3 -114
  34. package/dist/commands/config.d.ts +0 -14
  35. package/dist/commands/config.js +21 -60
  36. package/dist/commands/cost.d.ts +0 -11
  37. package/dist/commands/cost.js +1 -17
  38. package/dist/commands/daemon-test-harness.d.ts +0 -32
  39. package/dist/commands/daemon-test-harness.js +1 -36
  40. package/dist/commands/daemon.d.ts +0 -46
  41. package/dist/commands/daemon.js +8 -255
  42. package/dist/commands/detach-core.d.ts +0 -28
  43. package/dist/commands/detach-core.js +0 -30
  44. package/dist/commands/detach.d.ts +1 -12
  45. package/dist/commands/detach.js +16 -52
  46. package/dist/commands/device-config-test-harness.js +0 -12
  47. package/dist/commands/doctor.d.ts +0 -103
  48. package/dist/commands/doctor.js +3 -279
  49. package/dist/commands/events.d.ts +0 -29
  50. package/dist/commands/events.js +1 -55
  51. package/dist/commands/exec.d.ts +0 -163
  52. package/dist/commands/exec.js +15 -964
  53. package/dist/commands/factory.d.ts +0 -6
  54. package/dist/commands/factory.js +0 -2
  55. package/dist/commands/feed-watch.js +0 -20
  56. package/dist/commands/feed.d.ts +0 -38
  57. package/dist/commands/feed.js +1 -151
  58. package/dist/commands/feedback.d.ts +0 -5
  59. package/dist/commands/feedback.js +0 -5
  60. package/dist/commands/fleet-capture.d.ts +0 -12
  61. package/dist/commands/fleet-capture.js +1 -39
  62. package/dist/commands/focus.d.ts +6 -94
  63. package/dist/commands/focus.js +13 -183
  64. package/dist/commands/fork.d.ts +0 -21
  65. package/dist/commands/fork.js +0 -45
  66. package/dist/commands/funnel.d.ts +0 -3
  67. package/dist/commands/go.d.ts +2 -71
  68. package/dist/commands/go.js +5 -99
  69. package/dist/commands/harness-hooks.d.ts +0 -41
  70. package/dist/commands/harness-hooks.js +0 -48
  71. package/dist/commands/harness-wizard.d.ts +0 -137
  72. package/dist/commands/harness-wizard.js +0 -109
  73. package/dist/commands/harness.d.ts +0 -63
  74. package/dist/commands/harness.js +0 -103
  75. package/dist/commands/hooks.d.ts +0 -9
  76. package/dist/commands/hooks.js +0 -26
  77. package/dist/commands/humans.d.ts +0 -8
  78. package/dist/commands/humans.js +0 -8
  79. package/dist/commands/import.d.ts +0 -22
  80. package/dist/commands/import.js +0 -79
  81. package/dist/commands/insights.d.ts +0 -37
  82. package/dist/commands/insights.js +3 -115
  83. package/dist/commands/inspect.d.ts +0 -117
  84. package/dist/commands/inspect.js +2 -448
  85. package/dist/commands/lease.d.ts +0 -28
  86. package/dist/commands/lease.js +0 -43
  87. package/dist/commands/logs.d.ts +0 -23
  88. package/dist/commands/logs.js +0 -30
  89. package/dist/commands/mailboxes.d.ts +0 -18
  90. package/dist/commands/mailboxes.js +0 -29
  91. package/dist/commands/mcp.d.ts +0 -9
  92. package/dist/commands/mcp.js +0 -53
  93. package/dist/commands/memory.d.ts +0 -7
  94. package/dist/commands/memory.js +0 -7
  95. package/dist/commands/menubar.d.ts +0 -8
  96. package/dist/commands/menubar.js +0 -24
  97. package/dist/commands/message.d.ts +0 -23
  98. package/dist/commands/message.js +0 -50
  99. package/dist/commands/mine.d.ts +0 -22
  100. package/dist/commands/mine.js +0 -21
  101. package/dist/commands/models.d.ts +0 -8
  102. package/dist/commands/models.js +0 -33
  103. package/dist/commands/modes.d.ts +0 -10
  104. package/dist/commands/modes.js +0 -13
  105. package/dist/commands/monitors.d.ts +0 -9
  106. package/dist/commands/monitors.js +3 -160
  107. package/dist/commands/open.d.ts +0 -26
  108. package/dist/commands/open.js +0 -10
  109. package/dist/commands/output.d.ts +0 -18
  110. package/dist/commands/output.js +1 -34
  111. package/dist/commands/packages-materialize.d.ts +0 -11
  112. package/dist/commands/packages-materialize.js +0 -3
  113. package/dist/commands/packages.d.ts +0 -10
  114. package/dist/commands/packages.js +0 -50
  115. package/dist/commands/perf.d.ts +0 -41
  116. package/dist/commands/perf.js +0 -55
  117. package/dist/commands/permissions.d.ts +0 -9
  118. package/dist/commands/permissions.js +0 -43
  119. package/dist/commands/plugins.d.ts +0 -14
  120. package/dist/commands/plugins.js +2 -55
  121. package/dist/commands/profiles.d.ts +0 -25
  122. package/dist/commands/profiles.js +0 -27
  123. package/dist/commands/projects-todo.d.ts +2 -0
  124. package/dist/commands/projects-todo.js +132 -0
  125. package/dist/commands/projects.d.ts +0 -85
  126. package/dist/commands/projects.js +344 -291
  127. package/dist/commands/prune.js +0 -30
  128. package/dist/commands/ps-roster.d.ts +92 -0
  129. package/dist/commands/ps-roster.js +744 -0
  130. package/dist/commands/ps.d.ts +6 -0
  131. package/dist/commands/ps.js +98 -0
  132. package/dist/commands/refresh-rules.d.ts +0 -13
  133. package/dist/commands/refresh-rules.js +0 -14
  134. package/dist/commands/reminders.d.ts +0 -7
  135. package/dist/commands/repo.d.ts +0 -89
  136. package/dist/commands/repo.js +7 -205
  137. package/dist/commands/resource-view.d.ts +0 -33
  138. package/dist/commands/resource-view.js +0 -49
  139. package/dist/commands/resume.d.ts +1 -19
  140. package/dist/commands/resume.js +0 -50
  141. package/dist/commands/route.d.ts +0 -10
  142. package/dist/commands/route.js +0 -19
  143. package/dist/commands/routines.d.ts +0 -42
  144. package/dist/commands/routines.js +5 -290
  145. package/dist/commands/routines.test-fixture.d.ts +0 -34
  146. package/dist/commands/routines.test-fixture.js +4 -100
  147. package/dist/commands/rules.d.ts +0 -9
  148. package/dist/commands/rules.js +1 -6
  149. package/dist/commands/run-account-picker.d.ts +0 -59
  150. package/dist/commands/run-account-picker.js +0 -71
  151. package/dist/commands/run-broadcast.d.ts +0 -9
  152. package/dist/commands/run-broadcast.js +0 -7
  153. package/dist/commands/run-cloud.d.ts +0 -15
  154. package/dist/commands/run-cloud.js +0 -37
  155. package/dist/commands/run-device-picker.d.ts +0 -25
  156. package/dist/commands/run-device-picker.js +1 -53
  157. package/dist/commands/secrets-passthrough.d.ts +0 -31
  158. package/dist/commands/secrets-passthrough.js +0 -10
  159. package/dist/commands/send.d.ts +0 -20
  160. package/dist/commands/send.js +14 -18
  161. package/dist/commands/sessions-backfill.d.ts +0 -7
  162. package/dist/commands/sessions-backfill.js +1 -16
  163. package/dist/commands/sessions-backup-setup.js +0 -11
  164. package/dist/commands/sessions-bookmark.d.ts +0 -8
  165. package/dist/commands/sessions-bookmark.js +0 -28
  166. package/dist/commands/sessions-browser.d.ts +2 -117
  167. package/dist/commands/sessions-browser.js +5 -243
  168. package/dist/commands/sessions-export.d.ts +1 -26
  169. package/dist/commands/sessions-export.js +3 -81
  170. package/dist/commands/sessions-import.d.ts +0 -14
  171. package/dist/commands/sessions-import.js +0 -59
  172. package/dist/commands/sessions-inject.d.ts +0 -60
  173. package/dist/commands/sessions-inject.js +3 -96
  174. package/dist/commands/sessions-migrate.d.ts +2 -37
  175. package/dist/commands/sessions-migrate.js +7 -159
  176. package/dist/commands/sessions-optimize.d.ts +0 -12
  177. package/dist/commands/sessions-picker-factory.d.ts +0 -7
  178. package/dist/commands/sessions-picker-factory.js +0 -8
  179. package/dist/commands/sessions-picker.d.ts +4 -103
  180. package/dist/commands/sessions-picker.js +13 -352
  181. package/dist/commands/sessions-render.d.ts +1 -2
  182. package/dist/commands/sessions-render.js +3 -7
  183. package/dist/commands/sessions-resume.d.ts +1 -24
  184. package/dist/commands/sessions-resume.js +2 -65
  185. package/dist/commands/sessions-share.d.ts +1 -9
  186. package/dist/commands/sessions-share.js +1 -45
  187. package/dist/commands/sessions-stats.d.ts +0 -24
  188. package/dist/commands/sessions-stats.js +0 -49
  189. package/dist/commands/sessions-stop.d.ts +1 -20
  190. package/dist/commands/sessions-stop.js +4 -9
  191. package/dist/commands/sessions-tail.d.ts +1 -19
  192. package/dist/commands/sessions-tail.js +3 -36
  193. package/dist/commands/sessions-trace.d.ts +5 -36
  194. package/dist/commands/sessions-trace.js +7 -82
  195. package/dist/commands/sessions.d.ts +1 -666
  196. package/dist/commands/sessions.js +30 -2279
  197. package/dist/commands/sessions.test-fixture.d.ts +0 -9
  198. package/dist/commands/sessions.test-fixture.js +8 -23
  199. package/dist/commands/setup-accounts.d.ts +0 -6
  200. package/dist/commands/setup-browser.d.ts +0 -23
  201. package/dist/commands/setup-browser.js +0 -28
  202. package/dist/commands/setup-computer.d.ts +0 -16
  203. package/dist/commands/setup-computer.js +0 -28
  204. package/dist/commands/setup-fleet.d.ts +0 -8
  205. package/dist/commands/setup-fleet.js +0 -11
  206. package/dist/commands/setup-mine.d.ts +0 -14
  207. package/dist/commands/setup-mine.js +0 -25
  208. package/dist/commands/setup-preferences.d.ts +0 -47
  209. package/dist/commands/setup-preferences.js +0 -53
  210. package/dist/commands/setup-secrets.d.ts +2 -24
  211. package/dist/commands/setup-secrets.js +0 -24
  212. package/dist/commands/setup-term.d.ts +0 -21
  213. package/dist/commands/setup-term.js +0 -21
  214. package/dist/commands/setup-terminal.d.ts +0 -1
  215. package/dist/commands/setup-terminal.js +0 -1
  216. package/dist/commands/setup-tools.d.ts +2 -0
  217. package/dist/commands/setup-tools.js +73 -0
  218. package/dist/commands/setup.d.ts +0 -20
  219. package/dist/commands/setup.js +4 -57
  220. package/dist/commands/skills.d.ts +0 -9
  221. package/dist/commands/skills.js +1 -22
  222. package/dist/commands/snapshot.d.ts +0 -9
  223. package/dist/commands/snapshot.js +0 -10
  224. package/dist/commands/ssh.d.ts +0 -64
  225. package/dist/commands/ssh.js +9 -420
  226. package/dist/commands/status.d.ts +0 -12
  227. package/dist/commands/status.js +0 -26
  228. package/dist/commands/subagents.d.ts +0 -8
  229. package/dist/commands/subagents.js +0 -31
  230. package/dist/commands/sync.d.ts +0 -37
  231. package/dist/commands/sync.js +0 -256
  232. package/dist/commands/teams-picker.d.ts +0 -3
  233. package/dist/commands/teams-picker.js +0 -34
  234. package/dist/commands/teams.d.ts +1 -76
  235. package/dist/commands/teams.js +9 -477
  236. package/dist/commands/tmux.d.ts +0 -25
  237. package/dist/commands/tmux.js +0 -46
  238. package/dist/commands/traces.js +0 -19
  239. package/dist/commands/trash.d.ts +0 -17
  240. package/dist/commands/trash.js +1 -11
  241. package/dist/commands/uninstall.d.ts +0 -9
  242. package/dist/commands/uninstall.js +0 -6
  243. package/dist/commands/update.d.ts +0 -22
  244. package/dist/commands/update.js +0 -44
  245. package/dist/commands/upgrade.d.ts +0 -1
  246. package/dist/commands/upgrade.js +0 -1
  247. package/dist/commands/utils.d.ts +0 -85
  248. package/dist/commands/utils.js +1 -95
  249. package/dist/commands/versions.d.ts +0 -16
  250. package/dist/commands/versions.js +0 -134
  251. package/dist/commands/view.d.ts +0 -90
  252. package/dist/commands/view.js +4 -343
  253. package/dist/commands/watchdog.d.ts +0 -19
  254. package/dist/commands/watchdog.js +3 -43
  255. package/dist/commands/webhook.d.ts +0 -8
  256. package/dist/commands/webhook.js +0 -14
  257. package/dist/commands/workflows.d.ts +0 -8
  258. package/dist/commands/workflows.js +0 -6
  259. package/dist/index.d.ts +0 -25
  260. package/dist/index.js +5 -119
  261. package/dist/lib/account-capabilities.d.ts +0 -34
  262. package/dist/lib/account-capabilities.js +0 -32
  263. package/dist/lib/account-catalog.d.ts +0 -128
  264. package/dist/lib/account-catalog.js +8 -154
  265. package/dist/lib/account-provider-registry.d.ts +0 -14
  266. package/dist/lib/account-provider-registry.js +0 -8
  267. package/dist/lib/account-registry.d.ts +0 -74
  268. package/dist/lib/account-registry.js +14 -189
  269. package/dist/lib/account-schema.d.ts +0 -19
  270. package/dist/lib/account-schema.js +0 -43
  271. package/dist/lib/accounting/account-launch.d.ts +0 -15
  272. package/dist/lib/accounting/account-launch.js +1 -3
  273. package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
  274. package/dist/lib/accounting/account-pool-collect.js +0 -42
  275. package/dist/lib/accounting/account-pool.d.ts +0 -41
  276. package/dist/lib/accounting/account-pool.js +0 -17
  277. package/dist/lib/accounting/capacity.d.ts +0 -32
  278. package/dist/lib/accounting/capacity.js +0 -32
  279. package/dist/lib/accounting/rotate.d.ts +0 -518
  280. package/dist/lib/accounting/rotate.js +4 -598
  281. package/dist/lib/accounting/usage-ingest.d.ts +0 -1
  282. package/dist/lib/accounting/usage-ingest.js +0 -44
  283. package/dist/lib/accounting/usage-sync.d.ts +0 -60
  284. package/dist/lib/accounting/usage-sync.js +4 -51
  285. package/dist/lib/accounting/usage.d.ts +0 -632
  286. package/dist/lib/accounting/usage.js +14 -1055
  287. package/dist/lib/accounts/add.d.ts +0 -60
  288. package/dist/lib/accounts/add.js +0 -127
  289. package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
  290. package/dist/lib/accounts/auth-operation-lock.js +0 -4
  291. package/dist/lib/accounts/migrate.d.ts +0 -9
  292. package/dist/lib/accounts/migrate.js +3 -42
  293. package/dist/lib/accounts/slots.d.ts +0 -25
  294. package/dist/lib/accounts/slots.js +1 -49
  295. package/dist/lib/acp/client.d.ts +0 -16
  296. package/dist/lib/acp/client.js +0 -29
  297. package/dist/lib/acp/harnesses.d.ts +0 -15
  298. package/dist/lib/acp/harnesses.js +0 -16
  299. package/dist/lib/acp/run.d.ts +0 -8
  300. package/dist/lib/acp/run.js +0 -8
  301. package/dist/lib/actor.d.ts +1 -71
  302. package/dist/lib/actor.js +1 -99
  303. package/dist/lib/add-dir.d.ts +0 -46
  304. package/dist/lib/add-dir.js +1 -70
  305. package/dist/lib/address.d.ts +0 -17
  306. package/dist/lib/address.js +0 -15
  307. package/dist/lib/agent-cli-commands.d.ts +0 -10
  308. package/dist/lib/agent-cli-commands.js +0 -10
  309. package/dist/lib/agent-modes.d.ts +0 -29
  310. package/dist/lib/agent-modes.js +0 -31
  311. package/dist/lib/agent-spec/agents.d.ts +0 -426
  312. package/dist/lib/agent-spec/agents.js +37 -924
  313. package/dist/lib/agent-spec/index.d.ts +0 -5
  314. package/dist/lib/agent-spec/index.js +0 -14
  315. package/dist/lib/agent-spec/materialize.d.ts +0 -10
  316. package/dist/lib/agent-spec/materialize.js +2 -139
  317. package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
  318. package/dist/lib/agent-spec/package-resolve.js +1 -44
  319. package/dist/lib/agent-spec/package-schema.d.ts +0 -2
  320. package/dist/lib/agent-spec/package-schema.js +0 -11
  321. package/dist/lib/agent-spec/package-types.d.ts +0 -27
  322. package/dist/lib/agent-spec/package-types.js +0 -1
  323. package/dist/lib/agent-spec/primitives.d.ts +0 -18
  324. package/dist/lib/agent-spec/primitives.js +0 -27
  325. package/dist/lib/agent-spec/provider.js +0 -2
  326. package/dist/lib/agent-spec/resolve.d.ts +0 -23
  327. package/dist/lib/agent-spec/resolve.js +0 -41
  328. package/dist/lib/agent-spec/types.d.ts +0 -34
  329. package/dist/lib/agent-spec/types.js +0 -6
  330. package/dist/lib/agents.d.ts +0 -1
  331. package/dist/lib/agents.js +0 -1
  332. package/dist/lib/analytics/mix-commands.d.ts +0 -23
  333. package/dist/lib/analytics/mix-commands.js +0 -26
  334. package/dist/lib/analytics/recipes.d.ts +0 -1
  335. package/dist/lib/analytics/recipes.js +5 -10
  336. package/dist/lib/analytics/usage-db.js +4 -6
  337. package/dist/lib/answer-router.d.ts +0 -61
  338. package/dist/lib/answer-router.js +0 -57
  339. package/dist/lib/app-bundle-install.d.ts +0 -13
  340. package/dist/lib/app-bundle-install.js +0 -50
  341. package/dist/lib/artifact-actions.d.ts +0 -15
  342. package/dist/lib/artifact-actions.js +0 -18
  343. package/dist/lib/artifacts-client.d.ts +0 -10
  344. package/dist/lib/artifacts-client.js +0 -17
  345. package/dist/lib/ask-classifier.d.ts +0 -38
  346. package/dist/lib/ask-classifier.js +0 -27
  347. package/dist/lib/audit/log.d.ts +0 -47
  348. package/dist/lib/audit/log.js +1 -59
  349. package/dist/lib/auth-health.d.ts +0 -213
  350. package/dist/lib/auth-health.js +16 -266
  351. package/dist/lib/auth-mint.d.ts +0 -83
  352. package/dist/lib/auth-mint.js +8 -85
  353. package/dist/lib/auto-pull-worker.d.ts +0 -10
  354. package/dist/lib/auto-pull-worker.js +3 -48
  355. package/dist/lib/auto-pull.d.ts +0 -64
  356. package/dist/lib/auto-pull.js +0 -79
  357. package/dist/lib/beta.d.ts +0 -9
  358. package/dist/lib/beta.js +0 -9
  359. package/dist/lib/binary-shadow.d.ts +0 -22
  360. package/dist/lib/binary-shadow.js +4 -34
  361. package/dist/lib/boot-profile.d.ts +0 -10
  362. package/dist/lib/boot-profile.js +1 -31
  363. package/dist/lib/brand.d.ts +0 -20
  364. package/dist/lib/brand.js +0 -50
  365. package/dist/lib/browser/context.d.ts +0 -54
  366. package/dist/lib/browser/context.js +0 -49
  367. package/dist/lib/browser/paths.d.ts +0 -21
  368. package/dist/lib/browser/paths.js +0 -26
  369. package/dist/lib/browser/record.d.ts +0 -34
  370. package/dist/lib/browser/record.js +0 -38
  371. package/dist/lib/browser/sessions-list.d.ts +1 -79
  372. package/dist/lib/browser/sessions-list.js +2 -98
  373. package/dist/lib/browser-client.d.ts +0 -112
  374. package/dist/lib/browser-client.js +1 -90
  375. package/dist/lib/budget/config.d.ts +0 -6
  376. package/dist/lib/budget/config.js +0 -29
  377. package/dist/lib/budget/enforce.d.ts +0 -50
  378. package/dist/lib/budget/enforce.js +0 -27
  379. package/dist/lib/budget/ledger.d.ts +0 -23
  380. package/dist/lib/budget/ledger.js +0 -28
  381. package/dist/lib/budget/live-cloud.d.ts +0 -26
  382. package/dist/lib/budget/live-cloud.js +0 -12
  383. package/dist/lib/budget/live-team.d.ts +0 -17
  384. package/dist/lib/budget/live-team.js +1 -35
  385. package/dist/lib/budget/preflight.d.ts +0 -51
  386. package/dist/lib/budget/preflight.js +0 -36
  387. package/dist/lib/byok-usage.d.ts +0 -20
  388. package/dist/lib/byok-usage.js +1 -24
  389. package/dist/lib/capabilities.d.ts +0 -24
  390. package/dist/lib/capabilities.js +0 -29
  391. package/dist/lib/catchup.d.ts +0 -87
  392. package/dist/lib/catchup.js +1 -81
  393. package/dist/lib/channels/owner-forward.d.ts +0 -70
  394. package/dist/lib/channels/owner-forward.js +1 -43
  395. package/dist/lib/channels/owner-sink.js +0 -21
  396. package/dist/lib/channels/providers/desktop.d.ts +0 -37
  397. package/dist/lib/channels/providers/desktop.js +0 -72
  398. package/dist/lib/channels/providers/index.d.ts +0 -1
  399. package/dist/lib/channels/providers/index.js +2 -6
  400. package/dist/lib/channels/providers/mailbox.js +0 -7
  401. package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
  402. package/dist/lib/channels/providers/rush.d.ts +0 -2
  403. package/dist/lib/channels/providers/rush.js +0 -26
  404. package/dist/lib/channels/providers/session.d.ts +2 -0
  405. package/dist/lib/channels/providers/session.js +26 -0
  406. package/dist/lib/channels/registry.d.ts +0 -27
  407. package/dist/lib/channels/registry.js +0 -10
  408. package/dist/lib/channels/resolve.d.ts +0 -19
  409. package/dist/lib/channels/resolve.js +0 -2
  410. package/dist/lib/channels/send.d.ts +0 -50
  411. package/dist/lib/channels/send.js +0 -25
  412. package/dist/lib/checkpoint.d.ts +0 -36
  413. package/dist/lib/checkpoint.js +0 -28
  414. package/dist/lib/claude-account-token.d.ts +0 -98
  415. package/dist/lib/claude-account-token.js +7 -169
  416. package/dist/lib/claude-statusline.d.ts +0 -41
  417. package/dist/lib/claude-statusline.js +0 -68
  418. package/dist/lib/cli-entry.d.ts +0 -26
  419. package/dist/lib/cli-entry.js +1 -61
  420. package/dist/lib/cli-resources.d.ts +31 -89
  421. package/dist/lib/cli-resources.js +116 -152
  422. package/dist/lib/cloud/antigravity.d.ts +0 -29
  423. package/dist/lib/cloud/antigravity.js +0 -36
  424. package/dist/lib/cloud/codex.d.ts +0 -8
  425. package/dist/lib/cloud/codex.js +0 -41
  426. package/dist/lib/cloud/cursor.d.ts +0 -5
  427. package/dist/lib/cloud/cursor.js +2 -7
  428. package/dist/lib/cloud/dispatch.d.ts +0 -13
  429. package/dist/lib/cloud/dispatch.js +1 -48
  430. package/dist/lib/cloud/factory.d.ts +0 -52
  431. package/dist/lib/cloud/factory.js +3 -67
  432. package/dist/lib/cloud/host.d.ts +0 -39
  433. package/dist/lib/cloud/host.js +5 -48
  434. package/dist/lib/cloud/registry.d.ts +0 -25
  435. package/dist/lib/cloud/registry.js +0 -29
  436. package/dist/lib/cloud/rush.d.ts +0 -47
  437. package/dist/lib/cloud/rush.js +1 -82
  438. package/dist/lib/cloud/session-index.d.ts +0 -27
  439. package/dist/lib/cloud/session-index.js +1 -32
  440. package/dist/lib/cloud/store.d.ts +0 -18
  441. package/dist/lib/cloud/store.js +0 -28
  442. package/dist/lib/cloud/stream.d.ts +0 -14
  443. package/dist/lib/cloud/stream.js +0 -25
  444. package/dist/lib/cloud/types.d.ts +0 -168
  445. package/dist/lib/cloud/types.js +0 -46
  446. package/dist/lib/cloudflare/creds.d.ts +0 -2
  447. package/dist/lib/cloudflare/creds.js +0 -14
  448. package/dist/lib/cloudflare/provision.d.ts +0 -8
  449. package/dist/lib/cloudflare/provision.js +1 -19
  450. package/dist/lib/codex-home.d.ts +0 -60
  451. package/dist/lib/codex-home.js +2 -72
  452. package/dist/lib/codex-policy.d.ts +0 -10
  453. package/dist/lib/codex-policy.js +0 -13
  454. package/dist/lib/command-skills.d.ts +0 -10
  455. package/dist/lib/command-skills.js +0 -10
  456. package/dist/lib/commands.d.ts +0 -74
  457. package/dist/lib/commands.js +0 -112
  458. package/dist/lib/comms-render.d.ts +0 -5
  459. package/dist/lib/comms-render.js +0 -5
  460. package/dist/lib/computer/context.d.ts +0 -23
  461. package/dist/lib/computer/context.js +0 -14
  462. package/dist/lib/computer/policy.d.ts +0 -20
  463. package/dist/lib/computer/policy.js +0 -53
  464. package/dist/lib/computer/record.d.ts +0 -33
  465. package/dist/lib/computer/record.js +1 -48
  466. package/dist/lib/computer/sessions-list.d.ts +1 -128
  467. package/dist/lib/computer/sessions-list.js +6 -165
  468. package/dist/lib/computer-client.d.ts +0 -106
  469. package/dist/lib/computer-client.js +5 -86
  470. package/dist/lib/concurrency.d.ts +0 -14
  471. package/dist/lib/concurrency.js +0 -3
  472. package/dist/lib/config-drift.d.ts +0 -31
  473. package/dist/lib/config-drift.js +0 -32
  474. package/dist/lib/config-keys.d.ts +1 -65
  475. package/dist/lib/config-keys.js +6 -52
  476. package/dist/lib/config-transfer.d.ts +0 -14
  477. package/dist/lib/config-transfer.js +0 -26
  478. package/dist/lib/convert.d.ts +0 -17
  479. package/dist/lib/convert.js +0 -18
  480. package/dist/lib/crabbox/cli.d.ts +0 -156
  481. package/dist/lib/crabbox/cli.js +1 -188
  482. package/dist/lib/crabbox/config.d.ts +0 -18
  483. package/dist/lib/crabbox/config.js +1 -19
  484. package/dist/lib/crabbox/lease.d.ts +0 -93
  485. package/dist/lib/crabbox/lease.js +4 -148
  486. package/dist/lib/crabbox/progress.d.ts +0 -56
  487. package/dist/lib/crabbox/progress.js +2 -49
  488. package/dist/lib/crabbox/runtimes.d.ts +0 -94
  489. package/dist/lib/crabbox/runtimes.js +1 -111
  490. package/dist/lib/crabbox/setup-copy.d.ts +0 -64
  491. package/dist/lib/crabbox/setup-copy.js +1 -53
  492. package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
  493. package/dist/lib/daemon/account-state-daemon-service.js +2 -63
  494. package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
  495. package/dist/lib/daemon/attention-notify-service.js +1 -24
  496. package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
  497. package/dist/lib/daemon/auth-sync-service.js +0 -56
  498. package/dist/lib/daemon/catchup-service.d.ts +0 -34
  499. package/dist/lib/daemon/catchup-service.js +0 -30
  500. package/dist/lib/daemon/daemon.d.ts +0 -374
  501. package/dist/lib/daemon/daemon.js +44 -1049
  502. package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
  503. package/dist/lib/daemon/daemon.test-fixture.js +1 -24
  504. package/dist/lib/daemon/device-probe-service.d.ts +0 -16
  505. package/dist/lib/daemon/device-probe-service.js +0 -20
  506. package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
  507. package/dist/lib/daemon/feed-stream-service.js +0 -20
  508. package/dist/lib/daemon/harness-update-service.d.ts +2 -61
  509. package/dist/lib/daemon/harness-update-service.js +6 -86
  510. package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
  511. package/dist/lib/daemon/heartbeat-service.js +0 -1
  512. package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
  513. package/dist/lib/daemon/leaked-daemons.js +2 -78
  514. package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
  515. package/dist/lib/daemon/monitor-engine-service.js +3 -15
  516. package/dist/lib/daemon/runner.d.ts +0 -194
  517. package/dist/lib/daemon/runner.js +39 -760
  518. package/dist/lib/daemon/self-heal-service.d.ts +18 -17
  519. package/dist/lib/daemon/self-heal-service.js +83 -37
  520. package/dist/lib/daemon/self-update-service.d.ts +1 -131
  521. package/dist/lib/daemon/self-update-service.js +26 -189
  522. package/dist/lib/daemon/service.d.ts +0 -73
  523. package/dist/lib/daemon/service.js +0 -34
  524. package/dist/lib/daemon/session-index-service.d.ts +0 -12
  525. package/dist/lib/daemon/session-index-service.js +0 -23
  526. package/dist/lib/daemon/session-state-service.d.ts +0 -8
  527. package/dist/lib/daemon/session-state-service.js +0 -8
  528. package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
  529. package/dist/lib/daemon/session-summarizer-service.js +1 -19
  530. package/dist/lib/daemon/session-title-service.d.ts +0 -25
  531. package/dist/lib/daemon/session-title-service.js +0 -32
  532. package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
  533. package/dist/lib/daemon/state-dir-check-service.js +0 -29
  534. package/dist/lib/daemon/supervisor.d.ts +0 -112
  535. package/dist/lib/daemon/supervisor.js +4 -147
  536. package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
  537. package/dist/lib/daemon/testdata/process-view-start.js +0 -5
  538. package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
  539. package/dist/lib/daemon/tmux-reap-service.js +0 -1
  540. package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
  541. package/dist/lib/daemon/usage-sync-service.js +0 -26
  542. package/dist/lib/daemon/watchdog-service.d.ts +0 -9
  543. package/dist/lib/daemon/watchdog-service.js +0 -13
  544. package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
  545. package/dist/lib/daemon/webhook-receiver-service.js +0 -1
  546. package/dist/lib/daemon-health.d.ts +0 -55
  547. package/dist/lib/daemon-health.js +4 -77
  548. package/dist/lib/daemon-services.d.ts +0 -36
  549. package/dist/lib/daemon-services.js +0 -45
  550. package/dist/lib/daemon-ticks.d.ts +0 -126
  551. package/dist/lib/daemon-ticks.js +1 -156
  552. package/dist/lib/daemon-webhooks.d.ts +0 -57
  553. package/dist/lib/daemon-webhooks.js +2 -54
  554. package/dist/lib/deeplink/register.d.ts +0 -15
  555. package/dist/lib/deeplink/register.js +0 -60
  556. package/dist/lib/deeplink/url.d.ts +0 -24
  557. package/dist/lib/deeplink/url.js +1 -33
  558. package/dist/lib/device-config.d.ts +1 -192
  559. package/dist/lib/device-config.js +86 -240
  560. package/dist/lib/devices/config-migration.d.ts +0 -43
  561. package/dist/lib/devices/config-migration.js +7 -127
  562. package/dist/lib/devices/connect.d.ts +0 -168
  563. package/dist/lib/devices/connect.js +6 -254
  564. package/dist/lib/devices/device-docs.d.ts +0 -24
  565. package/dist/lib/devices/device-docs.js +0 -46
  566. package/dist/lib/devices/discovery-policy.d.ts +0 -30
  567. package/dist/lib/devices/discovery-policy.js +3 -34
  568. package/dist/lib/devices/doctor-findings.d.ts +0 -109
  569. package/dist/lib/devices/doctor-findings.js +30 -326
  570. package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
  571. package/dist/lib/devices/doctor-overview-cache.js +0 -81
  572. package/dist/lib/devices/fleet-divergence.d.ts +0 -89
  573. package/dist/lib/devices/fleet-divergence.js +1 -60
  574. package/dist/lib/devices/fleet-inventory.d.ts +0 -27
  575. package/dist/lib/devices/fleet-inventory.js +0 -38
  576. package/dist/lib/devices/fleet.d.ts +0 -95
  577. package/dist/lib/devices/fleet.js +0 -79
  578. package/dist/lib/devices/harness-inventory.d.ts +0 -75
  579. package/dist/lib/devices/harness-inventory.js +0 -101
  580. package/dist/lib/devices/health-report.d.ts +0 -37
  581. package/dist/lib/devices/health-report.js +0 -73
  582. package/dist/lib/devices/health.d.ts +0 -71
  583. package/dist/lib/devices/health.js +2 -82
  584. package/dist/lib/devices/interactive-host.d.ts +0 -10
  585. package/dist/lib/devices/interactive-host.js +0 -34
  586. package/dist/lib/devices/known-hosts.d.ts +0 -45
  587. package/dist/lib/devices/known-hosts.js +0 -77
  588. package/dist/lib/devices/pending.d.ts +0 -31
  589. package/dist/lib/devices/pending.js +7 -67
  590. package/dist/lib/devices/pool.d.ts +0 -36
  591. package/dist/lib/devices/pool.js +0 -30
  592. package/dist/lib/devices/reachability.d.ts +0 -25
  593. package/dist/lib/devices/reachability.js +0 -14
  594. package/dist/lib/devices/registry.d.ts +0 -141
  595. package/dist/lib/devices/registry.js +4 -151
  596. package/dist/lib/devices/resolve-profile.d.ts +0 -18
  597. package/dist/lib/devices/resolve-profile.js +0 -18
  598. package/dist/lib/devices/resolve-target.d.ts +0 -20
  599. package/dist/lib/devices/resolve-target.js +1 -51
  600. package/dist/lib/devices/rollout-verify.d.ts +1 -81
  601. package/dist/lib/devices/rollout-verify.js +0 -77
  602. package/dist/lib/devices/self-host.d.ts +0 -7
  603. package/dist/lib/devices/self-host.js +1 -29
  604. package/dist/lib/devices/ssh-config.d.ts +0 -18
  605. package/dist/lib/devices/ssh-config.js +0 -9
  606. package/dist/lib/devices/stats-cache.d.ts +0 -48
  607. package/dist/lib/devices/stats-cache.js +0 -80
  608. package/dist/lib/devices/sync.d.ts +0 -97
  609. package/dist/lib/devices/sync.js +0 -88
  610. package/dist/lib/devices/tailscale.d.ts +0 -18
  611. package/dist/lib/devices/tailscale.js +1 -38
  612. package/dist/lib/devices/terminfo.d.ts +0 -27
  613. package/dist/lib/devices/terminfo.js +2 -64
  614. package/dist/lib/devices/worker-pick.d.ts +0 -15
  615. package/dist/lib/devices/worker-pick.js +0 -48
  616. package/dist/lib/diff-text.d.ts +0 -18
  617. package/dist/lib/diff-text.js +0 -15
  618. package/dist/lib/doctor-diff.d.ts +0 -79
  619. package/dist/lib/doctor-diff.js +2 -181
  620. package/dist/lib/drift-sync.d.ts +0 -29
  621. package/dist/lib/drift-sync.js +0 -40
  622. package/dist/lib/drift.d.ts +0 -43
  623. package/dist/lib/drift.js +0 -31
  624. package/dist/lib/event-families.d.ts +0 -17
  625. package/dist/lib/event-families.js +0 -33
  626. package/dist/lib/event-provenance.d.ts +0 -4
  627. package/dist/lib/event-provenance.js +0 -5
  628. package/dist/lib/event-stream.d.ts +0 -29
  629. package/dist/lib/event-stream.js +0 -36
  630. package/dist/lib/events-ingest.d.ts +0 -27
  631. package/dist/lib/events-ingest.js +0 -54
  632. package/dist/lib/exec-account-home.d.ts +0 -24
  633. package/dist/lib/exec-account-home.js +0 -41
  634. package/dist/lib/exec-bounded.d.ts +1 -37
  635. package/dist/lib/exec-bounded.js +10 -46
  636. package/dist/lib/exec.d.ts +3 -583
  637. package/dist/lib/exec.js +18 -1025
  638. package/dist/lib/factory/snapshot.js +1 -15
  639. package/dist/lib/feed/activity-stream.d.ts +0 -27
  640. package/dist/lib/feed/activity-stream.js +4 -80
  641. package/dist/lib/feed/activity.d.ts +1 -243
  642. package/dist/lib/feed/activity.js +8 -273
  643. package/dist/lib/feed/answer.d.ts +0 -103
  644. package/dist/lib/feed/answer.js +0 -267
  645. package/dist/lib/feed/attention.d.ts +0 -56
  646. package/dist/lib/feed/attention.js +0 -161
  647. package/dist/lib/feed/envelope.d.ts +2 -17
  648. package/dist/lib/feed/envelope.js +0 -14
  649. package/dist/lib/feed/events.d.ts +0 -118
  650. package/dist/lib/feed/events.js +13 -213
  651. package/dist/lib/feed/feed.d.ts +1 -250
  652. package/dist/lib/feed/feed.js +24 -334
  653. package/dist/lib/feed/hub-server.d.ts +0 -100
  654. package/dist/lib/feed/hub-server.js +1 -191
  655. package/dist/lib/feed/hub.d.ts +0 -53
  656. package/dist/lib/feed/hub.js +0 -89
  657. package/dist/lib/feed/pr-status.d.ts +1 -19
  658. package/dist/lib/feed/pr-status.js +0 -18
  659. package/dist/lib/feed/tool-activity.d.ts +0 -59
  660. package/dist/lib/feed/tool-activity.js +1 -119
  661. package/dist/lib/feed/tools.d.ts +0 -100
  662. package/dist/lib/feed/tools.js +0 -89
  663. package/dist/lib/feed/watch.d.ts +0 -33
  664. package/dist/lib/feed/watch.js +2 -94
  665. package/dist/lib/feed-broadcast.d.ts +0 -148
  666. package/dist/lib/feed-broadcast.js +1 -283
  667. package/dist/lib/feed-outcome.d.ts +0 -50
  668. package/dist/lib/feed-outcome.js +1 -67
  669. package/dist/lib/feed-policy.d.ts +0 -6
  670. package/dist/lib/feed-policy.js +1 -27
  671. package/dist/lib/feed-post.d.ts +0 -61
  672. package/dist/lib/feed-post.js +4 -61
  673. package/dist/lib/feed-ranking.d.ts +1 -1
  674. package/dist/lib/fleet/apply.d.ts +0 -64
  675. package/dist/lib/fleet/apply.js +0 -125
  676. package/dist/lib/fleet/auth-sync.d.ts +0 -48
  677. package/dist/lib/fleet/auth-sync.js +4 -49
  678. package/dist/lib/fleet/capture.d.ts +0 -26
  679. package/dist/lib/fleet/capture.js +1 -36
  680. package/dist/lib/fleet/manifest.d.ts +0 -38
  681. package/dist/lib/fleet/manifest.js +0 -40
  682. package/dist/lib/fleet/types.d.ts +1 -138
  683. package/dist/lib/fleet/types.js +0 -12
  684. package/dist/lib/fleet-cache.d.ts +0 -12
  685. package/dist/lib/fleet-cache.js +0 -24
  686. package/dist/lib/fleet-shared-state.d.ts +6 -59
  687. package/dist/lib/fleet-shared-state.js +5 -51
  688. package/dist/lib/fleet-status.d.ts +0 -27
  689. package/dist/lib/fleet-status.js +0 -48
  690. package/dist/lib/format.d.ts +0 -74
  691. package/dist/lib/format.js +3 -77
  692. package/dist/lib/friction-heuristics.d.ts +0 -20
  693. package/dist/lib/friction-heuristics.js +0 -8
  694. package/dist/lib/fs-atomic.d.ts +0 -51
  695. package/dist/lib/fs-atomic.js +8 -66
  696. package/dist/lib/fs-walk.d.ts +0 -13
  697. package/dist/lib/fs-walk.js +0 -22
  698. package/dist/lib/fuzzy.d.ts +0 -29
  699. package/dist/lib/fuzzy.js +0 -31
  700. package/dist/lib/gemini-settings.js +0 -12
  701. package/dist/lib/git.d.ts +0 -366
  702. package/dist/lib/git.js +7 -574
  703. package/dist/lib/github/ci-failure.d.ts +30 -0
  704. package/dist/lib/github/ci-failure.js +95 -0
  705. package/dist/lib/github/gh-overload.d.ts +0 -38
  706. package/dist/lib/github/gh-overload.js +3 -55
  707. package/dist/lib/github/pr-mergeable.d.ts +3 -34
  708. package/dist/lib/github/pr-mergeable.js +2 -42
  709. package/dist/lib/github/pr-verdict.d.ts +0 -44
  710. package/dist/lib/github/pr-verdict.js +0 -36
  711. package/dist/lib/github/project-prs.d.ts +135 -105
  712. package/dist/lib/github/project-prs.js +530 -170
  713. package/dist/lib/github/release-drift.d.ts +45 -0
  714. package/dist/lib/github/release-drift.js +91 -0
  715. package/dist/lib/github/rest.d.ts +0 -50
  716. package/dist/lib/github/rest.js +0 -49
  717. package/dist/lib/github/viewer.d.ts +27 -0
  718. package/dist/lib/github/viewer.js +101 -0
  719. package/dist/lib/goose-commands.d.ts +0 -29
  720. package/dist/lib/goose-commands.js +3 -48
  721. package/dist/lib/harness/adapter.d.ts +0 -151
  722. package/dist/lib/harness/adapter.js +0 -41
  723. package/dist/lib/harness/adapters/claude.d.ts +0 -8
  724. package/dist/lib/harness/adapters/claude.js +0 -89
  725. package/dist/lib/harness/adapters/codex.js +0 -18
  726. package/dist/lib/harness/adapters/copilot.js +0 -3
  727. package/dist/lib/harness/adapters/cursor.js +0 -16
  728. package/dist/lib/harness/adapters/droid.js +0 -3
  729. package/dist/lib/harness/adapters/kimi.js +0 -19
  730. package/dist/lib/harness/adapters/muse.js +0 -9
  731. package/dist/lib/harness/adapters/opencode.js +0 -2
  732. package/dist/lib/harness/exec-config-version.d.ts +0 -2
  733. package/dist/lib/harness/exec-config-version.js +0 -13
  734. package/dist/lib/harness/index.js +0 -10
  735. package/dist/lib/harness-auth-capabilities.d.ts +0 -26
  736. package/dist/lib/harness-auth-capabilities.js +0 -18
  737. package/dist/lib/harness-connection-test.d.ts +0 -27
  738. package/dist/lib/harness-connection-test.js +2 -20
  739. package/dist/lib/heal.d.ts +0 -45
  740. package/dist/lib/heal.js +2 -82
  741. package/dist/lib/help.d.ts +0 -32
  742. package/dist/lib/help.js +0 -41
  743. package/dist/lib/helper-download.d.ts +0 -85
  744. package/dist/lib/helper-download.js +0 -95
  745. package/dist/lib/helper-versions.d.ts +0 -51
  746. package/dist/lib/helper-versions.js +1 -45
  747. package/dist/lib/hooks/cache.d.ts +0 -40
  748. package/dist/lib/hooks/cache.js +8 -122
  749. package/dist/lib/hooks/install.d.ts +0 -253
  750. package/dist/lib/hooks/install.js +49 -822
  751. package/dist/lib/hooks/match.d.ts +0 -24
  752. package/dist/lib/hooks/match.js +0 -31
  753. package/dist/lib/hooks/profile.d.ts +0 -21
  754. package/dist/lib/hooks/profile.js +0 -28
  755. package/dist/lib/hosts/credential-transport.d.ts +0 -6
  756. package/dist/lib/hosts/credential-transport.js +0 -17
  757. package/dist/lib/hosts/credentials.d.ts +0 -35
  758. package/dist/lib/hosts/credentials.js +0 -38
  759. package/dist/lib/hosts/dispatch.d.ts +0 -140
  760. package/dist/lib/hosts/dispatch.js +0 -176
  761. package/dist/lib/hosts/logs.d.ts +0 -25
  762. package/dist/lib/hosts/logs.js +1 -51
  763. package/dist/lib/hosts/option.d.ts +0 -12
  764. package/dist/lib/hosts/option.js +0 -12
  765. package/dist/lib/hosts/passthrough.d.ts +0 -129
  766. package/dist/lib/hosts/passthrough.js +12 -249
  767. package/dist/lib/hosts/progress.d.ts +0 -90
  768. package/dist/lib/hosts/progress.js +5 -115
  769. package/dist/lib/hosts/providers/devices.d.ts +0 -19
  770. package/dist/lib/hosts/providers/devices.js +1 -34
  771. package/dist/lib/hosts/providers/local.d.ts +0 -14
  772. package/dist/lib/hosts/providers/local.js +0 -22
  773. package/dist/lib/hosts/ready.d.ts +0 -99
  774. package/dist/lib/hosts/ready.js +0 -101
  775. package/dist/lib/hosts/reconcile.d.ts +0 -38
  776. package/dist/lib/hosts/reconcile.js +1 -50
  777. package/dist/lib/hosts/reconnect.d.ts +0 -75
  778. package/dist/lib/hosts/reconnect.js +0 -98
  779. package/dist/lib/hosts/registry.d.ts +0 -74
  780. package/dist/lib/hosts/registry.js +0 -110
  781. package/dist/lib/hosts/remote-cmd.d.ts +1 -228
  782. package/dist/lib/hosts/remote-cmd.js +19 -294
  783. package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
  784. package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
  785. package/dist/lib/hosts/remote-os.d.ts +0 -19
  786. package/dist/lib/hosts/remote-os.js +0 -22
  787. package/dist/lib/hosts/remote-session-id.d.ts +0 -22
  788. package/dist/lib/hosts/remote-session-id.js +0 -24
  789. package/dist/lib/hosts/routing-flag.d.ts +0 -21
  790. package/dist/lib/hosts/routing-flag.js +0 -21
  791. package/dist/lib/hosts/run-target.d.ts +0 -53
  792. package/dist/lib/hosts/run-target.js +0 -56
  793. package/dist/lib/hosts/session-index.d.ts +1 -53
  794. package/dist/lib/hosts/session-index.js +2 -59
  795. package/dist/lib/hosts/session-marker.d.ts +0 -31
  796. package/dist/lib/hosts/session-marker.js +0 -32
  797. package/dist/lib/hosts/ssh-config.d.ts +0 -25
  798. package/dist/lib/hosts/ssh-config.js +1 -32
  799. package/dist/lib/hosts/tasks.d.ts +0 -54
  800. package/dist/lib/hosts/tasks.js +0 -35
  801. package/dist/lib/hosts/types.d.ts +0 -39
  802. package/dist/lib/hosts/types.js +0 -22
  803. package/dist/lib/humans.d.ts +0 -21
  804. package/dist/lib/humans.js +0 -30
  805. package/dist/lib/identity/client.d.ts +1 -35
  806. package/dist/lib/identity/client.js +3 -29
  807. package/dist/lib/identity/index.d.ts +3 -27
  808. package/dist/lib/identity/index.js +8 -24
  809. package/dist/lib/import.d.ts +0 -104
  810. package/dist/lib/import.js +1 -137
  811. package/dist/lib/installations/active-check.d.ts +0 -53
  812. package/dist/lib/installations/active-check.js +0 -49
  813. package/dist/lib/installations/index.d.ts +0 -9
  814. package/dist/lib/installations/index.js +0 -9
  815. package/dist/lib/installations/installation-lock.js +0 -8
  816. package/dist/lib/installations/launch-gate.d.ts +0 -56
  817. package/dist/lib/installations/launch-gate.js +0 -83
  818. package/dist/lib/installations/migrate.d.ts +0 -100
  819. package/dist/lib/installations/migrate.js +105 -572
  820. package/dist/lib/installations/native-command.d.ts +0 -1
  821. package/dist/lib/installations/native-command.js +0 -6
  822. package/dist/lib/installations/resolve.d.ts +0 -24
  823. package/dist/lib/installations/resolve.js +0 -24
  824. package/dist/lib/installations/shims.d.ts +0 -395
  825. package/dist/lib/installations/shims.js +30 -957
  826. package/dist/lib/installations/store.d.ts +0 -199
  827. package/dist/lib/installations/store.js +1 -297
  828. package/dist/lib/installations/strategies.d.ts +0 -44
  829. package/dist/lib/installations/strategies.js +0 -87
  830. package/dist/lib/installations/types.d.ts +1 -67
  831. package/dist/lib/installations/types.js +0 -6
  832. package/dist/lib/installations/update-cancellation.d.ts +0 -74
  833. package/dist/lib/installations/update-cancellation.js +0 -74
  834. package/dist/lib/installations/update-policy.d.ts +0 -57
  835. package/dist/lib/installations/update-policy.js +0 -62
  836. package/dist/lib/installations/update-runtime.d.ts +0 -88
  837. package/dist/lib/installations/update-runtime.js +1 -127
  838. package/dist/lib/installations/update.d.ts +0 -53
  839. package/dist/lib/installations/update.js +0 -95
  840. package/dist/lib/installations/versions.d.ts +0 -310
  841. package/dist/lib/installations/versions.js +14 -837
  842. package/dist/lib/isolation-boundary-report.d.ts +0 -7
  843. package/dist/lib/isolation-boundary-report.js +0 -7
  844. package/dist/lib/launch-identity.d.ts +0 -8
  845. package/dist/lib/launch-identity.js +0 -8
  846. package/dist/lib/linear-autoclose.d.ts +0 -25
  847. package/dist/lib/linear-autoclose.js +0 -19
  848. package/dist/lib/linear-cache.d.ts +0 -57
  849. package/dist/lib/linear-cache.js +1 -81
  850. package/dist/lib/linear-project-counts.d.ts +0 -83
  851. package/dist/lib/linear-project-counts.js +2 -64
  852. package/dist/lib/linear-projects.d.ts +0 -62
  853. package/dist/lib/linear-projects.js +0 -85
  854. package/dist/lib/linear-rate-limit.d.ts +0 -21
  855. package/dist/lib/linear-rate-limit.js +1 -93
  856. package/dist/lib/linux-userns.d.ts +1 -42
  857. package/dist/lib/linux-userns.js +0 -47
  858. package/dist/lib/lock-compromise.d.ts +0 -7
  859. package/dist/lib/lock-compromise.js +0 -7
  860. package/dist/lib/log-follow.d.ts +0 -2
  861. package/dist/lib/log-follow.js +5 -15
  862. package/dist/lib/loop.d.ts +0 -106
  863. package/dist/lib/loop.js +0 -135
  864. package/dist/lib/machine-id.d.ts +0 -19
  865. package/dist/lib/machine-id.js +0 -19
  866. package/dist/lib/mailbox-gc.d.ts +0 -7
  867. package/dist/lib/mailbox-gc.js +0 -25
  868. package/dist/lib/mailbox-target.d.ts +0 -31
  869. package/dist/lib/mailbox-target.js +0 -27
  870. package/dist/lib/mailbox.d.ts +0 -77
  871. package/dist/lib/mailbox.js +5 -105
  872. package/dist/lib/manifest.d.ts +0 -4
  873. package/dist/lib/manifest.js +0 -36
  874. package/dist/lib/markdown.d.ts +0 -3
  875. package/dist/lib/markdown.js +0 -9
  876. package/dist/lib/mcp-registry.d.ts +1 -50
  877. package/dist/lib/mcp-registry.js +0 -64
  878. package/dist/lib/mcp.d.ts +0 -115
  879. package/dist/lib/mcp.js +3 -199
  880. package/dist/lib/memory-cache.d.ts +0 -11
  881. package/dist/lib/memory-cache.js +0 -9
  882. package/dist/lib/memory.d.ts +0 -52
  883. package/dist/lib/memory.js +12 -74
  884. package/dist/lib/menubar/download-menubar.d.ts +0 -35
  885. package/dist/lib/menubar/download-menubar.js +0 -38
  886. package/dist/lib/menubar/install-menubar.d.ts +0 -405
  887. package/dist/lib/menubar/install-menubar.js +25 -667
  888. package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
  889. package/dist/lib/menubar/migrate-prefs.js +1 -70
  890. package/dist/lib/menubar/notify-desktop.d.ts +0 -82
  891. package/dist/lib/menubar/notify-desktop.js +0 -68
  892. package/dist/lib/menubar/resolve-version.d.ts +0 -41
  893. package/dist/lib/menubar/resolve-version.js +2 -44
  894. package/dist/lib/menubar/snapshot.d.ts +13 -66
  895. package/dist/lib/menubar/snapshot.js +45 -39
  896. package/dist/lib/merged-resources.d.ts +0 -10
  897. package/dist/lib/merged-resources.js +0 -10
  898. package/dist/lib/migrate-fold.d.ts +0 -31
  899. package/dist/lib/migrate-fold.js +6 -38
  900. package/dist/lib/model-tier-overrides.d.ts +0 -30
  901. package/dist/lib/model-tier-overrides.js +0 -14
  902. package/dist/lib/model-tiers.d.ts +0 -43
  903. package/dist/lib/model-tiers.js +5 -78
  904. package/dist/lib/models.d.ts +0 -145
  905. package/dist/lib/models.js +3 -333
  906. package/dist/lib/monitors/config.d.ts +0 -187
  907. package/dist/lib/monitors/config.js +4 -101
  908. package/dist/lib/monitors/dispatch.d.ts +0 -22
  909. package/dist/lib/monitors/dispatch.js +0 -35
  910. package/dist/lib/monitors/engine.d.ts +1 -53
  911. package/dist/lib/monitors/engine.js +17 -106
  912. package/dist/lib/monitors/fingerprint.d.ts +0 -43
  913. package/dist/lib/monitors/fingerprint.js +0 -57
  914. package/dist/lib/monitors/pid-watch.d.ts +0 -31
  915. package/dist/lib/monitors/pid-watch.js +0 -31
  916. package/dist/lib/monitors/remote.d.ts +0 -52
  917. package/dist/lib/monitors/remote.js +0 -42
  918. package/dist/lib/monitors/sources/command.d.ts +2 -9
  919. package/dist/lib/monitors/sources/command.js +13 -34
  920. package/dist/lib/monitors/sources/device.d.ts +0 -10
  921. package/dist/lib/monitors/sources/device.js +0 -14
  922. package/dist/lib/monitors/sources/failure.d.ts +0 -27
  923. package/dist/lib/monitors/sources/failure.js +0 -27
  924. package/dist/lib/monitors/sources/file.d.ts +0 -10
  925. package/dist/lib/monitors/sources/file.js +0 -11
  926. package/dist/lib/monitors/sources/http.d.ts +0 -7
  927. package/dist/lib/monitors/sources/http.js +0 -9
  928. package/dist/lib/monitors/sources/index.d.ts +0 -9
  929. package/dist/lib/monitors/sources/index.js +0 -9
  930. package/dist/lib/monitors/sources/poll.d.ts +0 -8
  931. package/dist/lib/monitors/sources/poll.js +0 -8
  932. package/dist/lib/monitors/sources/types.d.ts +0 -18
  933. package/dist/lib/monitors/sources/types.js +0 -8
  934. package/dist/lib/monitors/sources/webhook.d.ts +0 -7
  935. package/dist/lib/monitors/sources/webhook.js +0 -7
  936. package/dist/lib/monitors/sources/ws.d.ts +0 -10
  937. package/dist/lib/monitors/sources/ws.js +3 -13
  938. package/dist/lib/monitors/state.d.ts +0 -132
  939. package/dist/lib/monitors/state.js +2 -86
  940. package/dist/lib/native-accounts.d.ts +0 -32
  941. package/dist/lib/native-accounts.js +0 -17
  942. package/dist/lib/net-close.d.ts +0 -9
  943. package/dist/lib/net-close.js +0 -5
  944. package/dist/lib/notify.d.ts +0 -47
  945. package/dist/lib/notify.js +0 -30
  946. package/dist/lib/onepassword.d.ts +0 -14
  947. package/dist/lib/onepassword.js +0 -12
  948. package/dist/lib/open-url.d.ts +0 -38
  949. package/dist/lib/open-url.js +1 -69
  950. package/dist/lib/openclaw-keychain.js +2 -7
  951. package/dist/lib/operator.d.ts +0 -9
  952. package/dist/lib/operator.js +0 -34
  953. package/dist/lib/origin-machine.d.ts +0 -16
  954. package/dist/lib/origin-machine.js +0 -16
  955. package/dist/lib/output/git-output.d.ts +0 -31
  956. package/dist/lib/output/git-output.js +4 -43
  957. package/dist/lib/overdue.d.ts +0 -35
  958. package/dist/lib/overdue.js +0 -60
  959. package/dist/lib/owner-message.d.ts +0 -20
  960. package/dist/lib/owner-message.js +1 -40
  961. package/dist/lib/packages/output-home.d.ts +0 -28
  962. package/dist/lib/packages/output-home.js +0 -114
  963. package/dist/lib/paths.d.ts +0 -26
  964. package/dist/lib/paths.js +1 -27
  965. package/dist/lib/percentile.d.ts +0 -11
  966. package/dist/lib/percentile.js +0 -11
  967. package/dist/lib/perf/db.d.ts +0 -16
  968. package/dist/lib/perf/db.js +3 -32
  969. package/dist/lib/perf/spool.d.ts +0 -12
  970. package/dist/lib/perf/spool.js +0 -13
  971. package/dist/lib/perf/types.d.ts +0 -26
  972. package/dist/lib/perf/types.js +0 -1
  973. package/dist/lib/permissions-registry.d.ts +0 -48
  974. package/dist/lib/permissions-registry.js +0 -108
  975. package/dist/lib/permissions.d.ts +0 -215
  976. package/dist/lib/permissions.js +4 -407
  977. package/dist/lib/picker.d.ts +0 -124
  978. package/dist/lib/picker.js +0 -140
  979. package/dist/lib/placement.d.ts +0 -57
  980. package/dist/lib/placement.js +0 -47
  981. package/dist/lib/platform/exec.d.ts +0 -73
  982. package/dist/lib/platform/exec.js +0 -80
  983. package/dist/lib/platform/index.d.ts +0 -14
  984. package/dist/lib/platform/index.js +0 -14
  985. package/dist/lib/platform/ipc.d.ts +0 -10
  986. package/dist/lib/platform/ipc.js +0 -13
  987. package/dist/lib/platform/links.d.ts +0 -14
  988. package/dist/lib/platform/links.js +0 -25
  989. package/dist/lib/platform/paths.d.ts +0 -48
  990. package/dist/lib/platform/paths.js +0 -52
  991. package/dist/lib/platform/posixpath.d.ts +0 -18
  992. package/dist/lib/platform/posixpath.js +0 -62
  993. package/dist/lib/platform/process.d.ts +0 -67
  994. package/dist/lib/platform/process.js +5 -99
  995. package/dist/lib/platform/winpath.d.ts +0 -50
  996. package/dist/lib/platform/winpath.js +0 -81
  997. package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
  998. package/dist/lib/plugins/plugin-marketplace.js +10 -238
  999. package/dist/lib/plugins/plugins.d.ts +0 -238
  1000. package/dist/lib/plugins/plugins.js +20 -454
  1001. package/dist/lib/plugins/skills.d.ts +0 -86
  1002. package/dist/lib/plugins/skills.js +1 -139
  1003. package/dist/lib/pr-land-detach.d.ts +0 -17
  1004. package/dist/lib/pr-land-detach.js +0 -30
  1005. package/dist/lib/pricing/cost.d.ts +0 -29
  1006. package/dist/lib/pricing/cost.js +0 -38
  1007. package/dist/lib/pricing/index.d.ts +0 -6
  1008. package/dist/lib/pricing/index.js +0 -6
  1009. package/dist/lib/pricing/table.d.ts +0 -8
  1010. package/dist/lib/pricing/table.js +3 -56
  1011. package/dist/lib/probe.d.ts +0 -5
  1012. package/dist/lib/probe.js +0 -40
  1013. package/dist/lib/profiles-presets.d.ts +0 -20
  1014. package/dist/lib/profiles-presets.js +1 -36
  1015. package/dist/lib/profiles.d.ts +0 -185
  1016. package/dist/lib/profiles.js +1 -158
  1017. package/dist/lib/project-doctor.d.ts +0 -29
  1018. package/dist/lib/project-doctor.js +0 -26
  1019. package/dist/lib/project-focus.d.ts +0 -41
  1020. package/dist/lib/project-focus.js +0 -49
  1021. package/dist/lib/project-import.d.ts +0 -41
  1022. package/dist/lib/project-import.js +0 -36
  1023. package/dist/lib/project-key.d.ts +0 -65
  1024. package/dist/lib/project-key.js +0 -70
  1025. package/dist/lib/project-launch.d.ts +0 -49
  1026. package/dist/lib/project-launch.js +2 -91
  1027. package/dist/lib/project-probe.d.ts +0 -86
  1028. package/dist/lib/project-probe.js +1 -88
  1029. package/dist/lib/project-pull.d.ts +0 -96
  1030. package/dist/lib/project-pull.js +0 -122
  1031. package/dist/lib/project-resources.d.ts +0 -44
  1032. package/dist/lib/project-resources.js +7 -171
  1033. package/dist/lib/project-root.d.ts +0 -95
  1034. package/dist/lib/project-root.js +0 -101
  1035. package/dist/lib/project-schedule.d.ts +0 -43
  1036. package/dist/lib/project-schedule.js +0 -52
  1037. package/dist/lib/project-status.d.ts +0 -108
  1038. package/dist/lib/project-status.js +0 -117
  1039. package/dist/lib/projects.d.ts +0 -197
  1040. package/dist/lib/projects.js +1 -213
  1041. package/dist/lib/pwsh.d.ts +0 -41
  1042. package/dist/lib/pwsh.js +0 -51
  1043. package/dist/lib/quick-todo.d.ts +84 -0
  1044. package/dist/lib/quick-todo.js +243 -0
  1045. package/dist/lib/reconcile-and-repair.d.ts +0 -78
  1046. package/dist/lib/reconcile-and-repair.js +3 -66
  1047. package/dist/lib/redact.d.ts +0 -29
  1048. package/dist/lib/redact.js +0 -54
  1049. package/dist/lib/refresh-coordinator.d.ts +0 -15
  1050. package/dist/lib/refresh-coordinator.js +0 -10
  1051. package/dist/lib/refresh.d.ts +0 -39
  1052. package/dist/lib/refresh.js +0 -45
  1053. package/dist/lib/registry.d.ts +0 -65
  1054. package/dist/lib/registry.js +0 -127
  1055. package/dist/lib/reminders.d.ts +0 -21
  1056. package/dist/lib/reminders.js +0 -30
  1057. package/dist/lib/remote-agents-json.d.ts +0 -44
  1058. package/dist/lib/remote-agents-json.js +1 -44
  1059. package/dist/lib/reserved-stores.d.ts +0 -28
  1060. package/dist/lib/reserved-stores.js +2 -28
  1061. package/dist/lib/resource-aliases.d.ts +0 -12
  1062. package/dist/lib/resource-aliases.js +0 -12
  1063. package/dist/lib/resource-content-diff.d.ts +0 -28
  1064. package/dist/lib/resource-content-diff.js +7 -34
  1065. package/dist/lib/resource-inventory.d.ts +0 -51
  1066. package/dist/lib/resource-inventory.js +0 -45
  1067. package/dist/lib/resource-patterns.d.ts +0 -32
  1068. package/dist/lib/resource-patterns.js +0 -34
  1069. package/dist/lib/resource-profiles.d.ts +0 -7
  1070. package/dist/lib/resource-profiles.js +0 -11
  1071. package/dist/lib/resources/types.d.ts +0 -50
  1072. package/dist/lib/resources/types.js +0 -7
  1073. package/dist/lib/resources/workflows.d.ts +0 -7
  1074. package/dist/lib/resources/workflows.js +0 -13
  1075. package/dist/lib/resources.d.ts +0 -65
  1076. package/dist/lib/resources.js +0 -78
  1077. package/dist/lib/routers.d.ts +0 -67
  1078. package/dist/lib/routers.js +0 -60
  1079. package/dist/lib/routine-activation.d.ts +0 -23
  1080. package/dist/lib/routine-activation.js +0 -24
  1081. package/dist/lib/routine-context.d.ts +1 -91
  1082. package/dist/lib/routine-context.js +0 -107
  1083. package/dist/lib/routine-notify-owner.d.ts +0 -79
  1084. package/dist/lib/routine-notify-owner.js +1 -103
  1085. package/dist/lib/routine-notify.d.ts +0 -70
  1086. package/dist/lib/routine-notify.js +1 -75
  1087. package/dist/lib/routine-process-cleanup.d.ts +0 -1
  1088. package/dist/lib/routine-process-cleanup.js +1 -4
  1089. package/dist/lib/routine-readiness.d.ts +0 -63
  1090. package/dist/lib/routine-readiness.js +4 -86
  1091. package/dist/lib/routines-format.d.ts +0 -40
  1092. package/dist/lib/routines-format.js +0 -67
  1093. package/dist/lib/routines-placement.d.ts +0 -33
  1094. package/dist/lib/routines-placement.js +0 -40
  1095. package/dist/lib/routines-project.d.ts +0 -57
  1096. package/dist/lib/routines-project.js +6 -80
  1097. package/dist/lib/rules/compile.d.ts +0 -66
  1098. package/dist/lib/rules/compile.js +6 -118
  1099. package/dist/lib/rules/compose.d.ts +0 -56
  1100. package/dist/lib/rules/compose.js +2 -83
  1101. package/dist/lib/rules/rules.d.ts +0 -23
  1102. package/dist/lib/rules/rules.js +0 -35
  1103. package/dist/lib/rules/run-sync.d.ts +0 -16
  1104. package/dist/lib/rules/run-sync.js +1 -44
  1105. package/dist/lib/run-config.d.ts +0 -7
  1106. package/dist/lib/run-config.js +0 -8
  1107. package/dist/lib/run-defaults.d.ts +0 -14
  1108. package/dist/lib/run-defaults.js +0 -14
  1109. package/dist/lib/run-notify.d.ts +0 -18
  1110. package/dist/lib/run-notify.js +0 -36
  1111. package/dist/lib/run-trace-sync.d.ts +0 -21
  1112. package/dist/lib/run-trace-sync.js +2 -66
  1113. package/dist/lib/rush-session.d.ts +0 -26
  1114. package/dist/lib/rush-session.js +0 -28
  1115. package/dist/lib/sandbox.d.ts +0 -45
  1116. package/dist/lib/sandbox.js +5 -93
  1117. package/dist/lib/scheduler.d.ts +0 -28
  1118. package/dist/lib/scheduler.js +0 -45
  1119. package/dist/lib/scheduling/routines.d.ts +0 -652
  1120. package/dist/lib/scheduling/routines.js +8 -475
  1121. package/dist/lib/secrets-cli.d.ts +3 -8
  1122. package/dist/lib/secrets-cli.js +1 -19
  1123. package/dist/lib/secrets-client.d.ts +0 -117
  1124. package/dist/lib/secrets-client.js +4 -275
  1125. package/dist/lib/secrets-policy.d.ts +0 -142
  1126. package/dist/lib/secrets-policy.js +4 -237
  1127. package/dist/lib/secrets-types.d.ts +0 -87
  1128. package/dist/lib/secrets-types.js +0 -13
  1129. package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
  1130. package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
  1131. package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
  1132. package/dist/lib/self-heal/checks/install-staging.js +1 -28
  1133. package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
  1134. package/dist/lib/self-heal/checks/path.js +0 -9
  1135. package/dist/lib/self-heal/checks/resources.js +0 -5
  1136. package/dist/lib/self-heal/checks/shadowing.js +2 -16
  1137. package/dist/lib/self-heal/checks/shims.js +0 -14
  1138. package/dist/lib/self-heal/child.d.ts +12 -0
  1139. package/dist/lib/self-heal/child.js +23 -0
  1140. package/dist/lib/self-heal/registry.d.ts +0 -9
  1141. package/dist/lib/self-heal/registry.js +0 -16
  1142. package/dist/lib/self-heal/types.d.ts +0 -12
  1143. package/dist/lib/self-heal/types.js +0 -15
  1144. package/dist/lib/self-update.d.ts +0 -312
  1145. package/dist/lib/self-update.js +9 -360
  1146. package/dist/lib/service-manifest.d.ts +0 -39
  1147. package/dist/lib/service-manifest.js +0 -72
  1148. package/dist/lib/session/active.d.ts +13 -869
  1149. package/dist/lib/session/active.js +17 -976
  1150. package/dist/lib/session/actor-sidecar.d.ts +1 -32
  1151. package/dist/lib/session/actor-sidecar.js +1 -41
  1152. package/dist/lib/session/bookmarks.d.ts +0 -33
  1153. package/dist/lib/session/bookmarks.js +0 -37
  1154. package/dist/lib/session/bundle.d.ts +0 -86
  1155. package/dist/lib/session/bundle.js +0 -54
  1156. package/dist/lib/session/claude-accounts.d.ts +0 -40
  1157. package/dist/lib/session/claude-accounts.js +0 -49
  1158. package/dist/lib/session/cloud.d.ts +1 -23
  1159. package/dist/lib/session/cloud.js +0 -26
  1160. package/dist/lib/session/db.d.ts +5 -658
  1161. package/dist/lib/session/db.js +22 -1443
  1162. package/dist/lib/session/detached.d.ts +0 -21
  1163. package/dist/lib/session/detached.js +0 -29
  1164. package/dist/lib/session/discover.d.ts +3 -420
  1165. package/dist/lib/session/discover.js +30 -1123
  1166. package/dist/lib/session/fork.d.ts +1 -41
  1167. package/dist/lib/session/fork.js +0 -19
  1168. package/dist/lib/session/ghostty-tabs.d.ts +0 -24
  1169. package/dist/lib/session/ghostty-tabs.js +0 -37
  1170. package/dist/lib/session/glance-files.d.ts +19 -0
  1171. package/dist/lib/session/glance-files.js +258 -0
  1172. package/dist/lib/session/hook-sessions.d.ts +0 -33
  1173. package/dist/lib/session/hook-sessions.js +4 -99
  1174. package/dist/lib/session/host-link.d.ts +1 -94
  1175. package/dist/lib/session/host-link.js +1 -81
  1176. package/dist/lib/session/inject-target.d.ts +8 -0
  1177. package/dist/lib/session/inject-target.js +32 -0
  1178. package/dist/lib/session/inject.d.ts +0 -15
  1179. package/dist/lib/session/inject.js +0 -15
  1180. package/dist/lib/session/live-metadata.d.ts +1 -34
  1181. package/dist/lib/session/live-metadata.js +1 -73
  1182. package/dist/lib/session/local-tmux-attach.d.ts +0 -37
  1183. package/dist/lib/session/local-tmux-attach.js +1 -76
  1184. package/dist/lib/session/migrate-targets.d.ts +0 -46
  1185. package/dist/lib/session/migrate-targets.js +0 -24
  1186. package/dist/lib/session/migrations.d.ts +0 -12
  1187. package/dist/lib/session/migrations.js +1 -20
  1188. package/dist/lib/session/mirror.d.ts +0 -32
  1189. package/dist/lib/session/mirror.js +0 -77
  1190. package/dist/lib/session/origin-machine.js +0 -3
  1191. package/dist/lib/session/pid-registry.d.ts +0 -80
  1192. package/dist/lib/session/pid-registry.js +2 -81
  1193. package/dist/lib/session/presence.d.ts +0 -39
  1194. package/dist/lib/session/presence.js +2 -52
  1195. package/dist/lib/session/process-view.d.ts +0 -11
  1196. package/dist/lib/session/process-view.js +0 -25
  1197. package/dist/lib/session/projection.d.ts +0 -3
  1198. package/dist/lib/session/projection.js +0 -10
  1199. package/dist/lib/session/provenance.d.ts +1 -37
  1200. package/dist/lib/session/provenance.js +0 -69
  1201. package/dist/lib/session/recovery.d.ts +1 -40
  1202. package/dist/lib/session/recovery.js +2 -80
  1203. package/dist/lib/session/relative-time.js +0 -3
  1204. package/dist/lib/session/remote/peer-stream.d.ts +0 -42
  1205. package/dist/lib/session/remote/peer-stream.js +0 -64
  1206. package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
  1207. package/dist/lib/session/remote/remote-bundle.js +0 -21
  1208. package/dist/lib/session/remote/remote-list.d.ts +1 -110
  1209. package/dist/lib/session/remote/remote-list.js +5 -139
  1210. package/dist/lib/session/remote/remote.d.ts +0 -98
  1211. package/dist/lib/session/remote/remote.js +3 -119
  1212. package/dist/lib/session/remote/watch.d.ts +1 -34
  1213. package/dist/lib/session/remote/watch.js +12 -72
  1214. package/dist/lib/session/remote-active.d.ts +0 -35
  1215. package/dist/lib/session/remote-active.js +0 -48
  1216. package/dist/lib/session/remote-bundle.js +0 -2
  1217. package/dist/lib/session/remote-list.js +0 -2
  1218. package/dist/lib/session/remote-preview-cache.d.ts +0 -7
  1219. package/dist/lib/session/remote-preview-cache.js +1 -76
  1220. package/dist/lib/session/remote.js +0 -2
  1221. package/dist/lib/session/resume-command.d.ts +0 -6
  1222. package/dist/lib/session/resume-command.js +0 -6
  1223. package/dist/lib/session/resume-owner.d.ts +1 -52
  1224. package/dist/lib/session/resume-owner.js +0 -56
  1225. package/dist/lib/session/run-names.d.ts +0 -24
  1226. package/dist/lib/session/run-names.js +0 -26
  1227. package/dist/lib/session/session-cache.d.ts +2 -146
  1228. package/dist/lib/session/session-cache.js +26 -203
  1229. package/dist/lib/session/short-id.js +0 -3
  1230. package/dist/lib/session/sync/agents.d.ts +0 -68
  1231. package/dist/lib/session/sync/agents.js +0 -0
  1232. package/dist/lib/session/sync/backend.d.ts +0 -39
  1233. package/dist/lib/session/sync/backend.js +0 -45
  1234. package/dist/lib/session/sync/config.d.ts +0 -27
  1235. package/dist/lib/session/sync/config.js +0 -56
  1236. package/dist/lib/session/sync/managed-config.d.ts +0 -17
  1237. package/dist/lib/session/sync/managed-config.js +0 -17
  1238. package/dist/lib/session/sync/managed-key.d.ts +0 -38
  1239. package/dist/lib/session/sync/managed-key.js +1 -42
  1240. package/dist/lib/session/sync/net-client.d.ts +0 -36
  1241. package/dist/lib/session/sync/net-client.js +0 -30
  1242. package/dist/lib/session/sync/provision.d.ts +0 -2
  1243. package/dist/lib/session/sync/provision.js +0 -13
  1244. package/dist/lib/session/sync/r2.d.ts +0 -20
  1245. package/dist/lib/session/sync/r2.js +0 -20
  1246. package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
  1247. package/dist/lib/session/sync/transcript-crypto.js +5 -37
  1248. package/dist/lib/session/sync/worker-template.d.ts +0 -5
  1249. package/dist/lib/session/sync/worker-template.js +0 -40
  1250. package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
  1251. package/dist/lib/session/testdata/process-view-private.js +0 -1
  1252. package/dist/lib/session/throughput.d.ts +0 -24
  1253. package/dist/lib/session/throughput.js +1 -25
  1254. package/dist/lib/session/timeline-pass.d.ts +1 -63
  1255. package/dist/lib/session/timeline-pass.js +161 -148
  1256. package/dist/lib/session/title.d.ts +0 -182
  1257. package/dist/lib/session/title.js +0 -139
  1258. package/dist/lib/session/tool-index.d.ts +2 -21
  1259. package/dist/lib/session/tool-index.js +3 -75
  1260. package/dist/lib/session/tool-store.d.ts +2 -48
  1261. package/dist/lib/session/tool-store.js +1 -33
  1262. package/dist/lib/session/viewing-in.d.ts +0 -67
  1263. package/dist/lib/session/viewing-in.js +1 -71
  1264. package/dist/lib/session/watch.js +0 -2
  1265. package/dist/lib/session/width.js +0 -3
  1266. package/dist/lib/sessions-client.d.ts +0 -46
  1267. package/dist/lib/sessions-client.js +36 -113
  1268. package/dist/lib/settings-manifest.d.ts +1 -17
  1269. package/dist/lib/settings-manifest.js +4 -57
  1270. package/dist/lib/setup-tool-install.d.ts +0 -1
  1271. package/dist/lib/setup-tool-install.js +2 -7
  1272. package/dist/lib/setup-tool-status.d.ts +0 -3
  1273. package/dist/lib/setup-tool-status.js +4 -14
  1274. package/dist/lib/sha256-asset.d.ts +0 -20
  1275. package/dist/lib/sha256-asset.js +0 -20
  1276. package/dist/lib/share-runtime.d.ts +0 -10
  1277. package/dist/lib/share-runtime.js +1 -27
  1278. package/dist/lib/shim-heal.d.ts +0 -15
  1279. package/dist/lib/shim-heal.js +3 -29
  1280. package/dist/lib/signin-badge.d.ts +0 -72
  1281. package/dist/lib/signin-badge.js +0 -86
  1282. package/dist/lib/sink-format.d.ts +0 -32
  1283. package/dist/lib/sink-format.js +0 -14
  1284. package/dist/lib/smart-launch.d.ts +0 -75
  1285. package/dist/lib/smart-launch.js +1 -83
  1286. package/dist/lib/snapshot.d.ts +0 -46
  1287. package/dist/lib/snapshot.js +5 -31
  1288. package/dist/lib/spinner.d.ts +0 -37
  1289. package/dist/lib/spinner.js +0 -37
  1290. package/dist/lib/sqlite.d.ts +0 -13
  1291. package/dist/lib/sqlite.js +3 -71
  1292. package/dist/lib/ssh-exec.d.ts +0 -209
  1293. package/dist/lib/ssh-exec.js +11 -248
  1294. package/dist/lib/ssh-tunnel.d.ts +0 -43
  1295. package/dist/lib/ssh-tunnel.js +2 -48
  1296. package/dist/lib/staleness/checkers/commands.d.ts +0 -4
  1297. package/dist/lib/staleness/checkers/commands.js +0 -4
  1298. package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
  1299. package/dist/lib/staleness/checkers/hooks.js +0 -15
  1300. package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
  1301. package/dist/lib/staleness/checkers/mcp.js +0 -9
  1302. package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
  1303. package/dist/lib/staleness/checkers/permissions.js +0 -13
  1304. package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
  1305. package/dist/lib/staleness/checkers/plugins.js +0 -8
  1306. package/dist/lib/staleness/checkers/rules.d.ts +0 -15
  1307. package/dist/lib/staleness/checkers/rules.js +0 -26
  1308. package/dist/lib/staleness/checkers/skills.d.ts +0 -4
  1309. package/dist/lib/staleness/checkers/skills.js +0 -4
  1310. package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
  1311. package/dist/lib/staleness/checkers/subagents.js +0 -9
  1312. package/dist/lib/staleness/checkers/types.d.ts +0 -34
  1313. package/dist/lib/staleness/checkers/types.js +0 -19
  1314. package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
  1315. package/dist/lib/staleness/checkers/workflows.js +0 -7
  1316. package/dist/lib/staleness/detectors/commands.js +0 -17
  1317. package/dist/lib/staleness/detectors/hooks.js +1 -6
  1318. package/dist/lib/staleness/detectors/mcp.js +0 -4
  1319. package/dist/lib/staleness/detectors/permissions.js +10 -23
  1320. package/dist/lib/staleness/detectors/rules.js +0 -6
  1321. package/dist/lib/staleness/detectors/skills.d.ts +0 -1
  1322. package/dist/lib/staleness/detectors/skills.js +1 -12
  1323. package/dist/lib/staleness/detectors/types.d.ts +0 -10
  1324. package/dist/lib/staleness/fingerprint.d.ts +0 -19
  1325. package/dist/lib/staleness/fingerprint.js +0 -35
  1326. package/dist/lib/staleness/index.d.ts +0 -28
  1327. package/dist/lib/staleness/index.js +1 -45
  1328. package/dist/lib/staleness/layers.d.ts +0 -23
  1329. package/dist/lib/staleness/layers.js +0 -34
  1330. package/dist/lib/staleness/prune.d.ts +0 -71
  1331. package/dist/lib/staleness/prune.js +2 -27
  1332. package/dist/lib/staleness/registry.d.ts +0 -10
  1333. package/dist/lib/staleness/registry.js +3 -33
  1334. package/dist/lib/staleness/types.d.ts +0 -36
  1335. package/dist/lib/staleness/types.js +0 -5
  1336. package/dist/lib/staleness/writers/commands.js +1 -48
  1337. package/dist/lib/staleness/writers/hooks.js +1 -18
  1338. package/dist/lib/staleness/writers/kinds.d.ts +0 -12
  1339. package/dist/lib/staleness/writers/kinds.js +0 -1
  1340. package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
  1341. package/dist/lib/staleness/writers/mcp.js +0 -13
  1342. package/dist/lib/staleness/writers/plugins.js +0 -4
  1343. package/dist/lib/staleness/writers/rules.d.ts +0 -1
  1344. package/dist/lib/staleness/writers/rules.js +1 -19
  1345. package/dist/lib/staleness/writers/skills.js +3 -14
  1346. package/dist/lib/staleness/writers/sources.d.ts +0 -11
  1347. package/dist/lib/staleness/writers/sources.js +0 -32
  1348. package/dist/lib/staleness/writers/subagents.js +0 -16
  1349. package/dist/lib/staleness/writers/types.d.ts +0 -58
  1350. package/dist/lib/staleness/writers/workflows.js +1 -1
  1351. package/dist/lib/standalone-tools.d.ts +24 -0
  1352. package/dist/lib/standalone-tools.js +58 -0
  1353. package/dist/lib/star-nudge.d.ts +0 -32
  1354. package/dist/lib/star-nudge.js +2 -36
  1355. package/dist/lib/startup/command-registry.d.ts +0 -45
  1356. package/dist/lib/startup/command-registry.js +1 -46
  1357. package/dist/lib/startup/dev-build.d.ts +0 -9
  1358. package/dist/lib/startup/dev-build.js +1 -42
  1359. package/dist/lib/startup/root-command.d.ts +0 -19
  1360. package/dist/lib/startup/root-command.js +0 -19
  1361. package/dist/lib/startup/spellcheck.d.ts +0 -13
  1362. package/dist/lib/startup/spellcheck.js +0 -13
  1363. package/dist/lib/state.d.ts +0 -376
  1364. package/dist/lib/state.js +19 -737
  1365. package/dist/lib/storage/selection.d.ts +0 -40
  1366. package/dist/lib/storage/selection.js +0 -29
  1367. package/dist/lib/subagents-registry.d.ts +0 -56
  1368. package/dist/lib/subagents-registry.js +0 -99
  1369. package/dist/lib/subagents.d.ts +0 -128
  1370. package/dist/lib/subagents.js +1 -158
  1371. package/dist/lib/summarizer/config.d.ts +0 -37
  1372. package/dist/lib/summarizer/config.js +0 -37
  1373. package/dist/lib/summarizer/pass.d.ts +0 -20
  1374. package/dist/lib/summarizer/pass.js +1 -34
  1375. package/dist/lib/summarizer/summarize.d.ts +1 -49
  1376. package/dist/lib/summarizer/summarize.js +0 -35
  1377. package/dist/lib/sync-passphrase.d.ts +0 -16
  1378. package/dist/lib/sync-passphrase.js +1 -18
  1379. package/dist/lib/sync-status.d.ts +0 -72
  1380. package/dist/lib/sync-status.js +0 -55
  1381. package/dist/lib/sync-umbrella.d.ts +0 -54
  1382. package/dist/lib/sync-umbrella.js +0 -48
  1383. package/dist/lib/system-run-sync.d.ts +0 -5
  1384. package/dist/lib/system-run-sync.js +1 -31
  1385. package/dist/lib/teams/agents.d.ts +1 -444
  1386. package/dist/lib/teams/agents.js +11 -871
  1387. package/dist/lib/teams/api.d.ts +2 -52
  1388. package/dist/lib/teams/api.js +4 -63
  1389. package/dist/lib/teams/debug.d.ts +0 -6
  1390. package/dist/lib/teams/debug.js +0 -6
  1391. package/dist/lib/teams/delivery.d.ts +0 -41
  1392. package/dist/lib/teams/delivery.js +0 -32
  1393. package/dist/lib/teams/file_ops.d.ts +0 -11
  1394. package/dist/lib/teams/file_ops.js +0 -11
  1395. package/dist/lib/teams/forEach.d.ts +0 -76
  1396. package/dist/lib/teams/forEach.js +1 -77
  1397. package/dist/lib/teams/index.d.ts +1 -7
  1398. package/dist/lib/teams/index.js +1 -7
  1399. package/dist/lib/teams/parsers.d.ts +0 -4
  1400. package/dist/lib/teams/parsers.js +0 -81
  1401. package/dist/lib/teams/persistence.d.ts +0 -2
  1402. package/dist/lib/teams/persistence.js +0 -12
  1403. package/dist/lib/teams/placement-probe.d.ts +0 -12
  1404. package/dist/lib/teams/placement-probe.js +1 -51
  1405. package/dist/lib/teams/pr-watch.d.ts +0 -107
  1406. package/dist/lib/teams/pr-watch.js +1 -107
  1407. package/dist/lib/teams/registry.d.ts +0 -36
  1408. package/dist/lib/teams/registry.js +0 -47
  1409. package/dist/lib/teams/remoteWorktree.d.ts +0 -50
  1410. package/dist/lib/teams/remoteWorktree.js +1 -96
  1411. package/dist/lib/teams/scheduler.d.ts +0 -111
  1412. package/dist/lib/teams/scheduler.js +2 -125
  1413. package/dist/lib/teams/summarizer.d.ts +0 -22
  1414. package/dist/lib/teams/summarizer.js +6 -50
  1415. package/dist/lib/teams/supervisor.d.ts +0 -38
  1416. package/dist/lib/teams/supervisor.js +0 -21
  1417. package/dist/lib/teams/worktree.d.ts +0 -95
  1418. package/dist/lib/teams/worktree.js +3 -110
  1419. package/dist/lib/template.d.ts +0 -21
  1420. package/dist/lib/template.js +0 -23
  1421. package/dist/lib/term-client.d.ts +0 -26
  1422. package/dist/lib/term-client.js +0 -48
  1423. package/dist/lib/term-driver.d.ts +0 -5
  1424. package/dist/lib/term-driver.js +0 -8
  1425. package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
  1426. package/dist/lib/terminal/backends/ghostty.js +0 -12
  1427. package/dist/lib/terminal/backends/index.d.ts +0 -17
  1428. package/dist/lib/terminal/backends/index.js +0 -15
  1429. package/dist/lib/terminal/backends/iterm.d.ts +0 -2
  1430. package/dist/lib/terminal/backends/iterm.js +0 -10
  1431. package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
  1432. package/dist/lib/terminal/backends/terminal-app.js +0 -30
  1433. package/dist/lib/terminal/backends/tmux.d.ts +0 -10
  1434. package/dist/lib/terminal/backends/tmux.js +0 -2
  1435. package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
  1436. package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
  1437. package/dist/lib/terminal/engine.d.ts +0 -17
  1438. package/dist/lib/terminal/engine.js +0 -10
  1439. package/dist/lib/terminal/index.d.ts +0 -8
  1440. package/dist/lib/terminal/inject.d.ts +1 -173
  1441. package/dist/lib/terminal/inject.js +0 -146
  1442. package/dist/lib/terminal/policy.d.ts +0 -8
  1443. package/dist/lib/terminal/policy.js +0 -1
  1444. package/dist/lib/terminal/preferred.d.ts +0 -66
  1445. package/dist/lib/terminal/preferred.js +0 -30
  1446. package/dist/lib/terminal/quote.d.ts +0 -8
  1447. package/dist/lib/terminal/quote.js +0 -8
  1448. package/dist/lib/terminal/resolve.d.ts +0 -46
  1449. package/dist/lib/terminal/resolve.js +0 -30
  1450. package/dist/lib/terminal/run-surface.d.ts +0 -56
  1451. package/dist/lib/terminal/run-surface.js +0 -46
  1452. package/dist/lib/terminal/shell.d.ts +0 -3
  1453. package/dist/lib/terminal/shell.js +0 -13
  1454. package/dist/lib/terminal/transport.d.ts +0 -14
  1455. package/dist/lib/terminal/transport.js +1 -30
  1456. package/dist/lib/terminal/types.d.ts +0 -40
  1457. package/dist/lib/terminal/types.js +0 -10
  1458. package/dist/lib/text/relative-time.d.ts +0 -36
  1459. package/dist/lib/text/relative-time.js +0 -43
  1460. package/dist/lib/text/short-id.d.ts +0 -16
  1461. package/dist/lib/text/short-id.js +0 -16
  1462. package/dist/lib/text/width.d.ts +0 -24
  1463. package/dist/lib/text/width.js +10 -52
  1464. package/dist/lib/tmux/binary.d.ts +0 -36
  1465. package/dist/lib/tmux/binary.js +0 -28
  1466. package/dist/lib/tmux/index.d.ts +0 -5
  1467. package/dist/lib/tmux/index.js +0 -5
  1468. package/dist/lib/tmux/orphan-reap.d.ts +0 -253
  1469. package/dist/lib/tmux/orphan-reap.js +3 -299
  1470. package/dist/lib/tmux/paths.d.ts +0 -14
  1471. package/dist/lib/tmux/paths.js +0 -14
  1472. package/dist/lib/tmux/session.d.ts +0 -263
  1473. package/dist/lib/tmux/session.js +6 -344
  1474. package/dist/lib/traces/backend.d.ts +0 -20
  1475. package/dist/lib/traces/backend.js +0 -23
  1476. package/dist/lib/traces/classify.d.ts +0 -20
  1477. package/dist/lib/traces/classify.js +0 -7
  1478. package/dist/lib/traces/insights.d.ts +1 -84
  1479. package/dist/lib/traces/insights.js +0 -126
  1480. package/dist/lib/traces/phenotype.d.ts +0 -69
  1481. package/dist/lib/traces/phenotype.js +0 -150
  1482. package/dist/lib/traces/provision.d.ts +0 -1
  1483. package/dist/lib/traces/provision.js +0 -5
  1484. package/dist/lib/traces/schema2-build.d.ts +3 -60
  1485. package/dist/lib/traces/schema2-build.js +8 -149
  1486. package/dist/lib/traces/schema2-danger.d.ts +0 -30
  1487. package/dist/lib/traces/schema2-danger.js +1 -63
  1488. package/dist/lib/traces/schema2.d.ts +0 -11
  1489. package/dist/lib/traces/segments.d.ts +0 -44
  1490. package/dist/lib/traces/segments.js +0 -65
  1491. package/dist/lib/traces/sync.d.ts +2 -239
  1492. package/dist/lib/traces/sync.js +15 -237
  1493. package/dist/lib/traces/worker-template.d.ts +0 -3
  1494. package/dist/lib/traces/worker-template.js +0 -29
  1495. package/dist/lib/triggers/handlers.d.ts +0 -82
  1496. package/dist/lib/triggers/handlers.js +0 -75
  1497. package/dist/lib/triggers/webhook.d.ts +0 -158
  1498. package/dist/lib/triggers/webhook.js +0 -143
  1499. package/dist/lib/types.d.ts +0 -736
  1500. package/dist/lib/types.js +0 -50
  1501. package/dist/lib/uninstall.d.ts +0 -17
  1502. package/dist/lib/uninstall.js +0 -75
  1503. package/dist/lib/usage-backoff.d.ts +0 -20
  1504. package/dist/lib/usage-backoff.js +3 -60
  1505. package/dist/lib/usage-refresh.d.ts +0 -154
  1506. package/dist/lib/usage-refresh.js +8 -212
  1507. package/dist/lib/verbs.d.ts +0 -12
  1508. package/dist/lib/verbs.js +0 -12
  1509. package/dist/lib/version-duplicates.d.ts +0 -6
  1510. package/dist/lib/version-duplicates.js +0 -6
  1511. package/dist/lib/version.d.ts +0 -55
  1512. package/dist/lib/version.js +1 -58
  1513. package/dist/lib/view-types.d.ts +0 -48
  1514. package/dist/lib/warn-unpushed.d.ts +0 -27
  1515. package/dist/lib/warn-unpushed.js +1 -45
  1516. package/dist/lib/watchdog/history.d.ts +0 -1
  1517. package/dist/lib/watchdog/history.js +0 -3
  1518. package/dist/lib/watchdog/index.js +0 -2
  1519. package/dist/lib/watchdog/log.d.ts +0 -19
  1520. package/dist/lib/watchdog/log.js +0 -34
  1521. package/dist/lib/watchdog/read.d.ts +0 -27
  1522. package/dist/lib/watchdog/read.js +3 -58
  1523. package/dist/lib/watchdog/rotate.d.ts +0 -139
  1524. package/dist/lib/watchdog/rotate.js +2 -151
  1525. package/dist/lib/watchdog/runner.d.ts +0 -125
  1526. package/dist/lib/watchdog/runner.js +3 -223
  1527. package/dist/lib/watchdog/service.d.ts +0 -1
  1528. package/dist/lib/watchdog/service.js +0 -2
  1529. package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
  1530. package/dist/lib/watchdog/watchdog-agent.js +0 -27
  1531. package/dist/lib/watchdog/watchdog.d.ts +0 -7
  1532. package/dist/lib/watchdog/watchdog.js +0 -10
  1533. package/dist/lib/watchdog/watchdogTail.js +0 -7
  1534. package/dist/lib/whats-new.d.ts +0 -10
  1535. package/dist/lib/whats-new.js +0 -21
  1536. package/dist/lib/workflows-registry.d.ts +0 -45
  1537. package/dist/lib/workflows-registry.js +0 -60
  1538. package/dist/lib/workflows.d.ts +0 -282
  1539. package/dist/lib/workflows.js +3 -213
  1540. package/dist/lib/worktree/held.d.ts +0 -89
  1541. package/dist/lib/worktree/held.js +1 -103
  1542. package/dist/lib/wrap.d.ts +0 -32
  1543. package/dist/lib/wrap.js +0 -32
  1544. package/dist/lib/yaml-io.d.ts +0 -45
  1545. package/dist/lib/yaml-io.js +0 -47
  1546. package/dist/session-tracker/dist/adapters/claude.js +0 -2
  1547. package/dist/session-tracker/dist/hook.sh +4 -37
  1548. package/dist/session-tracker/dist/index.d.ts +0 -7
  1549. package/dist/session-tracker/dist/index.js +0 -5
  1550. package/dist/session-tracker/dist/install-hook.d.ts +0 -5
  1551. package/dist/session-tracker/dist/install-hook.js +1 -15
  1552. package/dist/session-tracker/dist/prune-state.js +0 -4
  1553. package/dist/session-tracker/dist/reader.js +0 -4
  1554. package/dist/session-tracker/dist/state-file.d.ts +0 -3
  1555. package/dist/session-tracker/dist/state-file.js +3 -8
  1556. package/package.json +3 -4
  1557. package/scripts/postinstall.js +8 -116
  1558. package/dist/lib/session/artifacts.d.ts +0 -14
  1559. package/dist/lib/session/artifacts.js +0 -101
  1560. package/dist/lib/session/bash-command.d.ts +0 -63
  1561. package/dist/lib/session/bash-command.js +0 -490
  1562. package/dist/lib/session/digest.d.ts +0 -66
  1563. package/dist/lib/session/digest.js +0 -328
  1564. package/dist/lib/session/highlights.d.ts +0 -151
  1565. package/dist/lib/session/highlights.js +0 -391
  1566. package/dist/lib/session/insights.d.ts +0 -165
  1567. package/dist/lib/session/insights.js +0 -563
  1568. package/dist/lib/session/linear.d.ts +0 -19
  1569. package/dist/lib/session/linear.js +0 -99
  1570. package/dist/lib/session/parse.d.ts +0 -224
  1571. package/dist/lib/session/parse.js +0 -2408
  1572. package/dist/lib/session/prompt.d.ts +0 -213
  1573. package/dist/lib/session/prompt.js +0 -601
  1574. package/dist/lib/session/render.d.ts +0 -133
  1575. package/dist/lib/session/render.js +0 -1047
  1576. package/dist/lib/session/share-html.d.ts +0 -35
  1577. package/dist/lib/session/share-html.js +0 -319
  1578. package/dist/lib/session/shell-programs.d.ts +0 -33
  1579. package/dist/lib/session/shell-programs.js +0 -380
  1580. package/dist/lib/session/state.d.ts +0 -269
  1581. package/dist/lib/session/state.js +0 -777
  1582. package/dist/lib/session/stream-render.d.ts +0 -4
  1583. package/dist/lib/session/stream-render.js +0 -131
  1584. package/dist/lib/session/tail.d.ts +0 -88
  1585. package/dist/lib/session/tail.js +0 -294
  1586. package/dist/lib/session/team-filter.d.ts +0 -129
  1587. package/dist/lib/session/team-filter.js +0 -269
  1588. package/dist/lib/session/timeline.d.ts +0 -172
  1589. package/dist/lib/session/timeline.js +0 -636
  1590. package/dist/lib/session/tool-calls.d.ts +0 -132
  1591. package/dist/lib/session/tool-calls.js +0 -674
  1592. package/dist/lib/session/trajectory-compare.d.ts +0 -48
  1593. package/dist/lib/session/trajectory-compare.js +0 -116
  1594. package/dist/lib/session/trajectory-html.d.ts +0 -19
  1595. package/dist/lib/session/trajectory-html.js +0 -771
  1596. package/dist/lib/session/trajectory-lineage.d.ts +0 -93
  1597. package/dist/lib/session/trajectory-lineage.js +0 -195
  1598. package/dist/lib/session/trajectory-text.d.ts +0 -38
  1599. package/dist/lib/session/trajectory-text.js +0 -284
  1600. package/dist/lib/session/trajectory.d.ts +0 -145
  1601. package/dist/lib/session/trajectory.js +0 -394
  1602. package/dist/lib/session/types.d.ts +0 -627
  1603. package/dist/lib/session/types.js +0 -43
@@ -1,16 +1,3 @@
1
- /**
2
- * `agents inspect <target>` — detail view for one agent+version or one DotAgents repo.
3
- *
4
- * Agent targets (`claude`, `claude@2.1.170`) show the per-version header (paths,
5
- * shim, capabilities, resource counts, sessions). Repo targets (`user`, `system`,
6
- * `project`, a registered extra-repo alias, or a filesystem path to a repo with a
7
- * `.agents/` dir or to a DotAgents root itself) show the repo root, git state, and
8
- * per-kind resource counts. Drill-down flags (`--skills`, `--hooks`, `--mcp`, ...)
9
- * list one resource kind for either target form; passing a positional query to the
10
- * same flag fuzzy-searches for a single resource and prints its detail. Resource
11
- * names render as OSC-8 hyperlinks to the marker file (SKILL.md / WORKFLOW.md /
12
- * AGENT.md / the file itself) so users can click straight to the source.
13
- */
14
1
  import { execFileSync } from 'child_process';
15
2
  import { addHostOption } from '../lib/hosts/option.js';
16
3
  import * as fs from 'fs';
@@ -36,13 +23,12 @@ import { showResourceList } from './resource-view.js';
36
23
  import { PLUGIN_GROUP_COLORS } from './plugins.js';
37
24
  import { isInteractiveTerminal } from './utils.js';
38
25
  import { countSessionsInScope } from '../lib/session/discover.js';
39
- import { isSessionTrackedAgent } from '../lib/session/types.js';
26
+ import { isSessionTrackedAgent } from '@phnx-labs/sessions-cli/reader';
40
27
  import { damerauLevenshtein } from '../lib/fuzzy.js';
41
28
  import { terminalWidth, truncateToWidth, stringWidth, stripAnsi } from '../lib/session/width.js';
42
29
  import { readJobFileResult, getJobRunsDir, readRunMeta, isOneShotRoutine, isPastOneShotRoutine, listJobs, } from '../lib/scheduling/routines.js';
43
30
  import { routineDeviceIndex, currentRoutineDevice, routineEnabledOnThisDevice, } from '../lib/routine-activation.js';
44
31
  import { humanizeCron } from '../lib/routines-format.js';
45
- /** Resource kinds the inspect command can drill into. */
46
32
  const DRILLABLE_KINDS = [
47
33
  'commands',
48
34
  'skills',
@@ -54,23 +40,10 @@ const DRILLABLE_KINDS = [
54
40
  'subagents',
55
41
  'routines',
56
42
  ];
57
- /**
58
- * Summary-view partition. SIMPLE kinds render as a one-line count + name preview;
59
- * RICH kinds (hooks/plugins/mcp/routines) get their own expanded section showing
60
- * each item's key detail (events/predicates, bundle contents, transport/url,
61
- * schedule + where a routine actually fires). Together they cover every
62
- * DrillableKind — the type below makes that claim load-bearing.
63
- */
64
43
  const SIMPLE_KINDS = ['commands', 'skills', 'rules', 'subagents', 'workflows'];
65
44
  const RICH_KINDS = ['hooks', 'plugins', 'mcp', 'routines'];
66
45
  const _kindsPartitioned = true;
67
46
  void _kindsPartitioned;
68
- /**
69
- * Singular aliases for the plural drill-down flags. `--plugin code` reads as
70
- * "show the one plugin named code" — a required-value flag that always lands in
71
- * detail mode, the natural counterpart to `--plugins` (list). `mcp` has no
72
- * distinct singular, so it is intentionally absent.
73
- */
74
47
  const SINGULAR_DRILL_ALIASES = {
75
48
  command: 'commands',
76
49
  skill: 'skills',
@@ -84,7 +57,6 @@ const SINGULAR_DRILL_ALIASES = {
84
57
  const CAPABILITY_NAMES = [
85
58
  'hooks', 'mcp', 'skills', 'commands', 'subagents', 'plugins', 'workflows', 'rules', 'allowlist',
86
59
  ];
87
- /** Wrap a separator-joined value list under `prefix`, preserving a hanging indent. */
88
60
  export function wrapJoined(prefix, items, sep, width) {
89
61
  if (items.length === 0)
90
62
  return [];
@@ -122,7 +94,6 @@ function printWrappedJoined(prefix, items, sep) {
122
94
  function truncateValueForPrefix(prefix, value) {
123
95
  return truncateToWidth(stripAnsi(value), Math.max(1, terminalWidth() - stringWidth(prefix)));
124
96
  }
125
- // ─── Command registration ────────────────────────────────────────────────────
126
97
  export function registerInspectCommand(program) {
127
98
  const cmd = addHostOption(program.command('inspect <target>'))
128
99
  .description('Inspect one installed agent harness at one version (not a model), or a DotAgents repo — paths, capabilities, resources, and hook capable/on-disk/wired state.')
@@ -138,7 +109,6 @@ export function registerInspectCommand(program) {
138
109
  await inspectAction(target, options);
139
110
  });
140
111
  }
141
- // ─── Main dispatcher ─────────────────────────────────────────────────────────
142
112
  async function inspectAction(target, options) {
143
113
  const agentKey = target.split('@')[0].toLowerCase();
144
114
  if (!(agentKey in AGENTS)) {
@@ -147,8 +117,6 @@ async function inspectAction(target, options) {
147
117
  await inspectRepo(repo, options);
148
118
  return;
149
119
  }
150
- // Repo targets take precedence over typo correction; only fall through to
151
- // parseTarget when the key resolves to an agent (alias or single-edit fix).
152
120
  if (!resolveAgentName(agentKey)) {
153
121
  const extras = getEnabledExtraRepos();
154
122
  console.error(chalk.red(`Unknown target: ${target}`));
@@ -180,9 +148,6 @@ async function inspectAction(target, options) {
180
148
  await renderSummary(agent, version, versionHome, options);
181
149
  }
182
150
  function parseTarget(target) {
183
- // Route through the agent-spec engine: bare resolves project pin → global
184
- // default → sole installed (the meta-only lookup here previously ignored
185
- // project pins); @default/@latest/@oldest/@x.y.z all handled uniformly.
186
151
  try {
187
152
  const { agent, version } = resolveSingleAgentTarget(target);
188
153
  return { agent, version };
@@ -202,7 +167,6 @@ function pickDrillKind(options) {
202
167
  if (value !== undefined)
203
168
  active.push({ flag: `--${kind}`, kind, query: value });
204
169
  }
205
- // Singular aliases (`--plugin code`) always carry a name → detail mode.
206
170
  for (const [singular, plural] of Object.entries(SINGULAR_DRILL_ALIASES)) {
207
171
  const value = options[singular];
208
172
  if (typeof value === 'string')
@@ -216,14 +180,7 @@ function pickDrillKind(options) {
216
180
  }
217
181
  return { kind: active[0].kind, query: active[0].query };
218
182
  }
219
- /** Files at a DotAgents root that mark it as one, beyond the per-kind dirs. */
220
183
  const REPO_MARKER_FILES = ['agents.yaml', 'hooks.yaml'];
221
- /**
222
- * Resolve a non-agent target as a DotAgents repo: the built-in layer names,
223
- * a registered extra-repo alias, or a filesystem path. Paths accept either a
224
- * DotAgents root itself or a repo whose `.agents/` dir should be inspected.
225
- * Returns null when the target is none of these.
226
- */
227
184
  export function resolveRepoTarget(target, cwd) {
228
185
  if (target === 'user')
229
186
  return { label: 'user', root: getUserAgentsDir() };
@@ -246,21 +203,13 @@ export function resolveRepoTarget(target, cwd) {
246
203
  const stat = safeStat(abs);
247
204
  if (!stat || !stat.isDirectory())
248
205
  return null;
249
- // A dir literally named `.agents` is the root itself.
250
206
  if (path.basename(abs) === '.agents') {
251
207
  return { label: path.basename(path.dirname(abs)), root: abs };
252
208
  }
253
- // A nested `.agents/` that is a populated DotAgents root wins over `abs` — the
254
- // project case (`agents inspect .` from a repo root whose resources live under
255
- // `.agents/`, while the repo's own top-level `skills/`, `agents.yaml` pin, etc.
256
- // are unrelated source, not a DotAgents tree).
257
209
  const nested = path.join(abs, '.agents');
258
210
  if (isDotAgentsRoot(nested)) {
259
211
  return { label: path.basename(abs), root: nested };
260
212
  }
261
- // Otherwise treat `abs` itself as the root: standalone clones and extra repos
262
- // like ~/.agents-extras keep resources at the top level and use `.agents/`
263
- // only for worktrees (so their nested `.agents/` is not a DotAgents root).
264
213
  if (isDotAgentsRoot(abs)) {
265
214
  return { label: path.basename(abs), root: abs };
266
215
  }
@@ -272,11 +221,6 @@ function isDotAgentsRoot(dir) {
272
221
  return true;
273
222
  }
274
223
  for (const kind of DRILLABLE_KINDS) {
275
- // `routines/` alone is NOT a marker. Shipping example routine YAML for
276
- // `agents routines add` is a documented pattern (this repo's own
277
- // cli/routines/), and that directory is the ONLY kind dir there — so
278
- // counting it would make `agents inspect cli` resolve a source tree as
279
- // a DotAgents repo. Same reasoning as the nested-`.agents/` case above.
280
224
  if (kind === 'routines')
281
225
  continue;
282
226
  if (safeStat(path.join(dir, kind))?.isDirectory())
@@ -288,9 +232,6 @@ export async function inspectRepo(repo, options) {
288
232
  const drill = pickDrillKind(options);
289
233
  const jsonHead = { repo: repo.label, root: repo.root };
290
234
  if (drill) {
291
- // Routines carry live state, and an unreadable device document silently
292
- // removes that device from every `devices` cell — say so on this path too,
293
- // not only in the overview.
294
235
  let items;
295
236
  if (drill.kind === 'routines') {
296
237
  const provider = defaultRoutineLive();
@@ -305,9 +246,6 @@ export async function inspectRepo(repo, options) {
305
246
  items = collectRepoKind(repo, drill.kind);
306
247
  }
307
248
  if (drill.query === true || drill.query === undefined) {
308
- // A repo's hooks are wired by its OWN agents.yaml, not by whatever this
309
- // machine has installed centrally — the same manifest the repo overview
310
- // reads at collectRepoKind.
311
249
  await renderItemList(repo.label, jsonHead, drill.kind, items, options, drill.kind === 'hooks'
312
250
  ? hookManifestByScript(hookManifestFromFile(path.join(repo.root, 'agents.yaml')))
313
251
  : undefined);
@@ -319,42 +257,19 @@ export async function inspectRepo(repo, options) {
319
257
  }
320
258
  renderRepoSummary(repo, options);
321
259
  }
322
- /** List one resource kind from a single repo root — no layering, no overrides. */
323
260
  export function collectRepoKind(repo, kind) {
324
- // Plugins are bundles with a manifest + nested skills/commands/hooks — read
325
- // them through the plugin discoverer so the manifest description and bundled
326
- // resources surface, rather than treating each as an opaque directory.
327
261
  if (kind === 'plugins') {
328
262
  return discoverPluginsInDir(path.join(repo.root, 'plugins'))
329
263
  .map(p => pluginToItem(p, repo.label))
330
264
  .sort((a, b) => a.name.localeCompare(b.name));
331
265
  }
332
- // Hooks live nested under event directories (`hooks/pre-tool-use/…`), and a
333
- // script pairs with its data sidecar. repoHookItems already reads them that
334
- // way for the summary view; a flat readdir here returned the event dirs
335
- // themselves plus README/test scaffolding, so `--hooks` and the summary
336
- // reported different counts for the same repo.
337
266
  if (kind === 'hooks')
338
267
  return repoHookItems(repo);
339
- // A repo's `rules/` holds the COMPOSED output (AGENTS.md plus its CLAUDE.md /
340
- // GEMINI.md symlinks) alongside a `subrules/` dir of the individually named
341
- // fragments. The fragments are what `--rule <name>` resolves and what a reader
342
- // means by "a rule"; the composed file is a build artifact. Without this,
343
- // `subrules` listed as a single opaque leaf and every real rule was unreachable.
344
- // Deliberately exclusive: once `subrules/` exists it is the sole home for
345
- // rules (composeRules only ever resolves names under it — lib/rules/compose.ts),
346
- // so loose top-level `.md` files are not listed. A repo mid-migration to the
347
- // subrules convention would see those legacy files disappear from `--rules`;
348
- // that is the correct signal, since composeRules would not load them either.
349
268
  if (kind === 'rules') {
350
269
  const subrulesDir = path.join(repo.root, kind, 'subrules');
351
270
  if (fs.existsSync(subrulesDir))
352
271
  return readResourceDir(subrulesDir, kind, repo.label);
353
272
  }
354
- // Routines are YAML job definitions whose real state (does it fire, where, how
355
- // did it last run) lives outside the file. Their directory also holds
356
- // `<name>/home/` sandbox overlays, which a flat readdir would count as
357
- // routines — on this author's box that turned 24 routines into 49.
358
273
  if (kind === 'routines')
359
274
  return collectRepoRoutines(repo);
360
275
  return readResourceDir(path.join(repo.root, kind), kind, repo.label);
@@ -362,25 +277,9 @@ export function collectRepoKind(repo, kind) {
362
277
  const NO_LIVE_STATE = {
363
278
  devices: [], materialized: false, thisDevice: '', enabledHere: null, lastStatus: null, lastAt: null,
364
279
  };
365
- /**
366
- * Whether the routine actually runs on this machine.
367
- *
368
- * Exactly `applyDeviceActivation` (`lib/routines.ts`): this device's own
369
- * allowlist answer wins when it exists, and the file's `enabled:` governs only
370
- * while that answer is `null`. Measured at the same scope as the daemon's, so
371
- * `agents inspect --routines` and `agents routines list` cannot disagree.
372
- */
373
280
  function routineEnabledHere(config, live) {
374
281
  return live.enabledHere === null ? config.enabled : live.enabledHere;
375
282
  }
376
- /**
377
- * The last run we can read, without paying for the whole history.
378
- *
379
- * `getLatestRun` goes through `listRuns`, which parses EVERY meta.json under the
380
- * routine — one firing every 3 minutes accumulates hundreds. Run ids are ISO-ish
381
- * and sort lexicographically, so walking from the newest and stopping at the
382
- * first readable record gives the same answer for a bounded number of reads.
383
- */
384
283
  function latestRunOf(name, maxProbes = 20) {
385
284
  let runIds;
386
285
  try {
@@ -400,14 +299,6 @@ function latestRunOf(name, maxProbes = 20) {
400
299
  }
401
300
  return null;
402
301
  }
403
- /**
404
- * Default live provider: one fleet index per collect, one bounded run read per
405
- * routine, and this device's own activation answer per routine.
406
- *
407
- * Returns the collected `errors` alongside so the caller can surface an
408
- * unreadable device document instead of letting the affected device silently
409
- * vanish from every `devices` cell.
410
- */
411
302
  function defaultRoutineLive() {
412
303
  let index;
413
304
  try {
@@ -423,10 +314,6 @@ function defaultRoutineLive() {
423
314
  return '';
424
315
  } })();
425
316
  const errors = [...index.errors];
426
- // This device's own doc is read through readMeta, which THROWS on a corrupt
427
- // one. Falling back to the file's `enabled:` silently would be the same
428
- // silent-failure class the index's error collection just removed, so record it
429
- // once — the answer is identical for every routine on this machine.
430
317
  let ownDocError = null;
431
318
  const enabledOnThisDevice = (name) => {
432
319
  try {
@@ -446,7 +333,6 @@ function defaultRoutineLive() {
446
333
  devices: index.byRoutine.get(name) ?? [],
447
334
  materialized: index.materialized,
448
335
  thisDevice,
449
- // The same call applyDeviceActivation makes — per-machine, not fleet-wide.
450
336
  enabledHere: enabledOnThisDevice(name),
451
337
  lastStatus: run?.status ?? null,
452
338
  lastAt: run?.startedAt ?? null,
@@ -454,7 +340,6 @@ function defaultRoutineLive() {
454
340
  };
455
341
  return { live, errors };
456
342
  }
457
- /** `2h` / `3d` / `just now` — compact enough for a 10-column cell. */
458
343
  export function compactAge(iso, now = new Date()) {
459
344
  if (!iso)
460
345
  return '';
@@ -474,7 +359,6 @@ export function compactAge(iso, now = new Date()) {
474
359
  return `${days}d`;
475
360
  return `${Math.floor(days / 365)}y`;
476
361
  }
477
- /** What makes this routine fire: a humanized cron, an event trigger, or nothing. */
478
362
  export function routineFireLabel(job, now = new Date()) {
479
363
  const parts = [];
480
364
  if (job.schedule)
@@ -492,7 +376,6 @@ export function routineFireLabel(job, now = new Date()) {
492
376
  }
493
377
  return parts.join(' · ');
494
378
  }
495
- /** What the routine actually executes. Exactly one of agent/workflow/command is set. */
496
379
  export function routineTargetLabel(job) {
497
380
  const agent = manifestText(job.agent);
498
381
  if (agent)
@@ -504,14 +387,6 @@ export function routineTargetLabel(job) {
504
387
  return 'command (shell)';
505
388
  return 'nothing configured';
506
389
  }
507
- /**
508
- * A routine's one-line intent.
509
- *
510
- * Routine YAML has no `description:` key, so the generic first-prose-line reader
511
- * returns `name: growth-metrics` for one file and a real sentence for the next.
512
- * Prefer the prompt's first sentence, then the file's leading comment block, then
513
- * the first meaningful line of a shell command.
514
- */
515
390
  export function routineDescription(job, raw) {
516
391
  const prompt = job ? manifestText(job.prompt).trim() : '';
517
392
  if (prompt)
@@ -526,7 +401,6 @@ export function routineDescription(job, raw) {
526
401
  continue;
527
402
  }
528
403
  const text = comment[1].trim().replace(/^Routine:\s*/i, '');
529
- // Skip the shebang-ish and install-instruction noise that opens many files.
530
404
  if (!text || /^(yaml-language-server|Install:|Usage:)/i.test(text))
531
405
  continue;
532
406
  return summaryLine(text);
@@ -540,15 +414,6 @@ export function routineDescription(job, raw) {
540
414
  }
541
415
  return '';
542
416
  }
543
- /**
544
- * Read every routine one DotAgents repo declares.
545
- *
546
- * Reads exactly `<root>/routines/`, never the layered `listJobs` — `collectRepoKind`
547
- * is a single-root view, and returning `~/.agents` routines while inspecting a
548
- * project repo would be a lie. `live` is injectable because `getUserAgentsDir()`
549
- * and `getRunsDir()` have no env override, so tests cannot otherwise keep this
550
- * off the developer's real fleet state.
551
- */
552
417
  export function collectRepoRoutines(repo, live = defaultRoutineLive().live, now = new Date()) {
553
418
  const dir = path.join(repo.root, 'routines');
554
419
  let entries;
@@ -560,12 +425,6 @@ export function collectRepoRoutines(repo, live = defaultRoutineLive().live, now
560
425
  }
561
426
  const items = [];
562
427
  const seen = new Map();
563
- // Files only: `routines/<name>/home/` is a sandbox overlay HOME, not a routine.
564
- //
565
- // `.yml` before `.yaml` for the same basename, because that is the order
566
- // `readJobFromDir` tries — so when both exist we describe the file the daemon
567
- // actually loads. A plain alphabetical sort put `.yaml` first and reported the
568
- // wrong schedule and command for a routine that fires from its sibling.
569
428
  const files = entries
570
429
  .filter(e => e.isFile() && /\.ya?ml$/.test(e.name) && !e.name.startsWith('.'))
571
430
  .map(e => e.name)
@@ -582,9 +441,6 @@ export function collectRepoRoutines(repo, live = defaultRoutineLive().live, now
582
441
  const name = config?.name || basename;
583
442
  const existing = seen.get(name);
584
443
  if (existing) {
585
- // `writeJob` refuses to edit a routine with both extensions. Keep the item
586
- // built from the file that loads, and flag the ambiguity on it — in `extra`
587
- // for the panes AND in `json` so a --json consumer sees it too.
588
444
  const collision = `both .yml and .yaml exist — ${file} is ignored; resolve before editing`;
589
445
  existing.extra = [...(existing.extra ?? []), ['problem', collision]];
590
446
  if (existing.json)
@@ -638,9 +494,6 @@ export function collectRepoRoutines(repo, live = defaultRoutineLive().live, now
638
494
  linkTarget: filePath,
639
495
  description: routineDescription(config, raw),
640
496
  extra,
641
- // Field names match `agents routines list --json` where they overlap, so
642
- // one script can consume both. `devices` is what the YAML pins;
643
- // `enabledDevices` is what the fleet actually allows — the diagnostic pair.
644
497
  json: {
645
498
  path: filePath,
646
499
  schedule: config?.schedule ?? null,
@@ -652,9 +505,7 @@ export function collectRepoRoutines(repo, live = defaultRoutineLive().live, now
652
505
  command: config?.command ?? null,
653
506
  timezone: config?.timezone ?? null,
654
507
  repo: config?.repo ?? null,
655
- // Effective on THIS machine, matching `agents routines list`.
656
508
  enabled: config ? routineEnabledHere(config, state) : false,
657
- // What the file itself declares, before device activation overrides it.
658
509
  enabledInFile: config?.enabled ?? false,
659
510
  catchup: config ? config.catchup !== false : null,
660
511
  devices: config ? manifestList(config.devices) : [],
@@ -672,15 +523,9 @@ export function collectRepoRoutines(repo, live = defaultRoutineLive().live, now
672
523
  }
673
524
  return items.sort((a, b) => a.name.localeCompare(b.name));
674
525
  }
675
- /** Read one `extra` row back out — the renderers' only accessor. */
676
526
  function extraOf(item, key) {
677
527
  return item.extra?.find(([k]) => k === key)?.[1] ?? '';
678
528
  }
679
- /**
680
- * Enumerate one directory of resources of `kind`, skipping dotfiles, build caches,
681
- * and directory docs. Shared so the rules `subrules/` branch and the default
682
- * `<repo>/<kind>/` branch cannot drift apart.
683
- */
684
529
  function readResourceDir(dir, kind, source) {
685
530
  let entries;
686
531
  try {
@@ -693,13 +538,9 @@ function readResourceDir(dir, kind, source) {
693
538
  for (const entry of entries) {
694
539
  if (entry.name.startsWith('.'))
695
540
  continue;
696
- // Build/tooling caches are never resources — they only inflate counts.
697
541
  if (entry.name === '__pycache__' || entry.name === 'node_modules')
698
542
  continue;
699
543
  const name = entry.name.replace(/\.(md|yaml|yml|toml|json)$/, '');
700
- // README/AGENTS/CLAUDE/GEMINI describe the directory, not resources of this
701
- // kind. CLAUDE.md/GEMINI.md are symlinks to AGENTS.md, so a Dirent reports
702
- // isFile() === false — use !isDirectory() to catch them (mirrors resources.ts).
703
544
  if (!entry.isDirectory() && isDirectoryDoc(kind, name))
704
545
  continue;
705
546
  const p = path.join(dir, entry.name);
@@ -713,7 +554,6 @@ function readResourceDir(dir, kind, source) {
713
554
  }
714
555
  return items.sort((a, b) => a.name.localeCompare(b.name));
715
556
  }
716
- /** A few resource names for the at-a-glance preview, with a `…(+N)` tail. */
717
557
  function previewNames(items, n) {
718
558
  if (items.length === 0)
719
559
  return '';
@@ -721,7 +561,6 @@ function previewNames(items, n) {
721
561
  const extra = items.length - shown.length;
722
562
  return shown.join(', ') + (extra > 0 ? ` …(+${extra})` : '');
723
563
  }
724
- /** Recursive size + file count of a path; symlinks are not followed. */
725
564
  export function pathSize(p) {
726
565
  let stat;
727
566
  try {
@@ -751,10 +590,6 @@ export function pathSize(p) {
751
590
  }
752
591
  return { bytes, files };
753
592
  }
754
- /**
755
- * Weigh only the entries actually listed, for a kind whose directory holds more
756
- * than its resources (routines share theirs with sandbox overlay HOMEs).
757
- */
758
593
  function itemsSize(items) {
759
594
  let bytes = 0, files = 0;
760
595
  for (const item of items) {
@@ -764,7 +599,6 @@ function itemsSize(items) {
764
599
  }
765
600
  return { bytes, files };
766
601
  }
767
- /** Parse the repo's own agents.yaml into the version pins + run strategies it declares. */
768
602
  export function repoManifestSummary(root) {
769
603
  let parsed;
770
604
  try {
@@ -806,8 +640,6 @@ function renderRepoSummary(repo, options) {
806
640
  let routineActivationErrors = [];
807
641
  if (!options.brief) {
808
642
  for (const kind of DRILLABLE_KINDS) {
809
- // Routines share one live provider across the collect so the fleet index is
810
- // read once, and so its errors survive to be reported below.
811
643
  let items;
812
644
  if (kind === 'routines') {
813
645
  const provider = defaultRoutineLive();
@@ -817,9 +649,6 @@ function renderRepoSummary(repo, options) {
817
649
  else {
818
650
  items = collectRepoKind(repo, kind);
819
651
  }
820
- // `routines/` also holds `<name>/home/` sandbox overlays — often far larger
821
- // than the definitions and not resources at all, so weigh the files listed
822
- // rather than the directory tree.
823
652
  const size = kind === 'routines' ? itemsSize(items) : pathSize(path.join(repo.root, kind));
824
653
  kindData[kind] = { items, size };
825
654
  totalBytes += size.bytes;
@@ -873,7 +702,6 @@ function renderRepoSummary(repo, options) {
873
702
  return;
874
703
  }
875
704
  console.log('\n' + chalk.bold(repo.label) + ' ' + chalk.gray('[dotagents repo]') + '\n');
876
- // Indent for continuation sub-rows: 2 leading + 10 key column + 1 space.
877
705
  const sub = (label, value) => console.log(` ${''.padEnd(10)} ${chalk.gray(label.padEnd(8))} ${value}`);
878
706
  console.log(` ${'root'.padEnd(10)} ${termLink(repo.root, repo.root)}`);
879
707
  if (git) {
@@ -916,8 +744,6 @@ function renderRepoSummary(repo, options) {
916
744
  const { items, size } = kindData[kind];
917
745
  const count = String(items.length).padStart(4);
918
746
  const sz = items.length > 0 ? formatBytes(size.bytes).padStart(8) : ''.padEnd(8);
919
- // Width-aware, not a fixed 60: the old cap cut its own "…(+16)" tail off
920
- // the rules row identically at 80, 100 and 160 columns.
921
747
  const prefix = ` ${kind.padEnd(10)} ${count} ${sz} `;
922
748
  const preview = items.length > 0
923
749
  ? chalk.gray(truncateToWidth(previewNames(items, 4), Math.max(12, terminalWidth() - stringWidth(prefix))))
@@ -934,8 +760,6 @@ function renderRepoSummary(repo, options) {
934
760
  console.log(` ${chalk.yellow('⚠')} ${dark}`);
935
761
  console.log(chalk.gray(` Fix: agents routines devices <name> --set <device>`));
936
762
  }
937
- // An unreadable device document silently removes that device from every
938
- // `devices` cell, which reads as "not enabled there" — say so instead.
939
763
  for (const err of routineActivationErrors) {
940
764
  console.log(chalk.gray(` device config unreadable — ${err}`));
941
765
  }
@@ -956,8 +780,6 @@ export function repoGitInfo(root) {
956
780
  const branch = git(['rev-parse', '--abbrev-ref', 'HEAD']);
957
781
  if (branch === null)
958
782
  return null;
959
- // Read status WITHOUT trimming — trimming would strip the leading
960
- // space of the first porcelain line (`XY path`), corrupting the path slice.
961
783
  let statusRaw;
962
784
  try {
963
785
  statusRaw = execFileSync('git', ['-C', root, 'status', '--porcelain'], { stdio: ['ignore', 'pipe', 'ignore'], encoding: 'utf8' });
@@ -984,7 +806,6 @@ export function repoGitInfo(root) {
984
806
  }
985
807
  return { branch, dirty: dirtyFiles.length, dirtyFiles, url: git(['remote', 'get-url', 'origin']), lastCommit, ahead, behind };
986
808
  }
987
- // ─── Summary mode ────────────────────────────────────────────────────────────
988
809
  async function renderSummary(agent, version, versionHome, options) {
989
810
  const meta = readMeta();
990
811
  const isDefault = meta.agents?.[agent] === version;
@@ -992,18 +813,11 @@ async function renderSummary(agent, version, versionHome, options) {
992
813
  const cliState = await getCliState(agent).catch(() => null);
993
814
  const configSymlink = path.join(os.homedir(), `.${agent}`);
994
815
  const configTarget = readSymlinkSafe(configSymlink);
995
- // Report the bare shim only when it is actually there. An isolated install
996
- // deliberately has none — that is the promise — so printing the path
997
- // unconditionally told the user this copy sits on their PATH when it does not.
998
- // Same failure mode as `agents view` claiming an isolated copy was `(global)`.
999
816
  const shimPathIfPresent = fs.existsSync(path.join(getShimsDir(), AGENTS[agent].cliCommand))
1000
817
  ? path.join(getShimsDir(), AGENTS[agent].cliCommand)
1001
818
  : null;
1002
819
  const aliasPath = getVersionedAliasPath(agent, version);
1003
820
  const isolated = isVersionIsolated(agent, version);
1004
- // `default` means the GLOBAL default, which an isolated copy can never be. Report
1005
- // the isolated pointer separately rather than leaving it invisible: it is what a
1006
- // bare `agents run <agent>` resolves to, so "default: false" alone is misleading.
1007
821
  const isIsolatedDefault = isolated && getIsolatedDefault(agent) === version;
1008
822
  const capabilities = collectCapabilities(agent, version);
1009
823
  const itemsByKind = options.brief ? null : collectItemsByKind(agent, versionHome);
@@ -1041,7 +855,6 @@ async function renderSummary(agent, version, versionHome, options) {
1041
855
  console.log(JSON.stringify(json, null, 2));
1042
856
  return;
1043
857
  }
1044
- // Plain text — model sits right beside the version, same priority (no label).
1045
858
  const configuredModel = resolveConfiguredModel(agent, version)?.model;
1046
859
  const modelPart = configuredModel ? ' ' + chalk.yellow(configuredModel) : '';
1047
860
  const head = `${chalk.bold(agent)} ${chalk.gray('@')} ${chalk.cyan(version)}${modelPart}${isDefault ? ' ' + chalk.green('[default]') : ''}${isolated ? ' ' + chalk.gray(isIsolatedDefault ? '[isolated default]' : '[isolated]') : ''}`;
@@ -1064,9 +877,6 @@ async function renderSummary(agent, version, versionHome, options) {
1064
877
  const reason = res.ok ? '' : chalk.gray(`(${res.reason}${res.need ? ' ' + res.need : ''})`);
1065
878
  console.log(` ${cap.padEnd(10)} ${mark} ${reason}`);
1066
879
  }
1067
- // Permission modes are a separate axis from the capability booleans above —
1068
- // same data as `agents modes <agent>`, kept next to the rest of the inspect
1069
- // surface so a human/agent does not have to leave this view.
1070
880
  {
1071
881
  const modeCat = getAgentModesCatalog(agent, version);
1072
882
  const modeList = modeCat.modes.map((m) => (m.isDefault ? `${m.mode}*` : m.mode)).join('/');
@@ -1094,7 +904,6 @@ async function renderSummary(agent, version, versionHome, options) {
1094
904
  console.log(chalk.gray(`Diagnose: agents doctor ${agent}@${version}`));
1095
905
  console.log('');
1096
906
  }
1097
- // ─── List mode ───────────────────────────────────────────────────────────────
1098
907
  async function renderList(agent, version, versionHome, kind, options) {
1099
908
  const items = collectKind(agent, versionHome, kind);
1100
909
  await renderItemList(`${agent}@${version}`, { agent, version }, kind, items, options);
@@ -1122,44 +931,17 @@ async function renderItemList(header, jsonHead, kind, items, options, hookManife
1122
931
  console.log('');
1123
932
  return;
1124
933
  }
1125
- // Route through the shared resource view: an interactive picker with a live
1126
- // preview in a TTY, a plain aligned table when piped. This is the same
1127
- // renderer `agents skills list`, `agents commands` and four others already
1128
- // use — inspect was the last drill-down printing its own two-line-per-entry
1129
- // dump with a `[source]` tag repeated on every row.
1130
- //
1131
- // Sync targets are deliberately off: for a repo the resources ARE the source,
1132
- // so the column would read "no installed versions" for every row.
1133
934
  const sources = new Set(items.map(i => i.source));
1134
- // A hook has no prose description — it is a script. Leaving the column blank
1135
- // is honest but useless, so it carries what the Hooks view is actually for:
1136
- // the events that fire it. Same string the overview prints.
1137
935
  const hookEvents = kind !== 'hooks' ? null : (hookManifest ?? hookManifestByScript(loadCentralHookManifest()));
1138
- // A routine's byte size says nothing; whether it last ran, and where it is
1139
- // allowed to run, is the whole question. Devices needs the room, so it only
1140
- // takes a column on a wide terminal — below that it folds into the description
1141
- // rather than being dropped.
1142
936
  const isRoutines = kind === 'routines';
1143
937
  const routineDevicesColumn = isRoutines && terminalWidth() >= 100;
1144
938
  await showResourceList({
1145
939
  resourcePlural: kind,
1146
940
  resourceSingular: kind.replace(/s$/, ''),
1147
941
  extraLabel: isRoutines ? 'Last' : 'Size',
1148
- // Only carry a source column when the rows actually differ; a uniform
1149
- // `[.system]` on every row is 13 columns spent on one bit of information.
1150
942
  extra2Label: routineDevicesColumn ? 'Devices' : (isRoutines ? undefined : (sources.size > 1 ? 'Source' : undefined)),
1151
943
  showSync: false,
1152
- // inspect's names run long — hook scripts (`00-agent-verify-work-complete`
1153
- // and its `_test` sibling) and namespaced plugin entries (`/swarm:orchestrate`)
1154
- // both blow past the 22-char default and truncate to the same string.
1155
- //
1156
- // Gate on terminal width, NOT on "do any rows have a description": that
1157
- // proxy depended on which path built the items — the repo path hardcodes an
1158
- // empty description so it widened, while the agent path filled one from the
1159
- // script's shebang so it never did. Same command, two behaviours.
1160
944
  nameCap: terminalWidth() >= 120 ? 40 : undefined,
1161
- // Keep names clickable — the pre-picker list wrapped every name in an OSC-8
1162
- // link to its file, and losing that would be a silent capability regression.
1163
945
  linkFor: row => items.find(i => i.name === row.name)?.linkTarget,
1164
946
  emptyMessage: ` (none installed)`,
1165
947
  rows: items.map(item => ({
@@ -1172,8 +954,6 @@ async function renderItemList(header, jsonHead, kind, items, options, hookManife
1172
954
  const problem = extraOf(item, 'problem');
1173
955
  if (problem)
1174
956
  return problem;
1175
- // Compose at the row, leaving item.description pure prose for JSON.
1176
- // Also makes "daily" and "zion" searchable in the picker's filter.
1177
957
  return [
1178
958
  extraOf(item, 'fires'),
1179
959
  routineDevicesColumn ? '' : compactDeviceCell(extraOf(item, 'devices')),
@@ -1187,16 +967,9 @@ async function renderItemList(header, jsonHead, kind, items, options, hookManife
1187
967
  ? compactDeviceCell(extraOf(item, 'devices')) || 'none'
1188
968
  : (isRoutines ? undefined : (sources.size > 1 ? item.source : undefined)),
1189
969
  targets: [],
1190
- // Pass the resolved manifest: the picker rebuilds this on every arrow
1191
- // key, so re-reading ~11 KB of YAML per keystroke is wasted work on top
1192
- // of being the wrong manifest for a repo target.
1193
970
  buildDetail: () => previewFor(kind, item, hookEvents ?? new Map()),
1194
971
  })),
1195
972
  });
1196
- // On a TTY the picker's preview pane carries each plugin's bundled skills and
1197
- // commands. Piped, there is no pane — and the pre-picker output printed those
1198
- // lines under every row, so a table alone would silently drop what a plugin
1199
- // actually ships from `agents inspect . --plugins | grep`.
1200
973
  if (!isInteractiveTerminal() && items.some(i => i.groups?.length)) {
1201
974
  for (const item of items) {
1202
975
  if (!item.groups?.length)
@@ -1205,36 +978,21 @@ async function renderItemList(header, jsonHead, kind, items, options, hookManife
1205
978
  const width = Math.max(...item.groups.map(g => g.label.length));
1206
979
  for (const g of item.groups) {
1207
980
  const colorFn = PLUGIN_GROUP_COLORS[g.label] ?? chalk.white;
1208
- // Wrapped, not truncated: routing these through a truncating helper is
1209
- // what once showed 4 of a 10-command plugin at 80 columns.
1210
981
  printWrappedJoined(` ${chalk.gray(g.label.padEnd(width))} `, g.items.map(s => colorFn(s)), ', ');
1211
982
  }
1212
983
  }
1213
984
  console.log('');
1214
985
  }
1215
986
  }
1216
- /**
1217
- * The scannable half of a description: everything before the trigger clause, and
1218
- * only the first sentence of that. 15 of 20 skills in .system lead with their
1219
- * purpose and then append "Triggers on: …" — in a one-line row that boilerplate
1220
- * is what survives truncation, so the row says nothing. The full text still
1221
- * renders in the preview pane.
1222
- */
1223
987
  export function summaryLine(description) {
1224
988
  if (!description)
1225
989
  return '';
1226
990
  const cutAtTrigger = description.split(/\s*(?:Triggers on|Use this skill when|Invoke when)\b/i)[0];
1227
- // A description that OPENS with the trigger clause splits to an empty head.
1228
- // Returning that would blank the row while --json still carried the text —
1229
- // showing less than we have is worse than showing boilerplate.
1230
991
  const trimmed = cutAtTrigger.trim() || description.trim();
1231
- // First sentence, but only when the split leaves something substantial —
1232
- // "e.g." and friends would otherwise chop a description to a fragment.
1233
992
  const firstSentence = trimmed.match(/^.*?[.!?](?=\s+[A-Z(`])/)?.[0];
1234
993
  const candidate = firstSentence && firstSentence.length >= 40 ? firstSentence : trimmed;
1235
994
  return candidate.replace(/\s+/g, ' ').trim();
1236
995
  }
1237
- /** Compact size for a list row: `18 KB` for a bundle, `413 B` for a single file. */
1238
996
  function itemSizeLabel(p) {
1239
997
  if (!p)
1240
998
  return '';
@@ -1246,7 +1004,6 @@ function itemSizeLabel(p) {
1246
1004
  const { bytes } = pathSize(p);
1247
1005
  return formatBytes(bytes);
1248
1006
  }
1249
- // ─── Detail mode (fuzzy) ─────────────────────────────────────────────────────
1250
1007
  async function renderDetail(agent, version, versionHome, kind, query, options) {
1251
1008
  const items = collectKind(agent, versionHome, kind);
1252
1009
  renderItemDetail(`${agent}@${version}`, { agent, version }, kind, query, items, options);
@@ -1283,22 +1040,11 @@ function renderItemDetail(header, jsonHead, kind, query, items, options) {
1283
1040
  const matchTag = best.matchKind === 'exact' ? 'exact' : best.matchKind === 'substring' ? 'substring' : `~${best.distance}`;
1284
1041
  console.log(` ${chalk.green('✓')} ${termLink(chalk.bold.cyan(best.item.name), best.item.linkTarget)} ${chalk.gray(`[${matchTag}, ${best.item.source}]`)}`);
1285
1042
  if (best.item.description) {
1286
- // Wrap to the real terminal width. This used to be truncate(desc, 100): a
1287
- // character count blind to the window, so a long description lost its
1288
- // sentence at 80 columns AND wasted the space at 200.
1289
1043
  for (const line of wrapJoined(' ', best.item.description.split(/\s+/), ' ', terminalWidth())) {
1290
1044
  console.log(chalk.gray(line));
1291
1045
  }
1292
1046
  }
1293
1047
  for (const [k, v] of buildDetailRows(best.item, kind)) {
1294
- // Wrap, never truncate. These values are `, `-joined lists (commands,
1295
- // skills, triggers, tools) and cutting them hides real entries — a 9-command
1296
- // plugin would show 4. Before the detail view wrapped at all, the terminal
1297
- // soft-wrapped these in full, so truncating here would lose information the
1298
- // old output had.
1299
- // String(v) is belt-and-braces: pluginToItem now coerces every manifest field
1300
- // through manifestText, so nothing non-string should reach here. Kept because
1301
- // this is the choke point every future row kind flows through.
1302
1048
  printWrappedJoined(` ${chalk.gray(k.padEnd(10))} `, String(v).split(', '), ', ');
1303
1049
  }
1304
1050
  if (others.length > 0) {
@@ -1310,7 +1056,6 @@ function renderItemDetail(header, jsonHead, kind, query, items, options) {
1310
1056
  }
1311
1057
  console.log('');
1312
1058
  }
1313
- // ─── Data collection ─────────────────────────────────────────────────────────
1314
1059
  function collectCapabilities(agent, version) {
1315
1060
  const out = {};
1316
1061
  for (const cap of CAPABILITY_NAMES) {
@@ -1330,18 +1075,12 @@ function collectItemsByKind(agent, versionHome) {
1330
1075
  out[kind] = collectKind(agent, versionHome, kind);
1331
1076
  return out;
1332
1077
  }
1333
- /** A simple-kind count row: `kind N user:30 system:12 name, name …(+K)`. */
1334
1078
  function printSimpleResourceRow(kind, items) {
1335
1079
  const count = String(items.length).padStart(4);
1336
1080
  const breakdown = chalk.gray(scopeBreakdownPlain(countBySource(items.map(i => i.source))).padEnd(18));
1337
1081
  const preview = items.length > 0 ? chalk.gray(truncate(previewNames(items, 3), 48)) : '';
1338
1082
  console.log(` ${kind.padEnd(10)} ${count} ${breakdown} ${preview}`.trimEnd());
1339
1083
  }
1340
- /**
1341
- * Build the `resources` JSON: every kind keeps `total` + `bySource` (back-compat),
1342
- * simple kinds add `names`, and the rich kinds add structured `items` (hook
1343
- * events/predicates, mcp transport/url/command, plugin version + group counts).
1344
- */
1345
1084
  function summaryResourcesJson(itemsByKind, hookByScript, mcpConfigs, hookInventory) {
1346
1085
  const out = {};
1347
1086
  for (const kind of DRILLABLE_KINDS) {
@@ -1417,14 +1156,6 @@ function collectKind(agent, versionHome, kind) {
1417
1156
  return agentRoutineItems(agent);
1418
1157
  }
1419
1158
  }
1420
- /**
1421
- * The routines that dispatch this agent.
1422
- *
1423
- * Version-invariant, like the `rules`/`subagents` cases above which also ignore
1424
- * `versionHome`: a routine names an agent, never an agent@version. `listJobs()`
1425
- * with no cwd is deliberate — it is the daemon's own view (user + system), so an
1426
- * unsynced project routine that can never fire is not listed as if it could.
1427
- */
1428
1159
  function agentRoutineItems(agent) {
1429
1160
  const { live } = defaultRoutineLive();
1430
1161
  const now = new Date();
@@ -1447,8 +1178,6 @@ function agentRoutineItems(agent) {
1447
1178
  description: routineDescription(job, ''),
1448
1179
  extra: [
1449
1180
  ['fires', routineFireLabel(job, now)],
1450
- // listJobs already applied device activation, so job.enabled is the
1451
- // effective answer here — no need to re-derive it.
1452
1181
  ['enabled', job.enabled ? 'yes' : 'no'],
1453
1182
  ['devices', state.devices.length > 0
1454
1183
  ? state.devices.join(', ')
@@ -1464,26 +1193,11 @@ function agentRoutineItems(agent) {
1464
1193
  function pluginItems() {
1465
1194
  return discoverPlugins().map(p => pluginToItem(p, 'user'));
1466
1195
  }
1467
- /**
1468
- * Map a discovered plugin to a resource item, surfacing the manifest description
1469
- * and the bundle's nested resources (skills, commands, hooks, ...) as detail rows.
1470
- *
1471
- * EVERY field read here comes from an uncontrolled `plugin.json`:
1472
- * `loadPluginManifest` casts parsed JSON straight to `PluginManifest` and
1473
- * validates only name/version (`lib/plugins.ts`), so the declared types are a
1474
- * hope, not a guarantee. A non-string reaching a renderer throws on `.split` /
1475
- * `.replace`, and `pluginToItem` runs while BUILDING THE LIST — so one malformed
1476
- * manifest anywhere takes down `inspect .`, `--plugins`, `--json`, and even a
1477
- * query for a different, valid plugin. Coerce every field through `manifestText`;
1478
- * never trust the annotation.
1479
- */
1480
1196
  function pluginToItem(plugin, source) {
1481
1197
  const extra = [];
1482
1198
  const version = manifestText(plugin.manifest.version);
1483
1199
  if (version)
1484
1200
  extra.push(['version', version]);
1485
- // Which execution surfaces the bundle actually carries. Detection already
1486
- // exists for the plugin picker; the detail view simply never asked for it.
1487
1201
  const surfaces = pluginCapabilityLabels(inspectPluginCapabilities(plugin.root));
1488
1202
  if (surfaces.length > 0)
1489
1203
  extra.push(['surfaces', surfaces.join(', ')]);
@@ -1491,7 +1205,6 @@ function pluginToItem(plugin, source) {
1491
1205
  const authorLabel = manifestText(typeof author === 'object' && author !== null ? author.name : author);
1492
1206
  if (authorLabel)
1493
1207
  extra.push(['author', authorLabel]);
1494
- // `.length` is truthy for a bare string too, and a string has no `.join`.
1495
1208
  const deps = plugin.manifest.dependencies;
1496
1209
  const depsLabel = Array.isArray(deps)
1497
1210
  ? deps.map(manifestText).filter(Boolean).join(', ')
@@ -1503,18 +1216,11 @@ function pluginToItem(plugin, source) {
1503
1216
  source,
1504
1217
  path: plugin.root,
1505
1218
  linkTarget: linkTarget(plugin.root),
1506
- // `?? ''` catches only null/undefined — a numeric or array description used
1507
- // to reach truncateToWidth/`.split` and kill the render for every plugin.
1508
1219
  description: manifestText(plugin.manifest.description),
1509
1220
  extra,
1510
1221
  groups: pluginResourceGroups(plugin),
1511
1222
  };
1512
1223
  }
1513
- /**
1514
- * Render one uncontrolled manifest value as display text. Objects and arrays
1515
- * carry no sensible one-line form, so they become '' (the row is then dropped)
1516
- * rather than `[object Object]`; everything else stringifies.
1517
- */
1518
1224
  function manifestText(v) {
1519
1225
  if (v === null || v === undefined)
1520
1226
  return '';
@@ -1522,12 +1228,6 @@ function manifestText(v) {
1522
1228
  return '';
1523
1229
  return String(v);
1524
1230
  }
1525
- /**
1526
- * Render one uncontrolled value as a list of display strings. A scalar becomes a
1527
- * one-element list — the case `?? []` and `Array.isArray` both miss, and the one
1528
- * that threw on `.join`. Object entries drop out rather than becoming
1529
- * `[object Object]`.
1530
- */
1531
1231
  function manifestList(v) {
1532
1232
  if (v === null || v === undefined)
1533
1233
  return [];
@@ -1544,12 +1244,6 @@ function entriesFromAgentResources(agent, versionHome, kind) {
1544
1244
  source: e.scope,
1545
1245
  path: e.path,
1546
1246
  linkTarget: linkTarget(e.path),
1547
- // A hook is a shell/Python script with no human description, so the prose
1548
- // fallback returned code: all 53 under an agent home read "!/usr/bin/env
1549
- // bash" (the `#` strip eating the shebang), and skipping that line only
1550
- // promoted `set -euo pipefail`. repoHookItems already hardcodes '' for the
1551
- // repo path; this makes the agent path agree instead of guessing. The
1552
- // Hooks view shows firing events in that column.
1553
1247
  description: kind === 'hooks' ? '' : readDescription(e.path),
1554
1248
  }));
1555
1249
  }
@@ -1573,7 +1267,6 @@ function mcpItems(agent, versionHome) {
1573
1267
  description: m.version ? `version ${m.version}` : '',
1574
1268
  }));
1575
1269
  }
1576
- // ─── Detail field builders ───────────────────────────────────────────────────
1577
1270
  function buildDetail(item, kind) {
1578
1271
  const rows = buildDetailRows(item, kind);
1579
1272
  const out = {
@@ -1586,15 +1279,6 @@ function buildDetail(item, kind) {
1586
1279
  out[k] = v;
1587
1280
  return out;
1588
1281
  }
1589
- /**
1590
- * The preview pane for one row, refreshed as the selection moves.
1591
- *
1592
- * Adaptive on purpose — the sessions picker sets the precedent: a Cursor
1593
- * session shows Dirs/Repos/Artifacts, a Codex one shows a different set, and
1594
- * empty fields simply do not render. A hook's useful metadata (what fires it,
1595
- * whether it is wired) has nothing in common with a skill's (what invokes it,
1596
- * where it is synced), so each kind contributes its own rows and blanks drop out.
1597
- */
1598
1282
  export function previewFor(kind, item, hookManifest) {
1599
1283
  const out = [];
1600
1284
  const label = (k, v) => ` ${chalk.gray(k.padEnd(11))}${v}`;
@@ -1606,16 +1290,7 @@ export function previewFor(kind, item, hookManifest) {
1606
1290
  }
1607
1291
  }
1608
1292
  const rows = [];
1609
- // A hook's identity is when it fires — the summary view has always shown this
1610
- // while the drill-down showed only a size.
1611
1293
  if (kind === 'hooks') {
1612
- // Use the manifest the caller already resolved. Re-resolving the CENTRAL
1613
- // one here made the preview contradict its own row: a repo hook wired by
1614
- // that repo's agents.yaml showed `PreToolUse(Bash)` in the table and
1615
- // "not registered" in the pane below it, and the mirror case credited a
1616
- // central registration to the repo. No `?? loadCentralHookManifest()`
1617
- // fallback: it would be dead in production and would silently reinstate
1618
- // exactly that bug the next time a caller forgot the argument.
1619
1294
  const hook = hookManifest.get(item.name);
1620
1295
  if (hook) {
1621
1296
  rows.push(['fires', chalk.yellow(summarizeHook(hook))]);
@@ -1651,7 +1326,6 @@ export function previewFor(kind, item, hookManifest) {
1651
1326
  for (const [k, v] of rows)
1652
1327
  out.push(label(k, v));
1653
1328
  }
1654
- // A plugin's bundled resources, each on its own line rather than a comma run.
1655
1329
  if (item.groups?.length) {
1656
1330
  for (const g of item.groups) {
1657
1331
  out.push('');
@@ -1664,7 +1338,6 @@ export function previewFor(kind, item, hookManifest) {
1664
1338
  }
1665
1339
  return out.join('\n');
1666
1340
  }
1667
- /** `18 KB · 3 files` for a bundle, `413 B` for a single file. */
1668
1341
  function itemSizeDetail(p) {
1669
1342
  if (!p)
1670
1343
  return '';
@@ -1680,8 +1353,6 @@ function buildDetailRows(item, kind) {
1680
1353
  const rows = [];
1681
1354
  if (item.path && kind !== 'mcp') {
1682
1355
  const stat = safeStat(item.path);
1683
- // A bundle reports its real recursive weight. `(bundle)` carried no
1684
- // information, and pathSize/formatBytes already back the summary view.
1685
1356
  if (stat) {
1686
1357
  if (stat.isDirectory()) {
1687
1358
  const { bytes, files } = pathSize(item.path);
@@ -1692,17 +1363,12 @@ function buildDetailRows(item, kind) {
1692
1363
  }
1693
1364
  }
1694
1365
  }
1695
- // Kind-specific fields
1696
1366
  if (kind === 'skills' || kind === 'commands' || kind === 'subagents') {
1697
1367
  const fm = readFrontmatter(item.path);
1698
1368
  if (fm) {
1699
- // description was already printed by caller; skip if redundant
1700
1369
  if (typeof fm.description === 'string' && fm.description.trim() !== item.description.trim()) {
1701
1370
  rows.push(['description', truncate(fm.description, 120)]);
1702
1371
  }
1703
- // Frontmatter is uncontrolled YAML too. These were type-guarded against a
1704
- // crash but still rendered `[object Object]` for an entry that is a map,
1705
- // and dropped a scalar `triggers: foo` entirely.
1706
1372
  const triggers = manifestList(fm.triggers).join(', ');
1707
1373
  if (triggers)
1708
1374
  rows.push(['triggers', triggers]);
@@ -1714,35 +1380,19 @@ function buildDetailRows(item, kind) {
1714
1380
  rows.push(['tools', tools]);
1715
1381
  }
1716
1382
  }
1717
- // Plugin bundles surface their nested resources (skills, commands, …) plus
1718
- // scalar rows (version).
1719
1383
  if (kind === 'plugins') {
1720
1384
  if (item.groups)
1721
1385
  for (const g of item.groups)
1722
1386
  rows.push([g.label, g.items.join(', ')]);
1723
1387
  }
1724
- // Every kind's scalar rows. previewFor already renders `extra` unconditionally,
1725
- // so gating it on plugins here made the detail view and its own preview pane
1726
- // disagree about the same item — and dropped a routine's schedule/status from
1727
- // `--routine <name> --json` entirely.
1728
1388
  if (item.extra)
1729
1389
  rows.push(...item.extra);
1730
1390
  return rows;
1731
1391
  }
1732
- /** `system` → `sys`; everything else unchanged. Keeps the tag column narrow. */
1733
1392
  function abbrevSource(s) {
1734
1393
  return s === 'system' ? 'sys' : s;
1735
1394
  }
1736
- /**
1737
- * Compact one-liner for a hook from its manifest entry: the firing events (with
1738
- * the matcher/tool-name in parens), then a `·`-separated predicate summary, then
1739
- * an optional cache tail. Plain text — the caller applies color.
1740
- */
1741
1395
  export function summarizeHook(hook) {
1742
- // `hook` is an unvalidated YAML cast from agents.yaml, so `??` is not enough:
1743
- // a scalar `events: PreToolUse` is neither null nor an array, and `.join` threw
1744
- // — taking down bare `agents inspect <repo>`, and via the central manifest
1745
- // `agents inspect <agent>` on every box. Same shape as the plugin.json bug.
1746
1396
  const events = manifestList(hook.events).join('/') || '(no event)';
1747
1397
  let matcher = manifestText(hook.matcher);
1748
1398
  if (!matcher && hook.matches?.tool_name) {
@@ -1759,12 +1409,9 @@ export function summarizeHook(hook) {
1759
1409
  line += ` (${ttl} cache)`;
1760
1410
  return line;
1761
1411
  }
1762
- /** `·`-separated predicate summary from a hook's `matches:` block (tool_name omitted — shown in the matcher parens). */
1763
1412
  function summarizeMatches(m) {
1764
1413
  if (!m)
1765
1414
  return '';
1766
- // Every predicate is raw YAML. `truncate` calls `.slice`, so a numeric
1767
- // `prompt_contains: 12345` threw here just like the events case above.
1768
1415
  const bits = [];
1769
1416
  if (m.git_dirty)
1770
1417
  bits.push('git_dirty');
@@ -1785,25 +1432,19 @@ function summarizeMatches(m) {
1785
1432
  bits.push(`has ${projectHas}`);
1786
1433
  return bits.join(' · ');
1787
1434
  }
1788
- /** Normalize a hook cache shorthand/object to a display ttl ("5m", "1h"); null when uncached. */
1789
1435
  function hookCacheTtl(cache) {
1790
1436
  if (cache === undefined || cache === null)
1791
1437
  return null;
1792
1438
  if (typeof cache === 'string')
1793
1439
  return cache.replace(/-bg$/, '');
1794
- // A bare `cache: 5` has no `.ttl`, and `cache: {ttl: {…}}` has a non-scalar
1795
- // one — String() on either rendered `(undefined cache)` / `([object Object]
1796
- // cache)`. No ttl to show means no cache tail.
1797
1440
  return manifestText(cache.ttl) || null;
1798
1441
  }
1799
- /** Compact one-liner for an MCP server: padded transport + the url (http) or command line (stdio). */
1800
1442
  export function summarizeMcp(cfg) {
1801
1443
  const target = cfg.transport === 'http'
1802
1444
  ? (cfg.url ?? '')
1803
1445
  : [cfg.command, ...(cfg.args ?? [])].filter(Boolean).join(' ');
1804
1446
  return `${cfg.transport.padEnd(5)} ${truncate(target, 60)}`.trimEnd();
1805
1447
  }
1806
- /** Print `Title (N)` then up to `max` aligned `[source] name detail` rows with a `…(+K)` tail. */
1807
1448
  function printExpandedSection(title, rows, max = 6) {
1808
1449
  console.log('\n' + chalk.bold(title) + chalk.gray(` (${rows.length})`));
1809
1450
  if (rows.length === 0) {
@@ -1822,23 +1463,15 @@ function printExpandedSection(title, rows, max = 6) {
1822
1463
  if (rows.length > max)
1823
1464
  console.log(chalk.gray(` …(+${rows.length - max})`));
1824
1465
  }
1825
- /** Tally a source list into `{user: n, system: m}`. */
1826
1466
  function countBySource(sources) {
1827
1467
  const out = {};
1828
1468
  for (const s of sources)
1829
1469
  out[s] = (out[s] || 0) + 1;
1830
1470
  return out;
1831
1471
  }
1832
- /** Unbracketed scope breakdown for the simple count rows: `user:30 system:12`. */
1833
1472
  function scopeBreakdownPlain(bySource) {
1834
1473
  return Object.entries(bySource).map(([k, v]) => `${k}:${v}`).join(' ');
1835
1474
  }
1836
- /**
1837
- * Index a hook manifest by script basename (no extension). Installed hooks are
1838
- * named after their script file (`04-capture-…`), while the manifest is keyed by
1839
- * logical name (`capture-…`) with the filename in `script:` — so we join on the
1840
- * script basename, not the manifest key.
1841
- */
1842
1475
  export function hookManifestByScript(manifest) {
1843
1476
  const out = new Map();
1844
1477
  for (const hook of Object.values(manifest)) {
@@ -1848,12 +1481,7 @@ export function hookManifestByScript(manifest) {
1848
1481
  }
1849
1482
  return out;
1850
1483
  }
1851
- /** Build hook rows by enriching the installed hook items with manifest events/predicates. */
1852
1484
  function hookRows(items, byScript) {
1853
- // The section shows only the first handful before a `…(+N)` tail, so order
1854
- // matters: wired hooks first. Alphabetically `00-…_test` sorts next to the
1855
- // hook it tests, so half the visible rows were test scaffolding with a blank
1856
- // event column while real registered hooks hid behind the tail.
1857
1485
  const ordered = [...items].sort((a, b) => {
1858
1486
  const aw = byScript.has(a.name) ? 0 : 1;
1859
1487
  const bw = byScript.has(b.name) ? 0 : 1;
@@ -1865,13 +1493,10 @@ function hookRows(items, byScript) {
1865
1493
  source: item.source,
1866
1494
  name: item.name,
1867
1495
  linkTarget: item.linkTarget,
1868
- // Hooks are shell scripts with no human description — show events/predicates
1869
- // from the manifest, or nothing rather than a meaningless shebang line.
1870
1496
  detail: hook ? summarizeHook(hook) : '',
1871
1497
  };
1872
1498
  });
1873
1499
  }
1874
- /** Build plugin rows: `vVERSION skills:6 commands:5 …` from the bundle's groups. */
1875
1500
  function pluginRows(items) {
1876
1501
  return items.map(item => {
1877
1502
  const version = item.extra?.find(([k]) => k === 'version')?.[1];
@@ -1880,16 +1505,7 @@ function pluginRows(items) {
1880
1505
  return { source: item.source, name: item.name, detail, linkTarget: item.linkTarget };
1881
1506
  });
1882
1507
  }
1883
- /** Statuses that mean the last run did not do its job. */
1884
1508
  const UNHEALTHY_RUN = new Set(['failed', 'timeout', 'missed', 'blocked']);
1885
- /**
1886
- * Health tier for the section ordering. Lower sorts first.
1887
- *
1888
- * `printExpandedSection` shows only the first handful before a `…(+N)` tail, so
1889
- * for a repo with 24 routines the sort IS the section. Same reasoning as
1890
- * `hookRows` putting wired hooks first: a routine that fires nowhere is exactly
1891
- * what the reader opened this for, and must never hide behind the tail.
1892
- */
1893
1509
  export function routineHealthTier(item) {
1894
1510
  if (extraOf(item, 'problem'))
1895
1511
  return 0;
@@ -1906,34 +1522,23 @@ export function routineHealthTier(item) {
1906
1522
  return 3;
1907
1523
  return 4;
1908
1524
  }
1909
- /** Build routine rows: `daily at 9:00 AM zion completed · 2h ago`. Broken first. */
1910
1525
  function routineRows(items) {
1911
1526
  const ordered = [...items].sort((a, b) => {
1912
1527
  const at = routineHealthTier(a), bt = routineHealthTier(b);
1913
1528
  return at !== bt ? at - bt : a.name.localeCompare(b.name);
1914
1529
  });
1915
1530
  const nameW = ordered.length > 0 ? Math.max(...ordered.slice(0, 6).map(r => r.name.length)) : 0;
1916
- // Budget the three cells against what printExpandedSection leaves after the
1917
- // `[source]` tag and the name column, so the status never truncates to `fai…`.
1918
1531
  const budget = Math.max(30, terminalWidth() - nameW - 14);
1919
1532
  const firesW = Math.min(21, Math.max(12, Math.floor(budget * 0.42)));
1920
1533
  const devicesW = Math.min(14, Math.max(7, Math.floor(budget * 0.22)));
1921
1534
  return ordered.map(item => {
1922
1535
  const problem = extraOf(item, 'problem');
1923
1536
  const fires = extraOf(item, 'fires');
1924
- // A routine with no `fires` never parsed — the problem IS the whole row. One
1925
- // that parsed but carries a problem (a duplicate-extension sibling) keeps its
1926
- // schedule and status, with the problem appended rather than replacing them.
1927
1537
  if (problem && !fires) {
1928
1538
  return { source: item.source, name: item.name, linkTarget: item.linkTarget, detail: chalk.red(problem) };
1929
1539
  }
1930
1540
  const devices = compactDeviceCell(extraOf(item, 'devices'));
1931
1541
  const last = extraOf(item, 'last');
1932
- // Pad the PLAIN strings, then colour. Padding a chalk-wrapped string counts
1933
- // the escape codes as width and silently steals columns from the next cell.
1934
- // The trailing problem gets what the three sized cells leave, or it would
1935
- // blow the row past the terminal and break the alignment this budget exists
1936
- // to hold — a 147-column row at COLUMNS=100 in testing.
1937
1542
  const problemW = Math.max(12, budget - firesW - devicesW - stringWidth(last) - 8);
1938
1543
  const detail = [
1939
1544
  chalk.gray(truncateToWidth(fires, firesW).padEnd(firesW)),
@@ -1949,10 +1554,6 @@ function routineRows(items) {
1949
1554
  };
1950
1555
  });
1951
1556
  }
1952
- /**
1953
- * Routine rows for an agent target: `daily at 9:00 AM completed · 2h ago`.
1954
- * No devices column — an agent view is inherently about this machine.
1955
- */
1956
1557
  function agentRoutineRows(items) {
1957
1558
  const ordered = [...items].sort((a, b) => {
1958
1559
  const at = routineHealthTier(a), bt = routineHealthTier(b);
@@ -1964,13 +1565,6 @@ function agentRoutineRows(items) {
1964
1565
  detail: `${extraOf(item, 'fires').padEnd(20)} ${colorLast(extraOf(item, 'last'))}`,
1965
1566
  }));
1966
1567
  }
1967
- /**
1968
- * `ok 2h` / `fail 3d` / `never` — the Last column, clamped to the 10-wide cell.
1969
- *
1970
- * The picker path pads without truncating, so an 11-char `blocked 3d` would push
1971
- * the next column; the abbreviations cover only the two commonest statuses, so
1972
- * the clamp is what actually holds the invariant.
1973
- */
1974
1568
  function routineLastCell(item, width = 10) {
1975
1569
  const last = extraOf(item, 'last');
1976
1570
  if (!last || last === 'never run')
@@ -1979,12 +1573,6 @@ function routineLastCell(item, width = 10) {
1979
1573
  const word = status === 'completed' ? 'ok' : status === 'failed' ? 'fail' : status;
1980
1574
  return truncateToWidth(age ? `${word} ${age}` : word, width);
1981
1575
  }
1982
- /**
1983
- * Trim the long-form `devices` phrasing down to a cell.
1984
- *
1985
- * The extra row is written for the detail pane ("no device — will not fire");
1986
- * a 16-column cell needs the same fact in two words.
1987
- */
1988
1576
  function compactDeviceCell(devices) {
1989
1577
  if (devices.startsWith('no device —'))
1990
1578
  return 'none ⚠';
@@ -2003,12 +1591,6 @@ function colorLast(last) {
2003
1591
  return chalk.red(last);
2004
1592
  return chalk.gray(last);
2005
1593
  }
2006
- /**
2007
- * The one-line warning under the Routines section, or null when it would mislead.
2008
- *
2009
- * Silent until some device has materialized a `routines:` list — before that,
2010
- * every routine is legitimately unpinned and "will not fire" would be noise.
2011
- */
2012
1594
  export function routineDarkWarning(items) {
2013
1595
  const materialized = items.some(i => {
2014
1596
  const d = extraOf(i, 'devices');
@@ -2019,21 +1601,17 @@ export function routineDarkWarning(items) {
2019
1601
  const dark = items.filter(i => extraOf(i, 'devices').startsWith('no device —')).length;
2020
1602
  if (dark === 0)
2021
1603
  return null;
2022
- // The noun pluralizes on the total ("1 of 2 routines"), the verb on the count
2023
- // that is actually dark ("... is on no device's allowlist").
2024
1604
  const noun = items.length === 1 ? 'routine' : 'routines';
2025
1605
  const verb = dark === 1 ? 'is' : 'are';
2026
1606
  const pronoun = dark === 1 ? 'it' : 'they';
2027
1607
  return `${dark} of ${items.length} ${noun} ${verb} on no device's allowlist — ${pronoun} will not fire.`;
2028
1608
  }
2029
- /** Build MCP rows by joining the installed mcp items with their full configs (transport/url/command). */
2030
1609
  function mcpRows(items, configs) {
2031
1610
  return items.map(item => {
2032
1611
  const cfg = configs.get(item.name);
2033
1612
  return { source: item.source, name: item.name, detail: cfg ? summarizeMcp(cfg) : item.description };
2034
1613
  });
2035
1614
  }
2036
- /** Read a repo/agents.yaml `hooks:` section into a name→ManifestHook map (best-effort). */
2037
1615
  export function hookManifestFromFile(agentsYamlPath) {
2038
1616
  try {
2039
1617
  const meta = yaml.parse(fs.readFileSync(agentsYamlPath, 'utf-8'));
@@ -2043,29 +1621,12 @@ export function hookManifestFromFile(agentsYamlPath) {
2043
1621
  return {};
2044
1622
  }
2045
1623
  }
2046
- /**
2047
- * Merge the system + user `agents.yaml` hook manifests (user wins on key
2048
- * collision). Built directly from the two layer files rather than via
2049
- * `parseHookManifest()` so inspecting never emits the shadow/override warnings
2050
- * that the registrar path prints.
2051
- */
2052
1624
  function loadCentralHookManifest() {
2053
1625
  return {
2054
1626
  ...hookManifestFromFile(path.join(getSystemAgentsDir(), 'agents.yaml')),
2055
1627
  ...hookManifestFromFile(path.join(getUserAgentsDir(), 'agents.yaml')),
2056
1628
  };
2057
1629
  }
2058
- /**
2059
- * Hook items for a repo's Hooks section. Uses the grouped hook reader (script +
2060
- * data file collapsed into one entry, non-hook files like promptcuts.yaml or
2061
- * README.md filtered out) rather than a naive readdir, so names are clean and
2062
- * join cleanly against the manifest by script basename.
2063
- *
2064
- * `description` is intentionally blank: a hook is a script, and the only text a
2065
- * readdir-based reader could scrape from one is its shebang (the old flat path
2066
- * surfaced `!/usr/bin/env bash` as a description). The Hooks section shows firing
2067
- * events via summarizeHook instead, which is the useful signal.
2068
- */
2069
1630
  function repoHookItems(repo) {
2070
1631
  return listHookEntriesFromDir(path.join(repo.root, 'hooks')).map(h => ({
2071
1632
  name: h.name,
@@ -2091,7 +1652,6 @@ function findMatches(items, query) {
2091
1652
  out.sort((a, b) => rankMatch(a) - rankMatch(b));
2092
1653
  return out;
2093
1654
  }
2094
- // No substring hits — fall back to edit distance.
2095
1655
  const threshold = Math.max(2, Math.floor(q.length * 0.3));
2096
1656
  for (const item of items) {
2097
1657
  const d = damerauLevenshtein(q, item.name.toLowerCase());
@@ -2114,16 +1674,12 @@ function suggestClosest(items, query, n) {
2114
1674
  scored.sort((a, b) => a.d - b.d);
2115
1675
  return scored.slice(0, n).map(s => s.item);
2116
1676
  }
2117
- // ─── Frontmatter + description helpers ───────────────────────────────────────
2118
1677
  function readDescription(p) {
2119
1678
  if (!p)
2120
1679
  return '';
2121
1680
  let filePath = p;
2122
1681
  try {
2123
1682
  if (fs.statSync(p).isDirectory()) {
2124
- // `rule.md` is the directory form of a subrule (SUBRULE_RULE_FILE in
2125
- // lib/rules/compose.ts); without it the four dir-form subrules on disk
2126
- // drill in with a blank preview.
2127
1683
  for (const marker of ['SKILL.md', 'WORKFLOW.md', 'AGENT.md', 'rule.md', 'README.md']) {
2128
1684
  const c = path.join(p, marker);
2129
1685
  if (fs.existsSync(c)) {
@@ -2195,7 +1751,6 @@ function readFirstProseLine(p) {
2195
1751
  if (stat.size > 64 * 1024)
2196
1752
  return '';
2197
1753
  const text = fs.readFileSync(p, 'utf-8');
2198
- // Skip frontmatter
2199
1754
  let body = text;
2200
1755
  if (body.startsWith('---')) {
2201
1756
  const end = body.indexOf('\n---', 3);
@@ -2211,10 +1766,9 @@ function readFirstProseLine(p) {
2211
1766
  return line;
2212
1767
  }
2213
1768
  }
2214
- catch { /* ignore */ }
1769
+ catch { }
2215
1770
  return '';
2216
1771
  }
2217
- // ─── OSC-8 + path helpers ────────────────────────────────────────────────────
2218
1772
  function linkTarget(p) {
2219
1773
  if (!p)
2220
1774
  return '';