@phnx-labs/agents-cli 1.22.38 → 1.22.40

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 (554) hide show
  1. package/CHANGELOG.md +302 -0
  2. package/README.md +111 -70
  3. package/dist/bin/agents +0 -0
  4. package/dist/bootstrap.js +46 -27
  5. package/dist/browser.js +2 -2
  6. package/dist/cli/command-registry.d.ts +135 -0
  7. package/dist/cli/command-registry.js +260 -0
  8. package/dist/commands/accounts.d.ts +20 -0
  9. package/dist/commands/accounts.js +186 -25
  10. package/dist/commands/apply.d.ts +3 -3
  11. package/dist/commands/apply.js +20 -63
  12. package/dist/commands/browser.js +206 -94
  13. package/dist/commands/budget.d.ts +7 -6
  14. package/dist/commands/budget.js +8 -7
  15. package/dist/commands/cloud.js +17 -20
  16. package/dist/commands/commands.js +1 -1
  17. package/dist/commands/computer-actions.d.ts +1 -35
  18. package/dist/commands/computer-actions.js +13 -181
  19. package/dist/commands/computer.d.ts +28 -3
  20. package/dist/commands/computer.js +93 -65
  21. package/dist/commands/config.js +47 -4
  22. package/dist/commands/cost.d.ts +2 -1
  23. package/dist/commands/cost.js +7 -6
  24. package/dist/commands/daemon.js +151 -4
  25. package/dist/commands/detach.js +1 -1
  26. package/dist/commands/doctor.js +19 -11
  27. package/dist/commands/events.js +1 -1
  28. package/dist/commands/exec.d.ts +2 -50
  29. package/dist/commands/exec.js +161 -216
  30. package/dist/commands/factory.js +1 -1
  31. package/dist/commands/feed.d.ts +2 -2
  32. package/dist/commands/feed.js +9 -12
  33. package/dist/commands/fleet-capture.js +25 -27
  34. package/dist/commands/focus.d.ts +2 -3
  35. package/dist/commands/focus.js +34 -9
  36. package/dist/commands/go.js +15 -5
  37. package/dist/commands/harness.d.ts +3 -3
  38. package/dist/commands/harness.js +53 -5
  39. package/dist/commands/hooks.js +1 -1
  40. package/dist/commands/import.js +2 -2
  41. package/dist/commands/insights.d.ts +5 -5
  42. package/dist/commands/insights.js +15 -9
  43. package/dist/commands/inspect.d.ts +2 -3
  44. package/dist/commands/inspect.js +4 -16
  45. package/dist/commands/logs.d.ts +2 -2
  46. package/dist/commands/logs.js +9 -9
  47. package/dist/commands/mcp.js +2 -2
  48. package/dist/commands/memory.js +1 -1
  49. package/dist/commands/message.d.ts +1 -1
  50. package/dist/commands/message.js +7 -7
  51. package/dist/commands/mine.d.ts +11 -8
  52. package/dist/commands/mine.js +11 -10
  53. package/dist/commands/models.js +1 -1
  54. package/dist/commands/modes.js +1 -1
  55. package/dist/commands/monitors.js +23 -6
  56. package/dist/commands/output.d.ts +7 -6
  57. package/dist/commands/output.js +11 -10
  58. package/dist/commands/packages.js +4 -4
  59. package/dist/commands/perf.js +1 -1
  60. package/dist/commands/permissions.js +49 -32
  61. package/dist/commands/plugins.d.ts +1 -1
  62. package/dist/commands/plugins.js +3 -3
  63. package/dist/commands/profiles.d.ts +6 -9
  64. package/dist/commands/profiles.js +8 -321
  65. package/dist/commands/projects.d.ts +9 -0
  66. package/dist/commands/projects.js +140 -8
  67. package/dist/commands/prune.js +5 -13
  68. package/dist/commands/refresh-rules.js +1 -1
  69. package/dist/commands/repo.d.ts +5 -7
  70. package/dist/commands/repo.js +34 -18
  71. package/dist/commands/resource-view.js +4 -0
  72. package/dist/commands/resume.d.ts +11 -7
  73. package/dist/commands/resume.js +82 -98
  74. package/dist/commands/route.d.ts +12 -0
  75. package/dist/commands/route.js +261 -0
  76. package/dist/commands/routines.d.ts +2 -3
  77. package/dist/commands/routines.js +120 -145
  78. package/dist/commands/rules.js +1 -1
  79. package/dist/commands/run-account-picker.d.ts +1 -1
  80. package/dist/commands/run-account-picker.js +2 -2
  81. package/dist/commands/run-broadcast.d.ts +21 -0
  82. package/dist/commands/run-broadcast.js +89 -0
  83. package/dist/commands/run-cloud.js +1 -1
  84. package/dist/commands/secrets-vault.d.ts +10 -0
  85. package/dist/commands/{login.js → secrets-vault.js} +34 -14
  86. package/dist/commands/secrets.d.ts +4 -4
  87. package/dist/commands/secrets.js +72 -63
  88. package/dist/commands/sessions-backfill.js +1 -1
  89. package/dist/commands/sessions-browser.d.ts +1 -1
  90. package/dist/commands/sessions-browser.js +9 -5
  91. package/dist/commands/sessions-export.js +2 -2
  92. package/dist/commands/sessions-inject.js +4 -5
  93. package/dist/commands/sessions-migrate.js +16 -27
  94. package/dist/commands/sessions-picker.d.ts +13 -0
  95. package/dist/commands/sessions-picker.js +182 -8
  96. package/dist/commands/sessions-resume.d.ts +7 -3
  97. package/dist/commands/sessions-resume.js +81 -33
  98. package/dist/commands/sessions-stats.js +2 -2
  99. package/dist/commands/sessions.d.ts +75 -68
  100. package/dist/commands/sessions.js +142 -180
  101. package/dist/commands/setup-computer.js +1 -1
  102. package/dist/commands/setup-fleet.js +3 -0
  103. package/dist/commands/setup-mine.d.ts +7 -3
  104. package/dist/commands/setup-mine.js +13 -8
  105. package/dist/commands/setup-secrets.js +2 -2
  106. package/dist/commands/setup-watchdog.js +2 -2
  107. package/dist/commands/setup.js +7 -2
  108. package/dist/commands/share.d.ts +65 -0
  109. package/dist/commands/share.js +253 -20
  110. package/dist/commands/skills.js +3 -3
  111. package/dist/commands/snapshot.d.ts +2 -2
  112. package/dist/commands/snapshot.js +9 -9
  113. package/dist/commands/ssh.d.ts +1 -1
  114. package/dist/commands/ssh.js +318 -48
  115. package/dist/commands/subagents.js +1 -1
  116. package/dist/commands/sync.js +24 -9
  117. package/dist/commands/teams.d.ts +2 -2
  118. package/dist/commands/teams.js +9 -18
  119. package/dist/commands/tmux.js +5 -1
  120. package/dist/commands/trash.js +1 -1
  121. package/dist/commands/usage.d.ts +1 -1
  122. package/dist/commands/usage.js +2 -2
  123. package/dist/commands/utils.d.ts +4 -14
  124. package/dist/commands/utils.js +6 -27
  125. package/dist/commands/versions.js +2 -2
  126. package/dist/commands/view.d.ts +9 -77
  127. package/dist/commands/view.js +23 -8
  128. package/dist/commands/watchdog.js +1 -1
  129. package/dist/commands/webhook.js +11 -25
  130. package/dist/commands/workflows.js +1 -1
  131. package/dist/index.js +1 -1
  132. package/dist/lib/account-capabilities.d.ts +39 -0
  133. package/dist/lib/account-capabilities.js +59 -0
  134. package/dist/lib/account-catalog.js +1 -1
  135. package/dist/lib/account-registry.d.ts +66 -0
  136. package/dist/lib/account-registry.js +151 -5
  137. package/dist/lib/{rotate.d.ts → accounting/rotate.d.ts} +4 -4
  138. package/dist/lib/{rotate.js → accounting/rotate.js} +8 -8
  139. package/dist/lib/{usage.d.ts → accounting/usage.d.ts} +4 -4
  140. package/dist/lib/{usage.js → accounting/usage.js} +11 -11
  141. package/dist/lib/agent-spec/provider.js +1 -1
  142. package/dist/lib/agents.d.ts +72 -4
  143. package/dist/lib/agents.js +231 -199
  144. package/dist/lib/answer-router.d.ts +2 -2
  145. package/dist/lib/ask-classifier.d.ts +1 -1
  146. package/dist/lib/ask-classifier.js +1 -1
  147. package/dist/lib/audit/log.js +1 -1
  148. package/dist/lib/auth-health.d.ts +1 -1
  149. package/dist/lib/auth-health.js +2 -2
  150. package/dist/lib/brand.js +1 -1
  151. package/dist/lib/browser/caller-identity.d.ts +28 -0
  152. package/dist/lib/browser/caller-identity.js +156 -0
  153. package/dist/lib/browser/cdp.js +1 -1
  154. package/dist/lib/browser/drivers/ssh.d.ts +1 -1
  155. package/dist/lib/browser/drivers/ssh.js +2 -2
  156. package/dist/lib/browser/hygiene.d.ts +10 -2
  157. package/dist/lib/browser/hygiene.js +7 -4
  158. package/dist/lib/browser/ipc.d.ts +22 -2
  159. package/dist/lib/browser/ipc.js +185 -21
  160. package/dist/lib/browser/profiles.d.ts +67 -3
  161. package/dist/lib/browser/profiles.js +129 -7
  162. package/dist/lib/browser/remote-control.d.ts +2 -2
  163. package/dist/lib/browser/remote-control.js +3 -3
  164. package/dist/lib/browser/runtime-state.d.ts +79 -0
  165. package/dist/lib/browser/runtime-state.js +119 -1
  166. package/dist/lib/browser/service.d.ts +113 -1
  167. package/dist/lib/browser/service.js +454 -40
  168. package/dist/lib/browser/sessions-list.d.ts +2 -1
  169. package/dist/lib/browser/sessions-list.js +4 -13
  170. package/dist/lib/browser/types.d.ts +18 -0
  171. package/dist/lib/budget/config.js +1 -1
  172. package/dist/lib/budget/ledger.js +1 -1
  173. package/dist/lib/byok-usage.js +1 -1
  174. package/dist/lib/capabilities.js +3 -15
  175. package/dist/lib/catchup.d.ts +1 -1
  176. package/dist/lib/catchup.js +1 -1
  177. package/dist/lib/cloud/dispatch.js +1 -1
  178. package/dist/lib/cloud/host.d.ts +3 -3
  179. package/dist/lib/cloud/host.js +5 -5
  180. package/dist/lib/cloud/rush.d.ts +9 -21
  181. package/dist/lib/cloud/rush.js +33 -120
  182. package/dist/lib/cloud/types.d.ts +2 -2
  183. package/dist/lib/commands.js +3 -13
  184. package/dist/lib/computer/actions.d.ts +36 -0
  185. package/dist/lib/computer/actions.js +162 -0
  186. package/dist/lib/computer/dispatch.d.ts +2 -2
  187. package/dist/lib/computer/dispatch.js +2 -2
  188. package/dist/lib/computer/sessions-list.d.ts +3 -3
  189. package/dist/lib/computer/sessions-list.js +2 -2
  190. package/dist/lib/config-keys.d.ts +12 -3
  191. package/dist/lib/config-keys.js +29 -6
  192. package/dist/lib/config-machine-keys.d.ts +4 -2
  193. package/dist/lib/config-machine-keys.js +6 -2
  194. package/dist/lib/crabbox/lease.js +9 -1
  195. package/dist/lib/crabbox/runtimes.d.ts +32 -7
  196. package/dist/lib/crabbox/runtimes.js +72 -30
  197. package/dist/lib/{daemon.d.ts → daemon/daemon.d.ts} +59 -1
  198. package/dist/lib/{daemon.js → daemon/daemon.js} +237 -49
  199. package/dist/lib/daemon-services.d.ts +1 -1
  200. package/dist/lib/daemon-services.js +5 -0
  201. package/dist/lib/daemon-ticks.d.ts +25 -0
  202. package/dist/lib/daemon-ticks.js +31 -1
  203. package/dist/lib/daemon-webhooks.d.ts +102 -0
  204. package/dist/lib/daemon-webhooks.js +210 -0
  205. package/dist/lib/device-config.d.ts +116 -72
  206. package/dist/lib/device-config.js +366 -132
  207. package/dist/lib/devices/config-migration.d.ts +29 -34
  208. package/dist/lib/devices/config-migration.js +209 -130
  209. package/dist/lib/devices/connect.d.ts +2 -2
  210. package/dist/lib/devices/connect.js +2 -2
  211. package/dist/lib/devices/discovery-policy.d.ts +30 -0
  212. package/dist/lib/devices/discovery-policy.js +101 -0
  213. package/dist/lib/devices/fleet-inventory.js +8 -3
  214. package/dist/lib/devices/harness-inventory.d.ts +1 -1
  215. package/dist/lib/devices/harness-inventory.js +12 -3
  216. package/dist/lib/devices/known-hosts.js +1 -1
  217. package/dist/lib/devices/pool.d.ts +61 -0
  218. package/dist/lib/devices/pool.js +83 -0
  219. package/dist/lib/devices/registry.d.ts +1 -1
  220. package/dist/lib/devices/registry.js +1 -1
  221. package/dist/lib/devices/resolve-profile.d.ts +2 -2
  222. package/dist/lib/devices/resolve-profile.js +2 -2
  223. package/dist/lib/devices/resolve-target.d.ts +1 -1
  224. package/dist/lib/devices/resolve-target.js +4 -4
  225. package/dist/lib/devices/self-host.d.ts +1 -1
  226. package/dist/lib/devices/self-host.js +3 -3
  227. package/dist/lib/devices/ssh-config.d.ts +1 -1
  228. package/dist/lib/devices/stats-cache.js +1 -1
  229. package/dist/lib/devices/sync.d.ts +3 -1
  230. package/dist/lib/devices/sync.js +3 -3
  231. package/dist/lib/doctor-diff.js +4 -4
  232. package/dist/lib/drift-sync.js +2 -2
  233. package/dist/lib/drift.js +2 -2
  234. package/dist/lib/event-families.d.ts +1 -1
  235. package/dist/lib/event-stream.d.ts +1 -1
  236. package/dist/lib/event-stream.js +2 -2
  237. package/dist/lib/events-ingest.js +2 -2
  238. package/dist/lib/exec.d.ts +8 -5
  239. package/dist/lib/exec.js +19 -13
  240. package/dist/lib/factory/snapshot.d.ts +1 -1
  241. package/dist/lib/factory/snapshot.js +1 -1
  242. package/dist/lib/{activity.d.ts → feed/activity.d.ts} +1 -1
  243. package/dist/lib/{activity.js → feed/activity.js} +7 -7
  244. package/dist/lib/{events.d.ts → feed/events.d.ts} +2 -2
  245. package/dist/lib/{events.js → feed/events.js} +5 -5
  246. package/dist/lib/{feed.js → feed/feed.js} +4 -4
  247. package/dist/lib/feed-outcome.d.ts +1 -1
  248. package/dist/lib/feed-policy.d.ts +1 -1
  249. package/dist/lib/feed-policy.js +1 -1
  250. package/dist/lib/feed-post.d.ts +1 -1
  251. package/dist/lib/feed-post.js +1 -1
  252. package/dist/lib/feed-ranking.d.ts +1 -1
  253. package/dist/lib/fleet/apply.d.ts +0 -6
  254. package/dist/lib/fleet/apply.js +18 -45
  255. package/dist/lib/fleet/auth-sync.d.ts +16 -35
  256. package/dist/lib/fleet/auth-sync.js +16 -75
  257. package/dist/lib/fleet/capture.js +8 -6
  258. package/dist/lib/fleet/manifest.js +23 -11
  259. package/dist/lib/fleet/types.d.ts +19 -7
  260. package/dist/lib/fleet-cache.d.ts +1 -1
  261. package/dist/lib/fleet-cache.js +1 -1
  262. package/dist/lib/format.d.ts +19 -0
  263. package/dist/lib/format.js +44 -1
  264. package/dist/lib/friction-heuristics.d.ts +1 -1
  265. package/dist/lib/git.d.ts +24 -1
  266. package/dist/lib/git.js +82 -38
  267. package/dist/lib/heal.js +3 -3
  268. package/dist/lib/hooks.d.ts +18 -0
  269. package/dist/lib/hooks.js +113 -1
  270. package/dist/lib/hosts/credentials.d.ts +30 -10
  271. package/dist/lib/hosts/credentials.js +38 -26
  272. package/dist/lib/hosts/dispatch.d.ts +3 -3
  273. package/dist/lib/hosts/dispatch.js +3 -3
  274. package/dist/lib/hosts/option.d.ts +3 -3
  275. package/dist/lib/hosts/option.js +7 -8
  276. package/dist/lib/hosts/passthrough.d.ts +17 -17
  277. package/dist/lib/hosts/passthrough.js +67 -50
  278. package/dist/lib/hosts/providers/devices.d.ts +1 -1
  279. package/dist/lib/hosts/providers/devices.js +1 -1
  280. package/dist/lib/hosts/reconcile.d.ts +1 -1
  281. package/dist/lib/hosts/reconcile.js +1 -1
  282. package/dist/lib/hosts/reconnect.d.ts +1 -1
  283. package/dist/lib/hosts/reconnect.js +2 -2
  284. package/dist/lib/hosts/registry.d.ts +5 -5
  285. package/dist/lib/hosts/registry.js +5 -5
  286. package/dist/lib/hosts/remote-cmd.d.ts +10 -10
  287. package/dist/lib/hosts/remote-cmd.js +25 -18
  288. package/dist/lib/hosts/remote-os.d.ts +4 -4
  289. package/dist/lib/hosts/remote-os.js +4 -4
  290. package/dist/lib/hosts/remote-session-id.d.ts +2 -2
  291. package/dist/lib/hosts/remote-session-id.js +2 -2
  292. package/dist/lib/hosts/routing-flag.d.ts +3 -3
  293. package/dist/lib/hosts/routing-flag.js +4 -5
  294. package/dist/lib/hosts/run-target.d.ts +4 -4
  295. package/dist/lib/hosts/run-target.js +4 -4
  296. package/dist/lib/hosts/session-index.d.ts +2 -2
  297. package/dist/lib/hosts/session-index.js +1 -1
  298. package/dist/lib/hosts/session-marker.d.ts +1 -1
  299. package/dist/lib/hosts/session-marker.js +1 -1
  300. package/dist/lib/hosts/types.d.ts +2 -2
  301. package/dist/lib/hosts/types.js +2 -2
  302. package/dist/lib/import.js +1 -1
  303. package/dist/lib/{migrate.d.ts → installations/migrate.d.ts} +49 -1
  304. package/dist/lib/{migrate.js → installations/migrate.js} +265 -38
  305. package/dist/lib/installations/resolve.js +1 -1
  306. package/dist/lib/installations/strategies.js +1 -1
  307. package/dist/lib/installations/update.js +2 -2
  308. package/dist/lib/{versions.d.ts → installations/versions.d.ts} +12 -3
  309. package/dist/lib/{versions.js → installations/versions.js} +51 -31
  310. package/dist/lib/isolation-boundary-report.js +1 -1
  311. package/dist/lib/linear-projects.d.ts +28 -0
  312. package/dist/lib/linear-projects.js +30 -0
  313. package/dist/lib/loop.js +1 -1
  314. package/dist/lib/mailbox-gc.js +1 -1
  315. package/dist/lib/mailbox.js +1 -1
  316. package/dist/lib/mcp-registry.d.ts +62 -0
  317. package/dist/lib/mcp-registry.js +177 -0
  318. package/dist/lib/mcp.d.ts +5 -0
  319. package/dist/lib/mcp.js +124 -307
  320. package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
  321. package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
  322. package/dist/lib/menubar/install-menubar.d.ts +7 -0
  323. package/dist/lib/menubar/install-menubar.js +24 -6
  324. package/dist/lib/menubar/snapshot.d.ts +7 -0
  325. package/dist/lib/menubar/snapshot.js +8 -6
  326. package/dist/lib/models.js +1 -1
  327. package/dist/lib/monitors/config.d.ts +12 -0
  328. package/dist/lib/monitors/config.js +3 -0
  329. package/dist/lib/monitors/dispatch.js +26 -5
  330. package/dist/lib/monitors/engine.js +10 -0
  331. package/dist/lib/monitors/sources/webhook.d.ts +1 -1
  332. package/dist/lib/monitors/state.d.ts +42 -0
  333. package/dist/lib/monitors/state.js +30 -0
  334. package/dist/lib/notify.d.ts +1 -1
  335. package/dist/lib/observe-aliases.d.ts +2 -2
  336. package/dist/lib/observe-aliases.js +2 -11
  337. package/dist/lib/output/git-output.js +2 -2
  338. package/dist/lib/overdue.d.ts +1 -1
  339. package/dist/lib/overdue.js +1 -1
  340. package/dist/lib/permissions-registry.d.ts +65 -0
  341. package/dist/lib/permissions-registry.js +599 -0
  342. package/dist/lib/permissions.d.ts +24 -13
  343. package/dist/lib/permissions.js +52 -271
  344. package/dist/lib/picker.d.ts +16 -0
  345. package/dist/lib/picker.js +33 -3
  346. package/dist/lib/placement.d.ts +1 -1
  347. package/dist/lib/placement.js +4 -4
  348. package/dist/lib/platform/paths.d.ts +8 -0
  349. package/dist/lib/platform/paths.js +11 -0
  350. package/dist/lib/platform/posixpath.js +3 -3
  351. package/dist/lib/{plugin-marketplace.d.ts → plugins/plugin-marketplace.d.ts} +1 -1
  352. package/dist/lib/{plugin-marketplace.js → plugins/plugin-marketplace.js} +2 -2
  353. package/dist/lib/{plugins.d.ts → plugins/plugins.d.ts} +1 -1
  354. package/dist/lib/{plugins.js → plugins/plugins.js} +7 -7
  355. package/dist/lib/{skills.d.ts → plugins/skills.d.ts} +1 -1
  356. package/dist/lib/{skills.js → plugins/skills.js} +7 -7
  357. package/dist/lib/pricing/cost.d.ts +1 -1
  358. package/dist/lib/pricing/cost.js +1 -1
  359. package/dist/lib/profiles-presets.d.ts +1 -1
  360. package/dist/lib/profiles-presets.js +1 -1
  361. package/dist/lib/profiles.js +2 -2
  362. package/dist/lib/project-import.js +4 -1
  363. package/dist/lib/project-launch.d.ts +1 -1
  364. package/dist/lib/project-launch.js +3 -3
  365. package/dist/lib/project-pull.d.ts +128 -0
  366. package/dist/lib/project-pull.js +384 -0
  367. package/dist/lib/project-root.d.ts +2 -2
  368. package/dist/lib/project-root.js +2 -2
  369. package/dist/lib/project-status.js +1 -1
  370. package/dist/lib/projects.d.ts +23 -0
  371. package/dist/lib/projects.js +29 -6
  372. package/dist/lib/refresh.d.ts +12 -1
  373. package/dist/lib/refresh.js +16 -9
  374. package/dist/lib/registry.d.ts +9 -2
  375. package/dist/lib/registry.js +11 -4
  376. package/dist/lib/resources.d.ts +2 -2
  377. package/dist/lib/resources.js +2 -2
  378. package/dist/lib/routers.d.ts +81 -0
  379. package/dist/lib/routers.js +153 -0
  380. package/dist/lib/routine-context.d.ts +1 -0
  381. package/dist/lib/routine-context.js +7 -2
  382. package/dist/lib/routine-notify-owner.d.ts +1 -1
  383. package/dist/lib/routine-notify.d.ts +1 -1
  384. package/dist/lib/routine-notify.js +1 -1
  385. package/dist/lib/routine-process-cleanup.d.ts +1 -1
  386. package/dist/lib/routine-readiness.d.ts +1 -1
  387. package/dist/lib/routine-readiness.js +11 -4
  388. package/dist/lib/routines-placement.d.ts +12 -2
  389. package/dist/lib/routines-placement.js +20 -3
  390. package/dist/lib/routines-project.d.ts +1 -1
  391. package/dist/lib/routines-project.js +1 -1
  392. package/dist/lib/rules/compile.d.ts +1 -0
  393. package/dist/lib/rules/compile.js +10 -2
  394. package/dist/lib/rules/rules.js +1 -1
  395. package/dist/lib/run-notify.js +1 -1
  396. package/dist/lib/runner.d.ts +80 -2
  397. package/dist/lib/runner.js +241 -62
  398. package/dist/lib/sandbox.d.ts +1 -1
  399. package/dist/lib/scheduler.d.ts +1 -1
  400. package/dist/lib/scheduler.js +1 -1
  401. package/dist/lib/{routines.d.ts → scheduling/routines.d.ts} +54 -9
  402. package/dist/lib/{routines.js → scheduling/routines.js} +173 -14
  403. package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
  404. package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
  405. package/dist/lib/secrets/agent.js +2 -2
  406. package/dist/lib/secrets/audit.js +1 -1
  407. package/dist/lib/secrets/bundles.d.ts +3 -3
  408. package/dist/lib/secrets/bundles.js +7 -7
  409. package/dist/lib/secrets/index.js +1 -1
  410. package/dist/lib/secrets/list-filter.d.ts +1 -1
  411. package/dist/lib/secrets/list-filter.js +2 -2
  412. package/dist/lib/secrets/push.d.ts +1 -1
  413. package/dist/lib/secrets/push.js +10 -12
  414. package/dist/lib/secrets/remote.d.ts +12 -10
  415. package/dist/lib/secrets/remote.js +21 -14
  416. package/dist/lib/secrets/vault.js +2 -2
  417. package/dist/lib/self-heal/checks/shadowing.js +1 -1
  418. package/dist/lib/self-heal/checks/shims.js +1 -1
  419. package/dist/lib/self-update.d.ts +39 -4
  420. package/dist/lib/self-update.js +78 -25
  421. package/dist/lib/serve/control.d.ts +1 -1
  422. package/dist/lib/serve/control.js +4 -4
  423. package/dist/lib/serve/data.d.ts +1 -1
  424. package/dist/lib/serve/data.js +1 -1
  425. package/dist/lib/serve/stream.js +1 -1
  426. package/dist/lib/service-manifest.d.ts +29 -0
  427. package/dist/lib/service-manifest.js +80 -0
  428. package/dist/lib/session/active.d.ts +59 -7
  429. package/dist/lib/session/active.js +158 -17
  430. package/dist/lib/session/bash-command.js +1 -1
  431. package/dist/lib/session/claude-accounts.d.ts +1 -1
  432. package/dist/lib/session/claude-accounts.js +1 -1
  433. package/dist/lib/session/db.d.ts +10 -2
  434. package/dist/lib/session/db.js +25 -6
  435. package/dist/lib/session/discover.d.ts +77 -0
  436. package/dist/lib/session/discover.js +130 -25
  437. package/dist/lib/session/fork.js +1 -1
  438. package/dist/lib/session/inject.d.ts +1 -1
  439. package/dist/lib/session/insights.d.ts +1 -1
  440. package/dist/lib/session/insights.js +1 -1
  441. package/dist/lib/session/live-metadata.d.ts +15 -0
  442. package/dist/lib/session/live-metadata.js +76 -0
  443. package/dist/lib/session/migrate-targets.d.ts +1 -1
  444. package/dist/lib/session/recovery.d.ts +1 -1
  445. package/dist/lib/session/recovery.js +2 -2
  446. package/dist/lib/session/remote-active.d.ts +10 -1
  447. package/dist/lib/session/remote-active.js +8 -3
  448. package/dist/lib/session/remote-bundle.d.ts +1 -1
  449. package/dist/lib/session/remote-bundle.js +2 -2
  450. package/dist/lib/session/remote-list.d.ts +15 -4
  451. package/dist/lib/session/remote-list.js +40 -3
  452. package/dist/lib/session/remote.d.ts +5 -5
  453. package/dist/lib/session/remote.js +13 -17
  454. package/dist/lib/session/resume-command.d.ts +3 -2
  455. package/dist/lib/session/resume-command.js +4 -3
  456. package/dist/lib/session/resume-owner.d.ts +3 -3
  457. package/dist/lib/session/resume-owner.js +3 -3
  458. package/dist/lib/session/session-cache.d.ts +12 -0
  459. package/dist/lib/session/session-cache.js +2 -0
  460. package/dist/lib/session/shell-programs.js +1 -1
  461. package/dist/lib/session/state.js +5 -5
  462. package/dist/lib/session/team-filter.d.ts +1 -1
  463. package/dist/lib/session/team-filter.js +1 -1
  464. package/dist/lib/session/types.d.ts +3 -3
  465. package/dist/lib/session/width.d.ts +2 -2
  466. package/dist/lib/session/width.js +2 -2
  467. package/dist/lib/share/delete.d.ts +21 -0
  468. package/dist/lib/share/delete.js +42 -0
  469. package/dist/lib/share/publish.d.ts +82 -0
  470. package/dist/lib/share/publish.js +170 -18
  471. package/dist/lib/share/worker-template.js +172 -9
  472. package/dist/lib/shims.js +35 -7
  473. package/dist/lib/smart-launch.d.ts +36 -6
  474. package/dist/lib/smart-launch.js +65 -8
  475. package/dist/lib/snapshot.d.ts +4 -4
  476. package/dist/lib/snapshot.js +2 -2
  477. package/dist/lib/ssh-exec.d.ts +1 -1
  478. package/dist/lib/ssh-exec.js +2 -2
  479. package/dist/lib/ssh-tunnel.d.ts +10 -10
  480. package/dist/lib/ssh-tunnel.js +12 -12
  481. package/dist/lib/staleness/checkers/hooks.d.ts +1 -1
  482. package/dist/lib/staleness/checkers/hooks.js +1 -1
  483. package/dist/lib/staleness/detectors/permissions.js +0 -23
  484. package/dist/lib/staleness/detectors/plugins.js +1 -1
  485. package/dist/lib/staleness/fingerprint.js +1 -1
  486. package/dist/lib/staleness/layers.d.ts +1 -1
  487. package/dist/lib/staleness/layers.js +1 -1
  488. package/dist/lib/staleness/writers/mcp.js +3 -1
  489. package/dist/lib/staleness/writers/plugins.js +1 -1
  490. package/dist/lib/staleness/writers/types.d.ts +8 -0
  491. package/dist/lib/startup/command-registry.d.ts +5 -147
  492. package/dist/lib/startup/command-registry.js +38 -303
  493. package/dist/lib/startup/dev-build.d.ts +0 -21
  494. package/dist/lib/startup/dev-build.js +29 -8
  495. package/dist/lib/state.d.ts +19 -1
  496. package/dist/lib/state.js +120 -51
  497. package/dist/lib/subagents.js +1 -1
  498. package/dist/lib/sync-status.js +1 -1
  499. package/dist/lib/sync-umbrella.d.ts +6 -1
  500. package/dist/lib/sync-umbrella.js +9 -4
  501. package/dist/lib/teams/agents.js +2 -2
  502. package/dist/lib/teams/registry.js +1 -1
  503. package/dist/lib/terminal/backends/vscodium-agent.js +1 -1
  504. package/dist/lib/terminal/engine.js +1 -1
  505. package/dist/lib/terminal/index.d.ts +4 -0
  506. package/dist/lib/terminal/index.js +3 -0
  507. package/dist/lib/terminal/inject.d.ts +2 -2
  508. package/dist/lib/terminal/inject.js +2 -2
  509. package/dist/lib/terminal/transport.js +1 -1
  510. package/dist/lib/tmux/index.d.ts +1 -1
  511. package/dist/lib/tmux/index.js +1 -1
  512. package/dist/lib/tmux/session.d.ts +21 -5
  513. package/dist/lib/tmux/session.js +76 -22
  514. package/dist/lib/triggers/handlers.d.ts +1 -1
  515. package/dist/lib/triggers/handlers.js +2 -2
  516. package/dist/lib/triggers/webhook.d.ts +36 -2
  517. package/dist/lib/triggers/webhook.js +97 -42
  518. package/dist/lib/types.d.ts +18 -6
  519. package/dist/lib/usage-fleet.d.ts +1 -1
  520. package/dist/lib/usage-fleet.js +1 -1
  521. package/dist/lib/usage-refresh.d.ts +1 -1
  522. package/dist/lib/usage-refresh.js +3 -3
  523. package/dist/lib/version-duplicates.js +2 -2
  524. package/dist/lib/view-types.d.ts +56 -0
  525. package/dist/lib/view-types.js +1 -0
  526. package/dist/lib/watchdog/rotate.d.ts +2 -2
  527. package/dist/lib/watchdog/rotate.js +3 -3
  528. package/dist/lib/watchdog/runner.d.ts +2 -3
  529. package/dist/lib/watchdog/runner.js +3 -4
  530. package/dist/lib/workflows.js +1 -1
  531. package/package.json +2 -1
  532. package/scripts/postinstall.js +2 -2
  533. package/dist/commands/bench.d.ts +0 -2
  534. package/dist/commands/bench.js +0 -101
  535. package/dist/commands/cp.d.ts +0 -84
  536. package/dist/commands/cp.js +0 -231
  537. package/dist/commands/login.d.ts +0 -2
  538. package/dist/lib/resources/commands.d.ts +0 -46
  539. package/dist/lib/resources/commands.js +0 -211
  540. package/dist/lib/resources/hooks.d.ts +0 -16
  541. package/dist/lib/resources/hooks.js +0 -153
  542. package/dist/lib/resources/mcp.d.ts +0 -34
  543. package/dist/lib/resources/mcp.js +0 -250
  544. package/dist/lib/resources/memory.d.ts +0 -15
  545. package/dist/lib/resources/memory.js +0 -46
  546. package/dist/lib/resources/permissions.d.ts +0 -13
  547. package/dist/lib/resources/permissions.js +0 -202
  548. package/dist/lib/resources/rules.d.ts +0 -46
  549. package/dist/lib/resources/rules.js +0 -179
  550. package/dist/lib/resources/skills.d.ts +0 -37
  551. package/dist/lib/resources/skills.js +0 -247
  552. package/dist/lib/resources/subagents.d.ts +0 -46
  553. package/dist/lib/resources/subagents.js +0 -202
  554. /package/dist/lib/{feed.d.ts → feed/feed.d.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ import { type ProfileScope } from './profiles.js';
1
2
  /**
2
3
  * Per-profile runtime files we persist under
3
4
  * `~/.agents/.cache/browser/<composite>/`:
@@ -114,3 +115,81 @@ export declare function reapOrphanedProcesses(): {
114
115
  reaped: number;
115
116
  details: string[];
116
117
  };
118
+ /**
119
+ * True when ANY cache dir belonging to this profile still has a live browser or
120
+ * SSH tunnel, or an open task. The composite naming (`<name>@<endpoint>`) means
121
+ * one profile can own several runtime dirs, so checking only
122
+ * `getProfileRuntimeDir(name)` would miss a running composite — and prune must
123
+ * never remove a profile that is in use.
124
+ *
125
+ * A recorded `pid: 0` means "attached to a browser someone else launched", so it
126
+ * is not our process to protect; an open task on that dir still counts as in use.
127
+ */
128
+ export declare function isProfileInUse(profileName: string): boolean;
129
+ /** Why a profile is considered dead. */
130
+ export type PruneReason = 'binary-missing' | 'never-used';
131
+ export interface PruneCandidate {
132
+ name: string;
133
+ scope: ProfileScope;
134
+ reason: PruneReason;
135
+ /** Cache dirs that would be removed along with the config entry. */
136
+ cacheDirs: string[];
137
+ }
138
+ export interface PrunePlan {
139
+ /** Profiles that would be (or were) removed. */
140
+ candidates: PruneCandidate[];
141
+ /** Profiles deliberately left alone, with the guard that kept them. */
142
+ kept: Array<{
143
+ name: string;
144
+ scope: ProfileScope;
145
+ why: string;
146
+ }>;
147
+ }
148
+ export declare const PRUNE_REASON_TEXT: Record<PruneReason, string>;
149
+ /**
150
+ * Decide which browser profiles are dead, WITHOUT touching anything.
151
+ * `pruneProfiles` executes exactly this plan, so `--dry-run` and the real run
152
+ * can never disagree.
153
+ *
154
+ * Dead means one of {@link PruneReason}: the configured browser cannot launch
155
+ * here at all, or the profile has never been started so nothing on this disk
156
+ * refers to it. That second reason is what actually reclaims agent-minted
157
+ * throwaway profiles (RUSH-2716) — they are created for an installed browser, so
158
+ * only "never started" identifies them.
159
+ *
160
+ * Four guards, and each exists because removing that profile would be wrong
161
+ * rather than merely tidy:
162
+ * - **in use** — a live browser, SSH tunnel, or open task on any of its dirs.
163
+ * - **the configured default** — this machine resolves a bare
164
+ * `agents browser start` to it; removing it breaks that command.
165
+ * - **`default`** — auto-regenerated by `ensureDefaultBrowserProfile`, so
166
+ * pruning it is pure churn.
167
+ * - **fleet-synced** — deleting one removes it from EVERY machine, so it takes
168
+ * the explicit `includeFleet` opt-in.
169
+ *
170
+ * Known limitation: `BrowserProfileConfig` records no creation time, so a
171
+ * profile created seconds ago and not yet started is indistinguishable from an
172
+ * abandoned one and is reported `never-used`. That is why the verb is explicit
173
+ * and `--dry-run` exists.
174
+ */
175
+ export declare function planProfilePrune(profiles: Array<{
176
+ name: string;
177
+ scope: ProfileScope;
178
+ launchableHere: boolean;
179
+ }>, opts?: {
180
+ includeFleet?: boolean;
181
+ configuredDefault?: string;
182
+ }): PrunePlan;
183
+ /**
184
+ * Build the prune plan from live config. Split from {@link planProfilePrune} so
185
+ * the decision rules stay unit-testable without a configured machine.
186
+ */
187
+ export declare function buildProfilePrunePlan(opts?: {
188
+ includeFleet?: boolean;
189
+ }): Promise<PrunePlan>;
190
+ /**
191
+ * Execute a prune plan: drop each candidate's config entry and wipe its cache
192
+ * dirs. Returns the plan that was applied so the caller can report exactly what
193
+ * went, matching what `--dry-run` printed.
194
+ */
195
+ export declare function pruneProfiles(plan: PrunePlan): Promise<PrunePlan>;
@@ -1,7 +1,7 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { execFileSync } from 'child_process';
4
- import { getProfileRuntimeDir, getBrowserRuntimeDir } from './profiles.js';
4
+ import { getProfileRuntimeDir, getBrowserRuntimeDir, listProfilesWithScope, getConfiguredDefaultProfileName, isProfileLaunchableHere, deleteProfile, DEFAULT_BROWSER_PROFILE_NAME, } from './profiles.js';
5
5
  const PID_FILE = 'pid';
6
6
  const PORT_FILE = 'port';
7
7
  const COMMAND_FILE = 'command';
@@ -247,6 +247,124 @@ export function reapOrphanedProcesses() {
247
247
  }
248
248
  return { reaped, details };
249
249
  }
