@phnx-labs/agents-cli 1.22.119 → 1.22.121

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 (1603) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/README.md +19 -2
  3. package/dist/bootstrap.d.ts +0 -15
  4. package/dist/bootstrap.js +10 -409
  5. package/dist/cli/command-registry.d.ts +0 -58
  6. package/dist/cli/command-registry.js +2 -74
  7. package/dist/commands/accounts.d.ts +0 -17
  8. package/dist/commands/accounts.js +1 -52
  9. package/dist/commands/alias.d.ts +0 -12
  10. package/dist/commands/alias.js +0 -6
  11. package/dist/commands/apply.d.ts +0 -15
  12. package/dist/commands/apply.js +0 -63
  13. package/dist/commands/audit.d.ts +0 -12
  14. package/dist/commands/audit.js +0 -13
  15. package/dist/commands/auth.js +4 -12
  16. package/dist/commands/beta.d.ts +0 -6
  17. package/dist/commands/beta.js +2 -6
  18. package/dist/commands/browser-sessions-picker.d.ts +0 -8
  19. package/dist/commands/browser-sessions-picker.js +0 -26
  20. package/dist/commands/browser.d.ts +0 -57
  21. package/dist/commands/browser.js +0 -80
  22. package/dist/commands/budget.d.ts +0 -13
  23. package/dist/commands/budget.js +0 -2
  24. package/dist/commands/cli.d.ts +0 -12
  25. package/dist/commands/cli.js +0 -4
  26. package/dist/commands/cloud.d.ts +0 -9
  27. package/dist/commands/cloud.js +0 -43
  28. package/dist/commands/commands.d.ts +0 -9
  29. package/dist/commands/commands.js +0 -18
  30. package/dist/commands/computer-sessions-picker.d.ts +0 -11
  31. package/dist/commands/computer-sessions-picker.js +0 -29
  32. package/dist/commands/computer.d.ts +0 -62
  33. package/dist/commands/computer.js +3 -114
  34. package/dist/commands/config.d.ts +0 -14
  35. package/dist/commands/config.js +21 -60
  36. package/dist/commands/cost.d.ts +0 -11
  37. package/dist/commands/cost.js +1 -17
  38. package/dist/commands/daemon-test-harness.d.ts +0 -32
  39. package/dist/commands/daemon-test-harness.js +1 -36
  40. package/dist/commands/daemon.d.ts +0 -46
  41. package/dist/commands/daemon.js +8 -255
  42. package/dist/commands/detach-core.d.ts +0 -28
  43. package/dist/commands/detach-core.js +0 -30
  44. package/dist/commands/detach.d.ts +1 -12
  45. package/dist/commands/detach.js +16 -52
  46. package/dist/commands/device-config-test-harness.js +0 -12
  47. package/dist/commands/doctor.d.ts +0 -103
  48. package/dist/commands/doctor.js +3 -279
  49. package/dist/commands/events.d.ts +0 -29
  50. package/dist/commands/events.js +1 -55
  51. package/dist/commands/exec.d.ts +0 -163
  52. package/dist/commands/exec.js +15 -964
  53. package/dist/commands/factory.d.ts +0 -6
  54. package/dist/commands/factory.js +0 -2
  55. package/dist/commands/feed-watch.js +0 -20
  56. package/dist/commands/feed.d.ts +0 -38
  57. package/dist/commands/feed.js +1 -151
  58. package/dist/commands/feedback.d.ts +0 -5
  59. package/dist/commands/feedback.js +0 -5
  60. package/dist/commands/fleet-capture.d.ts +0 -12
  61. package/dist/commands/fleet-capture.js +1 -39
  62. package/dist/commands/focus.d.ts +6 -94
  63. package/dist/commands/focus.js +13 -183
  64. package/dist/commands/fork.d.ts +0 -21
  65. package/dist/commands/fork.js +0 -45
  66. package/dist/commands/funnel.d.ts +0 -3
  67. package/dist/commands/go.d.ts +2 -71
  68. package/dist/commands/go.js +5 -99
  69. package/dist/commands/harness-hooks.d.ts +0 -41
  70. package/dist/commands/harness-hooks.js +0 -48
  71. package/dist/commands/harness-wizard.d.ts +0 -137
  72. package/dist/commands/harness-wizard.js +0 -109
  73. package/dist/commands/harness.d.ts +0 -63
  74. package/dist/commands/harness.js +0 -103
  75. package/dist/commands/hooks.d.ts +0 -9
  76. package/dist/commands/hooks.js +0 -26
  77. package/dist/commands/humans.d.ts +0 -8
  78. package/dist/commands/humans.js +0 -8
  79. package/dist/commands/import.d.ts +0 -22
  80. package/dist/commands/import.js +0 -79
  81. package/dist/commands/insights.d.ts +0 -37
  82. package/dist/commands/insights.js +3 -115
  83. package/dist/commands/inspect.d.ts +0 -117
  84. package/dist/commands/inspect.js +2 -448
  85. package/dist/commands/lease.d.ts +0 -28
  86. package/dist/commands/lease.js +0 -43
  87. package/dist/commands/logs.d.ts +0 -23
  88. package/dist/commands/logs.js +0 -30
  89. package/dist/commands/mailboxes.d.ts +0 -18
  90. package/dist/commands/mailboxes.js +0 -29
  91. package/dist/commands/mcp.d.ts +0 -9
  92. package/dist/commands/mcp.js +0 -53
  93. package/dist/commands/memory.d.ts +0 -7
  94. package/dist/commands/memory.js +0 -7
  95. package/dist/commands/menubar.d.ts +0 -8
  96. package/dist/commands/menubar.js +0 -24
  97. package/dist/commands/message.d.ts +0 -23
  98. package/dist/commands/message.js +0 -50
  99. package/dist/commands/mine.d.ts +0 -22
  100. package/dist/commands/mine.js +0 -21
  101. package/dist/commands/models.d.ts +0 -8
  102. package/dist/commands/models.js +0 -33
  103. package/dist/commands/modes.d.ts +0 -10
  104. package/dist/commands/modes.js +0 -13
  105. package/dist/commands/monitors.d.ts +0 -9
  106. package/dist/commands/monitors.js +3 -160
  107. package/dist/commands/open.d.ts +0 -26
  108. package/dist/commands/open.js +0 -10
  109. package/dist/commands/output.d.ts +0 -18
  110. package/dist/commands/output.js +1 -34
  111. package/dist/commands/packages-materialize.d.ts +0 -11
  112. package/dist/commands/packages-materialize.js +0 -3
  113. package/dist/commands/packages.d.ts +0 -10
  114. package/dist/commands/packages.js +0 -50
  115. package/dist/commands/perf.d.ts +0 -41
  116. package/dist/commands/perf.js +0 -55
  117. package/dist/commands/permissions.d.ts +0 -9
  118. package/dist/commands/permissions.js +0 -43
  119. package/dist/commands/plugins.d.ts +0 -14
  120. package/dist/commands/plugins.js +2 -55
  121. package/dist/commands/profiles.d.ts +0 -25
  122. package/dist/commands/profiles.js +0 -27
  123. package/dist/commands/projects-todo.d.ts +2 -0
  124. package/dist/commands/projects-todo.js +132 -0
  125. package/dist/commands/projects.d.ts +0 -85
  126. package/dist/commands/projects.js +344 -291
  127. package/dist/commands/prune.js +0 -30
  128. package/dist/commands/ps-roster.d.ts +92 -0
  129. package/dist/commands/ps-roster.js +744 -0
  130. package/dist/commands/ps.d.ts +6 -0
  131. package/dist/commands/ps.js +98 -0
  132. package/dist/commands/refresh-rules.d.ts +0 -13
  133. package/dist/commands/refresh-rules.js +0 -14
  134. package/dist/commands/reminders.d.ts +0 -7
  135. package/dist/commands/repo.d.ts +0 -89
  136. package/dist/commands/repo.js +7 -205
  137. package/dist/commands/resource-view.d.ts +0 -33
  138. package/dist/commands/resource-view.js +0 -49
  139. package/dist/commands/resume.d.ts +1 -19
  140. package/dist/commands/resume.js +0 -50
  141. package/dist/commands/route.d.ts +0 -10
  142. package/dist/commands/route.js +0 -19
  143. package/dist/commands/routines.d.ts +0 -42
  144. package/dist/commands/routines.js +5 -290
  145. package/dist/commands/routines.test-fixture.d.ts +0 -34
  146. package/dist/commands/routines.test-fixture.js +4 -100
  147. package/dist/commands/rules.d.ts +0 -9
  148. package/dist/commands/rules.js +1 -6
  149. package/dist/commands/run-account-picker.d.ts +0 -59
  150. package/dist/commands/run-account-picker.js +0 -71
  151. package/dist/commands/run-broadcast.d.ts +0 -9
  152. package/dist/commands/run-broadcast.js +0 -7
  153. package/dist/commands/run-cloud.d.ts +0 -15
  154. package/dist/commands/run-cloud.js +0 -37
  155. package/dist/commands/run-device-picker.d.ts +0 -25
  156. package/dist/commands/run-device-picker.js +1 -53
  157. package/dist/commands/secrets-passthrough.d.ts +0 -31
  158. package/dist/commands/secrets-passthrough.js +0 -10
  159. package/dist/commands/send.d.ts +0 -20
  160. package/dist/commands/send.js +14 -18
  161. package/dist/commands/sessions-backfill.d.ts +0 -7
  162. package/dist/commands/sessions-backfill.js +1 -16
  163. package/dist/commands/sessions-backup-setup.js +0 -11
  164. package/dist/commands/sessions-bookmark.d.ts +0 -8
  165. package/dist/commands/sessions-bookmark.js +0 -28
  166. package/dist/commands/sessions-browser.d.ts +2 -117
  167. package/dist/commands/sessions-browser.js +5 -243
  168. package/dist/commands/sessions-export.d.ts +1 -26
  169. package/dist/commands/sessions-export.js +3 -81
  170. package/dist/commands/sessions-import.d.ts +0 -14
  171. package/dist/commands/sessions-import.js +0 -59
  172. package/dist/commands/sessions-inject.d.ts +0 -60
  173. package/dist/commands/sessions-inject.js +3 -96
  174. package/dist/commands/sessions-migrate.d.ts +2 -37
  175. package/dist/commands/sessions-migrate.js +7 -159
  176. package/dist/commands/sessions-optimize.d.ts +0 -12
  177. package/dist/commands/sessions-picker-factory.d.ts +0 -7
  178. package/dist/commands/sessions-picker-factory.js +0 -8
  179. package/dist/commands/sessions-picker.d.ts +4 -103
  180. package/dist/commands/sessions-picker.js +13 -352
  181. package/dist/commands/sessions-render.d.ts +1 -2
  182. package/dist/commands/sessions-render.js +3 -7
  183. package/dist/commands/sessions-resume.d.ts +1 -24
  184. package/dist/commands/sessions-resume.js +2 -65
  185. package/dist/commands/sessions-share.d.ts +1 -9
  186. package/dist/commands/sessions-share.js +1 -45
  187. package/dist/commands/sessions-stats.d.ts +0 -24
  188. package/dist/commands/sessions-stats.js +0 -49
  189. package/dist/commands/sessions-stop.d.ts +1 -20
  190. package/dist/commands/sessions-stop.js +4 -9
  191. package/dist/commands/sessions-tail.d.ts +1 -19
  192. package/dist/commands/sessions-tail.js +3 -36
  193. package/dist/commands/sessions-trace.d.ts +5 -36
  194. package/dist/commands/sessions-trace.js +7 -82
  195. package/dist/commands/sessions.d.ts +1 -666
  196. package/dist/commands/sessions.js +30 -2279
  197. package/dist/commands/sessions.test-fixture.d.ts +0 -9
  198. package/dist/commands/sessions.test-fixture.js +8 -23
  199. package/dist/commands/setup-accounts.d.ts +0 -6
  200. package/dist/commands/setup-browser.d.ts +0 -23
  201. package/dist/commands/setup-browser.js +0 -28
  202. package/dist/commands/setup-computer.d.ts +0 -16
  203. package/dist/commands/setup-computer.js +0 -28
  204. package/dist/commands/setup-fleet.d.ts +0 -8
  205. package/dist/commands/setup-fleet.js +0 -11
  206. package/dist/commands/setup-mine.d.ts +0 -14
  207. package/dist/commands/setup-mine.js +0 -25
  208. package/dist/commands/setup-preferences.d.ts +0 -47
  209. package/dist/commands/setup-preferences.js +0 -53
  210. package/dist/commands/setup-secrets.d.ts +2 -24
  211. package/dist/commands/setup-secrets.js +0 -24
  212. package/dist/commands/setup-term.d.ts +0 -21
  213. package/dist/commands/setup-term.js +0 -21
  214. package/dist/commands/setup-terminal.d.ts +0 -1
  215. package/dist/commands/setup-terminal.js +0 -1
  216. package/dist/commands/setup-tools.d.ts +2 -0
  217. package/dist/commands/setup-tools.js +73 -0
  218. package/dist/commands/setup.d.ts +0 -20
  219. package/dist/commands/setup.js +4 -57
  220. package/dist/commands/skills.d.ts +0 -9
  221. package/dist/commands/skills.js +1 -22
  222. package/dist/commands/snapshot.d.ts +0 -9
  223. package/dist/commands/snapshot.js +0 -10
  224. package/dist/commands/ssh.d.ts +0 -64
  225. package/dist/commands/ssh.js +9 -420
  226. package/dist/commands/status.d.ts +0 -12
  227. package/dist/commands/status.js +0 -26
  228. package/dist/commands/subagents.d.ts +0 -8
  229. package/dist/commands/subagents.js +0 -31
  230. package/dist/commands/sync.d.ts +0 -37
  231. package/dist/commands/sync.js +0 -256
  232. package/dist/commands/teams-picker.d.ts +0 -3
  233. package/dist/commands/teams-picker.js +0 -34
  234. package/dist/commands/teams.d.ts +1 -76
  235. package/dist/commands/teams.js +9 -477
  236. package/dist/commands/tmux.d.ts +0 -25
  237. package/dist/commands/tmux.js +0 -46
  238. package/dist/commands/traces.js +0 -19
  239. package/dist/commands/trash.d.ts +0 -17
  240. package/dist/commands/trash.js +1 -11
  241. package/dist/commands/uninstall.d.ts +0 -9
  242. package/dist/commands/uninstall.js +0 -6
  243. package/dist/commands/update.d.ts +0 -22
  244. package/dist/commands/update.js +0 -44
  245. package/dist/commands/upgrade.d.ts +0 -1
  246. package/dist/commands/upgrade.js +0 -1
  247. package/dist/commands/utils.d.ts +0 -85
  248. package/dist/commands/utils.js +1 -95
  249. package/dist/commands/versions.d.ts +0 -16
  250. package/dist/commands/versions.js +0 -134
  251. package/dist/commands/view.d.ts +0 -90
  252. package/dist/commands/view.js +4 -343
  253. package/dist/commands/watchdog.d.ts +0 -19
  254. package/dist/commands/watchdog.js +3 -43
  255. package/dist/commands/webhook.d.ts +0 -8
  256. package/dist/commands/webhook.js +0 -14
  257. package/dist/commands/workflows.d.ts +0 -8
  258. package/dist/commands/workflows.js +0 -6
  259. package/dist/index.d.ts +0 -25
  260. package/dist/index.js +5 -119
  261. package/dist/lib/account-capabilities.d.ts +0 -34
  262. package/dist/lib/account-capabilities.js +0 -32
  263. package/dist/lib/account-catalog.d.ts +0 -128
  264. package/dist/lib/account-catalog.js +8 -154
  265. package/dist/lib/account-provider-registry.d.ts +0 -14
  266. package/dist/lib/account-provider-registry.js +0 -8
  267. package/dist/lib/account-registry.d.ts +0 -74
  268. package/dist/lib/account-registry.js +14 -189
  269. package/dist/lib/account-schema.d.ts +0 -19
  270. package/dist/lib/account-schema.js +0 -43
  271. package/dist/lib/accounting/account-launch.d.ts +0 -15
  272. package/dist/lib/accounting/account-launch.js +1 -3
  273. package/dist/lib/accounting/account-pool-collect.d.ts +0 -26
  274. package/dist/lib/accounting/account-pool-collect.js +0 -42
  275. package/dist/lib/accounting/account-pool.d.ts +0 -41
  276. package/dist/lib/accounting/account-pool.js +0 -17
  277. package/dist/lib/accounting/capacity.d.ts +0 -32
  278. package/dist/lib/accounting/capacity.js +0 -32
  279. package/dist/lib/accounting/rotate.d.ts +0 -518
  280. package/dist/lib/accounting/rotate.js +4 -598
  281. package/dist/lib/accounting/usage-ingest.d.ts +0 -1
  282. package/dist/lib/accounting/usage-ingest.js +0 -44
  283. package/dist/lib/accounting/usage-sync.d.ts +0 -60
  284. package/dist/lib/accounting/usage-sync.js +4 -51
  285. package/dist/lib/accounting/usage.d.ts +0 -632
  286. package/dist/lib/accounting/usage.js +14 -1055
  287. package/dist/lib/accounts/add.d.ts +0 -60
  288. package/dist/lib/accounts/add.js +0 -127
  289. package/dist/lib/accounts/auth-operation-lock.d.ts +0 -1
  290. package/dist/lib/accounts/auth-operation-lock.js +0 -4
  291. package/dist/lib/accounts/migrate.d.ts +0 -9
  292. package/dist/lib/accounts/migrate.js +3 -42
  293. package/dist/lib/accounts/slots.d.ts +0 -25
  294. package/dist/lib/accounts/slots.js +1 -49
  295. package/dist/lib/acp/client.d.ts +0 -16
  296. package/dist/lib/acp/client.js +0 -29
  297. package/dist/lib/acp/harnesses.d.ts +0 -15
  298. package/dist/lib/acp/harnesses.js +0 -16
  299. package/dist/lib/acp/run.d.ts +0 -8
  300. package/dist/lib/acp/run.js +0 -8
  301. package/dist/lib/actor.d.ts +1 -71
  302. package/dist/lib/actor.js +1 -99
  303. package/dist/lib/add-dir.d.ts +0 -46
  304. package/dist/lib/add-dir.js +1 -70
  305. package/dist/lib/address.d.ts +0 -17
  306. package/dist/lib/address.js +0 -15
  307. package/dist/lib/agent-cli-commands.d.ts +0 -10
  308. package/dist/lib/agent-cli-commands.js +0 -10
  309. package/dist/lib/agent-modes.d.ts +0 -29
  310. package/dist/lib/agent-modes.js +0 -31
  311. package/dist/lib/agent-spec/agents.d.ts +0 -426
  312. package/dist/lib/agent-spec/agents.js +37 -924
  313. package/dist/lib/agent-spec/index.d.ts +0 -5
  314. package/dist/lib/agent-spec/index.js +0 -14
  315. package/dist/lib/agent-spec/materialize.d.ts +0 -10
  316. package/dist/lib/agent-spec/materialize.js +2 -139
  317. package/dist/lib/agent-spec/package-resolve.d.ts +0 -8
  318. package/dist/lib/agent-spec/package-resolve.js +1 -44
  319. package/dist/lib/agent-spec/package-schema.d.ts +0 -2
  320. package/dist/lib/agent-spec/package-schema.js +0 -11
  321. package/dist/lib/agent-spec/package-types.d.ts +0 -27
  322. package/dist/lib/agent-spec/package-types.js +0 -1
  323. package/dist/lib/agent-spec/primitives.d.ts +0 -18
  324. package/dist/lib/agent-spec/primitives.js +0 -27
  325. package/dist/lib/agent-spec/provider.js +0 -2
  326. package/dist/lib/agent-spec/resolve.d.ts +0 -23
  327. package/dist/lib/agent-spec/resolve.js +0 -41
  328. package/dist/lib/agent-spec/types.d.ts +0 -34
  329. package/dist/lib/agent-spec/types.js +0 -6
  330. package/dist/lib/agents.d.ts +0 -1
  331. package/dist/lib/agents.js +0 -1
  332. package/dist/lib/analytics/mix-commands.d.ts +0 -23
  333. package/dist/lib/analytics/mix-commands.js +0 -26
  334. package/dist/lib/analytics/recipes.d.ts +0 -1
  335. package/dist/lib/analytics/recipes.js +5 -10
  336. package/dist/lib/analytics/usage-db.js +4 -6
  337. package/dist/lib/answer-router.d.ts +0 -61
  338. package/dist/lib/answer-router.js +0 -57
  339. package/dist/lib/app-bundle-install.d.ts +0 -13
  340. package/dist/lib/app-bundle-install.js +0 -50
  341. package/dist/lib/artifact-actions.d.ts +0 -15
  342. package/dist/lib/artifact-actions.js +0 -18
  343. package/dist/lib/artifacts-client.d.ts +0 -10
  344. package/dist/lib/artifacts-client.js +0 -17
  345. package/dist/lib/ask-classifier.d.ts +0 -38
  346. package/dist/lib/ask-classifier.js +0 -27
  347. package/dist/lib/audit/log.d.ts +0 -47
  348. package/dist/lib/audit/log.js +1 -59
  349. package/dist/lib/auth-health.d.ts +0 -213
  350. package/dist/lib/auth-health.js +16 -266
  351. package/dist/lib/auth-mint.d.ts +0 -83
  352. package/dist/lib/auth-mint.js +8 -85
  353. package/dist/lib/auto-pull-worker.d.ts +0 -10
  354. package/dist/lib/auto-pull-worker.js +3 -48
  355. package/dist/lib/auto-pull.d.ts +0 -64
  356. package/dist/lib/auto-pull.js +0 -79
  357. package/dist/lib/beta.d.ts +0 -9
  358. package/dist/lib/beta.js +0 -9
  359. package/dist/lib/binary-shadow.d.ts +0 -22
  360. package/dist/lib/binary-shadow.js +4 -34
  361. package/dist/lib/boot-profile.d.ts +0 -10
  362. package/dist/lib/boot-profile.js +1 -31
  363. package/dist/lib/brand.d.ts +0 -20
  364. package/dist/lib/brand.js +0 -50
  365. package/dist/lib/browser/context.d.ts +0 -54
  366. package/dist/lib/browser/context.js +0 -49
  367. package/dist/lib/browser/paths.d.ts +0 -21
  368. package/dist/lib/browser/paths.js +0 -26
  369. package/dist/lib/browser/record.d.ts +0 -34
  370. package/dist/lib/browser/record.js +0 -38
  371. package/dist/lib/browser/sessions-list.d.ts +1 -79
  372. package/dist/lib/browser/sessions-list.js +2 -98
  373. package/dist/lib/browser-client.d.ts +0 -112
  374. package/dist/lib/browser-client.js +1 -90
  375. package/dist/lib/budget/config.d.ts +0 -6
  376. package/dist/lib/budget/config.js +0 -29
  377. package/dist/lib/budget/enforce.d.ts +0 -50
  378. package/dist/lib/budget/enforce.js +0 -27
  379. package/dist/lib/budget/ledger.d.ts +0 -23
  380. package/dist/lib/budget/ledger.js +0 -28
  381. package/dist/lib/budget/live-cloud.d.ts +0 -26
  382. package/dist/lib/budget/live-cloud.js +0 -12
  383. package/dist/lib/budget/live-team.d.ts +0 -17
  384. package/dist/lib/budget/live-team.js +1 -35
  385. package/dist/lib/budget/preflight.d.ts +0 -51
  386. package/dist/lib/budget/preflight.js +0 -36
  387. package/dist/lib/byok-usage.d.ts +0 -20
  388. package/dist/lib/byok-usage.js +1 -24
  389. package/dist/lib/capabilities.d.ts +0 -24
  390. package/dist/lib/capabilities.js +0 -29
  391. package/dist/lib/catchup.d.ts +0 -87
  392. package/dist/lib/catchup.js +1 -81
  393. package/dist/lib/channels/owner-forward.d.ts +0 -70
  394. package/dist/lib/channels/owner-forward.js +1 -43
  395. package/dist/lib/channels/owner-sink.js +0 -21
  396. package/dist/lib/channels/providers/desktop.d.ts +0 -37
  397. package/dist/lib/channels/providers/desktop.js +0 -72
  398. package/dist/lib/channels/providers/index.d.ts +0 -1
  399. package/dist/lib/channels/providers/index.js +2 -6
  400. package/dist/lib/channels/providers/mailbox.js +0 -7
  401. package/dist/lib/channels/providers/openclaw-telegram.js +0 -8
  402. package/dist/lib/channels/providers/rush.d.ts +0 -2
  403. package/dist/lib/channels/providers/rush.js +0 -26
  404. package/dist/lib/channels/providers/session.d.ts +2 -0
  405. package/dist/lib/channels/providers/session.js +26 -0
  406. package/dist/lib/channels/registry.d.ts +0 -27
  407. package/dist/lib/channels/registry.js +0 -10
  408. package/dist/lib/channels/resolve.d.ts +0 -19
  409. package/dist/lib/channels/resolve.js +0 -2
  410. package/dist/lib/channels/send.d.ts +0 -50
  411. package/dist/lib/channels/send.js +0 -25
  412. package/dist/lib/checkpoint.d.ts +0 -36
  413. package/dist/lib/checkpoint.js +0 -28
  414. package/dist/lib/claude-account-token.d.ts +0 -98
  415. package/dist/lib/claude-account-token.js +7 -169
  416. package/dist/lib/claude-statusline.d.ts +0 -41
  417. package/dist/lib/claude-statusline.js +0 -68
  418. package/dist/lib/cli-entry.d.ts +0 -26
  419. package/dist/lib/cli-entry.js +1 -61
  420. package/dist/lib/cli-resources.d.ts +31 -89
  421. package/dist/lib/cli-resources.js +116 -152
  422. package/dist/lib/cloud/antigravity.d.ts +0 -29
  423. package/dist/lib/cloud/antigravity.js +0 -36
  424. package/dist/lib/cloud/codex.d.ts +0 -8
  425. package/dist/lib/cloud/codex.js +0 -41
  426. package/dist/lib/cloud/cursor.d.ts +0 -5
  427. package/dist/lib/cloud/cursor.js +2 -7
  428. package/dist/lib/cloud/dispatch.d.ts +0 -13
  429. package/dist/lib/cloud/dispatch.js +1 -48
  430. package/dist/lib/cloud/factory.d.ts +0 -52
  431. package/dist/lib/cloud/factory.js +3 -67
  432. package/dist/lib/cloud/host.d.ts +0 -39
  433. package/dist/lib/cloud/host.js +5 -48
  434. package/dist/lib/cloud/registry.d.ts +0 -25
  435. package/dist/lib/cloud/registry.js +0 -29
  436. package/dist/lib/cloud/rush.d.ts +0 -47
  437. package/dist/lib/cloud/rush.js +1 -82
  438. package/dist/lib/cloud/session-index.d.ts +0 -27
  439. package/dist/lib/cloud/session-index.js +1 -32
  440. package/dist/lib/cloud/store.d.ts +0 -18
  441. package/dist/lib/cloud/store.js +0 -28
  442. package/dist/lib/cloud/stream.d.ts +0 -14
  443. package/dist/lib/cloud/stream.js +0 -25
  444. package/dist/lib/cloud/types.d.ts +0 -168
  445. package/dist/lib/cloud/types.js +0 -46
  446. package/dist/lib/cloudflare/creds.d.ts +0 -2
  447. package/dist/lib/cloudflare/creds.js +0 -14
  448. package/dist/lib/cloudflare/provision.d.ts +0 -8
  449. package/dist/lib/cloudflare/provision.js +1 -19
  450. package/dist/lib/codex-home.d.ts +0 -60
  451. package/dist/lib/codex-home.js +2 -72
  452. package/dist/lib/codex-policy.d.ts +0 -10
  453. package/dist/lib/codex-policy.js +0 -13
  454. package/dist/lib/command-skills.d.ts +0 -10
  455. package/dist/lib/command-skills.js +0 -10
  456. package/dist/lib/commands.d.ts +0 -74
  457. package/dist/lib/commands.js +0 -112
  458. package/dist/lib/comms-render.d.ts +0 -5
  459. package/dist/lib/comms-render.js +0 -5
  460. package/dist/lib/computer/context.d.ts +0 -23
  461. package/dist/lib/computer/context.js +0 -14
  462. package/dist/lib/computer/policy.d.ts +0 -20
  463. package/dist/lib/computer/policy.js +0 -53
  464. package/dist/lib/computer/record.d.ts +0 -33
  465. package/dist/lib/computer/record.js +1 -48
  466. package/dist/lib/computer/sessions-list.d.ts +1 -128
  467. package/dist/lib/computer/sessions-list.js +6 -165
  468. package/dist/lib/computer-client.d.ts +0 -106
  469. package/dist/lib/computer-client.js +5 -86
  470. package/dist/lib/concurrency.d.ts +0 -14
  471. package/dist/lib/concurrency.js +0 -3
  472. package/dist/lib/config-drift.d.ts +0 -31
  473. package/dist/lib/config-drift.js +0 -32
  474. package/dist/lib/config-keys.d.ts +1 -65
  475. package/dist/lib/config-keys.js +6 -52
  476. package/dist/lib/config-transfer.d.ts +0 -14
  477. package/dist/lib/config-transfer.js +0 -26
  478. package/dist/lib/convert.d.ts +0 -17
  479. package/dist/lib/convert.js +0 -18
  480. package/dist/lib/crabbox/cli.d.ts +0 -156
  481. package/dist/lib/crabbox/cli.js +1 -188
  482. package/dist/lib/crabbox/config.d.ts +0 -18
  483. package/dist/lib/crabbox/config.js +1 -19
  484. package/dist/lib/crabbox/lease.d.ts +0 -93
  485. package/dist/lib/crabbox/lease.js +4 -148
  486. package/dist/lib/crabbox/progress.d.ts +0 -56
  487. package/dist/lib/crabbox/progress.js +2 -49
  488. package/dist/lib/crabbox/runtimes.d.ts +0 -94
  489. package/dist/lib/crabbox/runtimes.js +1 -111
  490. package/dist/lib/crabbox/setup-copy.d.ts +0 -64
  491. package/dist/lib/crabbox/setup-copy.js +1 -53
  492. package/dist/lib/daemon/account-state-daemon-service.d.ts +0 -48
  493. package/dist/lib/daemon/account-state-daemon-service.js +2 -63
  494. package/dist/lib/daemon/attention-notify-service.d.ts +0 -12
  495. package/dist/lib/daemon/attention-notify-service.js +1 -24
  496. package/dist/lib/daemon/auth-sync-service.d.ts +0 -28
  497. package/dist/lib/daemon/auth-sync-service.js +0 -56
  498. package/dist/lib/daemon/catchup-service.d.ts +0 -34
  499. package/dist/lib/daemon/catchup-service.js +0 -30
  500. package/dist/lib/daemon/daemon.d.ts +0 -374
  501. package/dist/lib/daemon/daemon.js +44 -1049
  502. package/dist/lib/daemon/daemon.test-fixture.d.ts +0 -19
  503. package/dist/lib/daemon/daemon.test-fixture.js +1 -24
  504. package/dist/lib/daemon/device-probe-service.d.ts +0 -16
  505. package/dist/lib/daemon/device-probe-service.js +0 -20
  506. package/dist/lib/daemon/feed-stream-service.d.ts +0 -15
  507. package/dist/lib/daemon/feed-stream-service.js +0 -20
  508. package/dist/lib/daemon/harness-update-service.d.ts +2 -61
  509. package/dist/lib/daemon/harness-update-service.js +6 -86
  510. package/dist/lib/daemon/heartbeat-service.d.ts +0 -1
  511. package/dist/lib/daemon/heartbeat-service.js +0 -1
  512. package/dist/lib/daemon/leaked-daemons.d.ts +0 -46
  513. package/dist/lib/daemon/leaked-daemons.js +2 -78
  514. package/dist/lib/daemon/monitor-engine-service.d.ts +0 -13
  515. package/dist/lib/daemon/monitor-engine-service.js +3 -15
  516. package/dist/lib/daemon/runner.d.ts +0 -194
  517. package/dist/lib/daemon/runner.js +39 -760
  518. package/dist/lib/daemon/self-heal-service.d.ts +18 -17
  519. package/dist/lib/daemon/self-heal-service.js +83 -37
  520. package/dist/lib/daemon/self-update-service.d.ts +1 -131
  521. package/dist/lib/daemon/self-update-service.js +26 -189
  522. package/dist/lib/daemon/service.d.ts +0 -73
  523. package/dist/lib/daemon/service.js +0 -34
  524. package/dist/lib/daemon/session-index-service.d.ts +0 -12
  525. package/dist/lib/daemon/session-index-service.js +0 -23
  526. package/dist/lib/daemon/session-state-service.d.ts +0 -8
  527. package/dist/lib/daemon/session-state-service.js +0 -8
  528. package/dist/lib/daemon/session-summarizer-service.d.ts +0 -14
  529. package/dist/lib/daemon/session-summarizer-service.js +1 -19
  530. package/dist/lib/daemon/session-title-service.d.ts +0 -25
  531. package/dist/lib/daemon/session-title-service.js +0 -32
  532. package/dist/lib/daemon/state-dir-check-service.d.ts +0 -24
  533. package/dist/lib/daemon/state-dir-check-service.js +0 -29
  534. package/dist/lib/daemon/supervisor.d.ts +0 -112
  535. package/dist/lib/daemon/supervisor.js +4 -147
  536. package/dist/lib/daemon/testdata/process-view-daemon.js +0 -2
  537. package/dist/lib/daemon/testdata/process-view-start.js +0 -5
  538. package/dist/lib/daemon/tmux-reap-service.d.ts +0 -1
  539. package/dist/lib/daemon/tmux-reap-service.js +0 -1
  540. package/dist/lib/daemon/usage-sync-service.d.ts +0 -23
  541. package/dist/lib/daemon/usage-sync-service.js +0 -26
  542. package/dist/lib/daemon/watchdog-service.d.ts +0 -9
  543. package/dist/lib/daemon/watchdog-service.js +0 -13
  544. package/dist/lib/daemon/webhook-receiver-service.d.ts +0 -1
  545. package/dist/lib/daemon/webhook-receiver-service.js +0 -1
  546. package/dist/lib/daemon-health.d.ts +0 -55
  547. package/dist/lib/daemon-health.js +4 -77
  548. package/dist/lib/daemon-services.d.ts +0 -36
  549. package/dist/lib/daemon-services.js +0 -45
  550. package/dist/lib/daemon-ticks.d.ts +0 -126
  551. package/dist/lib/daemon-ticks.js +1 -156
  552. package/dist/lib/daemon-webhooks.d.ts +0 -57
  553. package/dist/lib/daemon-webhooks.js +2 -54
  554. package/dist/lib/deeplink/register.d.ts +0 -15
  555. package/dist/lib/deeplink/register.js +0 -60
  556. package/dist/lib/deeplink/url.d.ts +0 -24
  557. package/dist/lib/deeplink/url.js +1 -33
  558. package/dist/lib/device-config.d.ts +1 -192
  559. package/dist/lib/device-config.js +86 -240
  560. package/dist/lib/devices/config-migration.d.ts +0 -43
  561. package/dist/lib/devices/config-migration.js +7 -127
  562. package/dist/lib/devices/connect.d.ts +0 -168
  563. package/dist/lib/devices/connect.js +6 -254
  564. package/dist/lib/devices/device-docs.d.ts +0 -24
  565. package/dist/lib/devices/device-docs.js +0 -46
  566. package/dist/lib/devices/discovery-policy.d.ts +0 -30
  567. package/dist/lib/devices/discovery-policy.js +3 -34
  568. package/dist/lib/devices/doctor-findings.d.ts +0 -109
  569. package/dist/lib/devices/doctor-findings.js +30 -326
  570. package/dist/lib/devices/doctor-overview-cache.d.ts +0 -33
  571. package/dist/lib/devices/doctor-overview-cache.js +0 -81
  572. package/dist/lib/devices/fleet-divergence.d.ts +0 -89
  573. package/dist/lib/devices/fleet-divergence.js +1 -60
  574. package/dist/lib/devices/fleet-inventory.d.ts +0 -27
  575. package/dist/lib/devices/fleet-inventory.js +0 -38
  576. package/dist/lib/devices/fleet.d.ts +0 -95
  577. package/dist/lib/devices/fleet.js +0 -79
  578. package/dist/lib/devices/harness-inventory.d.ts +0 -75
  579. package/dist/lib/devices/harness-inventory.js +0 -101
  580. package/dist/lib/devices/health-report.d.ts +0 -37
  581. package/dist/lib/devices/health-report.js +0 -73
  582. package/dist/lib/devices/health.d.ts +0 -71
  583. package/dist/lib/devices/health.js +2 -82
  584. package/dist/lib/devices/interactive-host.d.ts +0 -10
  585. package/dist/lib/devices/interactive-host.js +0 -34
  586. package/dist/lib/devices/known-hosts.d.ts +0 -45
  587. package/dist/lib/devices/known-hosts.js +0 -77
  588. package/dist/lib/devices/pending.d.ts +0 -31
  589. package/dist/lib/devices/pending.js +7 -67
  590. package/dist/lib/devices/pool.d.ts +0 -36
  591. package/dist/lib/devices/pool.js +0 -30
  592. package/dist/lib/devices/reachability.d.ts +0 -25
  593. package/dist/lib/devices/reachability.js +0 -14
  594. package/dist/lib/devices/registry.d.ts +0 -141
  595. package/dist/lib/devices/registry.js +4 -151
  596. package/dist/lib/devices/resolve-profile.d.ts +0 -18
  597. package/dist/lib/devices/resolve-profile.js +0 -18
  598. package/dist/lib/devices/resolve-target.d.ts +0 -20
  599. package/dist/lib/devices/resolve-target.js +1 -51
  600. package/dist/lib/devices/rollout-verify.d.ts +1 -81
  601. package/dist/lib/devices/rollout-verify.js +0 -77
  602. package/dist/lib/devices/self-host.d.ts +0 -7
  603. package/dist/lib/devices/self-host.js +1 -29
  604. package/dist/lib/devices/ssh-config.d.ts +0 -18
  605. package/dist/lib/devices/ssh-config.js +0 -9
  606. package/dist/lib/devices/stats-cache.d.ts +0 -48
  607. package/dist/lib/devices/stats-cache.js +0 -80
  608. package/dist/lib/devices/sync.d.ts +0 -97
  609. package/dist/lib/devices/sync.js +0 -88
  610. package/dist/lib/devices/tailscale.d.ts +0 -18
  611. package/dist/lib/devices/tailscale.js +1 -38
  612. package/dist/lib/devices/terminfo.d.ts +0 -27
  613. package/dist/lib/devices/terminfo.js +2 -64
  614. package/dist/lib/devices/worker-pick.d.ts +0 -15
  615. package/dist/lib/devices/worker-pick.js +0 -48
  616. package/dist/lib/diff-text.d.ts +0 -18
  617. package/dist/lib/diff-text.js +0 -15
  618. package/dist/lib/doctor-diff.d.ts +0 -79
  619. package/dist/lib/doctor-diff.js +2 -181
  620. package/dist/lib/drift-sync.d.ts +0 -29
  621. package/dist/lib/drift-sync.js +0 -40
  622. package/dist/lib/drift.d.ts +0 -43
  623. package/dist/lib/drift.js +0 -31
  624. package/dist/lib/event-families.d.ts +0 -17
  625. package/dist/lib/event-families.js +0 -33
  626. package/dist/lib/event-provenance.d.ts +0 -4
  627. package/dist/lib/event-provenance.js +0 -5
  628. package/dist/lib/event-stream.d.ts +0 -29
  629. package/dist/lib/event-stream.js +0 -36
  630. package/dist/lib/events-ingest.d.ts +0 -27
  631. package/dist/lib/events-ingest.js +0 -54
  632. package/dist/lib/exec-account-home.d.ts +0 -24
  633. package/dist/lib/exec-account-home.js +0 -41
  634. package/dist/lib/exec-bounded.d.ts +1 -37
  635. package/dist/lib/exec-bounded.js +10 -46
  636. package/dist/lib/exec.d.ts +3 -583
  637. package/dist/lib/exec.js +18 -1025
  638. package/dist/lib/factory/snapshot.js +1 -15
  639. package/dist/lib/feed/activity-stream.d.ts +0 -27
  640. package/dist/lib/feed/activity-stream.js +4 -80
  641. package/dist/lib/feed/activity.d.ts +1 -243
  642. package/dist/lib/feed/activity.js +8 -273
  643. package/dist/lib/feed/answer.d.ts +0 -103
  644. package/dist/lib/feed/answer.js +0 -267
  645. package/dist/lib/feed/attention.d.ts +0 -56
  646. package/dist/lib/feed/attention.js +0 -161
  647. package/dist/lib/feed/envelope.d.ts +2 -17
  648. package/dist/lib/feed/envelope.js +0 -14
  649. package/dist/lib/feed/events.d.ts +0 -118
  650. package/dist/lib/feed/events.js +13 -213
  651. package/dist/lib/feed/feed.d.ts +1 -250
  652. package/dist/lib/feed/feed.js +24 -334
  653. package/dist/lib/feed/hub-server.d.ts +0 -100
  654. package/dist/lib/feed/hub-server.js +1 -191
  655. package/dist/lib/feed/hub.d.ts +0 -53
  656. package/dist/lib/feed/hub.js +0 -89
  657. package/dist/lib/feed/pr-status.d.ts +1 -19
  658. package/dist/lib/feed/pr-status.js +0 -18
  659. package/dist/lib/feed/tool-activity.d.ts +0 -59
  660. package/dist/lib/feed/tool-activity.js +1 -119
  661. package/dist/lib/feed/tools.d.ts +0 -100
  662. package/dist/lib/feed/tools.js +0 -89
  663. package/dist/lib/feed/watch.d.ts +0 -33
  664. package/dist/lib/feed/watch.js +2 -94
  665. package/dist/lib/feed-broadcast.d.ts +0 -148
  666. package/dist/lib/feed-broadcast.js +1 -283
  667. package/dist/lib/feed-outcome.d.ts +0 -50
  668. package/dist/lib/feed-outcome.js +1 -67
  669. package/dist/lib/feed-policy.d.ts +0 -6
  670. package/dist/lib/feed-policy.js +1 -27
  671. package/dist/lib/feed-post.d.ts +0 -61
  672. package/dist/lib/feed-post.js +4 -61
  673. package/dist/lib/feed-ranking.d.ts +1 -1
  674. package/dist/lib/fleet/apply.d.ts +0 -64
  675. package/dist/lib/fleet/apply.js +0 -125
  676. package/dist/lib/fleet/auth-sync.d.ts +0 -48
  677. package/dist/lib/fleet/auth-sync.js +4 -49
  678. package/dist/lib/fleet/capture.d.ts +0 -26
  679. package/dist/lib/fleet/capture.js +1 -36
  680. package/dist/lib/fleet/manifest.d.ts +0 -38
  681. package/dist/lib/fleet/manifest.js +0 -40
  682. package/dist/lib/fleet/types.d.ts +1 -138
  683. package/dist/lib/fleet/types.js +0 -12
  684. package/dist/lib/fleet-cache.d.ts +0 -12
  685. package/dist/lib/fleet-cache.js +0 -24
  686. package/dist/lib/fleet-shared-state.d.ts +6 -59
  687. package/dist/lib/fleet-shared-state.js +5 -51
  688. package/dist/lib/fleet-status.d.ts +0 -27
  689. package/dist/lib/fleet-status.js +0 -48
  690. package/dist/lib/format.d.ts +0 -74
  691. package/dist/lib/format.js +3 -77
  692. package/dist/lib/friction-heuristics.d.ts +0 -20
  693. package/dist/lib/friction-heuristics.js +0 -8
  694. package/dist/lib/fs-atomic.d.ts +0 -51
  695. package/dist/lib/fs-atomic.js +8 -66
  696. package/dist/lib/fs-walk.d.ts +0 -13
  697. package/dist/lib/fs-walk.js +0 -22
  698. package/dist/lib/fuzzy.d.ts +0 -29
  699. package/dist/lib/fuzzy.js +0 -31
  700. package/dist/lib/gemini-settings.js +0 -12
  701. package/dist/lib/git.d.ts +0 -366
  702. package/dist/lib/git.js +7 -574
  703. package/dist/lib/github/ci-failure.d.ts +30 -0
  704. package/dist/lib/github/ci-failure.js +95 -0
  705. package/dist/lib/github/gh-overload.d.ts +0 -38
  706. package/dist/lib/github/gh-overload.js +3 -55
  707. package/dist/lib/github/pr-mergeable.d.ts +3 -34
  708. package/dist/lib/github/pr-mergeable.js +2 -42
  709. package/dist/lib/github/pr-verdict.d.ts +0 -44
  710. package/dist/lib/github/pr-verdict.js +0 -36
  711. package/dist/lib/github/project-prs.d.ts +135 -105
  712. package/dist/lib/github/project-prs.js +530 -170
  713. package/dist/lib/github/release-drift.d.ts +45 -0
  714. package/dist/lib/github/release-drift.js +91 -0
  715. package/dist/lib/github/rest.d.ts +0 -50
  716. package/dist/lib/github/rest.js +0 -49
  717. package/dist/lib/github/viewer.d.ts +27 -0
  718. package/dist/lib/github/viewer.js +101 -0
  719. package/dist/lib/goose-commands.d.ts +0 -29
  720. package/dist/lib/goose-commands.js +3 -48
  721. package/dist/lib/harness/adapter.d.ts +0 -151
  722. package/dist/lib/harness/adapter.js +0 -41
  723. package/dist/lib/harness/adapters/claude.d.ts +0 -8
  724. package/dist/lib/harness/adapters/claude.js +0 -89
  725. package/dist/lib/harness/adapters/codex.js +0 -18
  726. package/dist/lib/harness/adapters/copilot.js +0 -3
  727. package/dist/lib/harness/adapters/cursor.js +0 -16
  728. package/dist/lib/harness/adapters/droid.js +0 -3
  729. package/dist/lib/harness/adapters/kimi.js +0 -19
  730. package/dist/lib/harness/adapters/muse.js +0 -9
  731. package/dist/lib/harness/adapters/opencode.js +0 -2
  732. package/dist/lib/harness/exec-config-version.d.ts +0 -2
  733. package/dist/lib/harness/exec-config-version.js +0 -13
  734. package/dist/lib/harness/index.js +0 -10
  735. package/dist/lib/harness-auth-capabilities.d.ts +0 -26
  736. package/dist/lib/harness-auth-capabilities.js +0 -18
  737. package/dist/lib/harness-connection-test.d.ts +0 -27
  738. package/dist/lib/harness-connection-test.js +2 -20
  739. package/dist/lib/heal.d.ts +0 -45
  740. package/dist/lib/heal.js +2 -82
  741. package/dist/lib/help.d.ts +0 -32
  742. package/dist/lib/help.js +0 -41
  743. package/dist/lib/helper-download.d.ts +0 -85
  744. package/dist/lib/helper-download.js +0 -95
  745. package/dist/lib/helper-versions.d.ts +0 -51
  746. package/dist/lib/helper-versions.js +1 -45
  747. package/dist/lib/hooks/cache.d.ts +0 -40
  748. package/dist/lib/hooks/cache.js +8 -122
  749. package/dist/lib/hooks/install.d.ts +0 -253
  750. package/dist/lib/hooks/install.js +49 -822
  751. package/dist/lib/hooks/match.d.ts +0 -24
  752. package/dist/lib/hooks/match.js +0 -31
  753. package/dist/lib/hooks/profile.d.ts +0 -21
  754. package/dist/lib/hooks/profile.js +0 -28
  755. package/dist/lib/hosts/credential-transport.d.ts +0 -6
  756. package/dist/lib/hosts/credential-transport.js +0 -17
  757. package/dist/lib/hosts/credentials.d.ts +0 -35
  758. package/dist/lib/hosts/credentials.js +0 -38
  759. package/dist/lib/hosts/dispatch.d.ts +0 -140
  760. package/dist/lib/hosts/dispatch.js +0 -176
  761. package/dist/lib/hosts/logs.d.ts +0 -25
  762. package/dist/lib/hosts/logs.js +1 -51
  763. package/dist/lib/hosts/option.d.ts +0 -12
  764. package/dist/lib/hosts/option.js +0 -12
  765. package/dist/lib/hosts/passthrough.d.ts +0 -129
  766. package/dist/lib/hosts/passthrough.js +12 -249
  767. package/dist/lib/hosts/progress.d.ts +0 -90
  768. package/dist/lib/hosts/progress.js +5 -115
  769. package/dist/lib/hosts/providers/devices.d.ts +0 -19
  770. package/dist/lib/hosts/providers/devices.js +1 -34
  771. package/dist/lib/hosts/providers/local.d.ts +0 -14
  772. package/dist/lib/hosts/providers/local.js +0 -22
  773. package/dist/lib/hosts/ready.d.ts +0 -99
  774. package/dist/lib/hosts/ready.js +0 -101
  775. package/dist/lib/hosts/reconcile.d.ts +0 -38
  776. package/dist/lib/hosts/reconcile.js +1 -50
  777. package/dist/lib/hosts/reconnect.d.ts +0 -75
  778. package/dist/lib/hosts/reconnect.js +0 -98
  779. package/dist/lib/hosts/registry.d.ts +0 -74
  780. package/dist/lib/hosts/registry.js +0 -110
  781. package/dist/lib/hosts/remote-cmd.d.ts +1 -228
  782. package/dist/lib/hosts/remote-cmd.js +19 -294
  783. package/dist/lib/hosts/remote-cmd.test-fixture.d.ts +0 -1
  784. package/dist/lib/hosts/remote-cmd.test-fixture.js +0 -12
  785. package/dist/lib/hosts/remote-os.d.ts +0 -19
  786. package/dist/lib/hosts/remote-os.js +0 -22
  787. package/dist/lib/hosts/remote-session-id.d.ts +0 -22
  788. package/dist/lib/hosts/remote-session-id.js +0 -24
  789. package/dist/lib/hosts/routing-flag.d.ts +0 -21
  790. package/dist/lib/hosts/routing-flag.js +0 -21
  791. package/dist/lib/hosts/run-target.d.ts +0 -53
  792. package/dist/lib/hosts/run-target.js +0 -56
  793. package/dist/lib/hosts/session-index.d.ts +1 -53
  794. package/dist/lib/hosts/session-index.js +2 -59
  795. package/dist/lib/hosts/session-marker.d.ts +0 -31
  796. package/dist/lib/hosts/session-marker.js +0 -32
  797. package/dist/lib/hosts/ssh-config.d.ts +0 -25
  798. package/dist/lib/hosts/ssh-config.js +1 -32
  799. package/dist/lib/hosts/tasks.d.ts +0 -54
  800. package/dist/lib/hosts/tasks.js +0 -35
  801. package/dist/lib/hosts/types.d.ts +0 -39
  802. package/dist/lib/hosts/types.js +0 -22
  803. package/dist/lib/humans.d.ts +0 -21
  804. package/dist/lib/humans.js +0 -30
  805. package/dist/lib/identity/client.d.ts +1 -35
  806. package/dist/lib/identity/client.js +3 -29
  807. package/dist/lib/identity/index.d.ts +3 -27
  808. package/dist/lib/identity/index.js +8 -24
  809. package/dist/lib/import.d.ts +0 -104
  810. package/dist/lib/import.js +1 -137
  811. package/dist/lib/installations/active-check.d.ts +0 -53
  812. package/dist/lib/installations/active-check.js +0 -49
  813. package/dist/lib/installations/index.d.ts +0 -9
  814. package/dist/lib/installations/index.js +0 -9
  815. package/dist/lib/installations/installation-lock.js +0 -8
  816. package/dist/lib/installations/launch-gate.d.ts +0 -56
  817. package/dist/lib/installations/launch-gate.js +0 -83
  818. package/dist/lib/installations/migrate.d.ts +0 -100
  819. package/dist/lib/installations/migrate.js +105 -572
  820. package/dist/lib/installations/native-command.d.ts +0 -1
  821. package/dist/lib/installations/native-command.js +0 -6
  822. package/dist/lib/installations/resolve.d.ts +0 -24
  823. package/dist/lib/installations/resolve.js +0 -24
  824. package/dist/lib/installations/shims.d.ts +0 -395
  825. package/dist/lib/installations/shims.js +30 -957
  826. package/dist/lib/installations/store.d.ts +0 -199
  827. package/dist/lib/installations/store.js +1 -297
  828. package/dist/lib/installations/strategies.d.ts +0 -44
  829. package/dist/lib/installations/strategies.js +0 -87
  830. package/dist/lib/installations/types.d.ts +1 -67
  831. package/dist/lib/installations/types.js +0 -6
  832. package/dist/lib/installations/update-cancellation.d.ts +0 -74
  833. package/dist/lib/installations/update-cancellation.js +0 -74
  834. package/dist/lib/installations/update-policy.d.ts +0 -57
  835. package/dist/lib/installations/update-policy.js +0 -62
  836. package/dist/lib/installations/update-runtime.d.ts +0 -88
  837. package/dist/lib/installations/update-runtime.js +1 -127
  838. package/dist/lib/installations/update.d.ts +0 -53
  839. package/dist/lib/installations/update.js +0 -95
  840. package/dist/lib/installations/versions.d.ts +0 -310
  841. package/dist/lib/installations/versions.js +14 -837
  842. package/dist/lib/isolation-boundary-report.d.ts +0 -7
  843. package/dist/lib/isolation-boundary-report.js +0 -7
  844. package/dist/lib/launch-identity.d.ts +0 -8
  845. package/dist/lib/launch-identity.js +0 -8
  846. package/dist/lib/linear-autoclose.d.ts +0 -25
  847. package/dist/lib/linear-autoclose.js +0 -19
  848. package/dist/lib/linear-cache.d.ts +0 -57
  849. package/dist/lib/linear-cache.js +1 -81
  850. package/dist/lib/linear-project-counts.d.ts +0 -83
  851. package/dist/lib/linear-project-counts.js +2 -64
  852. package/dist/lib/linear-projects.d.ts +0 -62
  853. package/dist/lib/linear-projects.js +0 -85
  854. package/dist/lib/linear-rate-limit.d.ts +0 -21
  855. package/dist/lib/linear-rate-limit.js +1 -93
  856. package/dist/lib/linux-userns.d.ts +1 -42
  857. package/dist/lib/linux-userns.js +0 -47
  858. package/dist/lib/lock-compromise.d.ts +0 -7
  859. package/dist/lib/lock-compromise.js +0 -7
  860. package/dist/lib/log-follow.d.ts +0 -2
  861. package/dist/lib/log-follow.js +5 -15
  862. package/dist/lib/loop.d.ts +0 -106
  863. package/dist/lib/loop.js +0 -135
  864. package/dist/lib/machine-id.d.ts +0 -19
  865. package/dist/lib/machine-id.js +0 -19
  866. package/dist/lib/mailbox-gc.d.ts +0 -7
  867. package/dist/lib/mailbox-gc.js +0 -25
  868. package/dist/lib/mailbox-target.d.ts +0 -31
  869. package/dist/lib/mailbox-target.js +0 -27
  870. package/dist/lib/mailbox.d.ts +0 -77
  871. package/dist/lib/mailbox.js +5 -105
  872. package/dist/lib/manifest.d.ts +0 -4
  873. package/dist/lib/manifest.js +0 -36
  874. package/dist/lib/markdown.d.ts +0 -3
  875. package/dist/lib/markdown.js +0 -9
  876. package/dist/lib/mcp-registry.d.ts +1 -50
  877. package/dist/lib/mcp-registry.js +0 -64
  878. package/dist/lib/mcp.d.ts +0 -115
  879. package/dist/lib/mcp.js +3 -199
  880. package/dist/lib/memory-cache.d.ts +0 -11
  881. package/dist/lib/memory-cache.js +0 -9
  882. package/dist/lib/memory.d.ts +0 -52
  883. package/dist/lib/memory.js +12 -74
  884. package/dist/lib/menubar/download-menubar.d.ts +0 -35
  885. package/dist/lib/menubar/download-menubar.js +0 -38
  886. package/dist/lib/menubar/install-menubar.d.ts +0 -405
  887. package/dist/lib/menubar/install-menubar.js +25 -667
  888. package/dist/lib/menubar/migrate-prefs.d.ts +0 -47
  889. package/dist/lib/menubar/migrate-prefs.js +1 -70
  890. package/dist/lib/menubar/notify-desktop.d.ts +0 -82
  891. package/dist/lib/menubar/notify-desktop.js +0 -68
  892. package/dist/lib/menubar/resolve-version.d.ts +0 -41
  893. package/dist/lib/menubar/resolve-version.js +2 -44
  894. package/dist/lib/menubar/snapshot.d.ts +13 -66
  895. package/dist/lib/menubar/snapshot.js +45 -39
  896. package/dist/lib/merged-resources.d.ts +0 -10
  897. package/dist/lib/merged-resources.js +0 -10
  898. package/dist/lib/migrate-fold.d.ts +0 -31
  899. package/dist/lib/migrate-fold.js +6 -38
  900. package/dist/lib/model-tier-overrides.d.ts +0 -30
  901. package/dist/lib/model-tier-overrides.js +0 -14
  902. package/dist/lib/model-tiers.d.ts +0 -43
  903. package/dist/lib/model-tiers.js +5 -78
  904. package/dist/lib/models.d.ts +0 -145
  905. package/dist/lib/models.js +3 -333
  906. package/dist/lib/monitors/config.d.ts +0 -187
  907. package/dist/lib/monitors/config.js +4 -101
  908. package/dist/lib/monitors/dispatch.d.ts +0 -22
  909. package/dist/lib/monitors/dispatch.js +0 -35
  910. package/dist/lib/monitors/engine.d.ts +1 -53
  911. package/dist/lib/monitors/engine.js +17 -106
  912. package/dist/lib/monitors/fingerprint.d.ts +0 -43
  913. package/dist/lib/monitors/fingerprint.js +0 -57
  914. package/dist/lib/monitors/pid-watch.d.ts +0 -31
  915. package/dist/lib/monitors/pid-watch.js +0 -31
  916. package/dist/lib/monitors/remote.d.ts +0 -52
  917. package/dist/lib/monitors/remote.js +0 -42
  918. package/dist/lib/monitors/sources/command.d.ts +2 -9
  919. package/dist/lib/monitors/sources/command.js +13 -34
  920. package/dist/lib/monitors/sources/device.d.ts +0 -10
  921. package/dist/lib/monitors/sources/device.js +0 -14
  922. package/dist/lib/monitors/sources/failure.d.ts +0 -27
  923. package/dist/lib/monitors/sources/failure.js +0 -27
  924. package/dist/lib/monitors/sources/file.d.ts +0 -10
  925. package/dist/lib/monitors/sources/file.js +0 -11
  926. package/dist/lib/monitors/sources/http.d.ts +0 -7
  927. package/dist/lib/monitors/sources/http.js +0 -9
  928. package/dist/lib/monitors/sources/index.d.ts +0 -9
  929. package/dist/lib/monitors/sources/index.js +0 -9
  930. package/dist/lib/monitors/sources/poll.d.ts +0 -8
  931. package/dist/lib/monitors/sources/poll.js +0 -8
  932. package/dist/lib/monitors/sources/types.d.ts +0 -18
  933. package/dist/lib/monitors/sources/types.js +0 -8
  934. package/dist/lib/monitors/sources/webhook.d.ts +0 -7
  935. package/dist/lib/monitors/sources/webhook.js +0 -7
  936. package/dist/lib/monitors/sources/ws.d.ts +0 -10
  937. package/dist/lib/monitors/sources/ws.js +3 -13
  938. package/dist/lib/monitors/state.d.ts +0 -132
  939. package/dist/lib/monitors/state.js +2 -86
  940. package/dist/lib/native-accounts.d.ts +0 -32
  941. package/dist/lib/native-accounts.js +0 -17
  942. package/dist/lib/net-close.d.ts +0 -9
  943. package/dist/lib/net-close.js +0 -5
  944. package/dist/lib/notify.d.ts +0 -47
  945. package/dist/lib/notify.js +0 -30
  946. package/dist/lib/onepassword.d.ts +0 -14
  947. package/dist/lib/onepassword.js +0 -12
  948. package/dist/lib/open-url.d.ts +0 -38
  949. package/dist/lib/open-url.js +1 -69
  950. package/dist/lib/openclaw-keychain.js +2 -7
  951. package/dist/lib/operator.d.ts +0 -9
  952. package/dist/lib/operator.js +0 -34
  953. package/dist/lib/origin-machine.d.ts +0 -16
  954. package/dist/lib/origin-machine.js +0 -16
  955. package/dist/lib/output/git-output.d.ts +0 -31
  956. package/dist/lib/output/git-output.js +4 -43
  957. package/dist/lib/overdue.d.ts +0 -35
  958. package/dist/lib/overdue.js +0 -60
  959. package/dist/lib/owner-message.d.ts +0 -20
  960. package/dist/lib/owner-message.js +1 -40
  961. package/dist/lib/packages/output-home.d.ts +0 -28
  962. package/dist/lib/packages/output-home.js +0 -114
  963. package/dist/lib/paths.d.ts +0 -26
  964. package/dist/lib/paths.js +1 -27
  965. package/dist/lib/percentile.d.ts +0 -11
  966. package/dist/lib/percentile.js +0 -11
  967. package/dist/lib/perf/db.d.ts +0 -16
  968. package/dist/lib/perf/db.js +3 -32
  969. package/dist/lib/perf/spool.d.ts +0 -12
  970. package/dist/lib/perf/spool.js +0 -13
  971. package/dist/lib/perf/types.d.ts +0 -26
  972. package/dist/lib/perf/types.js +0 -1
  973. package/dist/lib/permissions-registry.d.ts +0 -48
  974. package/dist/lib/permissions-registry.js +0 -108
  975. package/dist/lib/permissions.d.ts +0 -215
  976. package/dist/lib/permissions.js +4 -407
  977. package/dist/lib/picker.d.ts +0 -124
  978. package/dist/lib/picker.js +0 -140
  979. package/dist/lib/placement.d.ts +0 -57
  980. package/dist/lib/placement.js +0 -47
  981. package/dist/lib/platform/exec.d.ts +0 -73
  982. package/dist/lib/platform/exec.js +0 -80
  983. package/dist/lib/platform/index.d.ts +0 -14
  984. package/dist/lib/platform/index.js +0 -14
  985. package/dist/lib/platform/ipc.d.ts +0 -10
  986. package/dist/lib/platform/ipc.js +0 -13
  987. package/dist/lib/platform/links.d.ts +0 -14
  988. package/dist/lib/platform/links.js +0 -25
  989. package/dist/lib/platform/paths.d.ts +0 -48
  990. package/dist/lib/platform/paths.js +0 -52
  991. package/dist/lib/platform/posixpath.d.ts +0 -18
  992. package/dist/lib/platform/posixpath.js +0 -62
  993. package/dist/lib/platform/process.d.ts +0 -67
  994. package/dist/lib/platform/process.js +5 -99
  995. package/dist/lib/platform/winpath.d.ts +0 -50
  996. package/dist/lib/platform/winpath.js +0 -81
  997. package/dist/lib/plugins/plugin-marketplace.d.ts +0 -165
  998. package/dist/lib/plugins/plugin-marketplace.js +10 -238
  999. package/dist/lib/plugins/plugins.d.ts +0 -238
  1000. package/dist/lib/plugins/plugins.js +20 -454
  1001. package/dist/lib/plugins/skills.d.ts +0 -86
  1002. package/dist/lib/plugins/skills.js +1 -139
  1003. package/dist/lib/pr-land-detach.d.ts +0 -17
  1004. package/dist/lib/pr-land-detach.js +0 -30
  1005. package/dist/lib/pricing/cost.d.ts +0 -29
  1006. package/dist/lib/pricing/cost.js +0 -38
  1007. package/dist/lib/pricing/index.d.ts +0 -6
  1008. package/dist/lib/pricing/index.js +0 -6
  1009. package/dist/lib/pricing/table.d.ts +0 -8
  1010. package/dist/lib/pricing/table.js +3 -56
  1011. package/dist/lib/probe.d.ts +0 -5
  1012. package/dist/lib/probe.js +0 -40
  1013. package/dist/lib/profiles-presets.d.ts +0 -20
  1014. package/dist/lib/profiles-presets.js +1 -36
  1015. package/dist/lib/profiles.d.ts +0 -185
  1016. package/dist/lib/profiles.js +1 -158
  1017. package/dist/lib/project-doctor.d.ts +0 -29
  1018. package/dist/lib/project-doctor.js +0 -26
  1019. package/dist/lib/project-focus.d.ts +0 -41
  1020. package/dist/lib/project-focus.js +0 -49
  1021. package/dist/lib/project-import.d.ts +0 -41
  1022. package/dist/lib/project-import.js +0 -36
  1023. package/dist/lib/project-key.d.ts +0 -65
  1024. package/dist/lib/project-key.js +0 -70
  1025. package/dist/lib/project-launch.d.ts +0 -49
  1026. package/dist/lib/project-launch.js +2 -91
  1027. package/dist/lib/project-probe.d.ts +0 -86
  1028. package/dist/lib/project-probe.js +1 -88
  1029. package/dist/lib/project-pull.d.ts +0 -96
  1030. package/dist/lib/project-pull.js +0 -122
  1031. package/dist/lib/project-resources.d.ts +0 -44
  1032. package/dist/lib/project-resources.js +7 -171
  1033. package/dist/lib/project-root.d.ts +0 -95
  1034. package/dist/lib/project-root.js +0 -101
  1035. package/dist/lib/project-schedule.d.ts +0 -43
  1036. package/dist/lib/project-schedule.js +0 -52
  1037. package/dist/lib/project-status.d.ts +0 -108
  1038. package/dist/lib/project-status.js +0 -117
  1039. package/dist/lib/projects.d.ts +0 -197
  1040. package/dist/lib/projects.js +1 -213
  1041. package/dist/lib/pwsh.d.ts +0 -41
  1042. package/dist/lib/pwsh.js +0 -51
  1043. package/dist/lib/quick-todo.d.ts +84 -0
  1044. package/dist/lib/quick-todo.js +243 -0
  1045. package/dist/lib/reconcile-and-repair.d.ts +0 -78
  1046. package/dist/lib/reconcile-and-repair.js +3 -66
  1047. package/dist/lib/redact.d.ts +0 -29
  1048. package/dist/lib/redact.js +0 -54
  1049. package/dist/lib/refresh-coordinator.d.ts +0 -15
  1050. package/dist/lib/refresh-coordinator.js +0 -10
  1051. package/dist/lib/refresh.d.ts +0 -39
  1052. package/dist/lib/refresh.js +0 -45
  1053. package/dist/lib/registry.d.ts +0 -65
  1054. package/dist/lib/registry.js +0 -127
  1055. package/dist/lib/reminders.d.ts +0 -21
  1056. package/dist/lib/reminders.js +0 -30
  1057. package/dist/lib/remote-agents-json.d.ts +0 -44
  1058. package/dist/lib/remote-agents-json.js +1 -44
  1059. package/dist/lib/reserved-stores.d.ts +0 -28
  1060. package/dist/lib/reserved-stores.js +2 -28
  1061. package/dist/lib/resource-aliases.d.ts +0 -12
  1062. package/dist/lib/resource-aliases.js +0 -12
  1063. package/dist/lib/resource-content-diff.d.ts +0 -28
  1064. package/dist/lib/resource-content-diff.js +7 -34
  1065. package/dist/lib/resource-inventory.d.ts +0 -51
  1066. package/dist/lib/resource-inventory.js +0 -45
  1067. package/dist/lib/resource-patterns.d.ts +0 -32
  1068. package/dist/lib/resource-patterns.js +0 -34
  1069. package/dist/lib/resource-profiles.d.ts +0 -7
  1070. package/dist/lib/resource-profiles.js +0 -11
  1071. package/dist/lib/resources/types.d.ts +0 -50
  1072. package/dist/lib/resources/types.js +0 -7
  1073. package/dist/lib/resources/workflows.d.ts +0 -7
  1074. package/dist/lib/resources/workflows.js +0 -13
  1075. package/dist/lib/resources.d.ts +0 -65
  1076. package/dist/lib/resources.js +0 -78
  1077. package/dist/lib/routers.d.ts +0 -67
  1078. package/dist/lib/routers.js +0 -60
  1079. package/dist/lib/routine-activation.d.ts +0 -23
  1080. package/dist/lib/routine-activation.js +0 -24
  1081. package/dist/lib/routine-context.d.ts +1 -91
  1082. package/dist/lib/routine-context.js +0 -107
  1083. package/dist/lib/routine-notify-owner.d.ts +0 -79
  1084. package/dist/lib/routine-notify-owner.js +1 -103
  1085. package/dist/lib/routine-notify.d.ts +0 -70
  1086. package/dist/lib/routine-notify.js +1 -75
  1087. package/dist/lib/routine-process-cleanup.d.ts +0 -1
  1088. package/dist/lib/routine-process-cleanup.js +1 -4
  1089. package/dist/lib/routine-readiness.d.ts +0 -63
  1090. package/dist/lib/routine-readiness.js +4 -86
  1091. package/dist/lib/routines-format.d.ts +0 -40
  1092. package/dist/lib/routines-format.js +0 -67
  1093. package/dist/lib/routines-placement.d.ts +0 -33
  1094. package/dist/lib/routines-placement.js +0 -40
  1095. package/dist/lib/routines-project.d.ts +0 -57
  1096. package/dist/lib/routines-project.js +6 -80
  1097. package/dist/lib/rules/compile.d.ts +0 -66
  1098. package/dist/lib/rules/compile.js +6 -118
  1099. package/dist/lib/rules/compose.d.ts +0 -56
  1100. package/dist/lib/rules/compose.js +2 -83
  1101. package/dist/lib/rules/rules.d.ts +0 -23
  1102. package/dist/lib/rules/rules.js +0 -35
  1103. package/dist/lib/rules/run-sync.d.ts +0 -16
  1104. package/dist/lib/rules/run-sync.js +1 -44
  1105. package/dist/lib/run-config.d.ts +0 -7
  1106. package/dist/lib/run-config.js +0 -8
  1107. package/dist/lib/run-defaults.d.ts +0 -14
  1108. package/dist/lib/run-defaults.js +0 -14
  1109. package/dist/lib/run-notify.d.ts +0 -18
  1110. package/dist/lib/run-notify.js +0 -36
  1111. package/dist/lib/run-trace-sync.d.ts +0 -21
  1112. package/dist/lib/run-trace-sync.js +2 -66
  1113. package/dist/lib/rush-session.d.ts +0 -26
  1114. package/dist/lib/rush-session.js +0 -28
  1115. package/dist/lib/sandbox.d.ts +0 -45
  1116. package/dist/lib/sandbox.js +5 -93
  1117. package/dist/lib/scheduler.d.ts +0 -28
  1118. package/dist/lib/scheduler.js +0 -45
  1119. package/dist/lib/scheduling/routines.d.ts +0 -652
  1120. package/dist/lib/scheduling/routines.js +8 -475
  1121. package/dist/lib/secrets-cli.d.ts +3 -8
  1122. package/dist/lib/secrets-cli.js +1 -19
  1123. package/dist/lib/secrets-client.d.ts +0 -117
  1124. package/dist/lib/secrets-client.js +4 -275
  1125. package/dist/lib/secrets-policy.d.ts +0 -142
  1126. package/dist/lib/secrets-policy.js +4 -237
  1127. package/dist/lib/secrets-types.d.ts +0 -87
  1128. package/dist/lib/secrets-types.js +0 -13
  1129. package/dist/lib/self-heal/checks/hook-manifest.js +0 -25
  1130. package/dist/lib/self-heal/checks/hook-runtime.js +0 -5
  1131. package/dist/lib/self-heal/checks/install-staging.d.ts +0 -1
  1132. package/dist/lib/self-heal/checks/install-staging.js +1 -28
  1133. package/dist/lib/self-heal/checks/menubar-helper.js +0 -5
  1134. package/dist/lib/self-heal/checks/path.js +0 -9
  1135. package/dist/lib/self-heal/checks/resources.js +0 -5
  1136. package/dist/lib/self-heal/checks/shadowing.js +2 -16
  1137. package/dist/lib/self-heal/checks/shims.js +0 -14
  1138. package/dist/lib/self-heal/child.d.ts +12 -0
  1139. package/dist/lib/self-heal/child.js +23 -0
  1140. package/dist/lib/self-heal/registry.d.ts +0 -9
  1141. package/dist/lib/self-heal/registry.js +0 -16
  1142. package/dist/lib/self-heal/types.d.ts +0 -12
  1143. package/dist/lib/self-heal/types.js +0 -15
  1144. package/dist/lib/self-update.d.ts +0 -312
  1145. package/dist/lib/self-update.js +9 -360
  1146. package/dist/lib/service-manifest.d.ts +0 -39
  1147. package/dist/lib/service-manifest.js +0 -72
  1148. package/dist/lib/session/active.d.ts +13 -869
  1149. package/dist/lib/session/active.js +20 -976
  1150. package/dist/lib/session/actor-sidecar.d.ts +1 -32
  1151. package/dist/lib/session/actor-sidecar.js +1 -41
  1152. package/dist/lib/session/bookmarks.d.ts +0 -33
  1153. package/dist/lib/session/bookmarks.js +0 -37
  1154. package/dist/lib/session/bundle.d.ts +0 -86
  1155. package/dist/lib/session/bundle.js +0 -54
  1156. package/dist/lib/session/claude-accounts.d.ts +0 -40
  1157. package/dist/lib/session/claude-accounts.js +0 -49
  1158. package/dist/lib/session/cloud.d.ts +1 -23
  1159. package/dist/lib/session/cloud.js +0 -26
  1160. package/dist/lib/session/db.d.ts +5 -658
  1161. package/dist/lib/session/db.js +22 -1443
  1162. package/dist/lib/session/detached.d.ts +0 -21
  1163. package/dist/lib/session/detached.js +0 -29
  1164. package/dist/lib/session/discover.d.ts +3 -420
  1165. package/dist/lib/session/discover.js +30 -1123
  1166. package/dist/lib/session/fork.d.ts +1 -41
  1167. package/dist/lib/session/fork.js +0 -19
  1168. package/dist/lib/session/ghostty-tabs.d.ts +0 -24
  1169. package/dist/lib/session/ghostty-tabs.js +0 -37
  1170. package/dist/lib/session/glance-files.d.ts +19 -0
  1171. package/dist/lib/session/glance-files.js +258 -0
  1172. package/dist/lib/session/hook-sessions.d.ts +0 -33
  1173. package/dist/lib/session/hook-sessions.js +4 -99
  1174. package/dist/lib/session/host-link.d.ts +1 -94
  1175. package/dist/lib/session/host-link.js +1 -81
  1176. package/dist/lib/session/inject-target.d.ts +8 -0
  1177. package/dist/lib/session/inject-target.js +32 -0
  1178. package/dist/lib/session/inject.d.ts +0 -15
  1179. package/dist/lib/session/inject.js +0 -15
  1180. package/dist/lib/session/live-metadata.d.ts +1 -34
  1181. package/dist/lib/session/live-metadata.js +1 -73
  1182. package/dist/lib/session/local-tmux-attach.d.ts +0 -37
  1183. package/dist/lib/session/local-tmux-attach.js +1 -76
  1184. package/dist/lib/session/migrate-targets.d.ts +0 -46
  1185. package/dist/lib/session/migrate-targets.js +0 -24
  1186. package/dist/lib/session/migrations.d.ts +0 -12
  1187. package/dist/lib/session/migrations.js +1 -20
  1188. package/dist/lib/session/mirror.d.ts +0 -32
  1189. package/dist/lib/session/mirror.js +0 -77
  1190. package/dist/lib/session/origin-machine.js +0 -3
  1191. package/dist/lib/session/pid-registry.d.ts +0 -80
  1192. package/dist/lib/session/pid-registry.js +2 -81
  1193. package/dist/lib/session/presence.d.ts +0 -39
  1194. package/dist/lib/session/presence.js +2 -52
  1195. package/dist/lib/session/process-view.d.ts +0 -11
  1196. package/dist/lib/session/process-view.js +0 -25
  1197. package/dist/lib/session/projection.d.ts +0 -3
  1198. package/dist/lib/session/projection.js +0 -10
  1199. package/dist/lib/session/provenance.d.ts +1 -37
  1200. package/dist/lib/session/provenance.js +0 -69
  1201. package/dist/lib/session/recovery.d.ts +1 -40
  1202. package/dist/lib/session/recovery.js +2 -80
  1203. package/dist/lib/session/relative-time.js +0 -3
  1204. package/dist/lib/session/remote/peer-stream.d.ts +0 -42
  1205. package/dist/lib/session/remote/peer-stream.js +0 -64
  1206. package/dist/lib/session/remote/remote-bundle.d.ts +0 -6
  1207. package/dist/lib/session/remote/remote-bundle.js +0 -21
  1208. package/dist/lib/session/remote/remote-list.d.ts +1 -110
  1209. package/dist/lib/session/remote/remote-list.js +5 -139
  1210. package/dist/lib/session/remote/remote.d.ts +0 -98
  1211. package/dist/lib/session/remote/remote.js +3 -119
  1212. package/dist/lib/session/remote/watch.d.ts +1 -34
  1213. package/dist/lib/session/remote/watch.js +12 -72
  1214. package/dist/lib/session/remote-active.d.ts +0 -35
  1215. package/dist/lib/session/remote-active.js +0 -48
  1216. package/dist/lib/session/remote-bundle.js +0 -2
  1217. package/dist/lib/session/remote-list.js +0 -2
  1218. package/dist/lib/session/remote-preview-cache.d.ts +0 -7
  1219. package/dist/lib/session/remote-preview-cache.js +1 -76
  1220. package/dist/lib/session/remote.js +0 -2
  1221. package/dist/lib/session/resume-command.d.ts +0 -6
  1222. package/dist/lib/session/resume-command.js +0 -6
  1223. package/dist/lib/session/resume-owner.d.ts +1 -52
  1224. package/dist/lib/session/resume-owner.js +0 -56
  1225. package/dist/lib/session/run-names.d.ts +0 -24
  1226. package/dist/lib/session/run-names.js +0 -26
  1227. package/dist/lib/session/session-cache.d.ts +2 -146
  1228. package/dist/lib/session/session-cache.js +26 -203
  1229. package/dist/lib/session/short-id.js +0 -3
  1230. package/dist/lib/session/sync/agents.d.ts +0 -68
  1231. package/dist/lib/session/sync/agents.js +0 -0
  1232. package/dist/lib/session/sync/backend.d.ts +0 -39
  1233. package/dist/lib/session/sync/backend.js +0 -45
  1234. package/dist/lib/session/sync/config.d.ts +0 -27
  1235. package/dist/lib/session/sync/config.js +0 -56
  1236. package/dist/lib/session/sync/managed-config.d.ts +0 -17
  1237. package/dist/lib/session/sync/managed-config.js +0 -17
  1238. package/dist/lib/session/sync/managed-key.d.ts +0 -38
  1239. package/dist/lib/session/sync/managed-key.js +1 -42
  1240. package/dist/lib/session/sync/net-client.d.ts +0 -36
  1241. package/dist/lib/session/sync/net-client.js +0 -30
  1242. package/dist/lib/session/sync/provision.d.ts +0 -2
  1243. package/dist/lib/session/sync/provision.js +0 -13
  1244. package/dist/lib/session/sync/r2.d.ts +0 -20
  1245. package/dist/lib/session/sync/r2.js +0 -20
  1246. package/dist/lib/session/sync/transcript-crypto.d.ts +0 -37
  1247. package/dist/lib/session/sync/transcript-crypto.js +5 -37
  1248. package/dist/lib/session/sync/worker-template.d.ts +0 -5
  1249. package/dist/lib/session/sync/worker-template.js +0 -40
  1250. package/dist/lib/session/testdata/pid-registry-namespace.js +0 -2
  1251. package/dist/lib/session/testdata/process-view-private.js +0 -1
  1252. package/dist/lib/session/throughput.d.ts +0 -24
  1253. package/dist/lib/session/throughput.js +1 -25
  1254. package/dist/lib/session/timeline-pass.d.ts +1 -63
  1255. package/dist/lib/session/timeline-pass.js +161 -148
  1256. package/dist/lib/session/title.d.ts +0 -182
  1257. package/dist/lib/session/title.js +0 -139
  1258. package/dist/lib/session/tool-index.d.ts +2 -21
  1259. package/dist/lib/session/tool-index.js +3 -75
  1260. package/dist/lib/session/tool-store.d.ts +2 -48
  1261. package/dist/lib/session/tool-store.js +1 -33
  1262. package/dist/lib/session/viewing-in.d.ts +0 -67
  1263. package/dist/lib/session/viewing-in.js +1 -71
  1264. package/dist/lib/session/watch.js +0 -2
  1265. package/dist/lib/session/width.js +0 -3
  1266. package/dist/lib/sessions-client.d.ts +0 -46
  1267. package/dist/lib/sessions-client.js +36 -113
  1268. package/dist/lib/settings-manifest.d.ts +1 -17
  1269. package/dist/lib/settings-manifest.js +4 -57
  1270. package/dist/lib/setup-tool-install.d.ts +0 -1
  1271. package/dist/lib/setup-tool-install.js +2 -7
  1272. package/dist/lib/setup-tool-status.d.ts +0 -3
  1273. package/dist/lib/setup-tool-status.js +4 -14
  1274. package/dist/lib/sha256-asset.d.ts +0 -20
  1275. package/dist/lib/sha256-asset.js +0 -20
  1276. package/dist/lib/share-runtime.d.ts +0 -10
  1277. package/dist/lib/share-runtime.js +1 -27
  1278. package/dist/lib/shim-heal.d.ts +0 -15
  1279. package/dist/lib/shim-heal.js +3 -29
  1280. package/dist/lib/signin-badge.d.ts +0 -72
  1281. package/dist/lib/signin-badge.js +0 -86
  1282. package/dist/lib/sink-format.d.ts +0 -32
  1283. package/dist/lib/sink-format.js +0 -14
  1284. package/dist/lib/smart-launch.d.ts +0 -75
  1285. package/dist/lib/smart-launch.js +1 -83
  1286. package/dist/lib/snapshot.d.ts +0 -46
  1287. package/dist/lib/snapshot.js +5 -31
  1288. package/dist/lib/spinner.d.ts +0 -37
  1289. package/dist/lib/spinner.js +0 -37
  1290. package/dist/lib/sqlite.d.ts +0 -13
  1291. package/dist/lib/sqlite.js +3 -71
  1292. package/dist/lib/ssh-exec.d.ts +0 -209
  1293. package/dist/lib/ssh-exec.js +11 -248
  1294. package/dist/lib/ssh-tunnel.d.ts +0 -43
  1295. package/dist/lib/ssh-tunnel.js +2 -48
  1296. package/dist/lib/staleness/checkers/commands.d.ts +0 -4
  1297. package/dist/lib/staleness/checkers/commands.js +0 -4
  1298. package/dist/lib/staleness/checkers/hooks.d.ts +0 -10
  1299. package/dist/lib/staleness/checkers/hooks.js +0 -15
  1300. package/dist/lib/staleness/checkers/mcp.d.ts +0 -9
  1301. package/dist/lib/staleness/checkers/mcp.js +0 -9
  1302. package/dist/lib/staleness/checkers/permissions.d.ts +0 -12
  1303. package/dist/lib/staleness/checkers/permissions.js +0 -13
  1304. package/dist/lib/staleness/checkers/plugins.d.ts +0 -8
  1305. package/dist/lib/staleness/checkers/plugins.js +0 -8
  1306. package/dist/lib/staleness/checkers/rules.d.ts +0 -15
  1307. package/dist/lib/staleness/checkers/rules.js +0 -26
  1308. package/dist/lib/staleness/checkers/skills.d.ts +0 -4
  1309. package/dist/lib/staleness/checkers/skills.js +0 -4
  1310. package/dist/lib/staleness/checkers/subagents.d.ts +0 -9
  1311. package/dist/lib/staleness/checkers/subagents.js +0 -9
  1312. package/dist/lib/staleness/checkers/types.d.ts +0 -34
  1313. package/dist/lib/staleness/checkers/types.js +0 -19
  1314. package/dist/lib/staleness/checkers/workflows.d.ts +0 -7
  1315. package/dist/lib/staleness/checkers/workflows.js +0 -7
  1316. package/dist/lib/staleness/detectors/commands.js +0 -17
  1317. package/dist/lib/staleness/detectors/hooks.js +1 -6
  1318. package/dist/lib/staleness/detectors/mcp.js +0 -4
  1319. package/dist/lib/staleness/detectors/permissions.js +10 -23
  1320. package/dist/lib/staleness/detectors/rules.js +0 -6
  1321. package/dist/lib/staleness/detectors/skills.d.ts +0 -1
  1322. package/dist/lib/staleness/detectors/skills.js +1 -12
  1323. package/dist/lib/staleness/detectors/types.d.ts +0 -10
  1324. package/dist/lib/staleness/fingerprint.d.ts +0 -19
  1325. package/dist/lib/staleness/fingerprint.js +0 -35
  1326. package/dist/lib/staleness/index.d.ts +0 -28
  1327. package/dist/lib/staleness/index.js +1 -45
  1328. package/dist/lib/staleness/layers.d.ts +0 -23
  1329. package/dist/lib/staleness/layers.js +0 -34
  1330. package/dist/lib/staleness/prune.d.ts +0 -71
  1331. package/dist/lib/staleness/prune.js +2 -27
  1332. package/dist/lib/staleness/registry.d.ts +0 -10
  1333. package/dist/lib/staleness/registry.js +3 -33
  1334. package/dist/lib/staleness/types.d.ts +0 -36
  1335. package/dist/lib/staleness/types.js +0 -5
  1336. package/dist/lib/staleness/writers/commands.js +1 -48
  1337. package/dist/lib/staleness/writers/hooks.js +1 -18
  1338. package/dist/lib/staleness/writers/kinds.d.ts +0 -12
  1339. package/dist/lib/staleness/writers/kinds.js +0 -1
  1340. package/dist/lib/staleness/writers/lazy-map.d.ts +0 -11
  1341. package/dist/lib/staleness/writers/mcp.js +0 -13
  1342. package/dist/lib/staleness/writers/plugins.js +0 -4
  1343. package/dist/lib/staleness/writers/rules.d.ts +0 -1
  1344. package/dist/lib/staleness/writers/rules.js +1 -19
  1345. package/dist/lib/staleness/writers/skills.js +3 -14
  1346. package/dist/lib/staleness/writers/sources.d.ts +0 -11
  1347. package/dist/lib/staleness/writers/sources.js +0 -32
  1348. package/dist/lib/staleness/writers/subagents.js +0 -16
  1349. package/dist/lib/staleness/writers/types.d.ts +0 -58
  1350. package/dist/lib/staleness/writers/workflows.js +1 -1
  1351. package/dist/lib/standalone-tools.d.ts +24 -0
  1352. package/dist/lib/standalone-tools.js +58 -0
  1353. package/dist/lib/star-nudge.d.ts +0 -32
  1354. package/dist/lib/star-nudge.js +2 -36
  1355. package/dist/lib/startup/command-registry.d.ts +0 -45
  1356. package/dist/lib/startup/command-registry.js +1 -46
  1357. package/dist/lib/startup/dev-build.d.ts +0 -9
  1358. package/dist/lib/startup/dev-build.js +1 -42
  1359. package/dist/lib/startup/root-command.d.ts +0 -19
  1360. package/dist/lib/startup/root-command.js +0 -19
  1361. package/dist/lib/startup/spellcheck.d.ts +0 -13
  1362. package/dist/lib/startup/spellcheck.js +0 -13
  1363. package/dist/lib/state.d.ts +0 -376
  1364. package/dist/lib/state.js +19 -737
  1365. package/dist/lib/storage/selection.d.ts +0 -40
  1366. package/dist/lib/storage/selection.js +0 -29
  1367. package/dist/lib/subagents-registry.d.ts +0 -56
  1368. package/dist/lib/subagents-registry.js +0 -99
  1369. package/dist/lib/subagents.d.ts +0 -128
  1370. package/dist/lib/subagents.js +1 -158
  1371. package/dist/lib/summarizer/config.d.ts +0 -37
  1372. package/dist/lib/summarizer/config.js +0 -37
  1373. package/dist/lib/summarizer/pass.d.ts +0 -20
  1374. package/dist/lib/summarizer/pass.js +1 -34
  1375. package/dist/lib/summarizer/summarize.d.ts +1 -49
  1376. package/dist/lib/summarizer/summarize.js +0 -35
  1377. package/dist/lib/sync-passphrase.d.ts +0 -16
  1378. package/dist/lib/sync-passphrase.js +1 -18
  1379. package/dist/lib/sync-status.d.ts +0 -72
  1380. package/dist/lib/sync-status.js +0 -55
  1381. package/dist/lib/sync-umbrella.d.ts +0 -54
  1382. package/dist/lib/sync-umbrella.js +0 -48
  1383. package/dist/lib/system-run-sync.d.ts +0 -5
  1384. package/dist/lib/system-run-sync.js +1 -31
  1385. package/dist/lib/teams/agents.d.ts +1 -444
  1386. package/dist/lib/teams/agents.js +11 -871
  1387. package/dist/lib/teams/api.d.ts +2 -52
  1388. package/dist/lib/teams/api.js +4 -63
  1389. package/dist/lib/teams/debug.d.ts +0 -6
  1390. package/dist/lib/teams/debug.js +0 -6
  1391. package/dist/lib/teams/delivery.d.ts +0 -41
  1392. package/dist/lib/teams/delivery.js +0 -32
  1393. package/dist/lib/teams/file_ops.d.ts +0 -11
  1394. package/dist/lib/teams/file_ops.js +0 -11
  1395. package/dist/lib/teams/forEach.d.ts +0 -76
  1396. package/dist/lib/teams/forEach.js +1 -77
  1397. package/dist/lib/teams/index.d.ts +1 -7
  1398. package/dist/lib/teams/index.js +1 -7
  1399. package/dist/lib/teams/parsers.d.ts +0 -4
  1400. package/dist/lib/teams/parsers.js +0 -81
  1401. package/dist/lib/teams/persistence.d.ts +0 -2
  1402. package/dist/lib/teams/persistence.js +0 -12
  1403. package/dist/lib/teams/placement-probe.d.ts +0 -12
  1404. package/dist/lib/teams/placement-probe.js +1 -51
  1405. package/dist/lib/teams/pr-watch.d.ts +0 -107
  1406. package/dist/lib/teams/pr-watch.js +1 -107
  1407. package/dist/lib/teams/registry.d.ts +0 -36
  1408. package/dist/lib/teams/registry.js +0 -47
  1409. package/dist/lib/teams/remoteWorktree.d.ts +0 -50
  1410. package/dist/lib/teams/remoteWorktree.js +1 -96
  1411. package/dist/lib/teams/scheduler.d.ts +0 -111
  1412. package/dist/lib/teams/scheduler.js +2 -125
  1413. package/dist/lib/teams/summarizer.d.ts +0 -22
  1414. package/dist/lib/teams/summarizer.js +6 -50
  1415. package/dist/lib/teams/supervisor.d.ts +0 -38
  1416. package/dist/lib/teams/supervisor.js +0 -21
  1417. package/dist/lib/teams/worktree.d.ts +0 -95
  1418. package/dist/lib/teams/worktree.js +3 -110
  1419. package/dist/lib/template.d.ts +0 -21
  1420. package/dist/lib/template.js +0 -23
  1421. package/dist/lib/term-client.d.ts +0 -26
  1422. package/dist/lib/term-client.js +0 -48
  1423. package/dist/lib/term-driver.d.ts +0 -5
  1424. package/dist/lib/term-driver.js +0 -8
  1425. package/dist/lib/terminal/backends/ghostty.d.ts +0 -2
  1426. package/dist/lib/terminal/backends/ghostty.js +0 -12
  1427. package/dist/lib/terminal/backends/index.d.ts +0 -17
  1428. package/dist/lib/terminal/backends/index.js +0 -15
  1429. package/dist/lib/terminal/backends/iterm.d.ts +0 -2
  1430. package/dist/lib/terminal/backends/iterm.js +0 -10
  1431. package/dist/lib/terminal/backends/terminal-app.d.ts +0 -10
  1432. package/dist/lib/terminal/backends/terminal-app.js +0 -30
  1433. package/dist/lib/terminal/backends/tmux.d.ts +0 -10
  1434. package/dist/lib/terminal/backends/tmux.js +0 -2
  1435. package/dist/lib/terminal/backends/vscodium-agent.d.ts +0 -25
  1436. package/dist/lib/terminal/backends/vscodium-agent.js +0 -36
  1437. package/dist/lib/terminal/engine.d.ts +0 -17
  1438. package/dist/lib/terminal/engine.js +0 -10
  1439. package/dist/lib/terminal/index.d.ts +0 -8
  1440. package/dist/lib/terminal/inject.d.ts +1 -173
  1441. package/dist/lib/terminal/inject.js +0 -146
  1442. package/dist/lib/terminal/policy.d.ts +0 -8
  1443. package/dist/lib/terminal/policy.js +0 -1
  1444. package/dist/lib/terminal/preferred.d.ts +0 -66
  1445. package/dist/lib/terminal/preferred.js +0 -30
  1446. package/dist/lib/terminal/quote.d.ts +0 -8
  1447. package/dist/lib/terminal/quote.js +0 -8
  1448. package/dist/lib/terminal/resolve.d.ts +0 -46
  1449. package/dist/lib/terminal/resolve.js +0 -30
  1450. package/dist/lib/terminal/run-surface.d.ts +0 -56
  1451. package/dist/lib/terminal/run-surface.js +0 -46
  1452. package/dist/lib/terminal/shell.d.ts +0 -3
  1453. package/dist/lib/terminal/shell.js +0 -13
  1454. package/dist/lib/terminal/transport.d.ts +0 -14
  1455. package/dist/lib/terminal/transport.js +1 -30
  1456. package/dist/lib/terminal/types.d.ts +0 -40
  1457. package/dist/lib/terminal/types.js +0 -10
  1458. package/dist/lib/text/relative-time.d.ts +0 -36
  1459. package/dist/lib/text/relative-time.js +0 -43
  1460. package/dist/lib/text/short-id.d.ts +0 -16
  1461. package/dist/lib/text/short-id.js +0 -16
  1462. package/dist/lib/text/width.d.ts +0 -24
  1463. package/dist/lib/text/width.js +10 -52
  1464. package/dist/lib/tmux/binary.d.ts +0 -36
  1465. package/dist/lib/tmux/binary.js +0 -28
  1466. package/dist/lib/tmux/index.d.ts +0 -5
  1467. package/dist/lib/tmux/index.js +0 -5
  1468. package/dist/lib/tmux/orphan-reap.d.ts +0 -253
  1469. package/dist/lib/tmux/orphan-reap.js +3 -299
  1470. package/dist/lib/tmux/paths.d.ts +0 -14
  1471. package/dist/lib/tmux/paths.js +0 -14
  1472. package/dist/lib/tmux/session.d.ts +0 -263
  1473. package/dist/lib/tmux/session.js +6 -344
  1474. package/dist/lib/traces/backend.d.ts +0 -20
  1475. package/dist/lib/traces/backend.js +0 -23
  1476. package/dist/lib/traces/classify.d.ts +0 -20
  1477. package/dist/lib/traces/classify.js +0 -7
  1478. package/dist/lib/traces/insights.d.ts +1 -84
  1479. package/dist/lib/traces/insights.js +0 -126
  1480. package/dist/lib/traces/phenotype.d.ts +0 -69
  1481. package/dist/lib/traces/phenotype.js +0 -150
  1482. package/dist/lib/traces/provision.d.ts +0 -1
  1483. package/dist/lib/traces/provision.js +0 -5
  1484. package/dist/lib/traces/schema2-build.d.ts +3 -60
  1485. package/dist/lib/traces/schema2-build.js +8 -149
  1486. package/dist/lib/traces/schema2-danger.d.ts +0 -30
  1487. package/dist/lib/traces/schema2-danger.js +1 -63
  1488. package/dist/lib/traces/schema2.d.ts +0 -11
  1489. package/dist/lib/traces/segments.d.ts +0 -44
  1490. package/dist/lib/traces/segments.js +0 -65
  1491. package/dist/lib/traces/sync.d.ts +2 -239
  1492. package/dist/lib/traces/sync.js +15 -237
  1493. package/dist/lib/traces/worker-template.d.ts +0 -3
  1494. package/dist/lib/traces/worker-template.js +0 -29
  1495. package/dist/lib/triggers/handlers.d.ts +0 -82
  1496. package/dist/lib/triggers/handlers.js +0 -75
  1497. package/dist/lib/triggers/webhook.d.ts +0 -158
  1498. package/dist/lib/triggers/webhook.js +0 -143
  1499. package/dist/lib/types.d.ts +0 -736
  1500. package/dist/lib/types.js +0 -50
  1501. package/dist/lib/uninstall.d.ts +0 -17
  1502. package/dist/lib/uninstall.js +0 -75
  1503. package/dist/lib/usage-backoff.d.ts +0 -20
  1504. package/dist/lib/usage-backoff.js +3 -60
  1505. package/dist/lib/usage-refresh.d.ts +0 -154
  1506. package/dist/lib/usage-refresh.js +8 -212
  1507. package/dist/lib/verbs.d.ts +0 -12
  1508. package/dist/lib/verbs.js +0 -12
  1509. package/dist/lib/version-duplicates.d.ts +0 -6
  1510. package/dist/lib/version-duplicates.js +0 -6
  1511. package/dist/lib/version.d.ts +0 -55
  1512. package/dist/lib/version.js +1 -58
  1513. package/dist/lib/view-types.d.ts +0 -48
  1514. package/dist/lib/warn-unpushed.d.ts +0 -27
  1515. package/dist/lib/warn-unpushed.js +1 -45
  1516. package/dist/lib/watchdog/history.d.ts +0 -1
  1517. package/dist/lib/watchdog/history.js +0 -3
  1518. package/dist/lib/watchdog/index.js +0 -2
  1519. package/dist/lib/watchdog/log.d.ts +0 -19
  1520. package/dist/lib/watchdog/log.js +0 -34
  1521. package/dist/lib/watchdog/read.d.ts +0 -27
  1522. package/dist/lib/watchdog/read.js +3 -58
  1523. package/dist/lib/watchdog/rotate.d.ts +0 -139
  1524. package/dist/lib/watchdog/rotate.js +2 -151
  1525. package/dist/lib/watchdog/runner.d.ts +0 -125
  1526. package/dist/lib/watchdog/runner.js +3 -223
  1527. package/dist/lib/watchdog/service.d.ts +0 -1
  1528. package/dist/lib/watchdog/service.js +0 -2
  1529. package/dist/lib/watchdog/watchdog-agent.d.ts +0 -31
  1530. package/dist/lib/watchdog/watchdog-agent.js +0 -27
  1531. package/dist/lib/watchdog/watchdog.d.ts +0 -7
  1532. package/dist/lib/watchdog/watchdog.js +0 -10
  1533. package/dist/lib/watchdog/watchdogTail.js +0 -7
  1534. package/dist/lib/whats-new.d.ts +0 -10
  1535. package/dist/lib/whats-new.js +0 -21
  1536. package/dist/lib/workflows-registry.d.ts +0 -45
  1537. package/dist/lib/workflows-registry.js +0 -60
  1538. package/dist/lib/workflows.d.ts +0 -282
  1539. package/dist/lib/workflows.js +3 -213
  1540. package/dist/lib/worktree/held.d.ts +0 -89
  1541. package/dist/lib/worktree/held.js +1 -103
  1542. package/dist/lib/wrap.d.ts +0 -32
  1543. package/dist/lib/wrap.js +0 -32
  1544. package/dist/lib/yaml-io.d.ts +0 -45
  1545. package/dist/lib/yaml-io.js +0 -47
  1546. package/dist/session-tracker/dist/adapters/claude.js +0 -2
  1547. package/dist/session-tracker/dist/hook.sh +4 -37
  1548. package/dist/session-tracker/dist/index.d.ts +0 -7
  1549. package/dist/session-tracker/dist/index.js +0 -5
  1550. package/dist/session-tracker/dist/install-hook.d.ts +0 -5
  1551. package/dist/session-tracker/dist/install-hook.js +1 -15
  1552. package/dist/session-tracker/dist/prune-state.js +0 -4
  1553. package/dist/session-tracker/dist/reader.js +0 -4
  1554. package/dist/session-tracker/dist/state-file.d.ts +0 -3
  1555. package/dist/session-tracker/dist/state-file.js +3 -8
  1556. package/package.json +3 -4
  1557. package/scripts/postinstall.js +8 -116
  1558. package/dist/lib/session/artifacts.d.ts +0 -14
  1559. package/dist/lib/session/artifacts.js +0 -101
  1560. package/dist/lib/session/bash-command.d.ts +0 -63
  1561. package/dist/lib/session/bash-command.js +0 -490
  1562. package/dist/lib/session/digest.d.ts +0 -66
  1563. package/dist/lib/session/digest.js +0 -328
  1564. package/dist/lib/session/highlights.d.ts +0 -151
  1565. package/dist/lib/session/highlights.js +0 -391
  1566. package/dist/lib/session/insights.d.ts +0 -165
  1567. package/dist/lib/session/insights.js +0 -563
  1568. package/dist/lib/session/linear.d.ts +0 -19
  1569. package/dist/lib/session/linear.js +0 -99
  1570. package/dist/lib/session/parse.d.ts +0 -224
  1571. package/dist/lib/session/parse.js +0 -2408
  1572. package/dist/lib/session/prompt.d.ts +0 -213
  1573. package/dist/lib/session/prompt.js +0 -601
  1574. package/dist/lib/session/render.d.ts +0 -133
  1575. package/dist/lib/session/render.js +0 -1047
  1576. package/dist/lib/session/share-html.d.ts +0 -35
  1577. package/dist/lib/session/share-html.js +0 -319
  1578. package/dist/lib/session/shell-programs.d.ts +0 -33
  1579. package/dist/lib/session/shell-programs.js +0 -380
  1580. package/dist/lib/session/state.d.ts +0 -269
  1581. package/dist/lib/session/state.js +0 -777
  1582. package/dist/lib/session/stream-render.d.ts +0 -4
  1583. package/dist/lib/session/stream-render.js +0 -131
  1584. package/dist/lib/session/tail.d.ts +0 -88
  1585. package/dist/lib/session/tail.js +0 -294
  1586. package/dist/lib/session/team-filter.d.ts +0 -129
  1587. package/dist/lib/session/team-filter.js +0 -269
  1588. package/dist/lib/session/timeline.d.ts +0 -172
  1589. package/dist/lib/session/timeline.js +0 -636
  1590. package/dist/lib/session/tool-calls.d.ts +0 -132
  1591. package/dist/lib/session/tool-calls.js +0 -674
  1592. package/dist/lib/session/trajectory-compare.d.ts +0 -48
  1593. package/dist/lib/session/trajectory-compare.js +0 -116
  1594. package/dist/lib/session/trajectory-html.d.ts +0 -19
  1595. package/dist/lib/session/trajectory-html.js +0 -771
  1596. package/dist/lib/session/trajectory-lineage.d.ts +0 -93
  1597. package/dist/lib/session/trajectory-lineage.js +0 -195
  1598. package/dist/lib/session/trajectory-text.d.ts +0 -38
  1599. package/dist/lib/session/trajectory-text.js +0 -284
  1600. package/dist/lib/session/trajectory.d.ts +0 -145
  1601. package/dist/lib/session/trajectory.js +0 -394
  1602. package/dist/lib/session/types.d.ts +0 -627
  1603. package/dist/lib/session/types.js +0 -43
