@phnx-labs/agents-cli 1.22.112 → 1.22.114

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 (706) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +10 -11
  3. package/dist/cli/command-registry.d.ts +0 -60
  4. package/dist/cli/command-registry.js +59 -61
  5. package/dist/commands/apply.d.ts +0 -4
  6. package/dist/commands/apply.js +3 -3
  7. package/dist/commands/browser-picker.d.ts +3 -6
  8. package/dist/commands/browser-picker.js +2 -2
  9. package/dist/commands/browser-sessions-picker.d.ts +2 -1
  10. package/dist/commands/computer-sessions-picker.d.ts +2 -1
  11. package/dist/commands/computer.d.ts +14 -19
  12. package/dist/commands/computer.js +65 -10
  13. package/dist/commands/config.js +46 -2
  14. package/dist/commands/daemon.d.ts +0 -23
  15. package/dist/commands/daemon.js +1 -1
  16. package/dist/commands/detach-core.d.ts +2 -1
  17. package/dist/commands/detach.d.ts +0 -3
  18. package/dist/commands/detach.js +3 -3
  19. package/dist/commands/feed.d.ts +3 -3
  20. package/dist/commands/feed.js +1 -1
  21. package/dist/commands/focus.d.ts +4 -4
  22. package/dist/commands/harness-hooks.d.ts +0 -7
  23. package/dist/commands/harness-hooks.js +1 -1
  24. package/dist/commands/harness-wizard.d.ts +2 -2
  25. package/dist/commands/harness.d.ts +3 -8
  26. package/dist/commands/harness.js +1 -1
  27. package/dist/commands/inspect.d.ts +2 -3
  28. package/dist/commands/inspect.js +1 -1
  29. package/dist/commands/message.d.ts +1 -1
  30. package/dist/commands/message.js +3 -3
  31. package/dist/commands/projects.d.ts +2 -18
  32. package/dist/commands/projects.js +89 -3
  33. package/dist/commands/resource-view.d.ts +3 -2
  34. package/dist/commands/resume.d.ts +0 -1
  35. package/dist/commands/resume.js +1 -1
  36. package/dist/commands/routines.d.ts +1 -3
  37. package/dist/commands/routines.js +1 -1
  38. package/dist/commands/run-account-picker.d.ts +2 -1
  39. package/dist/commands/run-broadcast.d.ts +2 -1
  40. package/dist/commands/run-device-picker.d.ts +2 -1
  41. package/dist/commands/secrets-passthrough.d.ts +14 -0
  42. package/dist/commands/secrets-passthrough.js +21 -2
  43. package/dist/commands/sessions-backfill.d.ts +2 -35
  44. package/dist/commands/sessions-backfill.js +1 -1
  45. package/dist/commands/sessions-bookmark.d.ts +0 -10
  46. package/dist/commands/sessions-bookmark.js +1 -1
  47. package/dist/commands/sessions-inject.d.ts +2 -3
  48. package/dist/commands/sessions-inject.js +8 -17
  49. package/dist/commands/sessions-picker-factory.d.ts +4 -14
  50. package/dist/commands/sessions-picker-factory.js +2 -2
  51. package/dist/commands/sessions-picker.d.ts +3 -9
  52. package/dist/commands/sessions-picker.js +2 -2
  53. package/dist/commands/sessions-resume.d.ts +2 -4
  54. package/dist/commands/sessions-resume.js +0 -5
  55. package/dist/commands/sessions-stats.d.ts +2 -1
  56. package/dist/commands/sessions-stop.d.ts +0 -3
  57. package/dist/commands/sessions-stop.js +1 -1
  58. package/dist/commands/sessions-tail.d.ts +2 -1
  59. package/dist/commands/sessions-trace.d.ts +4 -6
  60. package/dist/commands/sessions-trace.js +1 -1
  61. package/dist/commands/sessions.d.ts +14 -104
  62. package/dist/commands/sessions.js +22 -10
  63. package/dist/commands/setup-mine.d.ts +0 -6
  64. package/dist/commands/setup-mine.js +1 -1
  65. package/dist/commands/setup.d.ts +3 -4
  66. package/dist/commands/setup.js +1 -1
  67. package/dist/commands/share.d.ts +8 -8
  68. package/dist/commands/teams-picker.d.ts +2 -5
  69. package/dist/commands/teams-picker.js +2 -2
  70. package/dist/commands/teams.d.ts +1 -7
  71. package/dist/commands/teams.js +1 -1
  72. package/dist/commands/tmux.d.ts +1 -1
  73. package/dist/commands/tmux.js +1 -1
  74. package/dist/commands/upgrade.d.ts +2 -1
  75. package/dist/commands/utils.d.ts +1 -1
  76. package/dist/commands/utils.js +1 -1
  77. package/dist/lib/account-capabilities.d.ts +2 -1
  78. package/dist/lib/account-catalog.d.ts +4 -13
  79. package/dist/lib/account-catalog.js +1 -1
  80. package/dist/lib/account-registry.d.ts +3 -4
  81. package/dist/lib/account-registry.js +1 -1
  82. package/dist/lib/accounting/account-launch.d.ts +4 -3
  83. package/dist/lib/accounting/account-pool.d.ts +2 -1
  84. package/dist/lib/accounting/rotate.d.ts +3 -9
  85. package/dist/lib/accounting/rotate.js +2 -14
  86. package/dist/lib/accounting/usage-sync.d.ts +5 -4
  87. package/dist/lib/accounting/usage.d.ts +7 -31
  88. package/dist/lib/accounting/usage.js +4 -4
  89. package/dist/lib/accounts/migrate.d.ts +8 -8
  90. package/dist/lib/accounts/migrate.js +1 -1
  91. package/dist/lib/acp/client.d.ts +3 -2
  92. package/dist/lib/acp/harnesses.d.ts +2 -2
  93. package/dist/lib/acp/harnesses.js +1 -1
  94. package/dist/lib/acp/run.d.ts +2 -1
  95. package/dist/lib/actor.d.ts +3 -2
  96. package/dist/lib/add-dir.d.ts +2 -17
  97. package/dist/lib/add-dir.js +2 -6
  98. package/dist/lib/address.d.ts +56 -0
  99. package/dist/lib/address.js +143 -0
  100. package/dist/lib/agent-spec/agents.d.ts +12 -28
  101. package/dist/lib/agent-spec/agents.js +2 -6
  102. package/dist/lib/agent-spec/primitives.d.ts +0 -7
  103. package/dist/lib/agent-spec/primitives.js +0 -6
  104. package/dist/lib/agent-spec/types.d.ts +2 -1
  105. package/dist/lib/analytics/dashboard.d.ts +1 -5
  106. package/dist/lib/analytics/dashboard.js +0 -2
  107. package/dist/lib/analytics/mix-commands.d.ts +0 -7
  108. package/dist/lib/analytics/mix-commands.js +3 -3
  109. package/dist/lib/analytics/recipes.d.ts +0 -12
  110. package/dist/lib/analytics/recipes.js +7 -31
  111. package/dist/lib/analytics/usage-db.d.ts +5 -32
  112. package/dist/lib/analytics/usage-db.js +1 -70
  113. package/dist/lib/answer-router.d.ts +7 -6
  114. package/dist/lib/answer-router.js +5 -11
  115. package/dist/lib/artifact-actions.d.ts +0 -4
  116. package/dist/lib/ask-classifier.d.ts +3 -4
  117. package/dist/lib/ask-classifier.js +0 -7
  118. package/dist/lib/auth-health.d.ts +3 -46
  119. package/dist/lib/auth-health.js +3 -3
  120. package/dist/lib/auth-mint.d.ts +6 -6
  121. package/dist/lib/auth-mint.js +5 -5
  122. package/dist/lib/bench/runner.d.ts +2 -2
  123. package/dist/lib/bench/runner.js +1 -1
  124. package/dist/lib/bench/storage.d.ts +0 -1
  125. package/dist/lib/bench/storage.js +1 -1
  126. package/dist/lib/boot-profile.d.ts +0 -2
  127. package/dist/lib/boot-profile.js +0 -4
  128. package/dist/lib/brand.d.ts +0 -6
  129. package/dist/lib/brand.js +1 -1
  130. package/dist/lib/browser/arc-discovery.d.ts +4 -12
  131. package/dist/lib/browser/arc-discovery.js +1 -1
  132. package/dist/lib/browser/cdp.d.ts +1 -1
  133. package/dist/lib/browser/chrome.d.ts +2 -2
  134. package/dist/lib/browser/chrome.js +0 -4
  135. package/dist/lib/browser/chromium-discovery.d.ts +3 -2
  136. package/dist/lib/browser/drivers/arc.d.ts +3 -20
  137. package/dist/lib/browser/drivers/arc.js +2 -7
  138. package/dist/lib/browser/drivers/firefox.d.ts +2 -6
  139. package/dist/lib/browser/drivers/firefox.js +1 -1
  140. package/dist/lib/browser/drivers/local.d.ts +2 -1
  141. package/dist/lib/browser/drivers/ssh.d.ts +2 -3
  142. package/dist/lib/browser/drivers/ssh.js +0 -7
  143. package/dist/lib/browser/firefox-discovery.d.ts +4 -3
  144. package/dist/lib/browser/har.d.ts +8 -7
  145. package/dist/lib/browser/hygiene.d.ts +2 -3
  146. package/dist/lib/browser/hygiene.js +1 -1
  147. package/dist/lib/browser/ipc.d.ts +4 -3
  148. package/dist/lib/browser/ipc.js +1 -1
  149. package/dist/lib/browser/login-detection.d.ts +1 -8
  150. package/dist/lib/browser/registry.d.ts +2 -1
  151. package/dist/lib/browser/remote-control.d.ts +0 -7
  152. package/dist/lib/browser/remote-control.js +2 -2
  153. package/dist/lib/browser/resolve-target.d.ts +2 -6
  154. package/dist/lib/browser/resolve-target.js +3 -3
  155. package/dist/lib/browser/runtime-state.d.ts +4 -4
  156. package/dist/lib/browser/service.d.ts +4 -4
  157. package/dist/lib/browser/sessions-list.d.ts +0 -10
  158. package/dist/lib/browser/sessions-list.js +3 -3
  159. package/dist/lib/browser/stream.d.ts +2 -1
  160. package/dist/lib/browser/task-index.d.ts +4 -4
  161. package/dist/lib/browser/task-index.js +1 -1
  162. package/dist/lib/browser/types.d.ts +0 -20
  163. package/dist/lib/browser/types.js +1 -34
  164. package/dist/lib/browser/upload.d.ts +0 -27
  165. package/dist/lib/budget/ledger.d.ts +0 -2
  166. package/dist/lib/budget/ledger.js +1 -1
  167. package/dist/lib/budget/live-cloud.d.ts +2 -1
  168. package/dist/lib/budget/preflight.d.ts +3 -5
  169. package/dist/lib/budget/preflight.js +1 -1
  170. package/dist/lib/catchup.d.ts +2 -1
  171. package/dist/lib/channels/owner-forward.d.ts +5 -4
  172. package/dist/lib/channels/owner-sink.js +2 -2
  173. package/dist/lib/channels/providers/desktop.js +1 -1
  174. package/dist/lib/channels/providers/rush.d.ts +2 -1
  175. package/dist/lib/channels/registry.d.ts +1 -1
  176. package/dist/lib/channels/registry.js +1 -1
  177. package/dist/lib/channels/resolve.d.ts +3 -2
  178. package/dist/lib/channels/send.d.ts +5 -4
  179. package/dist/lib/cli-resources.d.ts +3 -9
  180. package/dist/lib/cli-resources.js +1 -1
  181. package/dist/lib/cloud/cursor.d.ts +1 -2
  182. package/dist/lib/cloud/cursor.js +1 -1
  183. package/dist/lib/cloud/dispatch.d.ts +2 -1
  184. package/dist/lib/cloud/factory.d.ts +0 -2
  185. package/dist/lib/cloud/factory.js +1 -1
  186. package/dist/lib/cloud/rush.d.ts +3 -11
  187. package/dist/lib/cloud/rush.js +1 -1
  188. package/dist/lib/cloud/session-index.d.ts +2 -1
  189. package/dist/lib/cloud/types.d.ts +2 -1
  190. package/dist/lib/codex-policy.d.ts +2 -1
  191. package/dist/lib/commands.d.ts +7 -7
  192. package/dist/lib/commands.js +1 -1
  193. package/dist/lib/comms-render.d.ts +1 -1
  194. package/dist/lib/computer/context.d.ts +11 -3
  195. package/dist/lib/computer/context.js +2 -2
  196. package/dist/lib/computer/policy.d.ts +0 -12
  197. package/dist/lib/computer/policy.js +1 -1
  198. package/dist/lib/computer-client.d.ts +3 -3
  199. package/dist/lib/computer-client.js +0 -1
  200. package/dist/lib/concurrency.d.ts +2 -1
  201. package/dist/lib/config-keys.d.ts +16 -3
  202. package/dist/lib/config-keys.js +47 -2
  203. package/dist/lib/convert.d.ts +0 -12
  204. package/dist/lib/convert.js +1 -12
  205. package/dist/lib/crabbox/cli.d.ts +6 -24
  206. package/dist/lib/crabbox/cli.js +2 -28
  207. package/dist/lib/crabbox/lease.d.ts +5 -6
  208. package/dist/lib/crabbox/lease.js +1 -1
  209. package/dist/lib/crabbox/progress.d.ts +2 -1
  210. package/dist/lib/crabbox/setup-copy.d.ts +2 -3
  211. package/dist/lib/crabbox/setup-copy.js +1 -1
  212. package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
  213. package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
  214. package/dist/lib/daemon/catchup-service.d.ts +2 -1
  215. package/dist/lib/daemon/daemon.d.ts +4 -12
  216. package/dist/lib/daemon/daemon.js +42 -23
  217. package/dist/lib/daemon/harness-update-service.d.ts +2 -19
  218. package/dist/lib/daemon/harness-update-service.js +3 -3
  219. package/dist/lib/daemon/runner.d.ts +3 -3
  220. package/dist/lib/daemon/self-update-service.d.ts +1 -16
  221. package/dist/lib/daemon/self-update-service.js +6 -6
  222. package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
  223. package/dist/lib/daemon/supervisor.d.ts +3 -2
  224. package/dist/lib/daemon/testdata/process-view-daemon.d.ts +1 -0
  225. package/dist/lib/daemon/testdata/process-view-daemon.js +14 -0
  226. package/dist/lib/daemon/testdata/process-view-start.d.ts +1 -0
  227. package/dist/lib/daemon/testdata/process-view-start.js +43 -0
  228. package/dist/lib/daemon-services.d.ts +2 -1
  229. package/dist/lib/daemon-webhooks.d.ts +1 -1
  230. package/dist/lib/deeplink/register.d.ts +3 -13
  231. package/dist/lib/deeplink/register.js +3 -3
  232. package/dist/lib/deeplink/url.d.ts +3 -2
  233. package/dist/lib/device-config.d.ts +4 -15
  234. package/dist/lib/device-config.js +164 -8
  235. package/dist/lib/devices/connect.d.ts +2 -1
  236. package/dist/lib/devices/discovery-policy.d.ts +3 -2
  237. package/dist/lib/devices/doctor-findings.js +1 -1
  238. package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
  239. package/dist/lib/devices/fleet-divergence.d.ts +2 -1
  240. package/dist/lib/devices/fleet.d.ts +3 -4
  241. package/dist/lib/devices/fleet.js +1 -1
  242. package/dist/lib/devices/harness-inventory.d.ts +3 -2
  243. package/dist/lib/devices/health-report.d.ts +3 -2
  244. package/dist/lib/devices/health.d.ts +1 -8
  245. package/dist/lib/devices/health.js +1 -1
  246. package/dist/lib/devices/interactive-host.d.ts +0 -2
  247. package/dist/lib/devices/interactive-host.js +1 -1
  248. package/dist/lib/devices/known-hosts.d.ts +2 -20
  249. package/dist/lib/devices/known-hosts.js +2 -2
  250. package/dist/lib/devices/pool.d.ts +2 -1
  251. package/dist/lib/devices/resolve-target.d.ts +2 -2
  252. package/dist/lib/devices/rollout-verify.d.ts +3 -2
  253. package/dist/lib/devices/stats-cache.d.ts +3 -2
  254. package/dist/lib/devices/sync.d.ts +6 -5
  255. package/dist/lib/devices/worker-pick.d.ts +3 -12
  256. package/dist/lib/devices/worker-pick.js +1 -1
  257. package/dist/lib/diff-text.d.ts +2 -1
  258. package/dist/lib/doctor-diff.d.ts +2 -1
  259. package/dist/lib/drift-sync.d.ts +3 -2
  260. package/dist/lib/drift.d.ts +3 -3
  261. package/dist/lib/drift.js +1 -1
  262. package/dist/lib/event-families.d.ts +0 -6
  263. package/dist/lib/event-families.js +3 -3
  264. package/dist/lib/event-provenance.d.ts +4 -1
  265. package/dist/lib/event-provenance.js +4 -0
  266. package/dist/lib/events-ingest.d.ts +4 -3
  267. package/dist/lib/exec-account-home.d.ts +2 -4
  268. package/dist/lib/exec-account-home.js +1 -1
  269. package/dist/lib/exec-bounded.d.ts +3 -4
  270. package/dist/lib/exec-bounded.js +1 -1
  271. package/dist/lib/exec.d.ts +6 -18
  272. package/dist/lib/exec.js +28 -8
  273. package/dist/lib/factory/snapshot.d.ts +2 -2
  274. package/dist/lib/factory/snapshot.js +1 -1
  275. package/dist/lib/feed/activity-stream.d.ts +2 -5
  276. package/dist/lib/feed/activity-stream.js +11 -2
  277. package/dist/lib/feed/activity.d.ts +16 -33
  278. package/dist/lib/feed/activity.js +69 -26
  279. package/dist/lib/feed/answer.d.ts +3 -2
  280. package/dist/lib/feed/attention.js +5 -1
  281. package/dist/lib/feed/events.d.ts +2 -47
  282. package/dist/lib/feed/events.js +1 -141
  283. package/dist/lib/feed/feed.d.ts +9 -42
  284. package/dist/lib/feed/feed.js +1 -60
  285. package/dist/lib/feed/pr-status.d.ts +0 -2
  286. package/dist/lib/feed/pr-status.js +1 -5
  287. package/dist/lib/feed/watch.d.ts +10 -2
  288. package/dist/lib/feed/watch.js +91 -4
  289. package/dist/lib/feed-broadcast.d.ts +5 -47
  290. package/dist/lib/feed-broadcast.js +9 -9
  291. package/dist/lib/feed-outcome.d.ts +3 -6
  292. package/dist/lib/feed-outcome.js +2 -2
  293. package/dist/lib/feed-policy.d.ts +5 -6
  294. package/dist/lib/feed-policy.js +2 -2
  295. package/dist/lib/feed-post.d.ts +3 -4
  296. package/dist/lib/feed-post.js +2 -2
  297. package/dist/lib/feed-ranking.d.ts +2 -2
  298. package/dist/lib/feed-ranking.js +1 -1
  299. package/dist/lib/fleet/apply.d.ts +5 -6
  300. package/dist/lib/fleet/apply.js +4 -4
  301. package/dist/lib/fleet/manifest.d.ts +2 -1
  302. package/dist/lib/fleet/remote-login.d.ts +18 -36
  303. package/dist/lib/fleet/remote-login.js +20 -19
  304. package/dist/lib/fleet/types.d.ts +0 -8
  305. package/dist/lib/fleet-cache.d.ts +1 -18
  306. package/dist/lib/fleet-cache.js +0 -5
  307. package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
  308. package/dist/lib/fleet-shared-repo-sync.js +1 -1
  309. package/dist/lib/fleet-shared-state.d.ts +3 -2
  310. package/dist/lib/format.d.ts +2 -1
  311. package/dist/lib/friction-heuristics.d.ts +2 -1
  312. package/dist/lib/fs-walk.d.ts +2 -1
  313. package/dist/lib/fuzzy.d.ts +2 -1
  314. package/dist/lib/gemini-settings.d.ts +0 -1
  315. package/dist/lib/gemini-settings.js +1 -1
  316. package/dist/lib/git.d.ts +7 -65
  317. package/dist/lib/git.js +3 -142
  318. package/dist/lib/github/gh-overload.d.ts +0 -4
  319. package/dist/lib/github/gh-overload.js +2 -2
  320. package/dist/lib/github/project-prs.d.ts +118 -0
  321. package/dist/lib/github/project-prs.js +173 -0
  322. package/dist/lib/github/rest.d.ts +2 -1
  323. package/dist/lib/harness/exec-config-version.d.ts +2 -1
  324. package/dist/lib/harness-auth-capabilities.d.ts +5 -4
  325. package/dist/lib/harness-connection-test.d.ts +2 -1
  326. package/dist/lib/heal.d.ts +3 -20
  327. package/dist/lib/heal.js +2 -39
  328. package/dist/lib/help.d.ts +3 -2
  329. package/dist/lib/helper-download.d.ts +0 -12
  330. package/dist/lib/helper-download.js +2 -2
  331. package/dist/lib/helper-versions.d.ts +2 -1
  332. package/dist/lib/helper-versions.js +1 -1
  333. package/dist/lib/hooks/install.d.ts +8 -49
  334. package/dist/lib/hooks/install.js +2 -96
  335. package/dist/lib/hooks/match.d.ts +2 -1
  336. package/dist/lib/hosts/credential-transport.d.ts +0 -2
  337. package/dist/lib/hosts/credential-transport.js +1 -1
  338. package/dist/lib/hosts/dispatch.d.ts +2 -34
  339. package/dist/lib/hosts/dispatch.js +4 -21
  340. package/dist/lib/hosts/logs.d.ts +2 -1
  341. package/dist/lib/hosts/passthrough.d.ts +1 -1
  342. package/dist/lib/hosts/passthrough.js +0 -1
  343. package/dist/lib/hosts/progress.d.ts +0 -5
  344. package/dist/lib/hosts/progress.js +1 -1
  345. package/dist/lib/hosts/ready.d.ts +3 -4
  346. package/dist/lib/hosts/ready.js +0 -8
  347. package/dist/lib/hosts/reconcile.d.ts +2 -8
  348. package/dist/lib/hosts/reconcile.js +1 -1
  349. package/dist/lib/hosts/reconnect.d.ts +4 -11
  350. package/dist/lib/hosts/reconnect.js +2 -2
  351. package/dist/lib/hosts/registry.d.ts +1 -1
  352. package/dist/lib/hosts/remote-cmd.d.ts +4 -3
  353. package/dist/lib/hosts/remote-session-id.d.ts +5 -27
  354. package/dist/lib/hosts/remote-session-id.js +18 -61
  355. package/dist/lib/hosts/session-index.d.ts +3 -2
  356. package/dist/lib/hosts/ssh-config.d.ts +2 -3
  357. package/dist/lib/hosts/ssh-config.js +0 -10
  358. package/dist/lib/humans.d.ts +0 -2
  359. package/dist/lib/humans.js +2 -2
  360. package/dist/lib/import.d.ts +4 -3
  361. package/dist/lib/installations/installation-lock.d.ts +0 -2
  362. package/dist/lib/installations/installation-lock.js +2 -2
  363. package/dist/lib/installations/launch-gate.d.ts +0 -9
  364. package/dist/lib/installations/launch-gate.js +1 -1
  365. package/dist/lib/installations/migrate.d.ts +0 -11
  366. package/dist/lib/installations/migrate.js +1 -1
  367. package/dist/lib/installations/shims.d.ts +1 -1
  368. package/dist/lib/installations/shims.js +2 -2
  369. package/dist/lib/installations/update-runtime.js +1 -1
  370. package/dist/lib/launch-identity.d.ts +10 -0
  371. package/dist/lib/launch-identity.js +31 -0
  372. package/dist/lib/linear-cache.d.ts +2 -1
  373. package/dist/lib/linux-userns.d.ts +2 -3
  374. package/dist/lib/linux-userns.js +0 -4
  375. package/dist/lib/loop.d.ts +2 -1
  376. package/dist/lib/mailbox-gc.d.ts +2 -1
  377. package/dist/lib/mailbox-target.d.ts +2 -1
  378. package/dist/lib/mailbox.d.ts +0 -6
  379. package/dist/lib/mailbox.js +1 -1
  380. package/dist/lib/manifest.d.ts +0 -14
  381. package/dist/lib/manifest.js +2 -2
  382. package/dist/lib/mcp-registry.d.ts +2 -1
  383. package/dist/lib/memory.d.ts +2 -13
  384. package/dist/lib/memory.js +4 -4
  385. package/dist/lib/menubar/download-menubar.d.ts +0 -2
  386. package/dist/lib/menubar/download-menubar.js +1 -5
  387. package/dist/lib/menubar/install-menubar.d.ts +3 -14
  388. package/dist/lib/menubar/install-menubar.js +3 -3
  389. package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
  390. package/dist/lib/menubar/migrate-prefs.js +168 -0
  391. package/dist/lib/menubar/resolve-version.d.ts +1 -9
  392. package/dist/lib/menubar/resolve-version.js +4 -4
  393. package/dist/lib/menubar/snapshot.d.ts +24 -2
  394. package/dist/lib/menubar/snapshot.js +26 -0
  395. package/dist/lib/model-tier-overrides.d.ts +3 -2
  396. package/dist/lib/monitors/config.d.ts +0 -2
  397. package/dist/lib/monitors/config.js +0 -4
  398. package/dist/lib/monitors/engine.d.ts +1 -1
  399. package/dist/lib/monitors/remote.d.ts +3 -2
  400. package/dist/lib/monitors/sources/webhook.d.ts +2 -15
  401. package/dist/lib/monitors/sources/webhook.js +1 -38
  402. package/dist/lib/monitors/state.d.ts +4 -7
  403. package/dist/lib/monitors/state.js +2 -2
  404. package/dist/lib/notify.d.ts +1 -1
  405. package/dist/lib/notify.js +1 -1
  406. package/dist/lib/onepassword.d.ts +5 -14
  407. package/dist/lib/onepassword.js +0 -64
  408. package/dist/lib/open-url.d.ts +3 -2
  409. package/dist/lib/openclaw-keychain.d.ts +4 -17
  410. package/dist/lib/openclaw-keychain.js +3 -33
  411. package/dist/lib/operator.d.ts +2 -2
  412. package/dist/lib/operator.js +1 -1
  413. package/dist/lib/output/git-output.d.ts +4 -14
  414. package/dist/lib/output/git-output.js +1 -1
  415. package/dist/lib/owner-message.d.ts +3 -29
  416. package/dist/lib/owner-message.js +3 -3
  417. package/dist/lib/packages/output-home.d.ts +2 -4
  418. package/dist/lib/packages/output-home.js +2 -2
  419. package/dist/lib/perf/db.d.ts +0 -2
  420. package/dist/lib/perf/db.js +2 -7
  421. package/dist/lib/permissions-registry.d.ts +2 -3
  422. package/dist/lib/permissions-registry.js +0 -4
  423. package/dist/lib/permissions.d.ts +6 -16
  424. package/dist/lib/permissions.js +2 -15
  425. package/dist/lib/picker.d.ts +6 -5
  426. package/dist/lib/placement.d.ts +3 -6
  427. package/dist/lib/placement.js +0 -17
  428. package/dist/lib/platform/posixpath.d.ts +2 -1
  429. package/dist/lib/platform/winpath.d.ts +2 -1
  430. package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
  431. package/dist/lib/plugins/plugin-marketplace.js +1 -1
  432. package/dist/lib/pr-land-detach.d.ts +2 -1
  433. package/dist/lib/profiles-presets.d.ts +2 -1
  434. package/dist/lib/profiles.d.ts +3 -9
  435. package/dist/lib/profiles.js +1 -9
  436. package/dist/lib/project-doctor.d.ts +2 -1
  437. package/dist/lib/project-launch.d.ts +2 -2
  438. package/dist/lib/project-probe.d.ts +4 -3
  439. package/dist/lib/project-pull.d.ts +2 -1
  440. package/dist/lib/project-resources.d.ts +2 -2
  441. package/dist/lib/project-resources.js +1 -1
  442. package/dist/lib/project-root.d.ts +2 -6
  443. package/dist/lib/project-root.js +1 -1
  444. package/dist/lib/project-schedule.d.ts +2 -1
  445. package/dist/lib/project-status.d.ts +2 -16
  446. package/dist/lib/project-status.js +3 -3
  447. package/dist/lib/reconcile-and-repair.d.ts +5 -4
  448. package/dist/lib/redact.d.ts +7 -1
  449. package/dist/lib/redact.js +94 -3
  450. package/dist/lib/refresh-coordinator.d.ts +2 -1
  451. package/dist/lib/refresh.d.ts +3 -2
  452. package/dist/lib/remote-agents-json.d.ts +3 -2
  453. package/dist/lib/reserved-stores.d.ts +0 -2
  454. package/dist/lib/reserved-stores.js +3 -5
  455. package/dist/lib/resource-content-diff.d.ts +0 -2
  456. package/dist/lib/resource-content-diff.js +1 -1
  457. package/dist/lib/resource-patterns.d.ts +2 -1
  458. package/dist/lib/resource-profiles.d.ts +2 -8
  459. package/dist/lib/resource-profiles.js +3 -27
  460. package/dist/lib/resources/workflows.d.ts +1 -1
  461. package/dist/lib/resources.d.ts +4 -9
  462. package/dist/lib/resources.js +1 -1
  463. package/dist/lib/routine-context.d.ts +2 -5
  464. package/dist/lib/routine-context.js +2 -2
  465. package/dist/lib/routine-notify-owner.d.ts +8 -7
  466. package/dist/lib/routine-notify-owner.js +5 -5
  467. package/dist/lib/routine-process-cleanup.d.ts +2 -1
  468. package/dist/lib/routine-readiness.d.ts +0 -2
  469. package/dist/lib/routine-readiness.js +0 -7
  470. package/dist/lib/routines-project.d.ts +3 -4
  471. package/dist/lib/routines-project.js +1 -1
  472. package/dist/lib/rules/compile.d.ts +3 -25
  473. package/dist/lib/rules/compile.js +1 -1
  474. package/dist/lib/rules/compose.d.ts +3 -9
  475. package/dist/lib/rules/rules.d.ts +4 -15
  476. package/dist/lib/rules/rules.js +1 -64
  477. package/dist/lib/run-defaults.d.ts +1 -1
  478. package/dist/lib/run-notify.d.ts +2 -1
  479. package/dist/lib/run-trace-sync.d.ts +1 -1
  480. package/dist/lib/run-trace-sync.js +1 -1
  481. package/dist/lib/scheduler.d.ts +2 -1
  482. package/dist/lib/scheduling/routines.d.ts +9 -21
  483. package/dist/lib/scheduling/routines.js +3 -46
  484. package/dist/lib/secrets-client.d.ts +0 -17
  485. package/dist/lib/secrets-client.js +4 -26
  486. package/dist/lib/secrets-policy.d.ts +12 -17
  487. package/dist/lib/secrets-policy.js +5 -5
  488. package/dist/lib/secrets-types.d.ts +3 -2
  489. package/dist/lib/secrets-types.js +2 -1
  490. package/dist/lib/self-heal/checks/install-staging.js +1 -1
  491. package/dist/lib/self-heal/registry.d.ts +3 -2
  492. package/dist/lib/self-heal/types.d.ts +1 -1
  493. package/dist/lib/self-heal/types.js +1 -1
  494. package/dist/lib/self-update.d.ts +5 -5
  495. package/dist/lib/self-update.js +4 -4
  496. package/dist/lib/session/active.js +9 -3
  497. package/dist/lib/session/actor-sidecar.d.ts +3 -2
  498. package/dist/lib/session/artifacts.d.ts +0 -2
  499. package/dist/lib/session/artifacts.js +1 -1
  500. package/dist/lib/session/bash-command.d.ts +2 -7
  501. package/dist/lib/session/bundle.d.ts +4 -6
  502. package/dist/lib/session/bundle.js +1 -5
  503. package/dist/lib/session/cloud.d.ts +0 -4
  504. package/dist/lib/session/cloud.js +2 -15
  505. package/dist/lib/session/db.d.ts +2 -1
  506. package/dist/lib/session/db.js +39 -4
  507. package/dist/lib/session/detached.d.ts +2 -1
  508. package/dist/lib/session/detached.js +2 -2
  509. package/dist/lib/session/digest.d.ts +2 -2
  510. package/dist/lib/session/digest.js +1 -1
  511. package/dist/lib/session/discover.js +7 -2
  512. package/dist/lib/session/fork.d.ts +3 -2
  513. package/dist/lib/session/highlights.d.ts +6 -5
  514. package/dist/lib/session/hook-sessions.d.ts +12 -1
  515. package/dist/lib/session/hook-sessions.js +139 -6
  516. package/dist/lib/session/host-link.d.ts +2 -1
  517. package/dist/lib/session/inject.d.ts +1 -1
  518. package/dist/lib/session/inject.js +1 -1
  519. package/dist/lib/session/insights.d.ts +3 -15
  520. package/dist/lib/session/insights.js +2 -2
  521. package/dist/lib/session/local-tmux-attach.d.ts +2 -18
  522. package/dist/lib/session/local-tmux-attach.js +1 -1
  523. package/dist/lib/session/migrations.d.ts +0 -1
  524. package/dist/lib/session/migrations.js +1 -1
  525. package/dist/lib/session/mirror.d.ts +5 -8
  526. package/dist/lib/session/mirror.js +2 -2
  527. package/dist/lib/session/parse.d.ts +1 -32
  528. package/dist/lib/session/parse.js +4 -4
  529. package/dist/lib/session/pid-registry.d.ts +18 -5
  530. package/dist/lib/session/pid-registry.js +164 -17
  531. package/dist/lib/session/presence.d.ts +2 -1
  532. package/dist/lib/session/process-view.d.ts +25 -0
  533. package/dist/lib/session/process-view.js +176 -0
  534. package/dist/lib/session/projection.d.ts +13 -0
  535. package/dist/lib/session/projection.js +101 -0
  536. package/dist/lib/session/prompt.d.ts +3 -2
  537. package/dist/lib/session/prompt.js +38 -1
  538. package/dist/lib/session/recovery.d.ts +3 -2
  539. package/dist/lib/session/remote/peer-stream.d.ts +2 -5
  540. package/dist/lib/session/remote/peer-stream.js +2 -2
  541. package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
  542. package/dist/lib/session/remote/remote-list.d.ts +5 -5
  543. package/dist/lib/session/remote/remote.d.ts +4 -3
  544. package/dist/lib/session/remote/watch.d.ts +10 -7
  545. package/dist/lib/session/remote/watch.js +10 -6
  546. package/dist/lib/session/remote-active.d.ts +2 -1
  547. package/dist/lib/session/render.d.ts +2 -2
  548. package/dist/lib/session/render.js +1 -1
  549. package/dist/lib/session/resume-owner.d.ts +1 -1
  550. package/dist/lib/session/resume-owner.js +1 -1
  551. package/dist/lib/session/run-names.d.ts +2 -1
  552. package/dist/lib/session/session-cache.d.ts +7 -26
  553. package/dist/lib/session/session-cache.js +17 -8
  554. package/dist/lib/session/share-html.d.ts +1 -21
  555. package/dist/lib/session/share-html.js +1 -1
  556. package/dist/lib/session/shell-programs.d.ts +2 -1
  557. package/dist/lib/session/state.d.ts +41 -8
  558. package/dist/lib/session/state.js +112 -11
  559. package/dist/lib/session/stream-render.d.ts +2 -1
  560. package/dist/lib/session/sync/agents.d.ts +0 -4
  561. package/dist/lib/session/sync/agents.js +0 -0
  562. package/dist/lib/session/sync/backend.d.ts +5 -5
  563. package/dist/lib/session/sync/managed-config.d.ts +0 -8
  564. package/dist/lib/session/sync/managed-key.d.ts +0 -2
  565. package/dist/lib/session/sync/managed-key.js +1 -1
  566. package/dist/lib/session/sync/r2.d.ts +4 -1
  567. package/dist/lib/session/sync/r2.js +4 -7
  568. package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
  569. package/dist/lib/session/tail.d.ts +2 -1
  570. package/dist/lib/session/team-filter.d.ts +1 -1
  571. package/dist/lib/session/testdata/pid-registry-namespace.d.ts +1 -0
  572. package/dist/lib/session/testdata/pid-registry-namespace.js +27 -0
  573. package/dist/lib/session/testdata/process-view-namespace.d.ts +1 -0
  574. package/dist/lib/session/testdata/process-view-namespace.js +56 -0
  575. package/dist/lib/session/testdata/process-view-private.d.ts +1 -0
  576. package/dist/lib/session/testdata/process-view-private.js +12 -0
  577. package/dist/lib/session/throughput.d.ts +2 -3
  578. package/dist/lib/session/throughput.js +1 -1
  579. package/dist/lib/session/timeline-pass.d.ts +3 -42
  580. package/dist/lib/session/timeline-pass.js +4 -4
  581. package/dist/lib/session/timeline.d.ts +3 -13
  582. package/dist/lib/session/timeline.js +3 -3
  583. package/dist/lib/session/tool-calls.d.ts +2 -2
  584. package/dist/lib/session/tool-calls.js +1 -1
  585. package/dist/lib/session/tool-index.d.ts +0 -8
  586. package/dist/lib/session/tool-index.js +2 -2
  587. package/dist/lib/session/tool-store.d.ts +2 -1
  588. package/dist/lib/session/trajectory-compare.d.ts +2 -1
  589. package/dist/lib/session/trajectory-lineage.d.ts +2 -1
  590. package/dist/lib/session/trajectory-text.d.ts +3 -2
  591. package/dist/lib/session/trajectory.d.ts +2 -1
  592. package/dist/lib/session/viewing-in.d.ts +2 -1
  593. package/dist/lib/settings-manifest.d.ts +2 -1
  594. package/dist/lib/share/delete.d.ts +5 -4
  595. package/dist/lib/share/html.d.ts +0 -2
  596. package/dist/lib/share/html.js +9 -9
  597. package/dist/lib/share/http-error.d.ts +3 -2
  598. package/dist/lib/share/og.d.ts +2 -1
  599. package/dist/lib/share/provision.d.ts +2 -2
  600. package/dist/lib/share/publish.d.ts +4 -13
  601. package/dist/lib/share/publish.js +2 -2
  602. package/dist/lib/shim-heal.d.ts +1 -5
  603. package/dist/lib/shim-heal.js +0 -6
  604. package/dist/lib/smart-launch.d.ts +4 -5
  605. package/dist/lib/smart-launch.js +1 -1
  606. package/dist/lib/snapshot.d.ts +3 -2
  607. package/dist/lib/ssh-exec.d.ts +5 -4
  608. package/dist/lib/ssh-tunnel.d.ts +3 -2
  609. package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
  610. package/dist/lib/staleness/checkers/permissions.js +1 -1
  611. package/dist/lib/staleness/fingerprint.d.ts +0 -7
  612. package/dist/lib/staleness/fingerprint.js +1 -1
  613. package/dist/lib/staleness/prune.d.ts +3 -2
  614. package/dist/lib/staleness/registry.d.ts +1 -1
  615. package/dist/lib/staleness/writers/sources.d.ts +0 -8
  616. package/dist/lib/staleness/writers/sources.js +1 -1
  617. package/dist/lib/startup/command-registry.js +1 -1
  618. package/dist/lib/state.d.ts +1 -3
  619. package/dist/lib/state.js +1 -4
  620. package/dist/lib/subagents-registry.d.ts +4 -3
  621. package/dist/lib/subagents.d.ts +2 -1
  622. package/dist/lib/subagents.js +3 -2
  623. package/dist/lib/summarizer/pass.d.ts +3 -6
  624. package/dist/lib/summarizer/pass.js +2 -2
  625. package/dist/lib/summarizer/summarize.d.ts +4 -3
  626. package/dist/lib/sync-passphrase.d.ts +3 -2
  627. package/dist/lib/sync-status.d.ts +3 -16
  628. package/dist/lib/sync-status.js +2 -2
  629. package/dist/lib/sync-umbrella.d.ts +4 -3
  630. package/dist/lib/system-run-sync.d.ts +2 -1
  631. package/dist/lib/teams/agents.d.ts +2 -4
  632. package/dist/lib/teams/agents.js +1 -1
  633. package/dist/lib/teams/forEach.d.ts +3 -2
  634. package/dist/lib/teams/pr-watch.d.ts +4 -11
  635. package/dist/lib/teams/pr-watch.js +4 -4
  636. package/dist/lib/teams/registry.d.ts +2 -3
  637. package/dist/lib/teams/registry.js +1 -1
  638. package/dist/lib/teams/remoteWorktree.d.ts +0 -16
  639. package/dist/lib/teams/remoteWorktree.js +3 -3
  640. package/dist/lib/teams/scheduler.d.ts +6 -5
  641. package/dist/lib/teams/scheduler.js +1 -1
  642. package/dist/lib/teams/supervisor.d.ts +4 -3
  643. package/dist/lib/teams/worktree.d.ts +0 -9
  644. package/dist/lib/teams/worktree.js +0 -32
  645. package/dist/lib/term-client.d.ts +44 -0
  646. package/dist/lib/term-client.js +117 -0
  647. package/dist/lib/terminal/inject.d.ts +3 -16
  648. package/dist/lib/terminal/inject.js +1 -29
  649. package/dist/lib/terminal/resolve.d.ts +3 -9
  650. package/dist/lib/terminal/resolve.js +3 -7
  651. package/dist/lib/tmux/binary.d.ts +2 -1
  652. package/dist/lib/tmux/orphan-reap.d.ts +6 -7
  653. package/dist/lib/tmux/orphan-reap.js +1 -1
  654. package/dist/lib/tmux/session.d.ts +4 -3
  655. package/dist/lib/traces/classify.d.ts +3 -2
  656. package/dist/lib/traces/config.d.ts +0 -8
  657. package/dist/lib/traces/insights.d.ts +2 -1
  658. package/dist/lib/traces/phenotype.d.ts +3 -3
  659. package/dist/lib/traces/provision.d.ts +1 -3
  660. package/dist/lib/traces/provision.js +1 -1
  661. package/dist/lib/traces/schema2-build.d.ts +1 -1
  662. package/dist/lib/traces/schema2-danger.d.ts +2 -1
  663. package/dist/lib/traces/schema2.d.ts +5 -4
  664. package/dist/lib/traces/segments.d.ts +4 -20
  665. package/dist/lib/traces/segments.js +3 -3
  666. package/dist/lib/traces/sync.d.ts +2 -3
  667. package/dist/lib/traces/sync.js +1 -1
  668. package/dist/lib/triggers/handlers.d.ts +4 -13
  669. package/dist/lib/triggers/handlers.js +1 -1
  670. package/dist/lib/triggers/webhook.d.ts +5 -27
  671. package/dist/lib/triggers/webhook.js +4 -4
  672. package/dist/lib/types.d.ts +3 -3
  673. package/dist/lib/usage-refresh.d.ts +4 -10
  674. package/dist/lib/usage-refresh.js +3 -8
  675. package/dist/lib/verbs.d.ts +2 -1
  676. package/dist/lib/version-duplicates.d.ts +2 -3
  677. package/dist/lib/version-duplicates.js +3 -33
  678. package/dist/lib/version.d.ts +2 -1
  679. package/dist/lib/warn-unpushed.d.ts +2 -1
  680. package/dist/lib/watchdog/history.d.ts +3 -2
  681. package/dist/lib/watchdog/log.d.ts +0 -6
  682. package/dist/lib/watchdog/log.js +1 -1
  683. package/dist/lib/watchdog/rotate.d.ts +2 -26
  684. package/dist/lib/watchdog/rotate.js +4 -12
  685. package/dist/lib/watchdog/runner.d.ts +0 -7
  686. package/dist/lib/watchdog/runner.js +4 -4
  687. package/dist/lib/watchdog/service.d.ts +2 -2
  688. package/dist/lib/watchdog/service.js +1 -1
  689. package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
  690. package/dist/lib/watchdog/watchdog.d.ts +2 -1
  691. package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
  692. package/dist/lib/workflows-registry.d.ts +3 -2
  693. package/dist/lib/workflows.d.ts +4 -7
  694. package/dist/lib/workflows.js +1 -1
  695. package/dist/lib/worktree/held.d.ts +4 -28
  696. package/dist/lib/worktree/held.js +3 -3
  697. package/package.json +2 -3
  698. package/scripts/postinstall.js +5 -4
  699. package/dist/commands/pty.d.ts +0 -20
  700. package/dist/commands/pty.js +0 -404
  701. package/dist/lib/config-machine-keys.d.ts +0 -14
  702. package/dist/lib/config-machine-keys.js +0 -21
  703. package/dist/lib/pty-client.d.ts +0 -49
  704. package/dist/lib/pty-client.js +0 -315
  705. package/dist/lib/pty-server.d.ts +0 -59
  706. package/dist/lib/pty-server.js +0 -653
