@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
@@ -1,6 +1,6 @@
1
1
  /** A session's foreground/background presence. */
2
2
  export type Presence = 'attached' | 'background' | 'parked';
3
- export interface DetachRecord {
3
+ interface DetachRecord {
4
4
  sessionId: string;
5
5
  agent: string;
6
6
  cwd?: string;
@@ -28,3 +28,4 @@ export declare function isHeadlessAlive(rec: DetachRecord): boolean;
28
28
  * - record + pid exited -> `parked` (the run finished; transcript is durable)
29
29
  */
30
30
  export declare function presenceFromStore(sessionId: string): Presence | undefined;
31
+ export {};
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Detached-session store — the record `agents sessions detach` writes and both
3
- * `agents sessions attach` and the active-session scan read to know an agent is
3
+ * `agents sessions resume` and the active-session scan read to know an agent is
4
4
  * "backgrounded": running headless with no terminal, continuing its task
5
5
  * unattended.
6
6
  *
@@ -14,7 +14,7 @@
14
14
  import fs from 'node:fs';
15
15
  import path from 'node:path';
16
16
  import { getSystemAgentsDir } from '../state.js';
17
- import { captureProcessStartTime } from '../pty-server.js';
17
+ import { captureProcessStartTime } from '../platform/process.js';
18
18
  function detachedDir() {
19
19
  return path.join(getSystemAgentsDir(), 'detached');
20
20
  }
@@ -13,7 +13,6 @@ export interface FileChange {
13
13
  path: string;
14
14
  op: FileOp;
15
15
  }
16
- export declare const READ_TOOLS: Set<string>;
17
16
  export declare const WRITE_TOOLS: Set<string>;
18
17
  export declare const EDIT_TOOLS: Set<string>;
19
18
  /**
@@ -51,7 +50,7 @@ export declare function toolHistogram(toolCounts: Record<string, number>, top?:
51
50
  * only surfaces repeatable tools.
52
51
  */
53
52
  export declare function bashToolCounts(events: SessionEvent[]): Record<string, number>;
54
- export interface TestResult {
53
+ interface TestResult {
55
54
  runner: string;
56
55
  passed?: number;
57
56
  failed?: number;
@@ -64,3 +63,4 @@ export interface TestResult {
64
63
  * (tool_use) with the next tool_result's output. Returns undefined if none ran.
65
64
  */
66
65
  export declare function detectTestResult(events: SessionEvent[]): TestResult | undefined;
66
+ export {};
@@ -10,7 +10,7 @@
10
10
  import { bucketKey, classifyBashCommand } from './bash-command.js';
11
11
  // Tool vocab mirrors parse.ts / render.ts so classification matches what those
12
12
  // modules already recognize across Claude/Codex/others.
13
- export const READ_TOOLS = new Set(['Read', 'read_file', 'view_file', 'cat_file', 'get_file']);
13
+ const READ_TOOLS = new Set(['Read', 'read_file', 'view_file', 'cat_file', 'get_file']);
14
14
  export const WRITE_TOOLS = new Set(['Write', 'write_file', 'create_file', 'Create']);
15
15
  export const EDIT_TOOLS = new Set(['Edit', 'edit_file', 'replace', 'patch', 'MultiEdit', 'apply_patch']);
16
16
  /**
@@ -823,7 +823,8 @@ function collectChangedFilesInLeafDirs(leafDirs, ext) {
823
823
  let hot = isLiveRoot;
824
824
  if (!hot && stamps) {
825
825
  const s = stamps.get(filePath);
826
- hot = s?.scannedAt !== undefined && now - s.scannedAt <= HOT_FILE_WINDOW_MS;
826
+ hot = s?.extractorVersion !== CONTENT_INDEX_VERSION
827
+ || (s?.scannedAt !== undefined && now - s.scannedAt <= HOT_FILE_WINDOW_MS);
827
828
  }
828
829
  if (!hot)
829
830
  continue;
@@ -3884,7 +3885,11 @@ function applyCodexLine(state, parsed) {
3884
3885
  }
3885
3886
  if (parsed.type === 'session_meta') {
3886
3887
  const payload = parsed.payload || {};
3887
- state.sessionId = payload.id || state.sessionId;
3888
+ // Native forks prepend child ownership before inherited parent metadata.
3889
+ // The first valid identity owns this file in both full and resumed scans.
3890
+ if (state.sessionId || typeof payload.id !== 'string' || !payload.id.trim())
3891
+ return;
3892
+ state.sessionId = payload.id;
3888
3893
  state.timestamp = payload.timestamp || parsed.timestamp || state.timestamp;
3889
3894
  state.cwd = payload.cwd || state.cwd;
3890
3895
  state.gitBranch = payload.git?.branch || state.gitBranch;
@@ -15,13 +15,13 @@
15
15
  */
16
16
  import type { SessionMeta } from './types.js';
17
17
  /** File-change tally as `sessions preview --json` serializes it (digest.changes). */
18
- export interface ForkRecapChanges {
18
+ interface ForkRecapChanges {
19
19
  created: number;
20
20
  modified: number;
21
21
  deleted: number;
22
22
  }
23
23
  /** Everything the recap seed is built from — resolved cross-fleet before launch. */
24
- export interface ForkRecapInput {
24
+ interface ForkRecapInput {
25
25
  /** Source harness id — the sibling launches the same one. */
26
26
  agent: string;
27
27
  /** Display label for the source (label → topic → short id, resolved by the caller). */
@@ -57,3 +57,4 @@ export declare function forkLabelFor(session: Pick<SessionMeta, 'label' | 'gener
57
57
  * orchestration in `commands/fork.ts` stays the only side-effecting layer.
58
58
  */
59
59
  export declare function buildForkRecap(input: ForkRecapInput): string;
60
+ export {};
@@ -30,7 +30,7 @@ export declare function isSkillInvocation(e: SessionEvent): boolean;
30
30
  * `args.skill` (or `args.name`). Sorted by count desc, then name.
31
31
  */
32
32
  export declare function extractSkills(events: SessionEvent[]): SkillUse[];
33
- export interface SlashCommandUse {
33
+ interface SlashCommandUse {
34
34
  /** WITH the leading slash, e.g. `/recap`, `/code:commit` — matches SessionEvent.slashCommand's shape. */
35
35
  name: string;
36
36
  count: number;
@@ -43,7 +43,7 @@ export interface SlashCommandUse {
43
43
  * count desc, then name.
44
44
  */
45
45
  export declare function extractSlashCommands(events: SessionEvent[]): SlashCommandUse[];
46
- export interface HookUse {
46
+ interface HookUse {
47
47
  /** Hook name as configured, e.g. `SessionStart:startup`. */
48
48
  name: string;
49
49
  /** Lifecycle event, e.g. `SessionStart`. */
@@ -60,8 +60,8 @@ export interface HookUse {
60
60
  * Sorted by count desc, then name.
61
61
  */
62
62
  export declare function extractHooks(events: SessionEvent[]): HookUse[];
63
- export type LinkKind = 'linear' | 'jira' | 'github' | 'gitlab' | 'other';
64
- export interface SessionLink {
63
+ type LinkKind = 'linear' | 'jira' | 'github' | 'gitlab' | 'other';
64
+ interface SessionLink {
65
65
  kind: LinkKind;
66
66
  url: string;
67
67
  /** Short display label: `RUSH-2076`, `PR#1755`, `owner/repo#123`, host. */
@@ -113,7 +113,7 @@ export declare function harnessTracksBackgroundShells(agent: SessionAgentId): bo
113
113
  * matching events while streaming instead of re-reading the transcript.
114
114
  */
115
115
  export declare function isBackgroundShellStart(e: SessionEvent): boolean;
116
- export interface BackgroundShell {
116
+ interface BackgroundShell {
117
117
  /** The command line as invoked, trimmed for display. */
118
118
  command: string;
119
119
  timestamp: string;
@@ -148,3 +148,4 @@ export declare function extractBackgroundShells(events: SessionEvent[]): Backgro
148
148
  * different answer; do not "unify" them.
149
149
  */
150
150
  export declare function isSubAgentTool(tool: string, command: string): boolean;
151
+ export {};
@@ -1,3 +1,4 @@
1
+ import { type PidSessionEntry } from './pid-registry.js';
1
2
  /** The subset of the hook's on-disk record this reader relies on. Extra fields are ignored. */
2
3
  export interface HookSessionRecord {
3
4
  session_id: string;
@@ -7,6 +8,7 @@ export interface HookSessionRecord {
7
8
  launch_id?: string;
8
9
  terminal_id?: string;
9
10
  ts?: number;
11
+ completed?: boolean;
10
12
  }
11
13
  /** Pre-built lookup maps over one scan of the hook state dir. */
12
14
  export interface HookSessionIndex {
@@ -23,13 +25,21 @@ export interface HookSessionIndex {
23
25
  * Unix SECONDS (the hook stamps `date +%s`); `startedAtMs` is millis.
24
26
  */
25
27
  export declare function readStateSessionRecord(pid: number, startedAtMs?: number): HookSessionRecord | undefined;
28
+ /** Capture ownership while the launched wrapper is alive. The deployed hook
29
+ * walks ancestors to this registry entry and preserves these launcher fields. */
30
+ export declare function captureLaunchBinding(pid: number | undefined, launchId: string): PidSessionEntry | undefined;
31
+ /** Completion consumes the hook's launcher-keyed registry update, never a
32
+ * numeric-PID metadata guess. The hook PID can be any descendant of the wrapper.
33
+ * Ownership was measured before exit; matching the unique launch and preserved
34
+ * start timestamp prevents a reused slot from supplying another run's id. */
35
+ export declare function recordCompletedLaunch(binding: PidSessionEntry | undefined): void;
26
36
  /**
27
37
  * Scan the hook state dir once and index every record by launch_id, terminal_id,
28
38
  * and pid. Returns empty maps if the dir is absent. Newest-by-`ts` wins a key
29
39
  * collision (pid reuse, or a launch id lingering from a since-dead process).
30
40
  */
31
41
  export declare function loadHookSessionIndex(): HookSessionIndex;
32
- export interface ResolveOpts {
42
+ interface ResolveOpts {
33
43
  pid: number;
34
44
  kind: string;
35
45
  launchId?: string;
@@ -50,3 +60,4 @@ export declare function resolveHookSessionRecord(index: HookSessionIndex, opts:
50
60
  /** The session id alone — see {@link resolveHookSessionRecord} for the full record
51
61
  * (which also carries the SessionStart `ts` used to stamp `startedAtMs`). */
52
62
  export declare function resolveHookSessionId(index: HookSessionIndex, opts: ResolveOpts): string | undefined;
63
+ export {};
@@ -19,7 +19,8 @@
19
19
  * NOT import the session-tracker package (a separate, workspace-less package;
20
20
  * see packages/session-tracker/CLAUDE.md) — mirroring AGI EXT's own
21
21
  * hand-copied reader in apps/ext/src/core/liveSession.ts. It only READS the
22
- * existing dir/schema; it never writes or moves anything, so it is safe across a
22
+ * existing dir/schema. The owning launcher also records a completed launch
23
+ * binding in that schema before returning; readers remain read-only across a
23
24
  * fleet where old hooks and a new CLI coexist.
24
25
  *
25
26
  * The whole state dir is scanned ONCE per active-scan into an index (the listing
@@ -27,8 +28,13 @@
27
28
  * re-scan per candidate.
28
29
  */
29
30
  import fs from 'fs';
31
+ import { createHash } from 'node:crypto';
32
+ import { execFileSync } from 'node:child_process';
33
+ import { atomicWriteFileSync } from '../fs-atomic.js';
34
+ import { hostProcessView } from './process-view.js';
30
35
  import path from 'path';
31
36
  import { getTerminalsDir, getRuntimeStateDir } from '../state.js';
37
+ import { listPidSessionEntries, pidSessionEntryMatchesLiveProcess, readLivePidSessionEntry, readPidSessionEntry } from './pid-registry.js';
32
38
  function hookSessionsDir() {
33
39
  // Sibling of the pid-registry's by-pid/ dir. The hook hardcodes this same path
34
40
  // (packages/session-tracker/src/hook.sh); we read it, never move it.
@@ -97,6 +103,98 @@ function keepNewest(map, key, rec) {
97
103
  if (!prev || (rec.ts ?? 0) > (prev.ts ?? 0))
98
104
  map.set(key, rec);
99
105
  }
106
+ let clockTicks;
107
+ /** Recover an already-running launch after an old reader removed its registry.
108
+ * Enumerate live PIDs, not the hook's unbounded graveyard. Only decode the one
109
+ * allowed environment key; no unrelated environment value escapes this reader.
110
+ * Kernel incarnation and namespace are checked on both sides of the reads. */
111
+ function liveUnregisteredHookRecords() {
112
+ const scope = hostProcessView();
113
+ if (process.platform !== 'linux' || !scope?.pidNamespace)
114
+ return [];
115
+ try {
116
+ clockTicks ??= Number(execFileSync('getconf', ['CLK_TCK'], { encoding: 'utf8', timeout: 1000 }));
117
+ if (!Number.isFinite(clockTicks) || clockTicks <= 0)
118
+ return [];
119
+ const bootSeconds = Number(fs.readFileSync('/proc/stat', 'utf8').match(/^btime (\d+)$/m)?.[1]);
120
+ if (!Number.isFinite(bootSeconds))
121
+ return [];
122
+ const result = [];
123
+ const identity = (pid) => {
124
+ if (fs.readlinkSync(`/proc/${pid}/ns/pid`) !== scope.pidNamespace)
125
+ return undefined;
126
+ const stat = fs.readFileSync(`/proc/${pid}/stat`, 'utf8');
127
+ const fields = stat.slice(stat.lastIndexOf(')') + 2).split(' ');
128
+ return fields[0] !== 'Z' && /^\d+$/.test(fields[19]) ? fields[19] : undefined;
129
+ };
130
+ const prefix = Buffer.from('AGENT_LAUNCH_ID=');
131
+ for (const name of fs.readdirSync('/proc')) {
132
+ if (!/^\d+$/.test(name))
133
+ continue;
134
+ const pid = Number(name);
135
+ try {
136
+ if (!fs.existsSync(stateSessionRecordPath(pid)))
137
+ continue;
138
+ const before = identity(pid);
139
+ if (!before)
140
+ continue;
141
+ const rec = readStateSessionRecord(pid);
142
+ const startedSeconds = bootSeconds + Number(before) / clockTicks;
143
+ if (!rec || rec.pid !== pid || typeof rec.ts !== 'number'
144
+ || rec.ts < Math.floor(startedSeconds) || rec.ts > Date.now() / 1000)
145
+ continue;
146
+ const environment = fs.readFileSync(`/proc/${pid}/environ`);
147
+ let launchId;
148
+ for (let start = 0; start < environment.length;) {
149
+ const end = environment.indexOf(0, start);
150
+ const limit = end < 0 ? environment.length : end;
151
+ if (environment.subarray(start, start + prefix.length).equals(prefix)) {
152
+ launchId = environment.subarray(start + prefix.length, limit).toString('utf8').trim();
153
+ break;
154
+ }
155
+ start = limit + 1;
156
+ }
157
+ if (!launchId || launchId.length > 512 || /[\x00-\x20]/.test(launchId)
158
+ || (rec.launch_id && rec.launch_id !== launchId) || identity(pid) !== before)
159
+ continue;
160
+ result.push({ ...rec, launch_id: launchId });
161
+ }
162
+ catch { /* exited, inaccessible, or procfs raced: unknown, never prune */ }
163
+ }
164
+ return result;
165
+ }
166
+ catch {
167
+ return [];
168
+ }
169
+ }
170
+ /** Capture ownership while the launched wrapper is alive. The deployed hook
171
+ * walks ancestors to this registry entry and preserves these launcher fields. */
172
+ export function captureLaunchBinding(pid, launchId) {
173
+ if (!pid)
174
+ return undefined;
175
+ const entry = readLivePidSessionEntry(pid);
176
+ return entry?.launchId === launchId ? structuredClone(entry) : undefined;
177
+ }
178
+ /** Completion consumes the hook's launcher-keyed registry update, never a
179
+ * numeric-PID metadata guess. The hook PID can be any descendant of the wrapper.
180
+ * Ownership was measured before exit; matching the unique launch and preserved
181
+ * start timestamp prevents a reused slot from supplying another run's id. */
182
+ export function recordCompletedLaunch(binding) {
183
+ if (!binding?.launchId || !hostProcessView())
184
+ return;
185
+ const entry = readPidSessionEntry(binding.pid);
186
+ if (!entry?.sessionId || entry.pid !== binding.pid || entry.launchId !== binding.launchId
187
+ || entry.startedAtMs !== binding.startedAtMs || entry.agent !== binding.agent)
188
+ return;
189
+ const rec = { session_id: entry.sessionId, pid: entry.pid, agent: entry.agent,
190
+ launch_id: binding.launchId, terminal_id: binding.terminalId, ts: Date.now() / 1000, completed: true };
191
+ try {
192
+ fs.mkdirSync(hookSessionsDir(), { recursive: true });
193
+ const name = createHash('sha256').update(binding.launchId).digest('hex');
194
+ atomicWriteFileSync(path.join(hookSessionsDir(), `launch-${name}.json`), JSON.stringify(rec), 'utf8');
195
+ }
196
+ catch { /* completion must preserve the child exit status */ }
197
+ }
100
198
  /**
101
199
  * Scan the hook state dir once and index every record by launch_id, terminal_id,
102
200
  * and pid. Returns empty maps if the dir is absent. Newest-by-`ts` wins a key
@@ -111,7 +209,7 @@ export function loadHookSessionIndex() {
111
209
  files = fs.readdirSync(hookSessionsDir()).filter(f => f.endsWith('.json'));
112
210
  }
113
211
  catch {
114
- return { byLaunchId, byTerminalId, byPid };
212
+ files = [];
115
213
  }
116
214
  for (const f of files) {
117
215
  let rec;
@@ -123,13 +221,47 @@ export function loadHookSessionIndex() {
123
221
  }
124
222
  if (!rec)
125
223
  continue;
126
- if (typeof rec.pid === 'number')
224
+ if (!rec.completed && typeof rec.pid === 'number')
127
225
  keepNewest(byPid, rec.pid, rec);
128
226
  if (rec.launch_id)
129
227
  keepNewest(byLaunchId, rec.launch_id, rec);
130
- if (rec.terminal_id)
228
+ if (!rec.completed && rec.terminal_id)
131
229
  keepNewest(byTerminalId, rec.terminal_id, rec);
132
230
  }
231
+ // Deployed legacy hooks contain only a pid/session id. Join their targeted
232
+ // records with launch facts instead of requiring a terminal_id they never
233
+ // wrote. This is read-only: an observer cannot infer host PID liveness.
234
+ for (const entry of listPidSessionEntries()) {
235
+ if (!entry.launchId || pidSessionEntryMatchesLiveProcess(entry) !== true)
236
+ continue;
237
+ const rec = entry.sessionId
238
+ ? { session_id: entry.sessionId, pid: entry.pid, ts: entry.startedAtMs / 1000, agent: entry.agent }
239
+ : readStateSessionRecord(entry.pid, entry.startedAtMs);
240
+ if (!rec || !kindMatches(rec.agent, entry.agent))
241
+ continue;
242
+ if (rec.launch_id && rec.launch_id !== entry.launchId)
243
+ continue;
244
+ const joined = { ...rec, agent: rec.agent ?? entry.agent, launch_id: entry.launchId, terminal_id: entry.terminalId };
245
+ if (!byLaunchId.has(entry.launchId))
246
+ byLaunchId.set(entry.launchId, joined);
247
+ if (!byPid.has(entry.pid))
248
+ byPid.set(entry.pid, joined);
249
+ if (entry.terminalId && !byTerminalId.has(entry.terminalId))
250
+ byTerminalId.set(entry.terminalId, joined);
251
+ }
252
+ const recovered = new Map();
253
+ for (const rec of liveUnregisteredHookRecords()) {
254
+ if (!byPid.has(rec.pid))
255
+ byPid.set(rec.pid, rec);
256
+ const previous = recovered.get(rec.launch_id);
257
+ // Inherited launch metadata cannot disambiguate two different native
258
+ // sessions. Keep their exact PID identities but refuse the ambiguous join.
259
+ recovered.set(rec.launch_id, previous === null || (previous && previous.session_id !== rec.session_id) ? null : rec);
260
+ }
261
+ for (const [launchId, rec] of recovered) {
262
+ if (rec && !byLaunchId.has(launchId))
263
+ byLaunchId.set(launchId, rec);
264
+ }
133
265
  return { byLaunchId, byTerminalId, byPid };
134
266
  }
135
267
  /**
@@ -156,13 +288,14 @@ function kindMatches(recordAgent, kind) {
156
288
  */
157
289
  export function resolveHookSessionRecord(index, opts) {
158
290
  const { pid, kind, launchId, terminalId, childPids } = opts;
159
- const take = (rec) => rec?.session_id && kindMatches(rec.agent, kind) ? rec : undefined;
291
+ const take = (rec) => rec?.session_id && kindMatches(rec.agent, kind)
292
+ && (!launchId || !rec.launch_id || rec.launch_id === launchId) ? rec : undefined;
160
293
  if (launchId) {
161
294
  const hit = take(index.byLaunchId.get(launchId));
162
295
  if (hit)
163
296
  return hit;
164
297
  }
165
- if (terminalId) {
298
+ if (terminalId && !launchId) {
166
299
  const hit = take(index.byTerminalId.get(terminalId));
167
300
  if (hit)
168
301
  return hit;
@@ -55,7 +55,7 @@ export type HostLink =
55
55
  * the extension agree on when a window is dead.
56
56
  */
57
57
  export declare const HOST_HEARTBEAT_STALE_MS: number;
58
- export interface HostLinkInput {
58
+ interface HostLinkInput {
59
59
  /** The agent process is still alive (already pid-reuse-checked by the caller). */
60
60
  pidAlive: boolean;
61
61
  /**
@@ -102,3 +102,4 @@ export declare function classifyHostLink(input: HostLinkInput): HostLink;
102
102
  * Pure — same injected signals as the classifier.
103
103
  */
104
104
  export declare function hostWindowLost(input: HostLinkInput): boolean;
105
+ export {};
@@ -13,6 +13,6 @@ import type { InjectTarget } from '../terminal/index.js';
13
13
  /**
14
14
  * Map a session's `ReplyRail` to an engine `InjectTarget`. Today only tmux rails
15
15
  * are externally addressable (provenance.ts:143-149); a null rail yields null and
16
- * the caller must supply a target another way (a pty id, a macOS window).
16
+ * the caller must supply a target another way (a macOS window).
17
17
  */
18
18
  export declare function injectTargetFromReplyRail(rail: ReplyRail): InjectTarget | null;
@@ -11,7 +11,7 @@
11
11
  /**
12
12
  * Map a session's `ReplyRail` to an engine `InjectTarget`. Today only tmux rails
13
13
  * are externally addressable (provenance.ts:143-149); a null rail yields null and
14
- * the caller must supply a target another way (a pty id, a macOS window).
14
+ * the caller must supply a target another way (a macOS window).
15
15
  */
16
16
  export function injectTargetFromReplyRail(rail) {
17
17
  if (rail && rail.rail === 'tmux') {
@@ -21,14 +21,6 @@
21
21
  * the raw file count rather than quietly differing.
22
22
  */
23
23
  import type { SessionEvent } from './types.js';
24
- /**
25
- * Minimum quiet time after the assistant's last event before a user message
26
- * is classified as an **agent silent stall**: the model went quiet on its own
27
- * and sat idle until the human resumed. Shorter gaps are normal turn-taking.
28
- * 5 minutes is long enough to exclude "user typing the next instruction" and
29
- * short enough to catch "went silent mid-task until I said continue."
30
- */
31
- export declare const SILENT_STALL_SECONDS = 300;
32
24
  /** Behavioural facets of one session. Serialized as JSON into `session_insights`. */
33
25
  export interface InsightFacets {
34
26
  toolCounts: Record<string, number>;
@@ -112,11 +104,6 @@ export interface InsightFacets {
112
104
  * can be re-bucketed for a different display timezone without re-parsing.
113
105
  */
114
106
  export declare function computeInsightFacets(events: SessionEvent[], timezoneOffsetMinutes?: number): InsightFacets;
115
- /**
116
- * Classify a long quiet gap after the assistant's last event as an agent silent stall.
117
- * Optionally also marks an explicit resume nudge ("continue", …) after that silence.
118
- */
119
- export declare function classifySilentStall(gapSeconds: number, userText: string, friction: Record<string, number>, corrections: Record<string, number>): void;
120
107
  /** Percentile of a numeric sample, nearest-rank. Returns 0 for an empty sample. */
121
108
  export declare function percentile(values: number[], p: number): number;
122
109
  /** Bucket response gaps for display. Returns every bucket, including empty ones. */
@@ -132,7 +119,7 @@ export interface SessionSpan {
132
119
  endMs: number;
133
120
  }
134
121
  /** How much work ran concurrently, and how much of it straddled two accounts. */
135
- export interface OverlapReport {
122
+ interface OverlapReport {
136
123
  /** Pairs of sessions whose spans intersect. */
137
124
  overlappingPairs: number;
138
125
  /** Of those, pairs belonging to DIFFERENT accounts. */
@@ -169,9 +156,10 @@ export interface InsightAction {
169
156
  evidenceCount: number;
170
157
  sampleSessionIds: string[];
171
158
  }
172
- export interface SessionFacetEvidence {
159
+ interface SessionFacetEvidence {
173
160
  id: string;
174
161
  facets: InsightFacets;
175
162
  }
176
163
  /** Build a stable, evidence-backed action list without exposing transcript text. */
177
164
  export declare function buildInsightActions(sessions: SessionFacetEvidence[]): InsightAction[];
165
+ export {};
@@ -60,7 +60,7 @@ const GAP_CEILING_SECONDS = 3600;
60
60
  * 5 minutes is long enough to exclude "user typing the next instruction" and
61
61
  * short enough to catch "went silent mid-task until I said continue."
62
62
  */
63
- export const SILENT_STALL_SECONDS = 300;
63
+ const SILENT_STALL_SECONDS = 300;
64
64
  /** Response-gap buckets, in ascending order. Upper bound is exclusive. */
65
65
  const GAP_BUCKETS = [
66
66
  ['<10s', 10], ['10-30s', 30], ['30s-1m', 60], ['1-2m', 120],
@@ -326,7 +326,7 @@ const RESUME_NUDGE_PATTERN = /\b(?:continue|keep going|don'?t stop|resume|pick u
326
326
  * Classify a long quiet gap after the assistant's last event as an agent silent stall.
327
327
  * Optionally also marks an explicit resume nudge ("continue", …) after that silence.
328
328
  */
329
- export function classifySilentStall(gapSeconds, userText, friction, corrections) {
329
+ function classifySilentStall(gapSeconds, userText, friction, corrections) {
330
330
  for (const [label, min, max] of SILENT_STALL_BUCKETS) {
331
331
  if (gapSeconds >= min && gapSeconds < max) {
332
332
  bump(friction, label);
@@ -14,24 +14,7 @@ export declare function resolveTmuxAliasState(selector: string, socket?: string)
14
14
  * identity to another machine.
15
15
  */
16
16
  export declare function shouldAttachLocalTmuxAliasBeforeFleet(selector: string | undefined, hosts: string[]): selector is string;
17
- /**
18
- * Attach a live tmux session named exactly as the selector, without needing the
19
- * session index to know anything about it.
20
- *
21
- * SES-41 requires a `ag-<agent>-<8hex>` tmux alias to resolve, but the alias's
22
- * hex is the LAUNCH id, not the harness session id, and for a harness that
23
- * writes no `state/sessions/<pid>.json` record there is no mapping back to a
24
- * SessionMeta at all. The pane is the thing the user asked for, and its NAME is
25
- * sufficient to attach it — so an unattributable session is still reachable
26
- * instead of being a dead end that forces raw `tmux -S … attach`.
27
- *
28
- * Returns false when this is not an alias, the server/session is absent, or
29
- * every pane is dead — the caller then continues to normal id resolution.
30
- * SES-39's "re-read `pane_dead` immediately before attach" is honoured here:
31
- * liveness is queried at attach time, not read from a roster.
32
- */
33
- export declare function attachLiveTmuxAlias(selector: string): Promise<boolean>;
34
- export type LocalAliasBySuffix = {
17
+ type LocalAliasBySuffix = {
35
18
  kind: 'alias';
36
19
  alias: string;
37
20
  } | {
@@ -67,3 +50,4 @@ export declare function resolveUniqueLocalLiveAliasBySuffix(shortId: string, soc
67
50
  * resolution / the fleet race.
68
51
  */
69
52
  export declare function attachLocalLiveSelector(selector: string | undefined, hosts: string[]): Promise<boolean>;
53
+ export {};
@@ -67,7 +67,7 @@ export function shouldAttachLocalTmuxAliasBeforeFleet(selector, hosts) {
67
67
  * SES-39's "re-read `pane_dead` immediately before attach" is honoured here:
68
68
  * liveness is queried at attach time, not read from a roster.
69
69
  */
70
- export async function attachLiveTmuxAlias(selector) {
70
+ async function attachLiveTmuxAlias(selector) {
71
71
  const socket = getDefaultSocketPath();
72
72
  if (await resolveTmuxAliasState(selector, socket) !== 'live')
73
73
  return false;
@@ -24,7 +24,6 @@ export interface MigrationRecord {
24
24
  status: 'completed' | 'failed';
25
25
  error?: string;
26
26
  }
27
- export declare function migrationsLedgerPath(): string;
28
27
  /**
29
28
  * Append one migration event. A ledger write must never break a migration that
30
29
  * otherwise succeeded, so a write failure is a visible warning, not a throw.
@@ -13,7 +13,7 @@ import * as fs from 'fs';
13
13
  import * as path from 'path';
14
14
  import chalk from 'chalk';
15
15
  import { homeDir } from '../platform/paths.js';
16
- export function migrationsLedgerPath() {
16
+ function migrationsLedgerPath() {
17
17
  return path.join(homeDir(), '.agents', '.history', 'migrations.jsonl');
18
18
  }
19
19
  /**
@@ -21,10 +21,6 @@
21
21
  * consume so its DB is not written with rows it never renders.
22
22
  */
23
23
  import { type ConfiguredDeviceRole } from '../device-config.js';
24
- /** Cap on sessions published per device — the payload stays what a picker shows. */
25
- export declare const SESSION_MIRROR_MAX_ROWS = 200;
26
- /** First-user-message snippet ceiling; the full turn stays on the owning box. */
27
- export declare const SESSION_MIRROR_SNIPPET_MAX = 280;
28
24
  /** Mirror rows older than this since their last sync are pruned (staleness/size ceiling). */
29
25
  export declare const SESSION_MIRROR_MAX_AGE_MS: number;
30
26
  /** Caps for the timeline block on a published mirror row. */
@@ -32,12 +28,12 @@ export declare const SESSION_MIRROR_MAX_STEPS = 8;
32
28
  export declare const SESSION_MIRROR_STEP_TEXT_MAX = 160;
33
29
  export declare const SESSION_MIRROR_REQUEST_MAX = 2000;
34
30
  export declare const SESSION_MIRROR_MAX_FILES = 8;
35
- export interface PublishSessionMirrorOptions {
31
+ interface PublishSessionMirrorOptions {
36
32
  userAgentsDir?: string;
37
33
  device?: string;
38
34
  limit?: number;
39
35
  }
40
- export interface PublishSessionMirrorResult {
36
+ interface PublishSessionMirrorResult {
41
37
  published: boolean;
42
38
  changed: boolean;
43
39
  count: number;
@@ -47,14 +43,14 @@ export interface PublishSessionMirrorResult {
47
43
  }
48
44
  /** Publish this device's most-recent local sessions into its owned shared-state file. */
49
45
  export declare function publishSessionMirrorToSharedStore(options?: PublishSessionMirrorOptions): Promise<PublishSessionMirrorResult>;
50
- export interface ConsumeSessionMirrorOptions {
46
+ interface ConsumeSessionMirrorOptions {
51
47
  userAgentsDir?: string;
52
48
  device?: string;
53
49
  role?: ConfiguredDeviceRole;
54
50
  now?: number;
55
51
  maxAgeMs?: number;
56
52
  }
57
- export interface ConsumeSessionMirrorResult {
53
+ interface ConsumeSessionMirrorResult {
58
54
  sources: string[];
59
55
  merged: number;
60
56
  pruned: number;
@@ -71,3 +67,4 @@ export interface ConsumeSessionMirrorResult {
71
67
  * marked worker skips: the mirror feeds an interactive picker it never renders.
72
68
  */
73
69
  export declare function consumeSessionMirrorFromSharedStore(options?: ConsumeSessionMirrorOptions): ConsumeSessionMirrorResult;
70
+ export {};
@@ -26,9 +26,9 @@ import { getUserAgentsDir } from '../state.js';
26
26
  import { machineId, normalizeHost } from './sync/config.js';
27
27
  import { pruneMirrorSessions, queryLocalOriginSessionsForMirror, upsertMirrorSession, } from './db.js';
28
28
  /** Cap on sessions published per device — the payload stays what a picker shows. */
29
- export const SESSION_MIRROR_MAX_ROWS = 200;
29
+ const SESSION_MIRROR_MAX_ROWS = 200;
30
30
  /** First-user-message snippet ceiling; the full turn stays on the owning box. */
31
- export const SESSION_MIRROR_SNIPPET_MAX = 280;
31
+ const SESSION_MIRROR_SNIPPET_MAX = 280;
32
32
  /** Mirror rows older than this since their last sync are pruned (staleness/size ceiling). */
33
33
  export const SESSION_MIRROR_MAX_AGE_MS = 14 * 24 * 60 * 60_000;
34
34
  /** Caps for the timeline block on a published mirror row. */