250
+ /**
251
+ * True when ANY cache dir belonging to this profile still has a live browser or
252
+ * SSH tunnel, or an open task. The composite naming (`<name>@<endpoint>`) means
253
+ * one profile can own several runtime dirs, so checking only
254
+ * `getProfileRuntimeDir(name)` would miss a running composite — and prune must
255
+ * never remove a profile that is in use.
256
+ *
257
+ * A recorded `pid: 0` means "attached to a browser someone else launched", so it
258
+ * is not our process to protect; an open task on that dir still counts as in use.
259
+ */
260
+ export function isProfileInUse(profileName) {
261
+ for (const dir of listProfileCacheDirs(profileName)) {
262
+ const entry = path.basename(dir);
263
+ if (readTaskCount(dir) > 0)
264
+ return true;
265
+ const meta = readProfileRuntimeMeta(entry);
266
+ if (!meta)
267
+ continue;
268
+ if (meta.pid && isProcessAlive(meta.pid, meta.command))
269
+ return true;
270
+ if (meta.tunnelPid && isProcessAlive(meta.tunnelPid, 'ssh'))
271
+ return true;
272
+ }
273
+ return false;
274
+ }
275
+ export const PRUNE_REASON_TEXT = {
276
+ 'binary-missing': 'its browser/binary is not installed on this machine',
277
+ 'never-used': 'it has never been started (no runtime dir)',
278
+ };
279
+ /**
280
+ * Decide which browser profiles are dead, WITHOUT touching anything.
281
+ * `pruneProfiles` executes exactly this plan, so `--dry-run` and the real run
282
+ * can never disagree.
283
+ *
284
+ * Dead means one of {@link PruneReason}: the configured browser cannot launch
285
+ * here at all, or the profile has never been started so nothing on this disk
286
+ * refers to it. That second reason is what actually reclaims agent-minted
287
+ * throwaway profiles (RUSH-2716) — they are created for an installed browser, so
288
+ * only "never started" identifies them.
289
+ *
290
+ * Four guards, and each exists because removing that profile would be wrong
291
+ * rather than merely tidy:
292
+ * - **in use** — a live browser, SSH tunnel, or open task on any of its dirs.
293
+ * - **the configured default** — this machine resolves a bare
294
+ * `agents browser start` to it; removing it breaks that command.
295
+ * - **`default`** — auto-regenerated by `ensureDefaultBrowserProfile`, so
296
+ * pruning it is pure churn.
297
+ * - **fleet-synced** — deleting one removes it from EVERY machine, so it takes
298
+ * the explicit `includeFleet` opt-in.
299
+ *
300
+ * Known limitation: `BrowserProfileConfig` records no creation time, so a
301
+ * profile created seconds ago and not yet started is indistinguishable from an
302
+ * abandoned one and is reported `never-used`. That is why the verb is explicit
303
+ * and `--dry-run` exists.
304
+ */
305
+ export function planProfilePrune(profiles, opts = {}) {
306
+ const plan = { candidates: [], kept: [] };
307
+ for (const { name, scope, launchableHere } of profiles) {
308
+ const keep = (why) => { plan.kept.push({ name, scope, why }); };
309
+ if (scope === 'fleet' && !opts.includeFleet) {
310
+ keep('fleet-synced (pass --fleet to include it)');
311
+ continue;
312
+ }
313
+ if (name === DEFAULT_BROWSER_PROFILE_NAME) {
314
+ keep('the auto-detected default profile');
315
+ continue;
316
+ }
317
+ if (opts.configuredDefault && name === opts.configuredDefault) {
318
+ keep("this machine's configured default profile");
319
+ continue;
320
+ }
321
+ if (isProfileInUse(name)) {
322
+ keep('in use (live browser, tunnel, or open task)');
323
+ continue;
324
+ }
325
+ const cacheDirs = listProfileCacheDirs(name);
326
+ if (!launchableHere) {
327
+ plan.candidates.push({ name, scope, reason: 'binary-missing', cacheDirs });
328
+ continue;
329
+ }
330
+ if (cacheDirs.length === 0) {
331
+ plan.candidates.push({ name, scope, reason: 'never-used', cacheDirs });
332
+ continue;
333
+ }
334
+ keep('healthy (browser installed, has runtime state)');
335
+ }
336
+ return plan;
337
+ }
338
+ /**
339
+ * Build the prune plan from live config. Split from {@link planProfilePrune} so
340
+ * the decision rules stay unit-testable without a configured machine.
341
+ */
342
+ export async function buildProfilePrunePlan(opts = {}) {
343
+ const scoped = await listProfilesWithScope();
344
+ return planProfilePrune(scoped.map(({ profile, scope }) => ({
345
+ name: profile.name,
346
+ scope,
347
+ launchableHere: isProfileLaunchableHere(profile),
348
+ })), { includeFleet: opts.includeFleet, configuredDefault: getConfiguredDefaultProfileName() });
349
+ }
350
+ /**
351
+ * Execute a prune plan: drop each candidate's config entry and wipe its cache
352
+ * dirs. Returns the plan that was applied so the caller can report exactly what
353
+ * went, matching what `--dry-run` printed.
354
+ */
355
+ export async function pruneProfiles(plan) {
356
+ for (const candidate of plan.candidates) {
357
+ await deleteProfile(candidate.name);
358
+ for (const dir of candidate.cacheDirs) {
359
+ try {
360
+ fs.rmSync(dir, { recursive: true, force: true });
361
+ }
362
+ catch { /* already gone */ }
363
+ }
364
+ removeProfileCache(candidate.name);
365
+ }
366
+ return plan;
367
+ }
250
368
  function matchesCommand(pid, expectedCommand) {
251
369
  const out = liveProcessCommand(pid);
252
370
  if (!out)
@@ -1,3 +1,4 @@
1
+ import { CDPClient } from './cdp.js';
1
2
  import { type ResolvedDomainSkill } from './domain-skills.js';
2
3
  import { type Task, type TabInfo, type ProfileStatus, type HistoricalTask, type ReapResult } from './types.js';
3
4
  import { type ReapOptions } from './hygiene.js';
@@ -44,6 +45,61 @@ export declare function pickWindowTarget<T extends {
44
45
  export declare function parseSinceUntil(s: string): Date;
45
46
  export declare function readNewestMatchingRemoteFileCommand(dir: string, prefix: string, tailLines: number): string;
46
47
  export declare function readNewestMatchingFile(dir: string, prefix: string, tailLines: number): string;
48
+ interface ProfileConnection {
49
+ cdp: CDPClient;
50
+ port: number;
51
+ pid: number;
52
+ electron?: boolean;
53
+ /** Raw `url:<v>` / `title:<v>` filter copied from the profile config. */
54
+ targetFilter?: string;
55
+ /**
56
+ * The composite key this connection is registered under in `this.connections`
57
+ * (`<profile>` / `<profile>@<endpoint>` / `<profile>.<fork>`). It is the same
58
+ * name used to key the profile's runtime dir, so downloads and session
59
+ * captures land under `.cache/browser/<profileName>/`. Set at registration.
60
+ */
61
+ profileName?: string;
62
+ /**
63
+ * Bare YAML profile name without the `@<endpoint>` suffix. Kept so
64
+ * `status --profile comet-local` matches the composite connection key
65
+ * `comet-local@endpoint-0` without prefix-matching wrong browsers.
66
+ */
67
+ bareName?: string;
68
+ forkedFrom?: string;
69
+ tasks: Map<string, Task>;
70
+ windowId?: string;
71
+ targetCache?: {
72
+ targets: TargetInfo[];
73
+ ts: number;
74
+ };
75
+ sessionCache: Map<string, string>;
76
+ /**
77
+ * Connection-specific teardown (e.g. killing the SSH tunnel for an ssh://
78
+ * profile). Must be called whenever the connection is removed from
79
+ * `this.connections`, otherwise the tunnel leaks across daemon restarts
80
+ * and hijacks future `cdp://127.0.0.1:N` profiles on the same local port.
81
+ */
82
+ cleanup?: () => void;
83
+ }
84
+ /** Join error lines so callers get a next command, not a dead-end message. */
85
+ export declare function actionable(...lines: string[]): string;
86
+ /** Derive a human label from an explicit title or a navigated URL. */
87
+ export declare function deriveTaskLabel(opts: {
88
+ title?: string;
89
+ url?: string;
90
+ existing?: string;
91
+ }): string;
92
+ /**
93
+ * True when `key` is the bare profile name or one of its composite endpoint
94
+ * keys (`name@endpoint`). Used by status/stop so `comet-local` matches
95
+ * `comet-local@endpoint-0`.
96
+ */
97
+ export declare function connectionKeyMatchesProfile(key: string, profileName: string): boolean;
98
+ type TargetInfo = {
99
+ targetId: string;
100
+ url?: string;
101
+ title?: string;
102
+ };
47
103
  /** Describes a ref that was re-resolved from a drifted integer via its cached descriptor. */
48
104
  export interface HealInfo {
49
105
  from: number;
@@ -94,6 +150,8 @@ export declare class BrowserService {
94
150
  launchId?: string;
95
151
  /** Calling agent session, forwarded from the CLI (see IPCRequest.sessionId). */
96
152
  sessionId?: string;
153
+ /** Explicit human label (`--title`). */
154
+ title?: string;
97
155
  }): Promise<{
98
156
  task: string;
99
157
  name: string;
@@ -264,6 +322,7 @@ export declare class BrowserService {
264
322
  };
265
323
  status(profileName?: string): Promise<ProfileStatus[]>;
266
324
  private reconcileFromDisk;
325
+ private profileStatusFromDisk;
267
326
  setViewport(taskId: string, width: number, height: number, options?: {
268
327
  mobile?: boolean;
269
328
  deviceScaleFactor?: number;
@@ -335,7 +394,37 @@ export declare class BrowserService {
335
394
  private enableDomains;
336
395
  private getOrCreateWindow;
337
396
  private hasTaskNamed;
338
- private generateUniqueTaskName;
397
+ /** Map key for a task on a connection (tasks are keyed by `name`). */
398
+ private taskMapKey;
399
+ /** Find a task by map key, id, or name on one connection. */
400
+ private lookupTaskOnConn;
401
+ private maybeUpdateLabelFromUrl;
402
+ /**
403
+ * Resolve a task for a page/close verb.
404
+ *
405
+ * - explicit `task` handle → look up (with disk rehydrate on RAM miss)
406
+ * - no handle, exactly one live task for this caller → use it
407
+ * - no handle, multiple for this caller → error listing them + `--task`
408
+ * - no handle, zero for this caller, createIfMissing → start a new task
409
+ * - no handle, zero, !createIfMissing → return null (caller reports "nothing to close")
410
+ */
411
+ resolveOrCreateTask(opts: {
412
+ task?: string;
413
+ profile?: string;
414
+ actor?: string;
415
+ launchId?: string;
416
+ sessionId?: string;
417
+ createIfMissing: boolean;
418
+ title?: string;
419
+ url?: string;
420
+ }): Promise<{
421
+ conn: ProfileConnection;
422
+ task: Task;
423
+ profileName: string;
424
+ created: boolean;
425
+ } | null>;
426
+ private listTasksForCaller;
427
+ private currentUrlHint;
339
428
  /**
340
429
  * Mark a task as active, so the reaper's idle window measures time since the
341
430
  * last real use rather than time since `start` (RUSH-2622).
@@ -356,6 +445,28 @@ export declare class BrowserService {
356
445
  */
357
446
  private touchTask;
358
447
  private findTask;
448
+ /**
449
+ * Soft-attach to an already-running browser for a runtime dir.
450
+ *
451
+ * Never launches a browser and never clears pid/port files on failure —
452
+ * `connectProfile` does both, which made `status()` wipe disk state when
453
+ * CDP was unreachable (CI / post-reaper) and then return an empty list.
454
+ * Returns null when nothing is speaking CDP so callers can fall through
455
+ * to disk reconcile.
456
+ */
457
+ private attachRunningProfile;
458
+ /**
459
+ * Reconnect every profile runtime dir that still has a live browser and
460
+ * tasks.json entries. Used before identity-based resolution so a daemon
461
+ * restart does not make the caller's tasks invisible.
462
+ */
463
+ private rehydrateAllFromDisk;
464
+ /**
465
+ * On a RAM miss, scan profile runtime dirs for a tasks.json entry matching
466
+ * `taskId`, soft-attach when CDP is still up, and register the connection.
467
+ * Does not launch browsers or clear runtime files.
468
+ */
469
+ private rehydrateTaskFromDisk;
359
470
  private getTabsForTask;
360
471
  private getProfileStatus;
361
472
  private getTarget;
@@ -366,3 +477,4 @@ export declare class BrowserService {
366
477
  private saveToHistory;
367
478
  getHistory(limit?: number): Promise<HistoricalTask[]>;
368
479
  }
480
+ export {};