@@ -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
+ }
@@ -18,10 +18,6 @@
18
18
  * (`downloadMenubarHelperApp`: sha256, codesign, Team, designated-requirement
19
19
  * pin, notarization) is unchanged — resolution only chooses the version.
20
20
  */
21
- /** The repo whose releases carry `menubar/v*` tags (same as the download URL). */
22
- export declare const MENUBAR_RELEASES_API = "https://api.github.com/repos/phnx-labs/agi-cli/releases?per_page=100";
23
- /** How long a resolved answer is trusted before the release list is re-read. */
24
- export declare const MENUBAR_RESOLVE_TTL_MS: number;
25
21
  /** One release as the resolver sees it — the subset of the GitHub shape it reads. */
26
22
  export interface ReleaseCandidate {
27
23
  tagName: string;
@@ -29,7 +25,7 @@ export interface ReleaseCandidate {
29
25
  draft?: boolean;
30
26
  prerelease?: boolean;
31
27
  }
32
- export interface MenubarResolveCache {
28
+ interface MenubarResolveCache {
33
29
  /** Epoch ms of the release-list read this answer came from. */
34
30
  checkedAt: number;
35
31
  /** The newest published helper version at that time (never below the floor then). */
@@ -41,8 +37,6 @@ export interface MenubarResolveCache {
41
37
  * pre-release, and carry both the zip and its `.sha256`.
42
38
  */
43
39
  export declare function pickNewestMenubarVersion(candidates: ReleaseCandidate[], floor: string): string;
44
- /** Where the resolved answer lives: beside the helper's own download cache. */
45
- export declare function menubarResolveCachePath(): string;
46
40
  export declare function readMenubarResolveCache(file: string): MenubarResolveCache | null;
47
41
  /**
48
42
  * The cached answer when it is usable offline: at or above the floor, of any
@@ -61,8 +55,6 @@ type FetchLike = (input: string, init?: {
61
55
  status: number;
62
56
  json(): Promise<unknown>;
63
57
  }>;
64
- /** Read the release list. Unauthenticated: release metadata is public and this runs at most once a day per machine. */
65
- export declare function fetchMenubarReleaseCandidates(fetchImpl?: FetchLike): Promise<ReleaseCandidate[]>;
66
58
  /**
67
59
  * The helper version to install now: the newest published build >= floor.
68
60
  *
@@ -26,9 +26,9 @@ import { helperFloor } from '../helper-versions.js';
26
26
  import { getCliVersion } from '../version.js';
27
27
  import { MENUBAR_HELPER_ASSET } from './download-menubar.js';
28
28
  /** The repo whose releases carry `menubar/v*` tags (same as the download URL). */
29
- export const MENUBAR_RELEASES_API = 'https://api.github.com/repos/phnx-labs/agi-cli/releases?per_page=100';
29
+ const MENUBAR_RELEASES_API = 'https://api.github.com/repos/phnx-labs/agi-cli/releases?per_page=100';
30
30
  /** How long a resolved answer is trusted before the release list is re-read. */
31
- export const MENUBAR_RESOLVE_TTL_MS = 24 * 60 * 60 * 1000;
31
+ const MENUBAR_RESOLVE_TTL_MS = 24 * 60 * 60 * 1000;
32
32
  const TAG = /^menubar\/v(\d+\.\d+\.\d+)$/;
33
33
  /**
34
34
  * Pure: the newest candidate at or above `floor`, else the floor. A tag must be
@@ -51,7 +51,7 @@ export function pickNewestMenubarVersion(candidates, floor) {
51
51
  return best;
52
52
  }
53
53
  /** Where the resolved answer lives: beside the helper's own download cache. */
54
- export function menubarResolveCachePath() {
54
+ function menubarResolveCachePath() {
55
55
  return path.join(getCacheDir(), 'menubar', 'latest.json');
56
56
  }
57
57
  export function readMenubarResolveCache(file) {
@@ -84,7 +84,7 @@ export function cachedMenubarVersion(opts = {}) {
84
84
  return cache && compareVersions(cache.version, floor) >= 0 ? cache.version : floor;
85
85
  }
86
86
  /** Read the release list. Unauthenticated: release metadata is public and this runs at most once a day per machine. */
87
- export async function fetchMenubarReleaseCandidates(fetchImpl = fetch) {
87
+ async function fetchMenubarReleaseCandidates(fetchImpl = fetch) {
88
88
  const res = await fetchImpl(MENUBAR_RELEASES_API, {
89
89
  headers: {
90
90
  Accept: 'application/vnd.github+json',
@@ -8,14 +8,20 @@ import type { WatchdogTickResult } from '../watchdog/runner.js';
8
8
  * is deliberately NOT claimed here (the registry's cached tailscale flag is
9
9
  * documented as stale in both directions — registry.ts isLikelyOnline).
10
10
  */
11
- export interface MenubarDevice {
11
+ interface MenubarDevice {
12
12
  name: string;
13
13
  platform: string;
14
+ /**
15
+ * Physical form factor for a factual hardware icon: `laptop` | `desktop` |
16
+ * `server` | `unknown` (PHNX-3999). A shared device-scope config fact set
17
+ * explicitly per device — never inferred from `platform`. `unknown` when unset.
18
+ */
19
+ formFactor: string;
14
20
  interactive: boolean;
15
21
  isLocal: boolean;
16
22
  preferred: boolean;
17
23
  }
18
- export interface MenubarSnapshot {
24
+ interface MenubarSnapshot {
19
25
  version: 1;
20
26
  capturedAt: string;
21
27
  /**
@@ -29,11 +35,27 @@ export interface MenubarSnapshot {
29
35
  recentSessions: Record<string, unknown>[];
30
36
  activeSessions: Record<string, unknown>[];
31
37
  devices: MenubarDevice[];
38
+ /**
39
+ * AGI Menu preferences (PHNX-3999), keyed by the full `menubar.menu.*` config
40
+ * name, carrying the EFFECTIVE value — the stored value, else the registered
41
+ * default. The native menu consumes this from the snapshot it already polls
42
+ * rather than a second preference-read mechanism. `menubar.menu.defaultProject`
43
+ * is omitted when unset (it has no default); every other key is always present.
44
+ * Writes stay one `agents config set/unset <key>` per setting.
45
+ */
46
+ menuPreferences: Record<string, unknown>;
32
47
  watchdog: {
33
48
  enabled: boolean;
34
49
  lastTick: Pick<WatchdogTickResult, 'didNudge' | 'counts'> | null;
35
50
  };
36
51
  }
52
+ /**
53
+ * The effective AGI Menu preferences map for the snapshot: each `menubar.menu.*`
54
+ * key's stored value, or its registered default when unset. A key with neither
55
+ * (only `defaultProject`) is omitted so the native app keeps its own default.
56
+ */
57
+ export declare function buildMenuPreferences(): Record<string, unknown>;
37
58
  export declare function readLastWatchdogTick(stateDir?: string): WatchdogTickResult | null;
38
59
  /** One-process read model for AGI Menu's repeating three-minute refresh. */
39
60
  export declare function computeMenubarSnapshot(): Promise<MenubarSnapshot>;
61
+ export {};
@@ -3,12 +3,31 @@ import * as path from 'path';
3
3
  import { buildRoutineListJson } from '../scheduling/routines.js';
4
4
  import { backfillActiveRowsFromIndex, isRunningLiveSession, serializeActiveSessionsForJson, serializeSessionsJson } from '../session/active.js';
5
5
  import { getConfigValue, loadAutoLaunchPreferences } from '../device-config.js';
6
+ import { MENUBAR_MENU_PROPERTIES } from '../config-keys.js';
7
+ import { migrateMenubarPreferencesFromUserDefaults } from './migrate-prefs.js';
6
8
  import { loadDevices } from '../devices/registry.js';
7
9
  import { machineId } from '../machine-id.js';
8
10
  import { querySessions } from '../session/db.js';
9
11
  import { readActiveSessionsCache } from '../session/session-cache.js';
10
12
  import { getRuntimeStateDir } from '../state.js';
11
13
  import { getCliVersion } from '../version.js';
14
+ /**
15
+ * The effective AGI Menu preferences map for the snapshot: each `menubar.menu.*`
16
+ * key's stored value, or its registered default when unset. A key with neither
17
+ * (only `defaultProject`) is omitted so the native app keeps its own default.
18
+ */
19
+ export function buildMenuPreferences() {
20
+ const out = {};
21
+ for (const prop of MENUBAR_MENU_PROPERTIES) {
22
+ const name = `menubar.menu.${prop}`;
23
+ const entry = getConfigValue(name);
24
+ const value = entry.value !== undefined ? entry.value : entry.spec.defaultValue;
25
+ if (value === undefined)
26
+ continue; // unset defaultProject — no default to emit
27
+ out[name] = value;
28
+ }
29
+ return out;
30
+ }
12
31
  /**
13
32
  * The full registered-device roster for the menu bar, from the local registry
14
33
  * file only (no ssh, no stats probe) — as cheap as `buildRoutineListJson()`, so
@@ -26,6 +45,8 @@ async function buildMenubarDevices() {
26
45
  .map((name) => ({
27
46
  name,
28
47
  platform: reg[name].platform,
48
+ // Shared device-scope fact (readable for any device); `unknown` when unset.
49
+ formFactor: getConfigValue('formFactor', { device: name }).value ?? 'unknown',
29
50
  interactive: name === interactiveHost,
30
51
  isLocal: name === self,
31
52
  preferred: prefs[name]?.preferred === true,
@@ -41,6 +62,10 @@ export function readLastWatchdogTick(stateDir = path.join(getRuntimeStateDir(),
41
62
  }
42
63
  /** One-process read model for AGI Menu's repeating three-minute refresh. */
43
64
  export async function computeMenubarSnapshot() {
65
+ // One-shot, sentinel-gated, macOS-only lift of legacy UserDefaults prefs into
66
+ // config before we read them. After the first run it is a cheap existsSync
67
+ // no-op; it never throws into the snapshot.
68
+ migrateMenubarPreferencesFromUserDefaults();
44
69
  const [routines, recent, devices] = await Promise.all([
45
70
  Promise.resolve(buildRoutineListJson()),
46
71
  Promise.resolve(querySessions({ limit: 40, skipExistenceCheck: true })),
@@ -69,6 +94,7 @@ export async function computeMenubarSnapshot() {
69
94
  recentSessions: JSON.parse(serializeSessionsJson(recent)),
70
95
  activeSessions: serializeActiveSessionsForJson(activeSessions),
71
96
  devices,
97
+ menuPreferences: buildMenuPreferences(),
72
98
  watchdog: {
73
99
  enabled: getConfigValue('watchdog.enabled').value === true,
74
100
  lastTick: (() => {
@@ -22,8 +22,8 @@
22
22
  */
23
23
  import type { AgentId } from './types.js';
24
24
  import { type ModelTier } from './model-tiers.js';
25
- export type TierOverrideMap = Partial<Record<ModelTier, string>>;
26
- export interface TierOverrideEntry {
25
+ type TierOverrideMap = Partial<Record<ModelTier, string>>;
26
+ interface TierOverrideEntry {
27
27
  selector: string;
28
28
  tiers: TierOverrideMap;
29
29
  }
@@ -41,3 +41,4 @@ export declare function listTierOverrides(): TierOverrideEntry[];
41
41
  export declare function setTierOverride(selectorInput: string, tierInput: string | ModelTier, model: string): TierOverrideEntry;
42
42
  /** Clear one tier (or all tiers when `tierInput` is omitted) for a selector. Returns true if anything changed. */
43
43
  export declare function clearTierOverride(selectorInput: string, tierInput?: string): boolean;
44
+ export {};
@@ -262,5 +262,3 @@ export declare function writeMonitor(config: MonitorConfig): void;
262
262
  export declare function deleteMonitor(name: string): boolean;
263
263
  /** Enable or disable a monitor by name. */
264
264
  export declare function setMonitorEnabled(name: string, enabled: boolean): void;
265
- /** Check whether a monitor with the given name exists on disk. */
266
- export declare function monitorExists(name: string): boolean;
@@ -500,7 +500,3 @@ export function setMonitorEnabled(name, enabled) {
500
500
  monitor.enabled = enabled;
501
501
  writeMonitor(monitor);
502
502
  }
503
- /** Check whether a monitor with the given name exists on disk. */
504
- export function monitorExists(name) {
505
- return readMonitor(name) !== null;
506
- }
@@ -29,7 +29,7 @@ interface MonitorLivenessLike {
29
29
  droughtNotifiedAt?: string;
30
30
  }
31
31
  /** The fire/no-fire decision for one observation, plus what to persist. */
32
- export interface FireDecision {
32
+ interface FireDecision {
33
33
  fire: boolean;
34
34
  /** The value whose de-dupe signature is stored on persist. */
35
35
  value: string;
@@ -49,7 +49,7 @@ export interface RemoteMonitor {
49
49
  * must never blank the guard for the rest of the fleet.
50
50
  */
51
51
  export declare function parseRemoteMonitors(stdout: string, machine: string): RemoteMonitor[];
52
- export interface FleetMonitorsResult {
52
+ interface FleetMonitorsResult {
53
53
  monitors: RemoteMonitor[];
54
54
  /** Target discovery failed before any peer was dialed — the fleet was not
55
55
  * consulted at all, which must not read as "no duplicate anywhere". */
@@ -58,7 +58,7 @@ export interface FleetMonitorsResult {
58
58
  * silently treating "we could not ask" as "there is no duplicate". */
59
59
  skipped: string[];
60
60
  }
61
- export interface GatherFleetMonitorsOptions {
61
+ interface GatherFleetMonitorsOptions {
62
62
  /** When supplied, the fan-out aborts as soon as any peer returns a monitor with
63
63
  * this behavioral fingerprint. The miss path still waits for every peer so the
64
64
  * guard can prove absence fleet-wide. */
@@ -80,3 +80,4 @@ export interface GatherFleetMonitorsOptions {
80
80
  * knowable once every peer has answered.
81
81
  */
82
82
  export declare function gatherFleetMonitors(options?: GatherFleetMonitorsOptions): Promise<FleetMonitorsResult>;
83
+ export {};
@@ -2,22 +2,9 @@
2
2
  * Webhook source evaluator.
3
3
  *
4
4
  * Webhooks are push-based (an inbound signed HTTP delivery), so the poll-model
5
- * `evaluate` returns null. When a delivery arrives, the receiver matches it
6
- * against monitors with `matchWebhook`, which reuses the github/linear matchers
7
- * from lib/triggers/webhook.ts by projecting the monitor's webhook filters onto a
8
- * synthesized JobConfig-shaped trigger.
5
+ * `evaluate` returns null.
9
6
  */
10
- import { type IncomingWebhook } from '../../triggers/webhook.js';
11
- import type { JobTrigger } from '../../scheduling/routines.js';
12
- import type { MonitorSource, MonitorConfig } from '../config.js';
7
+ import type { MonitorSource } from '../config.js';
13
8
  import type { Observation } from './types.js';
14
9
  /** Push-only: nothing to snapshot on a poll tick. */
15
10
  export declare function evaluate(_source: MonitorSource): Promise<Observation | null>;
16
- /** Project a monitor's webhook source onto a JobTrigger for the shared matcher. */
17
- export declare function monitorTrigger(source: MonitorSource): JobTrigger | null;
18
- /**
19
- * True when an incoming webhook matches this monitor's webhook source — reuses
20
- * the routines matcher (lib/triggers/webhook.ts) so github/linear filter
21
- * semantics stay in one place.
22
- */
23
- export declare function matchWebhook(monitor: MonitorConfig, webhook: IncomingWebhook): boolean;
@@ -2,46 +2,9 @@
2
2
  * Webhook source evaluator.
3
3
  *
4
4
  * Webhooks are push-based (an inbound signed HTTP delivery), so the poll-model
5
- * `evaluate` returns null. When a delivery arrives, the receiver matches it
6
- * against monitors with `matchWebhook`, which reuses the github/linear matchers
7
- * from lib/triggers/webhook.ts by projecting the monitor's webhook filters onto a
8
- * synthesized JobConfig-shaped trigger.
5
+ * `evaluate` returns null.
9
6
  */
10
- import { jobMatchesWebhook } from '../../triggers/webhook.js';
11
7
  /** Push-only: nothing to snapshot on a poll tick. */
12
8
  export function evaluate(_source) {
13
9
  return Promise.resolve(null);
14
10
  }
15
- /** Project a monitor's webhook source onto a JobTrigger for the shared matcher. */
16
- export function monitorTrigger(source) {
17
- const w = source.webhook;
18
- if (!w)
19
- return null;
20
- if (w.source === 'github') {
21
- return {
22
- type: 'github_event',
23
- event: w.event,
24
- ...(w.repo ? { repo: w.repo } : {}),
25
- ...(w.branch ? { branch: w.branch } : {}),
26
- };
27
- }
28
- return {
29
- type: 'linear_event',
30
- event: w.event,
31
- ...(w.action ? { action: w.action } : {}),
32
- ...(w.teamKey ? { teamKey: w.teamKey } : {}),
33
- ...(w.label ? { label: w.label } : {}),
34
- };
35
- }
36
- /**
37
- * True when an incoming webhook matches this monitor's webhook source — reuses
38
- * the routines matcher (lib/triggers/webhook.ts) so github/linear filter
39
- * semantics stay in one place.
40
- */
41
- export function matchWebhook(monitor, webhook) {
42
- const trigger = monitorTrigger(monitor.source);
43
- if (!trigger)
44
- return false;
45
- const shim = { name: monitor.name, trigger };
46
- return jobMatchesWebhook(shim, webhook);
47
- }