@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
package/dist/lib/git.js CHANGED
@@ -269,7 +269,7 @@ export function parseSource(source) {
269
269
  throw new Error(`Invalid source: ${source}. Supported formats: gh:owner/repo, owner/repo, github.com/owner/repo, https://github.com/owner/repo, or local path`);
270
270
  }
271
271
  /** Clone a remote repo or pull updates if it already exists locally. */
272
- export async function cloneOrPull(source, targetDir) {
272
+ async function cloneOrPull(source, targetDir) {
273
273
  const git = simpleGit();
274
274
  if (source.type === 'local') {
275
275
  return { isNew: false, commit: 'local' };
@@ -313,24 +313,6 @@ export async function cloneRepo(source) {
313
313
  isNew: result.isNew,
314
314
  };
315
315
  }
316
- /** Clone a package from a source string into the packages directory. */
317
- export async function clonePackage(source) {
318
- const parsed = parseSource(source);
319
- if (parsed.type === 'local') {
320
- return {
321
- localPath: parsed.url,
322
- commit: 'local',
323
- isNew: false,
324
- };
325
- }
326
- const localPath = getPackageLocalPath(source);
327
- const result = await cloneOrPull(parsed, localPath);
328
- return {
329
- localPath,
330
- commit: result.commit,
331
- isNew: result.isNew,
332
- };
333
- }
334
316
  /** Get the short commit hash (8 chars) of the latest commit in a repo. */
335
317
  export async function getRepoCommit(repoPath) {
336
318
  try {
@@ -407,64 +389,6 @@ export function resolveSnapshotSha(repoRoot) {
407
389
  export function _resetSnapshotShaCacheForTest() {
408
390
  _snapshotShaCache.clear();
409
391
  }
410
- /**
411
- * Get the current GitHub username using gh CLI.
412
- * Returns null if gh is not installed or user is not authenticated.
413
- */
414
- export async function getGitHubUsername() {
415
- try {
416
- const { exec } = await import('child_process');
417
- const { promisify } = await import('util');
418
- const execAsync = promisify(exec);
419
- const { stdout } = await execAsync('gh api user --jq ".login"');
420
- return stdout.trim() || null;
421
- }
422
- catch {
423
- /* gh CLI not installed or not authenticated */
424
- return null;
425
- }
426
- }
427
- const GITHUB_USER_ENV = 'AGENTS_SHARE_GITHUB_USER';
428
- /** Best-effort sync read of `github.user` from git config. */
429
- function readGitConfigUser() {
430
- try {
431
- return execFileSync('git', ['config', '--global', 'github.user'], { stdio: ['ignore', 'pipe', 'ignore'] })
432
- .toString()
433
- .trim() || null;
434
- }
435
- catch {
436
- return null;
437
- }
438
- }
439
- /**
440
- * Resolve the GitHub username synchronously for `agents artifacts share`. Order:
441
- * 1. `AGENTS_SHARE_GITHUB_USER` env override
442
- * 2. `git config --global github.user`
443
- * Falls back to null so callers can decide whether to require auth or proceed
444
- * without a namespace.
445
- */
446
- export function resolveGitHubUsernameSync() {
447
- const env = process.env[GITHUB_USER_ENV]?.trim();
448
- if (env)
449
- return env;
450
- return readGitConfigUser();
451
- }
452
- /**
453
- * Resolve the GitHub username asynchronously. Order:
454
- * 1. `AGENTS_SHARE_GITHUB_USER` env override
455
- * 2. `gh api user --jq ".login"`
456
- * 3. `git config --global github.user`
457
- * Returns null if none succeed.
458
- */
459
- export async function resolveGitHubUsername() {
460
- const env = process.env[GITHUB_USER_ENV]?.trim();
461
- if (env)
462
- return env;
463
- const gh = await getGitHubUsername();
464
- if (gh)
465
- return gh;
466
- return readGitConfigUser();
467
- }
468
392
  /**
469
393
  * Get the remote URL for origin in a git repo.
470
394
  */
@@ -480,16 +404,6 @@ export async function getRemoteUrl(repoPath) {
480
404
  return null;
481
405
  }
482
406
  }
483
- /** The repo's checked-out branch, or 'main' on a detached HEAD / read failure. */
484
- export async function getCurrentBranch(repoPath) {
485
- try {
486
- const status = await simpleGit(repoPath).status();
487
- return status.current || 'main';
488
- }
489
- catch {
490
- return 'main';
491
- }
492
- }
493
407
  /**
494
408
  * Canonical `host/owner/repo` form of a git remote, transport-agnostic, so the
495
409
  * same repo cloned over SSH vs HTTPS compares equal. Strips protocol, any
@@ -570,36 +484,6 @@ export function sameGitRemote(a, b) {
570
484
  return false;
571
485
  return canonicalGitRemote(a) === canonicalGitRemote(b);
572
486
  }
573
- /**
574
- * Set the remote URL for origin in a git repo.
575
- */
576
- export async function setRemoteUrl(repoPath, url) {
577
- const git = simpleGit(repoPath);
578
- const remotes = await git.getRemotes(true);
579
- const hasOrigin = remotes.some(r => r.name === 'origin');
580
- if (hasOrigin) {
581
- await git.remote(['set-url', 'origin', url]);
582
- }
583
- else {
584
- await git.remote(['add', 'origin', url]);
585
- }
586
- }
587
- /**
588
- * Check if a GitHub repo exists.
589
- */
590
- export async function checkGitHubRepoExists(owner, repo) {
591
- try {
592
- const { execFile } = await import('child_process');
593
- const { promisify } = await import('util');
594
- const execFileAsync = promisify(execFile);
595
- await execFileAsync('gh', ['repo', 'view', `${owner}/${repo}`, '--json', 'name']);
596
- return true;
597
- }
598
- catch {
599
- /* repo not found or gh CLI unavailable */
600
- return false;
601
- }
602
- }
603
487
  /**
604
488
  * Commit (if dirty) and push a repo.
605
489
  *
@@ -1136,20 +1020,6 @@ export async function isSystemRepoOrigin(dir) {
1136
1020
  return false;
1137
1021
  }
1138
1022
  }
1139
- /**
1140
- * Check if repo has uncommitted changes (including untracked files).
1141
- */
1142
- export async function hasLocalChanges(dir) {
1143
- try {
1144
- const git = simpleGit(dir);
1145
- const status = await git.status();
1146
- return !status.isClean();
1147
- }
1148
- catch {
1149
- /* not a git repo */
1150
- return false;
1151
- }
1152
- }
1153
1023
  /**
1154
1024
  * Render an absolute path in ~-relative form with forward slashes, matching the
1155
1025
  * way the rest of the CLI prints home-anchored paths (e.g. `~/.agents/.system`).
@@ -1587,79 +1457,12 @@ export async function getTrackedFiles(dir, subdir) {
1587
1457
  return [];
1588
1458
  }
1589
1459
  }
1590
- /**
1591
- * Check if upstream remote is configured.
1592
- */
1593
- export async function hasUpstreamRemote(dir) {
1594
- try {
1595
- const git = simpleGit(dir);
1596
- const remotes = await git.getRemotes(true);
1597
- return remotes.some(r => r.name === 'upstream');
1598
- }
1599
- catch {
1600
- /* not a git repo */
1601
- return false;
1602
- }
1603
- }
1604
- /**
1605
- * Get the upstream remote fetch URL, or null if none configured.
1606
- */
1607
- export async function getUpstreamUrl(dir) {
1608
- try {
1609
- const git = simpleGit(dir);
1610
- const remotes = await git.getRemotes(true);
1611
- const upstream = remotes.find(r => r.name === 'upstream');
1612
- return upstream?.refs?.fetch ?? null;
1613
- }
1614
- catch {
1615
- return null;
1616
- }
1617
- }
1618
- /**
1619
- * Add or update the upstream remote.
1620
- */
1621
- export async function setUpstreamRemote(dir, url) {
1622
- const git = simpleGit(dir);
1623
- const remotes = await git.getRemotes(true);
1624
- const hasUpstream = remotes.some(r => r.name === 'upstream');
1625
- if (hasUpstream) {
1626
- await git.remote(['set-url', 'upstream', url]);
1627
- }
1628
- else {
1629
- await git.remote(['add', 'upstream', url]);
1630
- }
1631
- }
1632
- /**
1633
- * Pull from upstream remote (merge updates from system repo).
1634
- */
1635
- export async function pullFromUpstream(dir) {
1636
- try {
1637
- const git = simpleGit(dir);
1638
- // Check if upstream exists
1639
- const remotes = await git.getRemotes(true);
1640
- const upstream = remotes.find(r => r.name === 'upstream');
1641
- if (!upstream) {
1642
- return { success: false, commit: '', error: 'No upstream remote configured. Run `agents fork` first.' };
1643
- }
1644
- // Fetch and merge from upstream
1645
- await git.fetch('upstream');
1646
- await git.merge(['upstream/main']);
1647
- const log = await git.log({ maxCount: 1 });
1648
- return {
1649
- success: true,
1650
- commit: log.latest?.hash.slice(0, 8) || 'unknown',
1651
- };
1652
- }
1653
- catch (err) {
1654
- return { success: false, commit: '', error: err.message };
1655
- }
1656
- }
1657
1460
  /**
1658
1461
  * Try to auto-pull a git repo if it's clean and has a remote.
1659
1462
  * Uses --ff-only for safety (fails if diverged instead of creating merge commits).
1660
1463
  * Returns silently on success, returns error message on failure.
1661
1464
  */
1662
- export async function tryAutoPull(dir) {
1465
+ async function tryAutoPull(dir) {
1663
1466
  // Must be a git repo
1664
1467
  if (!isGitRepo(dir)) {
1665
1468
  return { pulled: false };
@@ -49,10 +49,6 @@ export declare function renderRollup(input: RollupItem[], json: boolean): string
49
49
  * forever and never posts a run, exactly what `gh pr checks` also ignores.
50
50
  */
51
51
  export declare function isSettled(rollup: RollupItem[], pendingSuites: number): boolean;
52
- /** Eager REST watch: poll to a terminal state, re-anchored to the live head SHA. */
53
- export declare function watchChecks(target: Target, json: boolean, realGh: string): Promise<number>;
54
- /** Lazy one-shot: real gh first; translate to REST only on the exact rate-limit signal. */
55
- export declare function checksOnce(target: Target | null, json: boolean, realGh: string, ghArgs: string[]): Promise<number>;
56
52
  /** Entry point for the `__gh` early branch in index.ts. */
57
53
  export declare function runGhOverload(argv: string[], cwd?: string): Promise<number>;
58
54
  export {};
@@ -168,7 +168,7 @@ export function isSettled(rollup, pendingSuites) {
168
168
  }
169
169
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
170
170
  /** Eager REST watch: poll to a terminal state, re-anchored to the live head SHA. */
171
- export async function watchChecks(target, json, realGh) {
171
+ async function watchChecks(target, json, realGh) {
172
172
  const gh = restExec(realGh);
173
173
  const deadline = Date.now() + 30 * 60_000; // 30-min guard against a hung matrix
174
174
  let last = '';
@@ -201,7 +201,7 @@ export async function watchChecks(target, json, realGh) {
201
201
  }
202
202
  }
203
203
  /** Lazy one-shot: real gh first; translate to REST only on the exact rate-limit signal. */
204
- export async function checksOnce(target, json, realGh, ghArgs) {
204
+ async function checksOnce(target, json, realGh, ghArgs) {
205
205
  // Try real gh, capturing output so we can detect the rate-limit signal.
206
206
  try {
207
207
  const { stdout } = await execFileAsync(realGh, ghArgs, { env: ghChildEnv(), maxBuffer: 16 * 1024 * 1024 });
@@ -0,0 +1,118 @@
1
+ /**
2
+ * `agents projects prs <PROJECT>` — every OPEN pull request across a project's
3
+ * attached repositories, as one machine-readable envelope for AGI Menu.
4
+ *
5
+ * Why this exists: `agents projects status`'s `openPrs` only carries the PRs the
6
+ * fleet's own SESSIONS opened (the session rollup), so a project's board of open
7
+ * PRs — drafts, other people's PRs, anything not tied to a live session — is
8
+ * invisible to it. This reads the truth straight from GitHub.
9
+ *
10
+ * Design constraints (see docs conventions + the contract in
11
+ * `.agents/scratch/contracts-status.json`):
12
+ * - Repos come ONLY from the ProjectDef's own attached slugs
13
+ * ({@link projectRepoSlugs}); `--repo` is refused unless it is one of them.
14
+ * - The list is REST + paginated (`gh api repos/{repo}/pulls?state=open
15
+ * --paginate`), includes drafts, and applies NO author filter — it is the
16
+ * whole open board, not this user's mergeable set. REST is the budget the
17
+ * fleet's GraphQL poll loops do not drain (PHNX-3501).
18
+ * - `checks` / `reviewDecision` are null in the list; `--number N` enriches
19
+ * exactly that one PR against its live head SHA (checks via REST
20
+ * {@link rollupForSha}, reviewDecision via a single lazy `gh pr view`).
21
+ * - A per-repo fetch failure is reported as `repositories[].error` and flips
22
+ * `partial` — it is NEVER relabeled as "zero open PRs".
23
+ */
24
+ import { type GhExec } from './pr-mergeable.js';
25
+ import { type RollupItem } from './rest.js';
26
+ import type { ProjectDef } from '../projects.js';
27
+ /** The author of a PR, as the menu renders it (login + avatar). */
28
+ export interface ProjectPrAuthor {
29
+ login: string;
30
+ avatarUrl: string;
31
+ }
32
+ /** One open PR row. `checks`/`reviewDecision` are null unless the PR was enriched. */
33
+ export interface ProjectPr {
34
+ number: number;
35
+ title: string;
36
+ url: string;
37
+ isDraft: boolean;
38
+ /** Upper-cased GitHub state — always `OPEN` here (only open PRs are listed). */
39
+ state: string;
40
+ updatedAt: string;
41
+ author: ProjectPrAuthor;
42
+ headRefName: string;
43
+ baseRefName: string;
44
+ headSha: string;
45
+ body: string;
46
+ /** Populated only for the `--number` PR: the head-SHA status-check rollup. */
47
+ checks: RollupItem[] | null;
48
+ /** Populated only for the `--number` PR: GitHub's computed review decision. */
49
+ reviewDecision: string | null;
50
+ }
51
+ /** One repository's open PRs, or the error that stopped its fetch. */
52
+ export interface ProjectRepoPrs {
53
+ slug: string;
54
+ pullRequests: ProjectPr[];
55
+ /** Non-null when the fetch failed — the list is then NOT authoritative. */
56
+ error: string | null;
57
+ }
58
+ /** The full `projects prs --json` envelope. */
59
+ export interface ProjectPrsEnvelope {
60
+ project: {
61
+ name: string;
62
+ linearProjectId: string | null;
63
+ };
64
+ repositories: ProjectRepoPrs[];
65
+ /** True when at least one repository fetch failed (its list is incomplete). */
66
+ partial: boolean;
67
+ }
68
+ /** Options for one `projects prs` run. `number` requires `repo`. */
69
+ export interface ProjectPrsOptions {
70
+ /** Restrict to one attached repo (canonicalized, membership-checked). */
71
+ repo?: string;
72
+ /** Lazy detail: enrich exactly this PR's checks + reviewDecision. */
73
+ number?: number;
74
+ }
75
+ /** Build a {@link ProjectPr} from the flattened jq row. checks/reviewDecision start null. */
76
+ export declare function rowToProjectPr(row: Record<string, unknown>): ProjectPr;
77
+ /**
78
+ * Every OPEN PR for one repo, over REST, fully paginated, drafts included, no
79
+ * author filter. `--paginate` follows Link headers; `--jq` streams one flattened
80
+ * object per line so a multi-page result stays parseable.
81
+ */
82
+ export declare function listOpenPrs(repo: string, gh?: GhExec): Promise<ProjectPr[]>;
83
+ /** One PR by number, over REST (`GET repos/{repo}/pulls/{n}`). Throws if it is gone. */
84
+ export declare function fetchOnePr(repo: string, number: number, gh?: GhExec): Promise<ProjectPr>;
85
+ /**
86
+ * GitHub's computed review decision AND the PR's current head oid, from ONE lazy
87
+ * `gh pr view` (GraphQL). reviewDecision is deliberately NOT REST-derived: it is
88
+ * a branch-protection / CODEOWNERS decision REST cannot compute, and
89
+ * approximating it could mislead a merge decision (PHNX-3501 note). `headRefOid`
90
+ * rides the same call so the checks and the review verdict can be anchored to the
91
+ * SAME head — a PR that advanced between the REST read and this call would
92
+ * otherwise pair a stale check rollup with a current review. One call per
93
+ * `--number`, never a poll loop, so it does not drain the shared GraphQL budget.
94
+ */
95
+ export declare function fetchReviewAndHead(repo: string, number: number, gh?: GhExec): Promise<{
96
+ reviewDecision: string | null;
97
+ headRefOid: string | null;
98
+ }>;
99
+ /**
100
+ * Enrich one PR with its checks + reviewDecision, both anchored to the SAME head.
101
+ * `gh pr view` gives the authoritative current head oid; the check rollup is run
102
+ * against THAT (not the possibly-staler REST head SHA), and `headSha` is updated
103
+ * to match, so checks and reviewDecision can never describe two different heads.
104
+ */
105
+ export declare function enrichPr(repo: string, pr: ProjectPr, gh?: GhExec): Promise<ProjectPr>;
106
+ /**
107
+ * Resolve which repositories a run targets, restricted to the project's own
108
+ * attached repos. Slugs are canonicalized (a renamed repo lists nothing under
109
+ * its old name — `phnx-labs/agents-cli` → `phnx-labs/agi-cli`). A `--repo` that
110
+ * is not one of the project's attached repos (raw or canonical) is refused.
111
+ */
112
+ export declare function resolveTargetSlugs(def: ProjectDef, repo: string | undefined, gh: GhExec): Promise<string[]>;
113
+ /**
114
+ * Build the full envelope. `number` (which the command requires alongside
115
+ * `repo`) fetches and enriches exactly that one PR; otherwise every target
116
+ * repo's open PRs are listed with checks/reviewDecision left null.
117
+ */
118
+ export declare function buildProjectPrs(def: ProjectDef, opts?: ProjectPrsOptions, gh?: GhExec): Promise<ProjectPrsEnvelope>;
@@ -0,0 +1,173 @@
1
+ /**
2
+ * `agents projects prs <PROJECT>` — every OPEN pull request across a project's
3
+ * attached repositories, as one machine-readable envelope for AGI Menu.
4
+ *
5
+ * Why this exists: `agents projects status`'s `openPrs` only carries the PRs the
6
+ * fleet's own SESSIONS opened (the session rollup), so a project's board of open
7
+ * PRs — drafts, other people's PRs, anything not tied to a live session — is
8
+ * invisible to it. This reads the truth straight from GitHub.
9
+ *
10
+ * Design constraints (see docs conventions + the contract in
11
+ * `.agents/scratch/contracts-status.json`):
12
+ * - Repos come ONLY from the ProjectDef's own attached slugs
13
+ * ({@link projectRepoSlugs}); `--repo` is refused unless it is one of them.
14
+ * - The list is REST + paginated (`gh api repos/{repo}/pulls?state=open
15
+ * --paginate`), includes drafts, and applies NO author filter — it is the
16
+ * whole open board, not this user's mergeable set. REST is the budget the
17
+ * fleet's GraphQL poll loops do not drain (PHNX-3501).
18
+ * - `checks` / `reviewDecision` are null in the list; `--number N` enriches
19
+ * exactly that one PR against its live head SHA (checks via REST
20
+ * {@link rollupForSha}, reviewDecision via a single lazy `gh pr view`).
21
+ * - A per-repo fetch failure is reported as `repositories[].error` and flips
22
+ * `partial` — it is NEVER relabeled as "zero open PRs".
23
+ */
24
+ import { ghExec, canonicalizeRepo, projectRepoSlugs } from './pr-mergeable.js';
25
+ import { rollupForSha } from './rest.js';
26
+ /** The jq projection that flattens a REST PR object into {@link ProjectPr}'s scalars. */
27
+ const PR_JQ = '{number, title, url: .html_url, isDraft: (.draft // false), ' +
28
+ 'state: (.state // "" | ascii_upcase), updatedAt: (.updated_at // ""), ' +
29
+ 'login: (.user.login // ""), avatarUrl: (.user.avatar_url // ""), ' +
30
+ 'headRefName: (.head.ref // ""), baseRefName: (.base.ref // ""), ' +
31
+ 'headSha: (.head.sha // ""), body: (.body // "")}';
32
+ /** Parse newline-delimited JSON (gh `--jq` streams one object per line/page). */
33
+ function parseNdjson(out) {
34
+ const rows = [];
35
+ for (const line of out.split('\n')) {
36
+ const t = line.trim();
37
+ if (!t)
38
+ continue;
39
+ rows.push(JSON.parse(t));
40
+ }
41
+ return rows;
42
+ }
43
+ /** Build a {@link ProjectPr} from the flattened jq row. checks/reviewDecision start null. */
44
+ export function rowToProjectPr(row) {
45
+ return {
46
+ number: Number(row.number),
47
+ title: String(row.title ?? ''),
48
+ url: String(row.url ?? ''),
49
+ isDraft: Boolean(row.isDraft),
50
+ state: String(row.state ?? ''),
51
+ updatedAt: String(row.updatedAt ?? ''),
52
+ author: { login: String(row.login ?? ''), avatarUrl: String(row.avatarUrl ?? '') },
53
+ headRefName: String(row.headRefName ?? ''),
54
+ baseRefName: String(row.baseRefName ?? ''),
55
+ headSha: String(row.headSha ?? ''),
56
+ body: String(row.body ?? ''),
57
+ checks: null,
58
+ reviewDecision: null,
59
+ };
60
+ }
61
+ /**
62
+ * Every OPEN PR for one repo, over REST, fully paginated, drafts included, no
63
+ * author filter. `--paginate` follows Link headers; `--jq` streams one flattened
64
+ * object per line so a multi-page result stays parseable.
65
+ */
66
+ export async function listOpenPrs(repo, gh = ghExec) {
67
+ const out = await gh([
68
+ 'api',
69
+ `repos/${repo}/pulls?state=open&per_page=100`,
70
+ '--paginate',
71
+ '--jq',
72
+ `.[] | ${PR_JQ}`,
73
+ ]);
74
+ return parseNdjson(out).map(rowToProjectPr);
75
+ }
76
+ /** One PR by number, over REST (`GET repos/{repo}/pulls/{n}`). Throws if it is gone. */
77
+ export async function fetchOnePr(repo, number, gh = ghExec) {
78
+ const out = await gh(['api', `repos/${repo}/pulls/${number}`, '--jq', PR_JQ]);
79
+ const rows = parseNdjson(out);
80
+ if (rows.length === 0)
81
+ throw new Error(`no PR ${repo}#${number}`);
82
+ return rowToProjectPr(rows[0]);
83
+ }
84
+ /**
85
+ * GitHub's computed review decision AND the PR's current head oid, from ONE lazy
86
+ * `gh pr view` (GraphQL). reviewDecision is deliberately NOT REST-derived: it is
87
+ * a branch-protection / CODEOWNERS decision REST cannot compute, and
88
+ * approximating it could mislead a merge decision (PHNX-3501 note). `headRefOid`
89
+ * rides the same call so the checks and the review verdict can be anchored to the
90
+ * SAME head — a PR that advanced between the REST read and this call would
91
+ * otherwise pair a stale check rollup with a current review. One call per
92
+ * `--number`, never a poll loop, so it does not drain the shared GraphQL budget.
93
+ */
94
+ export async function fetchReviewAndHead(repo, number, gh = ghExec) {
95
+ const out = (await gh([
96
+ 'pr', 'view', String(number), '--repo', repo, '--json', 'reviewDecision,headRefOid',
97
+ ])).trim();
98
+ const parsed = out ? JSON.parse(out) : {};
99
+ return {
100
+ reviewDecision: parsed.reviewDecision || null,
101
+ headRefOid: parsed.headRefOid || null,
102
+ };
103
+ }
104
+ /**
105
+ * Enrich one PR with its checks + reviewDecision, both anchored to the SAME head.
106
+ * `gh pr view` gives the authoritative current head oid; the check rollup is run
107
+ * against THAT (not the possibly-staler REST head SHA), and `headSha` is updated
108
+ * to match, so checks and reviewDecision can never describe two different heads.
109
+ */
110
+ export async function enrichPr(repo, pr, gh = ghExec) {
111
+ const { reviewDecision, headRefOid } = await fetchReviewAndHead(repo, pr.number, gh);
112
+ const head = headRefOid || pr.headSha;
113
+ const checks = await rollupForSha(repo, head, gh);
114
+ return { ...pr, headSha: head, checks, reviewDecision };
115
+ }
116
+ /**
117
+ * Resolve which repositories a run targets, restricted to the project's own
118
+ * attached repos. Slugs are canonicalized (a renamed repo lists nothing under
119
+ * its old name — `phnx-labs/agents-cli` → `phnx-labs/agi-cli`). A `--repo` that
120
+ * is not one of the project's attached repos (raw or canonical) is refused.
121
+ */
122
+ export async function resolveTargetSlugs(def, repo, gh) {
123
+ const raw = projectRepoSlugs([def]);
124
+ // Canonicalize CONCURRENTLY — each `gh repo view` can take up to gh's 30s
125
+ // timeout, so a sequential walk of N repos would stack N×30s and blow past a
126
+ // native caller's bounded deadline. Repo count per project is small.
127
+ const canonPairs = await Promise.all(raw.map(async (slug) => [slug, await canonicalizeRepo(slug, gh)]));
128
+ const canon = new Map(canonPairs);
129
+ const canonical = [...new Set(canon.values())];
130
+ if (!repo)
131
+ return canonical;
132
+ const requested = await canonicalizeRepo(repo, gh);
133
+ const attached = raw.includes(repo) ||
134
+ canonical.includes(requested) ||
135
+ [...canon.keys()].some((k) => k === repo);
136
+ if (!attached) {
137
+ const list = raw.length ? raw.join(', ') : '(none)';
138
+ throw new Error(`Repo "${repo}" is not attached to project "${def.name}". Attached repos: ${list}.`);
139
+ }
140
+ return [requested];
141
+ }
142
+ /**
143
+ * Build the full envelope. `number` (which the command requires alongside
144
+ * `repo`) fetches and enriches exactly that one PR; otherwise every target
145
+ * repo's open PRs are listed with checks/reviewDecision left null.
146
+ */
147
+ export async function buildProjectPrs(def, opts = {}, gh = ghExec) {
148
+ const project = { name: def.name, linearProjectId: def.linear?.projectId ?? null };
149
+ const slugs = await resolveTargetSlugs(def, opts.repo, gh);
150
+ // Fetch repos in PARALLEL so a native caller's overall deadline scales with the
151
+ // slowest repo, not the sum — a serial multi-repo walk of 30s gh calls can blow
152
+ // past a bounded caller timeout and lose the whole result. Repo count is small
153
+ // (a project's attached repos), so this is a bounded fan-out, not unbounded.
154
+ const repositories = await Promise.all(slugs.map(async (slug) => {
155
+ try {
156
+ let pullRequests;
157
+ if (opts.number !== undefined) {
158
+ const pr = await fetchOnePr(slug, opts.number, gh);
159
+ pullRequests = [await enrichPr(slug, pr, gh)];
160
+ }
161
+ else {
162
+ pullRequests = await listOpenPrs(slug, gh);
163
+ }
164
+ return { slug, pullRequests, error: null };
165
+ }
166
+ catch (err) {
167
+ // A fetch failure is reported, never relabeled as zero open PRs.
168
+ return { slug, pullRequests: [], error: err instanceof Error ? err.message : String(err) };
169
+ }
170
+ }));
171
+ const partial = repositories.some((r) => r.error !== null);
172
+ return { project, repositories, partial };
173
+ }
@@ -27,7 +27,7 @@ export interface RollupItem extends StatusCheck {
27
27
  link?: string;
28
28
  }
29
29
  /** PR head identity — the SHA every check query must anchor to. */
30
- export interface PrHead {
30
+ interface PrHead {
31
31
  number: number;
32
32
  sha: string;
33
33
  }
@@ -62,3 +62,4 @@ export declare function rollupForSha(repo: string, sha: string, gh?: GhExec): Pr
62
62
  export declare function pendingCheckSuites(repo: string, sha: string, gh?: GhExec): Promise<number>;
63
63
  /** True when gh stderr is the rate-limit outcome the shim should switch to REST on. */
64
64
  export declare function isRateLimitError(stderr: string): boolean;
65
+ export {};
@@ -1,8 +1,9 @@
1
1
  import type { AgentId } from '../types.js';
2
- export interface ResolvedConfigVersion {
2
+ interface ResolvedConfigVersion {
3
3
  /** The version to pin, or null when unresolved / not installed. */
4
4
  version: string | null;
5
5
  /** The version home for that version, or null. */
6
6
  versionHome: string | null;
7
7
  }
8
8
  export declare function resolveConfigVersion(agent: AgentId, cwd: string, optionsVersion?: string): ResolvedConfigVersion;
9
+ export {};
@@ -13,16 +13,16 @@
13
13
  * working until T4 folds connect into `accounts add`.
14
14
  */
15
15
  import type { AgentId } from './types.js';
16
- export type HarnessIdentityKind = 'strong' | 'email' | 'opaque';
16
+ type HarnessIdentityKind = 'strong' | 'email' | 'opaque';
17
17
  /**
18
18
  * Durable worker credential, or `none` when the harness must log in per box.
19
19
  * Codex is both: an API key (portable, bills the API) OR a per-device
20
20
  * ChatGPT-plan device-auth login (the plan seat; never stored in the reserved
21
21
  * store because it is a rotating session).
22
22
  */
23
- export type HarnessWorkerKind = 'setup-token' | 'none' | `api-key:${string}` | `per-device${'' | `:${string}`}`;
24
- export type HarnessWorker = HarnessWorkerKind | HarnessWorkerKind[];
25
- export interface HarnessAuthCapability {
23
+ type HarnessWorkerKind = 'setup-token' | 'none' | `api-key:${string}` | `per-device${'' | `:${string}`}`;
24
+ type HarnessWorker = HarnessWorkerKind | HarnessWorkerKind[];
25
+ interface HarnessAuthCapability {
26
26
  /** argv after the harness binary to start native login, or null when there is no finite login command. */
27
27
  login: string[] | null;
28
28
  /** argv to probe login status, or null when the CLI has no status command. */
@@ -59,3 +59,4 @@ export interface LoginInvocation {
59
59
  hint?: string;
60
60
  }
61
61
  export declare const LOGIN_INVOCATIONS: Partial<Record<AgentId, LoginInvocation>>;
62
+ export {};
@@ -40,7 +40,7 @@ export declare const CONNECTION_TEST_PROMPT = "say alive in one word";
40
40
  */
41
41
  export declare function classifyConnectionOutput(exitCode: number | null, output: string): ConnectionTestResult;
42
42
  /** Options for {@link runHarnessConnectionTest}. */
43
- export interface ConnectionTestOptions {
43
+ interface ConnectionTestOptions {
44
44
  /** Agent-side timeout passed to `agents run --timeout`. Default `60s`. */
45
45
  timeout?: string;
46
46
  /** Hard wall-clock cap (ms) on the child, above the agent timeout. Default 90s. */
@@ -55,3 +55,4 @@ export interface ConnectionTestOptions {
55
55
  * (the request hung).
56
56
  */
57
57
  export declare function runHarnessConnectionTest(name: string, opts?: ConnectionTestOptions): Promise<ConnectionTestResult>;
58
+ export {};