@phnx-labs/agents-cli 1.22.113 → 1.22.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (802) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/README.md +32 -113
  3. package/dist/browser.js +0 -0
  4. package/dist/cli/command-registry.d.ts +0 -60
  5. package/dist/cli/command-registry.js +57 -66
  6. package/dist/commands/accounts.d.ts +3 -77
  7. package/dist/commands/accounts.js +13 -366
  8. package/dist/commands/apply.d.ts +0 -4
  9. package/dist/commands/apply.js +3 -3
  10. package/dist/commands/audit.js +1 -1
  11. package/dist/commands/auth.js +0 -2
  12. package/dist/commands/browser-picker.d.ts +3 -6
  13. package/dist/commands/browser-picker.js +2 -2
  14. package/dist/commands/browser-sessions-picker.d.ts +2 -1
  15. package/dist/commands/browser.d.ts +53 -0
  16. package/dist/commands/browser.js +199 -9
  17. package/dist/commands/computer-sessions-picker.d.ts +2 -1
  18. package/dist/commands/computer.d.ts +14 -19
  19. package/dist/commands/computer.js +65 -10
  20. package/dist/commands/config.js +46 -2
  21. package/dist/commands/daemon.d.ts +0 -23
  22. package/dist/commands/daemon.js +1 -1
  23. package/dist/commands/detach-core.d.ts +2 -1
  24. package/dist/commands/detach.d.ts +0 -3
  25. package/dist/commands/detach.js +3 -3
  26. package/dist/commands/doctor.d.ts +2 -3
  27. package/dist/commands/doctor.js +0 -11
  28. package/dist/commands/events.d.ts +1 -3
  29. package/dist/commands/events.js +4 -7
  30. package/dist/commands/exec.d.ts +0 -1
  31. package/dist/commands/exec.js +2 -7
  32. package/dist/commands/feed-watch.js +52 -8
  33. package/dist/commands/feed.d.ts +3 -3
  34. package/dist/commands/feed.js +1 -1
  35. package/dist/commands/focus.d.ts +4 -4
  36. package/dist/commands/focus.js +1 -1
  37. package/dist/commands/go.d.ts +0 -17
  38. package/dist/commands/go.js +2 -19
  39. package/dist/commands/harness-hooks.d.ts +0 -7
  40. package/dist/commands/harness-hooks.js +1 -1
  41. package/dist/commands/harness-wizard.d.ts +2 -2
  42. package/dist/commands/harness.d.ts +3 -8
  43. package/dist/commands/harness.js +1 -1
  44. package/dist/commands/inspect.d.ts +2 -3
  45. package/dist/commands/inspect.js +1 -1
  46. package/dist/commands/logs.js +1 -1
  47. package/dist/commands/mcp.js +8 -83
  48. package/dist/commands/memory.js +4 -47
  49. package/dist/commands/message.d.ts +1 -1
  50. package/dist/commands/message.js +7 -7
  51. package/dist/commands/plugins.js +1 -93
  52. package/dist/commands/projects.d.ts +2 -18
  53. package/dist/commands/projects.js +89 -3
  54. package/dist/commands/repo.js +0 -44
  55. package/dist/commands/resource-view.d.ts +3 -2
  56. package/dist/commands/resume.d.ts +0 -1
  57. package/dist/commands/resume.js +5 -2
  58. package/dist/commands/routines.d.ts +1 -3
  59. package/dist/commands/routines.js +1 -1
  60. package/dist/commands/run-account-picker.d.ts +2 -1
  61. package/dist/commands/run-broadcast.d.ts +2 -1
  62. package/dist/commands/run-device-picker.d.ts +2 -1
  63. package/dist/commands/secrets-passthrough.d.ts +14 -0
  64. package/dist/commands/secrets-passthrough.js +23 -4
  65. package/dist/commands/send.d.ts +4 -4
  66. package/dist/commands/send.js +6 -51
  67. package/dist/commands/sessions-backfill.d.ts +2 -35
  68. package/dist/commands/sessions-backfill.js +1 -1
  69. package/dist/commands/sessions-backup-setup.js +1 -1
  70. package/dist/commands/sessions-bookmark.d.ts +0 -10
  71. package/dist/commands/sessions-bookmark.js +1 -1
  72. package/dist/commands/sessions-inject.d.ts +2 -3
  73. package/dist/commands/sessions-inject.js +8 -17
  74. package/dist/commands/sessions-picker-factory.d.ts +4 -14
  75. package/dist/commands/sessions-picker-factory.js +2 -2
  76. package/dist/commands/sessions-picker.d.ts +3 -9
  77. package/dist/commands/sessions-picker.js +2 -2
  78. package/dist/commands/sessions-resume.d.ts +2 -4
  79. package/dist/commands/sessions-resume.js +0 -6
  80. package/dist/commands/sessions-share.d.ts +5 -7
  81. package/dist/commands/sessions-share.js +98 -49
  82. package/dist/commands/sessions-stats.d.ts +2 -1
  83. package/dist/commands/sessions-stop.d.ts +0 -3
  84. package/dist/commands/sessions-stop.js +1 -1
  85. package/dist/commands/sessions-tail.d.ts +2 -1
  86. package/dist/commands/sessions-trace.d.ts +4 -6
  87. package/dist/commands/sessions-trace.js +1 -1
  88. package/dist/commands/sessions.d.ts +13 -104
  89. package/dist/commands/sessions.js +11 -18
  90. package/dist/commands/setup-browser.js +18 -2
  91. package/dist/commands/setup-computer.js +20 -6
  92. package/dist/commands/setup-mine.d.ts +0 -6
  93. package/dist/commands/setup-mine.js +1 -1
  94. package/dist/commands/setup-secrets.js +24 -4
  95. package/dist/commands/setup-terminal.d.ts +3 -0
  96. package/dist/commands/setup-terminal.js +22 -0
  97. package/dist/commands/setup.d.ts +3 -4
  98. package/dist/commands/setup.js +21 -11
  99. package/dist/commands/skills.js +0 -8
  100. package/dist/commands/ssh.d.ts +6 -0
  101. package/dist/commands/ssh.js +92 -233
  102. package/dist/commands/sync.js +14 -5
  103. package/dist/commands/teams-picker.d.ts +2 -5
  104. package/dist/commands/teams-picker.js +2 -2
  105. package/dist/commands/teams.d.ts +1 -7
  106. package/dist/commands/teams.js +2 -2
  107. package/dist/commands/tmux.d.ts +1 -1
  108. package/dist/commands/tmux.js +1 -1
  109. package/dist/commands/traces.js +1 -1
  110. package/dist/commands/upgrade.d.ts +2 -1
  111. package/dist/commands/utils.d.ts +1 -1
  112. package/dist/commands/utils.js +1 -1
  113. package/dist/lib/account-capabilities.d.ts +2 -1
  114. package/dist/lib/account-catalog.d.ts +4 -13
  115. package/dist/lib/account-catalog.js +1 -1
  116. package/dist/lib/account-registry.d.ts +3 -4
  117. package/dist/lib/account-registry.js +1 -1
  118. package/dist/lib/accounting/account-launch.d.ts +4 -3
  119. package/dist/lib/accounting/account-pool.d.ts +2 -1
  120. package/dist/lib/accounting/rotate.d.ts +3 -9
  121. package/dist/lib/accounting/rotate.js +2 -14
  122. package/dist/lib/accounting/usage-sync.d.ts +5 -4
  123. package/dist/lib/accounting/usage.d.ts +7 -31
  124. package/dist/lib/accounting/usage.js +4 -4
  125. package/dist/lib/accounts/add.d.ts +0 -5
  126. package/dist/lib/accounts/add.js +1 -7
  127. package/dist/lib/accounts/migrate.d.ts +8 -8
  128. package/dist/lib/accounts/migrate.js +1 -1
  129. package/dist/lib/acp/client.d.ts +3 -2
  130. package/dist/lib/acp/harnesses.d.ts +2 -2
  131. package/dist/lib/acp/harnesses.js +1 -1
  132. package/dist/lib/acp/run.d.ts +2 -1
  133. package/dist/lib/actor.d.ts +3 -2
  134. package/dist/lib/add-dir.d.ts +2 -17
  135. package/dist/lib/add-dir.js +2 -6
  136. package/dist/lib/address.d.ts +56 -0
  137. package/dist/lib/address.js +143 -0
  138. package/dist/lib/agent-spec/agents.d.ts +12 -28
  139. package/dist/lib/agent-spec/agents.js +2 -6
  140. package/dist/lib/agent-spec/primitives.d.ts +0 -7
  141. package/dist/lib/agent-spec/primitives.js +0 -6
  142. package/dist/lib/agent-spec/types.d.ts +2 -1
  143. package/dist/lib/analytics/dashboard.d.ts +1 -5
  144. package/dist/lib/analytics/dashboard.js +0 -2
  145. package/dist/lib/analytics/mix-commands.d.ts +0 -7
  146. package/dist/lib/analytics/mix-commands.js +3 -3
  147. package/dist/lib/analytics/recipes.d.ts +0 -12
  148. package/dist/lib/analytics/recipes.js +7 -31
  149. package/dist/lib/analytics/usage-db.d.ts +5 -32
  150. package/dist/lib/analytics/usage-db.js +1 -70
  151. package/dist/lib/answer-router.d.ts +7 -6
  152. package/dist/lib/answer-router.js +5 -11
  153. package/dist/lib/artifact-actions.d.ts +0 -4
  154. package/dist/lib/artifacts-client.d.ts +20 -0
  155. package/dist/lib/artifacts-client.js +46 -0
  156. package/dist/lib/ask-classifier.d.ts +3 -4
  157. package/dist/lib/ask-classifier.js +0 -7
  158. package/dist/lib/auth-health.d.ts +3 -46
  159. package/dist/lib/auth-health.js +3 -3
  160. package/dist/lib/auth-mint.d.ts +6 -6
  161. package/dist/lib/auth-mint.js +7 -7
  162. package/dist/lib/bench/runner.d.ts +2 -2
  163. package/dist/lib/bench/runner.js +1 -1
  164. package/dist/lib/bench/storage.d.ts +0 -1
  165. package/dist/lib/bench/storage.js +1 -1
  166. package/dist/lib/boot-profile.d.ts +0 -2
  167. package/dist/lib/boot-profile.js +0 -4
  168. package/dist/lib/brand.d.ts +0 -6
  169. package/dist/lib/brand.js +1 -1
  170. package/dist/lib/browser/arc-discovery.d.ts +4 -12
  171. package/dist/lib/browser/arc-discovery.js +1 -1
  172. package/dist/lib/browser/cdp.d.ts +1 -1
  173. package/dist/lib/browser/chrome.d.ts +2 -2
  174. package/dist/lib/browser/chrome.js +0 -4
  175. package/dist/lib/browser/chromium-discovery.d.ts +3 -2
  176. package/dist/lib/browser/drivers/arc.d.ts +3 -20
  177. package/dist/lib/browser/drivers/arc.js +2 -7
  178. package/dist/lib/browser/drivers/firefox.d.ts +2 -6
  179. package/dist/lib/browser/drivers/firefox.js +1 -1
  180. package/dist/lib/browser/drivers/local.d.ts +2 -1
  181. package/dist/lib/browser/drivers/ssh.d.ts +2 -3
  182. package/dist/lib/browser/drivers/ssh.js +0 -7
  183. package/dist/lib/browser/firefox-discovery.d.ts +4 -3
  184. package/dist/lib/browser/har.d.ts +8 -7
  185. package/dist/lib/browser/hygiene.d.ts +2 -3
  186. package/dist/lib/browser/hygiene.js +1 -1
  187. package/dist/lib/browser/ipc.d.ts +4 -3
  188. package/dist/lib/browser/ipc.js +1 -1
  189. package/dist/lib/browser/login-detection.d.ts +1 -8
  190. package/dist/lib/browser/registry.d.ts +2 -1
  191. package/dist/lib/browser/remote-control.d.ts +0 -7
  192. package/dist/lib/browser/remote-control.js +2 -2
  193. package/dist/lib/browser/resolve-target.d.ts +2 -6
  194. package/dist/lib/browser/resolve-target.js +3 -3
  195. package/dist/lib/browser/runtime-state.d.ts +59 -4
  196. package/dist/lib/browser/runtime-state.js +99 -18
  197. package/dist/lib/browser/service.d.ts +4 -4
  198. package/dist/lib/browser/service.js +21 -1
  199. package/dist/lib/browser/sessions-list.d.ts +0 -10
  200. package/dist/lib/browser/sessions-list.js +3 -3
  201. package/dist/lib/browser/stream.d.ts +2 -1
  202. package/dist/lib/browser/task-index.d.ts +4 -4
  203. package/dist/lib/browser/task-index.js +1 -1
  204. package/dist/lib/browser/types.d.ts +0 -20
  205. package/dist/lib/browser/types.js +1 -34
  206. package/dist/lib/browser/upload.d.ts +0 -27
  207. package/dist/lib/budget/ledger.d.ts +0 -2
  208. package/dist/lib/budget/ledger.js +1 -1
  209. package/dist/lib/budget/live-cloud.d.ts +2 -1
  210. package/dist/lib/budget/preflight.d.ts +3 -5
  211. package/dist/lib/budget/preflight.js +1 -1
  212. package/dist/lib/catchup.d.ts +2 -1
  213. package/dist/lib/channels/owner-forward.d.ts +5 -4
  214. package/dist/lib/channels/owner-sink.js +2 -2
  215. package/dist/lib/channels/providers/desktop.js +1 -1
  216. package/dist/lib/channels/providers/rush.d.ts +2 -1
  217. package/dist/lib/channels/registry.d.ts +1 -1
  218. package/dist/lib/channels/registry.js +1 -1
  219. package/dist/lib/channels/resolve.d.ts +3 -2
  220. package/dist/lib/channels/send.d.ts +5 -4
  221. package/dist/lib/cli-resources.d.ts +3 -9
  222. package/dist/lib/cli-resources.js +4 -2
  223. package/dist/lib/cloud/cursor.d.ts +1 -2
  224. package/dist/lib/cloud/cursor.js +1 -1
  225. package/dist/lib/cloud/dispatch.d.ts +2 -1
  226. package/dist/lib/cloud/dispatch.js +1 -1
  227. package/dist/lib/cloud/factory.d.ts +0 -2
  228. package/dist/lib/cloud/factory.js +1 -1
  229. package/dist/lib/cloud/rush.d.ts +3 -11
  230. package/dist/lib/cloud/rush.js +1 -1
  231. package/dist/lib/cloud/session-index.d.ts +2 -1
  232. package/dist/lib/cloud/types.d.ts +2 -1
  233. package/dist/lib/cloudflare/creds.d.ts +10 -0
  234. package/dist/lib/cloudflare/creds.js +46 -0
  235. package/dist/lib/cloudflare/provision.d.ts +35 -0
  236. package/dist/lib/cloudflare/provision.js +144 -0
  237. package/dist/lib/codex-policy.d.ts +2 -1
  238. package/dist/lib/commands.d.ts +7 -7
  239. package/dist/lib/commands.js +1 -1
  240. package/dist/lib/comms-render.d.ts +1 -1
  241. package/dist/lib/computer/context.d.ts +11 -3
  242. package/dist/lib/computer/context.js +2 -2
  243. package/dist/lib/computer/policy.d.ts +0 -12
  244. package/dist/lib/computer/policy.js +1 -1
  245. package/dist/lib/computer/sessions-list.d.ts +55 -0
  246. package/dist/lib/computer/sessions-list.js +168 -1
  247. package/dist/lib/computer-client.d.ts +3 -3
  248. package/dist/lib/computer-client.js +0 -1
  249. package/dist/lib/concurrency.d.ts +2 -1
  250. package/dist/lib/config-keys.d.ts +16 -3
  251. package/dist/lib/config-keys.js +47 -2
  252. package/dist/lib/convert.d.ts +0 -12
  253. package/dist/lib/convert.js +1 -12
  254. package/dist/lib/crabbox/cli.d.ts +6 -24
  255. package/dist/lib/crabbox/cli.js +2 -28
  256. package/dist/lib/crabbox/lease.d.ts +5 -6
  257. package/dist/lib/crabbox/lease.js +1 -1
  258. package/dist/lib/crabbox/progress.d.ts +2 -1
  259. package/dist/lib/crabbox/setup-copy.d.ts +2 -3
  260. package/dist/lib/crabbox/setup-copy.js +1 -1
  261. package/dist/lib/daemon/account-state-daemon-service.d.ts +1 -1
  262. package/dist/lib/daemon/attention-notify-service.d.ts +2 -1
  263. package/dist/lib/daemon/catchup-service.d.ts +2 -1
  264. package/dist/lib/daemon/daemon.d.ts +4 -4
  265. package/dist/lib/daemon/daemon.js +9 -2
  266. package/dist/lib/daemon/feed-stream-service.d.ts +23 -0
  267. package/dist/lib/daemon/feed-stream-service.js +40 -0
  268. package/dist/lib/daemon/harness-update-service.d.ts +2 -19
  269. package/dist/lib/daemon/harness-update-service.js +3 -3
  270. package/dist/lib/daemon/runner.d.ts +3 -3
  271. package/dist/lib/daemon/self-update-service.d.ts +1 -16
  272. package/dist/lib/daemon/self-update-service.js +6 -6
  273. package/dist/lib/daemon/state-dir-check-service.d.ts +2 -1
  274. package/dist/lib/daemon/supervisor.d.ts +3 -2
  275. package/dist/lib/daemon-services.d.ts +3 -2
  276. package/dist/lib/daemon-services.js +5 -0
  277. package/dist/lib/daemon-webhooks.d.ts +1 -1
  278. package/dist/lib/deeplink/register.d.ts +3 -13
  279. package/dist/lib/deeplink/register.js +3 -3
  280. package/dist/lib/deeplink/url.d.ts +3 -2
  281. package/dist/lib/device-config.d.ts +4 -15
  282. package/dist/lib/device-config.js +164 -8
  283. package/dist/lib/devices/connect.d.ts +51 -6
  284. package/dist/lib/devices/connect.js +169 -21
  285. package/dist/lib/devices/discovery-policy.d.ts +3 -2
  286. package/dist/lib/devices/doctor-findings.js +1 -1
  287. package/dist/lib/devices/doctor-overview-cache.d.ts +3 -2
  288. package/dist/lib/devices/fleet-divergence.d.ts +2 -1
  289. package/dist/lib/devices/fleet.d.ts +3 -4
  290. package/dist/lib/devices/fleet.js +1 -1
  291. package/dist/lib/devices/harness-inventory.d.ts +3 -2
  292. package/dist/lib/devices/health-report.d.ts +3 -2
  293. package/dist/lib/devices/health.d.ts +1 -8
  294. package/dist/lib/devices/health.js +1 -1
  295. package/dist/lib/devices/interactive-host.d.ts +0 -2
  296. package/dist/lib/devices/interactive-host.js +1 -1
  297. package/dist/lib/devices/known-hosts.d.ts +2 -20
  298. package/dist/lib/devices/known-hosts.js +2 -2
  299. package/dist/lib/devices/pool.d.ts +2 -1
  300. package/dist/lib/devices/resolve-target.d.ts +2 -2
  301. package/dist/lib/devices/rollout-verify.d.ts +3 -2
  302. package/dist/lib/devices/stats-cache.d.ts +3 -2
  303. package/dist/lib/devices/sync.d.ts +6 -5
  304. package/dist/lib/devices/worker-pick.d.ts +3 -12
  305. package/dist/lib/devices/worker-pick.js +1 -1
  306. package/dist/lib/diff-text.d.ts +2 -1
  307. package/dist/lib/doctor-diff.d.ts +2 -1
  308. package/dist/lib/drift-sync.d.ts +3 -2
  309. package/dist/lib/drift.d.ts +3 -3
  310. package/dist/lib/drift.js +1 -1
  311. package/dist/lib/event-families.d.ts +0 -6
  312. package/dist/lib/event-families.js +3 -3
  313. package/dist/lib/event-provenance.d.ts +2 -1
  314. package/dist/lib/events-ingest.d.ts +4 -3
  315. package/dist/lib/exec-account-home.d.ts +2 -4
  316. package/dist/lib/exec-account-home.js +1 -1
  317. package/dist/lib/exec-bounded.d.ts +3 -4
  318. package/dist/lib/exec-bounded.js +1 -1
  319. package/dist/lib/exec.d.ts +6 -18
  320. package/dist/lib/exec.js +1 -1
  321. package/dist/lib/factory/snapshot.d.ts +2 -2
  322. package/dist/lib/factory/snapshot.js +1 -1
  323. package/dist/lib/feed/activity-stream.d.ts +2 -5
  324. package/dist/lib/feed/activity-stream.js +2 -2
  325. package/dist/lib/feed/activity.d.ts +8 -33
  326. package/dist/lib/feed/activity.js +8 -8
  327. package/dist/lib/feed/answer.d.ts +3 -2
  328. package/dist/lib/feed/attention.js +5 -1
  329. package/dist/lib/feed/envelope.d.ts +79 -0
  330. package/dist/lib/feed/envelope.js +23 -0
  331. package/dist/lib/feed/events.d.ts +8 -47
  332. package/dist/lib/feed/events.js +9 -141
  333. package/dist/lib/feed/feed.d.ts +9 -42
  334. package/dist/lib/feed/feed.js +1 -60
  335. package/dist/lib/feed/hub-server.d.ts +86 -0
  336. package/dist/lib/feed/hub-server.js +334 -0
  337. package/dist/lib/feed/hub.d.ts +95 -0
  338. package/dist/lib/feed/hub.js +255 -0
  339. package/dist/lib/feed/pr-status.d.ts +0 -2
  340. package/dist/lib/feed/pr-status.js +1 -5
  341. package/dist/lib/feed/tool-activity.d.ts +108 -0
  342. package/dist/lib/feed/tool-activity.js +313 -0
  343. package/dist/lib/feed/tools.d.ts +198 -0
  344. package/dist/lib/feed/tools.js +265 -0
  345. package/dist/lib/feed/watch.d.ts +51 -52
  346. package/dist/lib/feed/watch.js +147 -17
  347. package/dist/lib/feed-broadcast.d.ts +5 -47
  348. package/dist/lib/feed-broadcast.js +9 -9
  349. package/dist/lib/feed-outcome.d.ts +3 -6
  350. package/dist/lib/feed-outcome.js +2 -2
  351. package/dist/lib/feed-policy.d.ts +5 -6
  352. package/dist/lib/feed-policy.js +2 -2
  353. package/dist/lib/feed-post.d.ts +3 -4
  354. package/dist/lib/feed-post.js +1 -1
  355. package/dist/lib/feed-ranking.d.ts +2 -2
  356. package/dist/lib/feed-ranking.js +1 -1
  357. package/dist/lib/fleet/apply.d.ts +5 -6
  358. package/dist/lib/fleet/apply.js +4 -4
  359. package/dist/lib/fleet/manifest.d.ts +2 -1
  360. package/dist/lib/fleet/remote-login.d.ts +18 -36
  361. package/dist/lib/fleet/remote-login.js +20 -19
  362. package/dist/lib/fleet/types.d.ts +0 -8
  363. package/dist/lib/fleet-cache.d.ts +1 -18
  364. package/dist/lib/fleet-cache.js +0 -5
  365. package/dist/lib/fleet-shared-repo-sync.d.ts +3 -3
  366. package/dist/lib/fleet-shared-repo-sync.js +1 -1
  367. package/dist/lib/fleet-shared-state.d.ts +3 -2
  368. package/dist/lib/format.d.ts +3 -2
  369. package/dist/lib/format.js +1 -1
  370. package/dist/lib/friction-heuristics.d.ts +2 -1
  371. package/dist/lib/fs-walk.d.ts +2 -1
  372. package/dist/lib/fuzzy.d.ts +2 -1
  373. package/dist/lib/gemini-settings.d.ts +0 -1
  374. package/dist/lib/gemini-settings.js +1 -1
  375. package/dist/lib/git.d.ts +7 -81
  376. package/dist/lib/git.js +2 -199
  377. package/dist/lib/github/gh-overload.d.ts +0 -4
  378. package/dist/lib/github/gh-overload.js +2 -2
  379. package/dist/lib/github/project-prs.d.ts +118 -0
  380. package/dist/lib/github/project-prs.js +173 -0
  381. package/dist/lib/github/rest.d.ts +2 -1
  382. package/dist/lib/harness/exec-config-version.d.ts +2 -1
  383. package/dist/lib/harness-auth-capabilities.d.ts +5 -4
  384. package/dist/lib/harness-connection-test.d.ts +2 -1
  385. package/dist/lib/heal.d.ts +3 -20
  386. package/dist/lib/heal.js +2 -39
  387. package/dist/lib/help.d.ts +3 -2
  388. package/dist/lib/helper-download.d.ts +0 -12
  389. package/dist/lib/helper-download.js +2 -2
  390. package/dist/lib/helper-versions.d.ts +2 -1
  391. package/dist/lib/helper-versions.js +1 -1
  392. package/dist/lib/hooks/install.d.ts +8 -49
  393. package/dist/lib/hooks/install.js +2 -96
  394. package/dist/lib/hooks/match.d.ts +2 -1
  395. package/dist/lib/hosts/credential-transport.d.ts +0 -2
  396. package/dist/lib/hosts/credential-transport.js +1 -1
  397. package/dist/lib/hosts/dispatch.d.ts +2 -24
  398. package/dist/lib/hosts/dispatch.js +2 -2
  399. package/dist/lib/hosts/logs.d.ts +2 -1
  400. package/dist/lib/hosts/passthrough.d.ts +1 -1
  401. package/dist/lib/hosts/passthrough.js +0 -1
  402. package/dist/lib/hosts/progress.d.ts +0 -5
  403. package/dist/lib/hosts/progress.js +1 -1
  404. package/dist/lib/hosts/ready.d.ts +3 -4
  405. package/dist/lib/hosts/ready.js +0 -8
  406. package/dist/lib/hosts/reconcile.d.ts +2 -8
  407. package/dist/lib/hosts/reconcile.js +1 -1
  408. package/dist/lib/hosts/reconnect.d.ts +4 -11
  409. package/dist/lib/hosts/reconnect.js +2 -2
  410. package/dist/lib/hosts/registry.d.ts +1 -1
  411. package/dist/lib/hosts/remote-cmd.d.ts +55 -4
  412. package/dist/lib/hosts/remote-cmd.js +125 -8
  413. package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +2 -0
  414. package/dist/lib/hosts/remote-cmd.test-fixture.js +22 -0
  415. package/dist/lib/hosts/session-index.d.ts +3 -2
  416. package/dist/lib/hosts/ssh-config.d.ts +2 -3
  417. package/dist/lib/hosts/ssh-config.js +0 -10
  418. package/dist/lib/humans.d.ts +0 -2
  419. package/dist/lib/humans.js +2 -2
  420. package/dist/lib/import.d.ts +4 -3
  421. package/dist/lib/installations/installation-lock.d.ts +0 -2
  422. package/dist/lib/installations/installation-lock.js +2 -2
  423. package/dist/lib/installations/launch-gate.d.ts +0 -9
  424. package/dist/lib/installations/launch-gate.js +1 -1
  425. package/dist/lib/installations/migrate.d.ts +0 -11
  426. package/dist/lib/installations/migrate.js +1 -1
  427. package/dist/lib/installations/shims.d.ts +1 -1
  428. package/dist/lib/installations/shims.js +2 -2
  429. package/dist/lib/installations/update-runtime.js +1 -1
  430. package/dist/lib/linear-cache.d.ts +2 -1
  431. package/dist/lib/linux-userns.d.ts +2 -3
  432. package/dist/lib/linux-userns.js +0 -4
  433. package/dist/lib/loop.d.ts +2 -1
  434. package/dist/lib/mailbox-gc.d.ts +2 -1
  435. package/dist/lib/mailbox-target.d.ts +2 -1
  436. package/dist/lib/mailbox.d.ts +0 -6
  437. package/dist/lib/mailbox.js +1 -1
  438. package/dist/lib/manifest.d.ts +0 -14
  439. package/dist/lib/manifest.js +2 -2
  440. package/dist/lib/mcp-registry.d.ts +2 -1
  441. package/dist/lib/mcp.js +17 -11
  442. package/dist/lib/memory.d.ts +2 -13
  443. package/dist/lib/memory.js +4 -4
  444. package/dist/lib/menubar/download-menubar.d.ts +0 -2
  445. package/dist/lib/menubar/download-menubar.js +1 -5
  446. package/dist/lib/menubar/install-menubar.d.ts +3 -14
  447. package/dist/lib/menubar/install-menubar.js +3 -3
  448. package/dist/lib/menubar/migrate-prefs.d.ts +53 -0
  449. package/dist/lib/menubar/migrate-prefs.js +168 -0
  450. package/dist/lib/menubar/resolve-version.d.ts +1 -9
  451. package/dist/lib/menubar/resolve-version.js +4 -4
  452. package/dist/lib/menubar/snapshot.d.ts +24 -2
  453. package/dist/lib/menubar/snapshot.js +26 -0
  454. package/dist/lib/model-tier-overrides.d.ts +3 -2
  455. package/dist/lib/monitors/config.d.ts +0 -2
  456. package/dist/lib/monitors/config.js +0 -4
  457. package/dist/lib/monitors/engine.d.ts +1 -1
  458. package/dist/lib/monitors/remote.d.ts +3 -2
  459. package/dist/lib/monitors/sources/webhook.d.ts +2 -15
  460. package/dist/lib/monitors/sources/webhook.js +1 -38
  461. package/dist/lib/monitors/state.d.ts +4 -7
  462. package/dist/lib/monitors/state.js +2 -2
  463. package/dist/lib/notify.d.ts +1 -1
  464. package/dist/lib/notify.js +1 -1
  465. package/dist/lib/onepassword.d.ts +5 -14
  466. package/dist/lib/onepassword.js +0 -64
  467. package/dist/lib/open-url.d.ts +3 -2
  468. package/dist/lib/openclaw-keychain.d.ts +4 -17
  469. package/dist/lib/openclaw-keychain.js +3 -33
  470. package/dist/lib/operator.d.ts +2 -2
  471. package/dist/lib/operator.js +1 -1
  472. package/dist/lib/output/git-output.d.ts +4 -14
  473. package/dist/lib/output/git-output.js +1 -1
  474. package/dist/lib/owner-message.d.ts +3 -29
  475. package/dist/lib/owner-message.js +3 -3
  476. package/dist/lib/packages/output-home.d.ts +2 -4
  477. package/dist/lib/packages/output-home.js +2 -2
  478. package/dist/lib/perf/db.d.ts +0 -2
  479. package/dist/lib/perf/db.js +2 -7
  480. package/dist/lib/permissions-registry.d.ts +2 -3
  481. package/dist/lib/permissions-registry.js +0 -4
  482. package/dist/lib/permissions.d.ts +6 -16
  483. package/dist/lib/permissions.js +2 -15
  484. package/dist/lib/picker.d.ts +6 -5
  485. package/dist/lib/placement.d.ts +3 -6
  486. package/dist/lib/placement.js +0 -17
  487. package/dist/lib/platform/posixpath.d.ts +2 -1
  488. package/dist/lib/platform/winpath.d.ts +2 -1
  489. package/dist/lib/plugins/plugin-marketplace.d.ts +2 -2
  490. package/dist/lib/plugins/plugin-marketplace.js +1 -1
  491. package/dist/lib/pr-land-detach.d.ts +2 -1
  492. package/dist/lib/probe.d.ts +4 -1
  493. package/dist/lib/probe.js +5 -2
  494. package/dist/lib/profiles-presets.d.ts +2 -1
  495. package/dist/lib/profiles.d.ts +3 -9
  496. package/dist/lib/profiles.js +1 -9
  497. package/dist/lib/project-doctor.d.ts +2 -1
  498. package/dist/lib/project-launch.d.ts +2 -2
  499. package/dist/lib/project-probe.d.ts +4 -3
  500. package/dist/lib/project-pull.d.ts +2 -1
  501. package/dist/lib/project-resources.d.ts +2 -2
  502. package/dist/lib/project-resources.js +1 -1
  503. package/dist/lib/project-root.d.ts +2 -6
  504. package/dist/lib/project-root.js +1 -1
  505. package/dist/lib/project-schedule.d.ts +2 -1
  506. package/dist/lib/project-status.d.ts +2 -16
  507. package/dist/lib/project-status.js +3 -3
  508. package/dist/lib/pwsh.d.ts +33 -0
  509. package/dist/lib/pwsh.js +56 -0
  510. package/dist/lib/reconcile-and-repair.d.ts +5 -4
  511. package/dist/lib/redact.d.ts +15 -1
  512. package/dist/lib/redact.js +105 -3
  513. package/dist/lib/refresh-coordinator.d.ts +2 -1
  514. package/dist/lib/refresh.d.ts +9 -4
  515. package/dist/lib/refresh.js +92 -72
  516. package/dist/lib/remote-agents-json.d.ts +3 -2
  517. package/dist/lib/reserved-stores.d.ts +0 -2
  518. package/dist/lib/reserved-stores.js +3 -5
  519. package/dist/lib/resource-content-diff.d.ts +0 -2
  520. package/dist/lib/resource-content-diff.js +1 -1
  521. package/dist/lib/resource-patterns.d.ts +2 -1
  522. package/dist/lib/resource-profiles.d.ts +2 -8
  523. package/dist/lib/resource-profiles.js +3 -27
  524. package/dist/lib/resources/workflows.d.ts +1 -1
  525. package/dist/lib/resources.d.ts +4 -9
  526. package/dist/lib/resources.js +1 -1
  527. package/dist/lib/routine-context.d.ts +2 -5
  528. package/dist/lib/routine-context.js +2 -2
  529. package/dist/lib/routine-notify-owner.d.ts +8 -7
  530. package/dist/lib/routine-notify-owner.js +5 -5
  531. package/dist/lib/routine-process-cleanup.d.ts +2 -1
  532. package/dist/lib/routine-readiness.d.ts +0 -2
  533. package/dist/lib/routine-readiness.js +0 -7
  534. package/dist/lib/routines-project.d.ts +3 -4
  535. package/dist/lib/routines-project.js +1 -1
  536. package/dist/lib/rules/compile.d.ts +3 -25
  537. package/dist/lib/rules/compile.js +1 -1
  538. package/dist/lib/rules/compose.d.ts +3 -9
  539. package/dist/lib/rules/rules.d.ts +4 -15
  540. package/dist/lib/rules/rules.js +1 -64
  541. package/dist/lib/run-defaults.d.ts +1 -1
  542. package/dist/lib/run-notify.d.ts +2 -1
  543. package/dist/lib/run-trace-sync.d.ts +1 -1
  544. package/dist/lib/run-trace-sync.js +1 -1
  545. package/dist/lib/scheduler.d.ts +2 -1
  546. package/dist/lib/scheduling/routines.d.ts +9 -21
  547. package/dist/lib/scheduling/routines.js +3 -46
  548. package/dist/lib/secrets-cli.d.ts +11 -0
  549. package/dist/lib/secrets-cli.js +30 -0
  550. package/dist/lib/secrets-client.d.ts +0 -17
  551. package/dist/lib/secrets-client.js +7 -28
  552. package/dist/lib/secrets-policy.d.ts +12 -17
  553. package/dist/lib/secrets-policy.js +5 -5
  554. package/dist/lib/secrets-types.d.ts +3 -2
  555. package/dist/lib/secrets-types.js +2 -1
  556. package/dist/lib/self-heal/checks/install-staging.js +1 -1
  557. package/dist/lib/self-heal/registry.d.ts +3 -2
  558. package/dist/lib/self-heal/types.d.ts +1 -1
  559. package/dist/lib/self-heal/types.js +1 -1
  560. package/dist/lib/self-update.d.ts +5 -5
  561. package/dist/lib/self-update.js +4 -4
  562. package/dist/lib/session/actor-sidecar.d.ts +3 -2
  563. package/dist/lib/session/artifacts.d.ts +0 -2
  564. package/dist/lib/session/artifacts.js +1 -1
  565. package/dist/lib/session/bash-command.d.ts +2 -7
  566. package/dist/lib/session/bundle.d.ts +4 -6
  567. package/dist/lib/session/bundle.js +1 -5
  568. package/dist/lib/session/cloud.d.ts +0 -4
  569. package/dist/lib/session/cloud.js +2 -15
  570. package/dist/lib/session/detached.d.ts +9 -1
  571. package/dist/lib/session/detached.js +31 -2
  572. package/dist/lib/session/digest.d.ts +2 -2
  573. package/dist/lib/session/digest.js +1 -1
  574. package/dist/lib/session/fork.d.ts +3 -2
  575. package/dist/lib/session/highlights.d.ts +6 -5
  576. package/dist/lib/session/hook-sessions.d.ts +2 -1
  577. package/dist/lib/session/host-link.d.ts +2 -1
  578. package/dist/lib/session/inject.d.ts +1 -1
  579. package/dist/lib/session/inject.js +1 -1
  580. package/dist/lib/session/insights.d.ts +3 -15
  581. package/dist/lib/session/insights.js +2 -2
  582. package/dist/lib/session/local-tmux-attach.d.ts +2 -18
  583. package/dist/lib/session/local-tmux-attach.js +1 -1
  584. package/dist/lib/session/migrations.d.ts +0 -1
  585. package/dist/lib/session/migrations.js +1 -1
  586. package/dist/lib/session/mirror.d.ts +5 -8
  587. package/dist/lib/session/mirror.js +2 -2
  588. package/dist/lib/session/parse.d.ts +1 -32
  589. package/dist/lib/session/parse.js +4 -4
  590. package/dist/lib/session/presence.d.ts +2 -1
  591. package/dist/lib/session/prompt.d.ts +3 -2
  592. package/dist/lib/session/prompt.js +38 -1
  593. package/dist/lib/session/recovery.d.ts +3 -2
  594. package/dist/lib/session/remote/peer-stream.d.ts +26 -7
  595. package/dist/lib/session/remote/peer-stream.js +35 -8
  596. package/dist/lib/session/remote/remote-bundle.d.ts +2 -1
  597. package/dist/lib/session/remote/remote-list.d.ts +5 -5
  598. package/dist/lib/session/remote/remote.d.ts +4 -3
  599. package/dist/lib/session/remote/watch.d.ts +2 -7
  600. package/dist/lib/session/remote/watch.js +3 -3
  601. package/dist/lib/session/remote-active.d.ts +2 -1
  602. package/dist/lib/session/render.d.ts +2 -2
  603. package/dist/lib/session/render.js +1 -1
  604. package/dist/lib/session/resume-owner.d.ts +1 -1
  605. package/dist/lib/session/resume-owner.js +1 -1
  606. package/dist/lib/session/run-names.d.ts +2 -1
  607. package/dist/lib/session/session-cache.d.ts +7 -26
  608. package/dist/lib/session/session-cache.js +2 -8
  609. package/dist/lib/session/share-html.d.ts +1 -21
  610. package/dist/lib/session/share-html.js +1 -1
  611. package/dist/lib/session/shell-programs.d.ts +2 -1
  612. package/dist/lib/session/state.d.ts +41 -8
  613. package/dist/lib/session/state.js +112 -11
  614. package/dist/lib/session/stream-render.d.ts +2 -1
  615. package/dist/lib/session/sync/agents.d.ts +0 -4
  616. package/dist/lib/session/sync/agents.js +0 -0
  617. package/dist/lib/session/sync/backend.d.ts +8 -8
  618. package/dist/lib/session/sync/backend.js +3 -3
  619. package/dist/lib/session/sync/managed-config.d.ts +0 -8
  620. package/dist/lib/session/sync/managed-key.d.ts +0 -2
  621. package/dist/lib/session/sync/managed-key.js +1 -1
  622. package/dist/lib/session/sync/provision.d.ts +1 -1
  623. package/dist/lib/session/sync/provision.js +2 -2
  624. package/dist/lib/session/sync/r2.d.ts +4 -1
  625. package/dist/lib/session/sync/r2.js +4 -7
  626. package/dist/lib/session/sync/transcript-crypto.d.ts +2 -1
  627. package/dist/lib/session/tail.d.ts +2 -1
  628. package/dist/lib/session/team-filter.d.ts +1 -1
  629. package/dist/lib/session/throughput.d.ts +2 -3
  630. package/dist/lib/session/throughput.js +1 -1
  631. package/dist/lib/session/timeline-pass.d.ts +3 -42
  632. package/dist/lib/session/timeline-pass.js +4 -4
  633. package/dist/lib/session/timeline.d.ts +3 -13
  634. package/dist/lib/session/timeline.js +3 -3
  635. package/dist/lib/session/tool-calls.d.ts +2 -2
  636. package/dist/lib/session/tool-calls.js +1 -1
  637. package/dist/lib/session/tool-index.d.ts +0 -8
  638. package/dist/lib/session/tool-index.js +2 -2
  639. package/dist/lib/session/tool-store.d.ts +2 -1
  640. package/dist/lib/session/trajectory-compare.d.ts +2 -1
  641. package/dist/lib/session/trajectory-lineage.d.ts +2 -1
  642. package/dist/lib/session/trajectory-text.d.ts +3 -2
  643. package/dist/lib/session/trajectory.d.ts +2 -1
  644. package/dist/lib/session/viewing-in.d.ts +2 -1
  645. package/dist/lib/sessions-client.js +0 -3
  646. package/dist/lib/settings-manifest.d.ts +2 -1
  647. package/dist/lib/setup-tool-install.d.ts +3 -0
  648. package/dist/lib/setup-tool-install.js +26 -0
  649. package/dist/lib/setup-tool-status.d.ts +22 -0
  650. package/dist/lib/setup-tool-status.js +215 -0
  651. package/dist/lib/share-runtime.d.ts +11 -0
  652. package/dist/lib/share-runtime.js +63 -0
  653. package/dist/lib/shim-heal.d.ts +1 -5
  654. package/dist/lib/shim-heal.js +0 -6
  655. package/dist/lib/smart-launch.d.ts +5 -10
  656. package/dist/lib/smart-launch.js +4 -12
  657. package/dist/lib/snapshot.d.ts +3 -2
  658. package/dist/lib/ssh-exec.d.ts +49 -4
  659. package/dist/lib/ssh-exec.js +119 -0
  660. package/dist/lib/ssh-tunnel.d.ts +3 -2
  661. package/dist/lib/staleness/checkers/permissions.d.ts +0 -2
  662. package/dist/lib/staleness/checkers/permissions.js +1 -1
  663. package/dist/lib/staleness/fingerprint.d.ts +0 -7
  664. package/dist/lib/staleness/fingerprint.js +1 -1
  665. package/dist/lib/staleness/prune.d.ts +3 -2
  666. package/dist/lib/staleness/registry.d.ts +1 -1
  667. package/dist/lib/staleness/writers/sources.d.ts +0 -8
  668. package/dist/lib/staleness/writers/sources.js +1 -1
  669. package/dist/lib/startup/command-registry.d.ts +6 -4
  670. package/dist/lib/startup/command-registry.js +11 -8
  671. package/dist/lib/state.d.ts +1 -3
  672. package/dist/lib/state.js +3 -6
  673. package/dist/lib/storage/selection.d.ts +2 -2
  674. package/dist/lib/storage/selection.js +2 -2
  675. package/dist/lib/subagents-registry.d.ts +4 -3
  676. package/dist/lib/subagents.d.ts +2 -1
  677. package/dist/lib/subagents.js +3 -2
  678. package/dist/lib/summarizer/pass.d.ts +3 -6
  679. package/dist/lib/summarizer/pass.js +2 -2
  680. package/dist/lib/summarizer/summarize.d.ts +4 -3
  681. package/dist/lib/sync-passphrase.d.ts +3 -2
  682. package/dist/lib/sync-status.d.ts +3 -16
  683. package/dist/lib/sync-status.js +2 -2
  684. package/dist/lib/sync-umbrella.d.ts +9 -3
  685. package/dist/lib/sync-umbrella.js +18 -10
  686. package/dist/lib/system-run-sync.d.ts +2 -1
  687. package/dist/lib/teams/agents.d.ts +2 -4
  688. package/dist/lib/teams/agents.js +1 -1
  689. package/dist/lib/teams/forEach.d.ts +3 -2
  690. package/dist/lib/teams/pr-watch.d.ts +4 -11
  691. package/dist/lib/teams/pr-watch.js +4 -4
  692. package/dist/lib/teams/registry.d.ts +2 -3
  693. package/dist/lib/teams/registry.js +1 -1
  694. package/dist/lib/teams/remoteWorktree.d.ts +0 -16
  695. package/dist/lib/teams/remoteWorktree.js +3 -3
  696. package/dist/lib/teams/scheduler.d.ts +6 -5
  697. package/dist/lib/teams/scheduler.js +1 -1
  698. package/dist/lib/teams/supervisor.d.ts +4 -3
  699. package/dist/lib/teams/worktree.d.ts +0 -9
  700. package/dist/lib/teams/worktree.js +0 -32
  701. package/dist/lib/term-client.d.ts +44 -0
  702. package/dist/lib/term-client.js +117 -0
  703. package/dist/lib/terminal/inject.d.ts +3 -16
  704. package/dist/lib/terminal/inject.js +1 -29
  705. package/dist/lib/terminal/resolve.d.ts +3 -9
  706. package/dist/lib/terminal/resolve.js +3 -7
  707. package/dist/lib/tmux/binary.d.ts +2 -1
  708. package/dist/lib/tmux/orphan-reap.d.ts +6 -7
  709. package/dist/lib/tmux/orphan-reap.js +1 -1
  710. package/dist/lib/tmux/session.d.ts +4 -3
  711. package/dist/lib/traces/backend.d.ts +1 -2
  712. package/dist/lib/traces/backend.js +1 -2
  713. package/dist/lib/traces/classify.d.ts +3 -2
  714. package/dist/lib/traces/config.d.ts +0 -8
  715. package/dist/lib/traces/insights.d.ts +2 -1
  716. package/dist/lib/traces/phenotype.d.ts +3 -3
  717. package/dist/lib/traces/provision.d.ts +2 -4
  718. package/dist/lib/traces/provision.js +3 -3
  719. package/dist/lib/traces/schema2-build.d.ts +1 -1
  720. package/dist/lib/traces/schema2-danger.d.ts +2 -1
  721. package/dist/lib/traces/schema2.d.ts +5 -4
  722. package/dist/lib/traces/segments.d.ts +4 -20
  723. package/dist/lib/traces/segments.js +3 -3
  724. package/dist/lib/traces/sync.d.ts +2 -3
  725. package/dist/lib/traces/sync.js +1 -1
  726. package/dist/lib/triggers/handlers.d.ts +4 -13
  727. package/dist/lib/triggers/handlers.js +1 -1
  728. package/dist/lib/triggers/webhook.d.ts +5 -27
  729. package/dist/lib/triggers/webhook.js +4 -4
  730. package/dist/lib/types.d.ts +11 -9
  731. package/dist/lib/usage-refresh.d.ts +4 -10
  732. package/dist/lib/usage-refresh.js +3 -8
  733. package/dist/lib/verbs.d.ts +2 -1
  734. package/dist/lib/version-duplicates.d.ts +2 -3
  735. package/dist/lib/version-duplicates.js +3 -33
  736. package/dist/lib/version.d.ts +2 -1
  737. package/dist/lib/warn-unpushed.d.ts +2 -1
  738. package/dist/lib/watchdog/history.d.ts +3 -2
  739. package/dist/lib/watchdog/log.d.ts +0 -6
  740. package/dist/lib/watchdog/log.js +1 -1
  741. package/dist/lib/watchdog/rotate.d.ts +2 -26
  742. package/dist/lib/watchdog/rotate.js +4 -12
  743. package/dist/lib/watchdog/runner.d.ts +0 -7
  744. package/dist/lib/watchdog/runner.js +4 -4
  745. package/dist/lib/watchdog/service.d.ts +2 -2
  746. package/dist/lib/watchdog/service.js +1 -1
  747. package/dist/lib/watchdog/watchdog-agent.d.ts +2 -1
  748. package/dist/lib/watchdog/watchdog.d.ts +2 -1
  749. package/dist/lib/watchdog/watchdogTail.d.ts +2 -1
  750. package/dist/lib/workflows-registry.d.ts +3 -2
  751. package/dist/lib/workflows.d.ts +4 -7
  752. package/dist/lib/workflows.js +1 -1
  753. package/dist/lib/worktree/held.d.ts +4 -28
  754. package/dist/lib/worktree/held.js +3 -3
  755. package/package.json +3 -5
  756. package/scripts/postinstall.js +5 -4
  757. package/dist/commands/artifacts-setup.d.ts +0 -53
  758. package/dist/commands/artifacts-setup.js +0 -161
  759. package/dist/commands/artifacts.d.ts +0 -18
  760. package/dist/commands/artifacts.js +0 -58
  761. package/dist/commands/attach.d.ts +0 -12
  762. package/dist/commands/attach.js +0 -86
  763. package/dist/commands/auth-mint.d.ts +0 -12
  764. package/dist/commands/auth-mint.js +0 -108
  765. package/dist/commands/pty.d.ts +0 -20
  766. package/dist/commands/pty.js +0 -404
  767. package/dist/commands/reconnect.d.ts +0 -46
  768. package/dist/commands/reconnect.js +0 -115
  769. package/dist/commands/share.d.ts +0 -293
  770. package/dist/commands/share.js +0 -1424
  771. package/dist/lib/config-machine-keys.d.ts +0 -14
  772. package/dist/lib/config-machine-keys.js +0 -21
  773. package/dist/lib/pty-client.d.ts +0 -49
  774. package/dist/lib/pty-client.js +0 -315
  775. package/dist/lib/pty-server.d.ts +0 -59
  776. package/dist/lib/pty-server.js +0 -653
  777. package/dist/lib/share/analytics.d.ts +0 -13
  778. package/dist/lib/share/analytics.js +0 -45
  779. package/dist/lib/share/backend.d.ts +0 -120
  780. package/dist/lib/share/backend.js +0 -176
  781. package/dist/lib/share/capture.d.ts +0 -31
  782. package/dist/lib/share/capture.js +0 -174
  783. package/dist/lib/share/config.d.ts +0 -72
  784. package/dist/lib/share/config.js +0 -211
  785. package/dist/lib/share/delete.d.ts +0 -122
  786. package/dist/lib/share/delete.js +0 -173
  787. package/dist/lib/share/html.d.ts +0 -22
  788. package/dist/lib/share/html.js +0 -88
  789. package/dist/lib/share/http-error.d.ts +0 -52
  790. package/dist/lib/share/http-error.js +0 -65
  791. package/dist/lib/share/og.d.ts +0 -25
  792. package/dist/lib/share/og.js +0 -84
  793. package/dist/lib/share/provision.d.ts +0 -127
  794. package/dist/lib/share/provision.js +0 -285
  795. package/dist/lib/share/publish.d.ts +0 -388
  796. package/dist/lib/share/publish.js +0 -818
  797. package/dist/lib/share/worker-template.d.ts +0 -27
  798. package/dist/lib/share/worker-template.js +0 -2424
  799. package/dist/lib/storage/index.d.ts +0 -14
  800. package/dist/lib/storage/index.js +0 -14
  801. package/dist/lib/storage/visibility.d.ts +0 -82
  802. package/dist/lib/storage/visibility.js +0 -99