package/dist/lib/git.js CHANGED
@@ -1,10 +1,3 @@
1
- /**
2
- * Git operations for the agents-cli system repo and package repositories.
3
- *
4
- * Handles cloning, pulling, syncing, and inspecting git repos used by
5
- * the agents version management and plugin/package system. Includes
6
- * source parsing for GitHub shorthand, SSH, HTTPS, and local paths.
7
- */
8
1
  import simpleGit from 'simple-git';
9
2
  import { execFileSync } from 'node:child_process';
10
3
  import * as fs from 'fs';
@@ -13,36 +6,15 @@ import * as path from 'path';
13
6
  import { IS_WINDOWS, isWindowsAbsolutePath, toNativePath } from './platform/index.js';
14
7
  import { getPackageLocalPath } from './state.js';
15
8
  import { DEFAULT_SYSTEM_REPO, systemRepoSlug } from './types.js';
16
- /**
17
- * Validate that a clone/pull source uses a safe git transport before it is
18
- * handed to `git`.
19
- *
20
- * Git's remote-helper transports (`ext::`, `fd::`, …) execute arbitrary
21
- * commands at clone time, `file://`/`git://` are unauthenticated, and a source
22
- * beginning with `-` is parsed by `git` as a command-line flag (option
23
- * injection). We therefore allow only:
24
- * - `https://` (encrypted + authenticated)
25
- * - `ssh://` and SCP-style `git@host:path` / `host:path`
26
- * - local filesystem paths (callers handle these before reaching `git clone`)
27
- *
28
- * Pure string inspection — no filesystem or platform calls — so it behaves
29
- * identically on Linux, macOS, and Windows.
30
- *
31
- * @throws Error if the source uses a disallowed transport.
32
- */
33
9
  export function assertSafeGitTransport(source) {
34
10
  const s = source.trim();
35
- // A leading dash is interpreted by git as an option, not a source.
36
11
  if (s.startsWith('-')) {
37
12
  throw new Error(`Refusing to use git source "${source}": a source starting with "-" is interpreted as a git option.`);
38
13
  }
39
- // Remote-helper transports look like "<name>::…" (ext::, fd::, …). SCP-style
40
- // "git@host:path" uses a single ":" and is intentionally not matched here.
41
14
  const helper = s.match(/^[a-zA-Z][a-zA-Z0-9+.-]*::/);
42
15
  if (helper) {
43
16
  throw new Error(`Refusing to use git source "${source}": git remote-helper transports (ext::, fd::, …) are not allowed.`);
44
17
  }
45
- // Explicit "<scheme>://" URLs: permit only https and ssh.
46
18
  const scheme = s.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):\/\//);
