@phnx-labs/agents-cli 1.22.119 → 1.22.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1603) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/README.md +19 -2
  3. package/dist/bootstrap.d.ts +0 -15
  4. package/dist/bootstrap.js +10 -409
  5. package/dist/cli/command-registry.d.ts +0 -58
  6. package/dist/cli/command-registry.js +2 -74
  7. package/dist/commands/accounts.d.ts +0 -17
  8. package/dist/commands/accounts.js +1 -52
  9. package/dist/commands/alias.d.ts +0 -12
  10. package/dist/commands/alias.js +0 -6
  11. package/dist/commands/apply.d.ts +0 -15
  12. package/dist/commands/apply.js +0 -63
  13. package/dist/commands/audit.d.ts +0 -12
  14. package/dist/commands/audit.js +0 -13
  15. package/dist/commands/auth.js +4 -12
  16. package/dist/commands/beta.d.ts +0 -6
  17. package/dist/commands/beta.js +2 -6
  18. package/dist/commands/browser-sessions-picker.d.ts +0 -8
  19. package/dist/commands/browser-sessions-picker.js +0 -26
  20. package/dist/commands/browser.d.ts +0 -57
  21. package/dist/commands/browser.js +0 -80
  22. package/dist/commands/budget.d.ts +0 -13
  23. package/dist/commands/budget.js +0 -2
  24. package/dist/commands/cli.d.ts +0 -12
  25. package/dist/commands/cli.js +0 -4
  26. package/dist/commands/cloud.d.ts +0 -9
  27. package/dist/commands/cloud.js +0 -43
  28. package/dist/commands/commands.d.ts +0 -9
  29. package/dist/commands/commands.js +0 -18
  30. package/dist/commands/computer-sessions-picker.d.ts +0 -11
  31. package/dist/commands/computer-sessions-picker.js +0 -29
  32. package/dist/commands/computer.d.ts +0 -62
  33. package/dist/commands/computer.js +3 -114
  34. package/dist/commands/config.d.ts +0 -14
  35. package/dist/commands/config.js +21 -60
  36. package/dist/commands/cost.d.ts +0 -11
  37. package/dist/commands/cost.js +1 -17
  38. package/dist/commands/daemon-test-harness.d.ts +0 -32
  39. package/dist/commands/daemon-test-harness.js +1 -36
  40. package/dist/commands/daemon.d.ts +0 -46
  41. package/dist/commands/daemon.js +8 -255
  42. package/dist/commands/detach-core.d.ts +0 -28
  43. package/dist/commands/detach-core.js +0 -30
  44. package/dist/commands/detach.d.ts +1 -12
  45. package/dist/commands/detach.js +16 -52
  46. package/dist/commands/device-config-test-harness.js +0 -12
  47. package/dist/commands/doctor.d.ts +0 -103
  48. package/dist/commands/doctor.js +3 -279
  49. package/dist/commands/events.d.ts +0 -29
  50. package/dist/commands/events.js +1 -55
  51. package/dist/commands/exec.d.ts +0 -163
  52. package/dist/commands/exec.js +15 -964
  53. package/dist/commands/factory.d.ts +0 -6
  54. package/dist/commands/factory.js +0 -2
  55. package/dist/commands/feed-watch.js +0 -20
  56. package/dist/commands/feed.d.ts +0 -38
  57. package/dist/commands/feed.js +1 -151
  58. package/dist/commands/feedback.d.ts +0 -5
  59. package/dist/commands/feedback.js +0 -5
  60. package/dist/commands/fleet-capture.d.ts +0 -12
  61. package/dist/commands/fleet-capture.js +1 -39
  62. package/dist/commands/focus.d.ts +6 -94
  63. package/dist/commands/focus.js +13 -183
  64. package/dist/commands/fork.d.ts +0 -21
  65. package/dist/commands/fork.js +0 -45
  66. package/dist/commands/funnel.d.ts +0 -3
  67. package/dist/commands/go.d.ts +2 -71
  68. package/dist/commands/go.js +5 -99
  69. package/dist/commands/harness-hooks.d.ts +0 -41
  70. package/dist/commands/harness-hooks.js +0 -48
  71. package/dist/commands/harness-wizard.d.ts +0 -137
  72. package/dist/commands/harness-wizard.js +0 -109
  73. package/dist/commands/harness.d.ts +0 -63
  74. package/dist/commands/harness.js +0 -103
  75. package/dist/commands/hooks.d.ts +0 -9
  76. package/dist/commands/hooks.js +0 -26
  77. package/dist/commands/humans.d.ts +0 -8
  78. package/dist/commands/humans.js +0 -8
  79. package/dist/commands/import.d.ts +0 -22
  80. package/dist/commands/import.js +0 -79
  81. package/dist/commands/insights.d.ts +0 -37
  82. package/dist/commands/insights.js +3 -115
  83. package/dist/commands/inspect.d.ts +0 -117
  84. package/dist/commands/inspect.js +2 -448
  85. package/dist/commands/lease.d.ts +0 -28
  86. package/dist/commands/lease.js +0 -43
  87. package/dist/commands/logs.d.ts +0 -23
  88. package/dist/commands/logs.js +0 -30
  89. package/dist/commands/mailboxes.d.ts +0 -18
  90. package/dist/commands/mailboxes.js +0 -29
  91. package/dist/commands/mcp.d.ts +0 -9
  92. package/dist/commands/mcp.js +0 -53
  93. package/dist/commands/memory.d.ts +0 -7
  94. package/dist/commands/memory.js +0 -7
  95. package/dist/commands/menubar.d.ts +0 -8
  96. package/dist/commands/menubar.js +0 -24
  97. package/dist/commands/message.d.ts +0 -23
  98. package/dist/commands/message.js +0 -50
  99. package/dist/commands/mine.d.ts +0 -22
  100. package/dist/commands/mine.js +0 -21
  101. package/dist/commands/models.d.ts +0 -8
  102. package/dist/commands/models.js +0 -33
  103. package/dist/commands/modes.d.ts +0 -10
  104. package/dist/commands/modes.js +0 -13
  105. package/dist/commands/monitors.d.ts +0 -9
  106. package/dist/commands/monitors.js +3 -160
  107. package/dist/commands/open.d.ts +0 -26
  108. package/dist/commands/open.js +0 -10
  109. package/dist/commands/output.d.ts +0 -18
  110. package/dist/commands/output.js +1 -34
  111. package/dist/commands/packages-materialize.d.ts +0 -11
  112. package/dist/commands/packages-materialize.js +0 -3
  113. package/dist/commands/packages.d.ts +0 -10
  114. package/dist/commands/packages.js +0 -50
  115. package/dist/commands/perf.d.ts +0 -41
  116. package/dist/commands/perf.js +0 -55
  117. package/dist/commands/permissions.d.ts +0 -9
  118. package/dist/commands/permissions.js +0 -43
  119. package/dist/commands/plugins.d.ts +0 -14
  120. package/dist/commands/plugins.js +2 -55
  121. package/dist/commands/profiles.d.ts +0 -25
  122. package/dist/commands/profiles.js +0 -27
  123. package/dist/commands/projects-todo.d.ts +2 -0
  124. package/dist/commands/projects-todo.js +132 -0
  125. package/dist/commands/projects.d.ts +0 -85
  126. package/dist/commands/projects.js +344 -291
  127. package/dist/commands/prune.js +0 -30
  128. package/dist/commands/ps-roster.d.ts +92 -0
  129. package/dist/commands/ps-roster.js +744 -0
  130. package/dist/commands/ps.d.ts +6 -0
  131. package/dist/commands/ps.js +98 -0
  132. package/dist/commands/refresh-rules.d.ts +0 -13
  133. package/dist/commands/refresh-rules.js +0 -14
  134. package/dist/commands/reminders.d.ts +0 -7
  135. package/dist/commands/repo.d.ts +0 -89
  136. package/dist/commands/repo.js +7 -205
  137. package/dist/commands/resource-view.d.ts +0 -33
  138. package/dist/commands/resource-view.js +0 -49
  139. package/dist/commands/resume.d.ts +1 -19
  140. package/dist/commands/resume.js +0 -50
  141. package/dist/commands/route.d.ts +0 -10
  142. package/dist/commands/route.js +0 -19
  143. package/dist/commands/routines.d.ts +0 -42
  144. package/dist/commands/routines.js +5 -290
  145. package/dist/commands/routines.test-fixture.d.ts +0 -34
  146. package/dist/commands/routines.test-fixture.js +4 -100
  147. package/dist/commands/rules.d.ts +0 -9
  148. package/dist/commands/rules.js +1 -6
  149. package/dist/commands/run-account-picker.d.ts +0 -59
  150. package/dist/commands/run-account-picker.js +0 -71
  151. package/dist/commands/run-broadcast.d.ts +0 -9
  152. package/dist/commands/run-broadcast.js +0 -7
  153. package/dist/commands/run-cloud.d.ts +0 -15
  154. package/dist/commands/run-cloud.js +0 -37
  155. package/dist/commands/run-device-picker.d.ts +0 -25
  156. package/dist/commands/run-device-picker.js +1 -53
  157. package/dist/commands/secrets-passthrough.d.ts +0 -31
  158. package/dist/commands/secrets-passthrough.js +0 -10
  159. package/dist/commands/send.d.ts +0 -20
  160. package/dist/commands/send.js +14 -18
  161. package/dist/commands/sessions-backfill.d.ts +0 -7
  162. package/dist/commands/sessions-backfill.js +1 -16
  163. package/dist/commands/sessions-backup-setup.js +0 -11
  164. package/dist/commands/sessions-bookmark.d.ts +0 -8
  165. package/dist/commands/sessions-bookmark.js +0 -28
  166. package/dist/commands/sessions-browser.d.ts +2 -117
  167. package/dist/commands/sessions-browser.js +5 -243
  168. package/dist/commands/sessions-export.d.ts +1 -26
  169. package/dist/commands/sessions-export.js +3 -81
  170. package/dist/commands/sessions-import.d.ts +0 -14
  171. package/dist/commands/sessions-import.js +0 -59
  172. package/dist/commands/sessions-inject.d.ts +0 -60
  173. package/dist/commands/sessions-inject.js +3 -96
  174. package/dist/commands/sessions-migrate.d.ts +2 -37
  175. package/dist/commands/sessions-migrate.js +7 -159
  176. package/dist/commands/sessions-optimize.d.ts +0 -12
  177. package/dist/commands/sessions-picker-factory.d.ts +0 -7
  178. package/dist/commands/sessions-picker-factory.js +0 -8
  179. package/dist/commands/sessions-picker.d.ts +4 -103
  180. package/dist/commands/sessions-picker.js +13 -352
  181. package/dist/commands/sessions-render.d.ts +1 -2
  182. package/dist/commands/sessions-render.js +3 -7
  183. package/dist/commands/sessions-resume.d.ts +1 -24
  184. package/dist/commands/sessions-resume.js +2 -65
  185. package/dist/commands/sessions-share.d.ts +1 -9
  186. package/dist/commands/sessions-share.js +1 -45
  187. package/dist/commands/sessions-stats.d.ts +0 -24
  188. package/dist/commands/sessions-stats.js +0 -49
  189. package/dist/commands/sessions-stop.d.ts +1 -20
  190. package/dist/commands/sessions-stop.js +4 -9
  191. package/dist/commands/sessions-tail.d.ts +1 -19
  192. package/dist/commands/sessions-tail.js +3 -36
  193. package/dist/commands/sessions-trace.d.ts +5 -36
  194. package/dist/commands/sessions-trace.js +7 -82
  195. package/dist/commands/sessions.d.ts +1 -666
  196. package/dist/commands/sessions.js +30 -2279
  197. package/dist/commands/sessions.test-fixture.d.ts +0 -9
  198. package/dist/commands/sessions.test-fixture.js +8 -23
  199. package/dist/commands/setup-accounts.d.ts +0 -6
  200. package/dist/commands/setup-browser.d.ts +0 -23
  201. package/dist/commands/setup-browser.js +0 -28
  202. package/dist/commands/setup-computer.d.ts +0 -16
  203. package/dist/commands/setup-computer.js +0 -28
  204. package/dist/commands/setup-fleet.d.ts +0 -8
  205. package/dist/commands/setup-fleet.js +0 -11
  206. package/dist/commands/setup-mine.d.ts +0 -14
  207. package/dist/commands/setup-mine.js +0 -25
  208. package/dist/commands/setup-preferences.d.ts +0 -47
  209. package/dist/commands/setup-preferences.js +0 -53
  210. package/dist/commands/setup-secrets.d.ts +2 -24
  211. package/dist/commands/setup-secrets.js +0 -24
  212. package/dist/commands/setup-term.d.ts +0 -21
  213. package/dist/commands/setup-term.js +0 -21
  214. package/dist/commands/setup-terminal.d.ts +0 -1
  215. package/dist/commands/setup-terminal.js +0 -1
  216. package/dist/commands/setup-tools.d.ts +2 -0
  217. package/dist/commands/setup-tools.js +73 -0
  218. package/dist/commands/setup.d.ts +0 -20
  219. package/dist/commands/setup.js +4 -57
  220. package/dist/commands/skills.d.ts +0 -9
  221. package/dist/commands/skills.js +1 -22
  222. package/dist/commands/snapshot.d.ts +0 -9
  223. package/dist/commands/snapshot.js +0 -10
  224. package/dist/commands/ssh.d.ts +0 -64
  225. package/dist/commands/ssh.js +9 -420
  226. package/dist/commands/status.d.ts +0 -12
  227. package/dist/commands/status.js +0 -26
  228. package/dist/commands/subagents.d.ts +0 -8
  229. package/dist/commands/subagents.js +0 -31
  230. package/dist/commands/sync.d.ts +0 -37
  231. package/dist/commands/sync.js +0 -256
  232. package/dist/commands/teams-picker.d.ts +0 -3
  233. package/dist/commands/teams-picker.js +0 -34
  234. package/dist/commands/teams.d.ts +1 -76
  235. package/dist/commands/teams.js +9 -477
  236. package/dist/commands/tmux.d.ts +0 -25
  237. package/dist/commands/tmux.js +0 -46
  238. package/dist/commands/traces.js +0 -19
  239. package/dist/commands/trash.d.ts +0 -17
  240. package/dist/commands/trash.js +1 -11
  241. package/dist/commands/uninstall.d.ts +0 -9
  242. package/dist/commands/uninstall.js +0 -6
  243. package/dist/commands/update.d.ts +0 -22
  244. package/dist/commands/update.js +0 -44
  245. package/dist/commands/upgrade.d.ts +0 -1
  246. package/dist/commands/upgrade.js +0 -1
  247. package/dist/commands/utils.d.ts +0 -85
  248. package/dist/commands/utils.js +1 -95
  249. package/dist/commands/versions.d.ts +0 -16
  250. package/dist/commands/versions.js +0 -134
  251. package/dist/commands/view.d.ts +0 -90
  252. package/dist/commands/view.js +4 -343
  253. package/dist/commands/watchdog.d.ts +0 -19
  254. package/dist/commands/watchdog.js +3 -43
  255. package/dist/commands/webhook.d.ts +0 -8
  256. package/dist/commands/webhook.js +0 -14
  257. package/dist/commands/workflows.d.ts +0 -8
  258. package/dist/commands/workflows.js +0 -6
  259. package/dist/index.d.ts +0 -25
  260. package/dist/index.js +5 -119
  261. package/dist/lib/account-capabilities.d.ts +0 -34
  262. package/dist/lib/account-capabilities.js +0 -32
  263. package/dist/lib/account-catalog.d.ts +0 -128
  264. package/dist/lib/account-catalog.js +8 -154
  265. package/dist/lib/account-provider-registry.d.ts +0 -14
  266. package/dist/lib/account-provider-registry.js +0 -8
  267. package/dist/lib/account-registry.d.ts +0 -74
  268. package/dist/lib/account-registry.js +14 -189
  269. package/dist/lib/account-schema.d.ts +0 -19
  270. package/dist/lib/account-schema.js +0 -43
  271. package/dist/lib/accounting/account-launch.d.ts +0 -15
  272. package/dist/lib/accounting/account-launch.js +1 -3
  273. package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
  274. package/dist/lib/accounting/account-pool-collect.js +0 -42
  275. package/dist/lib/accounting/account-pool.d.ts +0 -41
  276. package/dist/lib/accounting/account-pool.js +0 -17
  277. package/dist/lib/accounting/capacity.d.ts +0 -32
  278. package/dist/lib/accounting/capacity.js +0 -32
  279. package/dist/lib/accounting/rotate.d.ts +0 -518
  280. package/dist/lib/accounting/rotate.js +4 -598
  281. package/dist/lib/accounting/usage-ingest.d.ts +0 -1
  282. package/dist/lib/accounting/usage-ingest.js +0 -44
  283. package/dist/lib/accounting/usage-sync.d.ts +0 -60
  284. package/dist/lib/accounting/usage-sync.js +4 -51
  285. package/dist/lib/accounting/usage.d.ts +0 -632
  286. package/dist/lib/accounting/usage.js +14 -1055
  287. package/dist/lib/accounts/add.d.ts +0 -60
  288. package/dist/lib/accounts/add.js +0 -127
  289. package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
  290. package/dist/lib/accounts/auth-operation-lock.js +0 -4
  291. package/dist/lib/accounts/migrate.d.ts +0 -9
  292. package/dist/lib/accounts/migrate.js +3 -42
  293. package/dist/lib/accounts/slots.d.ts +0 -25
  294. package/dist/lib/accounts/slots.js +1 -49
  295. package/dist/lib/acp/client.d.ts +0 -16
  296. package/dist/lib/acp/client.js +0 -29
  297. package/dist/lib/acp/harnesses.d.ts +0 -15
  298. package/dist/lib/acp/harnesses.js +0 -16
  299. package/dist/lib/acp/run.d.ts +0 -8
  300. package/dist/lib/acp/run.js +0 -8
  301. package/dist/lib/actor.d.ts +1 -71
  302. package/dist/lib/actor.js +1 -99
  303. package/dist/lib/add-dir.d.ts +0 -46
  304. package/dist/lib/add-dir.js +1 -70
  305. package/dist/lib/address.d.ts +0 -17
  306. package/dist/lib/address.js +0 -15
  307. package/dist/lib/agent-cli-commands.d.ts +0 -10
  308. package/dist/lib/agent-cli-commands.js +0 -10
  309. package/dist/lib/agent-modes.d.ts +0 -29
  310. package/dist/lib/agent-modes.js +0 -31
  311. package/dist/lib/agent-spec/agents.d.ts +0 -426
  312. package/dist/lib/agent-spec/agents.js +37 -924
  313. package/dist/lib/agent-spec/index.d.ts +0 -5
  314. package/dist/lib/agent-spec/index.js +0 -14
  315. package/dist/lib/agent-spec/materialize.d.ts +0 -10
  316. package/dist/lib/agent-spec/materialize.js +2 -139
  317. package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
  318. package/dist/lib/agent-spec/package-resolve.js +1 -44
  319. package/dist/lib/agent-spec/package-schema.d.ts +0 -2
  320. package/dist/lib/agent-spec/package-schema.js +0 -11
  321. package/dist/lib/agent-spec/package-types.d.ts +0 -27
  322. package/dist/lib/agent-spec/package-types.js +0 -1
  323. package/dist/lib/agent-spec/primitives.d.ts +0 -18
  324. package/dist/lib/agent-spec/primitives.js +0 -27
  325. package/dist/lib/agent-spec/provider.js +0 -2
  326. package/dist/lib/agent-spec/resolve.d.ts +0 -23
  327. package/dist/lib/agent-spec/resolve.js +0 -41
  328. package/dist/lib/agent-spec/types.d.ts +0 -34
  329. package/dist/lib/agent-spec/types.js +0 -6
  330. package/dist/lib/agents.d.ts +0 -1
  331. package/dist/lib/agents.js +0 -1
  332. package/dist/lib/analytics/mix-commands.d.ts +0 -23
  333. package/dist/lib/analytics/mix-commands.js +0 -26
  334. package/dist/lib/analytics/recipes.d.ts +0 -1
  335. package/dist/lib/analytics/recipes.js +5 -10
  336. package/dist/lib/analytics/usage-db.js +4 -6
  337. package/dist/lib/answer-router.d.ts +0 -61
  338. package/dist/lib/answer-router.js +0 -57
  339. package/dist/lib/app-bundle-install.d.ts +0 -13
  340. package/dist/lib/app-bundle-install.js +0 -50
  341. package/dist/lib/artifact-actions.d.ts +0 -15
  342. package/dist/lib/artifact-actions.js +0 -18
  343. package/dist/lib/artifacts-client.d.ts +0 -10
  344. package/dist/lib/artifacts-client.js +0 -17
  345. package/dist/lib/ask-classifier.d.ts +0 -38
  346. package/dist/lib/ask-classifier.js +0 -27
  347. package/dist/lib/audit/log.d.ts +0 -47
  348. package/dist/lib/audit/log.js +1 -59
  349. package/dist/lib/auth-health.d.ts +0 -213
  350. package/dist/lib/auth-health.js +16 -266
  351. package/dist/lib/auth-mint.d.ts +0 -83
  352. package/dist/lib/auth-mint.js +8 -85
  353. package/dist/lib/auto-pull-worker.d.ts +0 -10
  354. package/dist/lib/auto-pull-worker.js +3 -48
  355. package/dist/lib/auto-pull.d.ts +0 -64
  356. package/dist/lib/auto-pull.js +0 -79
  357. package/dist/lib/beta.d.ts +0 -9
  358. package/dist/lib/beta.js +0 -9
  359. package/dist/lib/binary-shadow.d.ts +0 -22
  360. package/dist/lib/binary-shadow.js +4 -34
  361. package/dist/lib/boot-profile.d.ts +0 -10
  362. package/dist/lib/boot-profile.js +1 -31
  363. package/dist/lib/brand.d.ts +0 -20
  364. package/dist/lib/brand.js +0 -50
  365. package/dist/lib/browser/context.d.ts +0 -54
  366. package/dist/lib/browser/context.js +0 -49
  367. package/dist/lib/browser/paths.d.ts +0 -21
  368. package/dist/lib/browser/paths.js +0 -26
  369. package/dist/lib/browser/record.d.ts +0 -34
  370. package/dist/lib/browser/record.js +0 -38
  371. package/dist/lib/browser/sessions-list.d.ts +1 -79
  372. package/dist/lib/browser/sessions-list.js +2 -98
  373. package/dist/lib/browser-client.d.ts +0 -112
  374. package/dist/lib/browser-client.js +1 -90
  375. package/dist/lib/budget/config.d.ts +0 -6
  376. package/dist/lib/budget/config.js +0 -29
  377. package/dist/lib/budget/enforce.d.ts +0 -50
  378. package/dist/lib/budget/enforce.js +0 -27
  379. package/dist/lib/budget/ledger.d.ts +0 -23
  380. package/dist/lib/budget/ledger.js +0 -28
  381. package/dist/lib/budget/live-cloud.d.ts +0 -26
  382. package/dist/lib/budget/live-cloud.js +0 -12
  383. package/dist/lib/budget/live-team.d.ts +0 -17
  384. package/dist/lib/budget/live-team.js +1 -35
  385. package/dist/lib/budget/preflight.d.ts +0 -51
  386. package/dist/lib/budget/preflight.js +0 -36
  387. package/dist/lib/byok-usage.d.ts +0 -20
  388. package/dist/lib/byok-usage.js +1 -24
  389. package/dist/lib/capabilities.d.ts +0 -24
  390. package/dist/lib/capabilities.js +0 -29
  391. package/dist/lib/catchup.d.ts +0 -87
  392. package/dist/lib/catchup.js +1 -81
  393. package/dist/lib/channels/owner-forward.d.ts +0 -70
  394. package/dist/lib/channels/owner-forward.js +1 -43
  395. package/dist/lib/channels/owner-sink.js +0 -21
  396. package/dist/lib/channels/providers/desktop.d.ts +0 -37
  397. package/dist/lib/channels/providers/desktop.js +0 -72
  398. package/dist/lib/channels/providers/index.d.ts +0 -1
  399. package/dist/lib/channels/providers/index.js +2 -6
  400. package/dist/lib/channels/providers/mailbox.js +0 -7
  401. package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
  402. package/dist/lib/channels/providers/rush.d.ts +0 -2
  403. package/dist/lib/channels/providers/rush.js +0 -26
  404. package/dist/lib/channels/providers/session.d.ts +2 -0
  405. package/dist/lib/channels/providers/session.js +26 -0
  406. package/dist/lib/channels/registry.d.ts +0 -27
  407. package/dist/lib/channels/registry.js +0 -10
  408. package/dist/lib/channels/resolve.d.ts +0 -19
  409. package/dist/lib/channels/resolve.js +0 -2
  410. package/dist/lib/channels/send.d.ts +0 -50
  411. package/dist/lib/channels/send.js +0 -25
  412. package/dist/lib/checkpoint.d.ts +0 -36
  413. package/dist/lib/checkpoint.js +0 -28
  414. package/dist/lib/claude-account-token.d.ts +0 -98
  415. package/dist/lib/claude-account-token.js +7 -169
  416. package/dist/lib/claude-statusline.d.ts +0 -41
  417. package/dist/lib/claude-statusline.js +0 -68
  418. package/dist/lib/cli-entry.d.ts +0 -26
  419. package/dist/lib/cli-entry.js +1 -61
  420. package/dist/lib/cli-resources.d.ts +31 -89
  421. package/dist/lib/cli-resources.js +116 -152
  422. package/dist/lib/cloud/antigravity.d.ts +0 -29
  423. package/dist/lib/cloud/antigravity.js +0 -36
  424. package/dist/lib/cloud/codex.d.ts +0 -8
  425. package/dist/lib/cloud/codex.js +0 -41
  426. package/dist/lib/cloud/cursor.d.ts +0 -5
  427. package/dist/lib/cloud/cursor.js +2 -7
  428. package/dist/lib/cloud/dispatch.d.ts +0 -13
  429. package/dist/lib/cloud/dispatch.js +1 -48
  430. package/dist/lib/cloud/factory.d.ts +0 -52
  431. package/dist/lib/cloud/factory.js +3 -67
  432. package/dist/lib/cloud/host.d.ts +0 -39
  433. package/dist/lib/cloud/host.js +5 -48
  434. package/dist/lib/cloud/registry.d.ts +0 -25
  435. package/dist/lib/cloud/registry.js +0 -29
  436. package/dist/lib/cloud/rush.d.ts +0 -47
  437. package/dist/lib/cloud/rush.js +1 -82
  438. package/dist/lib/cloud/session-index.d.ts +0 -27
  439. package/dist/lib/cloud/session-index.js +1 -32
  440. package/dist/lib/cloud/store.d.ts +0 -18
  441. package/dist/lib/cloud/store.js +0 -28
  442. package/dist/lib/cloud/stream.d.ts +0 -14
  443. package/dist/lib/cloud/stream.js +0 -25
  444. package/dist/lib/cloud/types.d.ts +0 -168
  445. package/dist/lib/cloud/types.js +0 -46
  446. package/dist/lib/cloudflare/creds.d.ts +0 -2
  447. package/dist/lib/cloudflare/creds.js +0 -14
  448. package/dist/lib/cloudflare/provision.d.ts +0 -8
  449. package/dist/lib/cloudflare/provision.js +1 -19
  450. package/dist/lib/codex-home.d.ts +0 -60
  451. package/dist/lib/codex-home.js +2 -72
  452. package/dist/lib/codex-policy.d.ts +0 -10
  453. package/dist/lib/codex-policy.js +0 -13
  454. package/dist/lib/command-skills.d.ts +0 -10
  455. package/dist/lib/command-skills.js +0 -10
  456. package/dist/lib/commands.d.ts +0 -74
  457. package/dist/lib/commands.js +0 -112
  458. package/dist/lib/comms-render.d.ts +0 -5
  459. package/dist/lib/comms-render.js +0 -5
  460. package/dist/lib/computer/context.d.ts +0 -23
  461. package/dist/lib/computer/context.js +0 -14
  462. package/dist/lib/computer/policy.d.ts +0 -20
  463. package/dist/lib/computer/policy.js +0 -53
  464. package/dist/lib/computer/record.d.ts +0 -33
  465. package/dist/lib/computer/record.js +1 -48
  466. package/dist/lib/computer/sessions-list.d.ts +1 -128
  467. package/dist/lib/computer/sessions-list.js +6 -165
  468. package/dist/lib/computer-client.d.ts +0 -106
  469. package/dist/lib/computer-client.js +5 -86
  470. package/dist/lib/concurrency.d.ts +0 -14
  471. package/dist/lib/concurrency.js +0 -3
  472. package/dist/lib/config-drift.d.ts +0 -31
  473. package/dist/lib/config-drift.js +0 -32
  474. package/dist/lib/config-keys.d.ts +1 -65
  475. package/dist/lib/config-keys.js +6 -52
  476. package/dist/lib/config-transfer.d.ts +0 -14
  477. package/dist/lib/config-transfer.js +0 -26
  478. package/dist/lib/convert.d.ts +0 -17
  479. package/dist/lib/convert.js +0 -18
  480. package/dist/lib/crabbox/cli.d.ts +0 -156
  481. package/dist/lib/crabbox/cli.js +1 -188
  482. package/dist/lib/crabbox/config.d.ts +0 -18
  483. package/dist/lib/crabbox/config.js +1 -19
  484. package/dist/lib/crabbox/lease.d.ts +0 -93
  485. package/dist/lib/crabbox/lease.js +4 -148
  486. package/dist/lib/crabbox/progress.d.ts +0 -56
  487. package/dist/lib/crabbox/progress.js +2 -49
  488. package/dist/lib/crabbox/runtimes.d.ts +0 -94
  489. package/dist/lib/crabbox/runtimes.js +1 -111
  490. package/dist/lib/crabbox/setup-copy.d.ts +0 -64
  491. package/dist/lib/crabbox/setup-copy.js +1 -53
  492. package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
  493. package/dist/lib/daemon/account-state-daemon-service.js +2 -63
  494. package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
  495. package/dist/lib/daemon/attention-notify-service.js +1 -24
  496. package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
  497. package/dist/lib/daemon/auth-sync-service.js +0 -56
  498. package/dist/lib/daemon/catchup-service.d.ts +0 -34
  499. package/dist/lib/daemon/catchup-service.js +0 -30
  500. package/dist/lib/daemon/daemon.d.ts +0 -374
  501. package/dist/lib/daemon/daemon.js +44 -1049
  502. package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
  503. package/dist/lib/daemon/daemon.test-fixture.js +1 -24
  504. package/dist/lib/daemon/device-probe-service.d.ts +0 -16
  505. package/dist/lib/daemon/device-probe-service.js +0 -20
  506. package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
  507. package/dist/lib/daemon/feed-stream-service.js +0 -20
  508. package/dist/lib/daemon/harness-update-service.d.ts +2 -61
  509. package/dist/lib/daemon/harness-update-service.js +6 -86
  510. package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
  511. package/dist/lib/daemon/heartbeat-service.js +0 -1
  512. package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
  513. package/dist/lib/daemon/leaked-daemons.js +2 -78
  514. package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
  515. package/dist/lib/daemon/monitor-engine-service.js +3 -15
  516. package/dist/lib/daemon/runner.d.ts +0 -194
  517. package/dist/lib/daemon/runner.js +39 -760
  518. package/dist/lib/daemon/self-heal-service.d.ts +18 -17
  519. package/dist/lib/daemon/self-heal-service.js +83 -37
  520. package/dist/lib/daemon/self-update-service.d.ts +1 -131
  521. package/dist/lib/daemon/self-update-service.js +26 -189
  522. package/dist/lib/daemon/service.d.ts +0 -73
  523. package/dist/lib/daemon/service.js +0 -34
  524. package/dist/lib/daemon/session-index-service.d.ts +0 -12
  525. package/dist/lib/daemon/session-index-service.js +0 -23
  526. package/dist/lib/daemon/session-state-service.d.ts +0 -8
  527. package/dist/lib/daemon/session-state-service.js +0 -8
  528. package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
  529. package/dist/lib/daemon/session-summarizer-service.js +1 -19
  530. package/dist/lib/daemon/session-title-service.d.ts +0 -25
  531. package/dist/lib/daemon/session-title-service.js +0 -32
  532. package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
  533. package/dist/lib/daemon/state-dir-check-service.js +0 -29
  534. package/dist/lib/daemon/supervisor.d.ts +0 -112
  535. package/dist/lib/daemon/supervisor.js +4 -147
  536. package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
  537. package/dist/lib/daemon/testdata/process-view-start.js +0 -5
  538. package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
  539. package/dist/lib/daemon/tmux-reap-service.js +0 -1
  540. package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
  541. package/dist/lib/daemon/usage-sync-service.js +0 -26
  542. package/dist/lib/daemon/watchdog-service.d.ts +0 -9
  543. package/dist/lib/daemon/watchdog-service.js +0 -13
  544. package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
  545. package/dist/lib/daemon/webhook-receiver-service.js +0 -1
  546. package/dist/lib/daemon-health.d.ts +0 -55
  547. package/dist/lib/daemon-health.js +4 -77
  548. package/dist/lib/daemon-services.d.ts +0 -36
  549. package/dist/lib/daemon-services.js +0 -45
  550. package/dist/lib/daemon-ticks.d.ts +0 -126
  551. package/dist/lib/daemon-ticks.js +1 -156
  552. package/dist/lib/daemon-webhooks.d.ts +0 -57
  553. package/dist/lib/daemon-webhooks.js +2 -54
  554. package/dist/lib/deeplink/register.d.ts +0 -15
  555. package/dist/lib/deeplink/register.js +0 -60
  556. package/dist/lib/deeplink/url.d.ts +0 -24
  557. package/dist/lib/deeplink/url.js +1 -33
  558. package/dist/lib/device-config.d.ts +1 -192
  559. package/dist/lib/device-config.js +86 -240
  560. package/dist/lib/devices/config-migration.d.ts +0 -43
  561. package/dist/lib/devices/config-migration.js +7 -127
  562. package/dist/lib/devices/connect.d.ts +0 -168
  563. package/dist/lib/devices/connect.js +6 -254
  564. package/dist/lib/devices/device-docs.d.ts +0 -24
  565. package/dist/lib/devices/device-docs.js +0 -46
  566. package/dist/lib/devices/discovery-policy.d.ts +0 -30
  567. package/dist/lib/devices/discovery-policy.js +3 -34
  568. package/dist/lib/devices/doctor-findings.d.ts +0 -109
  569. package/dist/lib/devices/doctor-findings.js +30 -326
  570. package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
  571. package/dist/lib/devices/doctor-overview-cache.js +0 -81
  572. package/dist/lib/devices/fleet-divergence.d.ts +0 -89
  573. package/dist/lib/devices/fleet-divergence.js +1 -60
  574. package/dist/lib/devices/fleet-inventory.d.ts +0 -27
  575. package/dist/lib/devices/fleet-inventory.js +0 -38
  576. package/dist/lib/devices/fleet.d.ts +0 -95
  577. package/dist/lib/devices/fleet.js +0 -79
  578. package/dist/lib/devices/harness-inventory.d.ts +0 -75
  579. package/dist/lib/devices/harness-inventory.js +0 -101
  580. package/dist/lib/devices/health-report.d.ts +0 -37
  581. package/dist/lib/devices/health-report.js +0 -73
  582. package/dist/lib/devices/health.d.ts +0 -71
  583. package/dist/lib/devices/health.js +2 -82
  584. package/dist/lib/devices/interactive-host.d.ts +0 -10
  585. package/dist/lib/devices/interactive-host.js +0 -34
  586. package/dist/lib/devices/known-hosts.d.ts +0 -45
  587. package/dist/lib/devices/known-hosts.js +0 -77
  588. package/dist/lib/devices/pending.d.ts +0 -31
  589. package/dist/lib/devices/pending.js +7 -67
  590. package/dist/lib/devices/pool.d.ts +0 -36
  591. package/dist/lib/devices/pool.js +0 -30
  592. package/dist/lib/devices/reachability.d.ts +0 -25
  593. package/dist/lib/devices/reachability.js +0 -14
  594. package/dist/lib/devices/registry.d.ts +0 -141
  595. package/dist/lib/devices/registry.js +4 -151
  596. package/dist/lib/devices/resolve-profile.d.ts +0 -18
  597. package/dist/lib/devices/resolve-profile.js +0 -18
  598. package/dist/lib/devices/resolve-target.d.ts +0 -20
  599. package/dist/lib/devices/resolve-target.js +1 -51
  600. package/dist/lib/devices/rollout-verify.d.ts +1 -81
  601. package/dist/lib/devices/rollout-verify.js +0 -77
  602. package/dist/lib/devices/self-host.d.ts +0 -7
  603. package/dist/lib/devices/self-host.js +1 -29
  604. package/dist/lib/devices/ssh-config.d.ts +0 -18
  605. package/dist/lib/devices/ssh-config.js +0 -9
  606. package/dist/lib/devices/stats-cache.d.ts +0 -48
  607. package/dist/lib/devices/stats-cache.js +0 -80
  608. package/dist/lib/devices/sync.d.ts +0 -97
  609. package/dist/lib/devices/sync.js +0 -88
  610. package/dist/lib/devices/tailscale.d.ts +0 -18
  611. package/dist/lib/devices/tailscale.js +1 -38
  612. package/dist/lib/devices/terminfo.d.ts +0 -27
  613. package/dist/lib/devices/terminfo.js +2 -64
  614. package/dist/lib/devices/worker-pick.d.ts +0 -15
  615. package/dist/lib/devices/worker-pick.js +0 -48
  616. package/dist/lib/diff-text.d.ts +0 -18
  617. package/dist/lib/diff-text.js +0 -15
  618. package/dist/lib/doctor-diff.d.ts +0 -79
  619. package/dist/lib/doctor-diff.js +2 -181
  620. package/dist/lib/drift-sync.d.ts +0 -29
  621. package/dist/lib/drift-sync.js +0 -40
  622. package/dist/lib/drift.d.ts +0 -43
  623. package/dist/lib/drift.js +0 -31
  624. package/dist/lib/event-families.d.ts +0 -17
  625. package/dist/lib/event-families.js +0 -33
  626. package/dist/lib/event-provenance.d.ts +0 -4
  627. package/dist/lib/event-provenance.js +0 -5
  628. package/dist/lib/event-stream.d.ts +0 -29
  629. package/dist/lib/event-stream.js +0 -36
  630. package/dist/lib/events-ingest.d.ts +0 -27
  631. package/dist/lib/events-ingest.js +0 -54
  632. package/dist/lib/exec-account-home.d.ts +0 -24
  633. package/dist/lib/exec-account-home.js +0 -41
  634. package/dist/lib/exec-bounded.d.ts +1 -37
  635. package/dist/lib/exec-bounded.js +10 -46
  636. package/dist/lib/exec.d.ts +3 -583
  637. package/dist/lib/exec.js +18 -1025
  638. package/dist/lib/factory/snapshot.js +1 -15
  639. package/dist/lib/feed/activity-stream.d.ts +0 -27
  640. package/dist/lib/feed/activity-stream.js +4 -80
  641. package/dist/lib/feed/activity.d.ts +1 -243
  642. package/dist/lib/feed/activity.js +8 -273
  643. package/dist/lib/feed/answer.d.ts +0 -103
  644. package/dist/lib/feed/answer.js +0 -267
  645. package/dist/lib/feed/attention.d.ts +0 -56
  646. package/dist/lib/feed/attention.js +0 -161
  647. package/dist/lib/feed/envelope.d.ts +2 -17
  648. package/dist/lib/feed/envelope.js +0 -14
  649. package/dist/lib/feed/events.d.ts +0 -118
  650. package/dist/lib/feed/events.js +13 -213
  651. package/dist/lib/feed/feed.d.ts +1 -250
  652. package/dist/lib/feed/feed.js +24 -334
  653. package/dist/lib/feed/hub-server.d.ts +0 -100
  654. package/dist/lib/feed/hub-server.js +1 -191
  655. package/dist/lib/feed/hub.d.ts +0 -53
  656. package/dist/lib/feed/hub.js +0 -89
  657. package/dist/lib/feed/pr-status.d.ts +1 -19
  658. package/dist/lib/feed/pr-status.js +0 -18
  659. package/dist/lib/feed/tool-activity.d.ts +0 -59
  660. package/dist/lib/feed/tool-activity.js +1 -119
  661. package/dist/lib/feed/tools.d.ts +0 -100
  662. package/dist/lib/feed/tools.js +0 -89
  663. package/dist/lib/feed/watch.d.ts +0 -33
  664. package/dist/lib/feed/watch.js +2 -94
  665. package/dist/lib/feed-broadcast.d.ts +0 -148
  666. package/dist/lib/feed-broadcast.js +1 -283
  667. package/dist/lib/feed-outcome.d.ts +0 -50
  668. package/dist/lib/feed-outcome.js +1 -67
  669. package/dist/lib/feed-policy.d.ts +0 -6
  670. package/dist/lib/feed-policy.js +1 -27
  671. package/dist/lib/feed-post.d.ts +0 -61
  672. package/dist/lib/feed-post.js +4 -61
  673. package/dist/lib/feed-ranking.d.ts +1 -1
  674. package/dist/lib/fleet/apply.d.ts +0 -64
  675. package/dist/lib/fleet/apply.js +0 -125
  676. package/dist/lib/fleet/auth-sync.d.ts +0 -48
  677. package/dist/lib/fleet/auth-sync.js +4 -49
  678. package/dist/lib/fleet/capture.d.ts +0 -26
  679. package/dist/lib/fleet/capture.js +1 -36
  680. package/dist/lib/fleet/manifest.d.ts +0 -38
  681. package/dist/lib/fleet/manifest.js +0 -40
  682. package/dist/lib/fleet/types.d.ts +1 -138
  683. package/dist/lib/fleet/types.js +0 -12
  684. package/dist/lib/fleet-cache.d.ts +0 -12
  685. package/dist/lib/fleet-cache.js +0 -24
  686. package/dist/lib/fleet-shared-state.d.ts +6 -59
  687. package/dist/lib/fleet-shared-state.js +5 -51
  688. package/dist/lib/fleet-status.d.ts +0 -27
  689. package/dist/lib/fleet-status.js +0 -48
  690. package/dist/lib/format.d.ts +0 -74
  691. package/dist/lib/format.js +3 -77
  692. package/dist/lib/friction-heuristics.d.ts +0 -20
  693. package/dist/lib/friction-heuristics.js +0 -8
  694. package/dist/lib/fs-atomic.d.ts +0 -51
  695. package/dist/lib/fs-atomic.js +8 -66
  696. package/dist/lib/fs-walk.d.ts +0 -13
  697. package/dist/lib/fs-walk.js +0 -22
  698. package/dist/lib/fuzzy.d.ts +0 -29
  699. package/dist/lib/fuzzy.js +0 -31
  700. package/dist/lib/gemini-settings.js +0 -12
  701. package/dist/lib/git.d.ts +0 -366
  702. package/dist/lib/git.js +7 -574
  703. package/dist/lib/github/ci-failure.d.ts +30 -0
  704. package/dist/lib/github/ci-failure.js +95 -0
  705. package/dist/lib/github/gh-overload.d.ts +0 -38
  706. package/dist/lib/github/gh-overload.js +3 -55
  707. package/dist/lib/github/pr-mergeable.d.ts +3 -34
  708. package/dist/lib/github/pr-mergeable.js +2 -42
  709. package/dist/lib/github/pr-verdict.d.ts +0 -44
  710. package/dist/lib/github/pr-verdict.js +0 -36
  711. package/dist/lib/github/project-prs.d.ts +135 -105
  712. package/dist/lib/github/project-prs.js +530 -170
  713. package/dist/lib/github/release-drift.d.ts +45 -0
  714. package/dist/lib/github/release-drift.js +91 -0
  715. package/dist/lib/github/rest.d.ts +0 -50
  716. package/dist/lib/github/rest.js +0 -49
  717. package/dist/lib/github/viewer.d.ts +27 -0
  718. package/dist/lib/github/viewer.js +101 -0
  719. package/dist/lib/goose-commands.d.ts +0 -29
  720. package/dist/lib/goose-commands.js +3 -48
  721. package/dist/lib/harness/adapter.d.ts +0 -151
  722. package/dist/lib/harness/adapter.js +0 -41
  723. package/dist/lib/harness/adapters/claude.d.ts +0 -8
  724. package/dist/lib/harness/adapters/claude.js +0 -89
  725. package/dist/lib/harness/adapters/codex.js +0 -18
  726. package/dist/lib/harness/adapters/copilot.js +0 -3
  727. package/dist/lib/harness/adapters/cursor.js +0 -16
  728. package/dist/lib/harness/adapters/droid.js +0 -3
  729. package/dist/lib/harness/adapters/kimi.js +0 -19
  730. package/dist/lib/harness/adapters/muse.js +0 -9
  731. package/dist/lib/harness/adapters/opencode.js +0 -2
  732. package/dist/lib/harness/exec-config-version.d.ts +0 -2
  733. package/dist/lib/harness/exec-config-version.js +0 -13
  734. package/dist/lib/harness/index.js +0 -10
  735. package/dist/lib/harness-auth-capabilities.d.ts +0 -26
  736. package/dist/lib/harness-auth-capabilities.js +0 -18
  737. package/dist/lib/harness-connection-test.d.ts +0 -27
  738. package/dist/lib/harness-connection-test.js +2 -20
  739. package/dist/lib/heal.d.ts +0 -45
  740. package/dist/lib/heal.js +2 -82
  741. package/dist/lib/help.d.ts +0 -32
  742. package/dist/lib/help.js +0 -41
  743. package/dist/lib/helper-download.d.ts +0 -85
  744. package/dist/lib/helper-download.js +0 -95
  745. package/dist/lib/helper-versions.d.ts +0 -51
  746. package/dist/lib/helper-versions.js +1 -45
  747. package/dist/lib/hooks/cache.d.ts +0 -40
  748. package/dist/lib/hooks/cache.js +8 -122
  749. package/dist/lib/hooks/install.d.ts +0 -253
  750. package/dist/lib/hooks/install.js +49 -822
  751. package/dist/lib/hooks/match.d.ts +0 -24
  752. package/dist/lib/hooks/match.js +0 -31
  753. package/dist/lib/hooks/profile.d.ts +0 -21
  754. package/dist/lib/hooks/profile.js +0 -28
  755. package/dist/lib/hosts/credential-transport.d.ts +0 -6
  756. package/dist/lib/hosts/credential-transport.js +0 -17
  757. package/dist/lib/hosts/credentials.d.ts +0 -35
  758. package/dist/lib/hosts/credentials.js +0 -38
  759. package/dist/lib/hosts/dispatch.d.ts +0 -140
  760. package/dist/lib/hosts/dispatch.js +0 -176
  761. package/dist/lib/hosts/logs.d.ts +0 -25
  762. package/dist/lib/hosts/logs.js +1 -51
  763. package/dist/lib/hosts/option.d.ts +0 -12
  764. package/dist/lib/hosts/option.js +0 -12
  765. package/dist/lib/hosts/passthrough.d.ts +0 -129
  766. package/dist/lib/hosts/passthrough.js +12 -249
  767. package/dist/lib/hosts/progress.d.ts +0 -90
  768. package/dist/lib/hosts/progress.js +5 -115
  769. package/dist/lib/hosts/providers/devices.d.ts +0 -19
  770. package/dist/lib/hosts/providers/devices.js +1 -34
  771. package/dist/lib/hosts/providers/local.d.ts +0 -14
  772. package/dist/lib/hosts/providers/local.js +0 -22
  773. package/dist/lib/hosts/ready.d.ts +0 -99
  774. package/dist/lib/hosts/ready.js +0 -101
  775. package/dist/lib/hosts/reconcile.d.ts +0 -38
  776. package/dist/lib/hosts/reconcile.js +1 -50
  777. package/dist/lib/hosts/reconnect.d.ts +0 -75
  778. package/dist/lib/hosts/reconnect.js +0 -98
  779. package/dist/lib/hosts/registry.d.ts +0 -74
  780. package/dist/lib/hosts/registry.js +0 -110
  781. package/dist/lib/hosts/remote-cmd.d.ts +1 -228
  782. package/dist/lib/hosts/remote-cmd.js +19 -294
  783. package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
  784. package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
  785. package/dist/lib/hosts/remote-os.d.ts +0 -19
  786. package/dist/lib/hosts/remote-os.js +0 -22
  787. package/dist/lib/hosts/remote-session-id.d.ts +0 -22
  788. package/dist/lib/hosts/remote-session-id.js +0 -24
  789. package/dist/lib/hosts/routing-flag.d.ts +0 -21
  790. package/dist/lib/hosts/routing-flag.js +0 -21
  791. package/dist/lib/hosts/run-target.d.ts +0 -53
  792. package/dist/lib/hosts/run-target.js +0 -56
  793. package/dist/lib/hosts/session-index.d.ts +1 -53
  794. package/dist/lib/hosts/session-index.js +2 -59
  795. package/dist/lib/hosts/session-marker.d.ts +0 -31
  796. package/dist/lib/hosts/session-marker.js +0 -32
  797. package/dist/lib/hosts/ssh-config.d.ts +0 -25
  798. package/dist/lib/hosts/ssh-config.js +1 -32
  799. package/dist/lib/hosts/tasks.d.ts +0 -54
  800. package/dist/lib/hosts/tasks.js +0 -35
  801. package/dist/lib/hosts/types.d.ts +0 -39
  802. package/dist/lib/hosts/types.js +0 -22
  803. package/dist/lib/humans.d.ts +0 -21
  804. package/dist/lib/humans.js +0 -30
  805. package/dist/lib/identity/client.d.ts +1 -35
  806. package/dist/lib/identity/client.js +3 -29
  807. package/dist/lib/identity/index.d.ts +3 -27
  808. package/dist/lib/identity/index.js +8 -24
  809. package/dist/lib/import.d.ts +0 -104
  810. package/dist/lib/import.js +1 -137
  811. package/dist/lib/installations/active-check.d.ts +0 -53
  812. package/dist/lib/installations/active-check.js +0 -49
  813. package/dist/lib/installations/index.d.ts +0 -9
  814. package/dist/lib/installations/index.js +0 -9
  815. package/dist/lib/installations/installation-lock.js +0 -8
  816. package/dist/lib/installations/launch-gate.d.ts +0 -56
  817. package/dist/lib/installations/launch-gate.js +0 -83
  818. package/dist/lib/installations/migrate.d.ts +0 -100
  819. package/dist/lib/installations/migrate.js +105 -572
  820. package/dist/lib/installations/native-command.d.ts +0 -1
  821. package/dist/lib/installations/native-command.js +0 -6
  822. package/dist/lib/installations/resolve.d.ts +0 -24
  823. package/dist/lib/installations/resolve.js +0 -24
  824. package/dist/lib/installations/shims.d.ts +0 -395
  825. package/dist/lib/installations/shims.js +30 -957
  826. package/dist/lib/installations/store.d.ts +0 -199
  827. package/dist/lib/installations/store.js +1 -297
  828. package/dist/lib/installations/strategies.d.ts +0 -44
  829. package/dist/lib/installations/strategies.js +0 -87
  830. package/dist/lib/installations/types.d.ts +1 -67
  831. package/dist/lib/installations/types.js +0 -6
  832. package/dist/lib/installations/update-cancellation.d.ts +0 -74
  833. package/dist/lib/installations/update-cancellation.js +0 -74
  834. package/dist/lib/installations/update-policy.d.ts +0 -57
  835. package/dist/lib/installations/update-policy.js +0 -62
  836. package/dist/lib/installations/update-runtime.d.ts +0 -88
  837. package/dist/lib/installations/update-runtime.js +1 -127
  838. package/dist/lib/installations/update.d.ts +0 -53
  839. package/dist/lib/installations/update.js +0 -95
  840. package/dist/lib/installations/versions.d.ts +0 -310
  841. package/dist/lib/installations/versions.js +14 -837
  842. package/dist/lib/isolation-boundary-report.d.ts +0 -7
  843. package/dist/lib/isolation-boundary-report.js +0 -7
  844. package/dist/lib/launch-identity.d.ts +0 -8
  845. package/dist/lib/launch-identity.js +0 -8
  846. package/dist/lib/linear-autoclose.d.ts +0 -25
  847. package/dist/lib/linear-autoclose.js +0 -19
  848. package/dist/lib/linear-cache.d.ts +0 -57
  849. package/dist/lib/linear-cache.js +1 -81
  850. package/dist/lib/linear-project-counts.d.ts +0 -83
  851. package/dist/lib/linear-project-counts.js +2 -64
  852. package/dist/lib/linear-projects.d.ts +0 -62
  853. package/dist/lib/linear-projects.js +0 -85
  854. package/dist/lib/linear-rate-limit.d.ts +0 -21
  855. package/dist/lib/linear-rate-limit.js +1 -93
  856. package/dist/lib/linux-userns.d.ts +1 -42
  857. package/dist/lib/linux-userns.js +0 -47
  858. package/dist/lib/lock-compromise.d.ts +0 -7
  859. package/dist/lib/lock-compromise.js +0 -7
  860. package/dist/lib/log-follow.d.ts +0 -2
  861. package/dist/lib/log-follow.js +5 -15
  862. package/dist/lib/loop.d.ts +0 -106
  863. package/dist/lib/loop.js +0 -135
  864. package/dist/lib/machine-id.d.ts +0 -19
  865. package/dist/lib/machine-id.js +0 -19
  866. package/dist/lib/mailbox-gc.d.ts +0 -7
  867. package/dist/lib/mailbox-gc.js +0 -25
  868. package/dist/lib/mailbox-target.d.ts +0 -31
  869. package/dist/lib/mailbox-target.js +0 -27
  870. package/dist/lib/mailbox.d.ts +0 -77
  871. package/dist/lib/mailbox.js +5 -105
  872. package/dist/lib/manifest.d.ts +0 -4
  873. package/dist/lib/manifest.js +0 -36
  874. package/dist/lib/markdown.d.ts +0 -3
  875. package/dist/lib/markdown.js +0 -9
  876. package/dist/lib/mcp-registry.d.ts +1 -50
  877. package/dist/lib/mcp-registry.js +0 -64
  878. package/dist/lib/mcp.d.ts +0 -115
  879. package/dist/lib/mcp.js +3 -199
  880. package/dist/lib/memory-cache.d.ts +0 -11
  881. package/dist/lib/memory-cache.js +0 -9
  882. package/dist/lib/memory.d.ts +0 -52
  883. package/dist/lib/memory.js +12 -74
  884. package/dist/lib/menubar/download-menubar.d.ts +0 -35
  885. package/dist/lib/menubar/download-menubar.js +0 -38
  886. package/dist/lib/menubar/install-menubar.d.ts +0 -405
  887. package/dist/lib/menubar/install-menubar.js +25 -667
  888. package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
  889. package/dist/lib/menubar/migrate-prefs.js +1 -70
  890. package/dist/lib/menubar/notify-desktop.d.ts +0 -82
  891. package/dist/lib/menubar/notify-desktop.js +0 -68
  892. package/dist/lib/menubar/resolve-version.d.ts +0 -41
  893. package/dist/lib/menubar/resolve-version.js +2 -44
  894. package/dist/lib/menubar/snapshot.d.ts +13 -66
  895. package/dist/lib/menubar/snapshot.js +45 -39
  896. package/dist/lib/merged-resources.d.ts +0 -10
  897. package/dist/lib/merged-resources.js +0 -10
  898. package/dist/lib/migrate-fold.d.ts +0 -31
  899. package/dist/lib/migrate-fold.js +6 -38
  900. package/dist/lib/model-tier-overrides.d.ts +0 -30
  901. package/dist/lib/model-tier-overrides.js +0 -14
  902. package/dist/lib/model-tiers.d.ts +0 -43
  903. package/dist/lib/model-tiers.js +5 -78
  904. package/dist/lib/models.d.ts +0 -145
  905. package/dist/lib/models.js +3 -333
  906. package/dist/lib/monitors/config.d.ts +0 -187
  907. package/dist/lib/monitors/config.js +4 -101
  908. package/dist/lib/monitors/dispatch.d.ts +0 -22
  909. package/dist/lib/monitors/dispatch.js +0 -35
  910. package/dist/lib/monitors/engine.d.ts +1 -53
  911. package/dist/lib/monitors/engine.js +17 -106
  912. package/dist/lib/monitors/fingerprint.d.ts +0 -43
  913. package/dist/lib/monitors/fingerprint.js +0 -57
  914. package/dist/lib/monitors/pid-watch.d.ts +0 -31
  915. package/dist/lib/monitors/pid-watch.js +0 -31
  916. package/dist/lib/monitors/remote.d.ts +0 -52
  917. package/dist/lib/monitors/remote.js +0 -42
  918. package/dist/lib/monitors/sources/command.d.ts +2 -9
  919. package/dist/lib/monitors/sources/command.js +13 -34
  920. package/dist/lib/monitors/sources/device.d.ts +0 -10
  921. package/dist/lib/monitors/sources/device.js +0 -14
  922. package/dist/lib/monitors/sources/failure.d.ts +0 -27
  923. package/dist/lib/monitors/sources/failure.js +0 -27
  924. package/dist/lib/monitors/sources/file.d.ts +0 -10
  925. package/dist/lib/monitors/sources/file.js +0 -11
  926. package/dist/lib/monitors/sources/http.d.ts +0 -7
  927. package/dist/lib/monitors/sources/http.js +0 -9
  928. package/dist/lib/monitors/sources/index.d.ts +0 -9
  929. package/dist/lib/monitors/sources/index.js +0 -9
  930. package/dist/lib/monitors/sources/poll.d.ts +0 -8
  931. package/dist/lib/monitors/sources/poll.js +0 -8
  932. package/dist/lib/monitors/sources/types.d.ts +0 -18
  933. package/dist/lib/monitors/sources/types.js +0 -8
  934. package/dist/lib/monitors/sources/webhook.d.ts +0 -7
  935. package/dist/lib/monitors/sources/webhook.js +0 -7
  936. package/dist/lib/monitors/sources/ws.d.ts +0 -10
  937. package/dist/lib/monitors/sources/ws.js +3 -13
  938. package/dist/lib/monitors/state.d.ts +0 -132
  939. package/dist/lib/monitors/state.js +2 -86
  940. package/dist/lib/native-accounts.d.ts +0 -32
  941. package/dist/lib/native-accounts.js +0 -17
  942. package/dist/lib/net-close.d.ts +0 -9
  943. package/dist/lib/net-close.js +0 -5
  944. package/dist/lib/notify.d.ts +0 -47
  945. package/dist/lib/notify.js +0 -30
  946. package/dist/lib/onepassword.d.ts +0 -14
  947. package/dist/lib/onepassword.js +0 -12
  948. package/dist/lib/open-url.d.ts +0 -38
  949. package/dist/lib/open-url.js +1 -69
  950. package/dist/lib/openclaw-keychain.js +2 -7
  951. package/dist/lib/operator.d.ts +0 -9
  952. package/dist/lib/operator.js +0 -34
  953. package/dist/lib/origin-machine.d.ts +0 -16
  954. package/dist/lib/origin-machine.js +0 -16
  955. package/dist/lib/output/git-output.d.ts +0 -31
  956. package/dist/lib/output/git-output.js +4 -43
  957. package/dist/lib/overdue.d.ts +0 -35
  958. package/dist/lib/overdue.js +0 -60
  959. package/dist/lib/owner-message.d.ts +0 -20
  960. package/dist/lib/owner-message.js +1 -40
  961. package/dist/lib/packages/output-home.d.ts +0 -28
  962. package/dist/lib/packages/output-home.js +0 -114
  963. package/dist/lib/paths.d.ts +0 -26
  964. package/dist/lib/paths.js +1 -27
  965. package/dist/lib/percentile.d.ts +0 -11
  966. package/dist/lib/percentile.js +0 -11
  967. package/dist/lib/perf/db.d.ts +0 -16
  968. package/dist/lib/perf/db.js +3 -32
  969. package/dist/lib/perf/spool.d.ts +0 -12
  970. package/dist/lib/perf/spool.js +0 -13
  971. package/dist/lib/perf/types.d.ts +0 -26
  972. package/dist/lib/perf/types.js +0 -1
  973. package/dist/lib/permissions-registry.d.ts +0 -48
  974. package/dist/lib/permissions-registry.js +0 -108
  975. package/dist/lib/permissions.d.ts +0 -215
  976. package/dist/lib/permissions.js +4 -407
  977. package/dist/lib/picker.d.ts +0 -124
  978. package/dist/lib/picker.js +0 -140
  979. package/dist/lib/placement.d.ts +0 -57
  980. package/dist/lib/placement.js +0 -47
  981. package/dist/lib/platform/exec.d.ts +0 -73
  982. package/dist/lib/platform/exec.js +0 -80
  983. package/dist/lib/platform/index.d.ts +0 -14
  984. package/dist/lib/platform/index.js +0 -14
  985. package/dist/lib/platform/ipc.d.ts +0 -10
  986. package/dist/lib/platform/ipc.js +0 -13
  987. package/dist/lib/platform/links.d.ts +0 -14
  988. package/dist/lib/platform/links.js +0 -25
  989. package/dist/lib/platform/paths.d.ts +0 -48
  990. package/dist/lib/platform/paths.js +0 -52
  991. package/dist/lib/platform/posixpath.d.ts +0 -18
  992. package/dist/lib/platform/posixpath.js +0 -62
  993. package/dist/lib/platform/process.d.ts +0 -67
  994. package/dist/lib/platform/process.js +5 -99
  995. package/dist/lib/platform/winpath.d.ts +0 -50
  996. package/dist/lib/platform/winpath.js +0 -81
  997. package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
  998. package/dist/lib/plugins/plugin-marketplace.js +10 -238
  999. package/dist/lib/plugins/plugins.d.ts +0 -238
  1000. package/dist/lib/plugins/plugins.js +20 -454
  1001. package/dist/lib/plugins/skills.d.ts +0 -86
  1002. package/dist/lib/plugins/skills.js +1 -139
  1003. package/dist/lib/pr-land-detach.d.ts +0 -17
  1004. package/dist/lib/pr-land-detach.js +0 -30
  1005. package/dist/lib/pricing/cost.d.ts +0 -29
  1006. package/dist/lib/pricing/cost.js +0 -38
  1007. package/dist/lib/pricing/index.d.ts +0 -6
  1008. package/dist/lib/pricing/index.js +0 -6
  1009. package/dist/lib/pricing/table.d.ts +0 -8
  1010. package/dist/lib/pricing/table.js +3 -56
  1011. package/dist/lib/probe.d.ts +0 -5
  1012. package/dist/lib/probe.js +0 -40
  1013. package/dist/lib/profiles-presets.d.ts +0 -20
  1014. package/dist/lib/profiles-presets.js +1 -36
  1015. package/dist/lib/profiles.d.ts +0 -185
  1016. package/dist/lib/profiles.js +1 -158
  1017. package/dist/lib/project-doctor.d.ts +0 -29
  1018. package/dist/lib/project-doctor.js +0 -26
  1019. package/dist/lib/project-focus.d.ts +0 -41
  1020. package/dist/lib/project-focus.js +0 -49
  1021. package/dist/lib/project-import.d.ts +0 -41
  1022. package/dist/lib/project-import.js +0 -36
  1023. package/dist/lib/project-key.d.ts +0 -65
  1024. package/dist/lib/project-key.js +0 -70
  1025. package/dist/lib/project-launch.d.ts +0 -49
  1026. package/dist/lib/project-launch.js +2 -91
  1027. package/dist/lib/project-probe.d.ts +0 -86
  1028. package/dist/lib/project-probe.js +1 -88
  1029. package/dist/lib/project-pull.d.ts +0 -96
  1030. package/dist/lib/project-pull.js +0 -122
  1031. package/dist/lib/project-resources.d.ts +0 -44
  1032. package/dist/lib/project-resources.js +7 -171
  1033. package/dist/lib/project-root.d.ts +0 -95
  1034. package/dist/lib/project-root.js +0 -101
  1035. package/dist/lib/project-schedule.d.ts +0 -43
  1036. package/dist/lib/project-schedule.js +0 -52
  1037. package/dist/lib/project-status.d.ts +0 -108
  1038. package/dist/lib/project-status.js +0 -117
  1039. package/dist/lib/projects.d.ts +0 -197
  1040. package/dist/lib/projects.js +1 -213
  1041. package/dist/lib/pwsh.d.ts +0 -41
  1042. package/dist/lib/pwsh.js +0 -51
  1043. package/dist/lib/quick-todo.d.ts +84 -0
  1044. package/dist/lib/quick-todo.js +243 -0
  1045. package/dist/lib/reconcile-and-repair.d.ts +0 -78
  1046. package/dist/lib/reconcile-and-repair.js +3 -66
  1047. package/dist/lib/redact.d.ts +0 -29
  1048. package/dist/lib/redact.js +0 -54
  1049. package/dist/lib/refresh-coordinator.d.ts +0 -15
  1050. package/dist/lib/refresh-coordinator.js +0 -10
  1051. package/dist/lib/refresh.d.ts +0 -39
  1052. package/dist/lib/refresh.js +0 -45
  1053. package/dist/lib/registry.d.ts +0 -65
  1054. package/dist/lib/registry.js +0 -127
  1055. package/dist/lib/reminders.d.ts +0 -21
  1056. package/dist/lib/reminders.js +0 -30
  1057. package/dist/lib/remote-agents-json.d.ts +0 -44
  1058. package/dist/lib/remote-agents-json.js +1 -44
  1059. package/dist/lib/reserved-stores.d.ts +0 -28
  1060. package/dist/lib/reserved-stores.js +2 -28
  1061. package/dist/lib/resource-aliases.d.ts +0 -12
  1062. package/dist/lib/resource-aliases.js +0 -12
  1063. package/dist/lib/resource-content-diff.d.ts +0 -28
  1064. package/dist/lib/resource-content-diff.js +7 -34
  1065. package/dist/lib/resource-inventory.d.ts +0 -51
  1066. package/dist/lib/resource-inventory.js +0 -45
  1067. package/dist/lib/resource-patterns.d.ts +0 -32
  1068. package/dist/lib/resource-patterns.js +0 -34
  1069. package/dist/lib/resource-profiles.d.ts +0 -7
  1070. package/dist/lib/resource-profiles.js +0 -11
  1071. package/dist/lib/resources/types.d.ts +0 -50
  1072. package/dist/lib/resources/types.js +0 -7
  1073. package/dist/lib/resources/workflows.d.ts +0 -7
  1074. package/dist/lib/resources/workflows.js +0 -13
  1075. package/dist/lib/resources.d.ts +0 -65
  1076. package/dist/lib/resources.js +0 -78
  1077. package/dist/lib/routers.d.ts +0 -67
  1078. package/dist/lib/routers.js +0 -60
  1079. package/dist/lib/routine-activation.d.ts +0 -23
  1080. package/dist/lib/routine-activation.js +0 -24
  1081. package/dist/lib/routine-context.d.ts +1 -91
  1082. package/dist/lib/routine-context.js +0 -107
  1083. package/dist/lib/routine-notify-owner.d.ts +0 -79
  1084. package/dist/lib/routine-notify-owner.js +1 -103
  1085. package/dist/lib/routine-notify.d.ts +0 -70
  1086. package/dist/lib/routine-notify.js +1 -75
  1087. package/dist/lib/routine-process-cleanup.d.ts +0 -1
  1088. package/dist/lib/routine-process-cleanup.js +1 -4
  1089. package/dist/lib/routine-readiness.d.ts +0 -63
  1090. package/dist/lib/routine-readiness.js +4 -86
  1091. package/dist/lib/routines-format.d.ts +0 -40
  1092. package/dist/lib/routines-format.js +0 -67
  1093. package/dist/lib/routines-placement.d.ts +0 -33
  1094. package/dist/lib/routines-placement.js +0 -40
  1095. package/dist/lib/routines-project.d.ts +0 -57
  1096. package/dist/lib/routines-project.js +6 -80
  1097. package/dist/lib/rules/compile.d.ts +0 -66
  1098. package/dist/lib/rules/compile.js +6 -118
  1099. package/dist/lib/rules/compose.d.ts +0 -56
  1100. package/dist/lib/rules/compose.js +2 -83
  1101. package/dist/lib/rules/rules.d.ts +0 -23
  1102. package/dist/lib/rules/rules.js +0 -35
  1103. package/dist/lib/rules/run-sync.d.ts +0 -16
  1104. package/dist/lib/rules/run-sync.js +1 -44
  1105. package/dist/lib/run-config.d.ts +0 -7
  1106. package/dist/lib/run-config.js +0 -8
  1107. package/dist/lib/run-defaults.d.ts +0 -14
  1108. package/dist/lib/run-defaults.js +0 -14
  1109. package/dist/lib/run-notify.d.ts +0 -18
  1110. package/dist/lib/run-notify.js +0 -36
  1111. package/dist/lib/run-trace-sync.d.ts +0 -21
  1112. package/dist/lib/run-trace-sync.js +2 -66
  1113. package/dist/lib/rush-session.d.ts +0 -26
  1114. package/dist/lib/rush-session.js +0 -28
  1115. package/dist/lib/sandbox.d.ts +0 -45
  1116. package/dist/lib/sandbox.js +5 -93
  1117. package/dist/lib/scheduler.d.ts +0 -28
  1118. package/dist/lib/scheduler.js +0 -45
  1119. package/dist/lib/scheduling/routines.d.ts +0 -652
  1120. package/dist/lib/scheduling/routines.js +8 -475
  1121. package/dist/lib/secrets-cli.d.ts +3 -8
  1122. package/dist/lib/secrets-cli.js +1 -19
  1123. package/dist/lib/secrets-client.d.ts +0 -117
  1124. package/dist/lib/secrets-client.js +4 -275
  1125. package/dist/lib/secrets-policy.d.ts +0 -142
  1126. package/dist/lib/secrets-policy.js +4 -237
  1127. package/dist/lib/secrets-types.d.ts +0 -87
  1128. package/dist/lib/secrets-types.js +0 -13
  1129. package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
  1130. package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
  1131. package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
  1132. package/dist/lib/self-heal/checks/install-staging.js +1 -28
  1133. package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
  1134. package/dist/lib/self-heal/checks/path.js +0 -9
  1135. package/dist/lib/self-heal/checks/resources.js +0 -5
  1136. package/dist/lib/self-heal/checks/shadowing.js +2 -16
  1137. package/dist/lib/self-heal/checks/shims.js +0 -14
  1138. package/dist/lib/self-heal/child.d.ts +12 -0
  1139. package/dist/lib/self-heal/child.js +23 -0
  1140. package/dist/lib/self-heal/registry.d.ts +0 -9
  1141. package/dist/lib/self-heal/registry.js +0 -16
  1142. package/dist/lib/self-heal/types.d.ts +0 -12
  1143. package/dist/lib/self-heal/types.js +0 -15
  1144. package/dist/lib/self-update.d.ts +0 -312
  1145. package/dist/lib/self-update.js +9 -360
  1146. package/dist/lib/service-manifest.d.ts +0 -39
  1147. package/dist/lib/service-manifest.js +0 -72
  1148. package/dist/lib/session/active.d.ts +13 -869
  1149. package/dist/lib/session/active.js +20 -976
  1150. package/dist/lib/session/actor-sidecar.d.ts +1 -32
  1151. package/dist/lib/session/actor-sidecar.js +1 -41
  1152. package/dist/lib/session/bookmarks.d.ts +0 -33
  1153. package/dist/lib/session/bookmarks.js +0 -37
  1154. package/dist/lib/session/bundle.d.ts +0 -86
  1155. package/dist/lib/session/bundle.js +0 -54
  1156. package/dist/lib/session/claude-accounts.d.ts +0 -40
  1157. package/dist/lib/session/claude-accounts.js +0 -49
  1158. package/dist/lib/session/cloud.d.ts +1 -23
  1159. package/dist/lib/session/cloud.js +0 -26
  1160. package/dist/lib/session/db.d.ts +5 -658
  1161. package/dist/lib/session/db.js +22 -1443
  1162. package/dist/lib/session/detached.d.ts +0 -21
  1163. package/dist/lib/session/detached.js +0 -29
  1164. package/dist/lib/session/discover.d.ts +3 -420
  1165. package/dist/lib/session/discover.js +30 -1123
  1166. package/dist/lib/session/fork.d.ts +1 -41
  1167. package/dist/lib/session/fork.js +0 -19
  1168. package/dist/lib/session/ghostty-tabs.d.ts +0 -24
  1169. package/dist/lib/session/ghostty-tabs.js +0 -37
  1170. package/dist/lib/session/glance-files.d.ts +19 -0
  1171. package/dist/lib/session/glance-files.js +258 -0
  1172. package/dist/lib/session/hook-sessions.d.ts +0 -33
  1173. package/dist/lib/session/hook-sessions.js +4 -99
  1174. package/dist/lib/session/host-link.d.ts +1 -94
  1175. package/dist/lib/session/host-link.js +1 -81
  1176. package/dist/lib/session/inject-target.d.ts +8 -0
  1177. package/dist/lib/session/inject-target.js +32 -0
  1178. package/dist/lib/session/inject.d.ts +0 -15
  1179. package/dist/lib/session/inject.js +0 -15
  1180. package/dist/lib/session/live-metadata.d.ts +1 -34
  1181. package/dist/lib/session/live-metadata.js +1 -73
  1182. package/dist/lib/session/local-tmux-attach.d.ts +0 -37
  1183. package/dist/lib/session/local-tmux-attach.js +1 -76
  1184. package/dist/lib/session/migrate-targets.d.ts +0 -46
  1185. package/dist/lib/session/migrate-targets.js +0 -24
  1186. package/dist/lib/session/migrations.d.ts +0 -12
  1187. package/dist/lib/session/migrations.js +1 -20
  1188. package/dist/lib/session/mirror.d.ts +0 -32
  1189. package/dist/lib/session/mirror.js +0 -77
  1190. package/dist/lib/session/origin-machine.js +0 -3
  1191. package/dist/lib/session/pid-registry.d.ts +0 -80
  1192. package/dist/lib/session/pid-registry.js +2 -81
  1193. package/dist/lib/session/presence.d.ts +0 -39
  1194. package/dist/lib/session/presence.js +2 -52
  1195. package/dist/lib/session/process-view.d.ts +0 -11
  1196. package/dist/lib/session/process-view.js +0 -25
  1197. package/dist/lib/session/projection.d.ts +0 -3
  1198. package/dist/lib/session/projection.js +0 -10
  1199. package/dist/lib/session/provenance.d.ts +1 -37
  1200. package/dist/lib/session/provenance.js +0 -69
  1201. package/dist/lib/session/recovery.d.ts +1 -40
  1202. package/dist/lib/session/recovery.js +2 -80
  1203. package/dist/lib/session/relative-time.js +0 -3
  1204. package/dist/lib/session/remote/peer-stream.d.ts +0 -42
  1205. package/dist/lib/session/remote/peer-stream.js +0 -64
  1206. package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
  1207. package/dist/lib/session/remote/remote-bundle.js +0 -21
  1208. package/dist/lib/session/remote/remote-list.d.ts +1 -110
  1209. package/dist/lib/session/remote/remote-list.js +5 -139
  1210. package/dist/lib/session/remote/remote.d.ts +0 -98
  1211. package/dist/lib/session/remote/remote.js +3 -119
  1212. package/dist/lib/session/remote/watch.d.ts +1 -34
  1213. package/dist/lib/session/remote/watch.js +12 -72
  1214. package/dist/lib/session/remote-active.d.ts +0 -35
  1215. package/dist/lib/session/remote-active.js +0 -48
  1216. package/dist/lib/session/remote-bundle.js +0 -2
  1217. package/dist/lib/session/remote-list.js +0 -2
  1218. package/dist/lib/session/remote-preview-cache.d.ts +0 -7
  1219. package/dist/lib/session/remote-preview-cache.js +1 -76
  1220. package/dist/lib/session/remote.js +0 -2
  1221. package/dist/lib/session/resume-command.d.ts +0 -6
  1222. package/dist/lib/session/resume-command.js +0 -6
  1223. package/dist/lib/session/resume-owner.d.ts +1 -52
  1224. package/dist/lib/session/resume-owner.js +0 -56
  1225. package/dist/lib/session/run-names.d.ts +0 -24
  1226. package/dist/lib/session/run-names.js +0 -26
  1227. package/dist/lib/session/session-cache.d.ts +2 -146
  1228. package/dist/lib/session/session-cache.js +26 -203
  1229. package/dist/lib/session/short-id.js +0 -3
  1230. package/dist/lib/session/sync/agents.d.ts +0 -68
  1231. package/dist/lib/session/sync/agents.js +0 -0
  1232. package/dist/lib/session/sync/backend.d.ts +0 -39
  1233. package/dist/lib/session/sync/backend.js +0 -45
  1234. package/dist/lib/session/sync/config.d.ts +0 -27
  1235. package/dist/lib/session/sync/config.js +0 -56
  1236. package/dist/lib/session/sync/managed-config.d.ts +0 -17
  1237. package/dist/lib/session/sync/managed-config.js +0 -17
  1238. package/dist/lib/session/sync/managed-key.d.ts +0 -38
  1239. package/dist/lib/session/sync/managed-key.js +1 -42
  1240. package/dist/lib/session/sync/net-client.d.ts +0 -36
  1241. package/dist/lib/session/sync/net-client.js +0 -30
  1242. package/dist/lib/session/sync/provision.d.ts +0 -2
  1243. package/dist/lib/session/sync/provision.js +0 -13
  1244. package/dist/lib/session/sync/r2.d.ts +0 -20
  1245. package/dist/lib/session/sync/r2.js +0 -20
  1246. package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
  1247. package/dist/lib/session/sync/transcript-crypto.js +5 -37
  1248. package/dist/lib/session/sync/worker-template.d.ts +0 -5
  1249. package/dist/lib/session/sync/worker-template.js +0 -40
  1250. package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
  1251. package/dist/lib/session/testdata/process-view-private.js +0 -1
  1252. package/dist/lib/session/throughput.d.ts +0 -24
  1253. package/dist/lib/session/throughput.js +1 -25
  1254. package/dist/lib/session/timeline-pass.d.ts +1 -63
  1255. package/dist/lib/session/timeline-pass.js +161 -148
  1256. package/dist/lib/session/title.d.ts +0 -182
  1257. package/dist/lib/session/title.js +0 -139
  1258. package/dist/lib/session/tool-index.d.ts +2 -21
  1259. package/dist/lib/session/tool-index.js +3 -75
  1260. package/dist/lib/session/tool-store.d.ts +2 -48
  1261. package/dist/lib/session/tool-store.js +1 -33
  1262. package/dist/lib/session/viewing-in.d.ts +0 -67
  1263. package/dist/lib/session/viewing-in.js +1 -71
  1264. package/dist/lib/session/watch.js +0 -2
  1265. package/dist/lib/session/width.js +0 -3
  1266. package/dist/lib/sessions-client.d.ts +0 -46
  1267. package/dist/lib/sessions-client.js +36 -113
  1268. package/dist/lib/settings-manifest.d.ts +1 -17
  1269. package/dist/lib/settings-manifest.js +4 -57
  1270. package/dist/lib/setup-tool-install.d.ts +0 -1
  1271. package/dist/lib/setup-tool-install.js +2 -7
  1272. package/dist/lib/setup-tool-status.d.ts +0 -3
  1273. package/dist/lib/setup-tool-status.js +4 -14
  1274. package/dist/lib/sha256-asset.d.ts +0 -20
  1275. package/dist/lib/sha256-asset.js +0 -20
  1276. package/dist/lib/share-runtime.d.ts +0 -10
  1277. package/dist/lib/share-runtime.js +1 -27
  1278. package/dist/lib/shim-heal.d.ts +0 -15
  1279. package/dist/lib/shim-heal.js +3 -29
  1280. package/dist/lib/signin-badge.d.ts +0 -72
  1281. package/dist/lib/signin-badge.js +0 -86
  1282. package/dist/lib/sink-format.d.ts +0 -32
  1283. package/dist/lib/sink-format.js +0 -14
  1284. package/dist/lib/smart-launch.d.ts +0 -75
  1285. package/dist/lib/smart-launch.js +1 -83
  1286. package/dist/lib/snapshot.d.ts +0 -46
  1287. package/dist/lib/snapshot.js +5 -31
  1288. package/dist/lib/spinner.d.ts +0 -37
  1289. package/dist/lib/spinner.js +0 -37
  1290. package/dist/lib/sqlite.d.ts +0 -13
  1291. package/dist/lib/sqlite.js +3 -71
  1292. package/dist/lib/ssh-exec.d.ts +0 -209
  1293. package/dist/lib/ssh-exec.js +11 -248
  1294. package/dist/lib/ssh-tunnel.d.ts +0 -43
  1295. package/dist/lib/ssh-tunnel.js +2 -48
  1296. package/dist/lib/staleness/checkers/commands.d.ts +0 -4
  1297. package/dist/lib/staleness/checkers/commands.js +0 -4
  1298. package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
  1299. package/dist/lib/staleness/checkers/hooks.js +0 -15
  1300. package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
  1301. package/dist/lib/staleness/checkers/mcp.js +0 -9
  1302. package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
  1303. package/dist/lib/staleness/checkers/permissions.js +0 -13
  1304. package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
  1305. package/dist/lib/staleness/checkers/plugins.js +0 -8
  1306. package/dist/lib/staleness/checkers/rules.d.ts +0 -15
  1307. package/dist/lib/staleness/checkers/rules.js +0 -26
  1308. package/dist/lib/staleness/checkers/skills.d.ts +0 -4
  1309. package/dist/lib/staleness/checkers/skills.js +0 -4
  1310. package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
  1311. package/dist/lib/staleness/checkers/subagents.js +0 -9
  1312. package/dist/lib/staleness/checkers/types.d.ts +0 -34
  1313. package/dist/lib/staleness/checkers/types.js +0 -19
  1314. package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
  1315. package/dist/lib/staleness/checkers/workflows.js +0 -7
  1316. package/dist/lib/staleness/detectors/commands.js +0 -17
  1317. package/dist/lib/staleness/detectors/hooks.js +1 -6
  1318. package/dist/lib/staleness/detectors/mcp.js +0 -4
  1319. package/dist/lib/staleness/detectors/permissions.js +10 -23
  1320. package/dist/lib/staleness/detectors/rules.js +0 -6
  1321. package/dist/lib/staleness/detectors/skills.d.ts +0 -1
  1322. package/dist/lib/staleness/detectors/skills.js +1 -12
  1323. package/dist/lib/staleness/detectors/types.d.ts +0 -10
  1324. package/dist/lib/staleness/fingerprint.d.ts +0 -19
  1325. package/dist/lib/staleness/fingerprint.js +0 -35
  1326. package/dist/lib/staleness/index.d.ts +0 -28
  1327. package/dist/lib/staleness/index.js +1 -45
  1328. package/dist/lib/staleness/layers.d.ts +0 -23
  1329. package/dist/lib/staleness/layers.js +0 -34
  1330. package/dist/lib/staleness/prune.d.ts +0 -71
  1331. package/dist/lib/staleness/prune.js +2 -27
  1332. package/dist/lib/staleness/registry.d.ts +0 -10
  1333. package/dist/lib/staleness/registry.js +3 -33
  1334. package/dist/lib/staleness/types.d.ts +0 -36
  1335. package/dist/lib/staleness/types.js +0 -5
  1336. package/dist/lib/staleness/writers/commands.js +1 -48
  1337. package/dist/lib/staleness/writers/hooks.js +1 -18
  1338. package/dist/lib/staleness/writers/kinds.d.ts +0 -12
  1339. package/dist/lib/staleness/writers/kinds.js +0 -1
  1340. package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
  1341. package/dist/lib/staleness/writers/mcp.js +0 -13
  1342. package/dist/lib/staleness/writers/plugins.js +0 -4
  1343. package/dist/lib/staleness/writers/rules.d.ts +0 -1
  1344. package/dist/lib/staleness/writers/rules.js +1 -19
  1345. package/dist/lib/staleness/writers/skills.js +3 -14
  1346. package/dist/lib/staleness/writers/sources.d.ts +0 -11
  1347. package/dist/lib/staleness/writers/sources.js +0 -32
  1348. package/dist/lib/staleness/writers/subagents.js +0 -16
  1349. package/dist/lib/staleness/writers/types.d.ts +0 -58
  1350. package/dist/lib/staleness/writers/workflows.js +1 -1
  1351. package/dist/lib/standalone-tools.d.ts +24 -0
  1352. package/dist/lib/standalone-tools.js +58 -0
  1353. package/dist/lib/star-nudge.d.ts +0 -32
  1354. package/dist/lib/star-nudge.js +2 -36
  1355. package/dist/lib/startup/command-registry.d.ts +0 -45
  1356. package/dist/lib/startup/command-registry.js +1 -46
  1357. package/dist/lib/startup/dev-build.d.ts +0 -9
  1358. package/dist/lib/startup/dev-build.js +1 -42
  1359. package/dist/lib/startup/root-command.d.ts +0 -19
  1360. package/dist/lib/startup/root-command.js +0 -19
  1361. package/dist/lib/startup/spellcheck.d.ts +0 -13
  1362. package/dist/lib/startup/spellcheck.js +0 -13
  1363. package/dist/lib/state.d.ts +0 -376
  1364. package/dist/lib/state.js +19 -737
  1365. package/dist/lib/storage/selection.d.ts +0 -40
  1366. package/dist/lib/storage/selection.js +0 -29
  1367. package/dist/lib/subagents-registry.d.ts +0 -56
  1368. package/dist/lib/subagents-registry.js +0 -99
  1369. package/dist/lib/subagents.d.ts +0 -128
  1370. package/dist/lib/subagents.js +1 -158
  1371. package/dist/lib/summarizer/config.d.ts +0 -37
  1372. package/dist/lib/summarizer/config.js +0 -37
  1373. package/dist/lib/summarizer/pass.d.ts +0 -20
  1374. package/dist/lib/summarizer/pass.js +1 -34
  1375. package/dist/lib/summarizer/summarize.d.ts +1 -49
  1376. package/dist/lib/summarizer/summarize.js +0 -35
  1377. package/dist/lib/sync-passphrase.d.ts +0 -16
  1378. package/dist/lib/sync-passphrase.js +1 -18
  1379. package/dist/lib/sync-status.d.ts +0 -72
  1380. package/dist/lib/sync-status.js +0 -55
  1381. package/dist/lib/sync-umbrella.d.ts +0 -54
  1382. package/dist/lib/sync-umbrella.js +0 -48
  1383. package/dist/lib/system-run-sync.d.ts +0 -5
  1384. package/dist/lib/system-run-sync.js +1 -31
  1385. package/dist/lib/teams/agents.d.ts +1 -444
  1386. package/dist/lib/teams/agents.js +11 -871
  1387. package/dist/lib/teams/api.d.ts +2 -52
  1388. package/dist/lib/teams/api.js +4 -63
  1389. package/dist/lib/teams/debug.d.ts +0 -6
  1390. package/dist/lib/teams/debug.js +0 -6
  1391. package/dist/lib/teams/delivery.d.ts +0 -41
  1392. package/dist/lib/teams/delivery.js +0 -32
  1393. package/dist/lib/teams/file_ops.d.ts +0 -11
  1394. package/dist/lib/teams/file_ops.js +0 -11
  1395. package/dist/lib/teams/forEach.d.ts +0 -76
  1396. package/dist/lib/teams/forEach.js +1 -77
  1397. package/dist/lib/teams/index.d.ts +1 -7
  1398. package/dist/lib/teams/index.js +1 -7
  1399. package/dist/lib/teams/parsers.d.ts +0 -4
  1400. package/dist/lib/teams/parsers.js +0 -81
  1401. package/dist/lib/teams/persistence.d.ts +0 -2
  1402. package/dist/lib/teams/persistence.js +0 -12
  1403. package/dist/lib/teams/placement-probe.d.ts +0 -12
  1404. package/dist/lib/teams/placement-probe.js +1 -51
  1405. package/dist/lib/teams/pr-watch.d.ts +0 -107
  1406. package/dist/lib/teams/pr-watch.js +1 -107
  1407. package/dist/lib/teams/registry.d.ts +0 -36
  1408. package/dist/lib/teams/registry.js +0 -47
  1409. package/dist/lib/teams/remoteWorktree.d.ts +0 -50
  1410. package/dist/lib/teams/remoteWorktree.js +1 -96
  1411. package/dist/lib/teams/scheduler.d.ts +0 -111
  1412. package/dist/lib/teams/scheduler.js +2 -125
  1413. package/dist/lib/teams/summarizer.d.ts +0 -22
  1414. package/dist/lib/teams/summarizer.js +6 -50
  1415. package/dist/lib/teams/supervisor.d.ts +0 -38
  1416. package/dist/lib/teams/supervisor.js +0 -21
  1417. package/dist/lib/teams/worktree.d.ts +0 -95
  1418. package/dist/lib/teams/worktree.js +3 -110
  1419. package/dist/lib/template.d.ts +0 -21
  1420. package/dist/lib/template.js +0 -23
  1421. package/dist/lib/term-client.d.ts +0 -26
  1422. package/dist/lib/term-client.js +0 -48
  1423. package/dist/lib/term-driver.d.ts +0 -5
  1424. package/dist/lib/term-driver.js +0 -8
  1425. package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
  1426. package/dist/lib/terminal/backends/ghostty.js +0 -12
  1427. package/dist/lib/terminal/backends/index.d.ts +0 -17
  1428. package/dist/lib/terminal/backends/index.js +0 -15
  1429. package/dist/lib/terminal/backends/iterm.d.ts +0 -2
  1430. package/dist/lib/terminal/backends/iterm.js +0 -10
  1431. package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
  1432. package/dist/lib/terminal/backends/terminal-app.js +0 -30
  1433. package/dist/lib/terminal/backends/tmux.d.ts +0 -10
  1434. package/dist/lib/terminal/backends/tmux.js +0 -2
  1435. package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
  1436. package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
  1437. package/dist/lib/terminal/engine.d.ts +0 -17
  1438. package/dist/lib/terminal/engine.js +0 -10
  1439. package/dist/lib/terminal/index.d.ts +0 -8
  1440. package/dist/lib/terminal/inject.d.ts +1 -173
  1441. package/dist/lib/terminal/inject.js +0 -146
  1442. package/dist/lib/terminal/policy.d.ts +0 -8
  1443. package/dist/lib/terminal/policy.js +0 -1
  1444. package/dist/lib/terminal/preferred.d.ts +0 -66
  1445. package/dist/lib/terminal/preferred.js +0 -30
  1446. package/dist/lib/terminal/quote.d.ts +0 -8
  1447. package/dist/lib/terminal/quote.js +0 -8
  1448. package/dist/lib/terminal/resolve.d.ts +0 -46
  1449. package/dist/lib/terminal/resolve.js +0 -30
  1450. package/dist/lib/terminal/run-surface.d.ts +0 -56
  1451. package/dist/lib/terminal/run-surface.js +0 -46
  1452. package/dist/lib/terminal/shell.d.ts +0 -3
  1453. package/dist/lib/terminal/shell.js +0 -13
  1454. package/dist/lib/terminal/transport.d.ts +0 -14
  1455. package/dist/lib/terminal/transport.js +1 -30
  1456. package/dist/lib/terminal/types.d.ts +0 -40
  1457. package/dist/lib/terminal/types.js +0 -10
  1458. package/dist/lib/text/relative-time.d.ts +0 -36
  1459. package/dist/lib/text/relative-time.js +0 -43
  1460. package/dist/lib/text/short-id.d.ts +0 -16
  1461. package/dist/lib/text/short-id.js +0 -16
  1462. package/dist/lib/text/width.d.ts +0 -24
  1463. package/dist/lib/text/width.js +10 -52
  1464. package/dist/lib/tmux/binary.d.ts +0 -36
  1465. package/dist/lib/tmux/binary.js +0 -28
  1466. package/dist/lib/tmux/index.d.ts +0 -5
  1467. package/dist/lib/tmux/index.js +0 -5
  1468. package/dist/lib/tmux/orphan-reap.d.ts +0 -253
  1469. package/dist/lib/tmux/orphan-reap.js +3 -299
  1470. package/dist/lib/tmux/paths.d.ts +0 -14
  1471. package/dist/lib/tmux/paths.js +0 -14
  1472. package/dist/lib/tmux/session.d.ts +0 -263
  1473. package/dist/lib/tmux/session.js +6 -344
  1474. package/dist/lib/traces/backend.d.ts +0 -20
  1475. package/dist/lib/traces/backend.js +0 -23
  1476. package/dist/lib/traces/classify.d.ts +0 -20
  1477. package/dist/lib/traces/classify.js +0 -7
  1478. package/dist/lib/traces/insights.d.ts +1 -84
  1479. package/dist/lib/traces/insights.js +0 -126
  1480. package/dist/lib/traces/phenotype.d.ts +0 -69
  1481. package/dist/lib/traces/phenotype.js +0 -150
  1482. package/dist/lib/traces/provision.d.ts +0 -1
  1483. package/dist/lib/traces/provision.js +0 -5
  1484. package/dist/lib/traces/schema2-build.d.ts +3 -60
  1485. package/dist/lib/traces/schema2-build.js +8 -149
  1486. package/dist/lib/traces/schema2-danger.d.ts +0 -30
  1487. package/dist/lib/traces/schema2-danger.js +1 -63
  1488. package/dist/lib/traces/schema2.d.ts +0 -11
  1489. package/dist/lib/traces/segments.d.ts +0 -44
  1490. package/dist/lib/traces/segments.js +0 -65
  1491. package/dist/lib/traces/sync.d.ts +2 -239
  1492. package/dist/lib/traces/sync.js +15 -237
  1493. package/dist/lib/traces/worker-template.d.ts +0 -3
  1494. package/dist/lib/traces/worker-template.js +0 -29
  1495. package/dist/lib/triggers/handlers.d.ts +0 -82
  1496. package/dist/lib/triggers/handlers.js +0 -75
  1497. package/dist/lib/triggers/webhook.d.ts +0 -158
  1498. package/dist/lib/triggers/webhook.js +0 -143
  1499. package/dist/lib/types.d.ts +0 -736
  1500. package/dist/lib/types.js +0 -50
  1501. package/dist/lib/uninstall.d.ts +0 -17
  1502. package/dist/lib/uninstall.js +0 -75
  1503. package/dist/lib/usage-backoff.d.ts +0 -20
  1504. package/dist/lib/usage-backoff.js +3 -60
  1505. package/dist/lib/usage-refresh.d.ts +0 -154
  1506. package/dist/lib/usage-refresh.js +8 -212
  1507. package/dist/lib/verbs.d.ts +0 -12
  1508. package/dist/lib/verbs.js +0 -12
  1509. package/dist/lib/version-duplicates.d.ts +0 -6
  1510. package/dist/lib/version-duplicates.js +0 -6
  1511. package/dist/lib/version.d.ts +0 -55
  1512. package/dist/lib/version.js +1 -58
  1513. package/dist/lib/view-types.d.ts +0 -48
  1514. package/dist/lib/warn-unpushed.d.ts +0 -27
  1515. package/dist/lib/warn-unpushed.js +1 -45
  1516. package/dist/lib/watchdog/history.d.ts +0 -1
  1517. package/dist/lib/watchdog/history.js +0 -3
  1518. package/dist/lib/watchdog/index.js +0 -2
  1519. package/dist/lib/watchdog/log.d.ts +0 -19
  1520. package/dist/lib/watchdog/log.js +0 -34
  1521. package/dist/lib/watchdog/read.d.ts +0 -27
  1522. package/dist/lib/watchdog/read.js +3 -58
  1523. package/dist/lib/watchdog/rotate.d.ts +0 -139
  1524. package/dist/lib/watchdog/rotate.js +2 -151
  1525. package/dist/lib/watchdog/runner.d.ts +0 -125
  1526. package/dist/lib/watchdog/runner.js +3 -223
  1527. package/dist/lib/watchdog/service.d.ts +0 -1
  1528. package/dist/lib/watchdog/service.js +0 -2
  1529. package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
  1530. package/dist/lib/watchdog/watchdog-agent.js +0 -27
  1531. package/dist/lib/watchdog/watchdog.d.ts +0 -7
  1532. package/dist/lib/watchdog/watchdog.js +0 -10
  1533. package/dist/lib/watchdog/watchdogTail.js +0 -7
  1534. package/dist/lib/whats-new.d.ts +0 -10
  1535. package/dist/lib/whats-new.js +0 -21
  1536. package/dist/lib/workflows-registry.d.ts +0 -45
  1537. package/dist/lib/workflows-registry.js +0 -60
  1538. package/dist/lib/workflows.d.ts +0 -282
  1539. package/dist/lib/workflows.js +3 -213
  1540. package/dist/lib/worktree/held.d.ts +0 -89
  1541. package/dist/lib/worktree/held.js +1 -103
  1542. package/dist/lib/wrap.d.ts +0 -32
  1543. package/dist/lib/wrap.js +0 -32
  1544. package/dist/lib/yaml-io.d.ts +0 -45
  1545. package/dist/lib/yaml-io.js +0 -47
  1546. package/dist/session-tracker/dist/adapters/claude.js +0 -2
  1547. package/dist/session-tracker/dist/hook.sh +4 -37
  1548. package/dist/session-tracker/dist/index.d.ts +0 -7
  1549. package/dist/session-tracker/dist/index.js +0 -5
  1550. package/dist/session-tracker/dist/install-hook.d.ts +0 -5
  1551. package/dist/session-tracker/dist/install-hook.js +1 -15
  1552. package/dist/session-tracker/dist/prune-state.js +0 -4
  1553. package/dist/session-tracker/dist/reader.js +0 -4
  1554. package/dist/session-tracker/dist/state-file.d.ts +0 -3
  1555. package/dist/session-tracker/dist/state-file.js +3 -8
  1556. package/package.json +3 -4
  1557. package/scripts/postinstall.js +8 -116
  1558. package/dist/lib/session/artifacts.d.ts +0 -14
  1559. package/dist/lib/session/artifacts.js +0 -101
  1560. package/dist/lib/session/bash-command.d.ts +0 -63
  1561. package/dist/lib/session/bash-command.js +0 -490
  1562. package/dist/lib/session/digest.d.ts +0 -66
  1563. package/dist/lib/session/digest.js +0 -328
  1564. package/dist/lib/session/highlights.d.ts +0 -151
  1565. package/dist/lib/session/highlights.js +0 -391
  1566. package/dist/lib/session/insights.d.ts +0 -165
  1567. package/dist/lib/session/insights.js +0 -563
  1568. package/dist/lib/session/linear.d.ts +0 -19
  1569. package/dist/lib/session/linear.js +0 -99
  1570. package/dist/lib/session/parse.d.ts +0 -224
  1571. package/dist/lib/session/parse.js +0 -2408
  1572. package/dist/lib/session/prompt.d.ts +0 -213
  1573. package/dist/lib/session/prompt.js +0 -601
  1574. package/dist/lib/session/render.d.ts +0 -133
  1575. package/dist/lib/session/render.js +0 -1047
  1576. package/dist/lib/session/share-html.d.ts +0 -35
  1577. package/dist/lib/session/share-html.js +0 -319
  1578. package/dist/lib/session/shell-programs.d.ts +0 -33
  1579. package/dist/lib/session/shell-programs.js +0 -380
  1580. package/dist/lib/session/state.d.ts +0 -269
  1581. package/dist/lib/session/state.js +0 -777
  1582. package/dist/lib/session/stream-render.d.ts +0 -4
  1583. package/dist/lib/session/stream-render.js +0 -131
  1584. package/dist/lib/session/tail.d.ts +0 -88
  1585. package/dist/lib/session/tail.js +0 -294
  1586. package/dist/lib/session/team-filter.d.ts +0 -129
  1587. package/dist/lib/session/team-filter.js +0 -269
  1588. package/dist/lib/session/timeline.d.ts +0 -172
  1589. package/dist/lib/session/timeline.js +0 -636
  1590. package/dist/lib/session/tool-calls.d.ts +0 -132
  1591. package/dist/lib/session/tool-calls.js +0 -674
  1592. package/dist/lib/session/trajectory-compare.d.ts +0 -48
  1593. package/dist/lib/session/trajectory-compare.js +0 -116
  1594. package/dist/lib/session/trajectory-html.d.ts +0 -19
  1595. package/dist/lib/session/trajectory-html.js +0 -771
  1596. package/dist/lib/session/trajectory-lineage.d.ts +0 -93
  1597. package/dist/lib/session/trajectory-lineage.js +0 -195
  1598. package/dist/lib/session/trajectory-text.d.ts +0 -38
  1599. package/dist/lib/session/trajectory-text.js +0 -284
  1600. package/dist/lib/session/trajectory.d.ts +0 -145
  1601. package/dist/lib/session/trajectory.js +0 -394
  1602. package/dist/lib/session/types.d.ts +0 -627
  1603. package/dist/lib/session/types.js +0 -43
