@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
@@ -133,20 +133,12 @@ export declare function parsePrUrl(prUrl: string): {
133
133
  repo: string;
134
134
  number: number;
135
135
  } | null;
136
- /** Fetch the current CI checks for a PR via `gh pr checks`. Returns [] on any gh error. */
137
- export declare function fetchPrChecks(prUrl: string): Promise<PrCheck[]>;
138
- /** Fetch review comments for a PR via `gh api`. Returns [] on any gh error. */
139
- export declare function fetchPrReviewComments(prUrl: string): Promise<PrReviewComment[]>;
140
- /** Fetch the failing-run logs for a check via `gh run view --log-failed`. Best-effort, truncated. */
141
- export declare function fetchCiFailureLogs(check: PrCheck, maxChars?: number): Promise<string>;
142
- /** Collect a live PR snapshot from `gh`. The poll-mode seam for `runPrWatch`. */
143
- export declare function pollPrSnapshot(prUrl: string, sourceTeammate: string | null): Promise<PrSnapshot>;
144
136
  /** A PR to watch, paired with the teammate that opened it. */
145
137
  export interface WatchTarget {
146
138
  prUrl: string;
147
139
  sourceTeammate: string | null;
148
140
  }
149
- export interface PrWatchDeps {
141
+ interface PrWatchDeps {
150
142
  /** Discover which PRs to watch this pass (teammates may open PRs mid-run). */
151
143
  resolveTargets: () => Promise<WatchTarget[]>;
152
144
  /** Snapshot one PR's CI + review comments. Defaults to `pollPrSnapshot`. */
@@ -192,7 +184,7 @@ export type PrWatchEvent = {
192
184
  message: string;
193
185
  timestamp: string;
194
186
  };
195
- export interface PrWatchOptions {
187
+ interface PrWatchOptions {
196
188
  intervalMs?: number;
197
189
  /** Stop after this many polls (0 / undefined = run until signalled). */
198
190
  maxPolls?: number;
@@ -205,7 +197,7 @@ export interface PrWatchOptions {
205
197
  /** Abort signal — resolves the loop at the next interval boundary. */
206
198
  shouldStop?: () => boolean;
207
199
  }
208
- export interface PrWatchResult {
200
+ interface PrWatchResult {
209
201
  polls: number;
210
202
  spawned: number;
211
203
  /** How many PRs escalated to a human (wave budget exhausted). */
@@ -224,3 +216,4 @@ export interface PrWatchResult {
224
216
  * and `waves` hard-caps the total spawns per PR (issue #338).
225
217
  */
226
218
  export declare function runPrWatch(deps: PrWatchDeps, opts?: PrWatchOptions): Promise<PrWatchResult>;
219
+ export {};
@@ -194,7 +194,7 @@ export function parsePrUrl(prUrl) {
194
194
  // PrReviewComment shapes and hand them straight to decidePrActions.
195
195
  // ---------------------------------------------------------------------------
196
196
  /** Fetch the current CI checks for a PR via `gh pr checks`. Returns [] on any gh error. */
197
- export async function fetchPrChecks(prUrl) {
197
+ async function fetchPrChecks(prUrl) {
198
198
  try {
199
199
  const { stdout } = await execFileAsync('gh', ['pr', 'checks', prUrl, '--json', 'name,state,link,workflow'], { maxBuffer: 8 * 1024 * 1024 });
200
200
  const raw = JSON.parse(stdout);
@@ -213,7 +213,7 @@ export async function fetchPrChecks(prUrl) {
213
213
  }
214
214
  }
215
215
  /** Fetch review comments for a PR via `gh api`. Returns [] on any gh error. */
216
- export async function fetchPrReviewComments(prUrl) {
216
+ async function fetchPrReviewComments(prUrl) {
217
217
  const parsed = parsePrUrl(prUrl);
218
218
  if (!parsed)
219
219
  return [];
@@ -239,7 +239,7 @@ export async function fetchPrReviewComments(prUrl) {
239
239
  }
240
240
  }
241
241
  /** Fetch the failing-run logs for a check via `gh run view --log-failed`. Best-effort, truncated. */
242
- export async function fetchCiFailureLogs(check, maxChars = 8000) {
242
+ async function fetchCiFailureLogs(check, maxChars = 8000) {
243
243
  const runId = check.link?.match(/\/runs\/(\d+)/)?.[1] ?? check.link?.match(/\/actions\/runs\/(\d+)/)?.[1];
244
244
  if (!runId)
245
245
  return '';
@@ -255,7 +255,7 @@ export async function fetchCiFailureLogs(check, maxChars = 8000) {
255
255
  }
256
256
  }
257
257
  /** Collect a live PR snapshot from `gh`. The poll-mode seam for `runPrWatch`. */
258
- export async function pollPrSnapshot(prUrl, sourceTeammate) {
258
+ async function pollPrSnapshot(prUrl, sourceTeammate) {
259
259
  const [checks, comments] = await Promise.all([
260
260
  fetchPrChecks(prUrl),
261
261
  fetchPrReviewComments(prUrl),
@@ -34,7 +34,7 @@ export type TeamRegistry = Record<string, TeamMeta>;
34
34
  * write, which is exactly the data-loss path we are trying to close.
35
35
  */
36
36
  export declare function loadTeams(): Promise<TeamRegistry>;
37
- export interface CreateTeamOptions {
37
+ interface CreateTeamOptions {
38
38
  description?: string;
39
39
  enableWorktrees?: boolean;
40
40
  /** Path to an existing worktree for all teammates to share. */
@@ -52,8 +52,6 @@ export declare function createTeam(name: string, options?: CreateTeamOptions): P
52
52
  export declare function ensureTeam(name: string): Promise<TeamMeta>;
53
53
  /** Mark a team as disbanded so saveMeta will not resurrect its teammates. */
54
54
  export declare function markTeamDisbanded(name: string): Promise<void>;
55
- /** Clear a disband tombstone — called when the name is re-created. */
56
- export declare function clearTeamDisbanded(name: string): Promise<void>;
57
55
  /** True when the team was disbanded and has not been re-created since. */
58
56
  export declare function isTeamDisbanded(name: string): Promise<boolean>;
59
57
  /** Remove a team from the registry. Returns false if the team did not exist. */
@@ -62,3 +60,4 @@ export declare function removeTeam(name: string): Promise<boolean>;
62
60
  export declare function teamExists(name: string): Promise<boolean>;
63
61
  /** Get metadata for a specific team. Returns null if team does not exist. */
64
62
  export declare function getTeam(name: string): Promise<TeamMeta | null>;
63
+ export {};
@@ -151,7 +151,7 @@ export async function markTeamDisbanded(name) {
151
151
  await fs.writeFile(disbandedPath(name), JSON.stringify({ team: name, disbanded_at: new Date().toISOString() }), 'utf-8');
152
152
  }
153
153
  /** Clear a disband tombstone — called when the name is re-created. */
154
- export async function clearTeamDisbanded(name) {
154
+ async function clearTeamDisbanded(name) {
155
155
  try {
156
156
  await fs.unlink(disbandedPath(name));
157
157
  }
@@ -9,22 +9,6 @@ interface RemoteSshOptions {
9
9
  * single-quoted, so odd path characters stay safe.
10
10
  */
11
11
  export declare function remotePathExpr(p: string): string;
12
- /**
13
- * Resolve the ABSOLUTE git top-level for a (possibly `~`-relative) repo path on
14
- * the host, or null when it isn't a git repo / the host is unreachable. Used by
15
- * `ensureRemoteRepo` to both VALIDATE and CANONICALIZE a repo location, so every
16
- * downstream remote command (launch `cd`, worktree create, polling) works from an
17
- * absolute path with no tilde-expansion hazard.
18
- */
19
- export declare function resolveRemoteRepoRoot(target: string, repoPath: string, opts?: RemoteSshOptions): string | null;
20
- /** True when `repoPath` is a git working tree on the host. */
21
- export declare function isRemoteGitRepo(target: string, repoPath: string, opts?: RemoteSshOptions): boolean;
22
- /**
23
- * Resolve the host repo's default branch name (origin/HEAD → `main`/`master`/…).
24
- * Falls back to `main` when origin/HEAD isn't set, matching the local recipe's
25
- * `remote set-head` step.
26
- */
27
- export declare function remoteDefaultBranch(target: string, repoPath: string, opts?: RemoteSshOptions): string;
28
12
  /**
29
13
  * Create a worktree on the host for a teammate, branched off the freshly-fetched
30
14
  * default branch. Returns the absolute worktree path on the host.
@@ -40,7 +40,7 @@ export function remotePathExpr(p) {
40
40
  * downstream remote command (launch `cd`, worktree create, polling) works from an
41
41
  * absolute path with no tilde-expansion hazard.
42
42
  */
43
- export function resolveRemoteRepoRoot(target, repoPath, opts = {}) {
43
+ function resolveRemoteRepoRoot(target, repoPath, opts = {}) {
44
44
  assertValidSshTarget(target);
45
45
  const cmd = `git -C ${remotePathExpr(repoPath)} rev-parse --show-toplevel 2>/dev/null`;
46
46
  const res = sshExec(target, cmd, { timeoutMs: 15000, multiplex: true, extraSshArgs: opts.extraSshArgs });
@@ -57,7 +57,7 @@ function remoteGit(target, repoPath, args, timeoutMs = 60000, opts = {}) {
57
57
  return res.stdout.trim();
58
58
  }
59
59
  /** True when `repoPath` is a git working tree on the host. */
60
- export function isRemoteGitRepo(target, repoPath, opts = {}) {
60
+ function isRemoteGitRepo(target, repoPath, opts = {}) {
61
61
  assertValidSshTarget(target);
62
62
  // remotePathExpr so a `~`/`$HOME`-relative path (the canonical repos dir) expands
63
63
  // on the host — plain shellQuote would single-quote the tilde into a literal,
@@ -71,7 +71,7 @@ export function isRemoteGitRepo(target, repoPath, opts = {}) {
71
71
  * Falls back to `main` when origin/HEAD isn't set, matching the local recipe's
72
72
  * `remote set-head` step.
73
73
  */
74
- export function remoteDefaultBranch(target, repoPath, opts = {}) {
74
+ function remoteDefaultBranch(target, repoPath, opts = {}) {
75
75
  assertValidSshTarget(target);
76
76
  try {
77
77
  // Refresh origin/HEAD first so a repo cloned before the default was set resolves.
@@ -31,7 +31,7 @@ export interface DevicePlacementSignal {
31
31
  pickerEligible?: boolean;
32
32
  }
33
33
  /** Team fields the placement cascade reads (a subset of TeamMeta). */
34
- export interface PlacementTeam {
34
+ interface PlacementTeam {
35
35
  devices?: string[];
36
36
  }
37
37
  /**
@@ -44,7 +44,7 @@ export interface PlacementTeam {
44
44
  * honors caps: an explicit pin or a pool of one is the user's own choice and
45
45
  * is never second-guessed.
46
46
  */
47
- export interface PlacementOptions {
47
+ interface PlacementOptions {
48
48
  /** Worker pool used when the team does not declare an explicit device pool. */
49
49
  defaultDevices?: string[];
50
50
  maxConcurrent?: Record<string, number>;
@@ -59,7 +59,7 @@ export interface PlacementOptions {
59
59
  agentLabel?: string;
60
60
  /**
61
61
  * Normalized hosts boosted with `auto-launch.preferred` (set by
62
- * `agents devices prefer <name>`). A preferred device ranks ahead of a
62
+ * `agents devices config <name> auto-launch.preferred on`). A preferred device ranks ahead of a
63
63
  * non-preferred one among the eligible survivors — after the signed-in tier
64
64
  * (a preferred box that can't run the agent is still no use) and before load,
65
65
  * so an operator boost overrides load-based ordering without overriding hard
@@ -69,9 +69,9 @@ export interface PlacementOptions {
69
69
  preferred?: ReadonlySet<string>;
70
70
  }
71
71
  /** Why a device was excluded from the viable set, for the fail-loud message. */
72
- export type ExclusionReason = 'unreachable' | 'probe-timed-out' | 'overloaded' | 'capped' | 'not-installed';
72
+ type ExclusionReason = 'unreachable' | 'probe-timed-out' | 'overloaded' | 'capped' | 'not-installed';
73
73
  /** A pool device dropped from the auto-pick, with the reason + live detail. */
74
- export interface ExcludedDevice {
74
+ interface ExcludedDevice {
75
75
  device: string;
76
76
  reason: ExclusionReason;
77
77
  /** Present for `capped`: `running/cap`. */
@@ -155,3 +155,4 @@ export declare function pickBestDevice(devices: string[], roster: RosterEntry[],
155
155
  export declare function resolvePlacement(team: PlacementTeam, explicitDevice: string | null, roster: RosterEntry[], opts?: PlacementOptions): {
156
156
  device: string | null;
157
157
  };
158
+ export {};
@@ -269,7 +269,7 @@ export function pickBestDevice(devices, roster, opts) {
269
269
  const signedIn = (sa?.signedIn === true ? 0 : 1) - (sb?.signedIn === true ? 0 : 1);
270
270
  if (signedIn !== 0)
271
271
  return signedIn;
272
- // (a2) operator-preferred device next — `agents devices prefer <name>`
272
+ // (a2) operator-preferred device next — `agents devices config <name> auto-launch.preferred on`
273
273
  // boosts a box above its load-equal peers, overriding load-based order.
274
274
  const preferred = opts?.preferred;
275
275
  if (preferred && preferred.size > 0) {
@@ -20,7 +20,7 @@
20
20
  import type { AgentManager, AgentProcess } from './agents.js';
21
21
  import type { TeamBudgetWatcher } from '../budget/live-team.js';
22
22
  import type { BreachInfo } from '../budget/enforce.js';
23
- export interface WaveSummary {
23
+ interface WaveSummary {
24
24
  wave: number;
25
25
  timestamp: string;
26
26
  team: string;
@@ -31,7 +31,7 @@ export interface WaveSummary {
31
31
  failed: number;
32
32
  drained: boolean;
33
33
  }
34
- export interface SupervisorOptions {
34
+ interface SupervisorOptions {
35
35
  team: string;
36
36
  intervalMs?: number;
37
37
  maxWaves?: number;
@@ -47,7 +47,7 @@ export interface SupervisorOptions {
47
47
  /** Called with the breach details when the budget watcher trips. */
48
48
  onBudgetBreach?: (breach: BreachInfo) => void;
49
49
  }
50
- export interface SupervisorResult {
50
+ interface SupervisorResult {
51
51
  waves: number;
52
52
  stoppedBy: 'drained' | 'max-waves' | 'signal' | 'callback' | 'budget';
53
53
  elapsed_ms: number;
@@ -66,3 +66,4 @@ export interface SupervisorResult {
66
66
  * returns false from onWave, or SIGINT/SIGTERM arrives.
67
67
  */
68
68
  export declare function runSupervisor(mgr: AgentManager, opts: SupervisorOptions): Promise<SupervisorResult>;
69
+ export {};
@@ -12,15 +12,6 @@ export declare function getGitRoot(dir: string): Promise<string>;
12
12
  * Check if a worktree directory has uncommitted changes.
13
13
  */
14
14
  export declare function hasUncommittedChanges(worktreePath: string): Promise<boolean>;
15
- /** Default cap on diff text so one giant worktree can't blow up the serve dashboard. */
16
- export declare const DEFAULT_DIFF_MAX_BYTES = 200000;
17
- /**
18
- * Return the uncommitted working-tree diff for a worktree (staged + unstaged,
19
- * relative to HEAD), capped so a huge diff can't overwhelm the read-only serve
20
- * dashboard. Read-only: shells out to `git diff HEAD` and never mutates state.
21
- * Returns '' when the path isn't a git worktree or has no pending changes.
22
- */
23
- export declare function gitDiff(worktreePath: string, maxBytes?: number): Promise<string>;
24
15
  /**
25
16
  * Resolve the repo's default branch name (origin/HEAD → `main`/`master`/…).
26
17
  * Refreshes origin/HEAD first so a repo cloned before the default was set resolves.
@@ -45,38 +45,6 @@ export async function hasUncommittedChanges(worktreePath) {
45
45
  return false;
46
46
  }
47
47
  }
48
- /** Default cap on diff text so one giant worktree can't blow up the serve dashboard. */
49
- export const DEFAULT_DIFF_MAX_BYTES = 200_000;
50
- /**
51
- * Return the uncommitted working-tree diff for a worktree (staged + unstaged,
52
- * relative to HEAD), capped so a huge diff can't overwhelm the read-only serve
53
- * dashboard. Read-only: shells out to `git diff HEAD` and never mutates state.
54
- * Returns '' when the path isn't a git worktree or has no pending changes.
55
- */
56
- export async function gitDiff(worktreePath, maxBytes = DEFAULT_DIFF_MAX_BYTES) {
57
- // Size the capture buffer off the cap (not an arbitrary 1MB floor) so a diff
58
- // that overshoots gets TRUNCATED, never silently dropped. A diff larger than
59
- // the buffer overflows maxBuffer, but Node still hands us the captured prefix
60
- // on the rejection — we truncate that below rather than losing it to ''.
61
- const maxBuffer = maxBytes * 4;
62
- const truncate = (s) => s.slice(0, maxBytes) + `\n… [diff truncated at ${maxBytes} bytes]`;
63
- try {
64
- const { stdout } = await execFileAsync('git', ['diff', 'HEAD'], {
65
- cwd: worktreePath,
66
- maxBuffer,
67
- });
68
- return stdout.length > maxBytes ? truncate(stdout) : stdout;
69
- }
70
- catch (err) {
71
- // ENOBUFS on an oversized diff still carries the partial capture; truncate
72
- // it so the dashboard shows "[diff truncated]" instead of "no changes".
73
- // A genuine non-git-worktree error has no stdout → fall through to ''.
74
- const partial = err?.stdout;
75
- if (typeof partial === 'string' && partial.length > 0)
76
- return truncate(partial);
77
- return '';
78
- }
79
- }
80
48
  /**
81
49
  * Resolve the repo's default branch name (origin/HEAD → `main`/`master`/…).
82
50
  * Refreshes origin/HEAD first so a repo cloned before the default was set resolves.
@@ -0,0 +1,44 @@
1
+ export declare const TERM_NOT_INSTALLED_ERROR = "The standalone `term` CLI is not installed. npm i -g @phnx-labs/term-cli";
2
+ /** JSON response envelope from `term`, mirroring the old PTY sidecar's shape. */
3
+ export interface TermResponse {
4
+ ok: boolean;
5
+ error?: string;
6
+ [key: string]: any;
7
+ }
8
+ /**
9
+ * Resolve the `term` binary to exec: `$TERM_BIN` first (exact override, used
10
+ * by tests and by an operator pinning a specific install), else an ordinary
11
+ * PATH lookup. Returns null when neither resolves — the caller must fail loud
12
+ * with {@link TERM_NOT_INSTALLED_ERROR} rather than falling back to anything.
13
+ */
14
+ export declare function resolveTermBin(): string | null;
15
+ export interface TermStartOptions {
16
+ rows?: number;
17
+ cols?: number;
18
+ shell?: string;
19
+ cwd?: string;
20
+ }
21
+ /** `term start [-r rows] [-c cols] [-s shell] [-d cwd] --json` → the new session id. */
22
+ export declare function termStart(opts?: TermStartOptions): Promise<TermResponse>;
23
+ /** `term exec <id> <command> --json` — send a command, non-blocking. */
24
+ export declare function termExec(id: string, command: string): Promise<TermResponse>;
25
+ /**
26
+ * `term write <id> <input> --raw --json` — send raw bytes to the session.
27
+ * `--raw` is load-bearing: the caller here always supplies already-literal
28
+ * bytes (e.g. `\x1b[B\r` as real control characters from a JS string), never
29
+ * the `pty write` CLI's `\n`/`\t`/`\e`/`\xHH` textual escape syntax, so `term`
30
+ * must not re-interpret them.
31
+ */
32
+ export declare function termWrite(id: string, input: string): Promise<TermResponse>;
33
+ /** `term screen <id> --json` → `{ screen, exited, cols, rows }`. */
34
+ export declare function termScreen(id: string): Promise<TermResponse>;
35
+ /**
36
+ * `term stop <id>` — end the session and clean up.
37
+ *
38
+ * Unlike every other verb, `stop` has no `--json` mode and prints nothing on
39
+ * success (confirmed against a real built `term` binary — a bare `--json`
40
+ * flag errors `unknown option '--json'`, and success alone leaves stdout
41
+ * empty), so this synthesizes the `{ ok }` envelope from the exit code
42
+ * instead of routing through {@link runTerm}'s stdout-JSON parse.
43
+ */
44
+ export declare function termStop(id: string): Promise<TermResponse>;
@@ -0,0 +1,117 @@
1
+ /**
2
+ * `term` client — thin subprocess wrapper over the standalone `term` CLI
3
+ * (published separately as `@phnx-labs/term-cli`), the PTY engine this repo
4
+ * used to own directly (`agents pty`, removed in PHNX-4091). `term` mirrors the
5
+ * old `agents pty` verbs/flags/JSON shapes 1:1 (`start`, `exec`, `read`,
6
+ * `write`, `screen`, `signal`, `resize`, `list`, `stop`, `server start|stop|
7
+ * status`, hidden `_server`) and owns starting/reusing its own background
8
+ * sidecar itself — this client never manages that process, it only shells out
9
+ * to the CLI and parses one line of JSON per call.
10
+ *
11
+ * Resolution order:
12
+ * 1. `$TERM_BIN` — an explicit override (a full path, or a PATH-resolvable
13
+ * name other than `term`). Sets the exact binary this client execs; the
14
+ * one legitimate use besides pointing at a real install is a test double.
15
+ * 2. `findInPath('term')` — the ordinary PATH lookup (skips this CLI's own
16
+ * shims dir, same as every other native-binary resolution in this repo).
17
+ *
18
+ * Neither resolving is the expected state until `@phnx-labs/term-cli` is
19
+ * published and installed — every call fails loud with
20
+ * {@link TERM_NOT_INSTALLED_ERROR} rather than silently no-op'ing.
21
+ */
22
+ import { execFile } from 'node:child_process';
23
+ import { findInPath } from './agent-spec/agents.js';
24
+ export const TERM_NOT_INSTALLED_ERROR = 'The standalone `term` CLI is not installed. npm i -g @phnx-labs/term-cli';
25
+ /**
26
+ * Resolve the `term` binary to exec: `$TERM_BIN` first (exact override, used
27
+ * by tests and by an operator pinning a specific install), else an ordinary
28
+ * PATH lookup. Returns null when neither resolves — the caller must fail loud
29
+ * with {@link TERM_NOT_INSTALLED_ERROR} rather than falling back to anything.
30
+ */
31
+ export function resolveTermBin() {
32
+ const override = process.env.TERM_BIN;
33
+ if (override && override.trim().length > 0)
34
+ return override.trim();
35
+ return findInPath('term');
36
+ }
37
+ /** Run one `term <args>` invocation and parse the trailing JSON line from stdout. */
38
+ function runTerm(args) {
39
+ return new Promise((resolve, reject) => {
40
+ const bin = resolveTermBin();
41
+ if (!bin) {
42
+ reject(new Error(TERM_NOT_INSTALLED_ERROR));
43
+ return;
44
+ }
45
+ execFile(bin, args, { maxBuffer: 16 * 1024 * 1024, timeout: 30_000 }, (err, stdout, stderr) => {
46
+ const out = stdout.toString().trim();
47
+ if (!out) {
48
+ reject(new Error(`term ${args[0]} produced no output: ${stderr.toString().trim() || (err ? err.message : 'unknown error')}`));
49
+ return;
50
+ }
51
+ // `term` may emit progress on earlier lines; the response is the last line.
52
+ const line = out.split('\n').pop() ?? '';
53
+ try {
54
+ resolve(JSON.parse(line));
55
+ }
56
+ catch {
57
+ reject(new Error(`Invalid JSON from term: ${out.slice(0, 200)}`));
58
+ }
59
+ });
60
+ });
61
+ }
62
+ /** `term start [-r rows] [-c cols] [-s shell] [-d cwd] --json` → the new session id. */
63
+ export function termStart(opts = {}) {
64
+ const args = ['start', '--json'];
65
+ if (opts.rows)
66
+ args.push('-r', String(opts.rows));
67
+ if (opts.cols)
68
+ args.push('-c', String(opts.cols));
69
+ if (opts.shell)
70
+ args.push('-s', opts.shell);
71
+ if (opts.cwd)
72
+ args.push('-d', opts.cwd);
73
+ return runTerm(args);
74
+ }
75
+ /** `term exec <id> <command> --json` — send a command, non-blocking. */
76
+ export function termExec(id, command) {
77
+ return runTerm(['exec', id, command, '--json']);
78
+ }
79
+ /**
80
+ * `term write <id> <input> --raw --json` — send raw bytes to the session.
81
+ * `--raw` is load-bearing: the caller here always supplies already-literal
82
+ * bytes (e.g. `\x1b[B\r` as real control characters from a JS string), never
83
+ * the `pty write` CLI's `\n`/`\t`/`\e`/`\xHH` textual escape syntax, so `term`
84
+ * must not re-interpret them.
85
+ */
86
+ export function termWrite(id, input) {
87
+ return runTerm(['write', id, input, '--raw', '--json']);
88
+ }
89
+ /** `term screen <id> --json` → `{ screen, exited, cols, rows }`. */
90
+ export function termScreen(id) {
91
+ return runTerm(['screen', id, '--json']);
92
+ }
93
+ /**
94
+ * `term stop <id>` — end the session and clean up.
95
+ *
96
+ * Unlike every other verb, `stop` has no `--json` mode and prints nothing on
97
+ * success (confirmed against a real built `term` binary — a bare `--json`
98
+ * flag errors `unknown option '--json'`, and success alone leaves stdout
99
+ * empty), so this synthesizes the `{ ok }` envelope from the exit code
100
+ * instead of routing through {@link runTerm}'s stdout-JSON parse.
101
+ */
102
+ export function termStop(id) {
103
+ return new Promise((resolve, reject) => {
104
+ const bin = resolveTermBin();
105
+ if (!bin) {
106
+ reject(new Error(TERM_NOT_INSTALLED_ERROR));
107
+ return;
108
+ }
109
+ execFile(bin, ['stop', id], { maxBuffer: 16 * 1024 * 1024, timeout: 30_000 }, (err, _stdout, stderr) => {
110
+ if (err) {
111
+ resolve({ ok: false, error: stderr.toString().trim() || err.message });
112
+ return;
113
+ }
114
+ resolve({ ok: true });
115
+ });
116
+ });
117
+ }
@@ -33,8 +33,6 @@
33
33
  * via System Events keystrokes, stealing focus. The resolver refuses
34
34
  * to route here by default (see resolve.ts); it stays behind an
35
35
  * explicit opt-in.
36
- * - pty → the `agents pty write` sidecar path (ptyRequest). Local-only —
37
- * the sidecar is not an engine transport surface.
38
36
  *
39
37
  * Ink-TUI Enter semantics: Claude's Ink TUI swallows an Enter fused to the text,
40
38
  * so the default path delivers the text and the Enter as TWO SEPARATE writes
@@ -45,8 +43,7 @@ import { type HostResolver } from './transport.js';
45
43
  import { type LaunchSpec, type EngineContext } from './types.js';
46
44
  /**
47
45
  * An already-running surface to type into. A superset of the engine's launch
48
- * `Backend` — it adds `pty` (the sidecar), which the engine can't launch but can
49
- * be injected into.
46
+ * `Backend`.
50
47
  */
51
48
  export type InjectTarget = {
52
49
  backend: 'tmux';
@@ -70,9 +67,6 @@ export type InjectTarget = {
70
67
  } | {
71
68
  backend: 'ghostty';
72
69
  window?: string;
73
- } | {
74
- backend: 'pty';
75
- id: string;
76
70
  };
77
71
  export type InjectBackend = InjectTarget['backend'];
78
72
  export interface InjectOptions {
@@ -101,10 +95,9 @@ export interface InjectResult {
101
95
  /**
102
96
  * Delivery is CONFIRMED to have reached the running agent, not merely dispatched.
103
97
  *
104
- * For tmux / iterm / ghostty / pty, `ok` already means delivered: `tmux
98
+ * For tmux / iterm / ghostty, `ok` already means delivered: `tmux
105
99
  * send-keys` errors on a missing pane, `osascript write text` errors on a bad
106
- * session id, and a pty write errors if the sidecar can't reach the fd — so a
107
- * successful transport IS the confirmation. For **vscodium**, `ok` only means the
100
+ * session id — so a successful transport IS the confirmation. For **vscodium**, `ok` only means the
108
101
  * editor CLI accepted the `--open-url` hand-off; whether the swarm-ext extension
109
102
  * actually parsed the verb and typed anything is unknown from the CLI side (the
110
103
  * ext must ack — RUSH follow-up). So vscodium is delivered-but-UNCONFIRMED, and
@@ -117,12 +110,6 @@ export interface InjectResult {
117
110
  specs?: LaunchSpec[];
118
111
  error?: string;
119
112
  }
120
- /**
121
- * Whether a successful transport on this backend CONFIRMS delivery to the agent.
122
- * Everything but vscodium self-confirms (see InjectResult.confirmed); vscodium's
123
- * `--open-url` is fire-and-forget until the swarm-ext extension acks the verb.
124
- */
125
- export declare function backendConfirmsDelivery(backend: InjectBackend): boolean;
126
113
  /**
127
114
  * argv for `tmux send-keys` targeting a pane by id. Starts with `tmux` (like the
128
115
  * engine's `tmuxTabArgv`) so the same transport runs it locally or over SSH. The
@@ -33,15 +33,12 @@
33
33
  * via System Events keystrokes, stealing focus. The resolver refuses
34
34
  * to route here by default (see resolve.ts); it stays behind an
35
35
  * explicit opt-in.
36
- * - pty → the `agents pty write` sidecar path (ptyRequest). Local-only —
37
- * the sidecar is not an engine transport surface.
38
36
  *
39
37
  * Ink-TUI Enter semantics: Claude's Ink TUI swallows an Enter fused to the text,
40
38
  * so the default path delivers the text and the Enter as TWO SEPARATE writes
41
39
  * (swarmify's `sendText(text,false)` then `sendText('\r',false)`). `combined`
42
40
  * opts into one fused write for plain shells / REPLs.
43
41
  */
44
- import { ptyRequest } from '../pty-client.js';
45
42
  import { appleScriptStr } from './quote.js';
46
43
  import { runSpec } from './transport.js';
47
44
  import { itermBackend, ghosttyBackend } from './backends/index.js';
@@ -51,7 +48,7 @@ import { currentContext } from './types.js';
51
48
  * Everything but vscodium self-confirms (see InjectResult.confirmed); vscodium's
52
49
  * `--open-url` is fire-and-forget until the swarm-ext extension acks the verb.
53
50
  */
54
- export function backendConfirmsDelivery(backend) {
51
+ function backendConfirmsDelivery(backend) {
55
52
  return backend !== 'vscodium';
56
53
  }
57
54
  /** Carriage return — what Enter delivers into a raw PTY/tmux byte stream. */
@@ -185,28 +182,6 @@ export function vscodiumInjectUri(scheme, terminalId, text, opts) {
185
182
  export function vscodiumInjectSpec(target, text, opts) {
186
183
  return { argv: [target.cli, '--open-url', vscodiumInjectUri(target.scheme, target.terminalId, text, opts)] };
187
184
  }
188
- // --- pty --------------------------------------------------------------------
189
- async function injectPty(target, text, o) {
190
- if (o.host && o.host !== 'local') {
191
- return { ok: false, confirmed: false, backend: 'pty', writes: 0, error: 'pty injection is local-only (the sidecar is not a remote surface)' };
192
- }
193
- // Same Ink-safe split as tmux: text write, then a separate CR write.
194
- const writes = o.enter && o.combined ? [text + CR] : o.enter ? [text, CR] : [text];
195
- if (o.dryRun)
196
- return { ok: true, confirmed: true, backend: 'pty', writes: writes.length };
197
- try {
198
- for (const input of writes) {
199
- const res = await ptyRequest('write', target.id, { input });
200
- if (!res.ok)
201
- return { ok: false, confirmed: false, backend: 'pty', writes: 0, error: res.error ?? 'pty write failed' };
202
- }
203
- // A successful sidecar write reached the fd — real delivery.
204
- return { ok: true, confirmed: true, backend: 'pty', writes: writes.length };
205
- }
206
- catch (err) {
207
- return { ok: false, confirmed: false, backend: 'pty', writes: 0, error: err instanceof Error ? err.message : String(err) };
208
- }
209
- }
210
185
  // --- public entry -----------------------------------------------------------
211
186
  /**
212
187
  * Deliver `text` (+ Enter) into an existing terminal surface. Resolves the
@@ -216,9 +191,6 @@ async function injectPty(target, text, o) {
216
191
  export async function injectIntoTerminal(target, text, opts = {}) {
217
192
  const enter = opts.enter !== false;
218
193
  const combined = opts.combined === true;
219
- if (target.backend === 'pty') {
220
- return injectPty(target, text, { enter, combined, host: opts.host, dryRun: opts.dryRun });
221
- }
222
194
  // tmux + AppleScript + editor-CLI backends all run through the engine transport.
223
195
  const specs = target.backend === 'tmux'
224
196
  ? tmuxInjectSpecs(target, text, { enter, combined, socket: opts.socket })
@@ -11,7 +11,7 @@
11
11
  * Resolution reads the agent's INHERITED ENV (via session provenance) plus the
12
12
  * IDE's live-terminals registry (off disk) — no cooperation from the agent:
13
13
  *
14
- * tmux > iterm > vscodium > pty
14
+ * tmux > iterm > vscodium
15
15
  *
16
16
  * tmux wins whenever present: a `tmux send-keys -t <pane>` reaches the pane no
17
17
  * matter which host app (iTerm / Ghostty / VS Code) is above it, so it's correct
@@ -25,7 +25,7 @@
25
25
  import type { ActiveSession } from '../session/active.js';
26
26
  import type { InjectTarget } from './inject.js';
27
27
  /** A resolved rail, or an honest refusal. The watchdog acts only on `addressable: true`. */
28
- export type InjectRail = 'tmux' | 'iterm' | 'vscodium' | 'ghostty' | 'pty';
28
+ export type InjectRail = 'tmux' | 'iterm' | 'vscodium' | 'ghostty';
29
29
  export type InjectResolution = {
30
30
  addressable: true;
31
31
  rail: InjectRail;
@@ -43,12 +43,6 @@ export interface ResolveOptions {
43
43
  * a Ghostty session with no tmux resolves to un-addressable instead.
44
44
  */
45
45
  allowGhosttyFocus?: boolean;
46
- /**
47
- * A known `agents pty` sidecar id for this session, if the caller has one. No
48
- * automatic sessionId -> pty mapping exists yet, so pty is only emitted when
49
- * supplied here (the lowest-precedence rail).
50
- */
51
- ptyId?: string;
52
46
  }
53
47
  /**
54
48
  * Human-facing recovery hint for a session the resolver judged un-addressable.
@@ -59,7 +53,7 @@ export declare function addressabilityRecoveryHint(session: ActiveSession, fallb
59
53
  /**
60
54
  * Resolve a target from an already-fetched ActiveSession. Pure — no I/O — so the
61
55
  * precedence logic is unit-testable without the process table. This is where the
62
- * tmux > iterm > vscodium > pty precedence and the Ghostty refusal live.
56
+ * tmux > iterm > vscodium precedence and the Ghostty refusal live.
63
57
  */
64
58
  export declare function resolveInjectTargetForSession(session: ActiveSession, opts?: ResolveOptions): InjectResolution;
65
59
  /**
@@ -33,12 +33,12 @@ export function addressabilityRecoveryHint(session, fallbackId) {
33
33
  if (session.host) {
34
34
  return `Host '${session.host}' has no addressable rail here. ${interactive ? `Enable tmux wrapping with \`${tmuxCmd}\` and re-launch, or ` : ''}use \`${resumeCmd}\` to continue this session.`;
35
35
  }
36
- return `This session has no addressable terminal rail (not tmux, iTerm, an IDE terminal, or a pty sidecar). ${interactive ? `Enable tmux wrapping with \`${tmuxCmd}\` and re-launch, or ` : ''}use \`${resumeCmd}\` to continue this session.`;
36
+ return `This session has no addressable terminal rail (not tmux, iTerm, or an IDE terminal). ${interactive ? `Enable tmux wrapping with \`${tmuxCmd}\` and re-launch, or ` : ''}use \`${resumeCmd}\` to continue this session.`;
37
37
  }
38
38
  /**
39
39
  * Resolve a target from an already-fetched ActiveSession. Pure — no I/O — so the
40
40
  * precedence logic is unit-testable without the process table. This is where the
41
- * tmux > iterm > vscodium > pty precedence and the Ghostty refusal live.
41
+ * tmux > iterm > vscodium precedence and the Ghostty refusal live.
42
42
  */
43
43
  export function resolveInjectTargetForSession(session, opts = {}) {
44
44
  const prov = session.provenance;
@@ -77,11 +77,7 @@ export function resolveInjectTargetForSession(session, opts = {}) {
77
77
  target: { backend: 'vscodium', terminalId: session.sessionId, cli: variant.cli, scheme: variant.scheme },
78
78
  };
79
79
  }
80
- // 4. pty — lowest precedence, only when the caller supplied a sidecar id.
81
- if (opts.ptyId) {
82
- return { addressable: true, rail: 'pty', target: { backend: 'pty', id: opts.ptyId } };
83
- }
84
- // 5. Ghostty — no per-split addressing exists. Refuse by default; the coarse,
80
+ // 4. Ghostty — no per-split addressing exists. Refuse by default; the coarse,
85
81
  // focus-stealing window path is opt-in only.
86
82
  if (session.host === 'ghostty') {
87
83
  if (opts.allowGhosttyFocus) {