@@ -18,12 +18,14 @@ import * as path from 'path';
18
18
  import { assertValidSshTarget, shellQuote } from '../ssh-exec.js';
19
19
  import { resolveActor, actorEnv } from '../actor.js';
20
20
  import { getCliLaunch } from '../cli-entry.js';
21
- import { encodePwshBase64 } from '../pwsh.js';
21
+ import { encodePwshBase64, pwshLiteral, pwshNativeExecStatements } from '../pwsh.js';
22
+ import { quoteWin32ExecArg } from '../platform/exec.js';
22
23
  import { homeRemainder, remoteCdPrefix } from '../project-root.js';
23
24
  import { getCacheDir } from '../state.js';
24
25
  import { hostKeyCheckingOpts } from './known-hosts.js';
25
26
  import { hostNameFor } from './ssh-config.js';
26
27
  import { resolveDeviceProfile } from './resolve-profile.js';
28
+ import { renderPowershellCommand, windowsAgentsInvocation } from '../hosts/remote-cmd.js';
27
29
  /** Env var the askpass shim reads to know which bundle holds the password. */
28
30
  export const ASKPASS_BUNDLE_ENV = 'AGENTS_SSH_BUNDLE';
29
31
  /** Env var the askpass shim reads to know which key in the bundle is the password. */
