@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
@@ -1871,7 +1871,7 @@ export function migrateRoutineRemoteCwdToCwd(routinesDir) {
1871
1871
  * `resume`) makes it ready. Never materializes a device manifest that does not
1872
1872
  * yet exist, and never touches command routines (they run in the target home).
1873
1873
  */
1874
- export function pauseUnreadyEnabledRoutines() {
1874
+ function pauseUnreadyEnabledRoutines() {
1875
1875
  const enabled = enabledRoutineNames();
1876
1876
  if (enabled === null)
1877
1877
  return; // no manifest yet — nothing activated to pause
@@ -358,7 +358,7 @@ export declare function listShimFileNames(): string[];
358
358
  /**
359
359
  * Prune a stale, orphaned shim: one that is NOT a managed agent shim and NOT a user
360
360
  * alias, whose baked `AGENTS_BIN` points at an install that no longer exists. These
361
- * are `exec "$AGENTS_BIN" <cmd>` command shims (browser/sessions/pty/teams) that
361
+ * are `exec "$AGENTS_BIN" <cmd>` command shims (browser/teams) that
362
362
  * `scripts/postinstall.js` writes for the LIVE install; one baked at a removed
363
363
  * install either dies with `exit 127` or shadows the real package bin on PATH.
364
364
  * Only removed when the baked target is gone, so a working shim is never touched —
@@ -2197,11 +2197,11 @@ export function listShimFileNames() {
2197
2197
  * `computer` bin of its own: a machine that installed an older CLI has a real
2198
2198
  * shim on PATH under the name the standalone engine now owns.
2199
2199
  */
2200
- const LEGACY_SHIMS_ALWAYS_PRUNED = new Set(['secrets', 'sessions', 'computer']);
2200
+ const LEGACY_SHIMS_ALWAYS_PRUNED = new Set(['secrets', 'sessions', 'computer', 'pty']);
2201
2201
  /**
2202
2202
  * Prune a stale, orphaned shim: one that is NOT a managed agent shim and NOT a user
2203
2203
  * alias, whose baked `AGENTS_BIN` points at an install that no longer exists. These
2204
- * are `exec "$AGENTS_BIN" <cmd>` command shims (browser/sessions/pty/teams) that
2204
+ * are `exec "$AGENTS_BIN" <cmd>` command shims (browser/teams) that
2205
2205
  * `scripts/postinstall.js` writes for the LIVE install; one baked at a removed
2206
2206
  * install either dies with `exit 127` or shadows the real package bin on PATH.
2207
2207
  * Only removed when the baked target is gone, so a working shim is never touched —
@@ -299,7 +299,7 @@ async function runAutoUpdatePassUntilCancelled(opts, cancelled) {
299
299
  // (`ensureShimCurrent`/`ensureVersionedAliasCurrent`). Deliberately
300
300
  // NEVER `adoptShadowingLauncher`: that seizes a launcher this pass does
301
301
  // not own (a user's own PATH entry, or another install's), and is an
302
- // operator-triggered `doctor --fix` action, not something an unattended
302
+ // operator-triggered `agents sync` action, not something an unattended
303
303
  // background pass may do on its own. Real-pass-only, same reason as the
304
304
  // migration above — a `--check` preview must not touch PATH or a
305
305
  // config-dir symlink.
@@ -42,7 +42,7 @@ export declare const LINEAR_CACHE_TTL_MS: number;
42
42
  */
43
43
  export declare function resolveLinearApiKey(): string | null;
44
44
  /** What a lookup found, and how much to trust it. */
45
- export interface CacheHit<T> {
45
+ interface CacheHit<T> {
46
46
  value: T;
47
47
  /** Age in ms. Past the TTL the value is still returned, flagged stale. */
48
48
  ageMs: number;
@@ -68,3 +68,4 @@ export declare function parseRateLimitReset(header: string | null, nowMs: number
68
68
  * `resetAtMs` comes from {@link parseRateLimitReset}; without it, back off one TTL.
69
69
  */
70
70
  export declare function noteRateLimited(resetAtMs: number | undefined, nowMs: number): void;
71
+ export {};
@@ -13,7 +13,7 @@ export interface UsernsStatus {
13
13
  reason?: string;
14
14
  }
15
15
  /** The raw signals the pure interpreter reasons over. */
16
- export interface UsernsInputs {
16
+ interface UsernsInputs {
17
17
  platform: NodeJS.Platform;
18
18
  /**
19
19
  * Contents of {@link APPARMOR_USERNS_SYSCTL_PATH} trimmed, or null when the
@@ -54,5 +54,4 @@ export declare function probeUnshare(): 'ok' | 'denied' | 'no-tool';
54
54
  * short-circuits to `ok` without spawning anything.
55
55
  */
56
56
  export declare function probeUnprivilegedUserns(platform?: NodeJS.Platform): UsernsStatus;
57
- /** Test-only: drop the process cache so a test can re-probe. */
58
- export declare function resetUsernsCacheForTests(): void;
57
+ export {};
@@ -110,7 +110,3 @@ export function probeUnprivilegedUserns(platform = process.platform) {
110
110
  });
111
111
  return cached;
112
112
  }
113
- /** Test-only: drop the process cache so a test can re-probe. */
114
- export function resetUsernsCacheForTests() {
115
- cached = null;
116
- }
@@ -40,7 +40,7 @@ export interface LoopSignal {
40
40
  /** Why the loop stopped. Mirrors the teams supervisor exit reasons. */
41
41
  export type LoopStoppedBy = 'condition-met' | 'budget' | 'stalled' | 'max' | 'signal' | 'error';
42
42
  /** Result of a loop run. */
43
- export interface LoopResult {
43
+ interface LoopResult {
44
44
  /** Iterations actually executed. */
45
45
  iterations: number;
46
46
  stoppedBy: LoopStoppedBy;
@@ -152,3 +152,4 @@ export declare function defaultRunIteration(options: ExecOptions): Promise<Itera
152
152
  * - `error` — an iteration threw or exited non-zero.
153
153
  */
154
154
  export declare function runLoop(execOptions: ExecOptions, loop: LoopConfig, ctx: LoopContext, deps?: LoopDeps): Promise<LoopResult>;
155
+ export {};
@@ -6,7 +6,7 @@ export interface GcResult {
6
6
  consumedPruned: number;
7
7
  blocksRemoved: number;
8
8
  }
9
- export interface GcOptions {
9
+ interface GcOptions {
10
10
  root?: string;
11
11
  /** Feed store root. Defaults to getFeedDir(). */
12
12
  feedRoot?: string;
@@ -20,3 +20,4 @@ export interface GcOptions {
20
20
  * mailbox. For live boxes, drop expired messages and prune old consumed files.
21
21
  */
22
22
  export declare function gcMailbox(activeBoxIds: Set<string>, options?: GcOptions): GcResult;
23
+ export {};
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import type { ActiveSession } from './session/active.js';
8
8
  import type { HostTask } from './hosts/tasks.js';
9
- export type MessageResolution = {
9
+ type MessageResolution = {
10
10
  kind: 'cloud';
11
11
  id: string;
12
12
  } | {
@@ -61,3 +61,4 @@ export type HostTaskRoute = {
61
61
  * latter.
62
62
  */
63
63
  export declare function decideHostTaskRoute(task: HostTask | null, target: string): HostTaskRoute;
64
+ export {};
@@ -2,12 +2,6 @@
2
2
  export declare const DEFAULT_TTL_SECONDS: number;
3
3
  /** Env var that overrides {@link DEFAULT_TTL_SECONDS} with a duration like "24h" or "3600". */
4
4
  export declare const MAILBOX_TTL_ENV = "AGENTS_MAILBOX_TTL";
5
- /**
6
- * Resolve the default mailbox TTL in seconds. Honors `AGENTS_MAILBOX_TTL`
7
- * (parsed by {@link parseDuration}); falls back to 24h. A malformed env value
8
- * fails loud instead of silently disabling expiry.
9
- */
10
- export declare function resolveDefaultTtlSeconds(): number;
11
5
  /** A single mailbox message. `text` may embed `host:/path` clip tokens. */
12
6
  export interface MailboxMessage {
13
7
  /** Unique, time-sortable id. Also the on-disk filename stem. */
@@ -30,7 +30,7 @@ export const MAILBOX_TTL_ENV = 'AGENTS_MAILBOX_TTL';
30
30
  * (parsed by {@link parseDuration}); falls back to 24h. A malformed env value
31
31
  * fails loud instead of silently disabling expiry.
32
32
  */
33
- export function resolveDefaultTtlSeconds() {
33
+ function resolveDefaultTtlSeconds() {
34
34
  const raw = process.env[MAILBOX_TTL_ENV];
35
35
  if (raw == null || raw === '')
36
36
  return DEFAULT_TTL_SECONDS;
@@ -1,20 +1,6 @@
1
1
  import type { Manifest } from './types.js';
2
2
  /** Canonical filename for the manifest in any agents repo or project root. */
3
3
  export declare const MANIFEST_FILENAME = "agents.yaml";
4
- /** Parse a YAML string into a typed Manifest object. */
5
- export declare function parseManifest(content: string): Manifest;
6
- /**
7
- * Serialize a Manifest to YAML WITHOUT destroying hand-written comments.
8
- *
9
- * Plain `yaml.stringify(manifest)` drops every comment, so `agents mcp add`
10
- * (and every other writeManifest caller) used to clobber annotations in
11
- * agents.yaml. Matching `serializeCentral` in state.ts: when existing file
12
- * text is provided, parse it into a `yaml.Document` (comments + key order
13
- * preserved) and edit only keys that actually changed. Untouched keys and
14
- * their comments stay byte-stable. Falls back to plain stringify when there
15
- * is no existing document yet.
16
- */
17
- export declare function serializeManifest(manifest: Manifest, existingContent?: string | null): string;
18
4
  /** Read and parse agents.yaml from a directory. Returns null if the file does not exist. */
19
5
  export declare function readManifest(repoPath: string): Manifest | null;
20
6
  /** Write a Manifest object to agents.yaml in the given directory. */
@@ -14,7 +14,7 @@ export const MANIFEST_FILENAME = 'agents.yaml';
14
14
  // Per-path re-entrancy depth so withManifestLock is safe against recursive calls.
15
15
  const manifestLockDepth = new Map();
16
16
  /** Parse a YAML string into a typed Manifest object. */
17
- export function parseManifest(content) {
17
+ function parseManifest(content) {
18
18
  return yaml.parse(content);
19
19
  }
20
20
  /**
@@ -28,7 +28,7 @@ export function parseManifest(content) {
28
28
  * their comments stay byte-stable. Falls back to plain stringify when there
29
29
  * is no existing document yet.
30
30
  */
31
- export function serializeManifest(manifest, existingContent) {
31
+ function serializeManifest(manifest, existingContent) {
32
32
  const entries = Object.entries(manifest).filter(([, v]) => v !== undefined);
33
33
  const isEmpty = entries.length === 0;
34
34
  if (existingContent == null || existingContent.trim() === '') {
@@ -19,7 +19,7 @@ export type McpFormat =
19
19
  /** `{ schema_version, mcp_servers: { "<name>": {transport, ..., enabled} } }` */
20
20
  | 'muse-json';
21
21
  /** The complete MCP contract for one agent. */
22
- export interface McpTarget {
22
+ interface McpTarget {
23
23
  /** MCP config file under a HOME root (a version home, or the real HOME). */
24
24
  home(home: string): string;
25
25
  /** Project-scoped MCP config file for a repo at `cwd`. */
@@ -60,3 +60,4 @@ export declare function mcpTarget(agent: AgentId): McpTarget | undefined;
60
60
  * MCP-capable, or a hard-deprecated id), or it has one with `format: null`.
61
61
  */
62
62
  export declare function mcpWriteUnsupportedReason(agent: AgentId): string | null;
63
+ export {};
package/dist/lib/mcp.js CHANGED
@@ -380,25 +380,31 @@ function installMcpViaClaude(binaryPath, server, versionHome) {
380
380
  * Uses: codex mcp add <name> -- <cmd> [args...]
381
381
  */
382
382
  function installMcpViaCodex(binaryPath, server, versionHome) {
383
- if (server.config.transport === 'stdio') {
383
+ let args;
384
+ if (server.config.transport === 'http') {
385
+ if (!server.config.url)
386
+ throw new Error(`HTTP MCP '${server.name}' has no url`);
387
+ // codex mcp add <name> --url <url>
388
+ args = ['mcp', 'add', server.name, '--url', server.config.url];
389
+ }
390
+ else {
384
391
  // codex mcp add -- <name> <cmd> [args...]
385
- const args = [
392
+ args = [
386
393
  'mcp', 'add',
387
394
  '--',
388
395
  server.name,
389
396
  server.config.command,
390
397
  ...(server.config.args || [])
391
398
  ];
392
- // RUSH-1752: user-controlled MCP command/args must not reach cmd.exe unquoted.
393
- const spec = execFileShellSpec(binaryPath, args);
394
- execFileSync(spec.command, spec.args, {
395
- stdio: 'pipe',
396
- timeout: 30000,
397
- env: { ...process.env, HOME: versionHome },
398
- shell: spec.shell,
399
- });
400
399
  }
401
- // Note: Codex may not support HTTP MCPs
400
+ // RUSH-1752: user-controlled MCP command/args must not reach cmd.exe unquoted.
401
+ const spec = execFileShellSpec(binaryPath, args);
402
+ execFileSync(spec.command, spec.args, {
403
+ stdio: 'pipe',
404
+ timeout: 30000,
405
+ env: { ...process.env, HOME: versionHome },
406
+ shell: spec.shell,
407
+ });
402
408
  }
403
409
  export async function registerMcpCommandToTargets(targets, name, commandSpec, scope = 'user', transport = 'stdio') {
404
410
  const results = [];
@@ -12,7 +12,7 @@
12
12
  * target dir (see memoryTargetDir).
13
13
  */
14
14
  import type { AgentId } from './types.js';
15
- export interface MemoryFact {
15
+ interface MemoryFact {
16
16
  /** Filename without .md (slug). */
17
17
  name: string;
18
18
  /** Absolute path to the fact file. */
@@ -22,20 +22,10 @@ export interface MemoryFact {
22
22
  /** First non-empty line of the body (for list display). */
23
23
  summary: string;
24
24
  }
25
- export interface MemoryLayerDir {
26
- layer: 'project' | 'user' | 'system';
27
- dir: string;
28
- }
29
25
  /** User-layer memory root (~/.agents/memory/). */
30
26
  export declare function getUserMemoryDir(): string;
31
- /** System-layer memory root (~/.agents/.system/memory/). */
32
- export declare function getSystemMemoryDir(): string;
33
- /** Project-layer memory root when a project agents dir exists. */
34
- export declare function getProjectMemoryDir(cwd?: string): string | null;
35
27
  /** Ensure the user memory dir exists (creates MEMORY.md index if missing). */
36
28
  export declare function ensureUserMemoryDir(): string;
37
- /** Layer dirs highest-priority first. */
38
- export declare function getMemoryLayerDirs(cwd?: string): MemoryLayerDir[];
39
29
  /** List memory facts with project > user > system override on name. */
40
30
  export declare function listMemoryFacts(cwd?: string): MemoryFact[];
41
31
  /** Read one fact by name (winning layer). */
@@ -44,8 +34,6 @@ export declare function readMemoryFact(name: string, cwd?: string): MemoryFact |
44
34
  export declare function addMemoryFact(name: string, body: string): string;
45
35
  /** Remove a fact from the user layer. Returns true if a file was deleted. */
46
36
  export declare function removeMemoryFact(name: string): boolean;
47
- /** Rebuild MEMORY.md index from sibling fact files in a single layer dir. */
48
- export declare function rebuildMemoryIndex(dir: string): void;
49
37
  /**
50
38
  * Per-agent target directory (relative to version home) for synced memory.
51
39
  * Claude/Codex/OpenClaw/Grok get native-ish paths; others get a generic memory/.
@@ -79,3 +67,4 @@ export declare function getClaudeProjectMemoryDir(cwd: string): string;
79
67
  * being replaced by the symlink.
80
68
  */
81
69
  export declare function syncClaudeProjectMemoryDir(versionHome: string, cwd?: string): void;
70
+ export {};
@@ -22,11 +22,11 @@ export function getUserMemoryDir() {
22
22
  return path.join(getUserAgentsDir(), 'memory');
23
23
  }
24
24
  /** System-layer memory root (~/.agents/.system/memory/). */
25
- export function getSystemMemoryDir() {
25
+ function getSystemMemoryDir() {
26
26
  return path.join(getSystemAgentsDir(), 'memory');
27
27
  }
28
28
  /** Project-layer memory root when a project agents dir exists. */
29
- export function getProjectMemoryDir(cwd = process.cwd()) {
29
+ function getProjectMemoryDir(cwd = process.cwd()) {
30
30
  const project = getProjectAgentsDir(cwd);
31
31
  return project ? path.join(project, 'memory') : null;
32
32
  }
@@ -69,7 +69,7 @@ function summarize(content) {
69
69
  return '(empty)';
70
70
  }
71
71
  /** Layer dirs highest-priority first. */
72
- export function getMemoryLayerDirs(cwd = process.cwd()) {
72
+ function getMemoryLayerDirs(cwd = process.cwd()) {
73
73
  const out = [];
74
74
  const project = getProjectMemoryDir(cwd);
75
75
  if (project && fs.existsSync(project))
@@ -157,7 +157,7 @@ export function removeMemoryFact(name) {
157
157
  return true;
158
158
  }
159
159
  /** Rebuild MEMORY.md index from sibling fact files in a single layer dir. */
160
- export function rebuildMemoryIndex(dir) {
160
+ function rebuildMemoryIndex(dir) {
161
161
  let facts = [];
162
162
  try {
163
163
  facts = fs.readdirSync(dir).filter(isFactFile).sort();
@@ -38,8 +38,6 @@ export declare function menubarHelperAssetUrls(version: string): {
38
38
  };
39
39
  /** Cache dir for the downloaded menu-bar helper, one subdir per release tag. */
40
40
  export declare function menubarHelperCacheDir(version: string): string;
41
- /** Verify a menu-bar helper `.app`: codesign + Team + DR pin + notarization. */
42
- export declare function verifyMenubarHelper(appPath: string): void;
43
41
  /**
44
42
  * Download the menu-bar helper release asset for `version`, verify sha256 +
45
43
  * signature + DR pin, and return the path to the extracted `MenubarHelper.app`
@@ -20,7 +20,7 @@
20
20
  * before the bundle is ever installed. This matches the release-time gate in
21
21
  * `scripts/verify-menubar-helper.sh`.
22
22
  */
23
- import { EXPECTED_TEAM_ID, downloadHelperApp, helperAssetUrls, helperCacheDir, verifyHelperApp, } from '../helper-download.js';
23
+ import { EXPECTED_TEAM_ID, downloadHelperApp, helperAssetUrls, helperCacheDir } from '../helper-download.js';
24
24
  /** The zipped `.app` release asset name. */
25
25
  export const MENUBAR_HELPER_ASSET = 'MenubarHelper.app.zip';
26
26
  /** The bundle directory name once extracted. */
@@ -50,10 +50,6 @@ export function menubarHelperAssetUrls(version) {
50
50
  export function menubarHelperCacheDir(version) {
51
51
  return helperCacheDir(MENUBAR_HELPER_SPEC, version);
52
52
  }
53
- /** Verify a menu-bar helper `.app`: codesign + Team + DR pin + notarization. */
54
- export function verifyMenubarHelper(appPath) {
55
- verifyHelperApp(appPath, MENUBAR_HELPER_SPEC);
56
- }
57
53
  /**
58
54
  * Download the menu-bar helper release asset for `version`, verify sha256 +
59
55
  * signature + DR pin, and return the path to the extracted `MenubarHelper.app`
@@ -45,7 +45,7 @@ export declare function serviceLabel(): string;
45
45
  */
46
46
  /** Version label for a bundle that has none of its own (a local dev build). */
47
47
  export declare const LOCAL_BUILD_LABEL = "local";
48
- export type MenubarStamp = {
48
+ type MenubarStamp = {
49
49
  source: 'release';
50
50
  helperVersion: string;
51
51
  } | {
@@ -64,10 +64,6 @@ export type MenubarStamp = {
64
64
  * package, or a dev checkout without a built bundle).
65
65
  */
66
66
  export declare function resolveInstalledMenubarExecutable(): string | null;
67
- /** True if the user explicitly disabled the menu bar (don't auto-enable on upgrade). */
68
- export declare function menubarDisabledByUser(): boolean;
69
- /** True if the launchd plist for the menu-bar service is installed. */
70
- export declare function menubarServiceInstalled(): boolean;
71
67
  /** Where a downloaded copy of the floor release sits once fetched and verified. */
72
68
  export declare function cachedFloorBundlePath(): string;
73
69
  /**
@@ -76,14 +72,6 @@ export declare function cachedFloorBundlePath(): string;
76
72
  * The startup self-heal installs from here, network-free.
77
73
  */
78
74
  export declare function cachedReleaseBundlePath(): string;
79
- /**
80
- * The release version an explicit install should fetch: the newest published
81
- * build, but never below what this Mac already runs — a release deleted after
82
- * it was installed must not roll the helper back through `setup`/`enable`.
83
- */
84
- export declare function menubarVersionToInstall(opts?: {
85
- force?: boolean;
86
- }): Promise<string>;
87
75
  /** True when the bundle carries a signature the kernel will accept at launch. */
88
76
  export declare function codesignVerifies(appPath: string): boolean;
89
77
  /**
@@ -526,7 +514,7 @@ export declare function isMenubarProcessStaleAgainstBundle(pidStartedAtMs: numbe
526
514
  */
527
515
  export declare function buildMenubarDoctorReport(): MenubarDoctorReport;
528
516
  /** Outcome of one auto-update pass (`updateMenubarHelperIfNewer`). */
529
- export interface MenubarUpdateResult {
517
+ interface MenubarUpdateResult {
530
518
  outcome: 'updated' | 'current' | 'skipped' | 'failed';
531
519
  installed: string | null;
532
520
  available: string;
@@ -567,3 +555,4 @@ export declare function updateMenubarHelperIfNewer(opts?: {
567
555
  dryRun?: boolean;
568
556
  force?: boolean;
569
557
  }): Promise<MenubarUpdateResult>;
558
+ export {};
@@ -155,11 +155,11 @@ function disabledSentinelPath() {
155
155
  return path.join(getRuntimeStateDir(), 'menubar.disabled');
156
156
  }
157
157
  /** True if the user explicitly disabled the menu bar (don't auto-enable on upgrade). */
158
- export function menubarDisabledByUser() {
158
+ function menubarDisabledByUser() {
159
159
  return fs.existsSync(disabledSentinelPath());
160
160
  }
161
161
  /** True if the launchd plist for the menu-bar service is installed. */
162
- export function menubarServiceInstalled() {
162
+ function menubarServiceInstalled() {
163
163
  return onDarwin() && fs.existsSync(servicePlistPath());
164
164
  }
165
165
  /**
@@ -238,7 +238,7 @@ export function cachedReleaseBundlePath() {
238
238
  * build, but never below what this Mac already runs — a release deleted after
239
239
  * it was installed must not roll the helper back through `setup`/`enable`.
240
240
  */
241
- export async function menubarVersionToInstall(opts = {}) {
241
+ async function menubarVersionToInstall(opts = {}) {
242
242
  const resolved = await resolveMenubarVersion({ force: opts.force });
243
243
  const installed = readInstalledMenubarStamp();
244
244
  if (installed?.source === 'release' && compareVersions(installed.helperVersion, resolved) > 0)
@@ -0,0 +1,53 @@
1
+ /**
2
+ * One-time, CLI-owned migration of AGI Menu preferences from the macOS
3
+ * UserDefaults domain `com.phnx-labs.agents-menubar` into the registered
4
+ * `menubar.menu.*` config keys (PHNX-3999).
5
+ *
6
+ * Why here: before the preferences became `agents config` keys, the stable menu
7
+ * bar stored them in its own UserDefaults. A user upgrading must keep those
8
+ * settings, but the CLI is now the single source of truth and syncs fleet-wide,
9
+ * so the values are lifted into config ONCE and then owned there.
10
+ *
11
+ * The rules (from the integration contract) are all fail-safe:
12
+ * - macOS only. On any other platform this is a no-op (Linux derives canonical
13
+ * config only).
14
+ * - The PRODUCTION domain only — never the dev bundle
15
+ * `com.phnx-labs.agents-menubar.dev` (we simply never read it).
16
+ * - Import only KNOWN keys ({@link MENUBAR_MENU_PROPERTIES}) that are still
17
+ * UNSET in config — an already-set (synced) value is never overridden.
18
+ * - One-shot, gated by a sentinel, so a later `agents config unset` cannot
19
+ * resurrect the legacy value on the next run.
20
+ *
21
+ * The stable app stores each preference under its FULL `menubar.menu.*` key name
22
+ * (the Swift MenuPreferences local-cache key), so the migration matches on the
23
+ * full name. If a key is stored under a different name, it simply is not matched
24
+ * and the migration stays a safe no-op for it. The read uses `defaults export
25
+ * <domain> -` piped through `plutil` (NOT `defaults read <domain> -json`, which
26
+ * treats `-json` as a key and errors).
27
+ */
28
+ /**
29
+ * Pure plan step: which UserDefaults entries should be imported. The stable app
30
+ * stores each preference under its FULL `menubar.menu.*` key name (the Swift
31
+ * MenuPreferences local-cache key), so we match on the full name — only known
32
+ * keys that are present in `userDefaults` AND currently unset in config
33
+ * (`isUnset`) are imported, so an already-set value is preserved. Values are
34
+ * returned raw; the caller coerces + validates them against each key's spec.
35
+ */
36
+ export declare function planMenubarPrefMigration(userDefaults: Record<string, unknown>, isUnset: (fullName: string) => boolean): Array<{
37
+ name: string;
38
+ value: unknown;
39
+ }>;
40
+ /**
41
+ * Coerce a raw UserDefaults value to the type its config key expects. The
42
+ * `plutil` scalar output is text, but a bool can arrive as
43
+ * 0/1 or "true"/"false" and an int as a numeric string, so normalize before
44
+ * validation. Returns undefined for a value that cannot be coerced (skipped,
45
+ * never forced).
46
+ */
47
+ export declare function coerceMenubarPrefValue(name: string, raw: unknown): unknown;
48
+ /**
49
+ * Run the one-shot migration. macOS only, gated by the sentinel, best-effort:
50
+ * any failure is swallowed (a migration must never break the snapshot read that
51
+ * calls it) and a failed read remains eligible for a later retry.
52
+ */
53
+ export declare function migrateMenubarPreferencesFromUserDefaults(): void;
@@ -0,0 +1,168 @@
1
+ /**
2
+ * One-time, CLI-owned migration of AGI Menu preferences from the macOS
3
+ * UserDefaults domain `com.phnx-labs.agents-menubar` into the registered
4
+ * `menubar.menu.*` config keys (PHNX-3999).
5
+ *
6
+ * Why here: before the preferences became `agents config` keys, the stable menu
7
+ * bar stored them in its own UserDefaults. A user upgrading must keep those
8
+ * settings, but the CLI is now the single source of truth and syncs fleet-wide,
9
+ * so the values are lifted into config ONCE and then owned there.
10
+ *
11
+ * The rules (from the integration contract) are all fail-safe:
12
+ * - macOS only. On any other platform this is a no-op (Linux derives canonical
13
+ * config only).
14
+ * - The PRODUCTION domain only — never the dev bundle
15
+ * `com.phnx-labs.agents-menubar.dev` (we simply never read it).
16
+ * - Import only KNOWN keys ({@link MENUBAR_MENU_PROPERTIES}) that are still
17
+ * UNSET in config — an already-set (synced) value is never overridden.
18
+ * - One-shot, gated by a sentinel, so a later `agents config unset` cannot
19
+ * resurrect the legacy value on the next run.
20
+ *
21
+ * The stable app stores each preference under its FULL `menubar.menu.*` key name
22
+ * (the Swift MenuPreferences local-cache key), so the migration matches on the
23
+ * full name. If a key is stored under a different name, it simply is not matched
24
+ * and the migration stays a safe no-op for it. The read uses `defaults export
25
+ * <domain> -` piped through `plutil` (NOT `defaults read <domain> -json`, which
26
+ * treats `-json` as a key and errors).
27
+ */
28
+ import { execFileSync } from 'child_process';
29
+ import * as fs from 'fs';
30
+ import * as path from 'path';
31
+ import { assertValidValue, configKeySpec, getConfigValue, setConfigValue } from '../device-config.js';
32
+ import { getRuntimeStateDir } from '../state.js';
33
+ import { MENUBAR_MENU_PROPERTIES } from '../config-keys.js';
34
+ /** The production menu-bar UserDefaults domain (NOT the `.dev` bundle). */
35
+ const USER_DEFAULTS_DOMAIN = 'com.phnx-labs.agents-menubar';
36
+ /** Sentinel marking the one-shot done; its presence blocks every later run. */
37
+ function sentinelPath() {
38
+ return path.join(getRuntimeStateDir(), 'menubar-prefs-migrated');
39
+ }
40
+ /**
41
+ * Pure plan step: which UserDefaults entries should be imported. The stable app
42
+ * stores each preference under its FULL `menubar.menu.*` key name (the Swift
43
+ * MenuPreferences local-cache key), so we match on the full name — only known
44
+ * keys that are present in `userDefaults` AND currently unset in config
45
+ * (`isUnset`) are imported, so an already-set value is preserved. Values are
46
+ * returned raw; the caller coerces + validates them against each key's spec.
47
+ */
48
+ export function planMenubarPrefMigration(userDefaults, isUnset) {
49
+ const plan = [];
50
+ for (const prop of MENUBAR_MENU_PROPERTIES) {
51
+ const name = `menubar.menu.${prop}`;
52
+ if (!(name in userDefaults))
53
+ continue;
54
+ if (!isUnset(name))
55
+ continue;
56
+ plan.push({ name, value: userDefaults[name] });
57
+ }
58
+ return plan;
59
+ }
60
+ /**
61
+ * Coerce a raw UserDefaults value to the type its config key expects. The
62
+ * `plutil` scalar output is text, but a bool can arrive as
63
+ * 0/1 or "true"/"false" and an int as a numeric string, so normalize before
64
+ * validation. Returns undefined for a value that cannot be coerced (skipped,
65
+ * never forced).
66
+ */
67
+ export function coerceMenubarPrefValue(name, raw) {
68
+ const type = configKeySpec(name).type;
69
+ if (type === 'bool') {
70
+ if (typeof raw === 'boolean')
71
+ return raw;
72
+ if (raw === 1 || raw === '1' || raw === 'true' || raw === 'YES')
73
+ return true;
74
+ if (raw === 0 || raw === '0' || raw === 'false' || raw === 'NO')
75
+ return false;
76
+ return undefined;
77
+ }
78
+ if (type === 'int') {
79
+ if (typeof raw === 'number' && Number.isInteger(raw))
80
+ return raw;
81
+ if (typeof raw === 'string' && /^\d+$/.test(raw.trim()))
82
+ return Number.parseInt(raw.trim(), 10);
83
+ return undefined;
84
+ }
85
+ return typeof raw === 'string' ? raw : undefined;
86
+ }
87
+ /**
88
+ * Read known scalar preferences from the production domain.
89
+ *
90
+ * `defaults read <domain> -json` does NOT exist — `defaults read` treats `-json`
91
+ * as a KEY name and errors. The correct read is `defaults export <domain> -`,
92
+ * which writes the domain's plist to stdout (an EMPTY plist, exit 0, when the
93
+ * domain is absent — a legitimate "nothing to migrate"), read one known scalar key at a time with `plutil -extract … raw`. Other
94
+ * defaults may contain dates or data that cannot be represented as JSON.
95
+ *
96
+ * Returns `{ ok }` so the caller can tell a genuine read/convert FAILURE (do not
97
+ * write the sentinel — retry next run) from an ABSENT domain (ok, empty values —
98
+ * mark done). A failure never fabricates an empty map.
99
+ */
100
+ function readUserDefaultsDomain() {
101
+ try {
102
+ const plist = execFileSync('defaults', ['export', USER_DEFAULTS_DOMAIN, '-'], {
103
+ encoding: 'utf8', timeout: 5_000,
104
+ stdio: ['ignore', 'pipe', 'ignore'],
105
+ });
106
+ const values = {};
107
+ for (const property of MENUBAR_MENU_PROPERTIES) {
108
+ const key = `menubar.menu.${property}`;
109
+ try {
110
+ values[key] = execFileSync('plutil', ['-extract', key.replaceAll('.', '\\.'), 'raw', '-o', '-', '-'], {
111
+ input: plist, encoding: 'utf8', timeout: 5_000, stdio: ['pipe', 'pipe', 'ignore'],
112
+ }).trimEnd();
113
+ }
114
+ catch {
115
+ // Missing or non-scalar legacy keys are outside the preference contract.
116
+ }
117
+ }
118
+ return { ok: true, values };
119
+ }
120
+ catch {
121
+ // `defaults`/`plutil` missing, a non-zero exit, or malformed output — a real
122
+ // failure. Do NOT claim an empty domain; the caller must retry.
123
+ return { ok: false, values: {} };
124
+ }
125
+ }
126
+ /**
127
+ * Run the one-shot migration. macOS only, gated by the sentinel, best-effort:
128
+ * any failure is swallowed (a migration must never break the snapshot read that
129
+ * calls it) and a failed read remains eligible for a later retry.
130
+ */
131
+ export function migrateMenubarPreferencesFromUserDefaults() {
132
+ if (process.platform !== 'darwin')
133
+ return;
134
+ const sentinel = sentinelPath();
135
+ if (fs.existsSync(sentinel))
136
+ return;
137
+ const { ok, values } = readUserDefaultsDomain();
138
+ // A genuine read/convert failure must NOT mark the migration done — retry on a
139
+ // later run rather than silently skipping the user's real settings forever. An
140
+ // ABSENT domain reads ok with empty values and legitimately marks done.
141
+ if (!ok)
142
+ return;
143
+ try {
144
+ const plan = planMenubarPrefMigration(values, (name) => getConfigValue(name).value === undefined);
145
+ for (const { name, value } of plan) {
146
+ const coerced = coerceMenubarPrefValue(name, value);
147
+ if (coerced === undefined)
148
+ continue; // unrepresentable — skip, never force
149
+ try {
150
+ assertValidValue(configKeySpec(name), coerced);
151
+ }
152
+ catch {
153
+ continue;
154
+ }
155
+ setConfigValue(name, coerced);
156
+ }
157
+ }
158
+ catch {
159
+ return;
160
+ }
161
+ try {
162
+ fs.mkdirSync(path.dirname(sentinel), { recursive: true });
163
+ fs.writeFileSync(sentinel, new Date().toISOString() + '\n');
164
+ }
165
+ catch {
166
+ /* if we cannot mark it, a later run retries — still safe (idempotent) */
167
+ }
168
+ }