@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
@@ -4,7 +4,7 @@ export interface WorkerExclusion {
4
4
  device: string;
5
5
  reason: 'unreachable' | 'probe timed out' | 'overloaded' | 'wrong-platform' | 'interactive';
6
6
  }
7
- export interface WorkerPickPlan {
7
+ interface WorkerPickPlan {
8
8
  /** The chosen device name. Never the local box unless it is an auto-pool member. */
9
9
  device: string;
10
10
  /** True when the pick IS this machine (the caller should run in place). */
@@ -16,7 +16,7 @@ export interface WorkerPickPlan {
16
16
  }>;
17
17
  excluded: WorkerExclusion[];
18
18
  }
19
- export interface WorkerPickOptions {
19
+ interface WorkerPickOptions {
20
20
  /** Restrict to these platforms. Defaults to POSIX (`linux`, `macos`). */
21
21
  platforms?: string[];
22
22
  /** Override the candidate pool (tests). */
@@ -25,16 +25,6 @@ export interface WorkerPickOptions {
25
25
  /** Injected probe (tests). */
26
26
  probe?: (pool: string[]) => Promise<Map<string, DevicePlacementSignal>>;
27
27
  }
28
- /**
29
- * Platforms a bun/vitest offload can actually run on.
30
- *
31
- * Windows is excluded by policy, not by accident: `AGENTS.md` states Windows is
32
- * not a required PR or ordinary-release platform and `tests.yml` runs it only as
33
- * a `continue-on-error` post-merge smoke. Silently shipping the tree to
34
- * `win-mini` would produce a confusing failure for a platform whose result
35
- * nobody gates on.
36
- */
37
- export declare const POSIX_PLATFORMS: readonly ["linux", "macos"];
38
28
  /**
39
29
  * Resolve the least-loaded eligible worker.
40
30
  *
@@ -46,3 +36,4 @@ export declare const POSIX_PLATFORMS: readonly ["linux", "macos"];
46
36
  export declare function resolveWorkerDevice(opts?: WorkerPickOptions): Promise<WorkerPickPlan>;
47
37
  /** The one no-worker message, naming every candidate and why it was dropped. */
48
38
  export declare function formatNoWorkerError(excluded: WorkerExclusion[], platforms: Set<string>): string;
39
+ export {};
@@ -34,7 +34,7 @@ import { probePoolSignals } from '../teams/placement-probe.js';
34
34
  * `win-mini` would produce a confusing failure for a platform whose result
35
35
  * nobody gates on.
36
36
  */
37
- export const POSIX_PLATFORMS = ['linux', 'macos'];
37
+ const POSIX_PLATFORMS = ['linux', 'macos'];
38
38
  /**
39
39
  * Resolve the least-loaded eligible worker.
40
40
  *
@@ -5,7 +5,7 @@
5
5
  * pre-coloured unified diff (red = removed, green = added, dim = context).
6
6
  * Used by `agents doctor --diff`.
7
7
  */
8
- export interface UnifiedDiffOptions {
8
+ interface UnifiedDiffOptions {
9
9
  /** Number of context lines around each change (default: 3). */
10
10
  context?: number;
11
11
  /** Filename label shown in the patch header for the "expected" side. */
@@ -23,3 +23,4 @@ export declare function unifiedDiff(expected: string, actual: string, options?:
23
23
  * a constant prefix so it nests cleanly under a header.
24
24
  */
25
25
  export declare function colorizeUnifiedDiff(patch: string, indent?: string): string;
26
+ export {};
@@ -120,7 +120,7 @@ export declare function isCheckedOutSymlink(filePath: string): boolean;
120
120
  * when the mirror faithfully matches source.
121
121
  */
122
122
  export declare function describePluginDrift(central: DiscoveredPlugin, mirrorDir: string): string | null;
123
- export interface DiffOptions {
123
+ interface DiffOptions {
124
124
  cwd?: string;
125
125
  /** Restrict to specific kinds; undefined = all. */
126
126
  kinds?: DoctorKind[];
@@ -134,3 +134,4 @@ export interface DiffOptions {
134
134
  }
135
135
  export declare function diffVersionResources(agent: AgentId, version: string, options?: DiffOptions): VersionResourceReport;
136
136
  export declare const DOCTOR_ALL_KINDS: DoctorKind[];
137
+ export {};
@@ -19,7 +19,7 @@
19
19
  */
20
20
  import { type VersionHealResult } from './heal.js';
21
21
  import { type UnifiedSyncStatus } from './sync-status.js';
22
- export interface DriftSyncOptions {
22
+ interface DriftSyncOptions {
23
23
  cwd?: string;
24
24
  /** Reconcile everything detected with no prompts — the "kick it" path, also the
25
25
  * non-TTY / menu-bar-launched-with-flag behavior. Pulls `.system` if behind. */
@@ -29,7 +29,7 @@ export interface DriftSyncOptions {
29
29
  /** Skip the drift summary — set by callers that already printed their own. */
30
30
  quiet?: boolean;
31
31
  }
32
- export interface DriftSyncResult {
32
+ interface DriftSyncResult {
33
33
  systemBehindBefore: number;
34
34
  systemPulled: boolean;
35
35
  healed: VersionHealResult[];
@@ -43,3 +43,4 @@ export interface DriftSyncResult {
43
43
  * callers (menu-bar, doctor) can report without re-scanning.
44
44
  */
45
45
  export declare function promptDriftSync(opts?: DriftSyncOptions): Promise<DriftSyncResult>;
46
+ export {};
@@ -8,7 +8,7 @@
8
8
  * to an exit code. Neither reimplements the diagnostic — both call `computeDrift`.
9
9
  */
10
10
  import type { AgentId } from './types.js';
11
- import { type VersionResourceReport, type SourceLayerBehind } from './doctor-diff.js';
11
+ import { type SourceLayerBehind } from './doctor-diff.js';
12
12
  export interface SyncStatusRow {
13
13
  agent: AgentId;
14
14
  version: string;
@@ -32,7 +32,6 @@ export interface OrphanRow {
32
32
  skills: number;
33
33
  hooks: number;
34
34
  }
35
- export declare function divergenceLines(report: VersionResourceReport): string[];
36
35
  export declare function checkSyncStatus(cwd: string): SyncStatusRow[];
37
36
  export declare function countOrphans(): OrphanRow[];
38
37
  /**
@@ -43,7 +42,7 @@ export declare function countOrphans(): OrphanRow[];
43
42
  * only the behind layers. Canonical home for both `agents doctor` and `agents doctor --check`.
44
43
  */
45
44
  export declare function computeSourceBehind(): SourceLayerBehind[];
46
- export interface DriftSummary {
45
+ interface DriftSummary {
47
46
  syncRows: SyncStatusRow[];
48
47
  orphanRows: OrphanRow[];
49
48
  /** Versions whose sources changed since last sync. */
@@ -75,3 +74,4 @@ export interface DriftSummary {
75
74
  * maps to an exit code; the readout `agents doctor` renders in full.
76
75
  */
77
76
  export declare function computeDrift(cwd: string): DriftSummary;
77
+ export {};
package/dist/lib/drift.js CHANGED
@@ -12,7 +12,7 @@ import { getUserAgentsDir, getSystemAgentsDir, getEnabledExtraRepos } from './st
12
12
  // invalid manifest, or the bundled skills/commands missing from the mirror —
13
13
  // the system-repo plugin content that matters most). Other kinds collapse to
14
14
  // compact counts so the readout stays scannable.
15
- export function divergenceLines(report) {
15
+ function divergenceLines(report) {
16
16
  const lines = [];
17
17
  for (const p of report.kinds.plugins) {
18
18
  if (p.status === 'missing')
@@ -3,20 +3,14 @@
3
3
  * event reader. One vocabulary maps onto existing filters (includeActivity,
4
4
  * eventTypes, level) so the engine stays single-path.
5
5
  */
6
- import type { EventType } from './feed/events.js';
7
6
  import type { UnifiedQuery } from './event-stream.js';
8
7
  export declare const EVENT_FAMILIES: readonly ["ops", "activity", "commands", "runs", "security"];
9
8
  export type EventFamily = (typeof EVENT_FAMILIES)[number];
10
- export declare function isEventFamily(value: string): value is EventFamily;
11
9
  /**
12
10
  * Parse a comma-separated family list. Throws on unknown names or empty list
13
11
  * after split (same discipline as sessions role lists).
14
12
  */
15
13
  export declare function parseFamilyList(raw: string, flagName: string): EventFamily[];
16
- /** Command-churn event kinds. */
17
- export declare const COMMAND_EVENT_TYPES: readonly EventType[];
18
- /** Run-dispatch outcome kinds (replaces the separate audit/log.jsonl product). */
19
- export declare const RUN_EVENT_TYPES: readonly EventType[];
20
14
  /**
21
15
  * Fold family include/exclude into a UnifiedQuery.
22
16
  * Precedence: family narrows sources/types; field filters (module, event, …)
@@ -11,7 +11,7 @@ export const EVENT_FAMILIES = [
11
11
  'security',
12
12
  ];
13
13
  const FAMILY_SET = new Set(EVENT_FAMILIES);
14
- export function isEventFamily(value) {
14
+ function isEventFamily(value) {
15
15
  return FAMILY_SET.has(value);
16
16
  }
17
17
  /**
@@ -34,9 +34,9 @@ export function parseFamilyList(raw, flagName) {
34
34
  return out;
35
35
  }
36
36
  /** Command-churn event kinds. */
37
- export const COMMAND_EVENT_TYPES = ['command.start', 'command.end'];
37
+ const COMMAND_EVENT_TYPES = ['command.start', 'command.end'];
38
38
  /** Run-dispatch outcome kinds (replaces the separate audit/log.jsonl product). */
39
- export const RUN_EVENT_TYPES = ['run.dispatched', 'run.launch', 'agent.run.end'];
39
+ const RUN_EVENT_TYPES = ['run.dispatched', 'run.launch', 'agent.run.end'];
40
40
  /**
41
41
  * Fold family include/exclude into a UnifiedQuery.
42
42
  * Precedence: family narrows sources/types; field filters (module, event, …)
@@ -1,5 +1,5 @@
1
1
  import { type ActorKind } from './actor.js';
2
- export interface EventProvenance {
2
+ interface EventProvenance {
3
3
  osUser: string;
4
4
  transport: 'local' | 'ssh';
5
5
  sshClientIp?: string;
@@ -10,6 +10,8 @@ export interface EventProvenance {
10
10
  agent?: string;
11
11
  launchId?: string;
12
12
  parentSessionId?: string;
13
+ parentLaunchId?: string;
14
+ originTerminalId?: string;
13
15
  }
14
16
  /**
15
17
  * Stamp the shared identity floor used by both operational and activity events.
@@ -17,3 +19,4 @@ export interface EventProvenance {
17
19
  */
18
20
  export declare function stampProvenance(env?: NodeJS.ProcessEnv): EventProvenance;
19
21
  export declare function resetEventProvenanceForTest(): void;
22
+ export {};
@@ -40,6 +40,10 @@ export function stampProvenance(env = process.env) {
40
40
  provenance.launchId = env.AGENT_LAUNCH_ID;
41
41
  if (env.AGENTS_PARENT_SESSION_ID)
42
42
  provenance.parentSessionId = env.AGENTS_PARENT_SESSION_ID;
43
+ if (env.AGENTS_PARENT_LAUNCH_ID)
44
+ provenance.parentLaunchId = env.AGENTS_PARENT_LAUNCH_ID;
45
+ if (env.AGENTS_ORIGIN_TERMINAL_ID)
46
+ provenance.originTerminalId = env.AGENTS_ORIGIN_TERMINAL_ID;
43
47
  return provenance;
44
48
  }
45
49
  export function resetEventProvenanceForTest() {
@@ -1,9 +1,9 @@
1
- export interface IngestReject {
1
+ interface IngestReject {
2
2
  /** 1-based index of the offending line within the batch. */
3
3
  line: number;
4
4
  reason: string;
5
5
  }
6
- export interface IngestResult {
6
+ interface IngestResult {
7
7
  written: number;
8
8
  rejected: IngestReject[];
9
9
  /** Per-store counts, so a caller/test can assert routing without reading files. */
@@ -12,7 +12,7 @@ export interface IngestResult {
12
12
  activity: number;
13
13
  };
14
14
  }
15
- export interface IngestOptions {
15
+ interface IngestOptions {
16
16
  /**
17
17
  * Producer name, stamped as `module` on operational records so
18
18
  * `agents events --module <source>` filters to this producer. Required: an
@@ -44,3 +44,4 @@ export declare function routeFor(event: string, sessionId: unknown): 'activity'
44
44
  * events, and the caller still learns exactly which line failed and why.
45
45
  */
46
46
  export declare function ingestBatch(input: string, opts: IngestOptions): IngestResult;
47
+ export {};
@@ -3,8 +3,8 @@ import { isSymlinkAdoptedHarness } from './installations/shims.js';
3
3
  import type { AgentId, DeviceAccountSlot, Meta } from './types.js';
4
4
  export { isAccountSlotDir } from './agents.js';
5
5
  export { isSymlinkAdoptedHarness };
6
- export type SpawnHomeSource = 'slot' | 'legacy-home' | 'provisioned';
7
- export interface NativeSpawnHome {
6
+ type SpawnHomeSource = 'slot' | 'legacy-home' | 'provisioned';
7
+ interface NativeSpawnHome {
8
8
  execHome: string;
9
9
  source: SpawnHomeSource;
10
10
  slot?: DeviceAccountSlot;
@@ -32,8 +32,6 @@ export declare function durableSlotEnv(agent: AgentId, account: {
32
32
  export declare function missingSlotHint(agent: AgentId, name: string): string;
33
33
  export declare function symlinkAdoptedAccountError(agent: AgentId, name: string, defaultName: string | undefined): string;
34
34
  export declare function adoptedSymlinkMismatchError(agent: AgentId, name: string, execHome: string): string;
35
- /** The adopted `~/.<config>` symlink's resolved target, or null when missing / not a symlink. */
36
- export declare function adoptedConfigTarget(agent: AgentId): string | null;
37
35
  export declare function adoptedConfigPointsAtHome(agent: AgentId, home: string): boolean;
38
36
  /**
39
37
  * For a symlink-adopted harness, point `~/.<config>` at this account's slot
@@ -80,7 +80,7 @@ export function adoptedSymlinkMismatchError(agent, name, execHome) {
80
80
  + `Switch with: agents accounts default ${agent} ${name}`;
81
81
  }
82
82
  /** The adopted `~/.<config>` symlink's resolved target, or null when missing / not a symlink. */
83
- export function adoptedConfigTarget(agent) {
83
+ function adoptedConfigTarget(agent) {
84
84
  const configPath = getAgentConfigPath(agent);
85
85
  try {
86
86
  const stat = fs.lstatSync(configPath);
@@ -25,9 +25,7 @@
25
25
  * is reported in the returned {@link BoundedExecResult} so a caller on a tick
26
26
  * path can branch on it instead of wrapping every call in try/catch.
27
27
  */
28
- /** Grace between SIGTERM and SIGKILL for a child that overran its deadline. */
29
- export declare const KILL_GRACE_MS = 250;
30
- export interface ExecFileBoundedOptions {
28
+ interface ExecFileBoundedOptions {
31
29
  /** Hard wall-clock cap. On expiry the child's process group is SIGTERMed, then SIGKILLed after {@link KILL_GRACE_MS}. Required — an unbounded tick-path spawn is the bug this helper exists to prevent. */
32
30
  timeoutMs: number;
33
31
  /** Working directory for the child. */
@@ -37,7 +35,7 @@ export interface ExecFileBoundedOptions {
37
35
  /** Optional stdin to write to the child. */
38
36
  input?: string;
39
37
  }
40
- export interface BoundedExecResult {
38
+ interface BoundedExecResult {
41
39
  stdout: string;
42
40
  stderr: string;
43
41
  /** Exit code, or null when the process was killed by a signal (including our timeout kill) or never spawned. */
@@ -50,3 +48,4 @@ export interface BoundedExecResult {
50
48
  * timeout. Resolves (never rejects) with the captured output and outcome.
51
49
  */
52
50
  export declare function execFileBounded(file: string, args: string[], opts: ExecFileBoundedOptions): Promise<BoundedExecResult>;
51
+ export {};
@@ -27,7 +27,7 @@
27
27
  */
28
28
  import { spawn } from 'child_process';
29
29
  /** Grace between SIGTERM and SIGKILL for a child that overran its deadline. */
30
- export const KILL_GRACE_MS = 250;
30
+ const KILL_GRACE_MS = 250;
31
31
  /**
32
32
  * Run `file args` with a hard deadline, killing the whole process group on
33
33
  * timeout. Resolves (never rejects) with the captured output and outcome.
@@ -337,7 +337,7 @@ export declare function ensureVendorHomeDir(agent: AgentId, versionHome: string)
337
337
  * with AGENTS[agent].capabilities.modes — resolveMode() routes a request to a
338
338
  * supported mode (or throws), then buildExecCommand looks up the flags here.
339
339
  */
340
- export interface AgentCommandTemplate {
340
+ interface AgentCommandTemplate {
341
341
  base: string[];
342
342
  promptFlag: 'positional' | string;
343
343
  modeFlags: Partial<Record<Mode, string[]>>;
@@ -533,7 +533,7 @@ export interface TmuxWrapContext {
533
533
  * "spawn bare" — it is a launch that should not happen, because a bare remote
534
534
  * spawn looks fine right up until the link blinks and the agent dies with it.
535
535
  */
536
- export type TmuxWrapDecision =
536
+ type TmuxWrapDecision =
537
537
  /** Run the agent in a detached tmux session and attach this TTY. */
538
538
  {
539
539
  kind: 'wrap';
@@ -606,7 +606,7 @@ export declare function formatPaneTail(raw: string, maxLines?: number): string;
606
606
  * unbuffered.
607
607
  */
608
608
  /** Inputs the pre-launch `run.launch` payload is built from. */
609
- export interface RunLaunchInput {
609
+ interface RunLaunchInput {
610
610
  agent: AgentId;
611
611
  harnessName?: string;
612
612
  /** The version being launched, or undefined when none could be resolved. */
@@ -662,7 +662,7 @@ export declare function detectOutOfCredits(text: string): boolean;
662
662
  * clock), then a clock-less billing exhaustion, then a clean success clears any
663
663
  * stale marker; anything else leaves the marker untouched.
664
664
  */
665
- export type ClaudeRefusalAction = {
665
+ type ClaudeRefusalAction = {
666
666
  action: 'note_session';
667
667
  resetsAt: Date;
668
668
  } | {
@@ -712,19 +712,6 @@ export declare function parseCodexUsageLimitReset(text: string, nowMs?: number):
712
712
  * cascades via detectRateLimit) rather than persisting an unexpirable marker.
713
713
  */
714
714
  export declare function classifyCodexRunRefusal(output: string, exitCode: number, nowMs?: number): ClaudeRefusalAction;
715
- /**
716
- * Patterns that indicate an authentication failure — the agent is logged out,
717
- * its token was revoked, or the session expired. These are the user-visible
718
- * strings a logged-out agent surfaces (observed across the routine-run corpus).
719
- * Unlike a rate limit, an auth failure is NOT self-healing by failover — every
720
- * chain entry on the same account fails identically — so it is classified
721
- * separately and never triggers a fallback attempt.
722
- *
723
- * The bare `401` is deliberately paired with an auth keyword: a plain "401" can
724
- * appear in legitimate output (an HTTP-status table, a log line), so it only
725
- * counts when it co-occurs with OAuth/authentication/credentials/Unauthorized.
726
- */
727
- export declare const AUTH_FAILURE_PATTERNS: RegExp[];
728
715
  /**
729
716
  * Return true if the text contains any known authentication-failure indicator.
730
717
  * Agent-agnostic: matches the user-visible error string wherever it surfaces
@@ -782,7 +769,7 @@ export interface FallbackEntry {
782
769
  envOverride?: Record<string, string>;
783
770
  }
784
771
  /** ExecOptions extended with a fallback chain for rate-limit cascading. */
785
- export interface FallbackOptions extends ExecOptions {
772
+ interface FallbackOptions extends ExecOptions {
786
773
  /** Ordered list of agents to try if the primary (options.agent) hits a rate limit. */
787
774
  fallback: FallbackEntry[];
788
775
  /** Fallback requires a prompt -- chain handoff doesn't apply to interactive sessions. */
@@ -825,3 +812,4 @@ export declare function buildFallbackPrompt(prevAgent: AgentId, prevSessionId: s
825
812
  * instead of an opaque "all agents failed" message.
826
813
  */
827
814
  export declare function runWithFallback(options: FallbackOptions): Promise<number>;
815
+ export {};
package/dist/lib/exec.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { captureLaunchBinding, recordCompletedLaunch } from './session/hook-sessions.js';
1
2
  /**
2
3
  * Agent execution -- command building, process spawning, and rate-limit fallback.
3
4
  *
@@ -17,6 +18,7 @@ import { isTierToken, resolveTier } from './model-tiers.js';
17
18
  import { emit, createTimer, redactPrompt, redactArgs } from './feed/events.js';
18
19
  import { sanitizeProcessEnv } from './secrets-client.js';
19
20
  import { resolveActor, actorEnv } from './actor.js';
21
+ import { launchIdentityEnv, LAUNCH_IDENTITY_KEYS } from './launch-identity.js';
20
22
  import { expandLocalHome } from './project-root.js';
21
23
  import { getShimsDir, getHistoryDir, getUserAgentsDir, getRuntimeStateDir } from './state.js';
22
24
  import { readCodexConfiguredModel } from './installations/shims.js';
@@ -378,6 +380,14 @@ export function buildExecEnv(options) {
378
380
  else {
379
381
  stripForeignConfigDir(result);
380
382
  }
383
+ // A new harness must not inherit its spawner's own session/mailbox or editor
384
+ // ownership. Keep those relationships as lineage, including across SSH.
385
+ delete result.AGENT_SESSION_ID;
386
+ delete result.AGENTS_SESSION_ID;
387
+ delete result.AGENTS_MAILBOX_DIR;
388
+ delete result.AGENT_TERMINAL_ID;
389
+ const launchIdentity = launchIdentityEnv();
390
+ Object.assign(result, launchIdentity);
381
391
  // Point the agent at its own mailbox so the PreToolUse `mailbox-inject` hook
382
392
  // knows which box to drain and inject mid-run. Keyed by the session id — the
383
393
  // same id the writer resolves via mailboxIdForActiveSession(). A loop run
@@ -394,9 +404,9 @@ export function buildExecEnv(options) {
394
404
  // (events.ts::resolveProvenance) reads AGENTS_PARENT_SESSION_ID and stamps it on
395
405
  // every event the child emits. `options.sessionId` is the CHILD's id, so read the
396
406
  // spawner from the live env; guard a same-session resume from naming itself parent.
397
- // Local-spawn scope here; forwarding it across the `--device` SSH hop is Phase 4.
407
+ // An SSH continuation has no runtime marker; keep its forwarded parent edge.
398
408
  delete result.AGENTS_PARENT_SESSION_ID;
399
- const spawnerSessionId = process.env.AGENTS_SESSION_ID || process.env.AGENT_SESSION_ID;
409
+ const spawnerSessionId = launchIdentity.AGENTS_PARENT_SESSION_ID;
400
410
  if (spawnerSessionId && spawnerSessionId !== options.sessionId) {
401
411
  result.AGENTS_PARENT_SESSION_ID = spawnerSessionId;
402
412
  }
@@ -1210,7 +1220,7 @@ async function execShimPassthroughLeased(agent, rawArgs, cwd, pinnedVersion) {
1210
1220
  actor: resolveActor().id,
1211
1221
  initiatedBy: resolveActor().kind,
1212
1222
  launchId,
1213
- terminalId: process.env.AGENT_TERMINAL_ID,
1223
+ terminalId: launchIdentityEnv().AGENT_TERMINAL_ID,
1214
1224
  startedAtMs: Date.now(),
1215
1225
  });
1216
1226
  // Durable sessionId -> actor record (RUSH-2019) so the scanner can attribute
@@ -1347,6 +1357,7 @@ export function isHarnessKnownSessionId(agent, sessionId, resume) {
1347
1357
  */
1348
1358
  export function buildTmuxAgentCommand(executable, args, env, opts = {}) {
1349
1359
  const agentCmd = [executable, ...args].map(shellQuote).join(' ');
1360
+ const absentIdentity = LAUNCH_IDENTITY_KEYS.filter(key => env[key] === undefined);
1350
1361
  // envFile: source the values instead of inlining them, so no VALUE ever lands
1351
1362
  // in the pane's argv. `exec env K=V …` put every resolved secret into the
1352
1363
  // process table, readable by any process of this user — on one fleet box six
@@ -1361,13 +1372,13 @@ export function buildTmuxAgentCommand(executable, args, env, opts = {}) {
1361
1372
  // strands the plaintext env (incl. the secrets-store master passphrase) on
1362
1373
  // disk on any source failure, worse than the argv leak this replaces
1363
1374
  // (RUSH-2100). Capture the source rc, unlink, then honor it.
1364
- return `set -a; . ${f}; __agents_rc=$?; set +a; rm -f ${f}; [ "$__agents_rc" -eq 0 ] || exit 1; exec ${agentCmd}`;
1375
+ return `${absentIdentity.length ? `unset ${absentIdentity.join(' ')}; ` : ''}set -a; . ${f}; __agents_rc=$?; set +a; rm -f ${f}; [ "$__agents_rc" -eq 0 ] || exit 1; exec ${agentCmd}`;
1365
1376
  }
1366
1377
  const envPrefix = Object.entries(env)
1367
1378
  .filter(([k, v]) => v !== undefined && EXEC_ENV_KEY_PATTERN.test(k))
1368
1379
  .map(([k, v]) => `${k}=${opts.redactEnvValues ? '<redacted>' : shellQuote(String(v))}`)
1369
1380
  .join(' ');
1370
- return `exec env ${envPrefix} ${agentCmd}`;
1381
+ return `exec env ${absentIdentity.map(key => `-u ${key}`).join(' ')} ${envPrefix} ${agentCmd}`;
1371
1382
  }
1372
1383
  /**
1373
1384
  * Serialize the pane env to a shell-sourceable file, created 0600 and exclusively
@@ -1493,9 +1504,14 @@ async function runInTmux(options, executable, args) {
1493
1504
  * "the session went away underneath us", so an attach that skips this cannot
1494
1505
  * do better than assume success — which is exactly the defect EXEC-23b fixes.
1495
1506
  */
1507
+ let paneLaunchBinding;
1508
+ const bindCompletedPane = () => {
1509
+ recordCompletedLaunch(paneLaunchBinding);
1510
+ };
1496
1511
  const resolveAfterAttach = async (pane) => {
1497
1512
  const after = pane ? await paneExitStatus(pane, socket) : { found: false, dead: false, status: undefined };
1498
1513
  if (after.dead) {
1514
+ bindCompletedPane();
1499
1515
  // Positive proof of a genuinely completed pane (paneExitStatus confirmed
1500
1516
  // dead) — capture its scrollback as refusal evidence for the caller
1501
1517
  // (classifyClaudeRunRefusal etc.) BEFORE tearing the session down.
@@ -1633,10 +1649,11 @@ async function runInTmux(options, executable, args) {
1633
1649
  // pid) reconciles by launchId. This pane's pid usually IS the agent pid,
1634
1650
  // but the launchId join is robust even when it isn't.
1635
1651
  launchId: options.env?.AGENT_LAUNCH_ID,
1636
- terminalId: process.env.AGENT_TERMINAL_ID,
1652
+ terminalId: launchIdentityEnv().AGENT_TERMINAL_ID,
1637
1653
  tmuxPane: pane,
1638
1654
  startedAtMs: Date.now(),
1639
1655
  });
1656
+ paneLaunchBinding = captureLaunchBinding(panePid, options.env?.AGENT_LAUNCH_ID ?? '');
1640
1657
  if (options.sessionId) {
1641
1658
  writeSessionActorRecord({
1642
1659
  sessionId: options.sessionId,
@@ -1653,6 +1670,7 @@ async function runInTmux(options, executable, args) {
1653
1670
  // already-dead pane — surface its output + status directly and tear down.
1654
1671
  const before = pane ? await paneExitStatus(pane, socket) : { found: false, dead: false, status: undefined };
1655
1672
  if (before.dead) {
1673
+ bindCompletedPane();
1656
1674
  // Positive proof of a genuinely completed pane — capture scrollback as
1657
1675
  // refusal evidence before tearing the session down (see the matching
1658
1676
  // comment in resolveAfterAttach).
@@ -2071,10 +2089,11 @@ async function spawnAgentLeased(options) {
2071
2089
  actor: resolveActor().id,
2072
2090
  initiatedBy: resolveActor().kind,
2073
2091
  launchId,
2074
- terminalId: process.env.AGENT_TERMINAL_ID,
2092
+ terminalId: launchIdentityEnv().AGENT_TERMINAL_ID,
2075
2093
  tmuxPane: process.env.TMUX_PANE,
2076
2094
  startedAtMs: Date.now(),
2077
2095
  });
2096
+ const launchBinding = captureLaunchBinding(child.pid, launchId);
2078
2097
  if (options.sessionId) {
2079
2098
  writeSessionActorRecord({
2080
2099
  sessionId: options.sessionId,
@@ -2146,6 +2165,7 @@ async function spawnAgentLeased(options) {
2146
2165
  reject(err);
2147
2166
  });
2148
2167
  child.on('close', (code) => {
2168
+ recordCompletedLaunch(launchBinding);
2149
2169
  if (timeoutTimer)
2150
2170
  clearTimeout(timeoutTimer);
2151
2171
  // Clear the budget-kill SIGKILL escalation timer (mirror the --timeout
@@ -2393,7 +2413,7 @@ export function classifyCodexRunRefusal(output, exitCode, nowMs = Date.now()) {
2393
2413
  * appear in legitimate output (an HTTP-status table, a log line), so it only
2394
2414
  * counts when it co-occurs with OAuth/authentication/credentials/Unauthorized.
2395
2415
  */
2396
- export const AUTH_FAILURE_PATTERNS = [
2416
+ const AUTH_FAILURE_PATTERNS = [
2397
2417
  /OAuth (?:access token has been revoked|session expired)/i,
2398
2418
  /(?:Please run|run) \/login/i,
2399
2419
  /Please run 'agent login' first/i,
@@ -62,7 +62,7 @@ export interface FactorySnapshot {
62
62
  };
63
63
  config: FactoryConfig;
64
64
  }
65
- export interface SnapshotDependencies {
65
+ interface SnapshotDependencies {
66
66
  home: string;
67
67
  now: () => Date;
68
68
  activeSessions: () => Promise<ActiveSession[]>;
@@ -74,5 +74,5 @@ export declare function readFactoryConfig(home: string): FactoryConfig;
74
74
  export declare function queueCounts(todoPayload: unknown, openPayload: unknown): FactorySnapshot['queues'][string];
75
75
  export declare function parsePullRequests(repo: string, payload: unknown): FactorySnapshot['prs'];
76
76
  export declare function parseDevices(payload: unknown, cached?: ReturnType<typeof readStatsCache>): FactorySnapshot['devices'];
77
- export declare function readRecentRuns(home: string, limit?: number): FactorySnapshot['recentRuns'];
78
77
  export declare function buildFactorySnapshot(overrides?: Partial<SnapshotDependencies>): Promise<FactorySnapshot>;
78
+ export {};
@@ -138,7 +138,7 @@ export function parseDevices(payload, cached = {}) {
138
138
  return { name, load, idle: row.idle === true || (load !== null && load < 20) };
139
139
  }).filter((row) => row.name.length > 0);
140
140
  }
141
- export function readRecentRuns(home, limit = 3) {
141
+ function readRecentRuns(home, limit = 3) {
142
142
  const root = path.join(home, '.agents', '.history', 'runs');
143
143
  if (!fs.existsSync(root))
144
144
  return [];
@@ -1,9 +1,5 @@
1
1
  import { type ActivityEvent } from './activity.js';
2
- /** How often the stream falls back to a full directory stat sweep. */
3
- export declare const ACTIVITY_SWEEP_MS = 5000;
4
- /** Bytes behind the cursor re-verified before appended bytes are trusted. */
5
- export declare const ACTIVITY_ANCHOR_BYTES = 64;
6
- export interface ActivityStreamOptions {
2
+ interface ActivityStreamOptions {
7
3
  /** Override the activity dir (tests). */
8
4
  root?: string;
9
5
  /**
@@ -58,3 +54,4 @@ export declare class ActivityStream {
58
54
  private readRange;
59
55
  private armWatcher;
60
56
  }
57
+ export {};
@@ -22,9 +22,9 @@ import * as path from 'node:path';
22
22
  import { getActivityDir } from '../state.js';
23
23
  import { ACTIVITY_TAIL_BYTES, parseActivityLine } from './activity.js';
24
24
  /** How often the stream falls back to a full directory stat sweep. */
25
- export const ACTIVITY_SWEEP_MS = 5_000;
25
+ const ACTIVITY_SWEEP_MS = 5_000;
26
26
  /** Bytes behind the cursor re-verified before appended bytes are trusted. */
27
- export const ACTIVITY_ANCHOR_BYTES = 64;
27
+ const ACTIVITY_ANCHOR_BYTES = 64;
28
28
  const NEWLINE = 0x0a;
29
29
  const EMPTY = Buffer.alloc(0);
30
30
  /** Could this file have changed since its cursor last looked? */
@@ -56,6 +56,15 @@ export class ActivityStream {
56
56
  this.maxBytesPerRead = options.maxBytesPerRead ?? ACTIVITY_TAIL_BYTES;
57
57
  this.sweepMs = options.sweepMs ?? ACTIVITY_SWEEP_MS;
58
58
  this.watchRequested = options.watch ?? true;
59
+ // A log directory that does not exist yet (nothing has logged activity
60
+ // since boot) means fs.watch below throws ENOENT and never retries except
61
+ // on the bounded sweep cadence — the very first session's activity can
62
+ // then sit unwatched for up to `sweepMs` before it is even noticed.
63
+ // Creating it up front lets the watcher arm immediately.
64
+ try {
65
+ fs.mkdirSync(this.dir, { recursive: true });
66
+ }
67
+ catch { /* best-effort: sweep() covers a dir that still isn't there */ }
59
68
  this.sweep(Date.now());
60
69
  this.armWatcher();
61
70
  }