@@ -1,11 +1,3 @@
1
- /**
2
- * Scheduled job (routine) configuration and run history management.
3
- *
4
- * Routines are YAML files in ~/.agents/routines/ that define recurring or
5
- * one-shot agent tasks. This module handles CRUD operations on job configs,
6
- * run metadata persistence, prompt variable expansion, and one-shot "at" time
7
- * scheduling.
8
- */
9
1
  import * as fs from 'fs';
10
2
  import * as path from 'path';
11
3
  import * as yaml from 'yaml';
@@ -82,7 +74,7 @@ export function buildRoutineListJson() {
82
74
  try {
83
75
  monitorRunningJobs();
84
76
  }
85
- catch { /* best-effort orphan reap */ }
77
+ catch { }
86
78
  const jobs = listJobsForDisplay(process.cwd());
87
79
  if (jobs.length === 0)
88
80
  return [];
@@ -95,7 +87,6 @@ export function buildRoutineListJson() {
95
87
  overdueSet.add(job.name);
96
88
  }
97
89
  catch {
98
- // Best-effort indicator; never block the list on detection errors.
99
90
  }
100
91
  const now = new Date();
101
92
  const knownProjectNames = new Set(listProjectDefs().map((project) => project.name));
@@ -142,29 +133,11 @@ export function buildRoutineListJson() {
142
133
  scheduler.stopAll();
143
134
  }
144
135
  }
