@phnx-labs/agents-cli 1.22.113 → 1.22.115

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 (802) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/README.md +32 -113
  3. package/dist/browser.js +0 -0
  4. package/dist/cli/command-registry.d.ts +0 -60
  5. package/dist/cli/command-registry.js +57 -66
  6. package/dist/commands/accounts.d.ts +3 -77
  7. package/dist/commands/accounts.js +13 -366
  8. package/dist/commands/apply.d.ts +0 -4
  9. package/dist/commands/apply.js +3 -3
  10. package/dist/commands/audit.js +1 -1
  11. package/dist/commands/auth.js +0 -2
  12. package/dist/commands/browser-picker.d.ts +3 -6
  13. package/dist/commands/browser-picker.js +2 -2
  14. package/dist/commands/browser-sessions-picker.d.ts +2 -1
  15. package/dist/commands/browser.d.ts +53 -0
  16. package/dist/commands/browser.js +199 -9
  17. package/dist/commands/computer-sessions-picker.d.ts +2 -1
  18. package/dist/commands/computer.d.ts +14 -19
  19. package/dist/commands/computer.js +65 -10
  20. package/dist/commands/config.js +46 -2
  21. package/dist/commands/daemon.d.ts +0 -23
  22. package/dist/commands/daemon.js +1 -1
  23. package/dist/commands/detach-core.d.ts +2 -1
  24. package/dist/commands/detach.d.ts +0 -3
  25. package/dist/commands/detach.js +3 -3
  26. package/dist/commands/doctor.d.ts +2 -3
  27. package/dist/commands/doctor.js +0 -11
  28. package/dist/commands/events.d.ts +1 -3
  29. package/dist/commands/events.js +4 -7
  30. package/dist/commands/exec.d.ts +0 -1
  31. package/dist/commands/exec.js +2 -7
  32. package/dist/commands/feed-watch.js +52 -8
  33. package/dist/commands/feed.d.ts +3 -3
  34. package/dist/commands/feed.js +1 -1
  35. package/dist/commands/focus.d.ts +4 -4
  36. package/dist/commands/focus.js +1 -1
  37. package/dist/commands/go.d.ts +0 -17
  38. package/dist/commands/go.js +2 -19
  39. package/dist/commands/harness-hooks.d.ts +0 -7
  40. package/dist/commands/harness-hooks.js +1 -1
  41. package/dist/commands/harness-wizard.d.ts +2 -2
  42. package/dist/commands/harness.d.ts +3 -8
  43. package/dist/commands/harness.js +1 -1
  44. package/dist/commands/inspect.d.ts +2 -3
  45. package/dist/commands/inspect.js +1 -1
  46. package/dist/commands/logs.js +1 -1
  47. package/dist/commands/mcp.js +8 -83
  48. package/dist/commands/memory.js +4 -47
  49. package/dist/commands/message.d.ts +1 -1
  50. package/dist/commands/message.js +7 -7
  51. package/dist/commands/plugins.js +1 -93
  52. package/dist/commands/projects.d.ts +2 -18
  53. package/dist/commands/projects.js +89 -3
  54. package/dist/commands/repo.js +0 -44
  55. package/dist/commands/resource-view.d.ts +3 -2
  56. package/dist/commands/resume.d.ts +0 -1
  57. package/dist/commands/resume.js +5 -2
  58. package/dist/commands/routines.d.ts +1 -3
  59. package/dist/commands/routines.js +1 -1
  60. package/dist/commands/run-account-picker.d.ts +2 -1
  61. package/dist/commands/run-broadcast.d.ts +2 -1
  62. package/dist/commands/run-device-picker.d.ts +2 -1
  63. package/dist/commands/secrets-passthrough.d.ts +14 -0
  64. package/dist/commands/secrets-passthrough.js +23 -4
  65. package/dist/commands/send.d.ts +4 -4
  66. package/dist/commands/send.js +6 -51
  67. package/dist/commands/sessions-backfill.d.ts +2 -35
  68. package/dist/commands/sessions-backfill.js +1 -1
  69. package/dist/commands/sessions-backup-setup.js +1 -1
  70. package/dist/commands/sessions-bookmark.d.ts +0 -10
  71. package/dist/commands/sessions-bookmark.js +1 -1
  72. package/dist/commands/sessions-inject.d.ts +2 -3
  73. package/dist/commands/sessions-inject.js +8 -17
  74. package/dist/commands/sessions-picker-factory.d.ts +4 -14
  75. package/dist/commands/sessions-picker-factory.js +2 -2
  76. package/dist/commands/sessions-picker.d.ts +3 -9
  77. package/dist/commands/sessions-picker.js +2 -2
  78. package/dist/commands/sessions-resume.d.ts +2 -4
  79. package/dist/commands/sessions-resume.js +0 -6
  80. package/dist/commands/sessions-share.d.ts +5 -7
  81. package/dist/commands/sessions-share.js +98 -49
  82. package/dist/commands/sessions-stats.d.ts +2 -1
  83. package/dist/commands/sessions-stop.d.ts +0 -3
  84. package/dist/commands/sessions-stop.js +1 -1
  85. package/dist/commands/sessions-tail.d.ts +2 -1
  86. package/dist/commands/sessions-trace.d.ts +4 -6
  87. package/dist/commands/sessions-trace.js +1 -1
  88. package/dist/commands/sessions.d.ts +13 -104
  89. package/dist/commands/sessions.js +11 -18
  90. package/dist/commands/setup-browser.js +18 -2
  91. package/dist/commands/setup-computer.js +20 -6
  92. package/dist/commands/setup-mine.d.ts +0 -6
  93. package/dist/commands/setup-mine.js +1 -1
  94. package/dist/commands/setup-secrets.js +24 -4
  95. package/dist/commands/setup-terminal.d.ts +3 -0
  96. package/dist/commands/setup-terminal.js +22 -0
  97. package/dist/commands/setup.d.ts +3 -4
  98. package/dist/commands/setup.js +21 -11
  99. package/dist/commands/skills.js +0 -8
  100. package/dist/commands/ssh.d.ts +6 -0
  101. package/dist/commands/ssh.js +92 -233
  102. package/dist/commands/sync.js +14 -5
  103. package/dist/commands/teams-picker.d.ts +2 -5
  104. package/dist/commands/teams-picker.js +2 -2
  105. package/dist/commands/teams.d.ts +1 -7
  106. package/dist/commands/teams.js +2 -2
  107. package/dist/commands/tmux.d.ts +1 -1
  108. package/dist/commands/tmux.js +1 -1
  109. package/dist/commands/traces.js +1 -1
  110. package/dist/commands/upgrade.d.ts +2 -1
  111. package/dist/commands/utils.d.ts +1 -1
  112. package/dist/commands/utils.js +1 -1
  113. package/dist/lib/account-capabilities.d.ts +2 -1
  114. package/dist/lib/account-catalog.d.ts +4 -13
  115. package/dist/lib/account-catalog.js +1 -1
  116. package/dist/lib/account-registry.d.ts +3 -4
  117. package/dist/lib/account-registry.js +1 -1
  118. package/dist/lib/accounting/account-launch.d.ts +4 -3
  119. package/dist/lib/accounting/account-pool.d.ts +2 -1
  120. package/dist/lib/accounting/rotate.d.ts +3 -9
  121. package/dist/lib/accounting/rotate.js +2 -14
  122. package/dist/lib/accounting/usage-sync.d.ts +5 -4
  123. package/dist/lib/accounting/usage.d.ts +7 -31
  124. package/dist/lib/accounting/usage.js +4 -4
  125. package/dist/lib/accounts/add.d.ts +0 -5
  126. package/dist/lib/accounts/add.js +1 -7
  127. package/dist/lib/accounts/migrate.d.ts +8 -8
  128. package/dist/lib/accounts/migrate.js +1 -1
  129. package/dist/lib/acp/client.d.ts +3 -2
  130. package/dist/lib/acp/harnesses.d.ts +2 -2
  131. package/dist/lib/acp/harnesses.js +1 -1
  132. package/dist/lib/acp/run.d.ts +2 -1
  133. package/dist/lib/actor.d.ts +3 -2
  134. package/dist/lib/add-dir.d.ts +2 -17
  135. package/dist/lib/add-dir.js +2 -6
  136. package/dist/lib/address.d.ts +56 -0
  137. package/dist/lib/address.js +143 -0
  138. package/dist/lib/agent-spec/agents.d.ts +12 -28
  139. package/dist/lib/agent-spec/agents.js +2 -6
  140. package/dist/lib/agent-spec/primitives.d.ts +0 -7
  141. package/dist/lib/agent-spec/primitives.js +0 -6
  142. package/dist/lib/agent-spec/types.d.ts +2 -1
  143. package/dist/lib/analytics/dashboard.d.ts +1 -5
  144. package/dist/lib/analytics/dashboard.js +0 -2
  145. package/dist/lib/analytics/mix-commands.d.ts +0 -7
  146. package/dist/lib/analytics/mix-commands.js +3 -3
  147. package/dist/lib/analytics/recipes.d.ts +0 -12
  148. package/dist/lib/analytics/recipes.js +7 -31
  149. package/dist/lib/analytics/usage-db.d.ts +5 -32
  150. package/dist/lib/analytics/usage-db.js +1 -70
  151. package/dist/lib/answer-router.d.ts +7 -6
  152. package/dist/lib/answer-router.js +5 -11
  153. package/dist/lib/artifact-actions.d.ts +0 -4
  154. package/dist/lib/artifacts-client.d.ts +20 -0
  155. package/dist/lib/artifacts-client.js +46 -0
  156. package/dist/lib/ask-classifier.d.ts +3 -4
  157. package/dist/lib/ask-classifier.js +0 -7
  158. package/dist/lib/auth-health.d.ts +3 -46
  159. package/dist/lib/auth-health.js +3 -3
  160. package/dist/lib/auth-mint.d.ts +6 -6
  161. package/dist/lib/auth-mint.js +7 -7
  162. package/dist/lib/bench/runner.d.ts +2 -2
  163. package/dist/lib/bench/runner.js +1 -1
  164. package/dist/lib/bench/storage.d.ts +0 -1
  165. package/dist/lib/bench/storage.js +1 -1
  166. package/dist/lib/boot-profile.d.ts +0 -2
  167. package/dist/lib/boot-profile.js +0 -4
  168. package/dist/lib/brand.d.ts +0 -6
  169. package/dist/lib/brand.js +1 -1
  170. package/dist/lib/browser/arc-discovery.d.ts +4 -12
  171. package/dist/lib/browser/arc-discovery.js +1 -1
  172. package/dist/lib/browser/cdp.d.ts +1 -1
  173. package/dist/lib/browser/chrome.d.ts +2 -2
  174. package/dist/lib/browser/chrome.js +0 -4
  175. package/dist/lib/browser/chromium-discovery.d.ts +3 -2
  176. package/dist/lib/browser/drivers/arc.d.ts +3 -20
  177. package/dist/lib/browser/drivers/arc.js +2 -7
  178. package/dist/lib/browser/drivers/firefox.d.ts +2 -6
  179. package/dist/lib/browser/drivers/firefox.js +1 -1
  180. package/dist/lib/browser/drivers/local.d.ts +2 -1
  181. package/dist/lib/browser/drivers/ssh.d.ts +2 -3
  182. package/dist/lib/browser/drivers/ssh.js +0 -7
  183. package/dist/lib/browser/firefox-discovery.d.ts +4 -3
  184. package/dist/lib/browser/har.d.ts +8 -7
  185. package/dist/lib/browser/hygiene.d.ts +2 -3
  186. package/dist/lib/browser/hygiene.js +1 -1
  187. package/dist/lib/browser/ipc.d.ts +4 -3
  188. package/dist/lib/browser/ipc.js +1 -1
  189. package/dist/lib/browser/login-detection.d.ts +1 -8
  190. package/dist/lib/browser/registry.d.ts +2 -1
  191. package/dist/lib/browser/remote-control.d.ts +0 -7
  192. package/dist/lib/browser/remote-control.js +2 -2
  193. package/dist/lib/browser/resolve-target.d.ts +2 -6
  194. package/dist/lib/browser/resolve-target.js +3 -3
  195. package/dist/lib/browser/runtime-state.d.ts +59 -4
  196. package/dist/lib/browser/runtime-state.js +99 -18
  197. package/dist/lib/browser/service.d.ts +4 -4
  198. package/dist/lib/browser/service.js +21 -1
  199. package/dist/lib/browser/sessions-list.d.ts +0 -10
  200. package/dist/lib/browser/sessions-list.js +3 -3
  201. package/dist/lib/browser/stream.d.ts +2 -1
  202. package/dist/lib/browser/task-index.d.ts +4 -4
  203. package/dist/lib/browser/task-index.js +1 -1
  204. package/dist/lib/browser/types.d.ts +0 -20
  205. package/dist/lib/browser/types.js +1 -34
  206. package/dist/lib/browser/upload.d.ts +0 -27
  207. package/dist/lib/budget/ledger.d.ts +0 -2
  208. package/dist/lib/budget/ledger.js +1 -1
  209. package/dist/lib/budget/live-cloud.d.ts +2 -1
  210. package/dist/lib/budget/preflight.d.ts +3 -5
  211. package/dist/lib/budget/preflight.js +1 -1
  212. package/dist/lib/catchup.d.ts +2 -1
  213. package/dist/lib/channels/owner-forward.d.ts +5 -4
  214. package/dist/lib/channels/owner-sink.js +2 -2
  215. package/dist/lib/channels/providers/desktop.js +1 -1
  216. package/dist/lib/channels/providers/rush.d.ts +2 -1
  217. package/dist/lib/channels/registry.d.ts +1 -1
  218. package/dist/lib/channels/registry.js +1 -1
  219. package/dist/lib/channels/resolve.d.ts +3 -2
  220. package/dist/lib/channels/send.d.ts +5 -4
  221. package/dist/lib/cli-resources.d.ts +3 -9
  222. package/dist/lib/cli-resources.js +4 -2
  223. package/dist/lib/cloud/cursor.d.ts +1 -2
  224. package/dist/lib/cloud/cursor.js +1 -1
  225. package/dist/lib/cloud/dispatch.d.ts +2 -1
  226. package/dist/lib/cloud/dispatch.js +1 -1
  227. package/dist/lib/cloud/factory.d.ts +0 -2
  228. package/dist/lib/cloud/factory.js +1 -1
  229. package/dist/lib/cloud/rush.d.ts +3 -11
  230. package/dist/lib/cloud/rush.js +1 -1
  231. package/dist/lib/cloud/session-index.d.ts +2 -1
  232. package/dist/lib/cloud/types.d.ts +2 -1
  233. package/dist/lib/cloudflare/creds.d.ts +10 -0
  234. package/dist/lib/cloudflare/creds.js +46 -0
  235. package/dist/lib/cloudflare/provision.d.ts +35 -0
  236. package/dist/lib/cloudflare/provision.js +144 -0
  237. package/dist/lib/codex-policy.d.ts +2 -1
  238. package/dist/lib/commands.d.ts +7 -7
  239. package/dist/lib/commands.js +1 -1
  240. package/dist/lib/comms-render.d.ts +1 -1
  241. package/dist/lib/computer/context.d.ts +11 -3
  242. package/dist/lib/computer/context.js +2 -2
  243. package/dist/lib/computer/policy.d.ts +0 -12
  244. package/dist/lib/computer/policy.js +1 -1
  245. package/dist/lib/computer/sessions-list.d.ts +55 -0
  246. package/dist/lib/computer/sessions-list.js +168 -1
  247. package/dist/lib/computer-client.d.ts +3 -3
  248. package/dist/lib/computer-client.js +0 -1
  249. package/dist/lib/concurrency.d.ts +2 -1
  250. package/dist/lib/config-keys.d.ts +16 -3
  251. package/dist/lib/config-keys.js +47 -2
  252. package/dist/lib/convert.d.ts +0 -12
  253. package/dist/lib/convert.js +1 -12
  254. package/dist/lib/crabbox/cli.d.ts +6 -24
  255. package/dist/lib/crabbox/cli.js +2 -28
  256. package/dist/lib/crabbox/lease.d.ts +5 -6
  257. package/dist/lib/crabbox/lease.js +1 -1
  258. package/dist/lib/crabbox/progress.d.ts +2 -1
  259. package/dist/lib/crabbox/setup-copy.d.ts +2 -3
  260. package/dist/lib/crabbox/setup-copy.js +1 -1
  261. package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
  262. package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
  263. package/dist/lib/daemon/catchup-service.d.ts +2 -1
  264. package/dist/lib/daemon/daemon.d.ts +4 -4
  265. package/dist/lib/daemon/daemon.js +9 -2
  266. package/dist/lib/daemon/feed-stream-service.d.ts +23 -0
  267. package/dist/lib/daemon/feed-stream-service.js +40 -0
  268. package/dist/lib/daemon/harness-update-service.d.ts +2 -19
  269. package/dist/lib/daemon/harness-update-service.js +3 -3
  270. package/dist/lib/daemon/runner.d.ts +3 -3
  271. package/dist/lib/daemon/self-update-service.d.ts +1 -16
  272. package/dist/lib/daemon/self-update-service.js +6 -6
  273. package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
  274. package/dist/lib/daemon/supervisor.d.ts +3 -2
  275. package/dist/lib/daemon-services.d.ts +3 -2
  276. package/dist/lib/daemon-services.js +5 -0
  277. package/dist/lib/daemon-webhooks.d.ts +1 -1
  278. package/dist/lib/deeplink/register.d.ts +3 -13
  279. package/dist/lib/deeplink/register.js +3 -3
  280. package/dist/lib/deeplink/url.d.ts +3 -2
  281. package/dist/lib/device-config.d.ts +4 -15
  282. package/dist/lib/device-config.js +164 -8
  283. package/dist/lib/devices/connect.d.ts +51 -6
  284. package/dist/lib/devices/connect.js +169 -21
  285. package/dist/lib/devices/discovery-policy.d.ts +3 -2
  286. package/dist/lib/devices/doctor-findings.js +1 -1
  287. package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
  288. package/dist/lib/devices/fleet-divergence.d.ts +2 -1
  289. package/dist/lib/devices/fleet.d.ts +3 -4
  290. package/dist/lib/devices/fleet.js +1 -1
  291. package/dist/lib/devices/harness-inventory.d.ts +3 -2
  292. package/dist/lib/devices/health-report.d.ts +3 -2
  293. package/dist/lib/devices/health.d.ts +1 -8
  294. package/dist/lib/devices/health.js +1 -1
  295. package/dist/lib/devices/interactive-host.d.ts +0 -2
  296. package/dist/lib/devices/interactive-host.js +1 -1
  297. package/dist/lib/devices/known-hosts.d.ts +2 -20
  298. package/dist/lib/devices/known-hosts.js +2 -2
  299. package/dist/lib/devices/pool.d.ts +2 -1
  300. package/dist/lib/devices/resolve-target.d.ts +2 -2
  301. package/dist/lib/devices/rollout-verify.d.ts +3 -2
  302. package/dist/lib/devices/stats-cache.d.ts +3 -2
  303. package/dist/lib/devices/sync.d.ts +6 -5
  304. package/dist/lib/devices/worker-pick.d.ts +3 -12
  305. package/dist/lib/devices/worker-pick.js +1 -1
  306. package/dist/lib/diff-text.d.ts +2 -1
  307. package/dist/lib/doctor-diff.d.ts +2 -1
  308. package/dist/lib/drift-sync.d.ts +3 -2
  309. package/dist/lib/drift.d.ts +3 -3
  310. package/dist/lib/drift.js +1 -1
  311. package/dist/lib/event-families.d.ts +0 -6
  312. package/dist/lib/event-families.js +3 -3
  313. package/dist/lib/event-provenance.d.ts +2 -1
  314. package/dist/lib/events-ingest.d.ts +4 -3
  315. package/dist/lib/exec-account-home.d.ts +2 -4
  316. package/dist/lib/exec-account-home.js +1 -1
  317. package/dist/lib/exec-bounded.d.ts +3 -4
  318. package/dist/lib/exec-bounded.js +1 -1
  319. package/dist/lib/exec.d.ts +6 -18
  320. package/dist/lib/exec.js +1 -1
  321. package/dist/lib/factory/snapshot.d.ts +2 -2
  322. package/dist/lib/factory/snapshot.js +1 -1
  323. package/dist/lib/feed/activity-stream.d.ts +2 -5
  324. package/dist/lib/feed/activity-stream.js +2 -2
  325. package/dist/lib/feed/activity.d.ts +8 -33
  326. package/dist/lib/feed/activity.js +8 -8
  327. package/dist/lib/feed/answer.d.ts +3 -2
  328. package/dist/lib/feed/attention.js +5 -1
  329. package/dist/lib/feed/envelope.d.ts +79 -0
  330. package/dist/lib/feed/envelope.js +23 -0
  331. package/dist/lib/feed/events.d.ts +8 -47
  332. package/dist/lib/feed/events.js +9 -141
  333. package/dist/lib/feed/feed.d.ts +9 -42
  334. package/dist/lib/feed/feed.js +1 -60
  335. package/dist/lib/feed/hub-server.d.ts +86 -0
  336. package/dist/lib/feed/hub-server.js +334 -0
  337. package/dist/lib/feed/hub.d.ts +95 -0
  338. package/dist/lib/feed/hub.js +255 -0
  339. package/dist/lib/feed/pr-status.d.ts +0 -2
  340. package/dist/lib/feed/pr-status.js +1 -5
  341. package/dist/lib/feed/tool-activity.d.ts +108 -0
  342. package/dist/lib/feed/tool-activity.js +313 -0
  343. package/dist/lib/feed/tools.d.ts +198 -0
  344. package/dist/lib/feed/tools.js +265 -0
  345. package/dist/lib/feed/watch.d.ts +51 -52
  346. package/dist/lib/feed/watch.js +147 -17
  347. package/dist/lib/feed-broadcast.d.ts +5 -47
  348. package/dist/lib/feed-broadcast.js +9 -9
  349. package/dist/lib/feed-outcome.d.ts +3 -6
  350. package/dist/lib/feed-outcome.js +2 -2
  351. package/dist/lib/feed-policy.d.ts +5 -6
  352. package/dist/lib/feed-policy.js +2 -2
  353. package/dist/lib/feed-post.d.ts +3 -4
  354. package/dist/lib/feed-post.js +1 -1
  355. package/dist/lib/feed-ranking.d.ts +2 -2
  356. package/dist/lib/feed-ranking.js +1 -1
  357. package/dist/lib/fleet/apply.d.ts +5 -6
  358. package/dist/lib/fleet/apply.js +4 -4
  359. package/dist/lib/fleet/manifest.d.ts +2 -1
  360. package/dist/lib/fleet/remote-login.d.ts +18 -36
  361. package/dist/lib/fleet/remote-login.js +20 -19
  362. package/dist/lib/fleet/types.d.ts +0 -8
  363. package/dist/lib/fleet-cache.d.ts +1 -18
  364. package/dist/lib/fleet-cache.js +0 -5
  365. package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
  366. package/dist/lib/fleet-shared-repo-sync.js +1 -1
  367. package/dist/lib/fleet-shared-state.d.ts +3 -2
  368. package/dist/lib/format.d.ts +3 -2
  369. package/dist/lib/format.js +1 -1
  370. package/dist/lib/friction-heuristics.d.ts +2 -1
  371. package/dist/lib/fs-walk.d.ts +2 -1
  372. package/dist/lib/fuzzy.d.ts +2 -1
  373. package/dist/lib/gemini-settings.d.ts +0 -1
  374. package/dist/lib/gemini-settings.js +1 -1
  375. package/dist/lib/git.d.ts +7 -81
  376. package/dist/lib/git.js +2 -199
  377. package/dist/lib/github/gh-overload.d.ts +0 -4
  378. package/dist/lib/github/gh-overload.js +2 -2
  379. package/dist/lib/github/project-prs.d.ts +118 -0
  380. package/dist/lib/github/project-prs.js +173 -0
  381. package/dist/lib/github/rest.d.ts +2 -1
  382. package/dist/lib/harness/exec-config-version.d.ts +2 -1
  383. package/dist/lib/harness-auth-capabilities.d.ts +5 -4
  384. package/dist/lib/harness-connection-test.d.ts +2 -1
  385. package/dist/lib/heal.d.ts +3 -20
  386. package/dist/lib/heal.js +2 -39
  387. package/dist/lib/help.d.ts +3 -2
  388. package/dist/lib/helper-download.d.ts +0 -12
  389. package/dist/lib/helper-download.js +2 -2
  390. package/dist/lib/helper-versions.d.ts +2 -1
  391. package/dist/lib/helper-versions.js +1 -1
  392. package/dist/lib/hooks/install.d.ts +8 -49
  393. package/dist/lib/hooks/install.js +2 -96
  394. package/dist/lib/hooks/match.d.ts +2 -1
  395. package/dist/lib/hosts/credential-transport.d.ts +0 -2
  396. package/dist/lib/hosts/credential-transport.js +1 -1
  397. package/dist/lib/hosts/dispatch.d.ts +2 -24
  398. package/dist/lib/hosts/dispatch.js +2 -2
  399. package/dist/lib/hosts/logs.d.ts +2 -1
  400. package/dist/lib/hosts/passthrough.d.ts +1 -1
  401. package/dist/lib/hosts/passthrough.js +0 -1
  402. package/dist/lib/hosts/progress.d.ts +0 -5
  403. package/dist/lib/hosts/progress.js +1 -1
  404. package/dist/lib/hosts/ready.d.ts +3 -4
  405. package/dist/lib/hosts/ready.js +0 -8
  406. package/dist/lib/hosts/reconcile.d.ts +2 -8
  407. package/dist/lib/hosts/reconcile.js +1 -1
  408. package/dist/lib/hosts/reconnect.d.ts +4 -11
  409. package/dist/lib/hosts/reconnect.js +2 -2
  410. package/dist/lib/hosts/registry.d.ts +1 -1
  411. package/dist/lib/hosts/remote-cmd.d.ts +55 -4
  412. package/dist/lib/hosts/remote-cmd.js +125 -8
  413. package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +2 -0
  414. package/dist/lib/hosts/remote-cmd.test-fixture.js +22 -0
  415. package/dist/lib/hosts/session-index.d.ts +3 -2
  416. package/dist/lib/hosts/ssh-config.d.ts +2 -3
  417. package/dist/lib/hosts/ssh-config.js +0 -10
  418. package/dist/lib/humans.d.ts +0 -2
  419. package/dist/lib/humans.js +2 -2
  420. package/dist/lib/import.d.ts +4 -3
  421. package/dist/lib/installations/installation-lock.d.ts +0 -2
  422. package/dist/lib/installations/installation-lock.js +2 -2
  423. package/dist/lib/installations/launch-gate.d.ts +0 -9
  424. package/dist/lib/installations/launch-gate.js +1 -1
  425. package/dist/lib/installations/migrate.d.ts +0 -11
  426. package/dist/lib/installations/migrate.js +1 -1
  427. package/dist/lib/installations/shims.d.ts +1 -1
  428. package/dist/lib/installations/shims.js +2 -2
  429. package/dist/lib/installations/update-runtime.js +1 -1
  430. package/dist/lib/linear-cache.d.ts +2 -1
  431. package/dist/lib/linux-userns.d.ts +2 -3
  432. package/dist/lib/linux-userns.js +0 -4
  433. package/dist/lib/loop.d.ts +2 -1
  434. package/dist/lib/mailbox-gc.d.ts +2 -1
  435. package/dist/lib/mailbox-target.d.ts +2 -1
  436. package/dist/lib/mailbox.d.ts +0 -6
  437. package/dist/lib/mailbox.js +1 -1
  438. package/dist/lib/manifest.d.ts +0 -14
  439. package/dist/lib/manifest.js +2 -2
  440. package/dist/lib/mcp-registry.d.ts +2 -1
  441. package/dist/lib/mcp.js +17 -11
  442. package/dist/lib/memory.d.ts +2 -13
  443. package/dist/lib/memory.js +4 -4
  444. package/dist/lib/menubar/download-menubar.d.ts +0 -2
  445. package/dist/lib/menubar/download-menubar.js +1 -5
  446. package/dist/lib/menubar/install-menubar.d.ts +3 -14
  447. package/dist/lib/menubar/install-menubar.js +3 -3
  448. package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
  449. package/dist/lib/menubar/migrate-prefs.js +168 -0
  450. package/dist/lib/menubar/resolve-version.d.ts +1 -9
  451. package/dist/lib/menubar/resolve-version.js +4 -4
  452. package/dist/lib/menubar/snapshot.d.ts +24 -2
  453. package/dist/lib/menubar/snapshot.js +26 -0
  454. package/dist/lib/model-tier-overrides.d.ts +3 -2
  455. package/dist/lib/monitors/config.d.ts +0 -2
  456. package/dist/lib/monitors/config.js +0 -4
  457. package/dist/lib/monitors/engine.d.ts +1 -1
  458. package/dist/lib/monitors/remote.d.ts +3 -2
  459. package/dist/lib/monitors/sources/webhook.d.ts +2 -15
  460. package/dist/lib/monitors/sources/webhook.js +1 -38
  461. package/dist/lib/monitors/state.d.ts +4 -7
  462. package/dist/lib/monitors/state.js +2 -2
  463. package/dist/lib/notify.d.ts +1 -1
  464. package/dist/lib/notify.js +1 -1
  465. package/dist/lib/onepassword.d.ts +5 -14
  466. package/dist/lib/onepassword.js +0 -64
  467. package/dist/lib/open-url.d.ts +3 -2
  468. package/dist/lib/openclaw-keychain.d.ts +4 -17
  469. package/dist/lib/openclaw-keychain.js +3 -33
  470. package/dist/lib/operator.d.ts +2 -2
  471. package/dist/lib/operator.js +1 -1
  472. package/dist/lib/output/git-output.d.ts +4 -14
  473. package/dist/lib/output/git-output.js +1 -1
  474. package/dist/lib/owner-message.d.ts +3 -29
  475. package/dist/lib/owner-message.js +3 -3
  476. package/dist/lib/packages/output-home.d.ts +2 -4
  477. package/dist/lib/packages/output-home.js +2 -2
  478. package/dist/lib/perf/db.d.ts +0 -2
  479. package/dist/lib/perf/db.js +2 -7
  480. package/dist/lib/permissions-registry.d.ts +2 -3
  481. package/dist/lib/permissions-registry.js +0 -4
  482. package/dist/lib/permissions.d.ts +6 -16
  483. package/dist/lib/permissions.js +2 -15
  484. package/dist/lib/picker.d.ts +6 -5
  485. package/dist/lib/placement.d.ts +3 -6
  486. package/dist/lib/placement.js +0 -17
  487. package/dist/lib/platform/posixpath.d.ts +2 -1
  488. package/dist/lib/platform/winpath.d.ts +2 -1
  489. package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
  490. package/dist/lib/plugins/plugin-marketplace.js +1 -1
  491. package/dist/lib/pr-land-detach.d.ts +2 -1
  492. package/dist/lib/probe.d.ts +4 -1
  493. package/dist/lib/probe.js +5 -2
  494. package/dist/lib/profiles-presets.d.ts +2 -1
  495. package/dist/lib/profiles.d.ts +3 -9
  496. package/dist/lib/profiles.js +1 -9
  497. package/dist/lib/project-doctor.d.ts +2 -1
  498. package/dist/lib/project-launch.d.ts +2 -2
  499. package/dist/lib/project-probe.d.ts +4 -3
  500. package/dist/lib/project-pull.d.ts +2 -1
  501. package/dist/lib/project-resources.d.ts +2 -2
  502. package/dist/lib/project-resources.js +1 -1
  503. package/dist/lib/project-root.d.ts +2 -6
  504. package/dist/lib/project-root.js +1 -1
  505. package/dist/lib/project-schedule.d.ts +2 -1
  506. package/dist/lib/project-status.d.ts +2 -16
  507. package/dist/lib/project-status.js +3 -3
  508. package/dist/lib/pwsh.d.ts +33 -0
  509. package/dist/lib/pwsh.js +56 -0
  510. package/dist/lib/reconcile-and-repair.d.ts +5 -4
  511. package/dist/lib/redact.d.ts +15 -1
  512. package/dist/lib/redact.js +105 -3
  513. package/dist/lib/refresh-coordinator.d.ts +2 -1
  514. package/dist/lib/refresh.d.ts +9 -4
  515. package/dist/lib/refresh.js +92 -72
  516. package/dist/lib/remote-agents-json.d.ts +3 -2
  517. package/dist/lib/reserved-stores.d.ts +0 -2
  518. package/dist/lib/reserved-stores.js +3 -5
  519. package/dist/lib/resource-content-diff.d.ts +0 -2
  520. package/dist/lib/resource-content-diff.js +1 -1
  521. package/dist/lib/resource-patterns.d.ts +2 -1
  522. package/dist/lib/resource-profiles.d.ts +2 -8
  523. package/dist/lib/resource-profiles.js +3 -27
  524. package/dist/lib/resources/workflows.d.ts +1 -1
  525. package/dist/lib/resources.d.ts +4 -9
  526. package/dist/lib/resources.js +1 -1
  527. package/dist/lib/routine-context.d.ts +2 -5
  528. package/dist/lib/routine-context.js +2 -2
  529. package/dist/lib/routine-notify-owner.d.ts +8 -7
  530. package/dist/lib/routine-notify-owner.js +5 -5
  531. package/dist/lib/routine-process-cleanup.d.ts +2 -1
  532. package/dist/lib/routine-readiness.d.ts +0 -2
  533. package/dist/lib/routine-readiness.js +0 -7
  534. package/dist/lib/routines-project.d.ts +3 -4
  535. package/dist/lib/routines-project.js +1 -1
  536. package/dist/lib/rules/compile.d.ts +3 -25
  537. package/dist/lib/rules/compile.js +1 -1
  538. package/dist/lib/rules/compose.d.ts +3 -9
  539. package/dist/lib/rules/rules.d.ts +4 -15
  540. package/dist/lib/rules/rules.js +1 -64
  541. package/dist/lib/run-defaults.d.ts +1 -1
  542. package/dist/lib/run-notify.d.ts +2 -1
  543. package/dist/lib/run-trace-sync.d.ts +1 -1
  544. package/dist/lib/run-trace-sync.js +1 -1
  545. package/dist/lib/scheduler.d.ts +2 -1
  546. package/dist/lib/scheduling/routines.d.ts +9 -21
  547. package/dist/lib/scheduling/routines.js +3 -46
  548. package/dist/lib/secrets-cli.d.ts +11 -0
  549. package/dist/lib/secrets-cli.js +30 -0
  550. package/dist/lib/secrets-client.d.ts +0 -17
  551. package/dist/lib/secrets-client.js +7 -28
  552. package/dist/lib/secrets-policy.d.ts +12 -17
  553. package/dist/lib/secrets-policy.js +5 -5
  554. package/dist/lib/secrets-types.d.ts +3 -2
  555. package/dist/lib/secrets-types.js +2 -1
  556. package/dist/lib/self-heal/checks/install-staging.js +1 -1
  557. package/dist/lib/self-heal/registry.d.ts +3 -2
  558. package/dist/lib/self-heal/types.d.ts +1 -1
  559. package/dist/lib/self-heal/types.js +1 -1
  560. package/dist/lib/self-update.d.ts +5 -5
  561. package/dist/lib/self-update.js +4 -4
  562. package/dist/lib/session/actor-sidecar.d.ts +3 -2
  563. package/dist/lib/session/artifacts.d.ts +0 -2
  564. package/dist/lib/session/artifacts.js +1 -1
  565. package/dist/lib/session/bash-command.d.ts +2 -7
  566. package/dist/lib/session/bundle.d.ts +4 -6
  567. package/dist/lib/session/bundle.js +1 -5
  568. package/dist/lib/session/cloud.d.ts +0 -4
  569. package/dist/lib/session/cloud.js +2 -15
  570. package/dist/lib/session/detached.d.ts +9 -1
  571. package/dist/lib/session/detached.js +31 -2
  572. package/dist/lib/session/digest.d.ts +2 -2
  573. package/dist/lib/session/digest.js +1 -1
  574. package/dist/lib/session/fork.d.ts +3 -2
  575. package/dist/lib/session/highlights.d.ts +6 -5
  576. package/dist/lib/session/hook-sessions.d.ts +2 -1
  577. package/dist/lib/session/host-link.d.ts +2 -1
  578. package/dist/lib/session/inject.d.ts +1 -1
  579. package/dist/lib/session/inject.js +1 -1
  580. package/dist/lib/session/insights.d.ts +3 -15
  581. package/dist/lib/session/insights.js +2 -2
  582. package/dist/lib/session/local-tmux-attach.d.ts +2 -18
  583. package/dist/lib/session/local-tmux-attach.js +1 -1
  584. package/dist/lib/session/migrations.d.ts +0 -1
  585. package/dist/lib/session/migrations.js +1 -1
  586. package/dist/lib/session/mirror.d.ts +5 -8
  587. package/dist/lib/session/mirror.js +2 -2
  588. package/dist/lib/session/parse.d.ts +1 -32
  589. package/dist/lib/session/parse.js +4 -4
  590. package/dist/lib/session/presence.d.ts +2 -1
  591. package/dist/lib/session/prompt.d.ts +3 -2
  592. package/dist/lib/session/prompt.js +38 -1
  593. package/dist/lib/session/recovery.d.ts +3 -2
  594. package/dist/lib/session/remote/peer-stream.d.ts +26 -7
  595. package/dist/lib/session/remote/peer-stream.js +35 -8
  596. package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
  597. package/dist/lib/session/remote/remote-list.d.ts +5 -5
  598. package/dist/lib/session/remote/remote.d.ts +4 -3
  599. package/dist/lib/session/remote/watch.d.ts +2 -7
  600. package/dist/lib/session/remote/watch.js +3 -3
  601. package/dist/lib/session/remote-active.d.ts +2 -1
  602. package/dist/lib/session/render.d.ts +2 -2
  603. package/dist/lib/session/render.js +1 -1
  604. package/dist/lib/session/resume-owner.d.ts +1 -1
  605. package/dist/lib/session/resume-owner.js +1 -1
  606. package/dist/lib/session/run-names.d.ts +2 -1
  607. package/dist/lib/session/session-cache.d.ts +7 -26
  608. package/dist/lib/session/session-cache.js +2 -8
  609. package/dist/lib/session/share-html.d.ts +1 -21
  610. package/dist/lib/session/share-html.js +1 -1
  611. package/dist/lib/session/shell-programs.d.ts +2 -1
  612. package/dist/lib/session/state.d.ts +41 -8
  613. package/dist/lib/session/state.js +112 -11
  614. package/dist/lib/session/stream-render.d.ts +2 -1
  615. package/dist/lib/session/sync/agents.d.ts +0 -4
  616. package/dist/lib/session/sync/agents.js +0 -0
  617. package/dist/lib/session/sync/backend.d.ts +8 -8
  618. package/dist/lib/session/sync/backend.js +3 -3
  619. package/dist/lib/session/sync/managed-config.d.ts +0 -8
  620. package/dist/lib/session/sync/managed-key.d.ts +0 -2
  621. package/dist/lib/session/sync/managed-key.js +1 -1
  622. package/dist/lib/session/sync/provision.d.ts +1 -1
  623. package/dist/lib/session/sync/provision.js +2 -2
  624. package/dist/lib/session/sync/r2.d.ts +4 -1
  625. package/dist/lib/session/sync/r2.js +4 -7
  626. package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
  627. package/dist/lib/session/tail.d.ts +2 -1
  628. package/dist/lib/session/team-filter.d.ts +1 -1
  629. package/dist/lib/session/throughput.d.ts +2 -3
  630. package/dist/lib/session/throughput.js +1 -1
  631. package/dist/lib/session/timeline-pass.d.ts +3 -42
  632. package/dist/lib/session/timeline-pass.js +4 -4
  633. package/dist/lib/session/timeline.d.ts +3 -13
  634. package/dist/lib/session/timeline.js +3 -3
  635. package/dist/lib/session/tool-calls.d.ts +2 -2
  636. package/dist/lib/session/tool-calls.js +1 -1
  637. package/dist/lib/session/tool-index.d.ts +0 -8
  638. package/dist/lib/session/tool-index.js +2 -2
  639. package/dist/lib/session/tool-store.d.ts +2 -1
  640. package/dist/lib/session/trajectory-compare.d.ts +2 -1
  641. package/dist/lib/session/trajectory-lineage.d.ts +2 -1
  642. package/dist/lib/session/trajectory-text.d.ts +3 -2
  643. package/dist/lib/session/trajectory.d.ts +2 -1
  644. package/dist/lib/session/viewing-in.d.ts +2 -1
  645. package/dist/lib/sessions-client.js +0 -3
  646. package/dist/lib/settings-manifest.d.ts +2 -1
  647. package/dist/lib/setup-tool-install.d.ts +3 -0
  648. package/dist/lib/setup-tool-install.js +26 -0
  649. package/dist/lib/setup-tool-status.d.ts +22 -0
  650. package/dist/lib/setup-tool-status.js +215 -0
  651. package/dist/lib/share-runtime.d.ts +11 -0
  652. package/dist/lib/share-runtime.js +63 -0
  653. package/dist/lib/shim-heal.d.ts +1 -5
  654. package/dist/lib/shim-heal.js +0 -6
  655. package/dist/lib/smart-launch.d.ts +5 -10
  656. package/dist/lib/smart-launch.js +4 -12
  657. package/dist/lib/snapshot.d.ts +3 -2
  658. package/dist/lib/ssh-exec.d.ts +49 -4
  659. package/dist/lib/ssh-exec.js +119 -0
  660. package/dist/lib/ssh-tunnel.d.ts +3 -2
  661. package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
  662. package/dist/lib/staleness/checkers/permissions.js +1 -1
  663. package/dist/lib/staleness/fingerprint.d.ts +0 -7
  664. package/dist/lib/staleness/fingerprint.js +1 -1
  665. package/dist/lib/staleness/prune.d.ts +3 -2
  666. package/dist/lib/staleness/registry.d.ts +1 -1
  667. package/dist/lib/staleness/writers/sources.d.ts +0 -8
  668. package/dist/lib/staleness/writers/sources.js +1 -1
  669. package/dist/lib/startup/command-registry.d.ts +6 -4
  670. package/dist/lib/startup/command-registry.js +11 -8
  671. package/dist/lib/state.d.ts +1 -3
  672. package/dist/lib/state.js +3 -6
  673. package/dist/lib/storage/selection.d.ts +2 -2
  674. package/dist/lib/storage/selection.js +2 -2
  675. package/dist/lib/subagents-registry.d.ts +4 -3
  676. package/dist/lib/subagents.d.ts +2 -1
  677. package/dist/lib/subagents.js +3 -2
  678. package/dist/lib/summarizer/pass.d.ts +3 -6
  679. package/dist/lib/summarizer/pass.js +2 -2
  680. package/dist/lib/summarizer/summarize.d.ts +4 -3
  681. package/dist/lib/sync-passphrase.d.ts +3 -2
  682. package/dist/lib/sync-status.d.ts +3 -16
  683. package/dist/lib/sync-status.js +2 -2
  684. package/dist/lib/sync-umbrella.d.ts +9 -3
  685. package/dist/lib/sync-umbrella.js +18 -10
  686. package/dist/lib/system-run-sync.d.ts +2 -1
  687. package/dist/lib/teams/agents.d.ts +2 -4
  688. package/dist/lib/teams/agents.js +1 -1
  689. package/dist/lib/teams/forEach.d.ts +3 -2
  690. package/dist/lib/teams/pr-watch.d.ts +4 -11
  691. package/dist/lib/teams/pr-watch.js +4 -4
  692. package/dist/lib/teams/registry.d.ts +2 -3
  693. package/dist/lib/teams/registry.js +1 -1
  694. package/dist/lib/teams/remoteWorktree.d.ts +0 -16
  695. package/dist/lib/teams/remoteWorktree.js +3 -3
  696. package/dist/lib/teams/scheduler.d.ts +6 -5
  697. package/dist/lib/teams/scheduler.js +1 -1
  698. package/dist/lib/teams/supervisor.d.ts +4 -3
  699. package/dist/lib/teams/worktree.d.ts +0 -9
  700. package/dist/lib/teams/worktree.js +0 -32
  701. package/dist/lib/term-client.d.ts +44 -0
  702. package/dist/lib/term-client.js +117 -0
  703. package/dist/lib/terminal/inject.d.ts +3 -16
  704. package/dist/lib/terminal/inject.js +1 -29
  705. package/dist/lib/terminal/resolve.d.ts +3 -9
  706. package/dist/lib/terminal/resolve.js +3 -7
  707. package/dist/lib/tmux/binary.d.ts +2 -1
  708. package/dist/lib/tmux/orphan-reap.d.ts +6 -7
  709. package/dist/lib/tmux/orphan-reap.js +1 -1
  710. package/dist/lib/tmux/session.d.ts +4 -3
  711. package/dist/lib/traces/backend.d.ts +1 -2
  712. package/dist/lib/traces/backend.js +1 -2
  713. package/dist/lib/traces/classify.d.ts +3 -2
  714. package/dist/lib/traces/config.d.ts +0 -8
  715. package/dist/lib/traces/insights.d.ts +2 -1
  716. package/dist/lib/traces/phenotype.d.ts +3 -3
  717. package/dist/lib/traces/provision.d.ts +2 -4
  718. package/dist/lib/traces/provision.js +3 -3
  719. package/dist/lib/traces/schema2-build.d.ts +1 -1
  720. package/dist/lib/traces/schema2-danger.d.ts +2 -1
  721. package/dist/lib/traces/schema2.d.ts +5 -4
  722. package/dist/lib/traces/segments.d.ts +4 -20
  723. package/dist/lib/traces/segments.js +3 -3
  724. package/dist/lib/traces/sync.d.ts +2 -3
  725. package/dist/lib/traces/sync.js +1 -1
  726. package/dist/lib/triggers/handlers.d.ts +4 -13
  727. package/dist/lib/triggers/handlers.js +1 -1
  728. package/dist/lib/triggers/webhook.d.ts +5 -27
  729. package/dist/lib/triggers/webhook.js +4 -4
  730. package/dist/lib/types.d.ts +11 -9
  731. package/dist/lib/usage-refresh.d.ts +4 -10
  732. package/dist/lib/usage-refresh.js +3 -8
  733. package/dist/lib/verbs.d.ts +2 -1
  734. package/dist/lib/version-duplicates.d.ts +2 -3
  735. package/dist/lib/version-duplicates.js +3 -33
  736. package/dist/lib/version.d.ts +2 -1
  737. package/dist/lib/warn-unpushed.d.ts +2 -1
  738. package/dist/lib/watchdog/history.d.ts +3 -2
  739. package/dist/lib/watchdog/log.d.ts +0 -6
  740. package/dist/lib/watchdog/log.js +1 -1
  741. package/dist/lib/watchdog/rotate.d.ts +2 -26
  742. package/dist/lib/watchdog/rotate.js +4 -12
  743. package/dist/lib/watchdog/runner.d.ts +0 -7
  744. package/dist/lib/watchdog/runner.js +4 -4
  745. package/dist/lib/watchdog/service.d.ts +2 -2
  746. package/dist/lib/watchdog/service.js +1 -1
  747. package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
  748. package/dist/lib/watchdog/watchdog.d.ts +2 -1
  749. package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
  750. package/dist/lib/workflows-registry.d.ts +3 -2
  751. package/dist/lib/workflows.d.ts +4 -7
  752. package/dist/lib/workflows.js +1 -1
  753. package/dist/lib/worktree/held.d.ts +4 -28
  754. package/dist/lib/worktree/held.js +3 -3
  755. package/package.json +3 -5
  756. package/scripts/postinstall.js +5 -4
  757. package/dist/commands/artifacts-setup.d.ts +0 -53
  758. package/dist/commands/artifacts-setup.js +0 -161
  759. package/dist/commands/artifacts.d.ts +0 -18
  760. package/dist/commands/artifacts.js +0 -58
  761. package/dist/commands/attach.d.ts +0 -12
  762. package/dist/commands/attach.js +0 -86
  763. package/dist/commands/auth-mint.d.ts +0 -12
  764. package/dist/commands/auth-mint.js +0 -108
  765. package/dist/commands/pty.d.ts +0 -20
  766. package/dist/commands/pty.js +0 -404
  767. package/dist/commands/reconnect.d.ts +0 -46
  768. package/dist/commands/reconnect.js +0 -115
  769. package/dist/commands/share.d.ts +0 -293
  770. package/dist/commands/share.js +0 -1424
  771. package/dist/lib/config-machine-keys.d.ts +0 -14
  772. package/dist/lib/config-machine-keys.js +0 -21
  773. package/dist/lib/pty-client.d.ts +0 -49
  774. package/dist/lib/pty-client.js +0 -315
  775. package/dist/lib/pty-server.d.ts +0 -59
  776. package/dist/lib/pty-server.js +0 -653
  777. package/dist/lib/share/analytics.d.ts +0 -13
  778. package/dist/lib/share/analytics.js +0 -45
  779. package/dist/lib/share/backend.d.ts +0 -120
  780. package/dist/lib/share/backend.js +0 -176
  781. package/dist/lib/share/capture.d.ts +0 -31
  782. package/dist/lib/share/capture.js +0 -174
  783. package/dist/lib/share/config.d.ts +0 -72
  784. package/dist/lib/share/config.js +0 -211
  785. package/dist/lib/share/delete.d.ts +0 -122
  786. package/dist/lib/share/delete.js +0 -173
  787. package/dist/lib/share/html.d.ts +0 -22
  788. package/dist/lib/share/html.js +0 -88
  789. package/dist/lib/share/http-error.d.ts +0 -52
  790. package/dist/lib/share/http-error.js +0 -65
  791. package/dist/lib/share/og.d.ts +0 -25
  792. package/dist/lib/share/og.js +0 -84
  793. package/dist/lib/share/provision.d.ts +0 -127
  794. package/dist/lib/share/provision.js +0 -285
  795. package/dist/lib/share/publish.d.ts +0 -388
  796. package/dist/lib/share/publish.js +0 -818
  797. package/dist/lib/share/worker-template.d.ts +0 -27
  798. package/dist/lib/share/worker-template.js +0 -2424
  799. package/dist/lib/storage/index.d.ts +0 -14
  800. package/dist/lib/storage/index.js +0 -14
  801. package/dist/lib/storage/visibility.d.ts +0 -82
  802. package/dist/lib/storage/visibility.js +0 -99