@@ -72,20 +74,139 @@ export function fleetDialTarget(device) {
72
74
  }
73
75
  }
74
76
  /**
75
- * Wrap a remote command for the device's shell. Windows devices speak
76
- * PowerShell, so a bare command is run through `powershell -NoProfile
77
- * -EncodedCommand`; POSIX devices get the command verbatim (the remote login
78
- * shell parses it). Returns undefined when no command was given (interactive
77
+ * Render `cmd` as the single command string ssh sends to the peer.
78
+ *
79
+ * Windows devices speak PowerShell, so the result is run through
80
+ * `powershell -NoProfile -EncodedCommand`; POSIX devices get it as the remote
81
+ * login shell sees it. Returns undefined when no command was given (interactive
79
82
  * login).
83
+ *
84
+ * TWO MODES, and the difference is load-bearing rather than a convenience.
85
+ *
86
+ * The default joins the tokens RAW. That is not a bug to be tidied away: every
87
+ * existing caller of `agents ssh` relies on the remote shell interpreting what it
88
+ * is handed — `agents ssh box 'bash -lc "cd x && make"'` arrives as ONE token
89
+ * whose pipeline, globs and redirections the peer's shell must expand. Quoting
90
+ * that would ship the whole line as a literal argument and break it.
91
+ *
92
+ * `{ argv: true }` is for a caller that genuinely holds an argv ARRAY and needs
93
+ * each element delivered as exactly one token. Joining those raw destroys any
94
+ * token containing a space or a metacharacter — `['--title', 'two words']`
95
+ * arrives as three tokens, and `'a & b'` arrives as a backgrounded command — which
96
+ * is what a native client hitting this path actually hit.
97
+ *
98
+ * So fidelity is opt-in at the call site that knows which shape it has, and the
99
+ * quoting itself reuses the canonical helpers (`shellQuote`, {@link pwshQuote})
100
+ * rather than introducing a third escaping scheme.
80
101
  */