145
- /**
146
- * The per-routine rows behind `agents routines status --json`. Distinct from
147
- * {@link buildRoutineListJson}: this is the scheduler-truth surface the daemon
148
- * owns — per routine it names the single owner device, the last fire's outcome
149
- * and error, and any in-flight spawn — the fields an operator (or the menu bar /
150
- * ext) needs to answer "did this routine fire, and is one running right now?"
151
- * that the definition-shaped `list --json` does not carry (PHNX-3215).
152
- *
153
- * `monitorRunningJobs()` runs first to reap runs whose process has exited, then
154
- * `inFlight` is gated on {@link isRunGenuinelyInFlight} — NOT on `status ===
155
- * 'running'` alone, because a provisional pre-spawn claim is `running` with a
156
- * null pid that the reaper does not touch (RUSH-2640).
157
- *
158
- * The routine set is the schedulable one ({@link listJobs}, the same
159
- * `getDaemonStatus`/`routines status` counts), not the display set
160
- * {@link buildRoutineListJson} uses — a scheduler-status surface names what the
161
- * daemon can actually fire, not discoverable-but-unmaterialised project routines.
162
- */
163
136
  export function buildRoutineStatusRows() {
164
137
  try {
165
138
  monitorRunningJobs();
166
139
  }
167
- catch { /* best-effort orphan reap */ }
140
+ catch { }
168
141
  const jobs = listJobs();
169
142
  if (jobs.length === 0)
170
143
  return [];
@@ -177,7 +150,6 @@ export function buildRoutineStatusRows() {
177
150
  overdueSet.add(job.name);
178
151
  }
179
152
  catch {
180
- // Best-effort indicator; never block status on detection errors.
181
153
  }
182
154
  const now = new Date();
183
155
  return jobs.map((job) => {
@@ -212,14 +184,12 @@ export function buildRoutineStatusRows() {
212
184
  }
213
185
  }
214
186
  export const HOST_STRATEGIES = ['local', 'host', 'fleet', 'cloud'];
215
- /** Canonical set of accepted GitHub trigger events — single source for validation. */
216
187
  export const GITHUB_TRIGGER_EVENTS = [
217
188
  'pull_request',
218
189
  'push',
219
190
  'issue_comment',
220
191
  'workflow_run',
221
192
  ];
222
- /** Canonical set of accepted Linear trigger events — single source for validation. */
223
193
  const LINEAR_TRIGGER_EVENTS = [
224
194
  'Issue',
225
195
  'IssueLabel',
@@ -227,11 +197,6 @@ const LINEAR_TRIGGER_EVENTS = [
227
197
  'Project',
228
198
  'Cycle',
229
199
  ];
230
- /**
231
- * Map a user-facing `--on` alias to a canonical GitHub trigger event.
232
- * Accepts the canonical names plus friendly shortcuts (e.g. `pr`, `pr_opened`
233
- * → `pull_request`, `comment` → `issue_comment`). Returns null when unknown.
234
- */
235
200
  export function normalizeTriggerEvent(input) {
236
201
  const key = input.trim().toLowerCase();
237
202
  const aliases = {
@@ -247,30 +212,12 @@ export function normalizeTriggerEvent(input) {
247
212
  };
248
213
  return aliases[key] ?? null;
249
214
  }
250
- /**
251
- * Canonical form of a routine's `projects` field: drop non-string and empty
252
- * entries and deduplicate while preserving first-seen order. This is the single
253
- * source of truth for project-name normalization, applied at the schema
254
- * boundary (`writeJob` before persistence) and at grouping (`computeProjectGroupKind`)
255
- * so a hand-authored YAML with duplicates (`projects: [myapp, myapp]`) is
256
- * treated identically to the canonical single-entry form everywhere.
257
- *
258
- * Returns `undefined` when nothing survives, so callers can omit the field.
259
- */
260
215
  export function normalizeProjects(projects) {
261
216
  if (!Array.isArray(projects) || projects.length === 0)
262
217
  return undefined;
263
218
  const out = [...new Set(projects.filter((p) => typeof p === 'string' && p !== ''))];
264
219
  return out.length === 0 ? undefined : out;
265
220
  }
266
- /**
267
- * Classify a routine's `projects` field into a discriminated {@link ProjectGroup}.
268
- * Duplicates are collapsed first ({@link normalizeProjects}), so `[myapp, myapp]`
269
- * is a single named project, not a "Cross-project" span.
270
- *
271
- * @param projects - The routine's projects array (may be undefined).
272
- * @param knownProjectNames - The set of currently defined project names (from `listProjectDefs`).
273
- */
274
221
  export function computeProjectGroupKind(projects, knownProjectNames) {
275
222
  const norm = normalizeProjects(projects);
276
223
  if (!norm)
@@ -284,7 +231,6 @@ export function computeProjectGroupKind(projects, knownProjectNames) {
284
231
  return { kind: 'named', name: norm[0] };
285
232
  return { kind: 'cross' };
286
233
  }
287
- /** Human display title for a {@link ProjectGroup}. */
288
234
  export function projectGroupTitle(group) {
289
235
  switch (group.kind) {
290
236
  case 'named': return group.name;
@@ -294,16 +240,9 @@ export function projectGroupTitle(group) {
294
240
  case 'unknown': return 'Unknown projects';
295
241
  }
296
242
  }
297
- /**
298
- * Stable bucket key for a {@link ProjectGroup}. Named projects key on their name
299
- * under a `named:` prefix; specials key on their `kind` under a `special:` prefix.
300
- * The two namespaces can never collide, so a project named "Operations" gets its
301
- * own bucket separate from the no-project "Operations" special.
302
- */
303
243
  export function projectGroupKey(group) {
304
244
  return group.kind === 'named' ? `named:${group.name}` : `special:${group.kind}`;
305
245
  }
306
- /** Sort rank for a {@link ProjectGroup}: named projects first, then specials in a fixed order. */
307
246
  export function projectGroupOrder(group) {
308
247
  switch (group.kind) {
309
248
  case 'named': return 0;
@@ -313,28 +252,9 @@ export function projectGroupOrder(group) {
313
252
  case 'unknown': return 4;
314
253
  }
315
254
  }
316
- /**
317
- * Compute the display group label for a routine's `projects` field.
318
- *
319
- * Kept as the label-returning form for the JSON `projectGroup` field and any
320
- * text consumer; grouping and ordering use the discriminated
321
- * {@link computeProjectGroupKind}/{@link projectGroupKey} instead so buckets are
322
- * never keyed on the label.
323
- *
324
- * @param projects - The routine's projects array (may be undefined).
325
- * @param knownProjectNames - The set of currently defined project names (from `listProjectDefs`).
326
- *
327
- * Returns one of:
328
- * - A specific project name — when `projects` has exactly one known name.
329
- * - `"All projects"` — when `projects` is `["*"]`.
330
- * - `"Cross-project"` — when `projects` has multiple distinct known entries.
331
- * - `"Operations"` — when `projects` is absent or empty.
332
- * - `"Unknown projects"` — when any entry is no longer a defined project (stale).
333
- */
334
255
  export function computeProjectGroup(projects, knownProjectNames) {
335
256
  return projectGroupTitle(computeProjectGroupKind(projects, knownProjectNames));
336
257
  }
337
- /** A real-filesystem {@link ContextFsProbe} for readiness checks on this machine. */
338
258
  function realFsProbe() {
339
259
  return {
340
260
  exists: (p) => fs.existsSync(p),
@@ -353,7 +273,6 @@ function realFsProbe() {
353
273
  } },
354
274
  };
355
275
  }
356
- /** Classify a routine by its body kind — governs the execution-context fallback rules. */
357
276
  function jobRoutineKind(config) {
358
277
  if (config.command)
359
278
  return 'command';
@@ -361,14 +280,6 @@ function jobRoutineKind(config) {
361
280
  return 'workflow';
362
281
  return 'agent';
363
282
  }
364
- /**
365
- * Resolve a routine's execution context (working directory + structural/fs
366
- * readiness) by bridging its `project`/`cwd` fields into the pure
367
- * {@link resolveRoutineExecutionContext} resolver. Local placement resolves
368
- * against this machine's `$HOME` with a real filesystem probe; a caller may
369
- * inject a different target home / probe (e.g. `null` to defer existence for a
370
- * remote target).
371
- */
372
283
  export function resolveJobExecutionContext(config, opts = {}) {
373
284
  const targetHome = opts.targetHome ?? os.homedir();
374
285
  const mode = opts.mode ?? 'local';
@@ -379,7 +290,7 @@ export function resolveJobExecutionContext(config, opts = {}) {
379
290
  if (config.project !== undefined && projectResolution === undefined) {
380
291
  const def = loadProjectDef(config.project);
381
292
  projectResolution = def
382
- ? { defined: true, base: projectBasePath(def, true) } // portable (~/) base form
293
+ ? { defined: true, base: projectBasePath(def, true) }
383
294
  : { defined: false };
384
295
  }
385
296
  return resolveRoutineExecutionContext({
@@ -393,11 +304,6 @@ export function resolveJobExecutionContext(config, opts = {}) {
393
304
  probe,
394
305
  });
395
306
  }
396
- /**
397
- * Finalize a run record with a terminal status, computing `duration` from
398
- * `startedAt` and the completion timestamp. Keeps failure-reason population
399
- * centralized so every completion path writes the same machine-readable fields.
400
- */
401
307
  export function finalizeRunMeta(meta, status, exitCode, opts) {
402
308
  meta.status = status;
403
309
  meta.exitCode = exitCode;
@@ -414,21 +320,6 @@ export function finalizeRunMeta(meta, status, exitCode, opts) {
414
320
  delete meta.errorMessage;
415
321
  }
416
322
  }
417
- /**
418
- * True when the job may execute on this machine: no `devices` allowlist (or
419
- * empty), or the allowlist includes this device. Both sides go through
420
- * `normalizeHost` so `Yosemite-S0`, `yosemite-s0.tailnet.ts.net`, and
421
- * `yosemite-s0` all agree. Every fire path (cron scheduler, webhook,
422
- * catchup/overdue, manual run) gates on this.
423
- *
424
- * A monitor- or webhook-dispatched job ({@link JobConfig.dispatchedBy} set) skips
425
- * the routine activation manifest: it is not a routine, so its name can never be
426
- * a member and the lookup could only ever answer "not activated here"
427
- * (RUSH-2681 for monitors; the same hole broke every `run.agent`/`run.workflow`
428
- * webhook handler, which the receiver logged as `fired` while the run record read
429
- * `skipped` with an empty allowlist). Ownership was already decided upstream — by
430
- * the monitor's `device:` pin, or by the one box the webhook was delivered to.
431
- */
432
323
  export function jobRunsOnThisDevice(config) {
433
324
  if (config.dispatchedBy === undefined) {
434
325
  const activated = routineEnabledOnThisDevice(config.name);
@@ -436,33 +327,11 @@ export function jobRunsOnThisDevice(config) {
436
327
  return activated;
437
328
  }
438
329
  const owner = routineOwnerDevice(config);
439
- // Unrestricted: no pin means fleet-wide by design (`watchdog`, `check-updates`).
440
330
  if (owner === null)
441
331
  return true;
442
332
  return owner === machineId();
443
333
  }
444
- /**
445
- * The ONE device that owns a routine — the single daemon allowed to fire it.
446
- *
447
- * `devices` is an allowlist, and every listed device used to fire
448
- * independently, so a routine pinned to two boxes ran **twice** per schedule:
449
- * two full agent sessions doing identical work, burning double the quota. On
450
- * this fleet seven routines were in that state, e.g. `security-sweep` running
451
- * at 15:30:02 on one box and 15:30:03 on the other, both completing.
452
- *
453
- * Ownership is a pure function of the config — the first entry in normalized
454
- * sort order — so every daemon independently reaches the same answer with no
455
- * lease, no cross-device coordination, and no split brain when the fleet
456
- * partitions. A multi-entry pin is a misconfiguration
457
- * ({@link hasAmbiguousDevicePin}); this keeps such a routine running exactly
458
- * once instead of silently dropping it, while `validateJob` refuses to create
459
- * a new one and `agents doctor` surfaces the existing ones.
460
- *
461
- * Returns null when the routine is unrestricted (empty or omitted `devices`).
462
- */
463
334
  export function routineOwnerDevice(config) {
464
- // A non-array `devices` is a separate validation error; don't throw here and
465
- // don't double-report it.
466
335
  if (!Array.isArray(config.devices))
467
336
  return null;
468
337
  const devices = config.devices.map((d) => normalizeHost(String(d))).filter(Boolean);
@@ -470,24 +339,12 @@ export function routineOwnerDevice(config) {
470
339
  return null;
471
340
  return [...devices].sort()[0];
472
341
  }
473
- /**
474
- * Does this routine name more than one distinct device? Such a pin used to mean
475
- * "fire on each of them"; it now means "fire only on the first", which is
476
- * almost certainly not what the author intended either way — so it is reported
477
- * as a misconfiguration rather than silently reinterpreted.
478
- */
479
342
  export function hasAmbiguousDevicePin(config) {
480
343
  if (!Array.isArray(config.devices))
481
344
  return false;
482
345
  const devices = new Set(config.devices.map((d) => normalizeHost(String(d))).filter(Boolean));
483
346
  return devices.size > 1;
484
347
  }
485
- /**
486
- * Every routine carrying a multi-device pin. Surfaced by `agents doctor` and
487
- * `agents routines list` so an existing misconfiguration is visible rather than
488
- * silently reinterpreted: before ownership became singular each of these fired
489
- * once per listed device, doubling the work and the agent spend.
490
- */
491
348
  export function findAmbiguousDevicePins(cwd) {
492
349
  return listJobs(cwd)
493
350
  .filter((job) => job.enabled && hasAmbiguousDevicePin(job))
@@ -497,11 +354,6 @@ export function findAmbiguousDevicePins(cwd) {
497
354
  owner: routineOwnerDevice(job) ?? '',
498
355
  }));
499
356
  }
500
- /**
501
- * Resolve the effective host strategy for a job.
502
- * Bare `host:` without an explicit strategy implies `host` (back-compat with
503
- * pre-hostStrategy YAML). Otherwise default to `local`.
504
- */
505
357
  export function resolveHostStrategy(config) {
506
358
  if (config.hostStrategy)
507
359
  return config.hostStrategy;
@@ -509,10 +361,6 @@ export function resolveHostStrategy(config) {
509
361
  return 'host';
510
362
  return 'local';
511
363
  }
512
- /**
513
- * Parse a CLI `--placement` value into a HostStrategy, or null when empty.
514
- * Throws a human-readable Error for unknown values.
515
- */
516
364
  export function parseHostStrategy(raw) {
517
365
  if (raw === undefined || raw === null || raw === '')
518
366
  return null;
@@ -521,35 +369,19 @@ export function parseHostStrategy(raw) {
521
369
  return v;
522
370
  throw new Error(`Invalid placement '${raw}'. Use one of: ${HOST_STRATEGIES.join(', ')}`);
523
371
  }
524
- /**
525
- * Strategies that dispatch the job body off the firing machine. Without a
526
- * `devices` pin every daemon in the fleet would fire and each would dispatch
527
- * once — N× duplicate runs. Callers pin to this machine when the user did not
528
- * set an explicit allowlist.
529
- */
530
372
  export function placementRequiresFiringPin(strategy) {
531
373
  return strategy === 'host' || strategy === 'fleet' || strategy === 'cloud';
532
374
  }
533
- /**
534
- * Return null when the job may run here; otherwise return a structured,
535
- * human-friendly eligibility failure. Centralizes the message/suggestion
536
- * construction so manual run, executeJob, and executeJobDetached stay in
537
- * sync. Scheduler/webhook/overdue paths continue to use jobRunsOnThisDevice.
538
- */
539
375
  export function checkJobDeviceEligibility(config) {
540
376
  if (jobRunsOnThisDevice(config))
541
377
  return null;
542
378
  const allowed = (config.devices ?? []).map((d) => normalizeHost(d));
543
379
  const allowedLabel = allowed.join(', ');
544
- // The owner is the lowest normalized name, not the first entry as written —
545
- // suggesting allowed[0] on an unsorted list points at a device that will
546
- // refuse the run for exactly the same reason.
547
380
  const firstHost = routineOwnerDevice(config) ?? allowed[0] ?? 'HOST';
548
381
  const message = `Job '${config.name}' can only run on: ${allowedLabel}`;
549
382
  const suggestion = `agents routines run ${config.name} --device ${firstHost}`;
550
383
  return { message, suggestion, allowedLabel, firstHost };
551
384
  }
552
- /** Default values applied to every job config when fields are omitted. */
553
385
  const JOB_DEFAULTS = {
554
386
  mode: 'auto',
555
387
  effort: 'auto',
@@ -570,18 +402,6 @@ function overlayUserRoutineDevices(job, userJob) {
570
402
  }
571
403
  return merged;
572
404
  }
573
- /**
574
- * List all job configs, scanning project > user > system routine dirs.
575
- * Higher layers shadow lower ones of the same name (first-seen wins): a project
576
- * routine shadows a user routine, and a user routine shadows a system routine
577
- * (`~/.agents/.system/routines/`, shipped via gh:phnx-labs/.agents-system).
578
- * When a same-name project routine wins for inspection, the user-layer
579
- * `devices` allowlist is overlaid only if the project routine does not declare
580
- * its own allowlist, so CWD project discovery cannot hide an operational fleet
581
- * pin or erase a project-authored one.
582
- * Project discovery is opt-in via `cwd`; the daemon (which calls `listJobs()`
583
- * with no argument) sees user + system routines.
584
- */
585
405
  export function listJobs(cwd) {
586
406
  ensureAgentsDir();
587
407
  const seen = new Set();
@@ -614,14 +434,6 @@ export function listJobs(cwd) {
614
434
  }
615
435
  return jobs.map(applyDeviceActivation);
616
436
  }
617
- /**
618
- * Read a single job config by name, checking project > user > system.
619
- * Same-name project routines keep the user-layer `devices` allowlist only when
620
- * the project routine does not declare its own allowlist, for the same reason
621
- * as listJobs().
622
- * Project discovery is opt-in via `cwd`; daemon callers pass no argument and
623
- * resolve user + system routines.
624
- */
625
437
  export function readJob(name, cwd) {
626
438
  ensureAgentsDir();
627
439
  const userDir = getRoutinesDir();
@@ -656,14 +468,6 @@ function readJobFromDir(dir, name) {
656
468
  }
657
469
  return null;
658
470
  }
659
- /**
660
- * Read one routine file, preserving WHY it failed.
661
- *
662
- * `readJobFile` collapses all four fail-closed paths to `null`, which is right
663
- * for the loaders (an inert routine must not run) but leaves a broken routine
664
- * invisible in every view — the one routine an operator most needs to see. Same
665
- * reading, reason kept, for diagnostic surfaces like `agents inspect --routines`.
666
- */
667
471
  export function readJobFileResult(filePath) {
668
472
  let content;
669
473
  try {
@@ -682,32 +486,15 @@ export function readJobFileResult(filePath) {
682
486
  if (!parsed || typeof parsed !== 'object') {
683
487
  return { config: null, problem: 'not a YAML map' };
684
488
  }
685
- // Fail closed on the legacy singular `device` key. A routine that still
686
- // carries it after v12 startup migration is unmigrated state and must be
687
- // treated as unavailable/inert rather than unrestricted.
688
489
  if (Object.prototype.hasOwnProperty.call(parsed, 'device')) {
689
490
  return { config: null, problem: 'legacy `device:` key — inert until migrated to `devices:`' };
690
491
  }
691
- // Fail closed on a malformed `devices` too. Ownership treats a non-array as
692
- // "no pin", and the daemon's load path never calls validateJob — so a YAML
693
- // typo (`devices: yosemite-s0` instead of a list) would silently promote the
694
- // routine to fleet-wide and fire it on EVERY box. Inert-and-loud beats
695
- // unrestricted-and-silent.
696
492
  if (Object.prototype.hasOwnProperty.call(parsed, 'devices')
697
493
  && parsed.devices !== undefined
698
494
  && parsed.devices !== null
699
495
  && !Array.isArray(parsed.devices)) {
700
496
  return { config: null, problem: '`devices:` must be a list — routine is inert' };
701
497
  }
702
- // Fail closed on `dispatchedBy`. It is a runtime-only marker set by
703
- // lib/monitors/dispatch.ts on a job that has no definition file, and it makes
704
- // `jobRunsOnThisDevice` SKIP this device's routine activation manifest. A
705
- // routine YAML carrying it would therefore fire on every box regardless of
706
- // activation, on every path (scheduler, overdue, webhook) — the same
707
- // unrestricted-and-silent outcome the `devices:` guard above exists to
708
- // prevent, and the daemon's load path never calls validateJob. It is never
709
- // written back (writeJob deletes it), so its presence here means hand-authored
710
- // state, not drift.
711
498
  if (Object.prototype.hasOwnProperty.call(parsed, 'dispatchedBy')) {
712
499
  return { config: null, problem: '`dispatchedBy:` is a runtime-only monitor/webhook marker, not a routine field — routine is inert' };
713
500
  }
@@ -716,9 +503,6 @@ export function readJobFileResult(filePath) {
716
503
  ...JOB_DEFAULTS,
717
504
  ...parsed,
718
505
  name: parsed.name || path.basename(filePath).replace(/\.ya?ml$/, ''),
719
- // Before a device manifest exists, preserve only explicit legacy state.
720
- // A new built-in definition with no `enabled:` field stays opt-in until
721
- // setup materializes this host's routines list.
722
506
  enabled: Object.prototype.hasOwnProperty.call(parsed, 'enabled') ? parsed.enabled !== false : false,
723
507
  },
724
508
  problem: null,
@@ -727,23 +511,10 @@ export function readJobFileResult(filePath) {
727
511
  function readJobFile(filePath) {
728
512
  return readJobFileResult(filePath).config;
729
513
  }
730
- /** Write a job config to disk, omitting fields that match defaults.
731
- *
732
- * Updates the one existing supported extension (.yml or .yaml) atomically.
733
- * New routines are written as .yml. If both extensions exist for the same
734
- * name, the write fails explicitly so we never choose or drop a sibling.
735
- */
736
514
  export function writeJob(config) {
737
515
  ensureAgentsDir();
738
- // Stamp the creator once (RUSH-2020). An edit re-writes a config loaded from
739
- // disk, which already carries `actor`, so this preserves the original creator;
740
- // only a brand-new routine (no actor yet) gets the current resolver.
741
516
  if (!config.actor)
742
517
  config.actor = resolveActor().id;
743
- // Stamped once, on first write, and preserved by every later edit (an edit
744
- // re-writes a config loaded from disk, which already carries it). This is the
745
- // floor overdue detection uses so a routine is never judged against fires
746
- // that predate it.
747
518
  if (!config.createdAt)
748
519
  config.createdAt = new Date().toISOString();
749
520
  const jobsDir = getRoutinesDir();
@@ -768,14 +539,7 @@ export function writeJob(config) {
768
539
  if (output.catchup === true || output.catchup === undefined)
769
540
  delete output.catchup;
770
541
  delete output.devices;
771
- // Runtime-only monitor marker — a definition on disk must never carry it (see
772
- // the read-side guard in readJobFileResult), so strip it at the one schema
773
- // boundary rather than trusting every caller.
774
542
  delete output.dispatchedBy;
775
- // Persist projects in canonical form: deduplicated, first-seen order, field
776
- // omitted when nothing survives. This is the schema boundary, so a routine
777
- // written from any path (add, edit, enable/disable re-write) lands canonical
778
- // regardless of how the caller assembled the array.
779
543
  const normProjects = normalizeProjects(output.projects);
780
544
  if (normProjects)
781
545
  output.projects = normProjects;
@@ -792,21 +556,6 @@ export function writeJob(config) {
792
556
  }
793
557
  atomicWriteFileSync(filePath, serializeJob(output, existingText));
794
558
  }
795
- /**
796
- * Serialize a job config, preserving the on-disk formatting of an existing file.
797
- *
798
- * A full `yaml.stringify(config)` re-emits the whole document — restyling every
799
- * scalar (unquoting `schedule`, re-wrapping the folded `prompt` block, reordering
800
- * keys). When a routine is only being toggled (pause/resume) or re-pinned
801
- * (`devices --set`), that rewrites the entire file, leaving the git-backed
802
- * `~/.agents` tree perpetually dirty so `agents repo pull` refuses to sync across
803
- * the fleet. To keep the diff to the field that actually changed, we edit the
804
- * existing document in place and only re-render touched nodes; untouched nodes
805
- * (notably the large `prompt` block) keep their byte-for-byte formatting.
806
- *
807
- * `existingText` is the current file contents, or null for a new file. New,
808
- * unparseable, and non-mapping documents fall back to canonical `yaml.stringify`.
809
- */
810
559
  export function serializeJob(output, existingText) {
811
560
  if (existingText == null)
812
561
  return yaml.stringify(output);
@@ -814,26 +563,16 @@ export function serializeJob(output, existingText) {
814
563
  if (doc.errors.length > 0 || !yaml.isMap(doc.contents))
815
564
  return yaml.stringify(output);
816
565
  const existing = (doc.toJS() ?? {});
817
- // Update or add only the keys that actually changed; leave the rest untouched
818
- // so their original formatting is preserved.
819
566
  for (const [key, value] of Object.entries(output)) {
820
567
  if (JSON.stringify(existing[key]) !== JSON.stringify(value))
821
568
  doc.set(key, value);
822
569
  }
823
- // Drop keys that no longer belong (e.g. an omitted default, or `devices`
824
- // cleared back to fleet-wide).
825
570
  for (const key of Object.keys(existing)) {
826
571
  if (!(key in output))
827
572
  doc.delete(key);
828
573
  }
829
- // `flowCollectionPadding: false` keeps a re-serialized flow sequence in the
830
- // committed no-padding form (`[a, b]`, not `[ a, b ]`). Routine YAML lives in
831
- // the same git-backed `~/.agents` repo as agents.yaml, so the same emitter
832
- // padding would leave the tracked file dirty and block `agents repo pull`
833
- // fleet-wide (RUSH-2505). Node styles are otherwise preserved.
834
574
  return doc.toString({ flowCollectionPadding: false });
835
575
  }
836
- /** Delete a job config file by name. Returns true if the file existed. */
837
576
  export function deleteJob(name) {
838
577
  const jobsDir = getRoutinesDir();
839
578
  for (const ext of ['.yml', '.yaml']) {
@@ -845,7 +584,6 @@ export function deleteJob(name) {
845
584
  }
846
585
  return false;
847
586
  }
848
- /** Enable or disable a job by name. */
849
587
  export function setJobEnabled(name, enabled) {
850
588
  const job = readJob(name);
851
589
  if (!job)
@@ -855,29 +593,21 @@ export function setJobEnabled(name, enabled) {
855
593
  : [];
856
594
  setRoutineEnabledOnThisDevice(name, enabled, legacyEnabled);
857
595
  }
858
- /** Materialize legacy definition state into this device's activation manifest. */
859
596
  export function migrateLegacyRoutineActivation() {
860
597
  if (enabledRoutineNames() !== null)
861
598
  return false;
862
- // Legacy activation migration preserves FILE-BACKED routines' old
863
- // `enabled:`/`devices:` state into the device manifest. A box with zero
864
- // routines never grows a manifest here (nothing enabled or pinned to seed).
865
599
  const jobs = listJobs();
866
600
  if (!jobs.some((job) => job.enabled || Array.isArray(job.devices)))
867
601
  return false;
868
602
  replaceEnabledRoutines(jobs.filter((job) => job.enabled && jobRunsOnThisDevice(job)).map((job) => job.name));
869
603
  return true;
870
604
  }
871
- /** Validate a partial job config, returning a list of human-readable errors. */
872
605
  export function validateJob(config) {
873
606
  const errors = [];
874
607
  if (!config.name || typeof config.name !== 'string') {
875
608
  errors.push('name is required');
876
609
  }
877
610
  else if (!isSafeSegmentName(config.name)) {
878
- // The name becomes a filesystem path segment (overlay HOME under the
879
- // routines dir). Reject separators, '.'/'..', and null bytes so a synced
880
- // config can't traverse out of ~/.agents/routines.
881
611
  errors.push(`invalid name ${JSON.stringify(config.name)}: must be a single path segment ` +
882
612
  `(no '/', '\\\\', or null bytes, and not '.' or '..')`);
883
613
  }
@@ -891,7 +621,6 @@ export function validateJob(config) {
891
621
  errors.push('schedule must be a cron expression string');
892
622
  }
893
623
  else {
894
- // Validate cron expression is parseable
895
624
  try {
896
625
  new Cron(config.schedule);
897
626
  }
@@ -922,17 +651,7 @@ export function validateJob(config) {
922
651
  }
923
652
  else if (hasAgent && config.agent && strategy === 'local' &&
924
653
  !ROUTINE_AGENT_IDS.includes(config.agent) &&
925
- // A custom harness is exempt from the local-daemon command table: the
926
- // runner delegates it to `agents run <name>`, the same path workflow
927
- // jobs take, so no ROUTINE_AGENT_COMMANDS template is needed.
928
654
  !isCustomHarnessName(config.agent)) {
929
- // The local daemon only knows how to build a command for the agents in
930
- // ROUTINE_AGENT_IDS (baked from AGENT_COMMANDS in runner.ts) — anything else is a
931
- // real, installable agent (it passed the ALL_AGENT_IDS check above) but one
932
- // the daemon can't fire itself, so reject it now instead of accepting the
933
- // routine and failing at fire time (runner.ts buildJobCommand: "Unsupported
934
- // agent for daemon jobs"). host/fleet/cloud placement dispatches through
935
- // `agents run`/a cloud provider instead of this table, so they're exempt.
936
655
  errors.push(`agent '${config.agent}' is not supported by the local routine daemon; use one of: ` +
937
656
  `${ROUTINE_AGENT_IDS.join(', ')} (or set hostStrategy: host/fleet/cloud to run it elsewhere)`);
938
657
  }
@@ -942,9 +661,6 @@ export function validateJob(config) {
942
661
  }
943
662
  }
944
663
  if (config.resume !== undefined) {
945
- // Only claude/codex support native `--resume`; other agents would emit a resume
946
- // flag they don't understand. Resume reopens an agent session, so it is
947
- // incompatible with workflow and loop jobs (which have no single session to reopen).
948
664
  const RESUMABLE_AGENTS = ['claude', 'codex'];
949
665
  if (typeof config.resume !== 'string' || config.resume.trim() === '') {
950
666
  errors.push('resume must be a non-empty session id string');
@@ -976,7 +692,6 @@ export function validateJob(config) {
976
692
  if (config.effort && !['low', 'medium', 'high', 'xhigh', 'max', 'auto'].includes(config.effort)) {
977
693
  errors.push('effort must be low, medium, high, xhigh, max, or auto');
978
694
  }
979
- // command routines run a plain shell and never build a prompt; agent/workflow routines require one.
980
695
  if (!hasCommand && (!config.prompt || typeof config.prompt !== 'string')) {
981
696
  errors.push('prompt is required');
982
697
  }
@@ -1004,13 +719,9 @@ export function validateJob(config) {
1004
719
  if (strategy === 'host' && (!config.host || config.host.trim() === '')) {
1005
720
  errors.push("hostStrategy: host requires host: (set via --run-on or host: in YAML)");
1006
721
  }
1007
- // `host: auto` is fire-time fleet placement (resolveDeviceAuto), never a
1008
- // literal SSH target — it is only meaningful under hostStrategy: fleet.
1009
722
  if (config.host === 'auto' && strategy !== 'fleet') {
1010
723
  errors.push("host: auto requires hostStrategy: fleet (set via --run-on auto) — 'auto' is a fire-time device pick, not a machine name");
1011
724
  }
1012
- // Remote placement (host/fleet/cloud) can't carry workflow/loop/command yet —
1013
- // those live on the firing machine.
1014
725
  if (strategy === 'host' || strategy === 'fleet' || strategy === 'cloud') {
1015
726
  if (config.workflow) {
1016
727
  errors.push(`${strategy} placement can't be combined with workflow: yet — run the workflow locally or convert it to a plain prompt`);
@@ -1037,9 +748,6 @@ export function validateJob(config) {
1037
748
  else if (config.cwd !== undefined && (typeof config.cwd !== 'string' || config.cwd.trim() === '')) {
1038
749
  errors.push('cwd (the portable execution directory) must be a non-empty path string');
1039
750
  }
1040
- // `remoteCwd` is the legacy host-placement path; `cwd` is its canonical
1041
- // replacement. The two split path semantics, so they must never coexist — the
1042
- // one-shot migration folds remoteCwd into cwd, and a conflicting pair pauses.
1043
751
  if (config.cwd !== undefined && config.remoteCwd !== undefined) {
1044
752
  errors.push('cwd and remoteCwd both set — remoteCwd is the legacy form of cwd; keep only cwd');
1045
753
  }
@@ -1069,9 +777,6 @@ export function validateJob(config) {
1069
777
  }
1070
778
  }
1071
779
  }
1072
- // A routine belongs to exactly one device. Listing several used to fire it
1073
- // once per device — duplicate work, duplicate spend — and making them elect
1074
- // one owner at runtime would need cross-device coordination nobody wants.
1075
780
  if (hasAmbiguousDevicePin(config)) {
1076
781
  errors.push(`devices lists ${new Set(config.devices.map((d) => normalizeHost(String(d)))).size} devices; a routine runs on exactly one. ` +
1077
782
  'Pin the single device that should own it, e.g. devices: [yosemite-s0]. ' +
@@ -1085,7 +790,6 @@ export function validateJob(config) {
1085
790
  errors.push('projects must be an array of project names (or ["*"] for all projects)');
1086
791
  }
1087
792
  else if (config.projects.length === 1 && config.projects[0] === '*') {
1088
- // ["*"] is valid: "all projects" sentinel
1089
793
  }
1090
794
  else if (config.projects.includes('*')) {
1091
795
  errors.push('projects: "*" (all projects) must be the sole entry');
@@ -1105,7 +809,6 @@ export function validateJob(config) {
1105
809
  }
1106
810
  return errors;
1107
811
  }
1108
- /** Validate a job trigger block, returning a list of human-readable errors. */
1109
812
  export function validateTrigger(trigger) {
1110
813
  const errors = [];
1111
814
  if (!trigger || typeof trigger !== 'object') {
@@ -1162,7 +865,6 @@ function isParseableDate(value) {
1162
865
  const ts = Date.parse(value);
1163
866
  return Number.isFinite(ts);
1164
867
  }
1165
- /** True when a job's endAt has already elapsed. False when endAt is unset or in the future. */
1166
868
  export function isPastEndAt(config, now = new Date()) {
1167
869
  if (!config.endAt)
1168
870
  return false;
@@ -1297,10 +999,6 @@ function getPath(obj, path) {
1297
999
  }
1298
1000
  return current;
1299
1001
  }
1300
- /**
1301
- * Substitute `{{dotted.path}}` placeholders in a string using a webhook context.
1302
- * Missing values are replaced with an empty string.
1303
- */
1304
1002
  export function substituteWebhookPrompt(prompt, context) {
1305
1003
  return prompt.replace(/\{\{([^{}]+)\}\}/g, (_, rawPath) => {
1306
1004
  const value = getPath(context, rawPath.trim());
@@ -1309,24 +1007,6 @@ export function substituteWebhookPrompt(prompt, context) {
1309
1007
  return String(value);
1310
1008
  });
1311
1009
  }
1312
- /**
1313
- * Substitute `{{dotted.path}}` placeholders in a string destined for a SHELL,
1314
- * quoting every substituted value so payload content cannot break out of it.
1315
- *
1316
- * `run.command` is executed through a shell, and its context is built from an
1317
- * external webhook payload — `issue.title`, `issue.description`, and the GitHub
1318
- * `pull_request` fields are free text any outside contributor can set. Pasting
1319
- * those in raw (as {@link substituteWebhookPrompt} does, correctly, for prompts)
1320
- * turns an operator's `echo {{issue.title}}` into a command-injection sink.
1321
- *
1322
- * The template itself is operator-authored and stays unquoted, so pipes,
1323
- * redirects, and `&&` in the configured command keep working. Only the
1324
- * interpolated values are quoted.
1325
- *
1326
- * POSIX `sh` quoting: wrap in single quotes and close/escape/reopen for any
1327
- * embedded single quote. `exec` uses `cmd.exe` on Windows, which does not
1328
- * honour these rules — see `assertShellSubstitutionSupported`.
1329
- */
1330
1010
  export function substituteWebhookCommand(command, context) {
1331
1011
  return command.replace(/\{\{([^{}]+)\}\}/g, (_, rawPath) => {
1332
1012
  const value = getPath(context, rawPath.trim());
@@ -1335,14 +1015,6 @@ export function substituteWebhookCommand(command, context) {
1335
1015
  return `'${String(value).replace(/'/g, `'\\''`)}'`;
1336
1016
  });
1337
1017
  }
1338
- /**
1339
- * Refuse a `run.command` carrying placeholders on a platform whose shell we
1340
- * cannot safely quote for. `child_process.exec` runs through `cmd.exe` on
1341
- * Windows, where POSIX single-quoting is not a quoting mechanism at all, so
1342
- * {@link substituteWebhookCommand} would not contain a hostile value.
1343
- *
1344
- * Fail loud rather than execute something we cannot prove is safe.
1345
- */
1346
1018
  export function assertShellSubstitutionSupported(command, platform = process.platform) {
1347
1019
  if (platform === 'win32' && /\{\{[^{}]+\}\}/.test(command)) {
1348
1020
  throw new Error('run.command with {{…}} placeholders is not supported on Windows: the values come from an ' +
@@ -1350,37 +1022,27 @@ export function assertShellSubstitutionSupported(command, platform = process.pla
1350
1022
  'command with no placeholders.');
1351
1023
  }
1352
1024
  }
1353
- /** Expand built-in and user-defined template variables in a job's prompt string. */
1354
1025
  export function resolveJobPrompt(config, context) {
1355
1026
  const now = new Date();
1356
1027
  const tz = config.timezone || Intl.DateTimeFormat().resolvedOptions().timeZone;
1357
1028
  const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
1358
- // Compute date/day/time in the job's configured timezone
1359
- // Use Intl.DateTimeFormat to get the weekday name directly in the target timezone
1360
1029
  const localDayName = new Intl.DateTimeFormat('en-US', { timeZone: tz, weekday: 'long' }).format(now);
1361
1030
  const localDay = days.includes(localDayName) ? localDayName : days[now.getDay()];
1362
- const localDate = now.toLocaleDateString('en-CA', { timeZone: tz }); // en-CA gives YYYY-MM-DD
1363
- const localTime = now.toLocaleTimeString('en-GB', { timeZone: tz, hour12: false }); // HH:MM:SS
1031
+ const localDate = now.toLocaleDateString('en-CA', { timeZone: tz });
1032
+ const localTime = now.toLocaleTimeString('en-GB', { timeZone: tz, hour12: false });
1364
1033
  let prompt = config.prompt;
1365
- // Built-in variables (timezone-aware)
1366
1034
  prompt = prompt.replace(/\{day\}/g, localDay);
1367
1035
  prompt = prompt.replace(/\{date\}/g, localDate);
1368
1036
  prompt = prompt.replace(/\{time\}/g, localTime);
1369
1037
  prompt = prompt.replace(/\{job_name\}/g, config.name);
1370
- // User-defined variables
1371
1038
  if (config.variables) {
1372
1039
  for (const [key, value] of Object.entries(config.variables)) {
1373
1040
  prompt = prompt.replace(new RegExp(`\\{${key}\\}`, 'g'), value);
1374
1041
  }
1375
1042
  }
1376
- // Webhook-driven variables ({{issue.identifier}}, {{updatedFrom.state.name}}, ...)
1377
1043
  if (context) {
1378
1044
  prompt = substituteWebhookPrompt(prompt, context);
1379
1045
  }
1380
- // Last report (special handling). Only a COMPLETED run's report is injected —
1381
- // a failed run's report.md is the agent's error text (e.g. a login prompt on
1382
- // an auth failure), and feeding that into the next prompt poisons every
1383
- // subsequent run until a human intervenes.
1384
1046
  const latestRun = getLatestCompletedRun(config.name);
1385
1047
  if (latestRun) {
1386
1048
  const reportPath = path.join(getJobRunsDir(config.name), latestRun.runId, 'report.md');
@@ -1397,10 +1059,6 @@ export function resolveJobPrompt(config, context) {
1397
1059
  }
1398
1060
  return prompt;
1399
1061
  }
1400
- /** Parse a human-readable timeout string (e.g. "10m", "2h", "1h30m", "3d", "1w") into milliseconds.
1401
- * Accepts combinations of w (weeks), d (days), h (hours), m (minutes).
1402
- * Returns null if the string is empty, matches nothing, totals zero, or exceeds 1 week.
1403
- */
1404
1062
  export function parseTimeout(timeout) {
1405
1063
  const match = timeout.match(/^(?:(\d+)w)?(?:(\d+)d)?(?:(\d+)h)?(?:(\d+)m)?$/);
1406
1064
  if (!match)
@@ -1412,12 +1070,11 @@ export function parseTimeout(timeout) {
1412
1070
  const ms = ((weeks * 7 + days) * 24 * 60 + hours * 60 + minutes) * 60 * 1000;
1413
1071
  if (ms <= 0)
1414
1072
  return null;
1415
- const ONE_WEEK_MS = 7 * 24 * 60 * 60 * 1000; // 604800000
1073
+ const ONE_WEEK_MS = 7 * 24 * 60 * 60 * 1000;
1416
1074
  if (ms > ONE_WEEK_MS)
1417
1075
  return null;
1418
1076
  return ms;
1419
1077
  }
1420
- /** List all run metadata entries for a job, sorted chronologically. */
1421
1078
  export function listRuns(jobName) {
1422
1079
  const jobRunsDir = getJobRunsDir(jobName);
1423
1080
  if (!fs.existsSync(jobRunsDir))
@@ -1434,17 +1091,10 @@ export function listRuns(jobName) {
1434
1091
  }
1435
1092
  return runs;
1436
1093
  }
1437
- /** Get the most recent run for a job, or null if never run. */
1438
1094
  export function getLatestRun(jobName) {
1439
1095
  const runs = listRuns(jobName);
1440
1096
  return runs.length > 0 ? runs[runs.length - 1] : null;
1441
1097
  }
1442
- /**
1443
- * Get the most recent COMPLETED run for a job, or null if none has completed.
1444
- * Used to resolve `{last_report}` so a failed run's error text (e.g. an auth
1445
- * login prompt written into report.md) can never be injected into the next
1446
- * run's prompt.
1447
- */
1448
1098
  export function getLatestCompletedRun(jobName) {
1449
1099
  const runs = listRuns(jobName);
1450
1100
  for (let i = runs.length - 1; i >= 0; i--) {
@@ -1453,11 +1103,6 @@ export function getLatestCompletedRun(jobName) {
1453
1103
  }
1454
1104
  return null;
1455
1105
  }
1456
- /**
1457
- * Fold a job's run history (`listRuns`) into a duration + outcome summary.
1458
- * `missed` fires (no process ever ran) carry no `duration` and are excluded
1459
- * from the latency percentiles but still counted in `count`/`missed`.
1460
- */
1461
1106
  export function routineStats(jobName) {
1462
1107
  const runs = listRuns(jobName);
1463
1108
  const failed = runs.filter((r) => r.status === 'failed' || r.status === 'timeout').length;
@@ -1478,14 +1123,12 @@ export function routineStats(jobName) {
1478
1123
  p95: Math.round(percentile(durations, 95)),
1479
1124
  };
1480
1125
  }
1481
- /** Persist run metadata to its run directory as meta.json. */
1482
1126
  export function writeRunMeta(meta) {
1483
1127
  ensureAgentsDir();
1484
1128
  const runDir = path.join(getJobRunsDir(meta.jobName), meta.runId);
1485
1129
  fs.mkdirSync(runDir, { recursive: true });
1486
1130
  fs.writeFileSync(path.join(runDir, 'meta.json'), JSON.stringify(meta, null, 2), 'utf-8');
1487
1131
  }
1488
- /** Read run metadata from disk. Returns null if missing or corrupt. */
1489
1132
  export function readRunMeta(jobName, runId) {
1490
1133
  const metaPath = path.join(getJobRunsDir(jobName), runId, 'meta.json');
1491
1134
  if (!fs.existsSync(metaPath))
@@ -1497,77 +1140,23 @@ export function readRunMeta(jobName, runId) {
1497
1140
  return null;
1498
1141
  }
1499
1142
  }
1500
- /**
1501
- * Runs directory for a single job, with the (untrusted) job name contained to a
1502
- * single segment beneath the runs dir — same guard as `getJobHomePath`. The name
1503
- * comes from routine YAML and can arrive via a synced config repo; every runs-dir
1504
- * sink (run dir, meta read/write, last-report read) routes through here so a
1505
- * crafted `name` like `../../../../tmp/x` can't `mkdirSync`/write `stdout.log`,
1506
- * `meta.json`, or `report.md` outside `~/.agents/.history/runs`.
1507
- */
1508
1143
  export function getJobRunsDir(jobName) {
1509
1144
  return safeJoin(getRunsDir(), jobName);
1510
1145
  }
1511
- /** Get the filesystem path for a specific run's directory. */
1512
1146
  export function getRunDir(jobName, runId) {
1513
1147
  return path.join(getJobRunsDir(jobName), runId);
1514
1148
  }
1515
- /**
1516
- * The run id a scheduled fire is recorded under — derived from its intended UTC
1517
- * fire time so the SAME slot always maps to the SAME run directory. This is what
1518
- * makes the single-fire claim meaningful: a duplicate cron delivery for one slot
1519
- * computes the same id and loses the atomic `mkdir` claim. Shares the derivation
1520
- * with `missedRunId` (catchup.ts) so a missed-then-caught-up fire and a live fire
1521
- * for the same UTC slot are one record.
1522
- */
1523
1149
  export function slotRunId(scheduledFor) {
1524
1150
  const iso = typeof scheduledFor === 'string' ? scheduledFor : scheduledFor.toISOString();
1525
1151
  return iso.replace(/[:.]/g, '-');
1526
1152
  }
1527
- /**
1528
- * Lookback windows for {@link alignedSlotForFire}, narrowest first. A wider
1529
- * window is tried ONLY when the narrower one found no fire, so:
1530
- * - a dense schedule (every-minute) resolves in the 1-hour window — ~60 steps,
1531
- * not ~10080 — which matters because the forward-timer path now runs this on
1532
- * every fire (a live fire is milliseconds past its boundary, so the narrowest
1533
- * window always contains it);
1534
- * - a sparse schedule (`0 9 1,13,25 * *` has 12-day gaps; monthly/quarterly/
1535
- * annual) still resolves, because a fixed short window silently blinded
1536
- * overdue detection to any cron whose gap exceeded it.
1537
- * A narrower window can only ever find the true most-recent fire ≤ `at` or
1538
- * nothing (never a wrong boundary), so prepending the cheap windows is
1539
- * behavior-preserving for the sparse-schedule overdue path.
1540
- */
1541
1153
  const HOUR_MS = 60 * 60 * 1000;
1542
1154
  const DAY_MS = 24 * HOUR_MS;
1543
1155
  const SLOT_LOOKBACK_WINDOWS_MS = [HOUR_MS, DAY_MS, 7 * DAY_MS, 32 * DAY_MS, 93 * DAY_MS, 400 * DAY_MS];
1544
- /**
1545
- * The aligned schedule boundary a fire belongs to: the most recent occurrence of
1546
- * `cron` at or before `at`.
1547
- *
1548
- * This is the occurrence IDENTITY that {@link slotRunId} (forward dispatch) and
1549
- * `missedRunId` (catchup.ts) must both key on. croner's `currentRun()` inside a
1550
- * fire callback is the JITTERED wall-clock trigger instant (it carries
1551
- * milliseconds — verified), not the aligned boundary, so keying `slotRunId`
1552
- * directly on it produced a distinct id per delivery: two callbacks for one
1553
- * occurrence each claimed a different run dir and both launched, and a live fire
1554
- * never collided with its catch-up twin (which keys on the aligned
1555
- * `previousExpectedFire`). Flooring both to this boundary is what makes the
1556
- * single-fire claim a structural claim on `(routine, scheduledFor)` (SING-15).
1557
- *
1558
- * croner's `previousRun()` takes no argument and returns null on a freshly
1559
- * constructed instance, so we walk `nextRun(cursor)` forward from a lookback
1560
- * window and keep the last fire still ≤ `at` — the same derivation catchup's
1561
- * overdue detection has always used.
1562
- */
1563
1156
  export function alignedSlotForFire(cron, at) {
1564
1157
  for (const window of SLOT_LOOKBACK_WINDOWS_MS) {
1565
1158
  let cursor = new Date(at.getTime() - window);
1566
1159
  let last = null;
1567
- // Cap iterations: an every-minute schedule yields ≤ 10080 steps over a week;
1568
- // 20k is a paranoia bound against pathological patterns. Only a schedule that
1569
- // found nothing in the narrower window reaches a wider one, and such a
1570
- // schedule is sparse, so the cap is never the binding constraint.
1571
1160
  for (let i = 0; i < 20000; i++) {
1572
1161
  const next = cron.nextRun(cursor);
1573
1162
  if (!next || next.getTime() > at.getTime())
@@ -1580,19 +1169,11 @@ export function alignedSlotForFire(cron, at) {
1580
1169
  }
1581
1170
  return null;
1582
1171
  }
1583
- /**
1584
- * Atomically CLAIM a run directory. Returns true on a successful claim, false
1585
- * when the directory already exists (another caller — even in a separate process
1586
- * — owns this (routine, slot) pair). The non-recursive `mkdir` is a single
1587
- * filesystem test-and-set on every POSIX filesystem, the same primitive
1588
- * `claimMissedFire` relies on; it holds across processes where an in-process flag
1589
- * or a released lock cannot.
1590
- */
1591
1172
  export function claimRunSlot(jobName, runId) {
1592
1173
  const runDir = getRunDir(jobName, runId);
1593
1174
  fs.mkdirSync(path.dirname(runDir), { recursive: true });
1594
1175
  try {
1595
- fs.mkdirSync(runDir); // non-recursive: throws EEXIST if already claimed
1176
+ fs.mkdirSync(runDir);
1596
1177
  return true;
1597
1178
  }
1598
1179
  catch (err) {
@@ -1601,7 +1182,6 @@ export function claimRunSlot(jobName, runId) {
1601
1182
  throw err;
1602
1183
  }
1603
1184
  }
1604
- /** Discover routine YAML files in a repository's routines/ directory. */
1605
1185
  export function discoverJobsFromRepo(repoPath) {
1606
1186
  const jobsPath = path.join(repoPath, 'routines');
1607
1187
  if (!fs.existsSync(jobsPath))
@@ -1613,26 +1193,9 @@ export function discoverJobsFromRepo(repoPath) {
1613
1193
  path: path.join(jobsPath, f),
1614
1194
  }));
1615
1195
  }
1616
- /** Check whether a job with the given name exists on disk. */
1617
1196
  export function jobExists(name) {
1618
1197
  return readJob(name) !== null;
1619
1198
  }
1620
- /**
1621
- * True when `sourcePath` already IS the canonical user-layer file for `name`.
1622
- *
1623
- * `agents routines add <file>` copies a definition into the routines dir, but
1624
- * users routinely point it at the file that already lives there — the release
1625
- * train's own `~/.agents/routines/release-train.yml`. `writeJob` would then
1626
- * re-serialize that file in place and, per {@link serializeJob}, delete every
1627
- * key absent from the canonical output — silently dropping the legacy
1628
- * `devices:` pin from config tracked in the git-backed `~/.agents` repo
1629
- * (RUSH-2517). Callers use this to skip the write when there is nothing to
1630
- * copy.
1631
- *
1632
- * Compares real paths so a symlinked `~/.agents` (the normal layout) still
1633
- * matches, and falls back to a resolved-path compare when either side cannot be
1634
- * realpath'd.
1635
- */
1636
1199
  export function isCanonicalRoutineSource(sourcePath, name) {
1637
1200
  const jobsDir = getRoutinesDir();
1638
1201
  const real = (p) => {
@@ -1646,7 +1209,6 @@ export function isCanonicalRoutineSource(sourcePath, name) {
1646
1209
  const source = real(sourcePath);
1647
1210
  return ['.yml', '.yaml'].some((ext) => real(safeJoin(jobsDir, name + ext)) === source);
1648
1211
  }
1649
- /** Get the filesystem path of a job's YAML config file, or null if not found. */
1650
1212
  export function getJobPath(name) {
1651
1213
  const jobsDir = getRoutinesDir();
1652
1214
  for (const ext of ['.yml', '.yaml']) {
@@ -1657,17 +1219,6 @@ export function getJobPath(name) {
1657
1219
  }
1658
1220
  return null;
1659
1221
  }
1660
- /**
1661
- * Resolve a routine's YAML across EVERY layer `listJobs`/`readJob` read — user
1662
- * then system — not just the user dir.
1663
- *
1664
- * `getJobPath` is user-layer only because its callers write there. Read paths
1665
- * that ask "when did this routine come to exist" need the system layer too:
1666
- * a built-in shipped in the system repo has no user-layer file and no
1667
- * `createdAt`, so a user-layer-only lookup returns null, the overdue floor is
1668
- * skipped, and the routine reads as instantly overdue on first daemon start —
1669
- * exactly the case the floor exists to prevent.
1670
- */
1671
1222
  export function resolveJobFilePath(name) {
1672
1223
  const userPath = getJobPath(name);
1673
1224
  if (userPath)
@@ -1679,16 +1230,7 @@ export function resolveJobFilePath(name) {
1679
1230
  }
1680
1231
  return null;
1681
1232
  }
1682
- /**
1683
- * Parse an "at" time string into a one-shot cron expression.
1684
- * Supports formats like:
1685
- * - "9:00" or "09:00" - today at 9:00 AM (or tomorrow if past)
1686
- * - "14:30" - today at 2:30 PM
1687
- * - "2026-02-24 09:00" - specific date and time
1688
- * Returns null if invalid format.
1689
- */
1690
1233
  export function parseAtTime(atTime) {
1691
- // Try parsing as "HH:MM" format
1692
1234
  const timeMatch = atTime.match(/^(\d{1,2}):(\d{2})$/);
1693
1235
  if (timeMatch) {
1694
1236
  const hour = parseInt(timeMatch[1], 10);
@@ -1698,16 +1240,13 @@ export function parseAtTime(atTime) {
1698
1240
  const now = new Date();
1699
1241
  let targetDate = new Date();
1700
1242
  targetDate.setHours(hour, minute, 0, 0);
1701
- // If the time has already passed today, schedule for tomorrow
1702
1243
  if (targetDate <= now) {
1703
1244
  targetDate.setDate(targetDate.getDate() + 1);
1704
1245
  }
1705
1246
  const day = targetDate.getDate();
1706
1247
  const month = targetDate.getMonth() + 1;
1707
- // Cron format: minute hour day month *
1708
1248
  return { schedule: `${minute} ${hour} ${day} ${month} *`, runOnce: true };
1709
1249
  }
1710
- // Try parsing as "YYYY-MM-DD HH:MM" format
1711
1250
  const dateTimeMatch = atTime.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})$/);
1712
1251
  if (dateTimeMatch) {
1713
1252
  const year = parseInt(dateTimeMatch[1], 10);
@@ -1719,13 +1258,10 @@ export function parseAtTime(atTime) {
1719
1258
  return null;
1720
1259
  if (hour < 0 || hour > 23 || minute < 0 || minute > 59)
1721
1260
  return null;
1722
- // Note: croner doesn't support year, so we just use month/day
1723
- // The job will fire on that date each year unless removed
1724
1261
  return { schedule: `${minute} ${hour} ${day} ${month} *`, runOnce: true };
1725
1262
  }
1726
1263
  return null;
1727
1264
  }
1728
- /** List all job names that have run directories. */
1729
1265
  export function listJobsWithRuns() {
1730
1266
  const runsDir = getRunsDir();
1731
1267
  if (!fs.existsSync(runsDir))
@@ -1734,7 +1270,6 @@ export function listJobsWithRuns() {
1734
1270
  .filter((e) => e.isDirectory())
1735
1271
  .map((e) => e.name);
1736
1272
  }
1737
- /** Count total runs across all jobs. */
1738
1273
  export function countAllRuns() {
1739
1274
  let total = 0;
1740
1275
  for (const jobName of listJobsWithRuns()) {
@@ -1742,7 +1277,6 @@ export function countAllRuns() {
1742
1277
  }
1743
1278
  return total;
1744
1279
  }
1745
- /** Preview runs that would be pruned (keeping only the most recent `keep` per job). */
1746
1280
  export function previewRunsPrune(keep) {
1747
1281
  const toPrune = [];
1748
1282
  for (const jobName of listJobsWithRuns()) {
@@ -1756,7 +1290,6 @@ export function previewRunsPrune(keep) {
1756
1290
  }
1757
1291
  return toPrune;
1758
1292
  }
1759
- /** Delete old runs, keeping only the most recent `keep` per job. Returns bytes freed and run count. */
1760
1293
  export function pruneRuns(keep) {
1761
1294
  let deleted = 0;
1762
1295
  let bytesFreed = 0;
@@ -1788,7 +1321,7 @@ function getDirSize(dirPath) {
1788
1321
  try {
1789
1322
  size += fs.statSync(fullPath).size;
1790
1323
  }
1791
- catch { /* ignore */ }
1324
+ catch { }
1792
1325
  }
1793
1326
  }
1794
1327
  return size;