47
19
  if (scheme) {
48
20
  const name = scheme[1].toLowerCase();
@@ -50,17 +22,7 @@ export function assertSafeGitTransport(source) {
50
22
  throw new Error(`Refusing to use git source "${source}": "${name}://" is not an allowed transport (use https:// or ssh://).`);
51
23
  }
52
24
  }
53
- // No scheme -> SCP-style SSH ("git@host:path") or a local path; both safe.
54
25
  }
55
- /**
56
- * Validate a branch name before it is passed to `git push` / `git pull`.
57
- *
58
- * A name beginning with `-` is parsed by git as a command-line option
59
- * (e.g. `--mirror`, `--receive-pack=…`), not a ref. Pure string check —
60
- * identical on every OS, no spawn.
61
- *
62
- * @throws Error if the name is empty or would be interpreted as a git option.
63
- */
64
26
  export function assertValidBranchName(branch) {
65
27
  const b = branch.trim();
66
28
  if (!b) {
@@ -70,18 +32,6 @@ export function assertValidBranchName(branch) {
70
32
  throw new Error(`Invalid branch name ${JSON.stringify(branch)}: a name starting with "-" is interpreted as a git option.`);
71
33
  }
72
34
  }
73
- /**
74
- * `git push origin <branch>` with option-injection hardening:
75
- * 1. {@link assertValidBranchName} rejects leading `-`
76
- * 2. `--` ends option parsing so a hostile ref cannot be read as a flag
77
- *
78
- * Prefer this over `git.push(remote, branch)` whenever the branch comes from
79
- * repo state rather than a hard-coded literal.
80
- *
81
- * Pass `targetBranch` to push the local `branch` to a differently-named remote
82
- * branch (`git push origin <branch>:<targetBranch>`) — used when publishing the
83
- * working tree to a branch other than the checked-out one.
84
- */
85
35
  export async function pushOrigin(git, branch, targetBranch) {
86
36
  assertValidBranchName(branch);
87
37
  if (targetBranch && targetBranch !== branch) {
@@ -91,28 +41,10 @@ export async function pushOrigin(git, branch, targetBranch) {
91
41
  }
92
42
  await git.raw(['push', '--', 'origin', branch]);
93
43
  }
94
- /**
95
- * Whether installing a cloned/pulled repo's `.githooks/` is enabled.
96
- *
97
- * Installing hooks wires those scripts into `.git/hooks/`, so `git` EXECUTES
98
- * them on the next commit/checkout/merge. A repo added via `agents repo add
99
- * <source>` is untrusted, so auto-installing its hooks is remote code
100
- * execution. We require explicit opt-in via `AGENTS_ENABLE_GITHOOKS=1`.
101
- */
102
44
  function githooksEnabled() {
103
45
  const v = process.env.AGENTS_ENABLE_GITHOOKS;
104
46
  return v === '1' || v === 'true';
105
47
  }
106
- /**
107
- * Install hooks from `.githooks/` by symlinking each entry into `.git/hooks/`.
108
- *
109
- * Gated behind `AGENTS_ENABLE_GITHOOKS=1` (see {@link githooksEnabled}) because
110
- * the hooks run code on git operations and the source repo may be untrusted.
111
- *
112
- * Why symlinks rather than `git config core.hooksPath`: `core.hooksPath` is a
113
- * known sandbox-escape vector and is blocked by some sandboxed environments
114
- * (e.g. Claude Code). Symlinks inside `.git/hooks/` run the same way.
115
- */
116
48
  function installGithooksSymlinks(repoDir) {
117
49
  const githooksDir = path.join(repoDir, '.githooks');
118
50
  if (!fs.existsSync(githooksDir))
@@ -137,44 +69,22 @@ function installGithooksSymlinks(repoDir) {
137
69
  fs.symlinkSync(target, dest);
138
70
  }
139
71
  catch (err) {
140
- // Windows requires Developer Mode or elevated privileges for symlinks; skip gracefully.
141
72
  if (err.code !== 'EPERM')
142
73
  throw err;
143
74
  }
144
75
  }
145
76
  }
146
- /**
147
- * Parse a source string into a GitSource object.
148
- *
149
- * Supported formats:
150
- * gh:owner/repo -> https://github.com/owner/repo.git
151
- * gh:owner/repo@branch -> https://github.com/owner/repo.git (ref: branch)
152
- * owner/repo -> https://github.com/owner/repo.git
153
- * owner/repo@branch -> https://github.com/owner/repo.git (ref: branch)
154
- * github.com/owner/repo -> https://github.com/owner/repo.git
155
- * github.com:owner/repo -> https://github.com/owner/repo.git
156
- * github.com:owner/repo.git -> https://github.com/owner/repo.git
157
- * git@github.com:owner/repo.git -> https://github.com/owner/repo.git
158
- * https://github.com/owner/repo -> https://github.com/owner/repo.git
159
- * https://github.com/owner/repo.git -> https://github.com/owner/repo.git
160
- * /path/to/local -> local path
161
- * ./relative/path -> local path
162
- */
163
77
  export function parseSource(source) {
164
- // Split off @ref suffix (but not from URLs with @ in them like git@)
165
78
  let ref;
166
79
  let cleanSource = source;
167
- // Handle @ref suffix (only if it's at the end and not part of git@)
168
80
  const atIndex = source.lastIndexOf('@');
169
81
  if (atIndex > 0 && !source.startsWith('git@') && !source.slice(0, atIndex).includes('://')) {
170
- // Check if what's after @ looks like a ref (no slashes, no dots except in branch names)
171
82
  const possibleRef = source.slice(atIndex + 1);
172
83
  if (possibleRef && !possibleRef.includes('/') && !possibleRef.includes(':')) {
173
84
  ref = possibleRef;
174
85
  cleanSource = source.slice(0, atIndex);
175
86
  }
176
87
  }
177
- // gh:owner/repo shorthand
178
88
  if (cleanSource.startsWith('gh:')) {
179
89
  const repo = cleanSource.slice(3).replace(/\.git$/, '');
180
90
  return {
@@ -183,7 +93,6 @@ export function parseSource(source) {
183
93
  ref: ref || 'main',
184
94
  };
185
95
  }
186
- // git@github.com:owner/repo.git (SSH URL)
187
96
  if (cleanSource.startsWith('git@github.com:')) {
188
97
  const repo = cleanSource.slice(15).replace(/\.git$/, '');
189
98
  return {
@@ -192,7 +101,6 @@ export function parseSource(source) {
192
101
  ref: ref || 'main',
193
102
  };
194
103
  }
195
- // github.com:owner/repo.git (SSH-style without git@)
196
104
  if (cleanSource.startsWith('github.com:')) {
197
105
  const repo = cleanSource.slice(11).replace(/\.git$/, '');
198
106
  return {
@@ -201,7 +109,6 @@ export function parseSource(source) {
201
109
  ref: ref || 'main',
202
110
  };
203
111
  }
204
- // github.com/owner/repo (domain without protocol)
205
112
  if (cleanSource.startsWith('github.com/')) {
206
113
  const repo = cleanSource.slice(11).replace(/\.git$/, '');
207
114
  return {
@@ -210,9 +117,7 @@ export function parseSource(source) {
210
117
  ref: ref || 'main',
211
118
  };
212
119
  }
213
- // https:// or http:// URLs
214
120
  if (cleanSource.startsWith('http://') || cleanSource.startsWith('https://')) {
215
- // Check if it's a GitHub URL
216
121
  const githubMatch = cleanSource.match(/^https?:\/\/github\.com\/([^/]+\/[^/]+?)(?:\.git)?$/);
217
122
  if (githubMatch) {
218
123
  return {
@@ -221,8 +126,6 @@ export function parseSource(source) {
221
126
  ref: ref || 'main',
222
127
  };
223
128
  }
224
- // Generic URL -- must be an encrypted, authenticated transport
225
- // (rejects http://, file://, git://, ext::, and leading "-").
226
129
  assertSafeGitTransport(cleanSource);
227
130
  return {
228
131
  type: 'url',
@@ -230,8 +133,6 @@ export function parseSource(source) {
230
133
  ref,
231
134
  };
232
135
  }
233
- // Local path (absolute or relative). On Windows also recognize drive-letter
234
- // (C:\…) and UNC (\\…) roots, which the POSIX prefixes miss.
235
136
  if (cleanSource.startsWith('/') || cleanSource.startsWith('./') || cleanSource.startsWith('../')
236
137
  || (IS_WINDOWS && isWindowsAbsolutePath(cleanSource))) {
237
138
  if (fs.existsSync(cleanSource)) {
@@ -241,14 +142,12 @@ export function parseSource(source) {
241
142
  };
242
143
  }
243
144
  }
244
- // Check if it exists as a local path (could be a directory name without ./)
245
145
  if (fs.existsSync(cleanSource)) {
246
146
  return {
247
147
  type: 'local',
248
148
  url: path.resolve(cleanSource),
249
149
  };
250
150
  }
251
- // Bare owner/repo format (assumes GitHub)
252
151
  if (cleanSource.includes('/') && !cleanSource.includes(':') && !cleanSource.includes('.')) {
253
152
  const repo = cleanSource.replace(/\.git$/, '');
254
153
  return {
@@ -257,7 +156,6 @@ export function parseSource(source) {
257
156
  ref: ref || 'main',
258
157
  };
259
158
  }
260
- // Last attempt: treat as GitHub if it looks like owner/repo (with possible .git)
261
159
  if (/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_.-]+$/.test(cleanSource)) {
262
160
  const repo = cleanSource.replace(/\.git$/, '');
263
161
  return {
@@ -268,7 +166,6 @@ export function parseSource(source) {
268
166
  }
269
167
  throw new Error(`Invalid source: ${source}. Supported formats: gh:owner/repo, owner/repo, github.com/owner/repo, https://github.com/owner/repo, or local path`);
270
168
  }
271
- /** Clone a remote repo or pull updates if it already exists locally. */
272
169
  async function cloneOrPull(source, targetDir) {
273
170
  const git = simpleGit();
274
171
  if (source.type === 'local') {
@@ -295,7 +192,6 @@ async function cloneOrPull(source, targetDir) {
295
192
  const log = await repoGit.log({ maxCount: 1 });
296
193
  return { isNew: true, commit: log.latest?.hash.slice(0, 8) || 'unknown' };
297
194
  }
298
- /** Clone a repository from a source string, returning the local path and commit hash. */
299
195
  export async function cloneRepo(source) {
300
196
  const parsed = parseSource(source);
301
197
  if (parsed.type === 'local') {
@@ -313,7 +209,6 @@ export async function cloneRepo(source) {
313
209
  isNew: result.isNew,
314
210
  };
315
211
  }
316
- /** Get the short commit hash (8 chars) of the latest commit in a repo. */
317
212
  export async function getRepoCommit(repoPath) {
318
213
  try {
319
214
  const git = simpleGit(repoPath);
@@ -321,13 +216,9 @@ export async function getRepoCommit(repoPath) {
321
216
  return log.latest?.hash.slice(0, 8) || 'unknown';
322
217
  }
323
218
  catch {
324
- /* not a git repo or no commits */
325
219
  return 'unknown';
326
220
  }
327
221
  }
328
- /** Read {@link RepoStateSnapshot} for `repoPath` using plumbing commands so the
329
- * result is stable across git versions and never mutates the tree. Returns null
330
- * when the path is not a git worktree. */
331
222
  export function readRepoState(repoPath) {
332
223
  const runGit = (args) => {
333
224
  try {
@@ -341,33 +232,17 @@ export function readRepoState(repoPath) {
341
232
  return null;
342
233
  }
343
234
  };
344
- // Gate on a real worktree first; `rev-parse --is-inside-work-tree` prints
345
- // `true` only inside one, and returns non-zero (→ null) otherwise.
346
235
  if (runGit(['rev-parse', '--is-inside-work-tree']) !== 'true')
347
236
  return null;
348
237
  const branchRaw = runGit(['rev-parse', '--abbrev-ref', 'HEAD']);
349
- const branch = branchRaw && branchRaw !== 'HEAD' ? branchRaw : null; // detached → null
238
+ const branch = branchRaw && branchRaw !== 'HEAD' ? branchRaw : null;
350
239
  const headRaw = runGit(['rev-parse', 'HEAD']);
351
240
  const head = headRaw ? headRaw.slice(0, 8) : null;
352
241
  const porcelain = runGit(['status', '--porcelain']);
353
242
  const dirty = porcelain != null && porcelain.length > 0;
354
243
  return { branch, head, dirty };
355
244
  }
356
- /** Memoized per repoRoot — a resolveResource()/listResources()/plugin-discovery
357
- * call that touches many resources from the SAME DotAgents repo must not shell
358
- * out to git once per resource. */
359
245
  const _snapshotShaCache = new Map();
360
- /**
361
- * The short HEAD sha of the git repo at `repoRoot` (`git -C <repoRoot>
362
- * rev-parse --short HEAD`), for provenance — "which commit of this DotAgents
363
- * repo was this resource/plugin resolved from". `undefined` when `repoRoot`
364
- * isn't a git repo (or has no commits yet), never a throw.
365
- *
366
- * Deliberately synchronous + resolved once and cached: callers (resources.ts,
367
- * plugins.ts) attach this as a lazy getter on the resolved object, so a
368
- * consumer that never inspects provenance never pays for the git shell-out —
369
- * see {@link ResolvedResource.snapshotSha} / {@link DiscoveredPlugin.snapshotSha}.
370
- */
371
246
  export function resolveSnapshotSha(repoRoot) {
372
247
  const cached = _snapshotShaCache.get(repoRoot);
373
248
  if (cached !== undefined || _snapshotShaCache.has(repoRoot))
@@ -385,13 +260,9 @@ export function resolveSnapshotSha(repoRoot) {
385
260
  _snapshotShaCache.set(repoRoot, sha);
386
261
  return sha;
387
262
  }
388
- /** Test seam: clear the memoized snapshot-sha cache between test cases. */
389
263
  export function _resetSnapshotShaCacheForTest() {
390
264
  _snapshotShaCache.clear();
391
265
  }
392
- /**
393
- * Get the remote URL for origin in a git repo.
394
- */
395
266
  export async function getRemoteUrl(repoPath) {
396
267
  try {
397
268
  const git = simpleGit(repoPath);
@@ -400,102 +271,44 @@ export async function getRemoteUrl(repoPath) {
400
271
  return origin?.refs?.fetch || origin?.refs?.push || null;
401
272
  }
402
273
  catch {
403
- /* not a git repo or no remotes */
404
274
  return null;
405
275
  }
406
276
  }
407
- /**
408
- * Canonical `host/owner/repo` form of a git remote, transport-agnostic, so the
409
- * same repo cloned over SSH vs HTTPS compares equal. Strips protocol, any
410
- * `user@`, a trailing `.git`, and folds the scp-style `host:owner/repo` colon to
411
- * a slash. Lower-cased. Used to decide whether an existing checkout is "the same
412
- * repo" as a requested source before adopting it.
413
- */
414
277
  export function canonicalGitRemote(url) {
415
278
  const canonical = url
416
279
  .trim()
417
- .replace(/\/+$/, '') // trailing slashes first, so a trailing-slash-after-.git still strips
280
+ .replace(/\/+$/, '')
418
281
  .replace(/\.git$/i, '')
419
- .replace(/^[a-z][a-z0-9+.-]*:\/\//i, '') // strip scheme (https://, ssh://, git://)
420
- .replace(/^[^@/]+@/, '') // strip user@ (git@, ssh user)
421
- .replace(':', '/') // scp-style host:owner/repo → host/owner/repo (first colon only)
282
+ .replace(/^[a-z][a-z0-9+.-]*:\/\//i, '')
283
+ .replace(/^[^@/]+@/, '')
284
+ .replace(':', '/')
422
285
  .toLowerCase();
423
- // Fold a renamed repo's old name onto its new one so both compare equal
424
- // everywhere (see RENAMED_REMOTE_ALIASES).
425
286
  return RENAMED_REMOTE_ALIASES[canonical] ?? canonical;
426
287
  }
427
- /**
428
- * Git remotes that denote the SAME repository under an old and a new name,
429
- * keyed by canonical `host/owner/repo`. `phnx-labs/.agents-system` was renamed
430
- * to `phnx-labs/.agents` on GitHub (PHNX-3394); {@link DEFAULT_SYSTEM_REPO}
431
- * still points at the pre-rename slug (GitHub's own redirect makes that
432
- * resolve fine), so folding the new name onto it here means both compare equal
433
- * everywhere remotes are compared: {@link sameGitRemote} (repo adoption),
434
- * {@link isSystemRepoRemote} (the system-origin check), and the
435
- * DotAgents-layer classifier in state.ts.
436
- */
437
288
  const RENAMED_REMOTE_ALIASES = {
438
289
  'github.com/phnx-labs/.agents': 'github.com/phnx-labs/.agents-system',
439
290
  };
440
- /**
441
- * True when a git remote URL (any transport form: ssh, https, scp-style) points
442
- * at the system DotAgents repo — {@link DEFAULT_SYSTEM_REPO}'s current slug OR
443
- * its `phnx-labs/.agents` rename target (PHNX-3394), which
444
- * {@link canonicalGitRemote} folds onto it via {@link RENAMED_REMOTE_ALIASES}.
445
- * Pure string check with no git spawn, so it is unit-testable off a live
446
- * checkout; {@link isSystemRepoOrigin} reads a dir's origin and delegates here.
447
- */
448
291
  export function isSystemRepoRemote(remote) {
449
292
  if (!remote)
450
293
  return false;
451
294
  const c = canonicalGitRemote(remote);
452
295
  return c === canonicalGitRemote(`https://github.com/${systemRepoSlug(DEFAULT_SYSTEM_REPO)}`);
453
296
  }
454
- /**
455
- * True when `remote` is the origin the system repo is EXPECTED to track on this
456
- * machine, honouring an operator's `AGENTS_SYSTEM_REPO` override.
457
- *
458
- * The system repo ships hooks that register as shell `command` strings run on
459
- * every tool event, and its checkout auto-fast-forwards from origin — so a
460
- * fast-forward from an origin the operator never chose is remote code execution
461
- * on the next command that loads a system resource (PHNX-2957). This is the
462
- * pinning predicate every auto-pull of the system repo gates on: pull only when
463
- * origin is the canonical {@link isSystemRepoRemote} repo, or the exact
464
- * `AGENTS_SYSTEM_REPO` the operator pointed at instead. Anything else — a
465
- * repointed origin, a fork, an unset-then-swapped remote — is refused, not
466
- * pulled. Pure string check; no git spawn.
467
- */
468
297
  export function isExpectedSystemRepoRemote(remote) {
469
298
  if (!remote)
470
299
  return false;
471
300
  const override = process.env.AGENTS_SYSTEM_REPO?.trim();
472
301
  if (override) {
473
- // The override is a source spec (`gh:owner/repo`) or a full clone URL. Match
474
- // the GitHub-slug form the setup path clones, and the raw spec itself, so a
475
- // non-GitHub override URL still verifies.
476
302
  return (sameGitRemote(remote, `https://github.com/${systemRepoSlug(override)}`) ||
477
303
  sameGitRemote(remote, override.replace(/^gh:/, '')));
478
304
  }
479
305
  return isSystemRepoRemote(remote);
480
306
  }
481
- /** True when two git remote URLs point at the same repo across transport forms. */
482
307
  export function sameGitRemote(a, b) {
483
308
  if (!a || !b)
484
309
  return false;
485
310
  return canonicalGitRemote(a) === canonicalGitRemote(b);
486
311
  }
487
- /**
488
- * Commit (if dirty) and push a repo.
489
- *
490
- * Clean tree + local ahead of origin still pushes — "nothing to commit" is not
491
- * "nothing to push". Reports "already up to date" only when `ahead === 0` and
492
- * there is nothing to commit.
493
- *
494
- * `targetBranch` pushes the working tree to a differently-named remote branch
495
- * (`<current>:<targetBranch>`) and is reported back as the result `branch`, so
496
- * callers that print a branch-scoped URL reference where the commit actually
497
- * landed — not the checked-out branch.
498
- */
499
312
  export async function commitAndPush(repoPath, message, targetBranch) {
500
313
  try {
501
314
  const git = simpleGit(repoPath);
@@ -504,8 +317,6 @@ export async function commitAndPush(repoPath, message, targetBranch) {
504
317
  assertValidBranchName(branch);
505
318
  if (targetBranch)
506
319
  assertValidBranchName(targetBranch);
507
- // The branch the commit ends up on remotely — the checked-out branch unless
508
- // an explicit target was requested.
509
320
  const pushedBranch = targetBranch || branch;
510
321
  let committed = false;
511
322
  if (status.files.length > 0) {
@@ -515,9 +326,6 @@ export async function commitAndPush(repoPath, message, targetBranch) {
515
326
  status = await git.status();
516
327
  }
517
328
  const ahead = status.ahead ?? 0;
518
- // A same-branch push short-circuits when there is nothing new; a push to a
519
- // different target branch must still run even from a clean, non-ahead tree,
520
- // since the target may not carry these commits yet.
521
329
  if (!committed && ahead === 0 && pushedBranch === branch) {
522
330
  return {
523
331
  success: true,
@@ -527,13 +335,11 @@ export async function commitAndPush(repoPath, message, targetBranch) {
527
335
  pushed: false,
528
336
  };
529
337
  }
530
- // Capture remote tip before push for a real ref range in the detail string.
531
338
  let before = '';
532
339
  try {
533
340
  before = (await git.raw(['rev-parse', '--short=8', `origin/${pushedBranch}`])).trim();
534
341
  }
535
342
  catch {
536
- /* origin/<branch> may not exist yet (first push) */
537
343
  }
538
344
  await pushOrigin(git, branch, targetBranch);
539
345
  let after = '';
@@ -565,9 +371,6 @@ export async function commitAndPush(repoPath, message, targetBranch) {
565
371
  return { success: false, error: err.message };
566
372
  }
567
373
  }
568
- /**
569
- * Check if repo has uncommitted changes.
570
- */
571
374
  export async function hasUncommittedChanges(repoPath) {
572
375
  try {
573
376
  const git = simpleGit(repoPath);
@@ -575,66 +378,24 @@ export async function hasUncommittedChanges(repoPath) {
575
378
  return status.files.length > 0;
576
379
  }
577
380
  catch {
578
- /* not a git repo */
579
381
  return false;
580
382
  }
581
383
  }
582
- /**
583
- * Check if a directory is a git repository (**synchronous, root-only**).
584
- *
585
- * Tests for a `.git` entry directly under `dir`, so it recognizes only a
586
- * repository *root* — it returns false inside a subdirectory and for linked
587
- * worktrees (whose `.git` is a file pointing elsewhere is caught, but a nested
588
- * cwd is not). This is deliberate: the system-repo sync callers here always
589
- * pass a known root. For the async, worktree-correct predicate used by teams,
590
- * see `isGitRepo` in `lib/teams/worktree.ts` (which shells out to
591
- * `git rev-parse --git-dir`). The two are intentionally **not** merged.
592
- */
593
384
  export function isGitRepo(dir) {
594
385
  return fs.existsSync(path.join(dir, '.git'));
595
386
  }
596
- /**
597
- * Return the absolute path to the git working-tree root containing `dir`.
598
- *
599
- * Shells out to `git rev-parse --show-toplevel`, so it resolves correctly from
600
- * any subdirectory and for linked worktrees (unlike the root-only, synchronous
601
- * {@link isGitRepo} above). Throws if `dir` is not inside a git repository.
602
- *
603
- * Git prints POSIX separators even on Windows (`C:/Users/...`); we fold them to
604
- * the native separator so the result is a real filesystem path that compares
605
- * equal to one built with `path.*`. On POSIX this is a no-op.
606
- */
607
387
  export async function getGitRoot(dir) {
608
388
  const root = await simpleGit(dir).revparse(['--show-toplevel']);
609
389
  return toNativePath(root.trim());
610
390
  }
611
- /**
612
- * Return the absolute path to the **main** working-tree root for `dir`.
613
- *
614
- * Unlike {@link getGitRoot}, this stays correct when `dir` is inside a *linked*
615
- * worktree: `--show-toplevel` there returns the worktree's own path, but the
616
- * common git dir (`--git-common-dir`) always points at the primary repo's
617
- * `.git`, whose parent is the main checkout. Throws if `dir` is not in a repo.
618
- *
619
- * Git prints POSIX separators even on Windows (`C:/Users/...`); we fold them to
620
- * the native separator so the result is a real filesystem path that compares
621
- * equal to one built with `path.*`. On POSIX this is a no-op.
622
- */
623
391
  export async function getMainRepoRoot(dir) {
624
392
  const common = await simpleGit(dir).raw(['rev-parse', '--path-format=absolute', '--git-common-dir']);
625
393
  return toNativePath(path.dirname(common.trim()));
626
394
  }
627
- /**
628
- * Initialize a git repo in an existing directory.
629
- */
630
395
  export async function initRepo(dir) {
631
396
  const git = simpleGit(dir);
632
397
  await git.init();
633
398
  }
634
- /**
635
- * Clone a repo into an existing directory (for initializing ~/.agents/).
636
- * This clones into a temp dir, moves .git, then checks out tracked files.
637
- */
638
399
  export async function cloneIntoExisting(source, targetDir) {
639
400
  const parsed = parseSource(source);
640
401
  if (parsed.type === 'local') {
@@ -644,23 +405,19 @@ export async function cloneIntoExisting(source, targetDir) {
644
405
  const tempDir = path.join(targetDir, '.git-clone-temp');
645
406
  try {
646
407
  assertSafeGitTransport(parsed.url);
647
- // Clone to temp directory
648
408
  fs.mkdirSync(tempDir, { recursive: true });
649
409
  await git.clone(parsed.url, tempDir);
650
410
  const repoGit = simpleGit(tempDir);
651
411
  if (parsed.ref) {
652
412
  await repoGit.checkout(parsed.ref);
653
413
  }
654
- // Move .git directory to target
655
414
  const gitDir = path.join(tempDir, '.git');
656
415
  const targetGitDir = path.join(targetDir, '.git');
657
416
  if (fs.existsSync(targetGitDir)) {
658
417
  fs.rmSync(targetGitDir, { recursive: true });
659
418
  }
660
419
  fs.renameSync(gitDir, targetGitDir);
661
- // Clean up temp
662
420
  fs.rmSync(tempDir, { recursive: true });
663
- // Checkout tracked files from git (restores repo files, respects .gitignore)
664
421
  const targetGit = simpleGit(targetDir);
665
422
  await targetGit.checkout('.');
666
423
  installGithooksSymlinks(targetDir);
@@ -671,45 +428,24 @@ export async function cloneIntoExisting(source, targetDir) {
671
428
  };
672
429
  }
673
430
  catch (err) {
674
- // Clean up temp on error
675
431
  if (fs.existsSync(tempDir)) {
676
432
  fs.rmSync(tempDir, { recursive: true });
677
433
  }
678
434
  return { success: false, commit: '', error: err.message };
679
435
  }
680
436
  }
681
- /**
682
- * Git-back an EXISTING, populated directory from a remote — clone it in place
683
- * without deleting the local files. Turns a plain `~/.agents` folder (which setup
684
- * creates as a bare `mkdirSync` and never git-clones — see state.ts ensureAgentsDir)
685
- * into a real clone of the user's config remote, so `agents repo pull/push` and
686
- * `agents sync` work on a fresh or Windows machine that never got the manual clone.
687
- *
688
- * Unlike cloneIntoExisting (which blindly `checkout .`s over local files), this
689
- * BACKS UP every tracked file whose local copy differs from the remote — into a
690
- * sibling `<dir>.pre-adopt-backup/` OUTSIDE the repo so it can't be re-committed —
691
- * before overwriting it. So a box with local edits to agents.yaml/hooks/rules
692
- * doesn't silently lose them. Untracked runtime state (.cache/.history/.system,
693
- * all gitignored) is never touched because `checkout .` only restores tracked paths.
694
- */
695
437
  export async function adoptRepo(source, targetDir) {
696
438
  const trimmed = source.trim();
697
439
  if (fs.existsSync(path.join(targetDir, '.git'))) {
698
440
  return { success: false, commit: '', backedUp: [], error: 'Already a git repo — nothing to adopt' };
699
441
  }
700
- // Preserve the user's transport. `parseSource` THROWS for `ssh://` and any
701
- // non-github `git@host:` URL, and rewrites `git@github.com:x` → https (breaking
702
- // SSH-key-only auth — the common config-repo setup — so a private clone hangs on
703
- // a credential prompt). So for an SSH URL, clone it AS-IS and never call
704
- // parseSource; for everything else, normalize + reject local via parseSource —
705
- // inside the try, so a malformed URL returns a graceful error, not a stack trace.
706
442
  const isSsh = trimmed.startsWith('git@') || trimmed.startsWith('ssh://');
707
443
  const tempDir = path.join(targetDir, '.git-adopt-temp');
708
444
  try {
709
445
  let cloneUrl;
710
446
  let ref;
711
447
  if (isSsh) {
712
- cloneUrl = trimmed; // SSH stays SSH; clone the remote's default HEAD.
448
+ cloneUrl = trimmed;
713
449
  }
714
450
  else {
715
451
  const parsed = parseSource(source);
@@ -721,15 +457,8 @@ export async function adoptRepo(source, targetDir) {
721
457
  }
722
458
  assertSafeGitTransport(cloneUrl);
723
459
  fs.mkdirSync(targetDir, { recursive: true });
724
- // Idempotency: clear a stale temp left by an interrupted prior run.
725
460
  if (fs.existsSync(tempDir))
726
461
  fs.rmSync(tempDir, { recursive: true, force: true });
727
- // Clone to temp, then move its .git in so the index == remote HEAD.
728
- // Fail fast on a missing credential instead of hanging on a prompt: set
729
- // GIT_TERMINAL_PROMPT=0 on the inherited env directly rather than via
730
- // simple-git's `.env()`, which validates and rejects command-like vars the
731
- // harness may set (GIT_EDITOR, PAGER, …) — the child inherits process.env,
732
- // and non-interactive git is what we always want in the CLI anyway.
733
462
  process.env.GIT_TERMINAL_PROMPT = '0';
734
463
  await simpleGit().clone(cloneUrl, tempDir);
735
464
  const repoGit = simpleGit(tempDir);
@@ -738,9 +467,6 @@ export async function adoptRepo(source, targetDir) {
738
467
  fs.renameSync(path.join(tempDir, '.git'), path.join(targetDir, '.git'));
739
468
  fs.rmSync(tempDir, { recursive: true, force: true });
740
469
  const targetGit = simpleGit(targetDir);
741
- // Back up any TRACKED file whose local copy differs from the remote before the
742
- // checkout clobbers it. `diff --name-only` (worktree vs the moved-in index) is
743
- // exactly that set; a deleted-locally file has nothing to preserve.
744
470
  const diff = await targetGit.diff(['--name-only']);
745
471
  const clobbered = diff.split('\n').map((s) => s.trim()).filter(Boolean);
746
472
  let backupDir;
@@ -757,8 +483,6 @@ export async function adoptRepo(source, targetDir) {
757
483
  backedUp.push(rel);
758
484
  }
759
485
  }
760
- // Materialize the remote's tracked files (respects .gitignore, so
761
- // .cache/.history/.system stay put), overwriting the now-backed-up locals.
762
486
  await targetGit.checkout('.');
763
487
  installGithooksSymlinks(targetDir);
764
488
  const log = await targetGit.log({ maxCount: 1 });
@@ -770,16 +494,9 @@ export async function adoptRepo(source, targetDir) {
770
494
  return { success: false, commit: '', backedUp: [], error: err.message };
771
495
  }
772
496
  }
773
- /**
774
- * Device-local record of the user config repo's remote URL, kept OUTSIDE the git
775
- * tree so it survives a lost `.git` (`.history/` is gitignored runtime state).
776
- * This is what lets `agents repo sync user` adopt-in-place a box that was healthy
777
- * once and later lost its checkout, without the operator re-typing the URL.
778
- */
779
497
  function userRepoRemoteRecordPath(dir) {
780
498
  return path.join(dir, '.history', 'user-repo-remote.json');
781
499
  }
782
- /** Read an origin remote URL from a git dir, or null when there is none. */
783
500
  export function readOriginUrl(dir) {
784
501
  if (!isGitRepo(dir))
785
502
  return null;
@@ -793,11 +510,6 @@ export function readOriginUrl(dir) {
793
510
  return null;
794
511
  }
795
512
  }
796
- /**
797
- * Persist the user repo's remote URL to device-local runtime state so a future
798
- * adopt-in-place can recover it after a `.git` loss. Best-effort — a write
799
- * failure never blocks a sync.
800
- */
801
513
  export function recordUserRepoRemote(dir, url) {
802
514
  try {
803
515
  const file = userRepoRemoteRecordPath(dir);
@@ -805,20 +517,8 @@ export function recordUserRepoRemote(dir, url) {
805
517
  fs.writeFileSync(file, JSON.stringify({ url }, null, 2) + '\n', { mode: 0o600 });
806
518
  }
807
519
  catch {
808
- /* runtime cache write is best-effort */
809
520
  }
810
521
  }
811
- /**
812
- * Resolve the user config repo's remote URL WITHOUT hardcoding it, for the
813
- * adopt-in-place self-heal. In priority order:
814
- * 1. an existing `origin` remote on the dir (a partial repo that kept its
815
- * `.git` but drifted) — the same source `agents repo sync` already reads;
816
- * 2. the `AGENTS_USER_REPO_URL` env override (a fresh/never-cloned box);
817
- * 3. the device-local record written by a prior healthy sync (a box that lost
818
- * its `.git` but kept `.history/` runtime state).
819
- * Returns null when none is known — the caller then guides the operator to
820
- * `agents repo pull user <git-url>` instead of crashing.
821
- */
822
522
  export function resolveUserRepoRemoteUrl(dir) {
823
523
  const fromOrigin = readOriginUrl(dir);
824
524
  if (fromOrigin)
@@ -833,23 +533,9 @@ export function resolveUserRepoRemoteUrl(dir) {
833
533
  return url;
834
534
  }
835
535
  catch {
836
- /* no record yet */
837
536
  }
838
537
  return null;
839
538
  }
840
- /**
841
- * Decide whether a local top-level `agents.yaml` is a stale install stub that
842
- * should be restored from the committed copy, vs. a legitimately customized file
843
- * that must be preserved.
844
- *
845
- * The stub a partial install leaves behind (createDefaultMeta + a few config
846
- * writes) is strictly SHORTER than the committed config AND missing whole
847
- * top-level blocks the committed one carries (`config:` / `hooks:` — the fleet
848
- * browser hub and hook registrations). Device-specific settings live in
849
- * `devices/<host>/agents.yaml`, never here, so restoring the top-level file is
850
- * safe. A file that already carries those blocks (or is longer) is treated as a
851
- * real local edit and left alone — it surfaces as a modified path instead.
852
- */
853
539
  export function isStaleAgentsYamlStub(local, committed) {
854
540
  if (local.trim() === committed.trim())
855
541
  return false;
@@ -858,30 +544,6 @@ export function isStaleAgentsYamlStub(local, committed) {
858
544
  (/^hooks:/m.test(committed) && !/^hooks:/m.test(local));
859
545
  return shorter && missingBlock;
860
546
  }
861
- /**
862
- * Adopt an EXISTING, non-git (or origin-less) `~/.agents` directory in place —
863
- * git-back it against its remote WITHOUT re-cloning and WITHOUT destroying the
864
- * runtime state it carries (`.cache` / `.history` / `scratch` / `.system`, all
865
- * gitignored). The self-heal for a partial install (PHNX-3301): the current code
866
- * hard-fails with "Not a git repo", and the only manual fix is a destructive
867
- * re-clone that wipes that runtime state.
868
- *
869
- * Plumbing-only, so it never trips the fleet git-guard (no `reset` / `checkout
870
- * <branch>` / `stash` / `git config`):
871
- * 1. `git init` + point HEAD at `main`.
872
- * 2. `git remote add origin <url>`.
873
- * 3. `git fetch origin main`.
874
- * 4. `git update-ref refs/heads/main origin/main`; set upstream to origin/main.
875
- * 5. `git read-tree origin/main` — index = origin/main, working tree untouched.
876
- * 6. Materialize only the tracked files MISSING from the working tree
877
- * (`checkout-index` on that set) — existing local files are never overwritten.
878
- * 7. Reconcile the top-level `agents.yaml`: restore it from origin/main only
879
- * when the local copy is a stale stub ({@link isStaleAgentsYamlStub}).
880
- *
881
- * Idempotent: a second run finds the remote/refs already present and simply
882
- * re-materializes nothing. Any tracked path with real local edits is returned in
883
- * `localEdits` (surfaced, never clobbered).
884
- */
885
547
  export async function adoptRepoInPlace(dir, remoteUrl) {
886
548
  const empty = {
887
549
  success: false,
@@ -892,48 +554,28 @@ export async function adoptRepoInPlace(dir, remoteUrl) {
892
554
  };
893
555
  const trimmed = remoteUrl.trim();
894
556
  try {
895
- // The URL is always a resolved git remote (origin / env / record), never a
896
- // `gh:` shorthand — so skip parseSource (which THROWS on ssh:// and rewrites
897
- // git@github -> https, breaking SSH-key-only auth). assertSafeGitTransport
898
- // still blocks the dangerous transports (ext::, file://, option injection)
899
- // while permitting https / ssh / scp-style / a local bare repo.
900
557
  assertSafeGitTransport(trimmed);
901
558
  if (!fs.existsSync(dir)) {
902
559
  return { ...empty, error: `Target directory does not exist: ${dir}` };
903
560
  }
904
- // Non-interactive git — fail fast on a missing credential instead of hanging
905
- // on a prompt (same rationale as adoptRepo).
906
561
  process.env.GIT_TERMINAL_PROMPT = '0';
907
562
  const git = simpleGit(dir);
908
- // 1. init + HEAD -> main (idempotent: init on an existing repo is a no-op).
909
- // Set HEAD via symbolic-ref rather than `init -b main` so it works on git
910
- // < 2.28, and lands on `main` even if the repo already initialized as
911
- // `master`.
912
563
  if (!isGitRepo(dir))
913
564
  await git.init();
914
565
  await git.raw(['symbolic-ref', 'HEAD', 'refs/heads/main']);
915
- // 2. origin — add only when absent, so a re-run keeps the existing remote.
916
566
  const remotes = await git.getRemotes(true);
917
567
  if (!remotes.some((r) => r.name === 'origin')) {
918
568
  await git.raw(['remote', 'add', 'origin', trimmed]);
919
569
  }
920
- // 3-4. fetch, plant the local main on origin/main, set upstream.
921
570
  await git.raw(['fetch', 'origin', 'main']);
922
571
  await git.raw(['update-ref', 'refs/heads/main', 'origin/main']);
923
572
  await git.raw(['branch', '--set-upstream-to=origin/main', 'main']);
924
- // 5. index = origin/main, working tree untouched.
925
573
  await git.raw(['read-tree', 'origin/main']);
926
- // 6. Materialize only the tracked files MISSING on disk. Passing the explicit
927
- // missing set (never `checkout-index -a`) guarantees no existing local
928
- // file — a stub agents.yaml, a modified rule — is overwritten. Chunked to
929
- // stay under the argv limit on a cold box where most files are missing.
930
574
  const tracked = (await git.raw(['ls-files', '-z'])).split('\0').filter(Boolean);
931
575
  const missing = tracked.filter((rel) => !fs.existsSync(path.join(dir, rel)));
932
576
  for (let i = 0; i < missing.length; i += 500) {
933
577
  await git.raw(['checkout-index', '-f', '--', ...missing.slice(i, i + 500)]);
934
578
  }
935
- // 7. Reconcile a stale-stub top-level agents.yaml from origin/main. `restore`
936
- // is plumbing the git-guard allows; it rewrites only this one path.
937
579
  let reconciledAgentsYaml = false;
938
580
  let agentsYamlBackup;
939
581
  if (tracked.includes('agents.yaml')) {
@@ -941,10 +583,6 @@ export async function adoptRepoInPlace(dir, remoteUrl) {
941
583
  const local = fs.existsSync(abs) ? fs.readFileSync(abs, 'utf-8') : '';
942
584
  const committed = await git.raw(['show', 'origin/main:agents.yaml']);
943
585
  if (isStaleAgentsYamlStub(local, committed)) {
944
- // The stub heuristic can't perfectly distinguish a partial-install stub
945
- // from a user who deliberately removed a whole block, so save the local
946
- // copy to gitignored runtime state BEFORE restoring — a false positive is
947
- // then recoverable and surfaced, never silent data loss.
948
586
  if (local) {
949
587
  agentsYamlBackup = path.join(dir, '.history', 'agents.yaml.pre-adopt.bak');
950
588
  fs.mkdirSync(path.dirname(agentsYamlBackup), { recursive: true });
@@ -954,8 +592,6 @@ export async function adoptRepoInPlace(dir, remoteUrl) {
954
592
  reconciledAgentsYaml = true;
955
593
  }
956
594
  }
957
- // Surface — never silently keep — any tracked path whose local copy still
958
- // differs from origin/main after the reconcile (real un-gitignored edits).
959
595
  const dirty = (await git.raw(['status', '--porcelain', '--untracked-files=no']))
960
596
  .split('\n')
961
597
  .map((l) => l.slice(3).trim())
@@ -976,14 +612,6 @@ export async function adoptRepoInPlace(dir, remoteUrl) {
976
612
  return { ...empty, error: err.message };
977
613
  }
978
614
  }
979
- /**
980
- * Self-heal entry point for the USER config repo: when `dir` is not a git repo
981
- * (or is a repo with no `origin`), resolve its remote URL and adopt it in place;
982
- * otherwise return null (nothing to adopt — the normal sync path runs). Returns a
983
- * failed result carrying `needsUrl` when the URL cannot be resolved, so the
984
- * caller can print the `agents repo pull user <git-url>` remediation instead of
985
- * the old "Not a git repo" crash.
986
- */
987
615
  export async function adoptUserRepoIfNeeded(dir, opts = {}) {
988
616
  const hasOrigin = isGitRepo(dir) && readOriginUrl(dir) !== null;
989
617
  if (hasOrigin)
@@ -1002,12 +630,6 @@ export async function adoptUserRepoIfNeeded(dir, opts = {}) {
1002
630
  }
1003
631
  return adoptRepoInPlace(dir, url);
1004
632
  }
1005
- /**
1006
- * Check if the repo's origin points to the system repo — `phnx-labs/.agents-system`
1007
- * or its GitHub rename target `phnx-labs/.agents` (PHNX-3394), across any
1008
- * transport form. Reads the dir's origin and delegates the match to the pure
1009
- * {@link isSystemRepoRemote}.
1010
- */
1011
633
  export async function isSystemRepoOrigin(dir) {
1012
634
  try {
1013
635
  const git = simpleGit(dir);
@@ -1016,14 +638,9 @@ export async function isSystemRepoOrigin(dir) {
1016
638
  return isSystemRepoRemote(origin?.refs?.fetch);
1017
639
  }
1018
640
  catch {
1019
- /* not a git repo or no remotes */
1020
641
  return false;
1021
642
  }
1022
643
  }
1023
- /**
1024
- * Render an absolute path in ~-relative form with forward slashes, matching the
1025
- * way the rest of the CLI prints home-anchored paths (e.g. `~/.agents/.system`).
1026
- */
1027
644
  export function displayHomePath(dir) {
1028
645
  const home = os.homedir();
1029
646
  const rel = dir.startsWith(home) ? '~' + dir.slice(home.length) : dir;
@@ -1033,14 +650,6 @@ export async function pullRepo(dir, options = {}) {
1033
650
  const strict = options.mode === 'default-branch-fast-forward';
1034
651
  try {
1035
652
  const git = simpleGit(dir);
1036
- // A rebase left in progress by an earlier run must be reported as itself.
1037
- // Without this the dirty-tree guard below claims "Blocked by local changes",
1038
- // which is both wrong and actively harmful advice mid-rebase on a detached
1039
- // HEAD.
1040
- // Ask git where the state dirs live rather than assuming `<dir>/.git/` is a
1041
- // directory. In a worktree `.git` is a FILE containing `gitdir: <path>`, so
1042
- // path.join(dir, '.git', 'rebase-merge') can never exist and the check would
1043
- // silently never fire. `rev-parse --git-path` resolves both layouts.
1044
653
  const gitPath = async (name) => {
1045
654
  try {
1046
655
  const raw = (await git.raw(['rev-parse', '--git-path', name])).trim();
@@ -1067,9 +676,6 @@ export async function pullRepo(dir, options = {}) {
1067
676
  };
1068
677
  }
1069
678
  const status = await git.status();
1070
- // Strict mode (projects pull): refuse a dirty tree immediately — no fetch
1071
- // needed to know the answer, and the caller must not risk touching staged
1072
- // or modified files with an incoming fast-forward.
1073
679
  const isDirty = !status.isClean();
1074
680
  if (strict && isDirty) {
1075
681
  return {
@@ -1078,12 +684,6 @@ export async function pullRepo(dir, options = {}) {
1078
684
  error: `Blocked: dirty working tree. Commit or discard local changes before pulling.\n\n cd ${displayHomePath(dir)} && git status`,
1079
685
  };
1080
686
  }
1081
- // A dirty tree is not decided here: whether a fast-forward is safe depends
1082
- // on what is actually incoming, and that needs a fetched upstream ref. The
1083
- // gate therefore sits just before the integrate step below. The exception is
1084
- // a repo with no remote at all — there is nothing to fast-forward from, so
1085
- // the dirt is the whole answer and the resolution below would only fail
1086
- // with a less useful message.
1087
687
  if (!strict && isDirty && (await git.getRemotes()).length === 0) {
1088
688
  return {
1089
689
  success: false,
@@ -1092,11 +692,6 @@ export async function pullRepo(dir, options = {}) {
1092
692
  };
1093
693
  }
1094
694
  const branch = status.current || 'main';
1095
- // Resolve the upstream ref to fast-forward against.
1096
- // Strict mode: always fetch origin and resolve its default branch — then
1097
- // verify the current branch IS the remote default (refuse otherwise).
1098
- // Preserve-local mode: prefer the local branch's tracking config; only
1099
- // fetch when no tracking is set.
1100
695
  let tracking = status.tracking;
1101
696
  if (strict || !tracking) {
1102
697
  try {
@@ -1109,8 +704,6 @@ export async function pullRepo(dir, options = {}) {
1109
704
  tracking = `origin/${branch}`;
1110
705
  }
1111
706
  }
1112
- // Strict: the checkout must be on the remote default branch — never pull a
1113
- // feature branch across the fleet unattended.
1114
707
  if (strict) {
1115
708
  const sep = tracking.indexOf('/');
1116
709
  const expectedBranch = sep > 0 ? tracking.slice(sep + 1) : tracking;
@@ -1122,21 +715,9 @@ export async function pullRepo(dir, options = {}) {
1122
715
  };
1123
716
  }
1124
717
  }
1125
- // Split the remote-tracking ref (<remote>/<branch>) so callers/logs can name
1126
- // the remote. Branch names may contain slashes, so split on the FIRST
1127
- // separator only. The integrate step below uses `tracking` directly (not a
1128
- // second `git pull <remote> <branch>`) so a multi-entry FETCH_HEAD cannot
1129
- // turn a clean fast-forward into "Cannot rebase onto multiple branches".
1130
718
  const sep = tracking.indexOf('/');
1131
719
  const remoteBranch = sep > 0 ? tracking.slice(sep + 1) : branch;
1132
- // Keep branch-name validation on the ref we would have passed to pull —
1133
- // rejects traversal / flag-smuggling shapes before any integrate command.
1134
720
  assertValidBranchName(remoteBranch);
1135
- // Bare fetch: updates every remote, so the revparse below sees a fresh ref
1136
- // whichever one the branch tracks. Deliberately argument-less — simple-git's
1137
- // fetchTask only forwards a remote when BOTH remote and branch are passed,
1138
- // so `fetch(remoteName)` would silently drop the argument and do exactly
1139
- // this anyway. Saying so beats an inert argument that reads as targeted.
1140
721
  await git.fetch();
1141
722
  const localRef = await git.revparse(['HEAD']);
1142
723
  const remoteRef = await git.revparse([tracking]).catch(() => null);
@@ -1151,17 +732,8 @@ export async function pullRepo(dir, options = {}) {
1151
732
  branch,
1152
733
  };
1153
734
  }
1154
- // Behind-only when tracking has commits we lack AND we have none of our own
1155
- // on top. Use rev-list counts — simple-git does not reject on the exit-1
1156
- // that `merge-base --is-ancestor` returns for a non-ancestor, so a try/catch
1157
- // around that call would always report "can ff" (RUSH-2282).
1158
735
  const aheadCount = parseInt((await git.raw(['rev-list', '--count', `${tracking}..HEAD`])).trim(), 10);
1159
736
  const behindCount = parseInt((await git.raw(['rev-list', '--count', `HEAD..${tracking}`])).trim(), 10);
1160
- // Both counts are the ONLY inputs to the fast-forward decision, so a count
1161
- // we cannot read is a refusal, not a reason to guess. Fail here rather than
1162
- // downstream: an unreadable count used to fall through to the rebase arm in
1163
- // preserve-local mode, and to a "HEAD diverged" message in strict mode that
1164
- // named the wrong cause.
1165
737
  if (!Number.isFinite(aheadCount) || !Number.isFinite(behindCount)) {
1166
738
  return {
1167
739
  success: false,
@@ -1170,8 +742,6 @@ export async function pullRepo(dir, options = {}) {
1170
742
  };
1171
743
  }
1172
744
  const canFastForward = aheadCount === 0 && behindCount > 0;
1173
- // Strict: block if HEAD has local commits not on the remote — fast-forward
1174
- // requires the local tip to be an ancestor of the remote tip.
1175
745
  if (strict && aheadCount > 0) {
1176
746
  return {
1177
747
  success: false,
@@ -1179,9 +749,6 @@ export async function pullRepo(dir, options = {}) {
1179
749
  error: `Blocked: HEAD is ${aheadCount} commit${aheadCount === 1 ? '' : 's'} ahead of ${tracking}. Push or discard local commits before pulling.`,
1180
750
  };
1181
751
  }
1182
- // Dirty tree (preserve-local only): same rule `syncRepoGit` applies —
1183
- // a fast-forward that touches nothing the author is holding may proceed; a
1184
- // rebase or a colliding path may not. Strict mode already refused above.
1185
752
  if (!strict && isDirty) {
1186
753
  const refusal = await dirtyTreeRefusal(git, status, tracking);
1187
754
  if (refusal) {
@@ -1194,31 +761,13 @@ export async function pullRepo(dir, options = {}) {
1194
761
  }
1195
762
  try {
1196
763
  if (canFastForward) {
1197
- // Integrate the already-fetched tracking ref. No network, no FETCH_HEAD.
1198
764
  await git.raw(['merge', '--ff-only', tracking]);
1199
765
  }
1200
766
  else {
1201
- // Diverged (or local-only commits). Rebase onto the tracking tip —
1202
- // same outcome as `git pull --rebase <remote> <branch>` without
1203
- // re-fetching or consulting FETCH_HEAD.
1204
- //
1205
- // PRESERVE-LOCAL ONLY — strict mode can never reach this arm, so the
1206
- // fleet pull never rewrites history. Strict has already returned for
1207
- // every case that leaves `canFastForward` false: an identical local and
1208
- // remote ref, `aheadCount > 0` (which is also what "diverged" means),
1209
- // and a count that would not parse. That leaves `aheadCount === 0` with
1210
- // a differing ref, i.e. `behindCount > 0` — a fast-forward. Keep those
1211
- // three returns above intact if you change this.
1212
767
  await git.raw(['rebase', tracking]);
1213
768
  }
1214
769
  }
1215
770
  catch (err) {
1216
- // Abort so the tree is restored, matching the atomicity --ff-only gave us.
1217
- // Without this a conflict leaves the repo detached, mid-rebase, with
1218
- // conflict markers written into live config (this repo is ~/.agents —
1219
- // agents.yaml and AGENTS.md are in it), and every later pull misreports
1220
- // the cause. `agents sync` reaches this path unattended across the fleet,
1221
- // so a wedged checkout would be worse than the bug this fixes.
1222
771
  await git.raw(['rebase', '--abort']).catch(() => { });
1223
772
  const verb = canFastForward ? 'Fast-forward' : 'Rebase';
1224
773
  return {
@@ -1227,8 +776,6 @@ export async function pullRepo(dir, options = {}) {
1227
776
  error: `${verb} onto ${tracking} failed — the pull was rolled back, nothing changed.\n\nResolve the divergence, then pull again:\n\n cd ${displayHomePath(dir)} && git log --oneline HEAD...${tracking}\n\n${err.message}`,
1228
777
  };
1229
778
  }
1230
- // Strict mode never installs git hook symlinks — the command is a read-model
1231
- // operation (update pointers only; never reconfigure the checkout).
1232
779
  if (!strict)
1233
780
  installGithooksSymlinks(dir);
1234
781
  const log = await git.log({ maxCount: 1 });
@@ -1242,17 +789,6 @@ export async function pullRepo(dir, options = {}) {
1242
789
  return { success: false, commit: '', error: err.message };
1243
790
  }
1244
791
  }
1245
- /**
1246
- * Every repo-relative path a status reports as locally touched, in one set.
1247
- *
1248
- * Reads `status.files`, which `simple-git` documents as "all files" and which is
1249
- * the same source `isClean()` is computed from — so this set and the decision to
1250
- * treat the tree as dirty can never disagree. The per-category arrays
1251
- * (`modified`, `staged`, `not_added`, …) are projections of that list; unioning
1252
- * them by hand means a category nobody thought of contributes nothing. `from`
1253
- * carries a rename's original path, and the incoming side may collide with
1254
- * either end.
1255
- */
1256
792
  function dirtyPathSet(status) {
1257
793
  const out = new Set();
1258
794
  for (const f of status.files || []) {
@@ -1263,27 +799,6 @@ function dirtyPathSet(status) {
1263
799
  }
1264
800
  return out;
1265
801
  }
1266
- /**
1267
- * Why a dirty working tree must NOT fast-forward to `upstreamRef` — or `null`
1268
- * when it safely can.
1269
- *
1270
- * The single home for that decision: `syncRepoGit` and `pullRepo` both integrate
1271
- * upstream and both meet dirty trees, and two copies of this rule would drift
1272
- * into two different answers for one question. Refusing outright is the thing
1273
- * being replaced — it strands merged changes behind unrelated local files —
1274
- * so the rule is narrow and stated once:
1275
- *
1276
- * - local commits ahead of upstream → refuse (they need a rebase, which
1277
- * requires a clean tree);
1278
- * - an incoming path that is also dirty → refuse, and name it;
1279
- * - otherwise the fast-forward touches nothing the author is holding.
1280
- *
1281
- * `-z` on the diff because `git diff --name-only` C-quotes paths containing
1282
- * unicode or control characters — `café.txt` comes back as `"caf\303\251.txt"`,
1283
- * while `status.files` reports it raw. Without `-z` the two sides are in
1284
- * different encodings and a collision on such a path silently misses. (A plain
1285
- * space does NOT trigger quoting; `my file.txt` is emitted as-is either way.)
1286
- */
1287
802
  async function dirtyTreeRefusal(git, status, upstreamRef) {
1288
803
  const ahead = parseInt((await git.raw(['rev-list', '--count', `${upstreamRef}..HEAD`])).trim(), 10);
1289
804
  if (Number.isNaN(ahead))
@@ -1297,44 +812,12 @@ async function dirtyTreeRefusal(git, status, upstreamRef) {
1297
812
  .filter(Boolean);
1298
813
  const collisions = incoming.filter((p) => dirty.has(p));
1299
814
  if (collisions.length > 0) {
1300
- // Central agents.yaml is AUTHORITATIVE (account labels/rows), not regenerable,
1301
- // and a dirty copy always equals serializeCentral(current meta) — so no
1302
- // byte check can tell a stranded real edit from a stale one. Refuse rather
1303
- // than discard: it is data-safe and self-heals, because commit-on-write
1304
- // (lib/state.ts) and the daemon's publish tick both commit agents.yaml,
1305
- // after which the very next pull succeeds normally. See PHNX-3968.
1306
815
  const shown = collisions.slice(0, 5).join(', ');
1307
816
  const more = collisions.length > 5 ? ` (+${collisions.length - 5} more)` : '';
1308
817
  return `incoming changes touch uncommitted paths: ${shown}${more}`;
1309
818
  }
1310
819
  return null;
1311
820
  }
1312
- /**
1313
- * Rebase a repo onto its remote, optionally pushing local commits back up.
1314
- *
1315
- * The one-repo counterpart to `pullRepo` used by `agents sync <repo>`:
1316
- * 1. `git fetch origin`.
1317
- * 2. Clean tree → `git pull --rebase origin <branch>`: rebase, not merge, so a
1318
- * local commit lands cleanly on top of upstream with no merge bubble.
1319
- * 3. Dirty tree → fast-forward instead, but only when that is provably safe:
1320
- * no local commits ahead of upstream, and no incoming path collides with a
1321
- * dirty one. Otherwise refuse, naming the paths that collided.
1322
- * 4. When `push` is set, `git push origin <branch>` to send local commits up.
1323
- *
1324
- * The branch is read from the repo's current HEAD (falls back to `main`) rather
1325
- * than hardcoded. System repos pass `push: false` — they are pull-only mirrors
1326
- * of the npm-shipped upstream.
1327
- *
1328
- * Why step 3 exists: refusing on *any* dirt strands merged changes indefinitely.
1329
- * A DotAgents repo accumulates unrelated local state — a modified `agents.yaml`,
1330
- * a session's scratch file, a machine-local dotfile — and under the old rule one
1331
- * such file froze that box's layer forever, silently. Measured 2026-08-10: a
1332
- * merged fix could not reach three of three boxes, each blocked by files the
1333
- * incoming commits never touched. A `--ff-only` merge is the safe primitive
1334
- * here: it cannot rewrite local commits, and git itself aborts rather than
1335
- * overwrite a modified file, so the path check is belt-and-braces, not the only
1336
- * guard.
1337
- */
1338
821
  export async function syncRepoGit(dir, opts) {
1339
822
  try {
1340
823
  if (!isGitRepo(dir)) {
@@ -1349,8 +832,6 @@ export async function syncRepoGit(dir, opts) {
1349
832
  await git.pull('origin', branch, { '--rebase': 'true' });
1350
833
  }
1351
834
  else {
1352
- // Dirty tree: a rebase would refuse outright, so fast-forward instead —
1353
- // but only when nothing local can be lost. One shared rule, see above.
1354
835
  const refusal = await dirtyTreeRefusal(git, status, `origin/${branch}`);
1355
836
  if (refusal) {
1356
837
  return {
@@ -1375,7 +856,6 @@ export async function syncRepoGit(dir, opts) {
1375
856
  return { success: false, commit: '', pushed: false, error: err.message };
1376
857
  }
1377
858
  }
1378
- /** Compute the sync status of a git repo, optionally scoped to a subdirectory. */
1379
859
  export async function getGitSyncStatus(dir, subdir) {
1380
860
  if (!isGitRepo(dir)) {
1381
861
  return null;
@@ -1390,19 +870,15 @@ export async function getGitSyncStatus(dir, subdir) {
1390
870
  staged: [],
1391
871
  deleted: [],
1392
872
  };
1393
- // Filter to subdir if specified
1394
873
  const filterPath = (file) => {
1395
874
  if (!subdir)
1396
875
  return true;
1397
876
  return file.startsWith(subdir + '/') || file === subdir;
1398
877
  };
1399
- // Get all tracked files in the subdir
1400
878
  const trackedOutput = await git.raw(['ls-files', subdir || '.']);
1401
879
  const trackedFiles = new Set(trackedOutput.split('\n').filter(Boolean));
1402
- // Get untracked files in the subdir
1403
880
  const untrackedOutput = await git.raw(['ls-files', '--others', '--exclude-standard', subdir || '.']);
1404
881
  const untrackedFiles = untrackedOutput.split('\n').filter(Boolean);
1405
- // Working tree changes (not staged)
1406
882
  const changedFiles = new Set();
1407
883
  for (const file of status.modified.filter(filterPath)) {
1408
884
  result.modified.push(file);
@@ -1412,7 +888,6 @@ export async function getGitSyncStatus(dir, subdir) {
1412
888
  result.deleted.push(file);
1413
889
  changedFiles.add(file);
1414
890
  }
1415
- // Staged changes (in index, ready to commit)
1416
891
  for (const file of status.created.filter(filterPath)) {
1417
892
  result.staged.push(file);
1418
893
  changedFiles.add(file);
@@ -1423,11 +898,9 @@ export async function getGitSyncStatus(dir, subdir) {
1423
898
  changedFiles.add(file);
1424
899
  }
1425
900
  }
1426
- // Untracked files (new/local-only)
1427
901
  for (const file of untrackedFiles.filter(filterPath)) {
1428
902
  result.new.push(file);
1429
903
  }
1430
- // Synced = tracked and not changed
1431
904
  for (const file of trackedFiles) {
1432
905
  if (filterPath(file) && !changedFiles.has(file)) {
1433
906
  result.synced.push(file);
@@ -1436,13 +909,9 @@ export async function getGitSyncStatus(dir, subdir) {
1436
909
  return result;
1437
910
  }
1438
911
  catch {
1439
- /* git status failed */
1440
912
  return null;
1441
913
  }
1442
914
  }
1443
- /**
1444
- * Get list of files tracked by git in a directory.
1445
- */
1446
915
  export async function getTrackedFiles(dir, subdir) {
1447
916
  if (!isGitRepo(dir)) {
1448
917
  return [];
@@ -1453,47 +922,34 @@ export async function getTrackedFiles(dir, subdir) {
1453
922
  return result.split('\n').filter(Boolean);
1454
923
  }
1455
924
  catch {
1456
- /* git ls-files failed */
1457
925
  return [];
1458
926
  }
1459
927
  }
1460
- /**
1461
- * Try to auto-pull a git repo if it's clean and has a remote.
1462
- * Uses --ff-only for safety (fails if diverged instead of creating merge commits).
1463
- * Returns silently on success, returns error message on failure.
1464
- */
1465
928
  async function tryAutoPull(dir) {
1466
- // Must be a git repo
1467
929
  if (!isGitRepo(dir)) {
1468
930
  return { pulled: false };
1469
931
  }
1470
932
  try {
1471
933
  const git = simpleGit(dir);
1472
- // Must have origin remote
1473
934
  const remotes = await git.getRemotes(true);
1474
935
  const origin = remotes.find(r => r.name === 'origin');
1475
936
  if (!origin?.refs?.fetch) {
1476
937
  return { pulled: false };
1477
938
  }
1478
- // Must be clean (no uncommitted changes)
1479
939
  const status = await git.status();
1480
940
  if (!status.isClean()) {
1481
941
  return { pulled: false, error: 'Has local changes' };
1482
942
  }
1483
- // Fetch and try fast-forward pull
1484
943
  await git.fetch('origin');
1485
- // Check if we're behind
1486
944
  const localRef = await git.revparse(['HEAD']);
1487
945
  const trackingBranch = status.tracking;
1488
946
  if (!trackingBranch) {
1489
947
  return { pulled: false };
1490
948
  }
1491
- const remoteRef = await git.revparse([trackingBranch]).catch(() => null /* remote ref unavailable */);
949
+ const remoteRef = await git.revparse([trackingBranch]).catch(() => null);
1492
950
  if (!remoteRef || localRef === remoteRef) {
1493
- // Already up to date
1494
951
  return { pulled: false };
1495
952
  }
1496
- // Try fast-forward only pull
1497
953
  await git.pull(['--ff-only']);
1498
954
  return { pulled: true };
1499
955
  }
@@ -1501,17 +957,6 @@ async function tryAutoPull(dir) {
1501
957
  return { pulled: false, error: err.message };
1502
958
  }
1503
959
  }
1504
- /**
1505
- * Auto-pull the system repo ONLY after verifying its origin is the expected
1506
- * system remote (PHNX-2957). The system repo ships hooks that run as shell on
1507
- * tool events, so fast-forwarding it from an unexpected/repointed origin is
1508
- * remote code execution. An origin that fails {@link isExpectedSystemRepoRemote}
1509
- * is REFUSED loud (`refused: true`), never pulled — the canonical system repo
1510
- * (or an operator's `AGENTS_SYSTEM_REPO`) still fast-forwards exactly as before.
1511
- *
1512
- * A system dir with no origin at all is a plain no-op (`pulled: false`), not a
1513
- * refusal — there is nothing to pull from and nothing to distrust.
1514
- */
1515
960
  export async function tryAutoPullSystemRepo(dir) {
1516
961
  if (!isGitRepo(dir))
1517
962
  return { pulled: false };
@@ -1532,16 +977,6 @@ export async function tryAutoPullSystemRepo(dir) {
1532
977
  const res = await tryAutoPull(dir);
1533
978
  return { ...res, actualRemote: remote };
1534
979
  }
1535
- /**
1536
- * How many commits `dir`'s checked-out branch is behind its upstream, read from
1537
- * the LAST-FETCHED remote-tracking ref — no network call. Returns null when the
1538
- * dir is not a git repo, has no upstream configured, or git errors.
1539
- *
1540
- * Used by `agents doctor` to flag a source layer (`~/.agents`, `~/.agents/.system`)
1541
- * that is reconciled against stale truth. Staleness relative to origin is a
1542
- * background auto-pull concern; this surfaces the same fact synchronously in the
1543
- * per-version verdict.
1544
- */
1545
980
  export function commitsBehindUpstream(dir) {
1546
981
  if (!isGitRepo(dir))
1547
982
  return null;
@@ -1556,11 +991,9 @@ export function commitsBehindUpstream(dir) {
1556
991
  return null;
1557
992
  }
1558
993
  };
1559
- // Name of the upstream ref (e.g. `origin/main`) for the human-readable message.
1560
994
  const branch = run(['rev-parse', '--abbrev-ref', '--symbolic-full-name', '@{upstream}']);
1561
995
  if (!branch)
1562
996
  return null;
1563
- // `--count HEAD..@{upstream}` = commits on upstream not yet in HEAD = behind.
1564
997
  const raw = run(['rev-list', '--count', 'HEAD..@{upstream}']);
1565
998
  if (raw === null)
1566
999
  return null;