@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
@@ -39,6 +39,7 @@ import { atomicWriteFileSync } from './fs-atomic.js';
39
39
  import { machineId } from './machine-id.js';
40
40
  import { assertValidDeviceName, assertRegistrableDeviceName } from './devices/registry.js';
41
41
  import { migrateDeviceConfigStores } from './devices/config-migration.js';
42
+ import { parseAddress } from './address.js';
42
43
  import { isAgentId } from './types.js';
43
44
  const DEVICE_PLATFORMS = ['windows', 'linux', 'macos', 'unknown'];
44
45
  const SSH_AUTH_METHODS = ['key', 'password'];
@@ -46,6 +47,16 @@ const SSH_AUTH_METHODS = ['key', 'password'];
46
47
  const DEVICE_ROLES = ['worker', 'personal', 'desktop'];
47
48
  /** Which devices automatic placement may pick — see the `auto.pool` key below. */
48
49
  const AUTO_POOL_MODES = ['workers', 'all'];
50
+ /**
51
+ * A device's physical form factor (`formFactor` key) — a factual hardware fact
52
+ * the menu bar shows as an icon. Set explicitly per device (no inference from
53
+ * platform, no hardcoded device names). `unknown` is the effective default.
54
+ */
55
+ const DEVICE_FORM_FACTORS = ['laptop', 'desktop', 'server', 'unknown'];
56
+ /** A validate() that accepts only one of `allowed` — the enum-string keys reuse it. */
57
+ function oneOf(name, allowed) {
58
+ return (v) => (allowed.includes(v) ? null : `${name} must be one of ${allowed.join(' | ')}.`);
59
+ }
49
60
  export const CONFIG_KEYS = [
50
61
  {
51
62
  name: 'interactive.host',
@@ -133,6 +144,28 @@ export const CONFIG_KEYS = [
133
144
  type: 'string',
134
145
  description: 'Browser profile `agents browser start` resolves to without --profile (set via `agents browser use`).',
135
146
  },
147
+ {
148
+ name: 'computer.host',
149
+ yamlKey: 'computerHost',
150
+ scope: 'device',
151
+ visibility: 'shared',
152
+ type: 'string',
153
+ description: 'The --host address (PHNX-4090) `agents computer --device <name>` forwards to the standalone engine: ' +
154
+ 'ssh://[user@]host[:port], vnc://host[:port], or tcp://host:port. Unset falls back to the fleet ssh ' +
155
+ 'identity (ssh://user@host resolved against the device registry).',
156
+ validate: (v) => {
157
+ try {
158
+ const addr = parseAddress(v);
159
+ if (addr.scheme !== 'ssh' && addr.scheme !== 'vnc' && addr.scheme !== 'tcp') {
160
+ return `computer.host speaks ssh://, vnc:// and tcp:// only (got ${addr.scheme}://).`;
161
+ }
162
+ return null;
163
+ }
164
+ catch (err) {
165
+ return err?.message ?? String(err);
166
+ }
167
+ },
168
+ },
136
169
  {
137
170
  name: 'browser.device',
138
171
  yamlKey: 'defaultBrowserDevice',
@@ -344,6 +377,134 @@ export const CONFIG_KEYS = [
344
377
  defaultValue: false,
345
378
  description: 'Boost this device in `--device auto` ranking (default off) — picked ahead of load-equal peers when eligible.',
346
379
  },
380
+ {
381
+ name: 'formFactor',
382
+ yamlKey: 'formFactor',
383
+ scope: 'device',
384
+ visibility: 'shared',
385
+ type: 'string',
386
+ defaultValue: 'unknown',
387
+ description: "This device's physical form factor, a factual hardware fact the menu bar renders as an icon: " +
388
+ 'laptop, desktop, server, or unknown. Synced fleet-wide (any box may set it for any device). Set it ' +
389
+ 'explicitly — never inferred from the OS platform. Unset reads as `unknown`.',
390
+ validate: oneOf('formFactor', DEVICE_FORM_FACTORS),
391
+ },
392
+ // ─── AGI Menu preferences (PHNX-3999) ──────────────────────────────────────
393
+ // User-scope so one value syncs fleet-wide via `agents repo push/pull` and the
394
+ // native menu reads it from `agents config list --json`. Names mirror the Swift
395
+ // MenuPreferences local-cache keys. `config list` OMITS an unset key, so the
396
+ // native app falls back to its own known defaults — the defaults documented
397
+ // here match those, they are not substituted on read.
398
+ {
399
+ name: 'menubar.menu.defaultProject',
400
+ yamlKey: 'menubarMenuDefaultProject',
401
+ scope: 'user',
402
+ type: 'string',
403
+ description: 'AGI Menu: the project name the menu opens focused on. Unset = no default project.',
404
+ },
405
+ {
406
+ name: 'menubar.menu.workingRowsShown',
407
+ yamlKey: 'menubarMenuWorkingRowsShown',
408
+ scope: 'user',
409
+ type: 'int',
410
+ defaultValue: 3,
411
+ description: 'AGI Menu: how many working (in-progress) rows to show per group — 2, 3, or 4.',
412
+ validate: (v) => ([2, 3, 4].includes(v) ? null : 'menubar.menu.workingRowsShown must be 2, 3, or 4.'),
413
+ },
414
+ {
415
+ name: 'menubar.menu.showPreviews',
416
+ yamlKey: 'menubarMenuShowPreviews',
417
+ scope: 'user',
418
+ type: 'bool',
419
+ defaultValue: true,
420
+ description: 'AGI Menu: show the session preview line under each row.',
421
+ },
422
+ {
423
+ name: 'menubar.menu.projectPriorityFilter',
424
+ yamlKey: 'menubarMenuProjectPriorityFilter',
425
+ scope: 'user',
426
+ type: 'string',
427
+ defaultValue: 'all',
428
+ description: 'AGI Menu: minimum project priority shown — all, urgent, high, or medium.',
429
+ validate: oneOf('menubar.menu.projectPriorityFilter', ['all', 'urgent', 'high', 'medium']),
430
+ },
431
+ {
432
+ name: 'menubar.menu.hideCompletedMilestones',
433
+ yamlKey: 'menubarMenuHideCompletedMilestones',
434
+ scope: 'user',
435
+ type: 'bool',
436
+ defaultValue: true,
437
+ description: 'AGI Menu: hide milestones that are fully complete.',
438
+ },
439
+ {
440
+ name: 'menubar.menu.bannerWhenNeedsYou',
441
+ yamlKey: 'menubarMenuBannerWhenNeedsYou',
442
+ scope: 'user',
443
+ type: 'bool',
444
+ defaultValue: true,
445
+ description: 'AGI Menu: show a top banner when a session needs the operator.',
446
+ },
447
+ {
448
+ name: 'menubar.menu.includeOtherDeviceRequests',
449
+ yamlKey: 'menubarMenuIncludeOtherDeviceRequests',
450
+ scope: 'user',
451
+ type: 'bool',
452
+ defaultValue: true,
453
+ description: 'AGI Menu: include needs-you requests from sessions on OTHER fleet devices.',
454
+ },
455
+ {
456
+ name: 'menubar.menu.groupBy',
457
+ yamlKey: 'menubarMenuGroupBy',
458
+ scope: 'user',
459
+ type: 'string',
460
+ defaultValue: 'project',
461
+ description: 'AGI Menu: primary grouping of rows — none, project, agent, or device.',
462
+ validate: oneOf('menubar.menu.groupBy', ['none', 'project', 'agent', 'device']),
463
+ },
464
+ {
465
+ name: 'menubar.menu.thenBy',
466
+ yamlKey: 'menubarMenuThenBy',
467
+ scope: 'user',
468
+ type: 'string',
469
+ defaultValue: 'none',
470
+ description: 'AGI Menu: secondary grouping within each group — none, project, agent, or device.',
471
+ validate: oneOf('menubar.menu.thenBy', ['none', 'project', 'agent', 'device']),
472
+ },
473
+ {
474
+ name: 'menubar.menu.projectScope',
475
+ yamlKey: 'menubarMenuProjectScope',
476
+ scope: 'user',
477
+ type: 'string',
478
+ defaultValue: 'cycle',
479
+ description: 'AGI Menu: which project issues to show — the current cycle only, or all.',
480
+ validate: oneOf('menubar.menu.projectScope', ['cycle', 'all']),
481
+ },
482
+ {
483
+ name: 'menubar.menu.projectSort',
484
+ yamlKey: 'menubarMenuProjectSort',
485
+ scope: 'user',
486
+ type: 'string',
487
+ defaultValue: 'updated',
488
+ description: 'AGI Menu: how projects are ordered — updated, priority, or name.',
489
+ validate: oneOf('menubar.menu.projectSort', ['updated', 'priority', 'name']),
490
+ },
491
+ {
492
+ name: 'menubar.menu.ticketSort',
493
+ yamlKey: 'menubarMenuTicketSort',
494
+ scope: 'user',
495
+ type: 'string',
496
+ defaultValue: 'priority',
497
+ description: 'AGI Menu: how tickets within a project are ordered — priority, updated, or title.',
498
+ validate: oneOf('menubar.menu.ticketSort', ['priority', 'updated', 'title']),
499
+ },
500
+ {
501
+ name: 'menubar.menu.showPullRequests',
502
+ yamlKey: 'menubarMenuShowPullRequests',
503
+ scope: 'user',
504
+ type: 'bool',
505
+ defaultValue: true,
506
+ description: 'AGI Menu: show the open pull requests section for each project.',
507
+ },
347
508
  ];
348
509
  /** Look up a key spec by CLI dotted name, or throw listing the known keys. */
349
510
  /**
@@ -377,7 +538,7 @@ export function configKeySpec(name) {
377
538
  return spec;
378
539
  }
379
540
  /** Throw when `value` does not match the key's declared type or validation. */
380
- function assertValidValue(spec, value) {
541
+ export function assertValidValue(spec, value) {
381
542
  switch (spec.type) {
382
543
  case 'string':
383
544
  if (typeof value !== 'string' || value.length === 0) {
@@ -413,7 +574,7 @@ let migrationDone = false;
413
574
  * same gate bootstrap's runMigration uses (tests pin it so a fork never folds
414
575
  * the developer's real ~/.agents as a side effect).
415
576
  */
416
- export function ensureDeviceConfigMigrated() {
577
+ function ensureDeviceConfigMigrated() {
417
578
  if (migrationDone || process.env.AGENTS_SKIP_MIGRATION === '1')
418
579
  return;
419
580
  try {
@@ -499,7 +660,7 @@ function writeDeviceDoc(device, doc) {
499
660
  atomicWriteFileSync(p, META_HEADER + yaml.stringify(doc));
500
661
  }
501
662
  /** The fleet-defaults config layer (central `fleet.defaults.config`; {} when unset). */
502
- export function readFleetConfigDefaults() {
663
+ function readFleetConfigDefaults() {
503
664
  const config = readMeta().fleet?.defaults?.config;
504
665
  return config && typeof config === 'object' && !Array.isArray(config) ? config : {};
505
666
  }
@@ -609,11 +770,6 @@ export function listConfig(opts) {
609
770
  : CONFIG_KEYS;
610
771
  return visible.map((spec) => getConfigValue(spec.name, opts));
611
772
  }
612
- /** List user-scope config keys with their values. Used to show inherited settings
613
- * in per-device views without implying those keys are device-local. */
614
- export function listUserConfig() {
615
- return CONFIG_KEYS.filter((spec) => spec.scope === 'user').map((spec) => getConfigValue(spec.name));
616
- }
617
773
  // ─── Writes ───────────────────────────────────────────────────────────────────
618
774
  /** The fleet manifest for a defaults write: `devices` materializes as an
619
775
  * explicit empty map (NOT 'all') so `agents apply` targets nothing until the
@@ -91,7 +91,7 @@ export declare function markFleetRemote(cmd: string[], device: Pick<DeviceProfil
91
91
  */
92
92
  export declare function buildInteractiveShellCommand(device: DeviceProfile, mirrorCwd: string | undefined): string | undefined;
93
93
  /** Host-key posture for {@link buildSshInvocation}. */
94
- export interface SshHostKeyOptions {
94
+ interface SshHostKeyOptions {
95
95
  /**
96
96
  * True when the device's host key is already pinned in the managed
97
97
  * known_hosts store — connections then verify with `StrictHostKeyChecking=yes`
@@ -162,3 +162,4 @@ export declare function buildAskpassShimBody(launch?: {
162
162
  * protocol back into the CLI, which then resolves the bundle.
163
163
  */
164
164
  export declare function writeAskpassShim(): string;
165
+ export {};
@@ -1,5 +1,5 @@
1
- export type DeviceDiscoveryStatus = 'approved' | 'ignored';
2
- export interface DeviceDiscoveryReconcileResult {
1
+ type DeviceDiscoveryStatus = 'approved' | 'ignored';
2
+ interface DeviceDiscoveryReconcileResult {
3
3
  approved: string[];
4
4
  ignored: string[];
5
5
  registered: string[];
@@ -40,3 +40,4 @@ export declare function loadDeviceDiscoveryPolicies(): Map<string, DeviceDiscove
40
40
  export declare function reconcileDeviceDiscoveryPolicies(): Promise<DeviceDiscoveryReconcileResult>;
41
41
  /** Complete reconciliation from real `tailscale status --json` output. */
42
42
  export declare function registerApprovedDevicesFromTailscale(json: string, approved: string[], ignored: string[], missing: string[]): Promise<DeviceDiscoveryReconcileResult>;
43
+ export {};
@@ -244,7 +244,7 @@ export function remediationFor(finding) {
244
244
  case 'content-drift':
245
245
  case 'stale':
246
246
  // doctor diagnoses; `agents sync` fixes (the superset of the old
247
- // `doctor --fix`). A bare `agents sync <agent>` hits only the default
247
+ // `agents sync`). A bare `agents sync <agent>` hits only the default
248
248
  // version, so an agent-only row collapsed across versions must ask for
249
249
  // @all to reach every one it covers.
250
250
  if (agent && version)
@@ -1,7 +1,7 @@
1
1
  /** Serve a cached snapshot without recomputing while it is younger than this. */
2
2
  export declare const DOCTOR_OVERVIEW_FRESH_MS = 90000;
3
3
  /** Injectable IO + clock so tests exercise the real fs at a temp dir, no mocks. */
4
- export interface DoctorOverviewCacheDeps {
4
+ interface DoctorOverviewCacheDeps {
5
5
  /** Cache directory (default: the real `~/.agents/.cache`). */
6
6
  dir?: string;
7
7
  /** Clock (default: {@link Date.now}). */
@@ -29,7 +29,7 @@ export declare function invalidateDoctorOverviewCache(deps?: DoctorOverviewCache
29
29
  * the way out. Call `release()` in a `finally` so a compute that throws still
30
30
  * frees the lock promptly (idempotent).
31
31
  */
32
- export interface OverviewGate {
32
+ interface OverviewGate {
33
33
  cached: string | null;
34
34
  release?: () => void;
35
35
  }
@@ -50,3 +50,4 @@ export declare function enterDoctorOverviewGate(opts?: {
50
50
  forceRefresh?: boolean;
51
51
  freshMs?: number;
52
52
  }, deps?: DoctorOverviewCacheDeps): Promise<OverviewGate>;
53
+ export {};
@@ -111,7 +111,7 @@ export interface FleetDivergence {
111
111
  /** Human-readable one-liner, ready for the warnings list. */
112
112
  message: string;
113
113
  }
114
- export interface FleetDivergenceReport {
114
+ interface FleetDivergenceReport {
115
115
  /** Name of the device used as the comparison baseline (the local machine). */
116
116
  baseline: string;
117
117
  divergences: FleetDivergence[];
@@ -132,3 +132,4 @@ export interface FleetDivergenceReport {
132
132
  * JSON output — and the tests — are stable.
133
133
  */
134
134
  export declare function compareFleetInventories(devices: DeviceInventory[], baselineName: string): FleetDivergenceReport;
135
+ export {};
@@ -10,8 +10,6 @@
10
10
  import type { DeviceProfile, DeviceRegistry } from './registry.js';
11
11
  import type { DeviceStats } from './health.js';
12
12
  export type FleetSkipReason = 'offline' | 'no-address';
13
- /** npm dist-tags / semver pins only — rejects shell metacharacters. */
14
- export declare const FLEET_VERSION_RE: RegExp;
15
13
  export interface FleetTarget {
16
14
  device: DeviceProfile;
17
15
  /** When set, this device is not reached (skip with reason). */
@@ -112,7 +110,7 @@ export declare function runLocalCommand(cmd: string[], opts?: {
112
110
  * cannot inject shell metacharacters into the remote command line.
113
111
  */
114
112
  export declare function upgradeCommand(version?: string): string[];
115
- export interface RunFleetOptions {
113
+ interface RunFleetOptions {
116
114
  /**
117
115
  * Name of THIS machine. Its target runs the command **locally** (no ssh) — a
118
116
  * box can't reliably ssh to itself and doesn't need to. Omit to ssh every
@@ -132,7 +130,7 @@ export interface RunFleetOptions {
132
130
  * recorded as `failed` so one bad device never aborts the rest.
133
131
  */
134
132
  export declare function runFleet(targets: FleetTarget[], cmd: string[], opts?: RunFleetOptions): FleetRunResult[];
135
- export interface FanOutDeviceOptions {
133
+ interface FanOutDeviceOptions {
136
134
  /**
137
135
  * Per-device deadline in milliseconds. When set, any probe that does not
138
136
  * settle within this window is abandoned via `Promise.race` against a
@@ -149,3 +147,4 @@ export interface FanOutDeviceOptions {
149
147
  }
150
148
  /** Run one async probe per device in parallel, preserving input order. */
151
149
  export declare function fanOutDevices<T, Target extends FanOutDeviceTarget = FanOutDeviceTarget>(targets: Target[], probe: (target: Target) => Promise<T>, opts?: FanOutDeviceOptions): Promise<FanOutDeviceResult<T>[]>;
150
+ export {};
@@ -11,7 +11,7 @@ import { spawnSync } from 'child_process';
11
11
  import { isSelfHost } from './self-host.js';
12
12
  import { buildSshInvocation, sshTargetFor, writeAskpassShim } from './connect.js';
13
13
  /** npm dist-tags / semver pins only — rejects shell metacharacters. */
14
- export const FLEET_VERSION_RE = /^[A-Za-z0-9._-]+$/;
14
+ const FLEET_VERSION_RE = /^[A-Za-z0-9._-]+$/;
15
15
  /**
16
16
  * Classify each registered device for a fleet operation.
17
17
  *
@@ -51,7 +51,7 @@ export interface HostHarnessResult {
51
51
  skipped?: string;
52
52
  }
53
53
  /** An account collapsed across the installs on one host that share it. */
54
- export interface AccountGroup {
54
+ interface AccountGroup {
55
55
  /** Account display label, or null for the signed-out bucket. */
56
56
  account: string | null;
57
57
  /** Distinct agent ids using this account, sorted. */
@@ -130,7 +130,7 @@ export declare function renderHarnessMatrix(results: HostHarnessResult[]): strin
130
130
  * account (installs sharing it collapsed), showing which harnesses use it. Pure.
131
131
  */
132
132
  export declare function renderAccountsMatrix(results: HostHarnessResult[]): string[];
133
- export interface AccountFleetMatrixRow {
133
+ interface AccountFleetMatrixRow {
134
134
  harness: AgentId;
135
135
  name: string | null;
136
136
  identityLabel: string;
@@ -147,3 +147,4 @@ export interface AccountFleetMatrixRow {
147
147
  export declare function renderAccountFleetMatrix(rows: AccountFleetMatrixRow[], opts?: {
148
148
  uncoveredDevices?: string[];
149
149
  }): string[];
150
+ export {};
@@ -52,7 +52,7 @@ export interface FleetHealthRow {
52
52
  * Undefined when no row has been published for the host yet. */
53
53
  agents?: FleetAgentCounts;
54
54
  }
55
- export interface FleetWarning {
55
+ interface FleetWarning {
56
56
  kind: 'unreachable' | 'drift' | 'cli' | 'version-skew' | 'divergence';
57
57
  devices: string[];
58
58
  message: string;
@@ -82,7 +82,7 @@ export declare function freshnessFooter(rows: FleetHealthRow[], now?: number): s
82
82
  export declare function shortVersion(version: string | null | undefined): string;
83
83
  /** OS bucket label for grouping. Anything unrecognized falls under "Other". */
84
84
  export declare function platformGroupLabel(platform: string | undefined): 'macOS' | 'Linux' | 'Windows' | 'Other';
85
- export interface FleetAttentionItem {
85
+ interface FleetAttentionItem {
86
86
  /** Leading mark: `○` offline, `⚠` config/CLI/version issue. */
87
87
  glyph: 'offline' | 'warn';
88
88
  subject: string;
@@ -106,3 +106,4 @@ export declare function renderFleetSummary(report: FleetHealthReport, opts?: {
106
106
  self?: string;
107
107
  now?: number;
108
108
  }): string[];
109
+ export {};
@@ -49,13 +49,6 @@ export declare function probeBudgetMs(device: DeviceProfile): number;
49
49
  export declare const WIN_PROBE_TIMEOUT_MS = 6000;
50
50
  /** One-shot remote snapshot: load, memory, core count, then root filesystem. */
51
51
  export declare const PROBE_SNIPPET = "uptime; echo ---AGSTAT---; (vm_stat 2>/dev/null || cat /proc/meminfo 2>/dev/null); echo ---AGSTAT---; (nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null); echo ---AGSTAT---; df -Pk / 2>/dev/null | tail -1";
52
- /** Windows equivalent, one labeled line via CIM. PowerShell 5.1-safe: no `||`
53
- * chaining, plain string concatenation. `LoadPercentage` is $null on some
54
- * hosts/VMs, which concatenates to an empty field — the parser treats that as
55
- * "no load signal" and headroom falls back to memory pressure alone.
56
- * wrapRemoteCommand base64-encodes this for powershell-shell devices, so the
57
- * quoting survives ssh intact. */
58
- export declare const WIN_PROBE_SNIPPET = "$os = Get-CimInstance Win32_OperatingSystem; $cpu = (Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Average).Average; $disk = Get-CimInstance Win32_LogicalDisk -Filter \"DeviceID='C:'\"; Write-Output ('AGWINSTAT load=' + $cpu + ' freeKb=' + $os.FreePhysicalMemory + ' totalKb=' + $os.TotalVisibleMemorySize + ' ncpu=' + $env:NUMBER_OF_PROCESSORS + ' diskFreeKb=' + ($disk.FreeSpace / 1KB) + ' diskTotalKb=' + ($disk.Size / 1KB))";
59
52
  export declare function localProbeInvocation(platform: NodeJS.Platform): {
60
53
  file: string;
61
54
  args: string[];
@@ -114,7 +107,7 @@ export declare function parseProbeOutput(host: string, stdout: string, fetchedAt
114
107
  * (e.g. CIM unavailable) keeps `reachable: true` — ssh answered — with no
115
108
  * numbers, mirroring how garbage POSIX output degrades. */
116
109
  export declare function parseWinProbeOutput(host: string, stdout: string, fetchedAt: number): DeviceStats;
117
- export interface FleetCapacity {
110
+ interface FleetCapacity {
118
111
  reachable: number;
119
112
  cores: number;
120
113
  memTotalBytes: number;
@@ -63,7 +63,7 @@ export const PROBE_SNIPPET = `uptime; echo ${SEP}; (vm_stat 2>/dev/null || cat /
63
63
  * "no load signal" and headroom falls back to memory pressure alone.
64
64
  * wrapRemoteCommand base64-encodes this for powershell-shell devices, so the
65
65
  * quoting survives ssh intact. */
66
- export const WIN_PROBE_SNIPPET = `$os = Get-CimInstance Win32_OperatingSystem; $cpu = (Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Average).Average; $disk = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'"; Write-Output ('AGWINSTAT load=' + $cpu + ' freeKb=' + $os.FreePhysicalMemory + ' totalKb=' + $os.TotalVisibleMemorySize + ' ncpu=' + $env:NUMBER_OF_PROCESSORS + ' diskFreeKb=' + ($disk.FreeSpace / 1KB) + ' diskTotalKb=' + ($disk.Size / 1KB))`;
66
+ const WIN_PROBE_SNIPPET = `$os = Get-CimInstance Win32_OperatingSystem; $cpu = (Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Average).Average; $disk = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'"; Write-Output ('AGWINSTAT load=' + $cpu + ' freeKb=' + $os.FreePhysicalMemory + ' totalKb=' + $os.TotalVisibleMemorySize + ' ncpu=' + $env:NUMBER_OF_PROCESSORS + ' diskFreeKb=' + ($disk.FreeSpace / 1KB) + ' diskTotalKb=' + ($disk.Size / 1KB))`;
67
67
  export function localProbeInvocation(platform) {
68
68
  return platform === 'win32'
69
69
  ? { file: 'powershell', args: ['-NoProfile', '-Command', WIN_PROBE_SNIPPET] }
@@ -1,5 +1,3 @@
1
- /** The reserved `--device` value meaning the box the human is at. */
2
- export declare const INTERACTIVE_DEVICE_SENTINEL = "interactive";
3
1
  /** True when a host flag value is the interactive sentinel. */
4
2
  export declare function isDeviceInteractive(value: string | undefined | null): boolean;
5
3
  /**
@@ -19,7 +19,7 @@
19
19
  import { getConfigValue } from '../device-config.js';
20
20
  import { RESERVED_DEVICE_NAMES } from './registry.js';
21
21
  /** The reserved `--device` value meaning the box the human is at. */
22
- export const INTERACTIVE_DEVICE_SENTINEL = 'interactive';
22
+ const INTERACTIVE_DEVICE_SENTINEL = 'interactive';
23
23
  /** True when a host flag value is the interactive sentinel. */
24
24
  export function isDeviceInteractive(value) {
25
25
  return typeof value === 'string' && value.trim().toLowerCase() === INTERACTIVE_DEVICE_SENTINEL;
@@ -3,8 +3,6 @@ import type { DeviceProfile } from './registry.js';
3
3
  export declare function managedKnownHostsPath(): string;
4
4
  /** Ensure the parent directory of the managed store exists (mode 0700). */
5
5
  export declare function ensureManagedKnownHostsDir(file?: string): void;
6
- /** Read the managed store, or '' when it does not exist yet. */
7
- export declare function readManagedKnownHosts(file?: string): string;
8
6
  /**
9
7
  * True if `host` has at least one pinned key line in `content`. Pure (content
10
8
  * in) so the match logic is unit-testable without touching disk. Matching is
@@ -44,7 +42,7 @@ export declare function hostKeyCheckingOpts(pinned: boolean, file?: string): str
44
42
  * contract is unit-testable without spawning ssh-keyscan.
45
43
  */
46
44
  export declare function newKnownHostsLines(existing: string, scanned: string): string[];
47
- export interface PinResult {
45
+ interface PinResult {
48
46
  /** True if the host is pinned in the managed store after this call. */
49
47
  pinned: boolean;
50
48
  /** How many new key lines were appended. */
@@ -58,20 +56,4 @@ export interface PinResult {
58
56
  * network (the spawn stays in `pinHostKey`).
59
57
  */
60
58
  export declare function recordScannedKeys(host: string, scanned: string, file?: string): PinResult;
61
- /**
62
- * `ssh-keyscan` a host at a trusted moment and append any new key lines to the
63
- * managed store, idempotently. This is the explicit pin path; the implicit one
64
- * is a normal `accept-new` connection whose learned key lands in the same store.
65
- * Returns whether the host is pinned afterward.
66
- *
67
- * Host-name-agnostic: it scans whatever address it is handed, so it also pins a
68
- * host `agents ssh` can't reach — notably a bare `~/.ssh/config` `Host` alias,
69
- * which is not a registered device. The `--copy-creds` gate (commands/exec.ts)
70
- * calls this for exactly that case so the credential copy is usable for
71
- * ssh-config-alias hosts (RUSH-1767).
72
- */
73
- export declare function pinHostKey(host: string, opts?: {
74
- file?: string;
75
- timeoutMs?: number;
76
- port?: number;
77
- }): PinResult;
59
+ export {};
@@ -32,7 +32,7 @@ export function ensureManagedKnownHostsDir(file = managedKnownHostsPath()) {
32
32
  fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
33
33
  }
34
34
  /** Read the managed store, or '' when it does not exist yet. */
35
- export function readManagedKnownHosts(file = managedKnownHostsPath()) {
35
+ function readManagedKnownHosts(file = managedKnownHostsPath()) {
36
36
  try {
37
37
  return fs.readFileSync(file, 'utf-8');
38
38
  }
@@ -135,7 +135,7 @@ export function recordScannedKeys(host, scanned, file = managedKnownHostsPath())
135
135
  * calls this for exactly that case so the credential copy is usable for
136
136
  * ssh-config-alias hosts (RUSH-1767).
137
137
  */
138
- export function pinHostKey(host, opts = {}) {
138
+ function pinHostKey(host, opts = {}) {
139
139
  // Same injection guard as sshExec: a host starting with `-` (or carrying shell
140
140
  // metacharacters) must never reach ssh-keyscan as a bare argv where it could
141
141
  // be parsed as a flag.
@@ -30,7 +30,7 @@
30
30
  * ranker ({@link autoLaunchPreferredSet}, applied by `pickBestDevice`).
31
31
  */
32
32
  import { type AutoLaunchPreference, type AutoPoolMode, type ConfiguredDeviceRole } from '../device-config.js';
33
- export interface AutoPoolOptions {
33
+ interface AutoPoolOptions {
34
34
  /** Pool mode; defaults to the configured `auto.pool`. */
35
35
  mode?: AutoPoolMode;
36
36
  /** Configured roles by device name; defaults to the fleet-shared block. */
@@ -77,3 +77,4 @@ export declare function listWorkerDevices(opts?: Pick<AutoPoolOptions, 'roles'>)
77
77
  * callers can append it unconditionally.
78
78
  */
79
79
  export declare function describeAutoPool(opts?: AutoPoolOptions): string;
80
+ export {};
@@ -3,14 +3,14 @@ import { type DeviceProfile } from './registry.js';
3
3
  export { splitUserHost };
4
4
  /** A dialable peer: the ssh target, the machine id used to tag its rows, a
5
5
  * display name, and the OS family that picks the remote shell dialect. */
6
- export interface ResolvedSshTarget {
6
+ interface ResolvedSshTarget {
7
7
  target: string;
8
8
  machine: string;
9
9
  name: string;
10
10
  os?: string;
11
11
  extraSshArgs?: string[];
12
12
  }
13
- export interface ResolvedExplicitTargetSet {
13
+ interface ResolvedExplicitTargetSet {
14
14
  targets: ResolvedSshTarget[];
15
15
  unresolved: string[];
16
16
  }
@@ -43,7 +43,7 @@ import { runLocalCommand, runOnDevice, type FleetRunResult, type FleetTarget } f
43
43
  * falling back to the unresolved path where `readlink -f` is unavailable.
44
44
  */
45
45
  export declare function rolloutVerifyCommand(): string[];
46
- export interface RolloutProbe {
46
+ interface RolloutProbe {
47
47
  /** Path the box's own `agents` resolves to, symlinks followed. */
48
48
  resolvedPath?: string;
49
49
  /** Version that resolved copy reports. */
@@ -81,7 +81,7 @@ export declare function isRolloutSuccess(verdict: RolloutVerdict): boolean;
81
81
  export declare function resolveRolloutTarget(explicitVersion: string | undefined, probes: RolloutProbe[]): string | undefined;
82
82
  /** Classify one box's probe against the rollout target. */
83
83
  export declare function classifyRolloutVerification(probe: RolloutProbe, targetVersion: string | undefined): RolloutVerification;
84
- export interface VerifyFleetRolloutOptions {
84
+ interface VerifyFleetRolloutOptions {
85
85
  /** Name of THIS machine; its target is probed locally, mirroring `runFleet`. */
86
86
  self?: string;
87
87
  /** Injectable ssh runner (tests). */
@@ -99,3 +99,4 @@ export interface VerifyFleetRolloutOptions {
99
99
  * "we could not check" and "it is upgraded" are different answers.
100
100
  */
101
101
  export declare function verifyFleetRollout(targets: FleetTarget[], results: FleetRunResult[], explicitVersion: string | undefined, opts?: VerifyFleetRolloutOptions): Map<string, RolloutVerification>;
102
+ export {};
@@ -42,7 +42,7 @@ export declare function writeStatsCache(entries: Record<string, DeviceStats>): v
42
42
  export declare function removeStatsCacheEntry(name: string): void;
43
43
  /** Immutable cache pruning primitive, exported for lifecycle regression tests. */
44
44
  export declare function pruneStatsCache(entries: Record<string, DeviceStats>, name: string): Record<string, DeviceStats>;
45
- export interface FleetStatsResult {
45
+ interface FleetStatsResult {
46
46
  /** name → stats for every requested device (cache-served + freshly probed). */
47
47
  stats: Map<string, DeviceStats>;
48
48
  /** Oldest `fetchedAt` among the returned rows, or null when empty. Drives the
@@ -51,7 +51,7 @@ export interface FleetStatsResult {
51
51
  /** True when at least one row was served from cache rather than probed this call. */
52
52
  servedFromCache: boolean;
53
53
  }
54
- export interface LoadFleetStatsOptions {
54
+ interface LoadFleetStatsOptions {
55
55
  /** Skip the cache and live-probe every device (the `--refresh`/`--live` path). */
56
56
  forceRefresh?: boolean;
57
57
  /** Device name of THIS machine — always probed locally (no ssh), never cached-served. */
@@ -70,3 +70,4 @@ export interface LoadFleetStatsOptions {
70
70
  * `reachable: false` row exactly as the live probe does.
71
71
  */
72
72
  export declare function loadFleetStats(devices: DeviceProfile[], opts?: LoadFleetStatsOptions): Promise<FleetStatsResult>;
73
+ export {};
@@ -34,8 +34,8 @@ export declare function withDefaultUser(input: DeviceInput, prevUser: string | u
34
34
  * through the menu-bar "NEW DEVICES → Register / Ignore" gate instead of
35
35
  * silently landing in the registry.
36
36
  */
37
- export type DeviceSyncMode = 'bootstrap' | 'refresh';
38
- export interface DeviceSyncResult {
37
+ type DeviceSyncMode = 'bootstrap' | 'refresh';
38
+ interface DeviceSyncResult {
39
39
  /** False when discovery could not run (e.g. tailscale absent) in soft mode. */
40
40
  ok: boolean;
41
41
  /** Number of tailscale nodes upserted into the registry. */
@@ -89,7 +89,7 @@ export declare function runDeviceSync(opts?: {
89
89
  soft?: boolean;
90
90
  mode?: DeviceSyncMode;
91
91
  }): Promise<DeviceSyncResult>;
92
- export interface EnsureDevicesResult {
92
+ interface EnsureDevicesResult {
93
93
  /** Names newly resolved from Tailscale and upserted into the registry. */
94
94
  registered: string[];
95
95
  /** Names that could not be resolved (not on the tailnet / tailscale absent). */
@@ -102,7 +102,7 @@ export interface EnsureDevicesResult {
102
102
  * registered names need nothing. Pure so the bootstrap's filter matrix is
103
103
  * unit-testable without a tailnet or registry writes.
104
104
  */
105
- export interface WantedPartition {
105
+ interface WantedPartition {
106
106
  toRegister: string[];
107
107
  unresolved: string[];
108
108
  }
@@ -127,10 +127,11 @@ export declare function ensureDevicesRegistered(wantedNames: string[]): Promise<
127
127
  * => remove from the registry if it was there, and ignore it so auto-sync never
128
128
  * re-adds it.
129
129
  */
130
- export interface DeviceReconciliation {
130
+ interface DeviceReconciliation {
131
131
  toRegister: string[];
132
132
  toUnignore: string[];
133
133
  toRemove: string[];
134
134
  toIgnore: string[];
135
135
  }
136
136
  export declare function planDeviceReconciliation(allNames: Iterable<string>, keep: Iterable<string>, registered: Iterable<string>, ignored: Iterable<string>): DeviceReconciliation;
137
+ export {};