@@ -45,7 +45,7 @@ export interface CrabboxBox {
45
45
  /** Idle-timeout window in seconds, or null. */
46
46
  idleTimeoutSecs: number | null;
47
47
  }
48
- export interface CrabboxOptions {
48
+ interface CrabboxOptions {
49
49
  /**
50
50
  * Name of a secrets bundle whose env (e.g. `HCLOUD_TOKEN`) crabbox needs to
51
51
  * reach its cloud provider. Resolved via agents-cli's own keychain-backed
@@ -63,21 +63,8 @@ export interface CrabboxOptions {
63
63
  }
64
64
  /** Locate the crabbox binary, or throw an actionable error. */
65
65
  export declare function findCrabbox(): string;
66
- /**
67
- * Env keys that mark a secrets bundle as usable for `--lease` — the provider
68
- * tokens crabbox reads to reach a cloud API. Matching a bundle needs only its
69
- * declared key NAMES; only the matched key's VALUE is ever injected (see
70
- * `crabboxEnv`), so an auto-detected bundle can't leak its other secrets.
71
- */
72
- export declare const LEASE_PROVIDER_TOKEN_KEYS: string[];
73
66
  /** The first bundle that declares a provider token key, or undefined. Pure over `bundles`. */
74
67
  export declare function pickLeaseBundleFromList(bundles: SecretsBundle[]): string | undefined;
75
- /**
76
- * Env keys a bundle may use for a Tailscale auth key. crabbox reads
77
- * `CRABBOX_TAILSCALE_AUTH_KEY` to join a leased box to the tailnet; we accept the
78
- * common alternate names too and rename to that canonical key on injection.
79
- */
80
- export declare const TAILSCALE_AUTH_KEY_NAMES: string[];
81
68
  /** The first bundle + key that declares a Tailscale auth key, or undefined. Pure over `bundles`. */
82
69
  export declare function pickTailscaleBundleFromList(bundles: SecretsBundle[]): {
83
70
  name: string;
@@ -86,7 +73,7 @@ export declare function pickTailscaleBundleFromList(bundles: SecretsBundle[]): {
86
73
  /** Test seam: drop every crabboxEnv secrets memo so each test resolves fresh. */
87
74
  export declare function resetCrabboxSecretsMemosForTest(): void;
88
75
  /** A resolved lease bundle: its name, plus (auto-detect only) the exact keys to inject. */
89
- export interface ResolvedLeaseBundle {
76
+ interface ResolvedLeaseBundle {
90
77
  name: string;
91
78
  /** When set (auto-detect), inject ONLY these keys — not the whole bundle. */
92
79
  keys?: string[];
@@ -122,7 +109,7 @@ export declare function crabboxFind(slug: string, opts?: CrabboxOptions): Crabbo
122
109
  * (mirrors scripts/sandbox.sh's `box_ready`).
123
110
  */
124
111
  export declare function crabboxStatusReady(slug: string, opts?: CrabboxOptions): boolean;
125
- export interface PoolMatchOptions {
112
+ interface PoolMatchOptions {
126
113
  /**
127
114
  * Lease pool label (shared default, or `.crabbox.yaml leaseProfile:` opt-in;
128
115
  * see config.ts). Both sides normalize an unset profile to
@@ -149,7 +136,7 @@ export interface PoolMatchOptions {
149
136
  * run may be mid-boot on it, and crabbox's idle timeout reaps genuine duds.
150
137
  */
151
138
  export declare function poolReusableBoxes(boxes: CrabboxBox[], opts?: PoolMatchOptions): CrabboxBox[];
152
- export interface WarmupOptions extends CrabboxOptions {
139
+ interface WarmupOptions extends CrabboxOptions {
153
140
  class?: string;
154
141
  profile?: string;
155
142
  /** Provision web code-server capability on the box. */
@@ -181,7 +168,7 @@ export declare function crabboxWaitReady(slug: string, opts?: CrabboxOptions & {
181
168
  intervalMs?: number;
182
169
  sleep?: (ms: number) => Promise<void>;
183
170
  }): Promise<CrabboxBox>;
184
- export interface CrabboxRunOptions extends CrabboxOptions {
171
+ interface CrabboxRunOptions extends CrabboxOptions {
185
172
  /** Called with each chunk of combined stdout/stderr as it streams. */
186
173
  onData?: (chunk: string) => void;
187
174
  /** Force a full remote resync before running. */
@@ -189,12 +176,6 @@ export interface CrabboxRunOptions extends CrabboxOptions {
189
176
  /** Refresh an existing lease with this idle window before running. */
190
177
  renewIdleTimeoutSecs?: number;
191
178
  }
192
- /**
193
- * Run `remoteCmd` on the leased box via `crabbox run` (crabbox syncs the dirty
194
- * checkout and owns the SSH). Streams combined output; resolves with the remote
195
- * exit code (or null if crabbox itself failed to dispatch).
196
- */
197
- export declare function crabboxRun(slug: string, remoteCmd: string, opts?: CrabboxRunOptions): Promise<number | null>;
198
179
  /**
199
180
  * Upload `script` to the box via `crabbox run --script-stdin` and run it.
200
181
  *
@@ -251,3 +232,4 @@ export declare function reapOrphans(opts?: CrabboxOptions & {
251
232
  candidates: CrabboxBox[];
252
233
  reaped: string[];
253
234
  };
235
+ export {};
@@ -29,7 +29,7 @@ export function findCrabbox() {
29
29
  * declared key NAMES; only the matched key's VALUE is ever injected (see
30
30
  * `crabboxEnv`), so an auto-detected bundle can't leak its other secrets.
31
31
  */
32
- export const LEASE_PROVIDER_TOKEN_KEYS = ['HCLOUD_TOKEN', 'AWS_ACCESS_KEY_ID', 'DIGITALOCEAN_TOKEN', 'DO_TOKEN'];
32
+ const LEASE_PROVIDER_TOKEN_KEYS = ['HCLOUD_TOKEN', 'AWS_ACCESS_KEY_ID', 'DIGITALOCEAN_TOKEN', 'DO_TOKEN'];
33
33
  /** The first bundle that declares a provider token key, or undefined. Pure over `bundles`. */
34
34
  export function pickLeaseBundleFromList(bundles) {
35
35
  for (const b of bundles) {
@@ -43,7 +43,7 @@ export function pickLeaseBundleFromList(bundles) {
43
43
  * `CRABBOX_TAILSCALE_AUTH_KEY` to join a leased box to the tailnet; we accept the
44
44
  * common alternate names too and rename to that canonical key on injection.
45
45
  */
46
- export const TAILSCALE_AUTH_KEY_NAMES = ['CRABBOX_TAILSCALE_AUTH_KEY', 'TAILSCALE_AUTH_KEY', 'TS_AUTHKEY'];
46
+ const TAILSCALE_AUTH_KEY_NAMES = ['CRABBOX_TAILSCALE_AUTH_KEY', 'TAILSCALE_AUTH_KEY', 'TS_AUTHKEY'];
47
47
  /** The first bundle + key that declares a Tailscale auth key, or undefined. Pure over `bundles`. */
48
48
  export function pickTailscaleBundleFromList(bundles) {
49
49
  for (const b of bundles) {
@@ -447,32 +447,6 @@ export async function crabboxWaitReady(slug, opts = {}) {
447
447
  }
448
448
  throw new Error(`crabbox box "${slug}" did not become ready within ${Math.round(timeoutMs / 1000)}s (state: ${last?.state ?? 'gone'}).`);
449
449
  }
450
- /**
451
- * Run `remoteCmd` on the leased box via `crabbox run` (crabbox syncs the dirty
452
- * checkout and owns the SSH). Streams combined output; resolves with the remote
453
- * exit code (or null if crabbox itself failed to dispatch).
454
- */
455
- export function crabboxRun(slug, remoteCmd, opts = {}) {
456
- findCrabbox();
457
- const args = ['run', '--id', slug, '--reclaim'];
458
- if (opts.fullResync)
459
- args.push('--full-resync');
460
- args.push('--', 'bash', '-lc', remoteCmd);
461
- return new Promise((resolve) => {
462
- const proc = spawn('crabbox', args, { env: crabboxEnv(opts), stdio: ['ignore', 'pipe', 'pipe'] });
463
- const pump = (chunk) => {
464
- const s = chunk.toString('utf-8');
465
- if (opts.onData)
466
- opts.onData(s);
467
- else
468
- process.stdout.write(s);
469
- };
470
- proc.stdout.on('data', pump);
471
- proc.stderr.on('data', pump);
472
- proc.on('error', () => resolve(null));
473
- proc.on('close', (code) => resolve(code));
474
- });
475
- }
476
450
  /**
477
451
  * Upload `script` to the box via `crabbox run --script-stdin` and run it.
478
452
  *
@@ -33,7 +33,7 @@ import type { AgentId } from '../types.js';
33
33
  import { type CrabboxBox } from './cli.js';
34
34
  import { type DetectedRuntime } from './runtimes.js';
35
35
  /** Phase signal for a lease run, so the command layer can drive a progress UI. */
36
- export type LeasePhase = {
36
+ type LeasePhase = {
37
37
  kind: 'warmup';
38
38
  backend?: string;
39
39
  } | {
@@ -46,7 +46,7 @@ export type LeasePhase = {
46
46
  } | {
47
47
  kind: 'teardown';
48
48
  };
49
- export interface LeaseRunOptions {
49
+ interface LeaseRunOptions {
50
50
  agent: string;
51
51
  prompt: string;
52
52
  mode?: string;
@@ -110,7 +110,7 @@ export interface LeaseDispatchProfile {
110
110
  provider?: string;
111
111
  fallbackModel?: string;
112
112
  }
113
- export interface LeaseRunResult {
113
+ interface LeaseRunResult {
114
114
  box: CrabboxBox;
115
115
  exitCode: number | null;
116
116
  toreDown: boolean;
@@ -126,8 +126,6 @@ export interface LeaseRunResult {
126
126
  export declare const LEASE_BOOTSTRAP_FAILED_CODE = 97;
127
127
  /** Build a shell-safe, collision-resistant workspace id for one lease run. */
128
128
  export declare function leaseWorkspaceId(repoRoot: string, startedAtMs?: number, pid?: number): string;
129
- /** Isolated box-home path for one run, relative to the shared box user's home. */
130
- export declare function leaseHomeDir(workspaceId: string): string;
131
129
  /**
132
130
  * Build the single bootstrap script run on the box: ensure agents-cli, install
133
131
  * the picked runtime CLIs, write their credentials, run the agent, then shred
@@ -136,7 +134,7 @@ export declare function leaseHomeDir(workspaceId: string): string;
136
134
  export declare function buildBootstrapScript(opts: LeaseRunOptions): string;
137
135
  /** Untouched-for-this-long ⇒ no active run holds the box, so an expired one is a stray. */
138
136
  export declare const STRAY_GRACE_SECS = 600;
139
- export interface StrayMatchOptions {
137
+ interface StrayMatchOptions {
140
138
  /** Pool the lease belongs to (defaults to DEFAULT_CRABBOX_PROFILE). */
141
139
  profile?: string;
142
140
  /** Network mode of the lease (default 'public'); a box is partitioned by it. */
@@ -160,3 +158,4 @@ export interface StrayMatchOptions {
160
158
  */
161
159
  export declare function isExpiredPoolStray(box: CrabboxBox, opts: StrayMatchOptions): boolean;
162
160
  export declare function leaseAndRun(opts: LeaseRunOptions): Promise<LeaseRunResult>;
161
+ export {};
@@ -55,7 +55,7 @@ export function leaseWorkspaceId(repoRoot, startedAtMs = Date.now(), pid = proce
55
55
  return `${safeRepo}-${startedAtMs.toString(36)}-${pid.toString(36)}`;
56
56
  }
57
57
  /** Isolated box-home path for one run, relative to the shared box user's home. */
58
- export function leaseHomeDir(workspaceId) {
58
+ function leaseHomeDir(workspaceId) {
59
59
  return `lease-homes/${workspaceId}`;
60
60
  }
61
61
  function profileRemotePath(name) {
@@ -61,7 +61,7 @@ export declare function createSpinner(opts?: {
61
61
  enabled?: boolean;
62
62
  intervalMs?: number;
63
63
  }): Spinner;
64
- export interface LeaseOutputRouter {
64
+ interface LeaseOutputRouter {
65
65
  /** Feed a raw chunk of the crabbox run's combined stdout/stderr. */
66
66
  push(chunk: string): void;
67
67
  /** Flush any buffered partial line (call once the stream closes). */
@@ -91,3 +91,4 @@ export declare function createLeaseOutputRouter(cb: {
91
91
  marker?: string;
92
92
  now?: () => number;
93
93
  }): LeaseOutputRouter;
94
+ export {};
@@ -22,9 +22,7 @@
22
22
  * ride the box-side bootstrap script (that only echoes the `copy-setup` progress
23
23
  * sentinel — see `buildBootstrapScript`).
24
24
  */
25
- /** Remote path (relative to the box user's home) the tracked config lands in. */
26
- export declare const REMOTE_AGENTS_DIR = ".agents/";
27
- export interface CopySetupOptions {
25
+ interface CopySetupOptions {
28
26
  /** crabbox box slug to push to — its per-lease ssh key does the auth. */
29
27
  slug: string;
30
28
  /** Secrets bundle whose env the ssh/rsync children inherit (crabbox parity). */
@@ -90,3 +88,4 @@ export declare function buildSetupRsyncArgs(opts: {
90
88
  * the returned exit codes.
91
89
  */
92
90
  export declare function copySetupToBox(opts: CopySetupOptions): Promise<CopySetupResult>;
91
+ export {};
@@ -29,7 +29,7 @@ import * as path from 'path';
29
29
  import { getUserAgentsDir } from '../state.js';
30
30
  import { crabboxEnv, crabboxSshArgv } from './cli.js';
31
31
  /** Remote path (relative to the box user's home) the tracked config lands in. */
32
- export const REMOTE_AGENTS_DIR = '.agents/';
32
+ const REMOTE_AGENTS_DIR = '.agents/';
33
33
  /** Top-level paths that must never be pushed, even if somehow tracked. */
34
34
  const NEVER_COPY = new Set(['.claude', '.claude.json']);
35
35
  /**
@@ -28,7 +28,7 @@ export declare const USAGE_STATE_TICK_MS = 60000;
28
28
  export declare const AUTH_STATE_TICK_MS: number;
29
29
  type AccountAuthRefresh = (signal: AbortSignal) => Promise<AuthProbeRow[] | void>;
30
30
  type AccountTransitionNotifier = (transition: DeadAccountTransition) => Promise<void>;
31
- export interface DeadAccountTransition {
31
+ interface DeadAccountTransition {
32
32
  agent: AuthProbeRow['agent'];
33
33
  /** Display label (email / account name) — presentation only, never a key. */
34
34
  account: string;
@@ -35,7 +35,7 @@ import type { DaemonServiceId } from '../daemon-services.js';
35
35
  * through here, so what ships is what is asserted.
36
36
  */
37
37
  export declare function buildAttentionNotification(item: AttentionItem, session: ActiveSession): DesktopNotification | undefined;
38
- export interface AttentionNotifyServiceOptions {
38
+ interface AttentionNotifyServiceOptions {
39
39
  /** Live-session source (default: the real active-session query). Injected in tests. */
40
40
  getSessions?: () => Promise<ActiveSession[]>;
41
41
  /** Notifier (default: the real desktop notifier). Injected in tests to capture posts. */
@@ -67,3 +67,4 @@ export declare class AttentionNotifyService extends BasePeriodicService {
67
67
  private markNotified;
68
68
  private pruneLedger;
69
69
  }
70
+ export {};
@@ -24,7 +24,7 @@ import type { DaemonServiceId } from '../daemon-services.js';
24
24
  * recovering from a wedge or an OS suspend the process survived.
25
25
  */
26
26
  export declare const CATCHUP_TICK_MS: number;
27
- export interface CatchupServiceDeps {
27
+ interface CatchupServiceDeps {
28
28
  /**
29
29
  * Whether the routine scheduler is currently booted. When false (the
30
30
  * `scheduler.enabled` gate is off), the pass no-ops — there is nothing to
@@ -49,3 +49,4 @@ export declare class CatchupService extends BasePeriodicService {
49
49
  protected onStop(): Promise<void>;
50
50
  protected onTick(_ctx: DaemonContext, signal: AbortSignal): Promise<void>;
51
51
  }
52
+ export {};
@@ -67,7 +67,7 @@ export declare const DAEMON_AUTOSTART_FAILURE_LIMIT = 5;
67
67
  * !running + enabled → boot (gate flipped on since boot)
68
68
  * !running + !enabled → none (stay dark)
69
69
  */
70
- export type SchedulerGateTransition = 'reload' | 'stop' | 'boot' | 'none';
70
+ type SchedulerGateTransition = 'reload' | 'stop' | 'boot' | 'none';
71
71
  export declare function schedulerGateTransition(running: boolean, enabled: boolean): SchedulerGateTransition;
72
72
  /**
73
73
  * Wrap an async routine so it runs AT MOST ONCE, however many callers fire it.
@@ -104,7 +104,7 @@ export declare function readDaemonPid(daemonDir?: string): number | null;
104
104
  export declare function writeDaemonPid(pid: number): void;
105
105
  /** Remove the daemon PID file. */
106
106
  export declare function removeDaemonPid(): void;
107
- export interface DaemonHeartbeat {
107
+ interface DaemonHeartbeat {
108
108
  lastTick: string;
109
109
  pid: number;
110
110
  }
@@ -409,7 +409,7 @@ export declare function startDetached(opts?: StartDetachedOptions): {
409
409
  * One piece of daemon state that a graceful `handleShutdown` removes and an
410
410
  * escalated kill leaves behind (RUSH-2421).
411
411
  */
412
- export interface StopResidueArtifact {
412
+ interface StopResidueArtifact {
413
413
  label: string;
414
414
  present: boolean;
415
415
  /** The file names a live owner, including a stopped target that survived. */
@@ -438,7 +438,7 @@ export declare function stopResidueArtifacts(stoppedPid: number | null, survivor
438
438
  * in-flight routine children that survive deliberately (SING-11a) and are
439
439
  * reported, never killed.
440
440
  */
441
- export interface DaemonStopResult {
441
+ interface DaemonStopResult {
442
442
  ok: boolean;
443
443
  stoppedPid: number | null;
444
444
  escalated: boolean;
@@ -878,7 +878,7 @@ export async function runDaemon() {
878
878
  assertTestDaemonHome();
879
879
  // Lifecycle readers and launchers do not run services. Load their code only
880
880
  // in the daemon process, before it claims or publishes lifecycle state.
881
- const [{ BrowserService }, { SessionIndexService }, { SessionSummarizerService }, { SessionTitleService }, { MonitorEngineService }, { AccountUsageService, AccountAuthService }, { CatchupService }, { BrowserIPCService }, { WatchdogService }, { DeviceProbeService }, { SelfHealService }, { SelfUpdateService }, { HarnessUpdateService }, { AuthSyncService }, { UsageSyncService }, { StateDirCheckService }, { SessionStateService }, { AttentionNotifyService }, { WebhookReceiverService }, { HeartbeatService }, { TmuxReapService }, { BrowserTaskReapService },] = await Promise.all([
881
+ const [{ BrowserService }, { SessionIndexService }, { SessionSummarizerService }, { SessionTitleService }, { MonitorEngineService }, { AccountUsageService, AccountAuthService }, { CatchupService }, { BrowserIPCService }, { WatchdogService }, { DeviceProbeService }, { SelfHealService }, { SelfUpdateService }, { HarnessUpdateService }, { AuthSyncService }, { UsageSyncService }, { StateDirCheckService }, { SessionStateService }, { FeedStreamService }, { AttentionNotifyService }, { WebhookReceiverService }, { HeartbeatService }, { TmuxReapService }, { BrowserTaskReapService },] = await Promise.all([
882
882
  import('../browser/service.js'),
883
883
  import('./session-index-service.js'),
884
884
  import('./session-summarizer-service.js'),
@@ -896,6 +896,7 @@ export async function runDaemon() {
896
896
  import('./usage-sync-service.js'),
897
897
  import('./state-dir-check-service.js'),
898
898
  import('./session-state-service.js'),
899
+ import('./feed-stream-service.js'),
899
900
  import('./attention-notify-service.js'),
900
901
  import('./webhook-receiver-service.js'),
901
902
  import('./heartbeat-service.js'),
@@ -1021,6 +1022,12 @@ export async function runDaemon() {
1021
1022
  }
1022
1023
  else
1023
1024
  log('INFO', 'Live session-state service disabled');
1025
+ // The shared feed fan-out. Registered even when disabled at boot so a later
1026
+ // `agents daemon services enable feed-stream` brings it up over SIGHUP, the
1027
+ // same live-transition shape browser IPC uses.
1028
+ supervisor.register(new FeedStreamService(), { enabled: isEnabled('feed-stream') });
1029
+ if (!isEnabled('feed-stream'))
1030
+ log('INFO', 'Shared feed stream service disabled');
1024
1031
  const monitorEngineSvc = new MonitorEngineService();
1025
1032
  if (isEnabled('monitors'))
1026
1033
  supervisor.register(monitorEngineSvc);
@@ -1226,7 +1233,7 @@ export async function runDaemon() {
1226
1233
  }
1227
1234
  catch { /* best-effort */ }
1228
1235
  // RUSH-2288: the pre-spawn failure (e.g. auth_failed) is exactly the one the
1229
- // per-routine `agents notify` prompt can never send — its agent never ran —
1236
+ // per-routine `agents send --to owner` prompt can never send — its agent never ran —
1230
1237
  // so the daemon reaches the owner directly.
1231
1238
  void notifyOwnerRoutineStartFailed(config, message)
1232
1239
  .then((r) => {
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The shared feed collector's lifecycle as a `DaemonService`.
3
+ *
4
+ * WHY THE DAEMON OWNS IT. Dialing every peer over ssh and holding those
5
+ * connections open is an ACTION on the fleet, so by the repo's one-scheduler /
6
+ * one-executor rule it belongs to the daemon and not to a UI surface. Before
7
+ * this service, every consumer of `agents feed watch --json` ran its own
8
+ * `watchFleetFeed`, which is N ssh children per peer for N readers. The daemon
9
+ * runs one, and the readers attach over a socket (`feed/hub-server.ts`).
10
+ *
11
+ * The server binds on start, but the fan-out itself is DEMAND-GATED by the hub:
12
+ * with no client connected there is no `watchFleetFeed`, so an idle box holds no
13
+ * peer connections — the same idle-cost rule `SessionStateService` follows for
14
+ * its gather.
15
+ */
16
+ import { BaseDaemonService, type DaemonContext } from './service.js';
17
+ import type { DaemonServiceId } from '../daemon-services.js';
18
+ export declare class FeedStreamService extends BaseDaemonService {
19
+ readonly id: DaemonServiceId;
20
+ private server;
21
+ protected onStart(ctx: DaemonContext): Promise<void>;
22
+ protected onStop(): Promise<void>;
23
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The shared feed collector's lifecycle as a `DaemonService`.
3
+ *
4
+ * WHY THE DAEMON OWNS IT. Dialing every peer over ssh and holding those
5
+ * connections open is an ACTION on the fleet, so by the repo's one-scheduler /
6
+ * one-executor rule it belongs to the daemon and not to a UI surface. Before
7
+ * this service, every consumer of `agents feed watch --json` ran its own
8
+ * `watchFleetFeed`, which is N ssh children per peer for N readers. The daemon
9
+ * runs one, and the readers attach over a socket (`feed/hub-server.ts`).
10
+ *
11
+ * The server binds on start, but the fan-out itself is DEMAND-GATED by the hub:
12
+ * with no client connected there is no `watchFleetFeed`, so an idle box holds no
13
+ * peer connections — the same idle-cost rule `SessionStateService` follows for
14
+ * its gather.
15
+ */
16
+ import { BaseDaemonService } from './service.js';
17
+ import { FeedHub } from '../feed/hub.js';
18
+ import { FeedHubServer } from '../feed/hub-server.js';
19
+ import { sharedLocalFeedHub, watchFleetFeed } from '../feed/watch.js';
20
+ export class FeedStreamService extends BaseDaemonService {
21
+ id = 'feed-stream';
22
+ server = null;
23
+ async onStart(ctx) {
24
+ // Two collectors, one socket. The fleet hub holds one ssh child per peer plus
25
+ // this box's rows; the local hub is this box ONLY and cannot fan out, so a
26
+ // reader that wants just this machine never causes a peer dial. They are
27
+ // separate hubs rather than one filtered stream because demand must be
28
+ // separate too: a local-only reader must not start the fleet fan-out.
29
+ const fleet = new FeedHub({ watch: watchFleetFeed });
30
+ this.server = new FeedHubServer(fleet, undefined, sharedLocalFeedHub());
31
+ await this.server.start();
32
+ ctx.log('INFO', 'Feed stream hub listening (fan-out starts on first reader)');
33
+ }
34
+ async onStop() {
35
+ const server = this.server;
36
+ this.server = null;
37
+ if (server)
38
+ await server.stop();
39
+ }
40
+ }
@@ -33,24 +33,7 @@
33
33
  */
34
34
  import { BasePeriodicService, type DaemonContext } from './service.js';
35
35
  import type { DaemonServiceId } from '../daemon-services.js';
36
- /**
37
- * Cancellation deadline per tick. A real pass can touch several installations, each an npm
38
- * install (`INSTALL_TIMEOUT_MS` = 120s in strategies.ts) plus two launch
39
- * probes; 10 minutes leaves headroom for a handful of harnesses in one pass
40
- * while staying comfortably under the 15-minute cadence above.
41
- */
42
- export declare const HARNESS_UPDATE_DEADLINE_MS: number;
43
- /**
44
- * How long to wait for the child to exit AFTER a cooperative cancel before
45
- * force-reaping it as an orphan backstop. The child's own work is bounded — one
46
- * npm install (`INSTALL_TIMEOUT_MS` = 120s in strategies.ts) plus two launch
47
- * probes, then a fast synchronous swap — so a healthy child stops well within
48
- * this window. A slow staging/postinstall can also exhaust it, but a delivered
49
- * cancel prevents that stage from committing. The backstop kills the process
50
- * group on POSIX and the worker on Windows; the tick reports a failure.
51
- */
52
- export declare const HARNESS_UPDATE_CANCEL_GRACE_MS: number;
53
- export interface HarnessUpdateOutcome {
36
+ interface HarnessUpdateOutcome {
54
37
  ran: boolean;
55
38
  reason?: string;
56
39
  exitCode?: number | null;
@@ -72,7 +55,6 @@ export interface CooperativeChildResult {
72
55
  export interface HarnessUpdateDeps {
73
56
  runAutoUpdatePass(signal: AbortSignal): Promise<CooperativeChildResult>;
74
57
  }
75
- export declare function defaultHarnessUpdateDeps(): HarnessUpdateDeps;
76
58
  /**
77
59
  * Spawn `command args` as a child over a Node IPC channel and drive it to a TRUE
78
60
  * completion, requesting a cooperative stop (never a kill) when `signal` aborts —
@@ -108,3 +90,4 @@ export declare class HarnessUpdateService extends BasePeriodicService {
108
90
  protected onStop(): Promise<void>;
109
91
  protected onTick(ctx: DaemonContext, signal: AbortSignal): Promise<void>;
110
92
  }
93
+ export {};
@@ -43,7 +43,7 @@ const HARNESS_UPDATE_TICK_MS = 15 * 60_000;
43
43
  * probes; 10 minutes leaves headroom for a handful of harnesses in one pass
44
44
  * while staying comfortably under the 15-minute cadence above.
45
45
  */
46
- export const HARNESS_UPDATE_DEADLINE_MS = 10 * 60_000;
46
+ const HARNESS_UPDATE_DEADLINE_MS = 10 * 60_000;
47
47
  /** First tick fires 60 seconds after daemon boot — long enough for shims/PATH to settle, short enough that a fresh box doesn't wait a full interval for its first check. */
48
48
  const HARNESS_UPDATE_STARTUP_DELAY_MS = 60_000;
49
49
  /**
@@ -55,8 +55,8 @@ const HARNESS_UPDATE_STARTUP_DELAY_MS = 60_000;
55
55
  * cancel prevents that stage from committing. The backstop kills the process
56
56
  * group on POSIX and the worker on Windows; the tick reports a failure.
57
57
  */
58
- export const HARNESS_UPDATE_CANCEL_GRACE_MS = 3 * 60_000;
59
- export function defaultHarnessUpdateDeps() {
58
+ const HARNESS_UPDATE_CANCEL_GRACE_MS = 3 * 60_000;
59
+ function defaultHarnessUpdateDeps() {
60
60
  return {
61
61
  runAutoUpdatePass(signal) {
62
62
  const { command, args } = getCliLaunch([HARNESS_UPDATE_CHILD_CMD], getAgentsBinPath());
@@ -54,7 +54,7 @@ export declare function activeRunSkipStreak(runs: RunMeta[]): number;
54
54
  */
55
55
  export declare function launcherClaimPid(): number | null;
56
56
  /** How a routine attempt was triggered, plus the schedule slot it belongs to. */
57
- export interface RoutineTrigger {
57
+ interface RoutineTrigger {
58
58
  kind: NonNullable<RunMeta['triggerKind']>;
59
59
  /** UTC fire time for a schedule/catchup attempt; keys the single-fire slot claim. */
60
60
  scheduledFor?: Date | string;
@@ -103,7 +103,7 @@ export declare function buildJobCommand(config: JobConfig, resolvedPrompt: strin
103
103
  export declare function snapshotRoutineTranscriptBase(meta: Pick<RunMeta, 'jobName' | 'agent' | 'version'>, runDir: string, overlayHome?: string): void;
104
104
  export declare function archiveRoutineTranscripts(meta: Pick<RunMeta, 'jobName' | 'runId' | 'agent' | 'version'>, runDir: string, overlayHome?: string): void;
105
105
  /** Pre-flight version/account selection for a routine job. */
106
- export interface RoutineLaunchPlan {
106
+ interface RoutineLaunchPlan {
107
107
  /** Ordered attempts: primary first, then same-agent failover accounts. */
108
108
  chain: FallbackEntry[];
109
109
  /** Full rotation result when strategy selected among healthy accounts; null when pinned. */
@@ -219,7 +219,7 @@ declare function executeJobOnHost(config: JobConfig, opts: {
219
219
  * observes the live running→terminal transition (the monitor tick would already
220
220
  * see a finalized record and skip it). Never let a hook throw into finalization.
221
221
  */
222
- export interface RoutineHooks {
222
+ interface RoutineHooks {
223
223
  /** Called once with the finalized meta when the run reaches a terminal state. */
224
224
  onFinish?: (meta: RunMeta) => void;
225
225
  }
@@ -35,16 +35,7 @@
35
35
  */
36
36
  import { BasePeriodicService, type DaemonContext } from './service.js';
37
37
  import type { DaemonServiceId } from '../daemon-services.js';
38
- /**
39
- * Hard cap per tick: a real download + npm/bun install + verify can
40
- * legitimately take minutes on a slow link. 15 minutes matches the task's
41
- * stated budget and is short relative to the ~75min cadence. Exported so the
42
- * on-demand `request-self-update` IPC handler (`browser/ipc.ts`) can bound
43
- * its own `AbortController` on the SAME budget the periodic tick runs under —
44
- * one deadline, not two independently-tuned numbers that could drift apart.
45
- */
46
- export declare const SELF_UPDATE_DEADLINE_MS: number;
47
- export interface SelfUpdateOutcome {
38
+ interface SelfUpdateOutcome {
48
39
  updated: boolean;
49
40
  reason?: string;
50
41
  }
@@ -75,7 +66,6 @@ export interface SelfUpdateDeps {
75
66
  syncSystemRepo(): Promise<void>;
76
67
  syncLocal(): Promise<void>;
77
68
  }
78
- export declare function fetchLatestNpmMetadata(signal: AbortSignal): Promise<NpmLatestMetadata>;
79
69
  /**
80
70
  * Install + byte-verify `metadata` into `packageRoot`'s install, exactly the
81
71
  * sequence `bootstrap.ts`'s `installResolvedPackage` runs for `agents
@@ -101,7 +91,6 @@ export declare function fetchLatestNpmMetadata(signal: AbortSignal): Promise<Npm
101
91
  * it's guarding (found in review, PHNX-3695).
102
92
  */
103
93
  export declare function installAndVerifyDefault(metadata: NpmLatestMetadata, packageRoot: string, signal: AbortSignal): Promise<void>;
104
- export declare function defaultSelfUpdateDeps(): SelfUpdateDeps;
105
94
  /**
106
95
  * Core self-update decision + action, shared by the periodic tick
107
96
  * ({@link SelfUpdateService.onTick}) and the on-demand IPC path
@@ -167,10 +156,6 @@ export declare function triggerSelfUpdateInBackground(ctx: DaemonContext, deps?:
167
156
  * reason, or `null` to proceed to the (backgrounded) install path.
168
157
  */
169
158
  export declare function selfUpdateSyncDeclineReason(deps?: SelfUpdateDeps): string | null;
170
- export declare const DEV_BUILD_DECLINE = "dev build \u2014 self-update is a no-op";
171
- export declare const SHADOW_DECLINE = "another agents binary shadows this install \u2014 self-update is a no-op";
172
- /** True when the package on disk is a strictly newer release than the one this process booted with. */
173
- export declare function installedIsNewerThanRunning(installed: string, running: string): boolean;
174
159
  export declare class SelfUpdateService extends BasePeriodicService {
175
160
  readonly id: DaemonServiceId;
176
161
  readonly intervalMs: number;
@@ -56,7 +56,7 @@ const SELF_UPDATE_TICK_MS = 75 * 60_000;
56
56
  * its own `AbortController` on the SAME budget the periodic tick runs under —
57
57
  * one deadline, not two independently-tuned numbers that could drift apart.
58
58
  */
59
- export const SELF_UPDATE_DEADLINE_MS = 15 * 60_000;
59
+ const SELF_UPDATE_DEADLINE_MS = 15 * 60_000;
60
60
  /**
61
61
  * First tick fires 5 minutes after daemon boot — deliberately longer than
62
62
  * self-heal's 30s stagger (`self-heal-service.ts`): self-heal repairs local
@@ -67,7 +67,7 @@ export const SELF_UPDATE_DEADLINE_MS = 15 * 60_000;
67
67
  * a restart). Every later tick still fires on the normal cadence.
68
68
  */
69
69
  const SELF_UPDATE_STARTUP_DELAY_MS = 5 * 60_000;
70
- export async function fetchLatestNpmMetadata(signal) {
70
+ async function fetchLatestNpmMetadata(signal) {
71
71
  const response = await fetch(`https://registry.npmjs.org/${NPM_PACKAGE_NAME}/latest`, { signal });
72
72
  if (!response.ok) {
73
73
  throw new Error(`registry.npmjs.org responded ${response.status}`);
@@ -148,7 +148,7 @@ export async function installAndVerifyDefault(metadata, packageRoot, signal) {
148
148
  }
149
149
  }
150
150
  }
151
- export function defaultSelfUpdateDeps() {
151
+ function defaultSelfUpdateDeps() {
152
152
  return {
153
153
  currentVersion: () => getCliVersion(),
154
154
  installedVersion: () => getCliVersionFresh(),
@@ -362,10 +362,10 @@ export function selfUpdateSyncDeclineReason(deps = defaultSelfUpdateDeps()) {
362
362
  }
363
363
  return null;
364
364
  }
365
- export const DEV_BUILD_DECLINE = 'dev build — self-update is a no-op';
366
- export const SHADOW_DECLINE = 'another agents binary shadows this install — self-update is a no-op';
365
+ const DEV_BUILD_DECLINE = 'dev build — self-update is a no-op';
366
+ const SHADOW_DECLINE = 'another agents binary shadows this install — self-update is a no-op';
367
367
  /** True when the package on disk is a strictly newer release than the one this process booted with. */
368
- export function installedIsNewerThanRunning(installed, running) {
368
+ function installedIsNewerThanRunning(installed, running) {
369
369
  if (installed === 'unknown' || running === 'unknown')
370
370
  return false;
371
371
  return compareVersions(installed, running) > 0;
@@ -24,7 +24,7 @@
24
24
  */
25
25
  import { BasePeriodicService, type DaemonContext } from './service.js';
26
26
  import type { DaemonServiceId } from '../daemon-services.js';
27
- export interface StateDirCheckServiceOptions {
27
+ interface StateDirCheckServiceOptions {
28
28
  lifetimePath: string;
29
29
  lifetimeToken: string;
30
30
  onMissing: () => void;
@@ -41,3 +41,4 @@ export declare class StateDirCheckService extends BasePeriodicService {
41
41
  protected onStop(): Promise<void>;
42
42
  protected onTick(ctx: DaemonContext): Promise<void>;
43
43
  }
44
+ export {};
@@ -32,7 +32,7 @@
32
32
  */
33
33
  import type { DaemonServiceId } from '../daemon-services.js';
34
34
  import type { DaemonContext, DaemonService, ServiceHealth } from './service.js';
35
- export interface ServiceSupervisorOptions {
35
+ interface ServiceSupervisorOptions {
36
36
  /** Consecutive thrown tick failures before a service is parked. Deadline breaches park immediately. Default 3. */
37
37
  parkAfterFailures?: number;
38
38
  /** First restart backoff delay, doubled on each further failed restart attempt. Default 5s. */
@@ -48,7 +48,7 @@ export interface ServiceSupervisorOptions {
48
48
  */
49
49
  lifecycleDeadlineMs?: number;
50
50
  }
51
- export interface RegisterServiceOptions {
51
+ interface RegisterServiceOptions {
52
52
  /** Register the lifecycle owner but leave it stopped until a live enable. */
53
53
  enabled?: boolean;
54
54
  }
@@ -135,3 +135,4 @@ export declare class ServiceSupervisor {
135
135
  private recordFailure;
136
136
  private finishTick;
137
137
  }
138
+ export {};
@@ -7,9 +7,9 @@
7
7
  * enabled without pulling in the whole daemon lifecycle.
8
8
  */
9
9
  /** Every service the daemon can host. IDs are kebab-case and stable. */
10
- export type DaemonServiceId = 'scheduler' | 'catchup' | 'monitors' | 'browser-ipc' | 'webhook-receiver' | 'self-heal' | 'self-update' | 'account-state' | 'account-auth' | 'watchdog' | 'device-probe' | 'state-dir-check' | 'session-index' | 'session-title' | 'auth-sync' | 'usage-sync' | 'daemon-heartbeat' | 'tmux-reap' | 'browser-task-reap' | 'session-state' | 'session-summarizer' | 'attention-notify' | 'harness-update';
10
+ export type DaemonServiceId = 'scheduler' | 'catchup' | 'monitors' | 'browser-ipc' | 'webhook-receiver' | 'self-heal' | 'self-update' | 'account-state' | 'account-auth' | 'watchdog' | 'device-probe' | 'state-dir-check' | 'session-index' | 'session-title' | 'auth-sync' | 'usage-sync' | 'daemon-heartbeat' | 'tmux-reap' | 'browser-task-reap' | 'session-state' | 'feed-stream' | 'session-summarizer' | 'attention-notify' | 'harness-update';
11
11
  /** Human-readable metadata for each service. */
12
- export interface DaemonServiceDef {
12
+ interface DaemonServiceDef {
13
13
  id: DaemonServiceId;
14
14
  title: string;
15
15
  description: string;
@@ -55,3 +55,4 @@ export declare function queueDaemonServiceRestart(id: DaemonServiceId): void;
55
55
  * daemon; never throws. Clears the file so a request is applied at most once.
56
56
  */
57
57
  export declare function drainDaemonServiceRestartQueue(): DaemonServiceId[];
58
+ export {};