81
- export function wrapRemoteCommand(device, cmd) {
102
+ export function wrapRemoteCommand(device, cmd, opts = {}) {
82
103
  if (cmd.length === 0)
83
104
  return undefined;
84
- const joined = cmd.join(' ');
105
+ const prelude = opts.prelude ?? [];
106
+ let script;
107
+ if (opts.argv) {
108
+ // Quote EACH caller token so the peer receives it byte-for-byte, then prefix
109
+ // the prelude VERBATIM — it is already shell syntax and re-quoting it would
110
+ // break it (see `fleetRemotePrelude`).
111
+ if (device.shell === 'powershell') {
112
+ script = pwshExactArgvScript(cmd, prelude);
113
+ }
114
+ else {
115
+ script = [...prelude, ...cmd.map(shellQuote)].join(' ');
116
+ }
117
+ }
118
+ else {
119
+ // The default joins raw, which is what lets a caller hand the remote shell
120
+ // something to interpret. See the docblock above for why both must exist.
121
+ script = [...prelude, ...cmd].join(' ');
122
+ }
85
123
  if (device.shell === 'powershell') {
86
- return `powershell -NoProfile -EncodedCommand ${encodePwshBase64(joined)}`;
124
+ // Same renderer the Windows `agents` launcher uses, so a long script gets the
125
+ // compressed representation here too rather than only on that path. The
126
+ // interactive login route (`buildInteractiveShellCommand`, -NoExit) is
127
+ // deliberately left alone: it must stay an interactive session.
128
+ return renderPowershellCommand(script);
87
129
  }
88
- return joined;
130
+ return script;
131
+ }
132
+ /**
133
+ * Single-quote one token for PowerShell's OWN parser. Inside a single-quoted pwsh
134
+ * string the only special character is `'`, escaped by doubling.
135
+ *
136
+ * This is correct for a value PowerShell itself consumes, and NOT sufficient for
137
+ * an argument handed on to a native program — see the Win32 note below.
138
+ */
139
+ export function pwshQuote(token) {
140
+ return `'${token.replace(/'/g, "''")}'`;
141
+ }
142
+ /**
143
+ * Emit a PowerShell script that runs `cmd` with EXACT argv, for either kind of
144
+ * target a Windows peer can name.
145
+ *
146
+ * Windows has no argv array: a process receives ONE string and splits it itself.
147
+ * PowerShell 5.1 rebuilds that string when it invokes a native program, and its
148
+ * serializer is lossy — measured on a real peer, an EMPTY argument is dropped and
149
+ * an embedded `"` is discarded, so the callee's argv silently shifts.
150
+ *
151
+ * The obvious fix, the `--%` stop-parsing token, is NOT used, because measurement
152
+ * killed it three ways:
153
+ * - it only applies to a NATIVE command, and `agents` on Windows resolves to
154
+ * `agents.ps1`, so a script target received `--%` as a literal argument and
155
+ * the whole remainder as one string;
156
+ * - a token containing a NEWLINE terminates the directive, producing a parser
157
+ * error;
158
+ * - it performs cmd-style `%VAR%` expansion, so a literal `%PATH%` became six
159
+ * arguments — the exact opposite of exact argv.
160
+ *
161
+ * So the script branches on what the peer's own command discovery finds:
162
+ *
163
+ * - **native executable** — launched through `System.Diagnostics.Process` with a
164
+ * pre-built `Arguments` string escaped by {@link quoteWin32ExecArg}. .NET hands
165
+ * that string to `CreateProcess` essentially verbatim, so the child's
166
+ * `CommandLineToArgvW` reconstructs the tokens exactly; no shell sees it, so
167
+ * no `%VAR%` expansion and no newline sensitivity. `UseShellExecute = $false`
168
+ * with no redirection leaves the child on the inherited handles, which is what
169
+ * lets a binary stdout stream through unchanged.
170
+ * - **anything else** (a `.ps1`/`.cmd` launcher, a function, a cmdlet, an alias)
171
+ * — invoked with a splatted PowerShell array. That is an in-process call, so
172
+ * the native serializer is never involved and every token survives as itself.
173
+ *
174
+ * The exit code is propagated in both branches; a script launcher that sets no
175
+ * `$LASTEXITCODE` is left alone rather than forced to 0.
176
+ */
177
+ function pwshExactArgvScript(cmd, prelude) {
178
+ // The Agents CLI gets the canonical launcher, not the generic dispatch. On
179
+ // Windows `agents` is an npm `agents.ps1` whose own body splats `$args` into
180
+ // native node.exe — the PowerShell 5.1 lossy path — so even a perfectly
181
+ // splatted call into that script loses an embedded quote one layer deeper.
182
+ // `windowsAgentsInvocation` resolves the package's declared entry and runs it
183
+ // directly, which is the only way the real Agents parser sees exact tokens.
184
+ const bin = cmd[0];
185
+ if (bin === 'agents' || bin === 'ag') {
186
+ // `windowsAgentsInvocation` leaves the child's code in `$zq`.
187
+ return [...prelude, windowsAgentsInvocation(cmd.slice(1), bin), 'exit $zq'].join('\n');
188
+ }
189
+ const program = pwshQuote(cmd[0]);
190
+ const rest = cmd.slice(1);
191
+ const splat = rest.length > 0 ? `@(${rest.map(pwshQuote).join(', ')})` : '@()';
192
+ return [
193
+ ...prelude,
194
+ `$ErrorActionPreference='Stop'`,
195
+ `$__c = Get-Command -Name ${program} -ErrorAction Stop`,
196
+ `if ($__c.CommandType -eq 'Application') {`,
197
+ // One emitter for the .NET native-exec block, shared with the Windows
198
+ // `agents` launcher in `hosts/remote-cmd.ts`; a second copy would drift.
199
+ ...pwshNativeExecStatements('$__c.Source', pwshLiteral(rest.map(quoteWin32ExecArg).join(' '))).map((line) => ` ${line}`),
200
+ // `pwshNativeExecStatements` names the process handle `$zp`.
201
+ ` exit $zp.ExitCode`,
202
+ `}`,
203
+ // `@__a` SPLATS the array into separate arguments. `& $__c @(...)` on an
204
+ // array LITERAL does not splat — it passes one array-valued argument, which
205
+ // a real peer reported back as every token collapsed into one.
206
+ `$__a = ${splat}`,
207
+ `& $__c @__a`,
208
+ `if ($null -ne $LASTEXITCODE) { exit $LASTEXITCODE }`,
209
+ ].join('\n');
89
210
  }
90
211
  /**
91
212
  * True when `cmd` is a browser drive: `agents browser …`, `ag browser …`, or
@@ -123,22 +244,43 @@ export function isAgentsBrowserDrive(cmd) {
123
244
  * fan-out stamps the marker before {@link buildSshInvocation}) is left unchanged
124
245
  * so nothing is doubled.
125
246
  */
126
- export function markFleetRemote(cmd, device, provenanceEnv = actorEnv(resolveActor())) {
247
+ /**
248
+ * The provenance prefix as READY SHELL SYNTAX for the device's shell.
249
+ *
250
+ * These tokens are already quoted/escaped for their target shell — a POSIX
251
+ * `K=V` pair is `shellQuote`d here, and a PowerShell assignment is a complete
252
+ * statement with its own doubled quotes. That matters because argv mode quotes
253
+ * every token it is handed: quoting THESE again turns
254
+ * `'AGENTS_ACTOR=Some Name'` into `''\''AGENTS_ACTOR=Some Name'\'''` and turns a
255
+ * pwsh assignment into an inert string literal. So the prelude is composed
256
+ * SEPARATELY from the caller's argv rather than concatenated into it, and this is
257
+ * the single definition both paths use.
258
+ */
259
+ export function fleetRemotePrelude(device, provenanceEnv = actorEnv(resolveActor())) {
127
260
  if (device.shell === 'powershell') {
128
- // Exact-match guard, symmetric with the POSIX branch below: the marker token
129
- // is always this literal, so `startsWith` would only loosen it for no gain.
130
- if (cmd[0] === `$env:AGENTS_FLEET_REMOTE='1';`)
131
- return cmd;
132
- const prelude = [
261
+ return [
133
262
  `$env:AGENTS_FLEET_REMOTE='1';`,
134
263
  ...Object.entries(provenanceEnv).map(([k, v]) => `$env:${k}='${v.replace(/'/g, "''")}';`),
135
264
  ];
136
- return [...prelude, ...cmd];
137
265
  }
138
- if (cmd[0] === 'env' && cmd[1] === 'AGENTS_FLEET_REMOTE=1')
266
+ return [
267
+ 'env',
268
+ 'AGENTS_FLEET_REMOTE=1',
269
+ ...Object.entries(provenanceEnv).map(([k, v]) => shellQuote(`${k}=${v}`)),
270
+ ];
271
+ }
272
+ /** True when `cmd` already carries the prelude {@link fleetRemotePrelude} emits. */
273
+ function alreadyMarked(cmd, device) {
274
+ if (device.shell === 'powershell')
275
+ return cmd[0] === `$env:AGENTS_FLEET_REMOTE='1';`;
276
+ return cmd[0] === 'env' && cmd[1] === 'AGENTS_FLEET_REMOTE=1';
277
+ }
278
+ export function markFleetRemote(cmd, device, provenanceEnv = actorEnv(resolveActor())) {
279
+ // Exact-match guard: the marker token is always this literal, so `startsWith`
280
+ // would only loosen it for no gain.
281
+ if (alreadyMarked(cmd, device))
139
282
  return cmd;
140
- const actorTokens = Object.entries(provenanceEnv).map(([k, v]) => shellQuote(`${k}=${v}`));
141
- return ['env', 'AGENTS_FLEET_REMOTE=1', ...actorTokens, ...cmd];
283
+ return [...fleetRemotePrelude(device, provenanceEnv), ...cmd];
142
284
  }
143
285
  /**
144
286
  * Build the remote command that starts an INTERACTIVE LOGIN shell inside a
@@ -229,10 +371,16 @@ export function buildSshInvocation(device, cmd, askpassShimPath, hostKey = {}, o
229
371
  // Stamp the consent marker on the REMOTE command, not the local ssh env:
230
372
  // SSH_ASKPASS lives on this side; AGENTS_FLEET_REMOTE must be visible to the
231
373
  // process that runs on the peer.
232
- const remoteCmd = !interactive && isAgentsBrowserDrive(cmd) ? markFleetRemote(cmd, device) : cmd;
374
+ // Provenance is composed as a PRELUDE, not prepended to the argv array. In argv
375
+ // mode every token handed to `wrapRemoteCommand` is quoted, and the prelude is
376
+ // already shell syntax — mixing them in meant the actor pairs were quoted twice
377
+ // (breaking any value with a space or a quote) and the pwsh assignments became
378
+ // inert string literals.
379
+ const needsProvenance = !interactive && isAgentsBrowserDrive(cmd) && !alreadyMarked(cmd, device);
380
+ const prelude = needsProvenance ? fleetRemotePrelude(device) : [];
233
381
  const remote = interactive
234
382
  ? buildInteractiveShellCommand(device, opts.interactiveCwd)
235
- : wrapRemoteCommand(device, remoteCmd);
383
+ : wrapRemoteCommand(device, cmd, { ...(opts.argv ? { argv: true } : {}), ...(prelude.length > 0 ? { prelude } : {}) });
236
384
  const env = {};
237
385
  const args = [
238
386
  ...hostKeyCheckingOpts(hostKey.pinned ?? false, hostKey.knownHostsFile),
@@ -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 {};