@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
@@ -8,9 +8,9 @@
8
8
  */
9
9
  import type { AgentId, CommandInstallation } from './types.js';
10
10
  /** Scope of a command: user-global or project-local. */
11
- export type CommandScope = 'user' | 'project';
11
+ type CommandScope = 'user' | 'project';
12
12
  /** Parsed metadata from a command file's YAML frontmatter. */
13
- export interface CommandMetadata {
13
+ interface CommandMetadata {
14
14
  name: string;
15
15
  description: string;
16
16
  /** When set, sync only to these agents (aliases resolved at parse time). */
@@ -22,8 +22,8 @@ export interface CommandMetadata {
22
22
  /** Alternate names this command also resolves under (frontmatter `aliases:`). */
23
23
  aliases?: string[];
24
24
  }
25
- export type CommandApplyFailReason = 'unsupported' | 'agent_excluded' | 'too_old' | 'too_new';
26
- export type CommandApplyResult = {
25
+ type CommandApplyFailReason = 'unsupported' | 'agent_excluded' | 'too_old' | 'too_new';
26
+ type CommandApplyResult = {
27
27
  ok: true;
28
28
  } | {
29
29
  ok: false;
@@ -36,7 +36,6 @@ export type CommandApplyResult = {
36
36
  * (or commands-as-skills) capability gate.
37
37
  */
38
38
  export declare function commandAppliesTo(agent: AgentId, version: string, metadata: Pick<CommandMetadata, 'agents' | 'since' | 'until'> | null | undefined): CommandApplyResult;
39
- export declare function explainCommandSkip(agent: AgentId, version: string, commandName: string, result: CommandApplyResult): string;
40
39
  /** Result of validating command metadata. */
41
40
  export interface ValidationResult {
42
41
  valid: boolean;
@@ -44,7 +43,7 @@ export interface ValidationResult {
44
43
  warnings: string[];
45
44
  }
46
45
  /** A command discovered in a repository's commands/ directory. */
47
- export interface DiscoveredCommand {
46
+ interface DiscoveredCommand {
48
47
  name: string;
49
48
  description: string;
50
49
  sourcePath: string;
@@ -52,7 +51,7 @@ export interface DiscoveredCommand {
52
51
  validation: ValidationResult;
53
52
  }
54
53
  /** A command installed in an agent's config directory. */
55
- export interface InstalledCommand {
54
+ interface InstalledCommand {
56
55
  name: string;
57
56
  scope: CommandScope;
58
57
  path: string;
@@ -164,3 +163,4 @@ export declare function getCommandInfo(name: string): {
164
163
  path: string;
165
164
  content: string;
166
165
  } | null;
166
+ export {};
@@ -58,7 +58,7 @@ export function commandAppliesTo(agent, version, metadata) {
58
58
  }
59
59
  return { ok: true };
60
60
  }
61
- export function explainCommandSkip(agent, version, commandName, result) {
61
+ function explainCommandSkip(agent, version, commandName, result) {
62
62
  if (result.ok)
63
63
  return '';
64
64
  const tag = `${agent}@${version}`;
@@ -10,7 +10,7 @@ export declare const GLYPH: {
10
10
  readonly stream: "─→";
11
11
  readonly thread: "⇄";
12
12
  };
13
- export type Accent = 'cyan' | 'amber';
13
+ type Accent = 'cyan' | 'amber';
14
14
  /** Render the shared one-line comms header, with `right` aligned to the terminal edge. */
15
15
  export declare function masthead(o: {
16
16
  title: string;
@@ -48,12 +48,12 @@ export interface ComputerTargetContext {
48
48
  sshArgs: string[];
49
49
  }
50
50
  /** Who is acting, so the engine can stamp the action it reports back. */
51
- export interface ComputerSessionContext {
51
+ interface ComputerSessionContext {
52
52
  sessionId?: string;
53
53
  launchId?: string;
54
54
  actor: string;
55
55
  }
56
- export interface ComputerContext {
56
+ interface ComputerContext {
57
57
  version: 1;
58
58
  permissions?: {
59
59
  allow: string[];
@@ -64,13 +64,20 @@ export interface ComputerContext {
64
64
  target?: ComputerTargetContext;
65
65
  session: ComputerSessionContext;
66
66
  }
67
- export interface BuildContextOptions {
67
+ interface BuildContextOptions {
68
68
  /** `--device <name>`, if given. */
69
69
  device?: string;
70
70
  /** Direct host targeting, which bypasses fleet resolution. */
71
71
  host?: string;
72
72
  /** Resolved path of the standalone executable, for the peer allow list. */
73
73
  computerBin?: string;
74
+ /**
75
+ * A precomputed target (PHNX-4090: `resolveDeviceHost` in `commands/computer.ts`
76
+ * already resolved the device's `computer.host` config, or the ssh fallback).
77
+ * When present, `device` is used only to gate the local-permissions branch
78
+ * below — this skips a second, possibly Windows-gated, fleet resolution.
79
+ */
80
+ target?: ComputerTargetContext;
74
81
  }
75
82
  /**
76
83
  * Build the context handed to the engine on fd 3.
@@ -81,3 +88,4 @@ export interface BuildContextOptions {
81
88
  * layer that can actually see the device's platform.
82
89
  */
83
90
  export declare function buildComputerContext(opts?: BuildContextOptions): Promise<ComputerContext>;
91
+ export {};
@@ -59,8 +59,8 @@ function agentSessionId(env = process.env) {
59
59
  * layer that can actually see the device's platform.
60
60
  */
61
61
  export async function buildComputerContext(opts = {}) {
62
- let target;
63
- if (opts.device) {
62
+ let target = opts.target;
63
+ if (!target && opts.device) {
64
64
  const resolved = await resolveRemoteDevice(opts.device, {
65
65
  expectPlatform: 'windows',
66
66
  forWhat: '`agents computer --device` drives the Windows computer-helper daemon, so it',
@@ -22,18 +22,6 @@ export declare function loadComputerAllowList(): string[];
22
22
  export declare function loadDefaultPeers(opts?: {
23
23
  computerBin?: string;
24
24
  }): string[];
25
- /**
26
- * Parse a `host:port` VNC endpoint, defaulting the port to 5901. Pure.
27
- *
28
- * Kept on the consumer side because the `--vnc` FLAG is parsed here — the
29
- * platform gate has to know whether a remote desktop was named before the
30
- * engine is ever spawned (see `shouldBlockOffPlatform`). The RFB protocol
31
- * implementation itself went to the engine.
32
- */
33
- export declare function parseVncEndpoint(raw: string | undefined): {
34
- host: string;
35
- port: number;
36
- } | null;
37
25
  export declare function resolveTcpEndpoint(): {
38
26
  host: string;
39
27
  port: number;
@@ -120,7 +120,7 @@ export function loadDefaultPeers(opts = {}) {
120
120
  * engine is ever spawned (see `shouldBlockOffPlatform`). The RFB protocol
121
121
  * implementation itself went to the engine.
122
122
  */
123
- export function parseVncEndpoint(raw) {
123
+ function parseVncEndpoint(raw) {
124
124
  if (!raw || raw.length === 0)
125
125
  return null;
126
126
  const idx = raw.lastIndexOf(':');
@@ -26,7 +26,61 @@ export interface ComputerAction {
26
26
  agent?: string;
27
27
  machineId?: string;
28
28
  hostname?: string;
29
+ /**
30
+ * The file a successful `screenshot` action actually wrote.
31
+ *
32
+ * Recorded by the standalone engine only AFTER the write succeeded, so its
33
+ * presence is proof the file existed — which is why nothing here ever derives
34
+ * a path from the verb. An action from before the producer carried this field
35
+ * has no capture, and that is reported honestly as none rather than guessed at
36
+ * from an output flag that may never have been written.
37
+ */
38
+ capture?: {
39
+ path: string;
40
+ kind: 'screenshot';
41
+ name: string;
42
+ bytes?: number;
43
+ };
29
44
  }
45
+ /**
46
+ * The standalone engine's OWN action ledger.
47
+ *
48
+ * `agents computer` is a thin consumer of the standalone `computer` engine
49
+ * (PHNX-4075), and that engine ALWAYS appends every action it performs to
50
+ * `<cache>/computer/actions/<day>.jsonl` — independently of whether agents-cli
51
+ * was in the call at all. So a `computer` command the operator ran directly
52
+ * appears ONLY here: it never reached `recordComputerAction`, so it is in
53
+ * neither the feed event ledger nor `computer_sessions`. Reading only those two
54
+ * meant the actions an operator actually performed were invisible to every
55
+ * agents-cli surface.
56
+ */
57
+ export declare function standaloneComputerActionsDir(): string;
58
+ /**
59
+ * Read the standalone ledger, newest day first, bounded by `limit` actions.
60
+ *
61
+ * Bounded by construction: days are read newest-first and reading stops as soon
62
+ * as the budget is met, so a box with months of history costs the same as one
63
+ * with a day of it.
64
+ */
65
+ export declare function listStandaloneComputerActions(opts?: {
66
+ limit?: number;
67
+ dir?: string;
68
+ observer?: string;
69
+ }): ComputerAction[];
70
+ /**
71
+ * Union the two ledgers, preferring the standalone record for any run present in
72
+ * both.
73
+ *
74
+ * Dedupe keys on `invocationId`, NOT on a timestamp or pid. When a command is
75
+ * forwarded through `agents computer`, BOTH stores receive it — and the
76
+ * forwarding rewrites `ts` and `pid` on the way through, so the two copies of one
77
+ * action do not agree on either. `invocationId` is minted by the engine and
78
+ * echoed unchanged, which makes it the only field that identifies the same run in
79
+ * both files. A legacy feed record with no invocationId cannot be matched to
80
+ * anything, so it is kept: dropping it would lose history the standalone ledger
81
+ * never had.
82
+ */
83
+ export declare function mergeComputerActionSources(standalone: ComputerAction[], legacy: ComputerAction[]): ComputerAction[];
30
84
  /** Read `computer.action` events straight from the durable event ledger,
31
85
  * newest first, bounded by `limit`. Malformed/legacy records (missing
32
86
  * `command` or `pid`, or an unparseable `ts`) are skipped, never thrown —
@@ -94,6 +148,7 @@ export declare function groupIntoComputerRuns(actions: ComputerAction[], resolve
94
148
  export declare function buildComputerSessionRows(opts?: {
95
149
  limit?: number;
96
150
  machine?: string;
151
+ observer?: string;
97
152
  }): ComputerRunRow[];
98
153
  /**
99
154
  * Search predicate for the interactive picker: task text, machine/remote
@@ -58,6 +58,10 @@
58
58
  * `sessionId` doesn't resolve (a rotated/unindexed session) but `launchId`
59
59
  * still does via the more authoritative pid registry.
60
60
  */
61
+ import * as fs from 'node:fs';
62
+ import * as path from 'node:path';
63
+ import { getCacheDir } from '../state.js';
64
+ import { machineId } from '../machine-id.js';
61
65
  import { query, truncate } from '../feed/events.js';
62
66
  import { formatRelativeTime } from '../session/relative-time.js';
63
67
  import { getSessionById, listComputerSessionRecords, pruneToolSessions } from '../session/db.js';
@@ -70,6 +74,21 @@ export const TASK_PREVIEW_MAX_CHARS = 200;
70
74
  * already reads newest-first and stops at this cutoff mid-scan, so raising
71
75
  * it only ever costs as much as the history actually holds. */
72
76
  const DEFAULT_ACTION_LIMIT = 5000;
77
+ /** A capture record, accepted only when the producer gave a real path + name. */
78
+ function parseActionCapture(value) {
79
+ if (!value || typeof value !== 'object')
80
+ return undefined;
81
+ const record = value;
82
+ if (typeof record.path !== 'string' || !record.path)
83
+ return undefined;
84
+ const name = typeof record.name === 'string' && record.name ? record.name : path.basename(record.path);
85
+ return {
86
+ path: record.path,
87
+ kind: 'screenshot',
88
+ name,
89
+ ...(typeof record.bytes === 'number' ? { bytes: record.bytes } : {}),
90
+ };
91
+ }
73
92
  function recordToAction(r) {
74
93
  if (typeof r.command !== 'string' || typeof r.pid !== 'number')
75
94
  return null;
@@ -91,8 +110,153 @@ function recordToAction(r) {
91
110
  agent: typeof r.agent === 'string' ? r.agent : undefined,
92
111
  machineId: typeof r.machineId === 'string' ? r.machineId : undefined,
93
112
  hostname: typeof r.hostname === 'string' ? r.hostname : undefined,
113
+ capture: parseActionCapture(r.capture),
94
114
  };
95
115
  }
116
+ /**
117
+ * The standalone engine's OWN action ledger.
118
+ *
119
+ * `agents computer` is a thin consumer of the standalone `computer` engine
120
+ * (PHNX-4075), and that engine ALWAYS appends every action it performs to
121
+ * `<cache>/computer/actions/<day>.jsonl` — independently of whether agents-cli
122
+ * was in the call at all. So a `computer` command the operator ran directly
123
+ * appears ONLY here: it never reached `recordComputerAction`, so it is in
124
+ * neither the feed event ledger nor `computer_sessions`. Reading only those two
125
+ * meant the actions an operator actually performed were invisible to every
126
+ * agents-cli surface.
127
+ */
128
+ export function standaloneComputerActionsDir() {
129
+ return path.join(getCacheDir(), 'computer', 'actions');
130
+ }
131
+ /**
132
+ * One line of the standalone ledger as a {@link ComputerAction}.
133
+ *
134
+ * The on-disk record is the same `computer.action` event the engine reports on
135
+ * fd 4 — the contract `computer-client.ts` `ComputerActionEvent` already
136
+ * describes and `recordComputerAction` already consumes — so this maps the same
137
+ * fields rather than inventing a second vocabulary. A record missing the two
138
+ * fields that make it an action at all (`command`, a parseable timestamp) is
139
+ * skipped, never defaulted: the file is plain JSONL another process may be
140
+ * mid-append to.
141
+ */
142
+ function standaloneLineToAction(line, observer) {
143
+ let parsed;
144
+ try {
145
+ parsed = JSON.parse(line);
146
+ }
147
+ catch {
148
+ return null;
149
+ }
150
+ if (!parsed || typeof parsed !== 'object')
151
+ return null;
152
+ const record = parsed;
153
+ const verb = typeof record.command === 'string' ? record.command : undefined;
154
+ const ts = typeof record.ts === 'string' ? record.ts : undefined;
155
+ if (!verb || !ts)
156
+ return null;
157
+ const tsMs = Date.parse(ts);
158
+ if (Number.isNaN(tsMs))
159
+ return null;
160
+ const text = (key) => (typeof record[key] === 'string' ? record[key] : undefined);
161
+ const num = (key) => (typeof record[key] === 'number' ? record[key] : undefined);
162
+ // The producer identifies the DRIVEN host only for a remote run, and emits no
163
+ // `hostname`/`machineId` of its own at all. Defaulting those to the observing
164
+ // machine HERE, at the source, is what keeps a direct local action attributable:
165
+ // without it `groupIntoComputerRuns` fell back to `machine: 'unknown'`, the row's
166
+ // device read `unknown`, and every locally-run `computer` action vanished the
167
+ // moment a consumer filtered by device. The observer IS the machine that ran it
168
+ // — this ledger is per-machine by construction, written by the engine on the box
169
+ // it ran on — so the fallback is a fact, not a guess. An explicit `host` still
170
+ // wins, because that names a genuinely different driven machine.
171
+ return {
172
+ verb, ts, tsMs,
173
+ // The engine's pid is its own; a record without one still groups by
174
+ // invocationId, which is the identity that actually matters here.
175
+ pid: num('pid') ?? 0,
176
+ invocationId: text('invocationId'),
177
+ targetPid: num('targetPid'),
178
+ bundle: text('bundle'),
179
+ host: text('host'),
180
+ task: text('task'),
181
+ sessionId: text('sessionId'),
182
+ launchId: text('launchId'),
183
+ agent: text('agent'),
184
+ machineId: text('machineId'),
185
+ hostname: text('hostname') ?? observer,
186
+ capture: parseActionCapture(record.capture),
187
+ };
188
+ }
189
+ /**
190
+ * Read the standalone ledger, newest day first, bounded by `limit` actions.
191
+ *
192
+ * Bounded by construction: days are read newest-first and reading stops as soon
193
+ * as the budget is met, so a box with months of history costs the same as one
194
+ * with a day of it.
195
+ */
196
+ export function listStandaloneComputerActions(opts = {}) {
197
+ const dir = opts.dir ?? standaloneComputerActionsDir();
198
+ const limit = opts.limit ?? DEFAULT_ACTION_LIMIT;
199
+ // This ledger is per-machine by construction, so "who ran it" is this machine
200
+ // unless the record names a driven remote host.
201
+ const observer = opts.observer ?? machineId();
202
+ let days;
203
+ try {
204
+ days = fs.readdirSync(dir).filter((name) => name.endsWith('.jsonl')).sort().reverse();
205
+ }
206
+ catch {
207
+ return []; // The engine has never run here, or is not installed.
208
+ }
209
+ const out = [];
210
+ for (const day of days) {
211
+ if (out.length >= limit)
212
+ break;
213
+ let lines;
214
+ try {
215
+ lines = fs.readFileSync(path.join(dir, day), 'utf8').split('\n');
216
+ }
217
+ catch {
218
+ continue; /* rotated or removed mid-read */
219
+ }
220
+ // Newest last within a day, and the budget favours the newest actions.
221
+ for (let index = lines.length - 1; index >= 0 && out.length < limit; index--) {
222
+ const line = lines[index];
223
+ if (!line)
224
+ continue;
225
+ const action = standaloneLineToAction(line, observer);
226
+ if (action)
227
+ out.push(action);
228
+ }
229
+ }
230
+ out.sort((a, b) => b.tsMs - a.tsMs);
231
+ return out;
232
+ }
233
+ /**
234
+ * Union the two ledgers, preferring the standalone record for any run present in
235
+ * both.
236
+ *
237
+ * Dedupe keys on `invocationId`, NOT on a timestamp or pid. When a command is
238
+ * forwarded through `agents computer`, BOTH stores receive it — and the
239
+ * forwarding rewrites `ts` and `pid` on the way through, so the two copies of one
240
+ * action do not agree on either. `invocationId` is minted by the engine and
241
+ * echoed unchanged, which makes it the only field that identifies the same run in
242
+ * both files. A legacy feed record with no invocationId cannot be matched to
243
+ * anything, so it is kept: dropping it would lose history the standalone ledger
244
+ * never had.
245
+ */
246
+ export function mergeComputerActionSources(standalone, legacy) {
247
+ const standaloneRuns = new Set();
248
+ for (const action of standalone)
249
+ if (action.invocationId)
250
+ standaloneRuns.add(action.invocationId);
251
+ const merged = [...standalone];
252
+ for (const action of legacy) {
253
+ if (action.invocationId && standaloneRuns.has(action.invocationId))
254
+ continue;
255
+ merged.push(action);
256
+ }
257
+ merged.sort((a, b) => b.tsMs - a.tsMs);
258
+ return merged;
259
+ }
96
260
  /** Read `computer.action` events straight from the durable event ledger,
97
261
  * newest first, bounded by `limit`. Malformed/legacy records (missing
98
262
  * `command` or `pid`, or an unparseable `ts`) are skipped, never thrown —
@@ -240,7 +404,10 @@ function appendPrunedRunsFromDb(rows, limit) {
240
404
  * flat/`--json` printer's) data source. `machine` narrows to rows whose
241
405
  * invoking hostname, machineId, or `--device` target contains the substring. */
242
406
  export function buildComputerSessionRows(opts = {}) {
243
- const actions = listComputerActions({ limit: opts.limit });
407
+ const actions = mergeComputerActionSources(
408
+ // `observer` is threaded from the caller's scope so a row's device and the
409
+ // scope that reported it can never name the same box differently.
410
+ listStandaloneComputerActions({ limit: opts.limit, ...(opts.observer ? { observer: opts.observer } : {}) }), listComputerActions({ limit: opts.limit }));
244
411
  const index = buildLaunchSessionIndex();
245
412
  const rows = groupIntoComputerRuns(actions, (sessionId) => getSessionById(sessionId), (launchId) => resolveLaunchSession(index, launchId));
246
413
  // Retention runs here, on the listing path, never on the action hot path:
@@ -114,7 +114,7 @@ export declare function parseEventLines(buffer: string): {
114
114
  events: ComputerActionEvent[];
115
115
  rest: string;
116
116
  };
117
- export interface RunComputerOptions {
117
+ interface RunComputerOptions {
118
118
  /** argv handed to the standalone, after the program name. */
119
119
  argv: string[];
120
120
  /** The consumer context serialized onto fd 3. */
@@ -131,7 +131,7 @@ export interface RunComputerOptions {
131
131
  */
132
132
  capture?: boolean;
133
133
  }
134
- export interface RunComputerResult {
134
+ interface RunComputerResult {
135
135
  exitCode: number;
136
136
  /** Engine stdout, only when `capture` was set. */
137
137
  stdout: string;
@@ -147,4 +147,4 @@ export interface RunComputerResult {
147
147
  export declare function runComputer(opts: RunComputerOptions): Promise<RunComputerResult>;
148
148
  /** Test seam: drop the memoized bin so PATH fixtures can re-resolve. */
149
149
  export declare function _resetComputerClientForTest(): void;
150
- export declare const COMPUTER_INSTALL_HINT = "npm i -g @phnx-labs/computer-cli";
150
+ export {};
@@ -219,4 +219,3 @@ function osSignalNumber(signal) {
219
219
  export function _resetComputerClientForTest() {
220
220
  cachedBin = undefined;
221
221
  }
222
- export const COMPUTER_INSTALL_HINT = INSTALL_HINT;
@@ -10,10 +10,11 @@
10
10
  * `lsof`, multi-dotfile scans) reads to behavioral EDR as recon/enumeration. A
11
11
  * bounded, spread-out spawn rate produces the same data without the burst signature.
12
12
  */
13
- export interface BoundedMapOptions {
13
+ interface BoundedMapOptions {
14
14
  /** Maximum number of `fn` calls running at once. Coerced to >= 1. */
15
15
  concurrency: number;
16
16
  /** Minimum spacing (ms) between successive task starts. 0 (default) = no spacing. */
17
17
  staggerMs?: number;
18
18
  }
19
19
  export declare function mapBounded<T, R>(items: readonly T[], fn: (item: T, index: number) => Promise<R>, opts: BoundedMapOptions): Promise<R[]>;
20
+ export {};
@@ -9,7 +9,14 @@
9
9
  import type { AgentId } from './types.js';
10
10
  import { type ModelTier } from './model-tiers.js';
11
11
  /** The top-level scope of a unified config key. */
12
- export type ConfigScope = 'run' | 'interactive' | 'auto' | 'browser' | 'project' | 'device' | 'summarizer' | 'updates';
12
+ export type ConfigScope = 'run' | 'interactive' | 'auto' | 'browser' | 'project' | 'device' | 'summarizer' | 'updates' | 'menubar';
13
+ /**
14
+ * The AGI Menu preference leaf names under `menubar.menu.*` (PHNX-3999). The
15
+ * types, defaults, and enum validation for each live in `device-config.ts`'s
16
+ * CONFIG_KEYS (user scope); this list is only the parser's allow-set so an
17
+ * unknown `menubar.menu.<x>` fails loud here instead of at the store.
18
+ */
19
+ export declare const MENUBAR_MENU_PROPERTIES: readonly ["defaultProject", "workingRowsShown", "showPreviews", "projectPriorityFilter", "hideCompletedMilestones", "bannerWhenNeedsYou", "includeOtherDeviceRequests", "groupBy", "thenBy", "projectScope", "projectSort", "ticketSort", "showPullRequests"];
13
20
  /** A run-time default key: model, mode, effort, or tier override. */
14
21
  export interface ParsedRunConfigKey {
15
22
  scope: 'run';
@@ -60,8 +67,14 @@ export interface ParsedUpdatesConfigKey {
60
67
  property: 'auto';
61
68
  agent?: AgentId;
62
69
  }
63
- export type ParsedConfigKey = ParsedRunConfigKey | ParsedInteractiveConfigKey | ParsedAutoConfigKey | ParsedBrowserConfigKey | ParsedProjectConfigKey | ParsedDeviceConfigKey | ParsedSummarizerConfigKey | ParsedUpdatesConfigKey;
64
- export type DeviceConfigProperty = 'role' | 'max-agents' | 'scheduler' | 'daemon' | 'watchdog' | 'tmux' | 'browser.remote-control' | 'browser.task-idle-minutes' | 'notes' | 'browser.profile' | 'browser.viewer';
70
+ /** An AGI Menu preference key: `menubar.menu.<property>` (user-scope, PHNX-3999). */
71
+ export interface ParsedMenubarConfigKey {
72
+ scope: 'menubar';
73
+ /** Leaf name under `menubar.menu.` — one of {@link MENUBAR_MENU_PROPERTIES}. */
74
+ property: string;
75
+ }
76
+ export type ParsedConfigKey = ParsedRunConfigKey | ParsedInteractiveConfigKey | ParsedAutoConfigKey | ParsedBrowserConfigKey | ParsedProjectConfigKey | ParsedDeviceConfigKey | ParsedSummarizerConfigKey | ParsedUpdatesConfigKey | ParsedMenubarConfigKey;
77
+ export type DeviceConfigProperty = 'role' | 'max-agents' | 'scheduler' | 'daemon' | 'watchdog' | 'tmux' | 'browser.remote-control' | 'browser.task-idle-minutes' | 'notes' | 'browser.profile' | 'browser.viewer' | 'computer.host' | 'formFactor';
65
78
  /** Normalize agent@version to use `@` consistently. */
66
79
  export declare function formatAgentVersion(agent: AgentId, version: string): string;
67
80
  /**
@@ -9,6 +9,27 @@
9
9
  import { AGENTS } from './agents.js';
10
10
  import { MODEL_TIERS } from './model-tiers.js';
11
11
  import { VERSION_RE } from './run-defaults.js';
12
+ /**
13
+ * The AGI Menu preference leaf names under `menubar.menu.*` (PHNX-3999). The
14
+ * types, defaults, and enum validation for each live in `device-config.ts`'s
15
+ * CONFIG_KEYS (user scope); this list is only the parser's allow-set so an
16
+ * unknown `menubar.menu.<x>` fails loud here instead of at the store.
17
+ */
18
+ export const MENUBAR_MENU_PROPERTIES = [
19
+ 'defaultProject',
20
+ 'workingRowsShown',
21
+ 'showPreviews',
22
+ 'projectPriorityFilter',
23
+ 'hideCompletedMilestones',
24
+ 'bannerWhenNeedsYou',
25
+ 'includeOtherDeviceRequests',
26
+ 'groupBy',
27
+ 'thenBy',
28
+ 'projectScope',
29
+ 'projectSort',
30
+ 'ticketSort',
31
+ 'showPullRequests',
32
+ ];
12
33
  const DEVICE_CONFIG_PROPERTIES = [
13
34
  'browser.viewer',
14
35
  'role',
@@ -21,6 +42,8 @@ const DEVICE_CONFIG_PROPERTIES = [
21
42
  'browser.task-idle-minutes',
22
43
  'notes',
23
44
  'browser.profile',
45
+ 'computer.host',
46
+ 'formFactor',
24
47
  ];
25
48
  /** Split an agent@version token into its parts. Accepts both `@` and `:`. */
26
49
  function parseAgentVersion(token) {
@@ -98,6 +121,14 @@ export function parseConfigKey(key) {
98
121
  if (summarizerMatch) {
99
122
  return { scope: 'summarizer', property: summarizerMatch[1] };
100
123
  }
124
+ const menubarMatch = raw.match(/^menubar\.menu\.(.+)$/);
125
+ if (menubarMatch) {
126
+ const property = menubarMatch[1];
127
+ if (!MENUBAR_MENU_PROPERTIES.includes(property)) {
128
+ throw new Error(`Unknown AGI Menu preference '${key}'. Known keys: ${MENUBAR_MENU_PROPERTIES.map((p) => `menubar.menu.${p}`).join(', ')}.`);
129
+ }
130
+ return { scope: 'menubar', property };
131
+ }
101
132
  if (raw === 'updates.auto') {
102
133
  return { scope: 'updates', property: 'auto' };
103
134
  }
@@ -109,7 +140,7 @@ export function parseConfigKey(key) {
109
140
  }
110
141
  return { scope: 'updates', agent: agentPart, property: 'auto' };
111
142
  }
112
- const deviceMatch = raw.match(/^devices\.(.+)\.(role|max-agents|scheduler|daemon|watchdog|tmux|notes|browser\.remote-control|browser\.task-idle-minutes|browser\.profile|browser\.viewer)$/);
143
+ const deviceMatch = raw.match(/^devices\.(.+)\.(role|max-agents|scheduler|daemon|watchdog|tmux|notes|formFactor|browser\.remote-control|browser\.task-idle-minutes|browser\.profile|browser\.viewer|computer\.host)$/);
113
144
  if (deviceMatch) {
114
145
  return {
115
146
  scope: 'device',
@@ -139,10 +170,13 @@ export function parseConfigKey(key) {
139
170
  if (raw.startsWith('updates.')) {
140
171
  throw new Error(`Invalid updates config key '${key}'. Use updates.auto or updates.<agent>.auto.`);
141
172
  }
173
+ if (raw.startsWith('menubar.')) {
174
+ throw new Error(`Invalid AGI Menu config key '${key}'. Use ${MENUBAR_MENU_PROPERTIES.map((p) => `menubar.menu.${p}`).join(', ')}.`);
175
+ }
142
176
  if (raw.startsWith('devices.')) {
143
177
  throw new Error(`Invalid device config key '${key}'. Expected devices.<name>.<${DEVICE_CONFIG_PROPERTIES.join('|')}>.`);
144
178
  }
145
- throw new Error(`Unknown config scope in '${key}'. Use one of: run, interactive, auto, browser, project, devices, summarizer.`);
179
+ throw new Error(`Unknown config scope in '${key}'. Use one of: run, interactive, auto, browser, project, devices, summarizer, updates, menubar.`);
146
180
  }
147
181
  /** Render a parsed key back to its canonical dotted string. */
148
182
  export function formatConfigKey(parsed) {
@@ -168,6 +202,8 @@ export function formatConfigKey(parsed) {
168
202
  return `summarizer.${parsed.property}`;
169
203
  case 'updates':
170
204
  return parsed.agent ? `updates.${parsed.agent}.auto` : 'updates.auto';
205
+ case 'menubar':
206
+ return `menubar.menu.${parsed.property}`;
171
207
  }
172
208
  }
173
209
  /** List every canonical key the command documents, with wildcards expanded to a concrete example. */
@@ -178,6 +214,9 @@ export function listKnownConfigKeys() {
178
214
  keys.push(`run.<agent@version>.tier.${tier}`);
179
215
  }
180
216
  keys.push('interactive.host', 'auto.pool', 'browser.profile', 'browser.viewer', 'browser.device', 'project.root', 'summarizer.enabled', 'summarizer.baseUrl', 'summarizer.model', 'updates.auto', 'updates.<agent>.auto');
217
+ for (const prop of MENUBAR_MENU_PROPERTIES) {
218
+ keys.push(`menubar.menu.${prop}`);
219
+ }
181
220
  for (const prop of DEVICE_CONFIG_PROPERTIES) {
182
221
  keys.push(`devices.<name>.${prop}`);
183
222
  }
@@ -212,6 +251,10 @@ export function devicePropertyToConfigName(property) {
212
251
  return 'browser.profile';
213
252
  case 'browser.viewer':
214
253
  return 'browser.viewer';
254
+ case 'computer.host':
255
+ return 'computer.host';
256
+ case 'formFactor':
257
+ return 'formFactor';
215
258
  }
216
259
  }
217
260
  /**
@@ -253,5 +296,7 @@ export function configKeyStorageHint(parsed) {
253
296
  return parsed.agent
254
297
  ? `config.updatesAgentAuto.${parsed.agent} (central agents.yaml; syncs fleet-wide)`
255
298
  : 'config.updatesAuto (central agents.yaml; syncs fleet-wide)';
299
+ case 'menubar':
300
+ return `config.menubarMenu${parsed.property.charAt(0).toUpperCase()}${parsed.property.slice(1)} (central agents.yaml; syncs fleet-wide)`;
256
301
  }
257
302
  }
@@ -4,16 +4,6 @@
4
4
  * Handles frontmatter parsing and bidirectional translation so that slash commands
5
5
  * authored in one format can be synced to agents that expect the other.
6
6
  */
7
- /** Parsed YAML frontmatter from a Markdown command file. */
8
- export interface MarkdownFrontmatter {
9
- description?: string;
10
- [key: string]: unknown;
11
- }
12
- /** Extract YAML frontmatter and body from a Markdown string. Returns empty frontmatter if none found. */
13
- export declare function parseMarkdownFrontmatter(content: string): {
14
- frontmatter: MarkdownFrontmatter;
15
- body: string;
16
- };
17
7
  /** Convert a Markdown command file to Gemini's TOML format, translating $ARGUMENTS to {{args}}. */
18
8
  export declare function markdownToToml(skillName: string, markdown: string): string;
19
9
  /**
@@ -27,5 +17,3 @@ export declare function markdownToToml(skillName: string, markdown: string): str
27
17
  * Returns a plain object so the caller can `yaml.stringify` it.
28
18
  */
29
19
  export declare function markdownToGooseRecipe(commandName: string, markdown: string): Record<string, unknown>;
30
- /** Convert a Gemini TOML command file back to Markdown format, translating {{args}} to $ARGUMENTS. */
31
- export declare function tomlToMarkdown(toml: string): string;
@@ -5,7 +5,7 @@
5
5
  * authored in one format can be synced to agents that expect the other.
6
6
  */
7
7
  /** Extract YAML frontmatter and body from a Markdown string. Returns empty frontmatter if none found. */
8
- export function parseMarkdownFrontmatter(content) {
8
+ function parseMarkdownFrontmatter(content) {
9
9
  const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
10
10
  if (!match) {
11
11
  return { frontmatter: {}, body: content };
@@ -62,14 +62,3 @@ export function markdownToGooseRecipe(commandName, markdown) {
62
62
  prompt,
63
63
  };
64
64
  }
65
- /** Convert a Gemini TOML command file back to Markdown format, translating {{args}} to $ARGUMENTS. */
66
- export function tomlToMarkdown(toml) {
67
- const nameMatch = toml.match(/name\s*=\s*"([^"]+)"/);
68
- const descMatch = toml.match(/description\s*=\s*"([^"]+)"/);
69
- const promptMatch = toml.match(/prompt\s*=\s*(?:'''|""")([\s\S]*?)(?:'''|""")/);
70
- const description = descMatch?.[1] || '';
71
- let prompt = promptMatch?.[1]?.trim() || '';
72
- prompt = prompt.replace(/\{\{args\}\}/g, '$ARGUMENTS');
73
- const lines = ['---', `description: ${description}`, '---', '', prompt, ''];
74
- return lines.join('\n');
75
- }