@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
@@ -46,7 +46,7 @@ export declare function identityLoopbackMismatch(profile: BrowserProfileWithDecl
46
46
  * The one-value-per-file fields are kept for backward compat with older
47
47
  * builds; `meta.json` is additive and consulted preferentially.
48
48
  */
49
- export interface ProfileRuntime {
49
+ interface ProfileRuntime {
50
50
  pid: number;
51
51
  port?: number;
52
52
  command?: string;
@@ -110,7 +110,7 @@ export declare function isProcessAlive(pid: number, expectedCommand?: string): b
110
110
  * Combines the on-disk meta record with live-process probes so callers can
111
111
  * tell at a glance which entries are alive, stale, or have outright leaked.
112
112
  */
113
- export interface ProfileSnapshot {
113
+ interface ProfileSnapshot {
114
114
  /** Composite name as the cache dir is keyed: `<profile>` or `<profile>@<endpoint>`. */
115
115
  name: string;
116
116
  /** Absolute path of the cache dir. */
@@ -144,10 +144,59 @@ export declare function listAllProfileSnapshots(): ProfileSnapshot[];
144
144
  * alone — we'd rather leak than wrongly kill a user-owned process that
145
145
  * happens to share metadata.
146
146
  */
147
+ /**
148
+ * Clean up what a DEAD daemon genuinely left behind — which is not the browser.
149
+ *
150
+ * A live local browser outliving its daemon is the NORMAL case, not an orphan.
151
+ * `BrowserService.shutdown` deliberately closes only CDP and leaves the browser
152
+ * running, and on macOS the spawn is detached so the daemon's own positive-pid
153
+ * `killTree` reaches the daemon alone. This reaper used to read "the recorded
154
+ * `daemonPid` has exited" as "everything it recorded is garbage" and SIGTERM the
155
+ * browser — so replacing the daemon (a menubar activation, an upgrade, a crash
156
+ * restart) killed a browser the user was looking at, and `clearProfileRuntime`
157
+ * then removed the `port`/meta that {@link readProfileRuntime} needs, so even a
158
+ * survivor could not be re-attached and a second browser would launch beside it.
159
+ *
160
+ * The three cases are now decided independently:
161
+ *
162
+ * - **A live local browser/electron is preserved untouched** — not signalled, not
163
+ * cleared, and its `daemonPid` deliberately NOT rewritten. Ownership is adopted
164
+ * only after an identity-checked attach succeeds (`adoptProfileRuntimeOwner`,
165
+ * called from the reuse branch in `BrowserService.connectProfile`), so nothing
166
+ * claims a browser it has not proven it can talk to. Re-running this is a no-op.
167
+ * - **A dead browser record is cleared**, with no signal sent: there is nothing
168
+ * alive to signal, and the stale pid/port would otherwise mislead the next
169
+ * attach.
170
+ * - **A stale tunnel IS reaped.** A local `ssh -L` cannot outlive its purpose, so
171
+ * a dead owner does make it an orphan. This is the one thing the old code was
172
+ * right about; it just shared a code path with the browser.
173
+ *
174
+ * The accepted trade: a genuinely leaked browser from a long-dead daemon is no
175
+ * longer force-killed here. Idle/abandoned cleanup has its own owner in
176
+ * `browser/hygiene.ts` (session-dead + idle), which the daemon's periodic tick and
177
+ * `agents browser prune` both call — that is the right place for it, because it can
178
+ * tell "idle and abandoned" from "in use right now" and this function cannot.
179
+ */
147
180
  export declare function reapOrphanedProcesses(): {
148
181
  reaped: number;
149
182
  details: string[];
150
183
  };
184
+ /**
185
+ * Take ownership of a runtime record after an identity-checked attach succeeded.
186
+ *
187
+ * Called from the reuse branch in `BrowserService.connectProfile`, which has just
188
+ * probed `/json/version` and run `verifyBrowserIdentity` against the profile's
189
+ * expected browser family — so by this point the process on the recorded port is
190
+ * proven to be ours. Only then may a new service claim it.
191
+ *
192
+ * Rewrites `daemonPid` ALONE. Every other field — `pid`, `port`, `command`,
193
+ * `userDataDir`, `spawnedAt`, `kind`, `tunnelPid` — is the original launch's
194
+ * metadata and stays exactly as recorded: this is an ownership handover, not a
195
+ * re-registration, and rewriting the rest would lose the provenance the reaper and
196
+ * the hygiene pass both read. A record that has since disappeared is left alone
197
+ * rather than recreated from a partial view.
198
+ */
199
+ export declare function adoptProfileRuntimeOwner(profileName: string, daemonPid?: number): boolean;
151
200
  /**
152
201
  * True when ANY cache dir belonging to this profile still has a live browser or
153
202
  * SSH tunnel, or an open task. The composite naming (`<name>@<endpoint>`) means
@@ -160,7 +209,7 @@ export declare function reapOrphanedProcesses(): {
160
209
  */
161
210
  export declare function isProfileInUse(profileName: string): boolean;
162
211
  /** Why a profile is considered dead. */
163
- export type PruneReason = 'binary-missing' | 'never-used';
212
+ type PruneReason = 'binary-missing' | 'never-used';
164
213
  export interface PruneCandidate {
165
214
  name: string;
166
215
  scope: PruneProfileClass;
@@ -168,7 +217,7 @@ export interface PruneCandidate {
168
217
  /** Cache dirs that would be removed along with the config entry. */
169
218
  cacheDirs: string[];
170
219
  }
171
- export interface PrunePlan {
220
+ interface PrunePlan {
172
221
  /** Profiles that would be (or were) removed. */
173
222
  candidates: PruneCandidate[];
174
223
  /** Profiles deliberately left alone, with the guard that kept them. */
@@ -233,4 +282,10 @@ export declare function buildProfilePrunePlan(): Promise<PrunePlan>;
233
282
  * went, matching what `--dry-run` printed.
234
283
  */
235
284
  export declare function pruneProfiles(plan: PrunePlan): Promise<PrunePlan>;
285
+ /**
286
+ * The executable/image name the live `pid` is running, or null if it can't be
287
+ * determined. The process-listing API differs per OS: Windows has no `ps`, so
288
+ * we query `tasklist` (CSV image name in column 1); POSIX uses `ps -o comm=`.
289
+ */
290
+ export declare function liveProcessCommand(pid: number): string | null;
236
291
  export {};
@@ -258,6 +258,39 @@ function readTaskCount(dir) {
258
258
  * alone — we'd rather leak than wrongly kill a user-owned process that
259
259
  * happens to share metadata.
260
260
  */
261
+ /**
262
+ * Clean up what a DEAD daemon genuinely left behind — which is not the browser.
263
+ *
264
+ * A live local browser outliving its daemon is the NORMAL case, not an orphan.
265
+ * `BrowserService.shutdown` deliberately closes only CDP and leaves the browser
266
+ * running, and on macOS the spawn is detached so the daemon's own positive-pid
267
+ * `killTree` reaches the daemon alone. This reaper used to read "the recorded
268
+ * `daemonPid` has exited" as "everything it recorded is garbage" and SIGTERM the
269
+ * browser — so replacing the daemon (a menubar activation, an upgrade, a crash
270
+ * restart) killed a browser the user was looking at, and `clearProfileRuntime`
271
+ * then removed the `port`/meta that {@link readProfileRuntime} needs, so even a
272
+ * survivor could not be re-attached and a second browser would launch beside it.
273
+ *
274
+ * The three cases are now decided independently:
275
+ *
276
+ * - **A live local browser/electron is preserved untouched** — not signalled, not
277
+ * cleared, and its `daemonPid` deliberately NOT rewritten. Ownership is adopted
278
+ * only after an identity-checked attach succeeds (`adoptProfileRuntimeOwner`,
279
+ * called from the reuse branch in `BrowserService.connectProfile`), so nothing
280
+ * claims a browser it has not proven it can talk to. Re-running this is a no-op.
281
+ * - **A dead browser record is cleared**, with no signal sent: there is nothing
282
+ * alive to signal, and the stale pid/port would otherwise mislead the next
283
+ * attach.
284
+ * - **A stale tunnel IS reaped.** A local `ssh -L` cannot outlive its purpose, so
285
+ * a dead owner does make it an orphan. This is the one thing the old code was
286
+ * right about; it just shared a code path with the browser.
287
+ *
288
+ * The accepted trade: a genuinely leaked browser from a long-dead daemon is no
289
+ * longer force-killed here. Idle/abandoned cleanup has its own owner in
290
+ * `browser/hygiene.ts` (session-dead + idle), which the daemon's periodic tick and
291
+ * `agents browser prune` both call — that is the right place for it, because it can
292
+ * tell "idle and abandoned" from "in use right now" and this function cannot.
293
+ */
261
294
  export function reapOrphanedProcesses() {
262
295
  const root = getBrowserRuntimeDir();
263
296
  if (!fs.existsSync(root))
@@ -275,28 +308,76 @@ export function reapOrphanedProcesses() {
275
308
  // Owning daemon still alive — leave its kids alone.
276
309
  if (isProcessAlive(meta.daemonPid))
277
310
  continue;
278
- // Kill what the dead daemon left behind. Best-effort.
279
- const kill = (pid, label) => {
280
- if (!pid || pid === 0)
281
- return;
282
- // Only kill if it matches the recorded command — guards against
283
- // pid reuse handing us an unrelated process to murder.
284
- if (meta.command && !matchesCommand(pid, meta.command) &&
285
- !matchesCommand(pid, 'ssh'))
286
- return;
287
- try {
288
- process.kill(pid, 'SIGTERM');
289
- reaped++;
290
- details.push(`reaped ${label ?? 'pid'} ${pid} (profile ${profileName})`);
311
+ // A local `ssh -L` whose owner is gone is genuinely orphaned: nothing is
312
+ // driving it and it cannot be re-adopted, so it is the one process to signal.
313
+ // Matched against the recorded command (or `ssh`) so a recycled pid is not
314
+ // mistaken for our tunnel.
315
+ if (meta.tunnelPid && meta.tunnelPid !== 0) {
316
+ const cmdOk = !meta.command
317
+ || matchesCommand(meta.tunnelPid, meta.command)
318
+ || matchesCommand(meta.tunnelPid, 'ssh');
319
+ if (cmdOk) {
320
+ try {
321
+ process.kill(meta.tunnelPid, 'SIGTERM');
322
+ reaped++;
323
+ details.push(`reaped tunnel ${meta.tunnelPid} (profile ${profileName})`);
324
+ }
325
+ catch { /* already gone */ }
291
326
  }
292
- catch { /* already gone */ }
293
- };
294
- kill(meta.pid, 'browser');
295
- kill(meta.tunnelPid, 'tunnel');
327
+ }
328
+ // A tunnel-kind record has no local browser of its own, so clearing it is the
329
+ // whole cleanup. `pid` on such a record is the REMOTE browser (normally 0) and
330
+ // is never ours to signal.
331
+ if (meta.kind === 'tunnel') {
332
+ clearProfileRuntime(profileName);
333
+ continue;
334
+ }
335
+ // `isProcessAlive` re-checks the recorded command, so a recycled pid does not
336
+ // read as our browser. A record with no pid at all is stale by definition.
337
+ const liveBrowser = !!meta.pid && meta.pid !== 0 && isProcessAlive(meta.pid, meta.command);
338
+ if (liveBrowser) {
339
+ details.push(`preserved live browser ${meta.pid} (profile ${profileName})`);
340
+ continue;
341
+ }
342
+ // Dead browser: clear the stale record. No signal — there is nothing there.
296
343
  clearProfileRuntime(profileName);
344
+ if (meta.pid)
345
+ details.push(`cleared dead browser record ${meta.pid} (profile ${profileName})`);
297
346
  }
298
347
  return { reaped, details };
299
348
  }
349
+ /**
350
+ * Take ownership of a runtime record after an identity-checked attach succeeded.
351
+ *
352
+ * Called from the reuse branch in `BrowserService.connectProfile`, which has just
353
+ * probed `/json/version` and run `verifyBrowserIdentity` against the profile's
354
+ * expected browser family — so by this point the process on the recorded port is
355
+ * proven to be ours. Only then may a new service claim it.
356
+ *
357
+ * Rewrites `daemonPid` ALONE. Every other field — `pid`, `port`, `command`,
358
+ * `userDataDir`, `spawnedAt`, `kind`, `tunnelPid` — is the original launch's
359
+ * metadata and stays exactly as recorded: this is an ownership handover, not a
360
+ * re-registration, and rewriting the rest would lose the provenance the reaper and
361
+ * the hygiene pass both read. A record that has since disappeared is left alone
362
+ * rather than recreated from a partial view.
363
+ */
364
+ export function adoptProfileRuntimeOwner(profileName, daemonPid = process.pid) {
365
+ const meta = readProfileRuntimeMeta(profileName);
366
+ if (!meta)
367
+ return false;
368
+ if (meta.daemonPid === daemonPid)
369
+ return true;
370
+ const dir = getProfileRuntimeDir(profileName);
371
+ try {
372
+ fs.writeFileSync(path.join(dir, META_FILE), JSON.stringify({ ...meta, daemonPid }));
373
+ return true;
374
+ }
375
+ catch {
376
+ // Losing the handover is not worth failing an otherwise good attach; the next
377
+ // startup simply preserves the browser again and re-attaches.
378
+ return false;
379
+ }
380
+ }
300
381
  /**
301
382
  * True when ANY cache dir belonging to this profile still has a live browser or
302
383
  * SSH tunnel, or an open task. The composite naming (`<name>@<endpoint>`) means
@@ -478,7 +559,7 @@ function matchesCommand(pid, expectedCommand) {
478
559
  * determined. The process-listing API differs per OS: Windows has no `ps`, so
479
560
  * we query `tasklist` (CSV image name in column 1); POSIX uses `ps -o comm=`.
480
561
  */
481
- function liveProcessCommand(pid) {
562
+ export function liveProcessCommand(pid) {
482
563
  try {
483
564
  if (process.platform === 'win32') {
484
565
  const out = execFileSync('tasklist', ['/FI', `PID eq ${pid}`, '/NH', '/FO', 'CSV'], {
@@ -6,7 +6,7 @@ import { type ReapOptions } from './hygiene.js';
6
6
  import { type RefOpts, type RefNode } from './refs.js';
7
7
  import type { TargetFilter, PageOpenResult, ArcNativeProfileIdentity, FirefoxProfileIdentity } from './types.js';
8
8
  import { FirefoxBiDiClient } from './drivers/firefox.js';
9
- export type UploadMode = 'auto' | 'input' | 'drop' | 'chooser';
9
+ type UploadMode = 'auto' | 'input' | 'drop' | 'chooser';
10
10
  export declare function resolveScreenshotOutputPath(outputPath: string | undefined, automaticPath: string): string;
11
11
  /**
12
12
  * Parse a `targetFilter` string into its kind + value, or return `null`
@@ -137,7 +137,7 @@ type TargetInfo = {
137
137
  title?: string;
138
138
  };
139
139
  /** Describes a ref that was re-resolved from a drifted integer via its cached descriptor. */
140
- export interface HealInfo {
140
+ interface HealInfo {
141
141
  from: number;
142
142
  to: number;
143
143
  role: string;
@@ -161,7 +161,7 @@ export declare function resolveTaskIdentity(forwarded: {
161
161
  launchId?: string;
162
162
  sessionId?: string;
163
163
  };
164
- export interface StartOptions {
164
+ interface StartOptions {
165
165
  taskName?: string;
166
166
  url?: string;
167
167
  endpointName?: string;
@@ -180,7 +180,7 @@ export interface StartOptions {
180
180
  /** Injected reachability probe — production uses ssh; tests pass a fake. */
181
181
  probe?: DeviceProbe;
182
182
  }
183
- export interface StartResult {
183
+ interface StartResult {
184
184
  task: string;
185
185
  name: string;
186
186
  tabId?: string;
@@ -8,7 +8,7 @@ import { assertRemoteControlAllowedForRequest } from './remote-control.js';
8
8
  import { connectLocal } from './drivers/local.js';
9
9
  import { connectSSH, shellQuote } from './drivers/ssh.js';
10
10
  import { adoptLegacyRuntimeIfLocal, isLegacyEndpointKey, resolveBrowserTarget, shouldForkProfile, } from './resolve-target.js';
11
- import { clearProfileRuntime, listProfileCacheDirs, readProfileRuntimeMeta, isProcessAlive } from './runtime-state.js';
11
+ import { adoptProfileRuntimeOwner, clearProfileRuntime, listProfileCacheDirs, readProfileRuntimeMeta, isProcessAlive } from './runtime-state.js';
12
12
  import { resolveDomainSkill } from './domain-skills.js';
13
13
  import { generateTaskId, generateShortId, asConnectionKey, parseConnectionKey, keyBelongsToProfile, } from './types.js';
14
14
  import { reapAbandonedTasks, resolveLiveIdentities, taskOwnerIsGone, } from './hygiene.js';
@@ -1212,6 +1212,8 @@ export class BrowserService {
1212
1212
  await this.saveTaskState(task.profile, conn.tasks);
1213
1213
  return { tabId: resolvedTabId };
1214
1214
  }
1215
+ requireCdp(conn, 'enumerate');
1216
+ await conn.cdp.send('Target.activateTarget', { targetId: task.tabs[resolvedTabId] });
1215
1217
  task.currentTabId = resolvedTabId;
1216
1218
  await this.saveTaskState(task.profile, conn.tasks);
1217
1219
  return { tabId: resolvedTabId };
@@ -2771,6 +2773,12 @@ export class BrowserService {
2771
2773
  await cdp.connect(wsUrl);
2772
2774
  await this.enableDomains(cdp);
2773
2775
  const tasks = this.loadTaskState(key);
2776
+ // The attach is now PROVEN: the stored port answered /json/version and
2777
+ // `verifyBrowserIdentity` matched the profile's browser family. Only here
2778
+ // may this service claim a browser the startup reaper deliberately left
2779
+ // alone — it rewrites `daemonPid` only, keeping the original launch's
2780
+ // metadata. An ambiguous identity throws above and adopts nothing.
2781
+ adoptProfileRuntimeOwner(key);
2774
2782
  return {
2775
2783
  backend: 'cdp',
2776
2784
  cdp,
@@ -3398,6 +3406,10 @@ export class BrowserService {
3398
3406
  const port = parseEndpointUrl(resolved.target)?.port ?? 9600;
3399
3407
  try {
3400
3408
  const ff = await connectFirefox(profile, key, port, { profileDir: profile.userDataDir });
3409
+ // A served port that accepted a fresh BiDi session is this profile's own
3410
+ // Firefox, so claim the record for this daemon (see the local-CDP claim
3411
+ // below for why adoption waits for a proven attach).
3412
+ adoptProfileRuntimeOwner(key);
3401
3413
  const tasks = this.loadTaskState(key);
3402
3414
  for (const [k, t] of diskTasks) {
3403
3415
  if (!tasks.has(k))
@@ -3476,6 +3488,14 @@ export class BrowserService {
3476
3488
  const cdp = new CDPClient();
3477
3489
  await cdp.connect(wsUrl);
3478
3490
  await this.enableDomains(cdp);
3491
+ // This is the path a replacement daemon takes to recover a browser its
3492
+ // predecessor launched, so it is where ownership actually transfers. Only
3493
+ // now — after `verifyBrowserIdentity` confirmed the browser family on the
3494
+ // recorded port and CDP is attached — is it proven that this record
3495
+ // describes a browser we are driving. `adoptProfileRuntimeOwner` rewrites
3496
+ // `daemonPid` alone; an ambiguous identity throws above and adopts
3497
+ // nothing, leaving the record (and the browser) untouched.
3498
+ adoptProfileRuntimeOwner(key);
3479
3499
  const tasks = this.loadTaskState(key);
3480
3500
  for (const [k, t] of diskTasks) {
3481
3501
  if (!tasks.has(k))
@@ -15,16 +15,6 @@ export interface ProfileArtifacts {
15
15
  profile: string;
16
16
  artifacts: BrowserArtifact[];
17
17
  }
18
- /** Every capture for one profile, newest first. */
19
- export declare function listProfileArtifacts(profile: string): BrowserArtifact[];
20
- /**
21
- * Captures grouped by profile. With `only` set, returns just that profile (even
22
- * when empty); otherwise every profile dir on disk that has at least one capture.
23
- */
24
- export declare function listBrowserSessions(only?: string): ProfileArtifacts[];
25
- /** Per-kind counts over a flat artifact list — shared by the printed table and
26
- * the interactive row labels. */
27
- export declare function countByKind(artifacts: BrowserArtifact[]): Record<ArtifactKind, number>;
28
18
  /** Human table for the CLI. Returns lines (no trailing newline). */
29
19
  export declare function renderBrowserSessions(groups: ProfileArtifacts[]): string;
30
20
  /**
@@ -62,7 +62,7 @@ function walkFiles(dir) {
62
62
  return out;
63
63
  }
64
64
  /** Every capture for one profile, newest first. */
65
- export function listProfileArtifacts(profile) {
65
+ function listProfileArtifacts(profile) {
66
66
  const root = getProfileRuntimeDir(profile);
67
67
  const artifacts = [];
68
68
  const sessionsRoot = path.join(root, 'sessions');
@@ -97,7 +97,7 @@ export function listProfileArtifacts(profile) {
97
97
  * Captures grouped by profile. With `only` set, returns just that profile (even
98
98
  * when empty); otherwise every profile dir on disk that has at least one capture.
99
99
  */
100
- export function listBrowserSessions(only) {
100
+ function listBrowserSessions(only) {
101
101
  let profiles;
102
102
  if (only) {
103
103
  // A profile's live tasks/captures may live under a composite runtime dir
@@ -127,7 +127,7 @@ export function listBrowserSessions(only) {
127
127
  }
128
128
  /** Per-kind counts over a flat artifact list — shared by the printed table and
129
129
  * the interactive row labels. */
130
- export function countByKind(artifacts) {
130
+ function countByKind(artifacts) {
131
131
  const counts = { screenshot: 0, pdf: 0, recording: 0, download: 0 };
132
132
  for (const a of artifacts)
133
133
  counts[a.kind]++;
@@ -1,5 +1,5 @@
1
1
  import type { Readable, Writable } from 'stream';
2
- export interface BrowserIPCStreamOptions {
2
+ interface BrowserIPCStreamOptions {
3
3
  input: Readable;
4
4
  output: Writable;
5
5
  task?: string;
@@ -14,3 +14,4 @@ export interface BrowserIPCStreamOptions {
14
14
  * The Node process and daemon connection stay alive until input closes.
15
15
  */
16
16
  export declare function runBrowserIPCStream(options: BrowserIPCStreamOptions): Promise<void>;
17
+ export {};
@@ -1,4 +1,4 @@
1
- export interface TaskBinding {
1
+ interface TaskBinding {
2
2
  device: string;
3
3
  profile?: string;
4
4
  url?: string;
@@ -6,9 +6,9 @@ export interface TaskBinding {
6
6
  launchId?: string;
7
7
  createdAt: number;
8
8
  }
9
- export type TaskIndex = Record<string, TaskBinding>;
9
+ type TaskIndex = Record<string, TaskBinding>;
10
10
  export declare const REJECT_DEVICE_MESSAGE: string;
11
- export type TaskRoute = {
11
+ type TaskRoute = {
12
12
  kind: 'proceed';
13
13
  task?: string;
14
14
  device: string;
@@ -24,7 +24,6 @@ export type TaskRoute = {
24
24
  message: string;
25
25
  };
26
26
  export declare function isTerminalBrowserVerb(verb: string): boolean;
27
- export declare function taskIndexPath(): string;
28
27
  export declare function readTaskIndex(): TaskIndex;
29
28
  export declare function getTaskBinding(name: string): TaskBinding | undefined;
30
29
  export declare function listTaskBindings(): Array<{
@@ -76,3 +75,4 @@ export declare function resolveTaskRoute(opts: {
76
75
  * the captured file to the requested path. Same path → no copy.
77
76
  */
78
77
  export declare function honorScreenshotOutput(requested: string | undefined, daemonPath: string): string;
78
+ export {};
@@ -32,7 +32,7 @@ const TERMINAL_BROWSER_VERBS = new Set(['done', 'stop']);
32
32
  export function isTerminalBrowserVerb(verb) {
33
33
  return TERMINAL_BROWSER_VERBS.has(verb);
34
34
  }
35
- export function taskIndexPath() {
35
+ function taskIndexPath() {
36
36
  return path.join(getBrowserRuntimeDir(), 'task-index.json');
37
37
  }
38
38
  export function readTaskIndex() {
@@ -523,17 +523,6 @@ export interface PageOpenResult {
523
523
  refreshed: boolean;
524
524
  message?: string;
525
525
  }
526
- /** Subset of IPCResponse describing a recording start result. */
527
- export interface RecordStartFields {
528
- fps?: number;
529
- durationCapSec?: number;
530
- maxMb?: number;
531
- }
532
- /** Subset of IPCResponse describing a recording stop result. */
533
- export interface RecordStopFields {
534
- durationMs?: number;
535
- stopReason?: 'manual' | 'duration-cap' | 'size-cap';
536
- }
537
526
  export interface IPCResponse {
538
527
  ok: boolean;
539
528
  error?: string;
@@ -635,15 +624,6 @@ export interface DeviceDescriptor {
635
624
  deviceScaleFactor: number;
636
625
  mobile: boolean;
637
626
  }
638
- export declare const TASK_ID_REGEX: RegExp;
639
627
  export declare function isValidTaskId(id: string): boolean;
640
628
  export declare function generateTaskId(): string;
641
629
  export declare function generateShortId(): string;
642
- export declare function generateFunName(): string;
643
- /**
644
- * Auto-generated task name: `<adjective>-<noun>-<noun>-<hex8>`, e.g.
645
- * `swift-crab-falcon-a3f92b1c`. Three English words make it memorable and
646
- * easy to read; 32 bits of hex give every spawned task enough entropy that
647
- * parallel agents never collide on the daemon side.
648
- */
649
- export declare function generateTaskName(): string;
@@ -49,7 +49,7 @@ export function parseConnectionKey(key) {
49
49
  export function keyBelongsToProfile(key, profile) {
50
50
  return parseConnectionKey(key).profile === profile;
51
51
  }
52
- export const TASK_ID_REGEX = /^[a-z0-9][a-z0-9-]*$/;
52
+ const TASK_ID_REGEX = /^[a-z0-9][a-z0-9-]*$/;
53
53
  export function isValidTaskId(id) {
54
54
  return TASK_ID_REGEX.test(id) && id.length <= 64;
55
55
  }
@@ -59,36 +59,3 @@ export function generateTaskId() {
59
59
  export function generateShortId() {
60
60
  return crypto.randomUUID().split('-')[0]; // 8 chars
61
61
  }
62
- const ADJECTIVES = [
63
- 'swift', 'cosmic', 'jolly', 'quiet', 'bold', 'bright', 'calm', 'eager',
64
- 'golden', 'happy', 'keen', 'lucky', 'noble', 'proud', 'quick', 'royal',
65
- 'silver', 'amber', 'crimson', 'misty', 'sunny', 'gentle', 'wild', 'brave',
66
- 'merry', 'sleek', 'wise', 'fierce', 'curious', 'humble', 'spry', 'witty',
67
- ];
68
- const NOUNS = [
69
- 'falcon', 'comet', 'tiger', 'nebula', 'phoenix', 'river', 'summit', 'wave',
70
- 'aurora', 'breeze', 'crystal', 'dragon', 'ember', 'forest', 'glacier', 'harbor',
71
- 'crab', 'otter', 'hawk', 'fox', 'wolf', 'panda', 'lynx', 'raven',
72
- 'meadow', 'canyon', 'valley', 'orchid', 'cedar', 'thistle', 'lotus', 'briar',
73
- ];
74
- export function generateFunName() {
75
- const adj = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
76
- const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
77
- return `${adj}-${noun}`;
78
- }
79
- /**
80
- * Auto-generated task name: `<adjective>-<noun>-<noun>-<hex8>`, e.g.
81
- * `swift-crab-falcon-a3f92b1c`. Three English words make it memorable and
82
- * easy to read; 32 bits of hex give every spawned task enough entropy that
83
- * parallel agents never collide on the daemon side.
84
- */
85
- export function generateTaskName() {
86
- const adj = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
87
- const noun1 = NOUNS[Math.floor(Math.random() * NOUNS.length)];
88
- let noun2 = NOUNS[Math.floor(Math.random() * NOUNS.length)];
89
- while (noun2 === noun1) {
90
- noun2 = NOUNS[Math.floor(Math.random() * NOUNS.length)];
91
- }
92
- const hex8 = crypto.randomUUID().replace(/-/g, '').slice(0, 8);
93
- return `${adj}-${noun1}-${noun2}-${hex8}`;
94
- }
@@ -1,32 +1,5 @@
1
1
  import type { CDPClient } from './cdp.js';
2
2
  import { type RefNode } from './refs.js';
3
- /**
4
- * File upload strategies for `agents browser upload`.
5
- *
6
- * Every uploader on the web is one of three patterns:
7
- *
8
- * A. Direct file input — the page exposes (or hides) `<input type=file>`.
9
- * `DOM.setFileInputFiles` plants the paths directly. The cleanest
10
- * path; works whenever the input is in the DOM, even when CSS-hidden
11
- * or visually offscreen.
12
- *
13
- * B. Drag-drop target — the page listens for `drop` events on a region
14
- * (Canva, Notion, Linear, GitHub PRs). We dispatch synthetic
15
- * `dragenter`/`dragover`/`drop` events with a `DataTransfer` whose
16
- * `files` list carries a `File` built from disk bytes. The dispatch
17
- * uses real elementFromPoint coordinates so React/DOM listeners fire.
18
- *
19
- * C. Native chooser interception — the user clicks a button that calls
20
- * `input.click()` and the only file input is dynamically created in
21
- * response. `Page.setInterceptFileChooserDialog` flips the chooser
22
- * from a blocking OS dialog into a CDP event; we click the trigger,
23
- * wait for `Page.fileChooserOpened`, then satisfy it with
24
- * `Page.handleFileChooser({ action: 'accept', files })`. Lifecycle:
25
- * enable interception -> click -> wait -> accept -> disable.
26
- */
27
- export interface UploadOptions {
28
- files: string[];
29
- }
30
3
  export declare function getUploadStagingDir(): string;
31
4
  export declare function stageUploadFile(source: string): string;
32
5
  /** Pattern A — direct file input via `DOM.setFileInputFiles`. */
@@ -29,8 +29,6 @@ export interface UsageObservation {
29
29
  cacheReadTokens?: number;
30
30
  cacheCreationTokens?: number;
31
31
  }
32
- /** Default ledger path: <history>/spend/ledger.jsonl. */
33
- export declare function defaultLedgerPath(): string;
34
32
  /** Local YYYY-MM-DD for a Date (defaults to now). Local, not UTC — caps are a human-day notion. */
35
33
  export declare function localDay(d?: Date): string;
36
34
  /**
@@ -17,7 +17,7 @@ import * as path from 'path';
17
17
  import { getHistoryDir } from '../state.js';
18
18
  import { actualCost } from '../pricing/index.js';
19
19
  /** Default ledger path: <history>/spend/ledger.jsonl. */
20
- export function defaultLedgerPath() {
20
+ function defaultLedgerPath() {
21
21
  return path.join(getHistoryDir(), 'spend', 'ledger.jsonl');
22
22
  }
23
23
  /** Local YYYY-MM-DD for a Date (defaults to now). Local, not UTC — caps are a human-day notion. */
@@ -15,7 +15,7 @@
15
15
  import type { CloudProvider, CloudEvent } from '../cloud/types.js';
16
16
  import { type BreachInfo } from './enforce.js';
17
17
  /** Result surface exposed to the caller so it can act on a mid-stream breach. */
18
- export interface CloudBudgetGate {
18
+ interface CloudBudgetGate {
19
19
  /** True once a cap crossed and cancel() was invoked. */
20
20
  breached(): boolean;
21
21
  breach(): BreachInfo | null;
@@ -40,3 +40,4 @@ export declare function wrapStreamWithBudgetGate(args: {
40
40
  wrap: (source: AsyncIterable<CloudEvent>) => AsyncIterable<CloudEvent>;
41
41
  gate: CloudBudgetGate;
42
42
  } | null;
43
+ export {};
@@ -15,7 +15,7 @@
15
15
  import type { BudgetConfig } from '../types.js';
16
16
  import type { SpendEntry } from './ledger.js';
17
17
  /** A pre-flight cost estimate for one run. */
18
- export interface RunEstimate {
18
+ interface RunEstimate {
19
19
  /** Estimated USD for this run. 0 when the model is unpriced. */
20
20
  estUsd: number;
21
21
  /** How the token count was derived. */
@@ -48,7 +48,7 @@ export declare function ledgerAverageTokens(agent: string, ledger: SpendEntry[])
48
48
  output: number;
49
49
  } | null;
50
50
  /** Decision returned by the pre-flight gate. */
51
- export interface PreflightDecision {
51
+ interface PreflightDecision {
52
52
  /** Whether the run may proceed. */
53
53
  allow: boolean;
54
54
  /** Whether the caller must interactively confirm (estimate >= require_confirm_over). */
@@ -80,10 +80,8 @@ export declare function ledgerStateFor(agent: string, project: string, ledger?:
80
80
  * reports the truth).
81
81
  */
82
82
  export declare function enforcePreflight(cfg: BudgetConfig, state: LedgerState, est: RunEstimate): PreflightDecision;
83
- /** Build a one-line human estimate banner for `agents run` preamble. */
84
- export declare function formatEstimateBanner(agent: string, model: string, est: RunEstimate): string;
85
83
  /** Result of the high-level run gate consumed by `agents run` / teams / cloud. */
86
- export interface PreflightGateResult {
84
+ interface PreflightGateResult {
87
85
  /** True when no caps are configured — budget feature dormant, nothing to do. */
88
86
  dormant: boolean;
89
87
  cfg: BudgetConfig;
@@ -153,7 +153,7 @@ export function enforcePreflight(cfg, state, est) {
153
153
  };
154
154
  }
155
155
  /** Build a one-line human estimate banner for `agents run` preamble. */
156
- export function formatEstimateBanner(agent, model, est) {
156
+ function formatEstimateBanner(agent, model, est) {
157
157
  const cost = est.priced ? formatUsd(est.estUsd) : 'unpriced';
158
158
  const basisLabel = est.basis === 'ledger-average'
159
159
  ? 'recent average'
@@ -87,7 +87,7 @@ export declare function missedRunId(expectedAt: Date): string;
87
87
  * still on the record for a human to see and re-run.
88
88
  */
89
89
  export declare function claimMissedFire(job: JobConfig, expectedAt: Date): RunMeta | null;
90
- export interface CatchupOptions {
90
+ interface CatchupOptions {
91
91
  /** Record misses but start no late runs. Powers `catchup --dry-run`. */
92
92
  dryRun?: boolean;
93
93
  /** Clock injection seam for tests. */
@@ -103,3 +103,4 @@ export interface CatchupOptions {
103
103
  * same routine.
104
104
  */
105
105
  export declare function runCatchup(opts?: CatchupOptions): Promise<CatchupOutcome[]>;
106
+ export {};