@overdeck/desktop 0.45.21 → 0.45.23

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 (387) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-CJIFA8Vg.js → acceptance-criteria-DOA0KgXx.js} +5 -5
  3. package/server/{advancing-selfheal-CPOBO5ZS.js → advancing-selfheal-BBu6DSNm.js} +6 -6
  4. package/server/{agent-gc-D6PUckBB.js → agent-gc-BV1q_2EV.js} +4 -4
  5. package/server/agent-state-Bg0lhqwj.js +3 -0
  6. package/server/{agent-state-service-DHwemt96.js → agent-state-service-CnzFKSAQ.js} +1 -1
  7. package/server/{agent-state-service-6MFQqnFy.js → agent-state-service-HoK8U4jW.js} +5 -5
  8. package/server/{agents-DbrHWunF.js → agents-B4Bjbkfv.js} +4 -4
  9. package/server/agents-FlIgQ3ql.js +3 -0
  10. package/server/{archive-planning-BOnwJq8M.js → archive-planning-DYrYojxl.js} +31 -7
  11. package/server/{archive-planning-MPpvQJL4.js → archive-planning-zkJb3BeM.js} +1 -1
  12. package/server/{artifact-index-jobs-BOoySTKD.js → artifact-index-jobs-C-xy7Z5v.js} +2 -2
  13. package/server/{backlog-auto-trigger-BUaFI44J.js → backlog-auto-trigger-GtG71X8H.js} +3 -3
  14. package/server/{behavior-Dg-D8eBG.js → behavior-B_-4EKF3.js} +2 -2
  15. package/server/{briefing-freshness-OouGbJ7d.js → briefing-freshness-DWdW7vUm.js} +2 -2
  16. package/server/{build-info-27NlbKhV.js → build-info-BT096lEl.js} +3 -3
  17. package/server/{build-info-Cv6CI7Gu.js → build-info-DgTqZkL5.js} +1 -1
  18. package/server/{checkpoint-manager-C7mFCY_E.js → checkpoint-manager-B7Bt29J0.js} +1 -1
  19. package/server/{checkpoint-manager-D64fCC4p.js → checkpoint-manager-DDqcGyu8.js} +2 -2
  20. package/server/checkpoint-worker.js +1 -1
  21. package/server/{checkpoints-Vh-J15ge.js → checkpoints-C-AXLfYT.js} +2 -2
  22. package/server/{checkpoints-DwZqT2qQ.js → checkpoints-CpgCjAlN.js} +1 -1
  23. package/server/{claude-hooks-provision-CS5W_dhI.js → claude-hooks-provision-C8wdRnN1.js} +1 -1
  24. package/server/{claude-hooks-provision-BVLGfHrv.js → claude-hooks-provision-but-_qGY.js} +2 -2
  25. package/server/{claude-permissions-C2OrLYKL.js → claude-permissions-H_5wHQZQ.js} +2 -2
  26. package/server/{claude-settings-overlay-DWXjafJh.js → claude-settings-overlay-BTENVmYf.js} +1 -1
  27. package/server/{claude-settings-overlay-DX-fMFpC.js → claude-settings-overlay-CbSz0Dvb.js} +2 -2
  28. package/server/cli-BsVIHwzC.js +3 -0
  29. package/server/{cli-mvpEOb3w.js → cli-vBeXbPrq.js} +9 -9
  30. package/server/{cliproxy-Dvsr4ZkW.js → cliproxy-Bgb2XCqi.js} +2 -2
  31. package/server/{cliproxy-7g1nObvB.js → cliproxy-DW0V86F8.js} +1 -1
  32. package/server/{close-issue-8F6uawYj.js → close-issue-Dn_4c4G8.js} +5 -5
  33. package/server/{closed-issue-reaper-BhV-r-tC.js → closed-issue-reaper-CWpY2uBw.js} +1 -1
  34. package/server/{closed-issue-reaper-BaYQYF6w.js → closed-issue-reaper-hANY_ehE.js} +9 -9
  35. package/server/codex-Dg7Is5yb.js +3 -0
  36. package/server/{codex-D_UBEOwL.js → codex-TmSi-yTv.js} +30 -8
  37. package/server/{codex-parser-BTzlOZiV.js → codex-parser-C4gSH-IR.js} +2 -2
  38. package/server/{config-CrduXs4a.js → config-CCvjQf27.js} +2 -2
  39. package/server/{config-nAB_F-Gp.js → config-DUIhMN_T.js} +1 -1
  40. package/server/{config-G1TOMJZA.js → config-DjLOdbgT.js} +2 -2
  41. package/server/{config-yaml-Ciyp2mYe.js → config-yaml-DvyMuOle.js} +177 -211
  42. package/server/{conflict-gate-BKalpcjL.js → conflict-gate-BSJkNTdp.js} +1 -1
  43. package/server/{conflict-gate-BLUNMs1i.js → conflict-gate-CmrYpa47.js} +3 -3
  44. package/server/{context-layers-YNpf6Q_I.js → context-layers-B3Nt58jl.js} +2 -2
  45. package/server/{context-layers-Cg9ZgVfx.js → context-layers-ZYFcWiyc.js} +3 -3
  46. package/server/{control-settings-D_79A6gp.js → control-settings-aP1ANIlI.js} +4 -4
  47. package/server/{conversation-compaction-DiuZbIUB.js → conversation-compaction-CNbTLB86.js} +8 -8
  48. package/server/{conversation-compaction-CMIeWW4_.js → conversation-compaction-DiG5zWQq.js} +1 -1
  49. package/server/{conversation-service-DQybSPUK.js → conversation-service-Du-MTNpJ.js} +6 -6
  50. package/server/{conversation-service-CWk8mEym.js → conversation-service-Up7FEzIC.js} +1 -1
  51. package/server/{conversations-BJ-t3BRm.js → conversations-6mPANqvL.js} +1 -1
  52. package/server/{conversations-BUgGvqVL.js → conversations-DbOs1e9Q.js} +4 -4
  53. package/server/{cost-jJ2cgDcG.js → cost-CW4WSe72.js} +3 -3
  54. package/server/{cost-Drm7qeD5.js → cost-Ca0YTWDw.js} +18 -2
  55. package/server/{cost-sync-DzHP6zaR.js → cost-sync-C0VdGme1.js} +3 -3
  56. package/server/{dag-DIji6O2b.js → dag-CdOjJVDT.js} +9 -9
  57. package/server/{dangerous-git-ops-BebB-61h.js → dangerous-git-ops-CT-IypG3.js} +1 -1
  58. package/server/dashboard-db-worker.js +7 -7
  59. package/server/{deacon-pleYrvIm.js → deacon-DYSEJb48.js} +3 -3
  60. package/server/{deacon-nudge-log-C5VCKtyi.js → deacon-nudge-log-Bjg8U4Y9.js} +3 -3
  61. package/server/{deacon-1s7bM5zn.js → deacon-pRnyD5w9.js} +1133 -474
  62. package/server/deacon-swarm-9jRLS5Ke.js +2 -0
  63. package/server/{deacon-swarm-DmA3rJ7k.js → deacon-swarm-DftYRDo8.js} +17 -17
  64. package/server/deacon.js +8 -8
  65. package/server/{deploy-patrol-DmM6F-yw.js → deploy-patrol-Bjsho_ha.js} +136 -19
  66. package/server/{deploy-window-ClLq1RYf.js → deploy-window-CM6W1-c6.js} +1 -1
  67. package/server/{deploy-window-jw4S_Y-c.js → deploy-window-DeP_OIRk.js} +77 -10
  68. package/server/{dev-supervisor-Do2Stz49.js → dev-supervisor-BpMoHlkR.js} +2 -2
  69. package/server/{devcontainer-renderer-D8ylupco.js → devcontainer-renderer-CtUgrVKW.js} +3 -3
  70. package/server/dist-Bd3vn0Hw.js +3 -0
  71. package/server/{dist-yfR7G1BL.js → dist-DyRx4cI7.js} +1 -1
  72. package/server/{docker-ClwPQaba.js → docker-BK7HIcBj.js} +2 -2
  73. package/server/{dod-BLphkhjs.js → dod-BrSfUHm0.js} +1 -1
  74. package/server/{ensure-devcontainer-BA3bICoY.js → ensure-devcontainer-DRqaAkBR.js} +1 -1
  75. package/server/{ensure-devcontainer-CFpQatOc.js → ensure-devcontainer-DseivYEy.js} +4 -4
  76. package/server/{esm-shims-BZw-fTQ6.js → esm-shims-CbI3BVkl.js} +1 -1
  77. package/server/{event-store-DABarGNz.js → event-store-Cr5PQwFC.js} +1 -1
  78. package/server/{event-store-BVnON3vf.js → event-store-tdiY5eDZ.js} +3 -3
  79. package/server/{events-CmERlnwn.js → events-CC1dgUpx.js} +3 -3
  80. package/server/{events-LGeUehYW.js → events-CvvGK6LT.js} +1 -1
  81. package/server/{factory-CQNprtHe.js → factory-CynerjXO.js} +50 -13
  82. package/server/{feature-registry-population-D9Z3tYSa.js → feature-registry-population-B0pmAz0a.js} +4 -4
  83. package/server/{feature-registry-storage-BWymOgXE.js → feature-registry-storage-_wUBRD3J.js} +2 -2
  84. package/server/{features--fOza5g5.js → features-Dhxz-wLc.js} +2 -2
  85. package/server/{feedback-target-Dqik2WTe.js → feedback-target-CPS15Vte.js} +7 -7
  86. package/server/{feedback-target-Dn9vfPpz.js → feedback-target-iygZwmMc.js} +1 -1
  87. package/server/{feedback-writer-Wlq5-qgS.js → feedback-writer-C9b6ccN1.js} +6 -5
  88. package/server/{feedback-writer-DDQNV8uc.js → feedback-writer-qmiMbqTZ.js} +1 -1
  89. package/server/{flywheel-Q-38YhZG.js → flywheel-DMCUzDWg.js} +1 -1
  90. package/server/{flywheel-1Wd8WDlh.js → flywheel-DSSpWmqF.js} +13 -13
  91. package/server/{flywheel-DPUc8r3V.js → flywheel-DcBkQvgE.js} +14 -14
  92. package/server/{flywheel-merge-order-CeBuX0EJ.js → flywheel-merge-order-C-6zRLvM.js} +1 -1
  93. package/server/{flywheel-merge-order-4SqOXFAr.js → flywheel-merge-order-DxbQKE1d.js} +8 -8
  94. package/server/forge-B-ZWyTRm.js +2 -0
  95. package/server/{forge-DBbDpiYc.js → forge-Ch9gCFod.js} +2 -2
  96. package/server/{from-hh6vTBGl.js → from-CJ_aH5jD.js} +1 -1
  97. package/server/{fts-db-6ponMie2.js → fts-db-CKgg0VKg.js} +2 -2
  98. package/server/{fts-operations-KIRK165y.js → fts-operations-BrL_VTRr.js} +2 -2
  99. package/server/git-utils-BVa07a4a.js +198 -0
  100. package/server/{git-utils-DmF5xkj8.js → git-utils-Dry_Ka_D.js} +1 -1
  101. package/server/{github-app-B3yfECo8.js → github-app-CMBdIFBQ.js} +11 -3
  102. package/server/{github-app-CeSVFL6C.js → github-app-CPfoFAdV.js} +1 -1
  103. package/server/{github-client-Dslipypz.js → github-client--XVlDpwM.js} +2 -2
  104. package/server/{github-client-4A6FgA8O.js → github-client-B4QsdE-X.js} +1 -1
  105. package/server/{github-pr-lookup-DBP0YHMr.js → github-pr-lookup-BRbDW-qk.js} +2 -2
  106. package/server/harness-binary-CVio2m-u.js +106 -0
  107. package/server/{harness-resolve-BGpO-OVM.js → harness-resolve-qHJBhy3Z.js} +9 -15
  108. package/server/{health-events-CZGZ5I-A.js → health-events-C9B8y1Hm.js} +2 -2
  109. package/server/{health-events-CnwV_SSz.js → health-events-CpfvuVmm.js} +1 -1
  110. package/server/{hooks-CoNscX84.js → hooks-DUXw8A0-.js} +2 -2
  111. package/server/{hooks-DvX33gY_.js → hooks-ltecuFqZ.js} +1 -1
  112. package/server/{hume-DSJt5eA_.js → hume-BEq0bUDg.js} +2 -2
  113. package/server/hume-B_DbflNM.js +3 -0
  114. package/server/{idle-stack-reaper-5DVRoY6P.js → idle-stack-reaper-D7w9t3fE.js} +1 -1
  115. package/server/{idle-stack-reaper-BfL8HqYy.js → idle-stack-reaper-w1ISSlhs.js} +2 -2
  116. package/server/{in-flight-guard-tVGiI5ee.js → in-flight-guard-aQ1IxeI3.js} +2 -2
  117. package/server/{infra-DN2wSxle.js → infra-CzaSOgul.js} +4 -4
  118. package/server/{injection-DtlT8Akv.js → injection-DZ0PfYa4.js} +7 -7
  119. package/server/{injection-DK9zh_HL.js → injection-oNZeoDhL.js} +1 -1
  120. package/server/{inspect-agent-DKByUS_F.js → inspect-agent-DJKLWcVT.js} +15 -11
  121. package/server/inspect-agent-ch-F-5Ci.js +2 -0
  122. package/server/{internal-token-DhfFiwW7.js → internal-token-Bb4XeV2x.js} +2 -2
  123. package/server/{internal-token-7bYL5v6K.js → internal-token-DXdfprGr.js} +1 -1
  124. package/server/{io-BiM-7Zsx.js → io-B3_AHDfr.js} +160 -184
  125. package/server/{issue-closed-Dfw3QDyZ.js → issue-closed-zhdvQicO.js} +7 -7
  126. package/server/{issue-lifecycle-B7HZWnTA.js → issue-lifecycle-CreaCkjW.js} +22 -22
  127. package/server/{issue-lifecycle-ytsEdDlK.js → issue-lifecycle-Dy4vd0Oa.js} +1 -1
  128. package/server/{issue-service-singleton-CPESc4Or.js → issue-service-singleton-B5ushCvE.js} +8 -8
  129. package/server/{issue-service-singleton-D5EB5eYr.js → issue-service-singleton-DabvBWUp.js} +1 -1
  130. package/server/{issues-XYtFMxrH.js → issues-B6ToV6x1.js} +2 -2
  131. package/server/{jsonl-parser-DJV2eZUP.js → jsonl-parser-Dhflo1SH.js} +3 -3
  132. package/server/{label-cleanup-CJ4m8iRU.js → label-cleanup-BKPJm4Hv.js} +3 -3
  133. package/server/{label-reconciler-CNf3Ylm3.js → label-reconciler-DdWbHEBu.js} +4 -4
  134. package/server/{launcher-generator-5DJRiovn.js → launcher-generator-CHVm7bGT.js} +10 -9
  135. package/server/{layers-cZx7ibtV.js → layers-DzxSTGNA.js} +2 -2
  136. package/server/lifecycle-DfeyBDwA.js +121 -0
  137. package/server/lifecycle-io-Bsnr2K4F.js +3 -0
  138. package/server/{lifecycle-io-DMurK4oM.js → lifecycle-io-D8iNBcux.js} +37 -37
  139. package/server/{lifecycle-CE7619Xw.js → lifecycle-sycO16hj.js} +6 -6
  140. package/server/{linear-client-BLyN-NiP.js → linear-client-D4zqMnX7.js} +2 -2
  141. package/server/{linear-client-Bj1l4FOA.js → linear-client-DqhDQO9k.js} +1 -1
  142. package/server/memory-fts-worker.js +1 -1
  143. package/server/{merge-hSC2BENe.js → merge-C_ZEhbqI.js} +3 -3
  144. package/server/{merge-CwX2_AWm.js → merge-DK23JEdS.js} +1 -1
  145. package/server/{merge-agent-CnORPiri.js → merge-agent-BQM3a8z5.js} +1 -1
  146. package/server/{merge-agent-DnBsms_V.js → merge-agent-XrB80vfT.js} +369 -213
  147. package/server/{merge-batch-C2w2U2eK.js → merge-batch-Bwoyr8Je.js} +1 -1
  148. package/server/{merge-blockers-DhRgh76x.js → merge-blockers-BsFjGrQ8.js} +2 -2
  149. package/server/merge-ops-DlB1IM0Y.js +2 -0
  150. package/server/{merge-rebase-CE-ZyOMY.js → merge-rebase-C1KIVr0s.js} +2 -2
  151. package/server/{merge-set-D7YNU1ZB.js → merge-set-DLz0MkGT.js} +3 -3
  152. package/server/{merge-set-DHkzPCJU.js → merge-set-DnSYdBEp.js} +1 -1
  153. package/server/{merge-sync-De1FYva5.js → merge-sync-DZ9dojJn.js} +2 -2
  154. package/server/{merge-sync-CpGA9Kg7.js → merge-sync-SSv3E-pl.js} +1 -1
  155. package/server/{merge-train-SvkRJZ-k.js → merge-train-DxDfBTjr.js} +3 -3
  156. package/server/{merge-train-deps-CECJTElu.js → merge-train-deps-CyYQUksx.js} +4 -4
  157. package/server/{merge-verification-B3meGcXF.js → merge-verification-CSizH3HY.js} +4 -4
  158. package/server/{multipart-parser-ByTMgYV5.js → multipart-parser-Dt8YPN5S.js} +2 -2
  159. package/server/{no-resume-mode-BnInAFKs.js → no-resume-mode-Cx3K0hHi.js} +11 -8
  160. package/server/node_modules/.package-lock.json +5 -5
  161. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +3 -3
  162. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  163. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +2 -2
  164. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  165. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +5 -5
  166. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +6 -8
  167. package/server/{orphan-proposed-reconciler-CAfuWTA1.js → orphan-proposed-reconciler-BTkDrl4R.js} +1 -1
  168. package/server/{orphan-proposed-reconciler-AxAGUouN.js → orphan-proposed-reconciler-neK8dHQk.js} +23 -14
  169. package/server/package-lock.json +6 -6
  170. package/server/package.json +1 -1
  171. package/server/{pan-dir-Rw17YjT1.js → pan-dir-DeVUgwA7.js} +78 -58
  172. package/server/{paths-FP8v3lTz.js → paths-_zEts6wc.js} +2 -2
  173. package/server/{pickup-xi3KTLaJ.js → pickup-Dd0Znxxy.js} +2 -2
  174. package/server/{pipeline-membership-BtKMNY7v.js → pipeline-membership-0HaEGDlH.js} +190 -68
  175. package/server/{pipeline-notifier-dQ-U4NSb.js → pipeline-notifier-6iCJplFZ.js} +1 -1
  176. package/server/{pipeline-notifier-BM2HLF7B.js → pipeline-notifier-D0ykk59O.js} +2 -2
  177. package/server/{project-pipelines-B59NfN44.js → project-pipelines-2sK1apsO.js} +2 -2
  178. package/server/projects-9SkRpES9.js +3 -0
  179. package/server/{prompts-CbqaVjbe.js → prompts-Dp4Tpk39.js} +2 -2
  180. package/server/providers-DKkBXhxU.js +3 -0
  181. package/server/{providers-d3pwXGVE.js → providers-DV7ec8l7.js} +7 -7
  182. package/server/public/assets/{chunk-BO2N2NFS-BxYSL7J-.js → chunk-BO2N2NFS-CltymLRg.js} +4 -4
  183. package/server/public/assets/{diagram-OG6HWLK6-C_F9Q2as.js → diagram-OG6HWLK6-D2f6pjgA.js} +1 -1
  184. package/server/public/assets/{dist-DQNg4CiF.js → dist-BWR4qFiV.js} +1 -1
  185. package/server/public/assets/{dist-CLSlc6cV.js → dist-DEmlBBNQ.js} +3 -3
  186. package/server/public/assets/{ganttDiagram-6RSMTGT7-Cq0my-0C.js → ganttDiagram-6RSMTGT7-DnfiViPK.js} +1 -1
  187. package/server/public/assets/{highlighted-body-OFNGDK62-eZC03dGh.js → highlighted-body-OFNGDK62-B8Wrmj9H.js} +1 -1
  188. package/server/public/assets/index-CUr1xv8w.css +1 -0
  189. package/server/public/assets/{index-SLYGA8AQ.js → index-CsSuZQBI.js} +148 -145
  190. package/server/public/assets/{linear-6Fi3qnGg.js → linear-C9zFQpkX.js} +1 -1
  191. package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +1 -0
  192. package/server/public/assets/{pieDiagram-4H26LBE5-Dpmc6xsv.js → pieDiagram-4H26LBE5-lR8H7Yjd.js} +1 -1
  193. package/server/public/assets/{prod-ojHllFvN.js → prod-B1jCQihw.js} +4 -4
  194. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Ulr9gON5.js → quadrantDiagram-W4KKPZXB-CVQ2guem.js} +1 -1
  195. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CwdHGXfL.js → sankeyDiagram-5OEKKPKP-eD1RB4gm.js} +1 -1
  196. package/server/public/assets/{xychartDiagram-2RQKCTM6-r-bEDzJh.js → xychartDiagram-2RQKCTM6-ChEC6dQn.js} +1 -1
  197. package/server/public/index.html +54 -10
  198. package/server/{pull-requests-D3N6HQzI.js → pull-requests--Ib2jTgy.js} +1 -1
  199. package/server/{pull-requests-CjjPj7v6.js → pull-requests-CXIhdCYD.js} +13 -11
  200. package/server/{queries-B5hl7lMQ.js → queries-6d7Cdtm7.js} +723 -110
  201. package/server/{rally-Dp0Gb1DN.js → rally-B708-nZn.js} +3 -3
  202. package/server/{rally-api-DGaFz5L5.js → rally-api-nY0ZANw3.js} +2 -2
  203. package/server/{rally-api-CKr0O4DJ.js → rally-api-yjQ0TfHd.js} +1 -1
  204. package/server/{rally-client-SVbjGvqj.js → rally-client-B1EJhfV0.js} +4 -4
  205. package/server/{rally-client-Cqf6EX_r.js → rally-client-CULK2XAY.js} +1 -1
  206. package/server/rally-njs_mJrt.js +3 -0
  207. package/server/reap-terminal-sessions-MWnqdLCJ.js +4 -0
  208. package/server/{reap-terminal-sessions-CjqRAGw7.js → reap-terminal-sessions-N3BTkmX_.js} +11 -28
  209. package/server/{rebuild-stack-DHqCLvLX.js → rebuild-stack-Dp4eLkt4.js} +6 -6
  210. package/server/{rebuild-stack-DjdpALr1.js → rebuild-stack-kA7XngID.js} +1 -1
  211. package/server/{reconstruct-cache-BqrCQt0o.js → reconstruct-cache-uWbZfjms.js} +6 -6
  212. package/server/record-t6V-3Dcj.js +3 -0
  213. package/server/{record-update-BlB8mpKO.js → record-update-DACtKh6_.js} +1 -1
  214. package/server/record-update-Dq0t2uBG.js +310 -0
  215. package/server/{recovery-trip-l1Hsi37x.js → recovery-trip-BJtIQuag.js} +2 -2
  216. package/server/{release-engine-CSI4K6Oj.js → release-engine-DZpmGGzb.js} +5 -5
  217. package/server/{release-set-BywwggrE.js → release-set-hnXd_kga.js} +3 -3
  218. package/server/{remote-DYziAkiZ.js → remote-4tiENDaI.js} +3 -3
  219. package/server/{remote-cnoeuDWn.js → remote-Br-ZWVIP.js} +3 -3
  220. package/server/{remote-agents-BNORDWAX.js → remote-agents-CRCg1L4H.js} +1 -1
  221. package/server/{remote-agents-CZ2rc8I0.js → remote-agents-nmty1mLu.js} +6 -6
  222. package/server/{remote-completion-W67FNQ-A.js → remote-completion-BbWNd10K.js} +13 -13
  223. package/server/resume-CcKqnTvE.js +3 -0
  224. package/server/{review-agent-CSswH985.js → review-agent-DJRO8EG8.js} +1 -1
  225. package/server/{review-agent-CqSqSHkU.js → review-agent-sKkE1FEL.js} +23 -23
  226. package/server/{review-artifacts-BBgnd5df.js → review-artifacts-BLbSC4ke.js} +5 -5
  227. package/server/{review-context-Ctp9BdNJ.js → review-context-BgX3lcCx.js} +9 -9
  228. package/server/{review-status-CCgPVK1h.js → review-status-A7quS5KJ.js} +56 -39
  229. package/server/review-status-C6n6-9f_.js +3 -0
  230. package/server/{review-status-enrichment-DtDRGpst.js → review-status-enrichment-tbOn_A_u.js} +3 -3
  231. package/server/review-status-source-CxuEjLGg.js +39 -0
  232. package/server/{review-status-sync-jnLgd04F.js → review-status-sync-BhSQ0d0l.js} +2 -2
  233. package/server/{review-status-sync-C792ksoJ.js → review-status-sync-To3-iS-N.js} +1 -1
  234. package/server/{review-verdict-feedback-D5lW0o3k.js → review-verdict-feedback-C1Kg8n7t.js} +1 -1
  235. package/server/{review-verdict-feedback-CMsIpTpy.js → review-verdict-feedback-CTRNtzXO.js} +7 -7
  236. package/server/{rollup-B3kQmNpl.js → rollup-B53Y81xK.js} +1 -1
  237. package/server/{rollup-CLj_AK9f.js → rollup-WA0VD-Rr.js} +8 -8
  238. package/server/{scanner-C4NeC4FE.js → scanner-D2743cp8.js} +11 -7
  239. package/server/{sequence-io-Ce-6grIY.js → sequence-io-Cg0zYj_E.js} +4 -4
  240. package/server/{sequencer-agent-Bpz0yGmG.js → sequencer-agent-BGY8gjg-.js} +5 -5
  241. package/server/server.js +1348 -963
  242. package/server/{service-CqAY8Kmk.js → service-DCpB_SGd.js} +154 -51
  243. package/server/{session-fork-uNo4rMRA.js → session-fork-BQ8_6H32.js} +2 -2
  244. package/server/{session-history-DUehL3KN.js → session-history-CVZDpS3c.js} +4 -4
  245. package/server/{settings-DP2OYLXL.js → settings-BZ5m1UCl.js} +3 -3
  246. package/server/settings-D0OSwos5.js +2 -0
  247. package/server/{settings-D9grjmaP.js → settings-ylxwqwQG.js} +2 -2
  248. package/server/{shadow-engineering-Bi_oIMtF.js → shadow-engineering-BlxG6Xye.js} +3 -3
  249. package/server/{shadow-state-CDxEuPlE.js → shadow-state-C2_epgx2.js} +1 -1
  250. package/server/{shadow-state-a_ztFBJe.js → shadow-state-Dh-HzF2J.js} +2 -2
  251. package/server/{shadow-utils-CyOg6_Xq.js → shadow-utils-4bvjn9b3.js} +2 -2
  252. package/server/{ship-log-DDcueaIR.js → ship-log-ClSMIzZX.js} +1 -1
  253. package/server/{smart-compaction-C1_VVLEd.js → smart-compaction-CHIxLr_d.js} +1 -1
  254. package/server/{smart-compaction--Oj65Uov.js → smart-compaction-r4pHQBIr.js} +7 -7
  255. package/server/{spawn-planning-session-AiUSsBnH.js → spawn-planning-session-DWAorh2B.js} +25 -20
  256. package/server/{spawn-planning-session-LFtK2QCE.js → spawn-planning-session-KC_UduxD.js} +1 -1
  257. package/server/{specialist-completion-qOgqdqXH.js → specialist-completion-BXhav38U.js} +1 -1
  258. package/server/{specialist-context-gjj8Z4Ii.js → specialist-context-DtrYvGJ-.js} +5 -5
  259. package/server/{specialist-handoff-logger-BsBNvVZv.js → specialist-handoff-logger-C45ouoZ6.js} +2 -2
  260. package/server/{specialist-logs-CSLtvPx6.js → specialist-logs-DJ3RzKxW.js} +3 -3
  261. package/server/{specialists-D0VBf8g_.js → specialists-D5fRZXmN.js} +1 -1
  262. package/server/specialists-DVj0hvaL.js +3 -0
  263. package/server/{specialists-CYRwELzc.js → specialists-DyFeedjn.js} +66 -76
  264. package/server/{specialists-DAegTvRt.js → specialists-JVO00bs7.js} +374 -220
  265. package/server/specs-nN45DG2X.js +3 -0
  266. package/server/{src-OLoJhUiJ.js → src-CG9mCkP6.js} +6 -6
  267. package/server/{src-BqTcrfO_.js → src-CMTQGyCK.js} +3 -3
  268. package/server/{src-Dpq1yFIl.js → src-U7_kTPEE.js} +338 -4
  269. package/server/{stack-health-I713ELld.js → stack-health-Df0YEZKa.js} +1 -1
  270. package/server/{stack-health-DV_f-lK0.js → stack-health-puygdaMd.js} +2 -2
  271. package/server/{stale-task-claims-CQSKZVq0.js → stale-task-claims-BbFwCTb0.js} +4 -4
  272. package/server/{staleness-BbsGxmF2.js → staleness-Bpy41ngS.js} +15 -3
  273. package/server/{staleness-zGp4P1hd.js → staleness-Cbl_w4Bw.js} +1 -1
  274. package/server/{state-home-DixkE-up.js → state-home-CIGjwNfJ.js} +119 -54
  275. package/server/state-migrate-Dkzaxvny.js +487 -0
  276. package/server/{stuck-remediation-BWkK_O7A.js → stuck-remediation-CzEov_fq.js} +27 -21
  277. package/server/{stuck-remediation-CTPRC2S5.js → stuck-remediation-sY_MHHgQ.js} +1 -1
  278. package/server/{substrate-bug-weights-service-DXd0ID83.js → substrate-bug-weights-service-BH66lhm7.js} +3 -3
  279. package/server/{summary-fork-CdLn8Chr.js → summary-fork-D8bXjCr7.js} +2 -2
  280. package/server/{summary-fork-f3DpgjXh.js → summary-fork-DHhJIsAL.js} +8 -8
  281. package/server/{supervisor-Ch8CDuoF.js → supervisor-BO-Zk_h-.js} +3 -3
  282. package/server/supervisor-BPy-o1A8.js +2 -0
  283. package/server/{swarm-readiness-C9P2iPap.js → swarm-readiness-CQ_fwUWF.js} +4 -4
  284. package/server/{system-prerequisites-DkoQBn1q.js → system-prerequisites-Bza0ffAh.js} +24 -44
  285. package/server/{teardown-workspace-D-5yMyit.js → teardown-workspace-CEgauF4U.js} +15 -15
  286. package/server/{test-agent-queue-BwpUpu-o.js → test-agent-queue-DXDt0Xa-.js} +7 -7
  287. package/server/{test-verdict-BRiSu7eW.js → test-verdict-CmUBK5cT.js} +1 -1
  288. package/server/{test-verdict-BQ1yx7d4.js → test-verdict-DFjjIHR5.js} +1 -1
  289. package/server/{tldr-daemon-DjxP5g6Y.js → tldr-daemon-BDtLOIlO.js} +2 -2
  290. package/server/{tldr-daemon-BJA7TkqS.js → tldr-daemon-DL566HbH.js} +1 -1
  291. package/server/tmux-DoThH6aj.js +3 -0
  292. package/server/{tmux-y1blSxks.js → tmux-ftABRAmc.js} +76 -44
  293. package/server/{token-LUrbM9sU.js → token-CsOhvw42.js} +2 -2
  294. package/server/{token-util-BZaDAQ8S.js → token-util-CTmczIfW.js} +1 -1
  295. package/server/token-util-DrHg8abn.js +3 -0
  296. package/server/{tracker-config-DSFZBdXP.js → tracker-config-B4itFzDo.js} +2 -2
  297. package/server/{tracker-utils-WtP_V-yn.js → tracker-utils-BePq_oj-.js} +1 -1
  298. package/server/{tracker-utils-DiceZN3a.js → tracker-utils-tnxxqROg.js} +2 -2
  299. package/server/{traefik-connect-BXqfOP4-.js → traefik-connect-m73vGebA.js} +1 -1
  300. package/server/{tunnel-DTng1rfQ.js → tunnel-B2vxjx_b.js} +3 -3
  301. package/server/{tunnel-WcJImbAC.js → tunnel-Cgj-IGIl.js} +1 -1
  302. package/server/{types-BjaZ1oqH.js → types-BBNjPcqU.js} +1 -1
  303. package/server/{types-DqeBMmJN.js → types-hraoaQIp.js} +1 -1
  304. package/server/{uat-train-BpLnp7Cx.js → uat-train-CuEn0t9M.js} +28 -28
  305. package/server/{uat-train-Wismge7h.js → uat-train-cKfM-_WW.js} +1 -1
  306. package/server/{validation-BA4e5EGm.js → validation-B5JxoPUS.js} +259 -9
  307. package/server/{validation-CUWamZ4X.js → validation-CIi6pnI2.js} +1 -1
  308. package/server/{verification-artifact-Dr_0g9nb.js → verification-artifact-BcnIbigL.js} +1 -1
  309. package/server/{verification-artifact-CrbI4tJE.js → verification-artifact-C-lIHfUa.js} +1 -1
  310. package/server/{verification-runner-gAzh3cVD.js → verification-runner-Br0S_Ous.js} +103 -37
  311. package/server/{verification-runner-Dcksl_P-.js → verification-runner-CDj4lD4t.js} +1 -1
  312. package/server/{vtt-parser-3VZKsmSm.js → vtt-parser-DKpNNW5i.js} +1 -1
  313. package/server/{work-agent-prompt-ULdcANl5.js → work-agent-prompt-Yb2bd3Fq.js} +16 -15
  314. package/server/{workflows-B8ROFlfw.js → workflows-C9WmILql.js} +39 -77
  315. package/server/workflows-D90rMOya.js +2 -0
  316. package/server/{workspace-DhTDA8nB.js → workspace-BVl4rihN.js} +3 -3
  317. package/server/{workspace-DSjUJaJN.js → workspace-DuUdndHe.js} +1 -1
  318. package/server/{workspace-config-BAAsAv-o.js → workspace-config-cEGcO6UT.js} +1 -1
  319. package/server/{workspace-manager-CcujONCR.js → workspace-manager-ZTdJAy9M.js} +1 -1
  320. package/server/{workspace-manager-DsN52IMG.js → workspace-manager-hLUv3ADC.js} +23 -16
  321. package/server/{workspace-metadata-DIL5_U4c.js → workspace-metadata-CskwzzhL.js} +2 -2
  322. package/server/{workspace-metadata-CftOpNLs.js → workspace-metadata-DNpMixRq.js} +1 -1
  323. package/server/{workspaces-Dmlh1YXm.js → workspaces-hWvy9eKs.js} +276 -110
  324. package/sync-sources/agents/pan-inspect-agent.md +1 -1
  325. package/sync-sources/agents/pan-merge-agent.md +1 -1
  326. package/sync-sources/agents/pan-planning-agent.md +4 -4
  327. package/sync-sources/agents/pan-work-agent.md +1 -1
  328. package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
  329. package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
  330. package/sync-sources/hooks/record-cost-event.js +363 -71
  331. package/sync-sources/hooks/session-start-hook +7 -0
  332. package/sync-sources/hooks/work-agent-stop-hook +1 -1
  333. package/sync-sources/rules/per-bead-durability.md +1 -1
  334. package/sync-sources/rules/prd-authoring.md +1 -1
  335. package/sync-sources/skills/feature-work/SKILL.md +1 -1
  336. package/sync-sources/skills/pan/SKILL.md +2 -2
  337. package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
  338. package/sync-sources/skills/pan-approve/SKILL.md +1 -1
  339. package/sync-sources/skills/pan-close/SKILL.md +1 -1
  340. package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
  341. package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
  342. package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
  343. package/sync-sources/skills/pan-plan/SKILL.md +6 -6
  344. package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
  345. package/sync-sources/skills/pan-recap/SKILL.md +2 -2
  346. package/sync-sources/skills/pan-review/SKILL.md +1 -1
  347. package/sync-sources/skills/pan-start/SKILL.md +26 -3
  348. package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
  349. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  350. package/sync-sources/skills/pan-task/SKILL.md +2 -2
  351. package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
  352. package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
  353. package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
  354. package/sync-sources/skills/plan/SKILL.md +11 -11
  355. package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
  356. package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
  357. package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
  358. package/server/agent-state-BV_6RHnO.js +0 -3
  359. package/server/agents-Czz6R57Z.js +0 -3
  360. package/server/cli-ChErG518.js +0 -3
  361. package/server/codex-BBeZ8c3s.js +0 -3
  362. package/server/deacon-swarm-uudlSCLM.js +0 -2
  363. package/server/dist-BEDL2alY.js +0 -3
  364. package/server/forge-DbhJyH6u.js +0 -2
  365. package/server/git-utils-Bkxzr1Xf.js +0 -129
  366. package/server/hume-BrA1tUuk.js +0 -3
  367. package/server/inspect-agent-CyXNo9fM.js +0 -2
  368. package/server/lifecycle-io-CUpsxG0p.js +0 -3
  369. package/server/merge-ops-BpTtuO8x.js +0 -2
  370. package/server/projects-IRHJIPYC.js +0 -3
  371. package/server/providers-BqCdTryq.js +0 -3
  372. package/server/public/assets/index-C6NLz_1S.css +0 -1
  373. package/server/public/assets/mermaid-GHXKKRXX-BNwFoQsf.js +0 -1
  374. package/server/rally-DGimSRBQ.js +0 -3
  375. package/server/reap-terminal-sessions-C1mfzoZo.js +0 -3
  376. package/server/record-update-RviRDSNs.js +0 -168
  377. package/server/record-us0YECMO.js +0 -3
  378. package/server/resume-OyN3dEXE.js +0 -3
  379. package/server/review-status-DXeqFpk5.js +0 -3
  380. package/server/settings-BaPXXJsT.js +0 -2
  381. package/server/specialists-C6WkeKFK.js +0 -3
  382. package/server/specs-BsNcum0h.js +0 -3
  383. package/server/state-migrate-_zJJ6XKE.js +0 -362
  384. package/server/supervisor-Qy1QecAs.js +0 -2
  385. package/server/tmux-HQLgwo_C.js +0 -3
  386. package/server/token-util-Cg-QnowA.js +0 -3
  387. package/server/workflows-C5c-RPsY.js +0 -2
@@ -1,46 +1,48 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as resolveProjectFromIssueSync, An as getIssuePrefix, At as init_record, B as init_providers, C as init_tier_table, E as resolveTieredExecutionEnabledForIssue, En as findProjectByPathSync, F as clearCredentialFileAuthSync, Ft as readIssueRecordSync, G as init_openai_compatible_proxy, I as getBuiltInDefaultHarness, Lt as resolveProjectForIssue, Mn as getProjectSwarmHotspots, Nn as getProjectSync, Or as init_errors, Pt as readIssueRecordForWorkspaceSync, Q as resolveModel, R as getProviderEnvSync, T as resolveTieredExecutionEnabled, U as setupCredentialFileAuthSync, W as ensureOpenAICompatibleProxyRunning, Z as init_roles, ai as sessionFilePath, b as DEFAULT_TIERED_EXECUTION_CONFIG, ct as fnv1a32, ei as getOverdeckHome, f as loadConfigSync, fr as resolveBareNumericIdSync, gn as init_state_read_home, gr as ClaudeCredentialParseError, ii as resolveOhmypiExtensionPath, it as init_model_capabilities, kr as AGENTS_DIR, l as isClaudeCodeChannelsMcpEnabled, lr as init_issue_id, lt as init_percent, mr as require_dist, ot as resolveModelIdSync, qr as encodeClaudeProjectDir, ri as packageRoot, rt as hasModelCapabilitySync, st as fmix32, t as init_config_yaml, ti as init_paths, tt as getModelCapabilitySync, u as isTldrEnabledSync, vn as shouldCommitLegacyWorkspaceArtifacts, vr as FsError, x as TIERED_EXECUTION_DIFFICULTIES, z as getProviderForModelSync, zn as init_projects, zt as writeAgentHarnessModelSync } from "./config-yaml-Ciyp2mYe.js";
2
+ import { B as getProviderEnvSync, Br as getOverdeckHome, C as TIERED_EXECUTION_DIFFICULTIES, D as resolveTieredExecutionEnabled, Ft as resolveProjectForIssue, G as setupCredentialFileAuthSync, Gr as sessionFilePath, H as init_providers, It as writeAgentHarnessModelSync, K as ensureOpenAICompatibleProxyRunning, L as clearCredentialFileAuthSync, Mt as readIssueRecordForWorkspaceSync, Nr as encodeClaudeProjectDir, Nt as readIssueRecordSync, O as resolveTieredExecutionEnabledForIssue, Ot as init_record, Qn as resolveBareNumericIdSync, R as getBuiltInDefaultHarness, S as DEFAULT_TIERED_EXECUTION_CONFIG, T as init_tier_table, Tn as init_projects, Ur as packageRoot, V as getProviderForModelSync, Vr as init_paths, Wr as resolveOhmypiExtensionPath, Yn as init_issue_id, dt as fnv1a32, er as require_dist, et as init_roles, f as loadConfigSync, fn as findProjectByPathSync, ft as init_percent, gn as getIssuePrefix, hr as AGENTS_DIR, in as shouldCommitLegacyWorkspaceArtifacts, ir as FsError, it as getModelCapabilitySync, l as isClaudeCodeChannelsMcpEnabled, lt as resolveModelIdSync, mr as init_errors, nn as init_state_read_home, nr as ClaudeCredentialParseError, ot as hasModelCapabilitySync, q as init_openai_compatible_proxy, st as init_model_capabilities, t as init_config_yaml, tt as resolveModel, u as isTldrEnabledSync, ut as fmix32, vn as getProjectSwarmHotspots, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
3
  import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-DDlOIAML.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-DN2wSxle.js";
5
- import { B as sendRawKeystroke, D as killSession, E as isPaneDead, H as sessionExistsSync, J as BLANKED_PROVIDER_ENV, L as sendEscapeKeyAsync, M as listSessions, N as listSessionsSync, O as killSessionSync, R as sendKeys, U as setOption, V as sessionExists, Z as init_child_env, a as capturePaneSync, c as createSessionSync, i as capturePane, k as listPaneValues, m as exactPaneTarget, s as createSession, w as init_tmux } from "./tmux-y1blSxks.js";
6
- import { a as init_event_store, i as initEventStore } from "./event-store-BVnON3vf.js";
7
- import { a as getHarnessBehavior, i as OHMYPI_BEHAVIOR } from "./src-Dpq1yFIl.js";
8
- import { C as init_review_status_source, D as init_agent_state_sync, E as getOverdeckAgentStateSync, O as listOverdeckAgentStatesSync, c as init_review_status, k as saveOverdeckAgentStateSync, m as resetPipelineVerdictsForWorkStartSync, w as readReviewStatusMap } from "./review-status-CCgPVK1h.js";
9
- import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-DbrHWunF.js";
10
- import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-OouGbJ7d.js";
11
- import { o as getPricingSync, s as init_cost } from "./cost-Drm7qeD5.js";
12
- import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-DzHP6zaR.js";
13
- import { a as persistCurrentSessionId, d as isAgentStateServiceInProcess, i as logLauncherSessionPinned, l as getRuntimeSnapshot, n as createFreshSessionIdentity, o as init_persistent_logger, r as init_session_history, s as logAgentLifecycleSync, u as init_agent_runtime_mirror } from "./session-history-DUehL3KN.js";
14
- import { t as init_behavior } from "./behavior-Dg-D8eBG.js";
15
- import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DhfFiwW7.js";
16
- import { m as readWorkspacePlanSync, o as init_io } from "./io-BiM-7Zsx.js";
17
- import { c as bridgeGeminiAuthToCliproxy, d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload$1, p as getCliproxyClientEnv, s as bridgeCodexAuthToCliproxySync, v as init_cliproxy } from "./cliproxy-Dvsr4ZkW.js";
18
- import { L as normalizeHarness, R as reactivateConversationForSpawn, S as getConversationByName, k as init_conversations, y as createConversation } from "./conversations-BUgGvqVL.js";
19
- import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-D9Z3tYSa.js";
20
- import { a as readCavemanVariant, n as init_workspace } from "./workspace-DhTDA8nB.js";
21
- import { a as requireModelOverrideSync, i as normalizeModelOverrideSync, n as init_launcher_generator, o as shellQuoteModelIdSync, r as init_model_validation, t as generateLauncherScriptSync } from "./launcher-generator-5DJRiovn.js";
22
- import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-C2OrLYKL.js";
23
- import { h as workspaceContextFile, o as init_layers } from "./layers-cZx7ibtV.js";
24
- import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-D_UBEOwL.js";
25
- import { f as init_config, m as loadConfigSync$1 } from "./config-CrduXs4a.js";
26
- import { a as getFlywheelActiveRunIdSync, s as init_control_settings } from "./control-settings-D_79A6gp.js";
27
- import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-CQNprtHe.js";
28
- import { a as init_stack_health, i as getWorkspaceStackHealth } from "./stack-health-DV_f-lK0.js";
29
- import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-DIji6O2b.js";
30
- import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-CoNscX84.js";
31
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-BGpO-OVM.js";
32
- import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-G1TOMJZA.js";
33
- import { r as isRoleTerminal, t as init_reap_terminal_sessions } from "./reap-terminal-sessions-CjqRAGw7.js";
34
- import { c as isStateMigrated, o as init_state_home } from "./state-home-DixkE-up.js";
35
- import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-BVLGfHrv.js";
36
- import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-DMurK4oM.js";
37
- import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-C9P2iPap.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
5
+ import { $ as init_child_env, A as listPaneValues, D as killSession, E as isPaneDead, H as sessionExists, O as killSessionSync, P as listSessionsSync, R as sendEscapeKeyAsync, U as sessionExistsSync, V as sendRawKeystroke, W as setOption, X as BLANKED_PROVIDER_ENV, a as capturePaneSync, c as createSessionSync, i as capturePane, m as exactPaneTarget, s as createSession, w as init_tmux, z as sendKeys } from "./tmux-ftABRAmc.js";
6
+ import { a as init_event_store, i as initEventStore } from "./event-store-tdiY5eDZ.js";
7
+ import { a as OHMYPI_BEHAVIOR, o as getHarnessBehavior } from "./src-U7_kTPEE.js";
8
+ import { D as listOverdeckAgentStatesSync, E as init_agent_state_sync, O as saveOverdeckAgentStateSync, T as getOverdeckAgentStateSync, h as resetPipelineVerdictsForWorkStartSync, l as init_review_status } from "./review-status-A7quS5KJ.js";
9
+ import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-B4Bjbkfv.js";
10
+ import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-DWdW7vUm.js";
11
+ import { o as getPricingSync, s as init_cost } from "./cost-Ca0YTWDw.js";
12
+ import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-C0VdGme1.js";
13
+ import { a as persistCurrentSessionId, d as isAgentStateServiceInProcess, i as logLauncherSessionPinned, l as getRuntimeSnapshot, n as createFreshSessionIdentity, o as init_persistent_logger, r as init_session_history, s as logAgentLifecycleSync, u as init_agent_runtime_mirror } from "./session-history-CVZDpS3c.js";
14
+ import { t as init_behavior } from "./behavior-B_-4EKF3.js";
15
+ import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-Bb4XeV2x.js";
16
+ import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal } from "./review-status-source-CxuEjLGg.js";
17
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-B3_AHDfr.js";
18
+ import { c as bridgeGeminiAuthToCliproxy, d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload$1, p as getCliproxyClientEnv, s as bridgeCodexAuthToCliproxySync, v as init_cliproxy } from "./cliproxy-Bgb2XCqi.js";
19
+ import { L as normalizeHarness, R as reactivateConversationForSpawn, S as getConversationByName, k as init_conversations, y as createConversation } from "./conversations-DbOs1e9Q.js";
20
+ import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-B0pmAz0a.js";
21
+ import { a as readCavemanVariant, n as init_workspace } from "./workspace-BVl4rihN.js";
22
+ import { a as requireModelOverrideSync, i as normalizeModelOverrideSync, n as init_launcher_generator, o as shellQuoteModelIdSync, r as init_model_validation, t as generateLauncherScriptSync } from "./launcher-generator-CHVm7bGT.js";
23
+ import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-H_5wHQZQ.js";
24
+ import { h as workspaceContextFile, o as init_layers } from "./layers-DzxSTGNA.js";
25
+ import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-TmSi-yTv.js";
26
+ import { n as init_harness_binary, r as prepareHarnessLaunch } from "./harness-binary-CVio2m-u.js";
27
+ import { f as init_config, m as loadConfigSync$1 } from "./config-CCvjQf27.js";
28
+ import { a as getFlywheelActiveRunIdSync, s as init_control_settings } from "./control-settings-aP1ANIlI.js";
29
+ import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-CynerjXO.js";
30
+ import { a as init_stack_health, i as getWorkspaceStackHealth } from "./stack-health-puygdaMd.js";
31
+ import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-CdOjJVDT.js";
32
+ import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-DUXw8A0-.js";
33
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-qHJBhy3Z.js";
34
+ import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-DjLOdbgT.js";
35
+ import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-N3BTkmX_.js";
36
+ import { c as isStateMigrated, o as init_state_home } from "./state-home-CIGjwNfJ.js";
37
+ import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-but-_qGY.js";
38
+ import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-D8iNBcux.js";
39
+ import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-CQ_fwUWF.js";
38
40
  import { dirname, join, relative } from "node:path";
39
41
  import { Data, Duration, Effect, FileSystem } from "effect";
40
42
  import { appendFileSync, existsSync, mkdirSync, readFileSync, statSync, statfsSync, unlinkSync, writeFileSync } from "fs";
41
43
  import { basename as basename$1, dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
42
44
  import { homedir } from "os";
43
- import "node:os";
45
+ import { cpus as cpus$1, loadavg as loadavg$1, platform as platform$1, totalmem as totalmem$1 } from "node:os";
44
46
  import { chmodSync as chmodSync$1, closeSync as closeSync$1, constants, cpSync, createReadStream as createReadStream$1, existsSync as existsSync$1, mkdirSync as mkdirSync$1, openSync as openSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, renameSync as renameSync$1, rmSync as rmSync$1, statSync as statSync$1, unlinkSync as unlinkSync$1, writeFileSync as writeFileSync$1, writeSync } from "node:fs";
45
47
  import { chmod, mkdir, readFile, stat as stat$1, writeFile } from "node:fs/promises";
46
48
  import { randomUUID } from "crypto";
@@ -1297,7 +1299,7 @@ function getAgentStateFilePath(agentId) {
1297
1299
  * PAN-1985: wipe agent state directories for an issue, optionally scoped to
1298
1300
  * a role prefix. Used by the restart-fresh and review-restart paths to clean
1299
1301
  * state before respawning — the new agent then reads `.pan/continue.json`,
1300
- * the vBRIEF, the beads, and the branch to pick up where the prior run left
1302
+ * the xBRIEF, the beads, and the branch to pick up where the prior run left
1301
1303
  * off. Refuses to run against an empty or unsafe id.
1302
1304
  *
1303
1305
  * - `rolePrefix` omitted: wipes only the work agent dir (`agent-<id>`).
@@ -1710,7 +1712,7 @@ function markAgentRunning(state, options) {
1710
1712
  assertAgentCanTransitionToRunning(state);
1711
1713
  const oldStatus = state.status;
1712
1714
  state.status = "running";
1713
- state.lastActivity = (/* @__PURE__ */ new Date()).toISOString();
1715
+ if (state.harness !== "codex") state.lastActivity = (/* @__PURE__ */ new Date()).toISOString();
1714
1716
  if (options?.preserveFailureTracking !== true) clearFailureTrackingFields(state);
1715
1717
  delete state.stoppedAt;
1716
1718
  delete state.stoppedByUser;
@@ -2413,18 +2415,28 @@ async function getProviderEnvForModel(model) {
2413
2415
  }
2414
2416
  throw new Error(`No API key configured for ${provider.displayName}. Configure it in Settings before using model "${model}".`);
2415
2417
  }
2416
- function getClaudeCodeAutoCompactWindowForModel(model) {
2417
- if (getProviderForModelSync(model).name === "anthropic") return void 0;
2418
+ function getClaudeCodeContextPolicyForModel(model) {
2419
+ if (getProviderForModelSync(model).name === "anthropic") return {};
2418
2420
  const resolvedModel = resolveModelIdSync(model);
2419
- if (!hasModelCapabilitySync(resolvedModel)) return void 0;
2420
- return getModelCapabilitySync(resolvedModel).contextWindow;
2421
+ if (GPT_56_MODELS.has(resolvedModel)) return {
2422
+ autoCompactWindow: GPT_56_CODEX_CLIENT_CONTEXT_WINDOW,
2423
+ maxContextTokens: GPT_56_CODEX_CLIENT_CONTEXT_WINDOW
2424
+ };
2425
+ if (!hasModelCapabilitySync(resolvedModel)) return {};
2426
+ const contextWindow = getModelCapabilitySync(resolvedModel).contextWindow;
2427
+ if (KIMI_K3_MODELS.has(resolvedModel)) return {
2428
+ autoCompactWindow: contextWindow,
2429
+ maxContextTokens: contextWindow
2430
+ };
2431
+ return { autoCompactWindow: contextWindow };
2421
2432
  }
2422
2433
  async function getProviderExportsForModel(model) {
2423
2434
  const envVars = await getProviderEnvForModel(model);
2424
2435
  const unsetLines = PROVIDER_ENV_KEYS.map((key) => `unset ${key}`);
2425
- const autoCompactWindow = getClaudeCodeAutoCompactWindowForModel(model);
2436
+ const contextPolicy = getClaudeCodeContextPolicyForModel(model);
2426
2437
  const exportLines = Object.entries(envVars).map(([k, v]) => `export ${k}="${v.replace(/"/g, "\\\"")}"`);
2427
- if (autoCompactWindow !== void 0) exportLines.push(`export CLAUDE_CODE_AUTO_COMPACT_WINDOW="${autoCompactWindow}"`);
2438
+ if (contextPolicy.maxContextTokens !== void 0) exportLines.push(`export CLAUDE_CODE_MAX_CONTEXT_TOKENS="${contextPolicy.maxContextTokens}"`);
2439
+ if (contextPolicy.autoCompactWindow !== void 0) exportLines.push(`export CLAUDE_CODE_AUTO_COMPACT_WINDOW="${contextPolicy.autoCompactWindow}"`);
2428
2440
  return [...unsetLines, ...exportLines].join("\n") + "\n";
2429
2441
  }
2430
2442
  /**
@@ -2446,11 +2458,12 @@ async function buildSpawnEnvForModel(model, baseEnv = process.env) {
2446
2458
  sanitized[k] = v;
2447
2459
  }
2448
2460
  const providerEnv = await getProviderEnvForModel(model);
2449
- const autoCompactWindow = getClaudeCodeAutoCompactWindowForModel(model);
2461
+ const contextPolicy = getClaudeCodeContextPolicyForModel(model);
2450
2462
  return {
2451
2463
  ...sanitized,
2452
2464
  ...providerEnv,
2453
- ...autoCompactWindow !== void 0 ? { CLAUDE_CODE_AUTO_COMPACT_WINDOW: String(autoCompactWindow) } : {}
2465
+ ...contextPolicy.maxContextTokens !== void 0 ? { CLAUDE_CODE_MAX_CONTEXT_TOKENS: String(contextPolicy.maxContextTokens) } : {},
2466
+ ...contextPolicy.autoCompactWindow !== void 0 ? { CLAUDE_CODE_AUTO_COMPACT_WINDOW: String(contextPolicy.autoCompactWindow) } : {}
2454
2467
  };
2455
2468
  }
2456
2469
  /**
@@ -2490,7 +2503,7 @@ function determineModel(options = {}) {
2490
2503
  if ((options.role ?? "work") === "work" && !modelOverride && WORK_AGENT_BROKEN_MODELS.has(resolved)) throw new Error(`Resolved work model "${resolved}" is known-broken for work agents. Set roles.work.model to a working model in config.yaml, or pass an explicit --model override.`);
2491
2504
  return resolved;
2492
2505
  }
2493
- var CLI_PROXY_MODEL_ALIASES, PROVIDER_ENV_KEYS, WORK_AGENT_BROKEN_MODELS;
2506
+ var CLI_PROXY_MODEL_ALIASES, PROVIDER_ENV_KEYS, GPT_56_CODEX_CLIENT_CONTEXT_WINDOW, GPT_56_MODELS, KIMI_K3_MODELS, WORK_AGENT_BROKEN_MODELS;
2494
2507
  var init_provider_env = __esmMin((() => {
2495
2508
  init_config_yaml();
2496
2509
  init_workspace();
@@ -2515,6 +2528,7 @@ var init_provider_env = __esmMin((() => {
2515
2528
  "ANTHROPIC_SMALL_FAST_MODEL",
2516
2529
  "CLAUDE_CODE_SUBAGENT_MODEL",
2517
2530
  "CLAUDE_CODE_AUTO_COMPACT_WINDOW",
2531
+ "CLAUDE_CODE_MAX_CONTEXT_TOKENS",
2518
2532
  "OPENAI_API_KEY",
2519
2533
  "GEMINI_API_KEY",
2520
2534
  "API_TIMEOUT_MS",
@@ -2527,6 +2541,13 @@ var init_provider_env = __esmMin((() => {
2527
2541
  "NOUS_API_KEY",
2528
2542
  "DASHSCOPE_API_KEY"
2529
2543
  ];
2544
+ GPT_56_CODEX_CLIENT_CONTEXT_WINDOW = 372e3;
2545
+ GPT_56_MODELS = new Set([
2546
+ "gpt-5.6-sol",
2547
+ "gpt-5.6-terra",
2548
+ "gpt-5.6-luna"
2549
+ ]);
2550
+ KIMI_K3_MODELS = new Set(["k3", "k3[1m]"]);
2530
2551
  WORK_AGENT_BROKEN_MODELS = /* @__PURE__ */ new Set([]);
2531
2552
  }));
2532
2553
  //#endregion
@@ -2805,12 +2826,12 @@ async function claudeSystemPromptFiles(workspace, harness) {
2805
2826
  files.push(await ensureSessionContextBriefingFile());
2806
2827
  const behavior = getHarnessBehavior(harness);
2807
2828
  if (behavior.contextLayerKind === "pi") {
2808
- const { piGlobalContextFile } = await import("./context-layers-YNpf6Q_I.js");
2829
+ const { piGlobalContextFile } = await import("./context-layers-B3Nt58jl.js");
2809
2830
  const globalFile = piGlobalContextFile();
2810
2831
  if (existsSync(globalFile)) files.unshift(globalFile);
2811
2832
  }
2812
2833
  if (behavior.contextLayerKind === "codex") {
2813
- const { codexGlobalContextFile } = await import("./context-layers-YNpf6Q_I.js");
2834
+ const { codexGlobalContextFile } = await import("./context-layers-B3Nt58jl.js");
2814
2835
  const globalFile = codexGlobalContextFile();
2815
2836
  if (existsSync(globalFile)) files.unshift(globalFile);
2816
2837
  }
@@ -3060,7 +3081,7 @@ async function injectPiPromptTimeMemory(agentId, prompt) {
3060
3081
  agentRole: agentState.role ?? "work",
3061
3082
  agentHarness: agentState.harness ?? "claude-code"
3062
3083
  };
3063
- const { injectPromptTimeMemory } = await import("./injection-DK9zh_HL.js");
3084
+ const { injectPromptTimeMemory } = await import("./injection-oNZeoDhL.js");
3064
3085
  const result = await injectPromptTimeMemory({
3065
3086
  prompt,
3066
3087
  identity,
@@ -3094,7 +3115,7 @@ async function injectPiConversationMemory(opts, prompt) {
3094
3115
  agentRole: "work",
3095
3116
  agentHarness: "ohmypi"
3096
3117
  };
3097
- const { injectPromptTimeMemory } = await import("./injection-DK9zh_HL.js");
3118
+ const { injectPromptTimeMemory } = await import("./injection-oNZeoDhL.js");
3098
3119
  const result = await injectPromptTimeMemory({
3099
3120
  prompt,
3100
3121
  identity,
@@ -3515,7 +3536,7 @@ function resolveSlotTierSpawnParams(baseWorkspace, slotItemId, explicitModel, sp
3515
3536
  /**
3516
3537
  * Tiered-execution model resolution for the single work-agent path.
3517
3538
  * Auto-start and non-swarm issues still run one foreground work agent, but
3518
- * the first dispatchable vBRIEF item is the same scheduling unit the agent is
3539
+ * the first dispatchable xBRIEF item is the same scheduling unit the agent is
3519
3540
  * about to execute. If tiered execution is enabled for the issue, route that
3520
3541
  * agent through the item's resolved tier; otherwise leave role-default model
3521
3542
  * resolution untouched.
@@ -3618,7 +3639,7 @@ async function transitionIssueToInReview(issueId, workspacePath) {
3618
3639
  async function buildAgentLaunchConfig(opts) {
3619
3640
  const model = requireModelOverrideSync(opts.model);
3620
3641
  try {
3621
- const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-DWXjafJh.js");
3642
+ const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-BTENVmYf.js");
3622
3643
  await Effect.runPromise(injectOverdeckInfraDeny(opts.workspace));
3623
3644
  } catch (err) {
3624
3645
  console.warn(`[agents] injectOverdeckInfraDeny failed for ${opts.agentId} (non-fatal): ${err instanceof Error ? err.message : err}`);
@@ -3699,7 +3720,7 @@ async function retrieveSpawnTimeMemoryContext(input) {
3699
3720
  agentRole: input.role,
3700
3721
  agentHarness: input.harness
3701
3722
  };
3702
- const { injectPromptTimeMemory } = await import("./injection-DK9zh_HL.js");
3723
+ const { injectPromptTimeMemory } = await import("./injection-oNZeoDhL.js");
3703
3724
  return (await injectPromptTimeMemory({
3704
3725
  prompt: input.prompt,
3705
3726
  identity,
@@ -3790,7 +3811,7 @@ async function assertWorkspaceStackHealthyForSpawn(issueId, role, allowHost = fa
3790
3811
  record.attempts += 1;
3791
3812
  spawnStackRebuildState.set(normalizedIssue, record);
3792
3813
  console.log(`[agents] Workspace stack for ${normalizedIssue} unhealthy (${details}) — rebuilding before spawn (attempt ${record.attempts}/${SPAWN_STACK_REBUILD_MAX_ATTEMPTS})`);
3793
- const { rebuildWorkspaceStack } = await import("./rebuild-stack-DjdpALr1.js");
3814
+ const { rebuildWorkspaceStack } = await import("./rebuild-stack-kA7XngID.js");
3794
3815
  const result = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[agents] ${normalizedIssue} stack rebuild: ${m}`) })).catch((err) => ({
3795
3816
  success: false,
3796
3817
  error: err instanceof Error ? err.message : String(err)
@@ -5033,18 +5054,18 @@ async function spawnRun(issueId, role, options = {}) {
5033
5054
  let reapWarmIdle = false;
5034
5055
  const advancing = role === "review" || role === "test" || role === "ship";
5035
5056
  try {
5036
- const { isPaneDead } = await import("./tmux-HQLgwo_C.js");
5057
+ const { isPaneDead } = await import("./tmux-DoThH6aj.js");
5037
5058
  if (await Effect.runPromise(isPaneDead(agentId))) reapWarmIdle = true;
5038
5059
  else if (advancing) {
5039
- const { getReviewStatusSync } = await import("./review-status-DXeqFpk5.js");
5040
- const { isRoleTerminal } = await import("./reap-terminal-sessions-C1mfzoZo.js");
5060
+ const { getReviewStatusSync } = await import("./review-status-C6n6-9f_.js");
5061
+ const { isRoleTerminal } = await import("./reap-terminal-sessions-MWnqdLCJ.js");
5041
5062
  const status = getReviewStatusSync(issueId);
5042
5063
  reapWarmIdle = !!status && isRoleTerminal(role, status);
5043
5064
  }
5044
5065
  } catch {}
5045
5066
  if (!reapWarmIdle) throw new Error(`Role run ${agentId} already running. Use 'pan tell' to message it.`);
5046
5067
  console.log(`[spawn] ${agentId} is warm-idle from the previous cycle — reaping it for the new ${role} dispatch (PAN-2579)`);
5047
- const { killSession } = await import("./tmux-HQLgwo_C.js");
5068
+ const { killSession } = await import("./tmux-DoThH6aj.js");
5048
5069
  await Effect.runPromise(killSession(agentId)).catch(() => {});
5049
5070
  }
5050
5071
  await assertWorkspaceStackHealthyForSpawn(issueId, role, options.allowHost, workspace);
@@ -5054,10 +5075,11 @@ async function spawnRun(issueId, role, options = {}) {
5054
5075
  role,
5055
5076
  model: selectedModel
5056
5077
  });
5078
+ const harnessLaunch = await prepareHarnessLaunch(resolvedHarness);
5057
5079
  assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
5058
5080
  await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
5059
5081
  if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
5060
- const { isCliproxyRunning } = await import("./cliproxy-7g1nObvB.js");
5082
+ const { isCliproxyRunning } = await import("./cliproxy-DW0V86F8.js");
5061
5083
  if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription role runs route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT role run.");
5062
5084
  }
5063
5085
  const state = {
@@ -5070,7 +5092,7 @@ async function spawnRun(issueId, role, options = {}) {
5070
5092
  modelSpawnKey,
5071
5093
  status: "starting",
5072
5094
  startedAt: (/* @__PURE__ */ new Date()).toISOString(),
5073
- costSoFar: 0,
5095
+ ...resolvedHarness === "codex" ? {} : { costSoFar: 0 },
5074
5096
  hostOverride: options.allowHost || void 0,
5075
5097
  slotIndex: options.slotIndex,
5076
5098
  slotItemId: options.slotItemId
@@ -5135,7 +5157,11 @@ async function spawnRun(issueId, role, options = {}) {
5135
5157
  }
5136
5158
  if (options.reviewSynthesisAgentId) state.reviewSynthesisAgentId = options.reviewSynthesisAgentId;
5137
5159
  if (options.reviewOutputPath) state.reviewOutputPath = options.reviewOutputPath;
5138
- const extraEnvExports = [...flywheelEnvExports(flywheelEnv), ...options.extraEnvExports ?? []];
5160
+ const extraEnvExports = [
5161
+ harnessLaunch.pathExport,
5162
+ ...flywheelEnvExports(flywheelEnv),
5163
+ ...options.extraEnvExports ?? []
5164
+ ];
5139
5165
  if (role === "knowledge" && !extraEnvExports.includes("export PATH=\"$HOME/.overdeck/bin:$PATH\"")) extraEnvExports.push("export PATH=\"$HOME/.overdeck/bin:$PATH\"");
5140
5166
  const launcherContent = generateLauncherScriptSync({
5141
5167
  role,
@@ -5165,7 +5191,7 @@ async function spawnRun(issueId, role, options = {}) {
5165
5191
  const claudeCmd = `bash ${launcherScript}`;
5166
5192
  console.log(`[claude-invoke] purpose=role-run | role=${role} | model=${state.model} | source=agents.ts:spawnRun | session=${agentId} | command="${claudeCmd}"`);
5167
5193
  try {
5168
- const { preTrustDirectory } = await import("./workspace-manager-CcujONCR.js");
5194
+ const { preTrustDirectory } = await import("./workspace-manager-ZTdJAy9M.js");
5169
5195
  preTrustDirectory(workspace);
5170
5196
  } catch {}
5171
5197
  clearReadySignal(agentId);
@@ -5235,7 +5261,7 @@ async function spawnAgent(options) {
5235
5261
  if (await Effect.runPromise(sessionExists(agentId))) throw new Error(`Agent ${agentId} already running. Use 'pan tell' to message it.`);
5236
5262
  await assertWorkspaceStackHealthyForSpawn(options.issueId, role, options.allowHost, options.workspace);
5237
5263
  initHookSync(agentId);
5238
- if (role !== "strike" && role !== "knowledge" && options.slotItemId === void 0 && !readWorkspacePlanSync(options.workspace)) throw new Error(`The required vBRIEF checklist for ${options.issueId} is missing or unreadable. Run planning before spawning a work agent.`);
5264
+ if (role !== "strike" && role !== "knowledge" && options.slotItemId === void 0 && !readWorkspacePlanSync(options.workspace)) throw new Error(`The required xBRIEF checklist for ${options.issueId} is missing or unreadable. Run planning before spawning a work agent.`);
5239
5265
  const modelSpawnKey = `${role}:${options.issueId}`;
5240
5266
  const singleTierParams = role === "work" && options.slotItemId === void 0 && options.slotIndex === void 0 ? resolveSingleWorkTierSpawnParams(options.workspace, options.model, modelSpawnKey) : {};
5241
5267
  const selectedModel = determineModel({
@@ -5245,7 +5271,7 @@ async function spawnAgent(options) {
5245
5271
  });
5246
5272
  console.log(`[DEBUG] Selected model: ${selectedModel}`);
5247
5273
  if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
5248
- const { isCliproxyRunning } = await import("./cliproxy-7g1nObvB.js");
5274
+ const { isCliproxyRunning } = await import("./cliproxy-DW0V86F8.js");
5249
5275
  if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription agents route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT agent.");
5250
5276
  }
5251
5277
  const resolvedHarness = await resolveHarness({
@@ -5253,6 +5279,7 @@ async function spawnAgent(options) {
5253
5279
  role,
5254
5280
  model: selectedModel
5255
5281
  });
5282
+ const harnessLaunch = await prepareHarnessLaunch(resolvedHarness);
5256
5283
  assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
5257
5284
  await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
5258
5285
  const state = {
@@ -5265,7 +5292,7 @@ async function spawnAgent(options) {
5265
5292
  modelSpawnKey,
5266
5293
  status: "starting",
5267
5294
  startedAt: (/* @__PURE__ */ new Date()).toISOString(),
5268
- costSoFar: 0,
5295
+ ...resolvedHarness === "codex" ? {} : { costSoFar: 0 },
5269
5296
  hostOverride: options.allowHost || void 0,
5270
5297
  sessionId: createFreshSessionIdentity(agentId, resolvedHarness)
5271
5298
  };
@@ -5274,7 +5301,7 @@ async function spawnAgent(options) {
5274
5301
  if (role === "work") {
5275
5302
  try {
5276
5303
  if (resetPipelineVerdictsForWorkStartSync(options.issueId)) {
5277
- const { resetPostMergeState } = await import("./merge-agent-CnORPiri.js");
5304
+ const { resetPostMergeState } = await import("./merge-agent-BQM3a8z5.js");
5278
5305
  resetPostMergeState(options.issueId);
5279
5306
  }
5280
5307
  } catch (err) {
@@ -5285,7 +5312,7 @@ async function spawnAgent(options) {
5285
5312
  });
5286
5313
  }
5287
5314
  if (role === "work") try {
5288
- const { writeStoryFeatureContext } = await import("./work-agent-prompt-ULdcANl5.js");
5315
+ const { writeStoryFeatureContext } = await import("./work-agent-prompt-Yb2bd3Fq.js");
5289
5316
  await writeStoryFeatureContext(options.workspace, options.issueId);
5290
5317
  } catch (ctxErr) {
5291
5318
  console.warn(`[agents] Could not write story feature context for ${options.issueId}: ${ctxErr.message}`);
@@ -5334,7 +5361,7 @@ async function spawnAgent(options) {
5334
5361
  try {
5335
5362
  const venvPath = join$1(options.workspace, ".venv");
5336
5363
  if (isTldrEnabledSync() && existsSync(venvPath)) {
5337
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BJA7TkqS.js");
5364
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-DL566HbH.js");
5338
5365
  const tldrService = getTldrDaemonServiceSync(options.workspace, venvPath);
5339
5366
  if (!(await tldrService.getStatus()).running) {
5340
5367
  await tldrService.start(true);
@@ -5365,7 +5392,7 @@ async function spawnAgent(options) {
5365
5392
  supervisorScriptPath: supervisorLaunch.supervisorScriptPath,
5366
5393
  harness: state.harness ?? "claude-code",
5367
5394
  sessionId: state.sessionId,
5368
- extraEnvExports: flywheelEnvExports(flywheelEnv),
5395
+ extraEnvExports: [harnessLaunch.pathExport, ...flywheelEnvExports(flywheelEnv)],
5369
5396
  effort: options.effort
5370
5397
  });
5371
5398
  const launcherScript = join$1(getAgentDir(agentId), "launcher.sh");
@@ -5374,13 +5401,13 @@ async function spawnAgent(options) {
5374
5401
  const claudeCmd = `bash ${launcherScript}`;
5375
5402
  console.log(`[claude-invoke] purpose=work-agent | model=${state.model} | source=agents.ts:spawnAgent | session=${agentId} | command="${claudeCmd}"`);
5376
5403
  try {
5377
- const { preTrustDirectory } = await import("./workspace-manager-CcujONCR.js");
5404
+ const { preTrustDirectory } = await import("./workspace-manager-ZTdJAy9M.js");
5378
5405
  preTrustDirectory(options.workspace);
5379
5406
  } catch {}
5380
5407
  try {
5381
- const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-CeSVFL6C.js");
5408
+ const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-CPfoFAdV.js");
5382
5409
  if (isGitHubAppConfigured()) {
5383
- const { findProjectByPathSync } = await import("./projects-IRHJIPYC.js");
5410
+ const { findProjectByPathSync } = await import("./projects-9SkRpES9.js");
5384
5411
  const ghRepo = findProjectByPathSync(resolve$1(options.workspace, "..", ".."))?.github_repo;
5385
5412
  if (ghRepo) {
5386
5413
  const [owner, repo] = ghRepo.split("/");
@@ -5443,7 +5470,7 @@ async function spawnAgent(options) {
5443
5470
  const codexHomeForAgent = join$1(homedir(), ".overdeck", "agents", agentId, "codex-home");
5444
5471
  (async () => {
5445
5472
  try {
5446
- const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-BBeZ8c3s.js");
5473
+ const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-Dg7Is5yb.js");
5447
5474
  const rollout = await waitForCodexRollout(codexHomeForAgent, 12e4);
5448
5475
  if (rollout) {
5449
5476
  const threadId = extractThreadIdFromRollout(rollout);
@@ -5480,7 +5507,7 @@ function assertRegisteredSlotCap(issueId, configuredCap) {
5480
5507
  }
5481
5508
  function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
5482
5509
  const doc = readWorkspacePlanSync(baseWorkspace);
5483
- if (!doc) throw new Error(`Registered slot spawn for ${issueId} requires a readable vBRIEF plan in ${baseWorkspace}.`);
5510
+ if (!doc) throw new Error(`Registered slot spawn for ${issueId} requires a readable xBRIEF plan in ${baseWorkspace}.`);
5484
5511
  const slice = createActiveSlice(doc, {
5485
5512
  issueId: issueId.toUpperCase(),
5486
5513
  itemId: slot.slotItemId,
@@ -5495,7 +5522,7 @@ function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
5495
5522
  `Branch: ${slot.branch}`,
5496
5523
  `Workspace: ${slot.workspace}`,
5497
5524
  "",
5498
- "You are a registered slot work agent. Implement only the target vBRIEF item below, keep changes scoped to that item, and do not merge this slot branch yourself.",
5525
+ "You are a registered slot work agent. Implement only the target xBRIEF item below, keep changes scoped to that item, and do not merge this slot branch yourself.",
5499
5526
  "",
5500
5527
  slice.prompt
5501
5528
  ];
@@ -5546,6 +5573,7 @@ var init_spawn = __esmMin((() => {
5546
5573
  init_providers();
5547
5574
  init_review_status();
5548
5575
  init_harness_resolve();
5576
+ init_harness_binary();
5549
5577
  init_codex_auth();
5550
5578
  init_behavior();
5551
5579
  init_bridge_token();
@@ -5750,6 +5778,7 @@ var init_ohmypi = __esmMin((() => {
5750
5778
  init_behavior();
5751
5779
  init_tmux();
5752
5780
  init_ohmypi_parser();
5781
+ init_harness_binary();
5753
5782
  init_launcher_generator();
5754
5783
  init_ohmypi_fifo();
5755
5784
  init_errors();
@@ -5893,6 +5922,7 @@ var init_ohmypi = __esmMin((() => {
5893
5922
  async spawnAgent(config) {
5894
5923
  const piExtensionPath = config.piExtensionPath;
5895
5924
  if (!piExtensionPath) throw new Error("OhmypiRuntime.spawnAgent requires piExtensionPath in config");
5925
+ const harnessLaunch = await prepareHarnessLaunch("ohmypi");
5896
5926
  const agentId = config.agentId;
5897
5927
  const dir = agentDirFor(agentId);
5898
5928
  const sessionDir = ohmypiSessionDirFor(agentId);
@@ -5921,6 +5951,7 @@ var init_ohmypi = __esmMin((() => {
5921
5951
  resumeSessionId,
5922
5952
  overdeckEnv: { agentId },
5923
5953
  setTerminalEnv: true,
5954
+ extraEnvExports: [harnessLaunch.pathExport],
5924
5955
  trapHup: true
5925
5956
  });
5926
5957
  const launcherPath = join(dir, "ohmypi-launcher.sh");
@@ -6225,7 +6256,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6225
6256
  return;
6226
6257
  }
6227
6258
  console.log(`[agents] Auto-resuming suspended agent ${normalizedId} to deliver message`);
6228
- const { resumeAgent } = await import("./agents-Czz6R57Z.js");
6259
+ const { resumeAgent } = await import("./agents-FlIgQ3ql.js");
6229
6260
  const result = await resumeAgent(normalizedId, message);
6230
6261
  if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
6231
6262
  if (result.messageDelivered === false) throw new Error(`Agent resumed but ready signal did not fire — message not delivered. Feedback is in the mail queue.`);
@@ -6242,7 +6273,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6242
6273
  return;
6243
6274
  }
6244
6275
  console.log(`[agents] Auto-resuming stopped agent ${normalizedId} to deliver feedback (session exists: ${await Effect.runPromise(sessionExists(normalizedId))})`);
6245
- const { resumeAgent } = await import("./agents-Czz6R57Z.js");
6276
+ const { resumeAgent } = await import("./agents-FlIgQ3ql.js");
6246
6277
  const resumeResult = await resumeAgent(normalizedId, message);
6247
6278
  queueAgentMail(normalizedId, message);
6248
6279
  if (resumeResult.success && resumeResult.messageDelivered !== false) {
@@ -6278,7 +6309,8 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6278
6309
  const resumeRole = agentState.role ?? "work";
6279
6310
  const resumeModel = agentState.model || "claude-sonnet-4-6";
6280
6311
  const fallbackHarness = agentState.harness ?? "claude-code";
6281
- const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-Czz6R57Z.js");
6312
+ const harnessLaunch = await prepareHarnessLaunch(fallbackHarness);
6313
+ const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-FlIgQ3ql.js");
6282
6314
  await assertWorkspaceStackHealthyForSpawn(agentState.issueId || normalizedId.replace(/^agent-/, "").toUpperCase(), resumeRole, agentState.hostOverride === true, agentState.workspace);
6283
6315
  const fallbackPiFields = fallbackHarness === "ohmypi" ? await getOhmypiLauncherFields(normalizedId, resumeModel) : {};
6284
6316
  const fallbackCodexFields = fallbackHarness === "codex" ? getCodexLauncherFields(normalizedId, resumeModel, agentState.workspace, resumeRole) : {};
@@ -6289,6 +6321,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6289
6321
  changeDir: false,
6290
6322
  setTerminalEnv: true,
6291
6323
  providerExports,
6324
+ extraEnvExports: [harnessLaunch.pathExport],
6292
6325
  baseCommand: await getRoleRuntimeBaseCommand(resumeModel, normalizedId, resumeRole, fallbackHarness),
6293
6326
  appendSystemPromptFiles: await claudeSystemPromptFiles(agentState.workspace, fallbackHarness),
6294
6327
  useSupervisor: fallbackSupervisorLaunch.useSupervisor,
@@ -6341,7 +6374,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6341
6374
  } else console.warn(`[agents] Fallback-restarted ${normalizedId} but ready signal not detected — feedback in mail queue`);
6342
6375
  return;
6343
6376
  }
6344
- const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-BNORDWAX.js");
6377
+ const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-CRCg1L4H.js");
6345
6378
  const remoteState = loadRemoteAgentState(normalizedId);
6346
6379
  if (remoteState && remoteState.vmName) {
6347
6380
  console.log(`[agents] Sending message to remote agent ${normalizedId} on ${remoteState.vmName}`);
@@ -6373,7 +6406,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
6373
6406
  const panePids = await Effect.runPromise(listPaneValues(normalizedId, "#{pane_pid}"));
6374
6407
  if (panePids.length > 0 && !await hasAgentRuntimeInSubtree(panePids[0], expectedHarness)) {
6375
6408
  console.warn(`[agents] ${normalizedId} tmux session is a zombie (no ${expectedHarness} runtime) — attempting resume`);
6376
- const { resumeAgent } = await import("./agents-Czz6R57Z.js");
6409
+ const { resumeAgent } = await import("./agents-FlIgQ3ql.js");
6377
6410
  const resumeResult = await resumeAgent(normalizedId, message);
6378
6411
  if (resumeResult.success) {
6379
6412
  if (resumeResult.messageDelivered !== false) await appendTellInterventionForUserSource(normalizedId, caller);
@@ -6392,6 +6425,7 @@ var init_messaging = __esmMin((() => {
6392
6425
  init_activity_logger();
6393
6426
  init_child_env();
6394
6427
  init_launcher_generator();
6428
+ init_harness_binary();
6395
6429
  init_operator_interventions();
6396
6430
  init_persistent_logger();
6397
6431
  init_providers();
@@ -6485,7 +6519,7 @@ async function buildCompactRecoverySeed(agentId) {
6485
6519
  if (agentState?.workspace && sessionId) {
6486
6520
  const sessionFile = sessionFilePath(agentState.workspace, sessionId);
6487
6521
  try {
6488
- const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-CMIeWW4_.js"), import("./smart-compaction-C1_VVLEd.js")]);
6522
+ const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-DiG5zWQq.js"), import("./smart-compaction-CHIxLr_d.js")]);
6489
6523
  const settings = getConversationCompactionSettings();
6490
6524
  summary = (await Effect.runPromise(generateSmartSummary({
6491
6525
  jsonlPath: sessionFile,
@@ -6496,7 +6530,7 @@ async function buildCompactRecoverySeed(agentId) {
6496
6530
  } catch (err) {
6497
6531
  logAgentLifecycleSync(normalizedId, `compact-recovery smart summary failed (${err instanceof Error ? err.message : String(err)}); trying heuristic fallback`);
6498
6532
  try {
6499
- const { generateFallbackSummary } = await import("./summary-fork-CdLn8Chr.js");
6533
+ const { generateFallbackSummary } = await import("./summary-fork-D8bXjCr7.js");
6500
6534
  summary = await Effect.runPromise(generateFallbackSummary(sessionFile));
6501
6535
  } catch (fallbackErr) {
6502
6536
  logAgentLifecycleSync(normalizedId, `compact-recovery fallback summary failed (${fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr)}); seeding with reseed instructions only`);
@@ -6528,7 +6562,7 @@ async function resumeAgent(agentId, message, opts) {
6528
6562
  if (gateDecision.decision === "proceed" && gateDecision.warning) logAgentLifecycleSync(normalizedId, `resumeAgent: ${gateDecision.warning}`);
6529
6563
  if (bypassTroubledGate) logAgentLifecycleSync(normalizedId, `resumeAgent: bypassing troubled gate for explicit compact recovery (${gateBlock?.reason})`);
6530
6564
  const hasWorkspace = !!agentState?.workspace && existsSync(agentState.workspace);
6531
- const isPlaceholder = !!agentState && agentState.status === "starting" && typeof agentState.model === "string" && agentState.model.startsWith("pending-");
6565
+ const isPlaceholder = !!agentState && typeof agentState.model === "string" && agentState.model.startsWith("pending-");
6532
6566
  const allowedRuntimeStates = ["suspended", "idle"];
6533
6567
  const allowedAgentStatuses = ["stopped", "completed"];
6534
6568
  const isRunningOrStarting = agentState?.status === "running" || agentState?.status === "starting";
@@ -6612,6 +6646,7 @@ async function resumeAgent(agentId, message, opts) {
6612
6646
  role: agentState.role,
6613
6647
  model
6614
6648
  });
6649
+ const harnessLaunch = await prepareHarnessLaunch(effectiveHarness);
6615
6650
  const legacyHarnessMigrated = !hasSessionOrigin && priorHarness !== void 0 && priorHarness !== effectiveHarness;
6616
6651
  agentState.harness = effectiveHarness;
6617
6652
  const supervisorLaunch = await prepareSupervisorForRelaunch(normalizedId, agentState, model, effectiveHarness);
@@ -6681,7 +6716,8 @@ async function resumeAgent(agentId, message, opts) {
6681
6716
  sessionId: freshSessionId,
6682
6717
  harness: effectiveHarness,
6683
6718
  useSupervisor: supervisorLaunch.useSupervisor,
6684
- supervisorScriptPath: supervisorLaunch.supervisorScriptPath
6719
+ supervisorScriptPath: supervisorLaunch.supervisorScriptPath,
6720
+ extraEnvExports: [harnessLaunch.pathExport]
6685
6721
  });
6686
6722
  const launcherScript = join$1(getAgentDir(normalizedId), "launcher.sh");
6687
6723
  await writeLauncherScriptAtomic(launcherScript, launcherContent);
@@ -6802,6 +6838,7 @@ var init_resume = __esmMin((() => {
6802
6838
  init_child_env();
6803
6839
  init_context_overflow();
6804
6840
  init_harness_resolve();
6841
+ init_harness_binary();
6805
6842
  init_model_validation();
6806
6843
  init_infra();
6807
6844
  init_paths();
@@ -6884,14 +6921,15 @@ async function restartAgent(agentId, opts = {}) {
6884
6921
  error: reason
6885
6922
  };
6886
6923
  }
6887
- if (graceful && await Effect.runPromise(sessionExists(normalizedId))) await sendGracefulRestartWarning(normalizedId, agentState.harness, agentState.workspace);
6888
- await Effect.runPromise(stopAgent(normalizedId));
6889
6924
  const effectiveModel = newModel || requireModelOverrideSync(agentState.model || "claude-sonnet-4-6");
6890
6925
  const effectiveHarness = await resolveHarness({
6891
6926
  explicit: newHarness ?? agentState.harness,
6892
6927
  role: agentState.role,
6893
6928
  model: effectiveModel
6894
6929
  });
6930
+ const harnessLaunch = await prepareHarnessLaunch(effectiveHarness);
6931
+ if (graceful && await Effect.runPromise(sessionExists(normalizedId))) await sendGracefulRestartWarning(normalizedId, agentState.harness, agentState.workspace);
6932
+ await Effect.runPromise(stopAgent(normalizedId));
6895
6933
  if (newModel && newModel !== agentState.model) agentState.model = newModel;
6896
6934
  agentState.harness = effectiveHarness;
6897
6935
  agentState.status = "starting";
@@ -6908,7 +6946,8 @@ async function restartAgent(agentId, opts = {}) {
6908
6946
  isPlanning: agentState.role === "plan",
6909
6947
  harness: effectiveHarness,
6910
6948
  useSupervisor: supervisorLaunch.useSupervisor,
6911
- supervisorScriptPath: supervisorLaunch.supervisorScriptPath
6949
+ supervisorScriptPath: supervisorLaunch.supervisorScriptPath,
6950
+ extraEnvExports: [harnessLaunch.pathExport]
6912
6951
  });
6913
6952
  const launcherScript = join$1(getAgentDir(normalizedId), "launcher.sh");
6914
6953
  await writeLauncherScriptAtomic(launcherScript, launcherContent);
@@ -7036,6 +7075,7 @@ async function recoverAgent(agentId, opts = {}) {
7036
7075
  else clearCredentialFileAuthSync(state.workspace);
7037
7076
  }
7038
7077
  const recoveryHarness = normalizeHarness(state.harness ?? null) ?? "claude-code";
7078
+ const harnessLaunch = await prepareHarnessLaunch(recoveryHarness);
7039
7079
  const recoverySupervisorLaunch = await prepareSupervisorForRelaunch(normalizedId, state, state.model, recoveryHarness);
7040
7080
  saveAgentStateSync(state);
7041
7081
  if (recoveryHarness === "ohmypi") {
@@ -7045,7 +7085,8 @@ async function recoverAgent(agentId, opts = {}) {
7045
7085
  workspace: state.workspace,
7046
7086
  role: recoveryRole,
7047
7087
  isPlanning: recoveryRole === "plan",
7048
- harness: "ohmypi"
7088
+ harness: "ohmypi",
7089
+ extraEnvExports: [harnessLaunch.pathExport]
7049
7090
  });
7050
7091
  const launcherScript = join$1(getAgentDir(normalizedId), "launcher.sh");
7051
7092
  await writeLauncherScriptAtomic(launcherScript, launcherContent);
@@ -7075,6 +7116,7 @@ async function recoverAgent(agentId, opts = {}) {
7075
7116
  changeDir: false,
7076
7117
  setTerminalEnv: true,
7077
7118
  providerExports: (await getProviderExportsForModel(state.model)).trimEnd(),
7119
+ extraEnvExports: [harnessLaunch.pathExport],
7078
7120
  baseCommand: await getRoleRuntimeBaseCommand(state.model, normalizedId, recoveryRole, recoveryHarness),
7079
7121
  appendSystemPromptFiles: await claudeSystemPromptFiles(state.workspace, recoveryHarness),
7080
7122
  ...recoveryHarness === "codex" ? {} : { promptInline: recoveryPrompt },
@@ -7118,7 +7160,7 @@ function generateRecoveryPrompt(state) {
7118
7160
  `- Started: ${state.startedAt}`,
7119
7161
  "",
7120
7162
  "## Recovery Steps",
7121
- "1. Check the vBRIEF task state: `pan task show " + state.issueId + " <item-id>`",
7163
+ "1. Check the xBRIEF task state: `pan task show " + state.issueId + " <item-id>`",
7122
7164
  "2. Review recent git commits: `git log --oneline -10`",
7123
7165
  "3. Check hook for pending work: `pan admin fpp check`",
7124
7166
  "4. Resume from last known state",
@@ -7163,6 +7205,7 @@ var init_recovery = __esmMin((() => {
7163
7205
  init_hooks();
7164
7206
  init_launcher_generator();
7165
7207
  init_harness_resolve();
7208
+ init_harness_binary();
7166
7209
  init_model_validation();
7167
7210
  init_persistent_logger();
7168
7211
  init_providers();
@@ -7417,7 +7460,7 @@ var init_tier_escalation = __esmMin((() => {
7417
7460
  * not to respond, so per-event output cost stays ~0 (NFR-1).
7418
7461
  */
7419
7462
  async function runGitShow$1(workspace, sha, args = []) {
7420
- const { stdout } = await execFileAsync$2("git", [
7463
+ const { stdout } = await execFileAsync$5("git", [
7421
7464
  "show",
7422
7465
  sha,
7423
7466
  ...args
@@ -7531,12 +7574,12 @@ async function broadcastCommit(options) {
7531
7574
  }
7532
7575
  return deliveries;
7533
7576
  }
7534
- var execFileAsync$2, DEFAULT_FEED_CONFIG;
7577
+ var execFileAsync$5, DEFAULT_FEED_CONFIG;
7535
7578
  var init_tier_feed = __esmMin((() => {
7536
7579
  init_delivery();
7537
7580
  init_tier_metrics();
7538
7581
  init_tier_table();
7539
- execFileAsync$2 = promisify(execFile);
7582
+ execFileAsync$5 = promisify(execFile);
7540
7583
  DEFAULT_FEED_CONFIG = DEFAULT_TIERED_EXECUTION_CONFIG.feed;
7541
7584
  }));
7542
7585
  //#endregion
@@ -7656,7 +7699,7 @@ function childItems(item) {
7656
7699
  return item.items ?? item.subItems ?? [];
7657
7700
  }
7658
7701
  /**
7659
- * Pull the bead's acceptance-criterion titles from its vBRIEF child items
7702
+ * Pull the bead's acceptance-criterion titles from its xBRIEF child items
7660
7703
  * (child metadata.kind === 'acceptance_criterion').
7661
7704
  */
7662
7705
  function extractAcceptanceCriteria(item) {
@@ -7751,7 +7794,7 @@ Rules:
7751
7794
  - Only review this commit against this bead's acceptance criteria — compile, lint, and tests are the verification gate's job, and code style is the review convoy's job.`;
7752
7795
  }
7753
7796
  async function getCommitDiff(workspacePath, sha) {
7754
- const { stdout } = await execFileAsync$1("git", ["show", sha], {
7797
+ const { stdout } = await execFileAsync$4("git", ["show", sha], {
7755
7798
  cwd: workspacePath,
7756
7799
  encoding: "utf-8",
7757
7800
  maxBuffer: 10 * 1024 * 1024
@@ -7760,7 +7803,7 @@ async function getCommitDiff(workspacePath, sha) {
7760
7803
  }
7761
7804
  /**
7762
7805
  * Deliver one subscribed commit to the standing supervisor for review:
7763
- * resolve the diff, pull the bead's acceptance criteria from its vBRIEF item
7806
+ * resolve the diff, pull the bead's acceptance criteria from its xBRIEF item
7764
7807
  * (plus traced FR text when metadata.traces is present and a PRD draft was
7765
7808
  * provided), and send the composed review request via deliverAgentMessage.
7766
7809
  */
@@ -7781,13 +7824,13 @@ async function deliverCommitForReview(options) {
7781
7824
  });
7782
7825
  return deliver(options.supervisorAgentId, message, "tier-supervisor:verdict");
7783
7826
  }
7784
- var SUPERVISOR_SUB_ROLE, execFileAsync$1;
7827
+ var SUPERVISOR_SUB_ROLE, execFileAsync$4;
7785
7828
  var init_tier_supervisor = __esmMin((() => {
7786
7829
  init_delivery();
7787
7830
  init_spawn_prep();
7788
7831
  init_spawn();
7789
7832
  SUPERVISOR_SUB_ROLE = "supervisor";
7790
- execFileAsync$1 = promisify(execFile);
7833
+ execFileAsync$4 = promisify(execFile);
7791
7834
  }));
7792
7835
  //#endregion
7793
7836
  //#region ../../lib/agents/tier-replay.ts
@@ -7967,7 +8010,7 @@ async function loadReplayCommits(workspace, base, feedConfig, deps) {
7967
8010
  return commits;
7968
8011
  }
7969
8012
  async function runGitLog(workspace, base) {
7970
- const { stdout } = await execFileAsync("git", [
8013
+ const { stdout } = await execFileAsync$3("git", [
7971
8014
  "log",
7972
8015
  "--reverse",
7973
8016
  "--format=%H%x00%s",
@@ -7986,7 +8029,7 @@ async function runGitLog(workspace, base) {
7986
8029
  }).filter((entry) => entry.sha.trim().length > 0);
7987
8030
  }
7988
8031
  async function runGitShow(workspace, sha) {
7989
- const { stdout } = await execFileAsync("git", ["show", sha], {
8032
+ const { stdout } = await execFileAsync$3("git", ["show", sha], {
7990
8033
  cwd: workspace,
7991
8034
  encoding: "utf-8",
7992
8035
  maxBuffer: 16 * 1024 * 1024
@@ -8004,7 +8047,7 @@ function replayDeps(deps = {}) {
8004
8047
  listSlotOwnership: deps.listSlotOwnership ?? listSlotOwnership
8005
8048
  };
8006
8049
  }
8007
- var execFileAsync, DEFAULT_REPLAY_THRESHOLD;
8050
+ var execFileAsync$3, DEFAULT_REPLAY_THRESHOLD;
8008
8051
  var init_tier_replay = __esmMin((() => {
8009
8052
  init_model_capabilities();
8010
8053
  init_delivery();
@@ -8016,7 +8059,7 @@ var init_tier_replay = __esmMin((() => {
8016
8059
  init_tier_supervisor();
8017
8060
  init_tier_table();
8018
8061
  init_termination();
8019
- execFileAsync = promisify(execFile);
8062
+ execFileAsync$3 = promisify(execFile);
8020
8063
  DEFAULT_REPLAY_THRESHOLD = .5;
8021
8064
  }));
8022
8065
  //#endregion
@@ -8040,16 +8083,585 @@ var init_agents = __esmMin((() => {
8040
8083
  init_tier_replay();
8041
8084
  }));
8042
8085
  //#endregion
8086
+ //#region ../../lib/system-health/types.ts
8087
+ function available(value) {
8088
+ return {
8089
+ status: "available",
8090
+ value
8091
+ };
8092
+ }
8093
+ function unavailable(reason) {
8094
+ return {
8095
+ status: "unavailable",
8096
+ reason
8097
+ };
8098
+ }
8099
+ var init_types = __esmMin((() => {}));
8100
+ //#endregion
8101
+ //#region ../../lib/system-health/darwin.ts
8102
+ function parseDarwinMemoryPressure(content) {
8103
+ for (const pattern of [/System-wide memory free percentage:\s*([\d.]+)\s*%/i, /System-wide memory free percentage\s*=\s*([\d.]+)\s*%?/i]) {
8104
+ const match = content.match(pattern);
8105
+ if (!match) continue;
8106
+ const value = Number(match[1]);
8107
+ if (Number.isFinite(value) && value >= 0 && value <= 100) return value;
8108
+ }
8109
+ return null;
8110
+ }
8111
+ function parseDarwinVmStat(content) {
8112
+ const pageSizeMatch = content.match(/page size of\s+(\d+)\s+bytes/i);
8113
+ if (!pageSizeMatch) return null;
8114
+ const pageSizeBytes = Number(pageSizeMatch[1]);
8115
+ if (!Number.isFinite(pageSizeBytes) || pageSizeBytes <= 0) return null;
8116
+ const pages = /* @__PURE__ */ new Map();
8117
+ for (const line of content.split("\n")) {
8118
+ const match = line.match(/^([^:]+):\s+(\d+)\.?$/);
8119
+ if (!match) continue;
8120
+ const value = Number(match[2]);
8121
+ if (Number.isFinite(value)) pages.set(match[1].trim(), value);
8122
+ }
8123
+ const availablePageNames = [
8124
+ "Pages free",
8125
+ "Pages inactive",
8126
+ "Pages speculative"
8127
+ ];
8128
+ const availablePages = availablePageNames.every((name) => pages.has(name)) ? availablePageNames.reduce((sum, name) => sum + pages.get(name), 0) : void 0;
8129
+ const swapIn = pages.get("Swapins");
8130
+ const swapOut = pages.get("Swapouts");
8131
+ return {
8132
+ pageSizeBytes,
8133
+ availableMemoryBytes: availablePages == null ? void 0 : availablePages * pageSizeBytes,
8134
+ swap: swapIn == null || swapOut == null ? void 0 : {
8135
+ pagesIn: swapIn,
8136
+ pagesOut: swapOut
8137
+ }
8138
+ };
8139
+ }
8140
+ function unitBytes(value, unit) {
8141
+ const parsed = Number(value);
8142
+ if (!Number.isFinite(parsed) || parsed < 0) return null;
8143
+ const multiplier = unit.toUpperCase() === "G" ? 1024 ** 3 : unit.toUpperCase() === "K" ? 1024 : MIB;
8144
+ return Math.round(parsed * multiplier);
8145
+ }
8146
+ function parseDarwinSwapUsage(content) {
8147
+ const total = content.match(/total\s*=\s*([\d.]+)([KMG])/i);
8148
+ const used = content.match(/used\s*=\s*([\d.]+)([KMG])/i);
8149
+ const free = content.match(/free\s*=\s*([\d.]+)([KMG])/i);
8150
+ if (!total || !used || !free) return null;
8151
+ const totalBytes = unitBytes(total[1], total[2]);
8152
+ const usedBytes = unitBytes(used[1], used[2]);
8153
+ const freeBytes = unitBytes(free[1], free[2]);
8154
+ return totalBytes == null || usedBytes == null || freeBytes == null ? null : {
8155
+ totalBytes,
8156
+ usedBytes,
8157
+ freeBytes
8158
+ };
8159
+ }
8160
+ function aggregateDarwinCpuCounters(cpuInfo) {
8161
+ if (cpuInfo.length === 0) return null;
8162
+ let idle = 0;
8163
+ let total = 0;
8164
+ for (const cpu of cpuInfo) {
8165
+ const values = Object.values(cpu.times);
8166
+ if (values.some((value) => !Number.isFinite(value) || value < 0)) return null;
8167
+ idle += cpu.times.idle;
8168
+ total += values.reduce((sum, value) => sum + value, 0);
8169
+ }
8170
+ return {
8171
+ idle,
8172
+ total
8173
+ };
8174
+ }
8175
+ function computeCpuPercent$1(current, previous) {
8176
+ if (!previous) return unavailable("A previous CPU time sample is required.");
8177
+ const totalDelta = current.total - previous.total;
8178
+ const idleDelta = current.idle - previous.idle;
8179
+ if (totalDelta <= 0 || idleDelta < 0 || idleDelta > totalDelta) return unavailable("CPU times did not advance monotonically.");
8180
+ return available(Math.round((totalDelta - idleDelta) / totalDelta * 1e3) / 10);
8181
+ }
8182
+ function computeSwapActivity(current, previous, elapsedMs, pageSizeBytes) {
8183
+ if (!previous) return unavailable("A previous swap counter sample is required.");
8184
+ const pages = current.pagesIn - previous.pagesIn + current.pagesOut - previous.pagesOut;
8185
+ if (pages < 0 || elapsedMs <= 0) return unavailable("Swap counters or sample timing were invalid.");
8186
+ return available(Math.round(pages * pageSizeBytes * 6e4 / elapsedMs));
8187
+ }
8188
+ function percent$1(part, total) {
8189
+ if (total <= 0) return 0;
8190
+ return Math.round(part / total * 1e3) / 10;
8191
+ }
8192
+ async function command(adapters, executable, args) {
8193
+ try {
8194
+ return await adapters.execFile(executable, args, COMMAND_TIMEOUT_MS);
8195
+ } catch {
8196
+ return null;
8197
+ }
8198
+ }
8199
+ function createDarwinHostHealthCollector(adapters = defaultAdapters$1) {
8200
+ return {
8201
+ platform: "darwin",
8202
+ async sample(previous) {
8203
+ const sampledAtMs = adapters.now();
8204
+ const [pressureOutput, vmStatOutput, swapOutput] = await Promise.all([
8205
+ command(adapters, "memory_pressure", ["-Q"]),
8206
+ command(adapters, "vm_stat", []),
8207
+ command(adapters, "sysctl", ["-n", "vm.swapusage"])
8208
+ ]);
8209
+ const pressureFreePercent = pressureOutput == null ? null : parseDarwinMemoryPressure(pressureOutput);
8210
+ const vmStat = vmStatOutput == null ? null : parseDarwinVmStat(vmStatOutput);
8211
+ const swapUsage = swapOutput == null ? null : parseDarwinSwapUsage(swapOutput);
8212
+ const cpuInfo = adapters.cpus();
8213
+ const cpuCounters = aggregateDarwinCpuCounters(cpuInfo);
8214
+ const totalMemoryBytes = adapters.totalMemoryBytes();
8215
+ const availableMemoryBytes = pressureFreePercent != null ? Math.round(totalMemoryBytes * pressureFreePercent / 100) : vmStat?.availableMemoryBytes ?? null;
8216
+ const usedMemoryBytes = Number.isFinite(totalMemoryBytes) && availableMemoryBytes != null ? Math.max(totalMemoryBytes - availableMemoryBytes, 0) : null;
8217
+ const loadAverage1m = adapters.loadAverage1m();
8218
+ const elapsedMs = previous ? sampledAtMs - previous.sampledAtMs : 0;
8219
+ return {
8220
+ platform: "darwin",
8221
+ sampledAtMs,
8222
+ cpuPercent: cpuCounters ? computeCpuPercent$1(cpuCounters, previous?.counters.cpu) : unavailable("macOS CPU times are unavailable."),
8223
+ loadAverage1m: Number.isFinite(loadAverage1m) && loadAverage1m >= 0 ? available(loadAverage1m) : unavailable("The one-minute load average is unavailable."),
8224
+ loadPerCore1m: Number.isFinite(loadAverage1m) && loadAverage1m >= 0 && cpuInfo.length > 0 ? available(Math.round(loadAverage1m / cpuInfo.length * 100) / 100) : unavailable("Load average or CPU core count is unavailable."),
8225
+ totalMemoryBytes: Number.isFinite(totalMemoryBytes) && totalMemoryBytes > 0 ? available(totalMemoryBytes) : unavailable("Total memory is unavailable."),
8226
+ usedMemoryBytes: usedMemoryBytes == null ? unavailable("Used memory cannot be derived.") : available(usedMemoryBytes),
8227
+ availableMemoryBytes: availableMemoryBytes == null ? unavailable("Available memory is unavailable.") : available(availableMemoryBytes),
8228
+ memoryUsedPercent: usedMemoryBytes == null ? unavailable("Memory utilization cannot be derived.") : available(percent$1(usedMemoryBytes, totalMemoryBytes)),
8229
+ memoryPressureSomeAvg10: unavailable("macOS does not expose Linux memory PSI."),
8230
+ memoryPressureFullAvg10: unavailable("macOS does not expose Linux memory PSI."),
8231
+ memoryPressureFreePercent: pressureFreePercent == null ? unavailable("memory_pressure did not report a recognized free percentage.") : available(pressureFreePercent),
8232
+ swapTotalBytes: swapUsage ? available(swapUsage.totalBytes) : unavailable("vm.swapusage is unavailable."),
8233
+ swapUsedBytes: swapUsage ? available(swapUsage.usedBytes) : unavailable("vm.swapusage is unavailable."),
8234
+ swapUsedPercent: swapUsage ? available(percent$1(swapUsage.usedBytes, swapUsage.totalBytes)) : unavailable("vm.swapusage is unavailable."),
8235
+ swapActivityBytesPerMinute: vmStat?.swap ? computeSwapActivity(vmStat.swap, previous?.counters.swap, elapsedMs, vmStat.pageSizeBytes) : unavailable("vm_stat swap activity counters are unavailable."),
8236
+ committedMemoryBytes: unavailable("macOS does not expose Linux Committed_AS."),
8237
+ commitLimitBytes: unavailable("macOS does not expose Linux CommitLimit."),
8238
+ virtualCommitmentPercent: unavailable("macOS virtual commitment is unavailable."),
8239
+ counters: {
8240
+ cpu: cpuCounters,
8241
+ swap: vmStat?.swap ?? null
8242
+ }
8243
+ };
8244
+ }
8245
+ };
8246
+ }
8247
+ var execFileAsync$2, COMMAND_TIMEOUT_MS, MIB, DARWIN_MEMORY_PRESSURE_DEFAULTS, defaultAdapters$1;
8248
+ var init_darwin = __esmMin((() => {
8249
+ init_types();
8250
+ execFileAsync$2 = promisify(execFile);
8251
+ COMMAND_TIMEOUT_MS = 5e3;
8252
+ MIB = 1024 ** 2;
8253
+ DARWIN_MEMORY_PRESSURE_DEFAULTS = Object.freeze({
8254
+ warningFreePercent: 10,
8255
+ criticalFreePercent: 5,
8256
+ swapActivityWarningBytesPerMinute: 64 * MIB,
8257
+ swapActivityCriticalBytesPerMinute: 256 * MIB
8258
+ });
8259
+ defaultAdapters$1 = {
8260
+ execFile: async (command, args, timeoutMs) => {
8261
+ const { stdout } = await execFileAsync$2(command, [...args], {
8262
+ encoding: "utf-8",
8263
+ timeout: timeoutMs
8264
+ });
8265
+ return stdout;
8266
+ },
8267
+ cpus: cpus$1,
8268
+ loadAverage1m: () => loadavg$1()[0] ?? 0,
8269
+ totalMemoryBytes: totalmem$1,
8270
+ now: () => Date.now()
8271
+ };
8272
+ }));
8273
+ //#endregion
8274
+ //#region ../../lib/system-health/linux.ts
8275
+ function parseMemInfo(content) {
8276
+ const values = /* @__PURE__ */ new Map();
8277
+ for (const line of content.split("\n")) {
8278
+ const match = line.match(/^(\w+):\s+(\d+)\s+kB$/);
8279
+ if (!match) continue;
8280
+ const value = Number(match[2]);
8281
+ if (Number.isFinite(value)) values.set(match[1], value * KB);
8282
+ }
8283
+ return {
8284
+ memTotalBytes: values.get("MemTotal"),
8285
+ memAvailableBytes: values.get("MemAvailable"),
8286
+ swapTotalBytes: values.get("SwapTotal"),
8287
+ swapFreeBytes: values.get("SwapFree"),
8288
+ committedMemoryBytes: values.get("Committed_AS"),
8289
+ commitLimitBytes: values.get("CommitLimit")
8290
+ };
8291
+ }
8292
+ function parseProcStat(content) {
8293
+ const lines = content.split("\n");
8294
+ const cpuLine = lines.find((line) => line.startsWith("cpu "));
8295
+ if (!cpuLine) return null;
8296
+ const values = cpuLine.trim().split(/\s+/).slice(1).map(Number);
8297
+ if (values.length < 4 || values.some((value) => !Number.isFinite(value))) return null;
8298
+ const idle = values[3] + (values[4] ?? 0);
8299
+ const total = values.reduce((sum, value) => sum + value, 0);
8300
+ const coreCount = lines.filter((line) => /^cpu\d+\s/.test(line)).length;
8301
+ if (total < 0 || idle < 0) return null;
8302
+ return {
8303
+ cpu: {
8304
+ idle,
8305
+ total
8306
+ },
8307
+ coreCount: Math.max(coreCount, 1)
8308
+ };
8309
+ }
8310
+ function parseMemoryPressure(content) {
8311
+ const result = {};
8312
+ for (const line of content.split("\n")) {
8313
+ const match = line.match(/^(some|full)\s+.*\bavg10=([^\s]+)/);
8314
+ if (!match) continue;
8315
+ const value = Number(match[2]);
8316
+ if (!Number.isFinite(value) || value < 0) continue;
8317
+ if (match[1] === "some") result.someAvg10 = value;
8318
+ if (match[1] === "full") result.fullAvg10 = value;
8319
+ }
8320
+ return result;
8321
+ }
8322
+ function parseVmstat(content) {
8323
+ let pagesIn = null;
8324
+ let pagesOut = null;
8325
+ for (const line of content.split("\n")) {
8326
+ const match = line.match(/^(pswpin|pswpout)\s+(\d+)$/);
8327
+ if (!match) continue;
8328
+ const value = Number(match[2]);
8329
+ if (!Number.isFinite(value)) continue;
8330
+ if (match[1] === "pswpin") pagesIn = value;
8331
+ if (match[1] === "pswpout") pagesOut = value;
8332
+ }
8333
+ return pagesIn == null || pagesOut == null ? null : {
8334
+ pagesIn,
8335
+ pagesOut
8336
+ };
8337
+ }
8338
+ function parseLoadAverage(content) {
8339
+ const value = Number(content.trim().split(/\s+/)[0]);
8340
+ return Number.isFinite(value) && value >= 0 ? value : null;
8341
+ }
8342
+ function computeCpuPercent(current, previous) {
8343
+ if (!previous) return unavailable("A previous CPU counter sample is required.");
8344
+ const totalDelta = current.total - previous.total;
8345
+ const idleDelta = current.idle - previous.idle;
8346
+ if (totalDelta <= 0 || idleDelta < 0 || idleDelta > totalDelta) return unavailable("CPU counters did not advance monotonically.");
8347
+ return available(Math.round((totalDelta - idleDelta) / totalDelta * 1e3) / 10);
8348
+ }
8349
+ function computeSwapActivityBytesPerMinute(current, previous, elapsedMs, pageSizeBytes) {
8350
+ if (!previous) return unavailable("A previous swap counter sample is required.");
8351
+ const pageDelta = current.pagesIn - previous.pagesIn + current.pagesOut - previous.pagesOut;
8352
+ if (pageDelta < 0 || elapsedMs <= 0 || !Number.isFinite(pageSizeBytes) || pageSizeBytes <= 0) return unavailable("Swap counters or sample timing were invalid.");
8353
+ return available(Math.round(pageDelta * pageSizeBytes * 6e4 / elapsedMs));
8354
+ }
8355
+ async function readParsed(adapters, path, parse) {
8356
+ try {
8357
+ return parse(await adapters.readFile(path));
8358
+ } catch {
8359
+ return null;
8360
+ }
8361
+ }
8362
+ function percent(part, total) {
8363
+ if (total <= 0) return 0;
8364
+ return Math.round(part / total * 1e3) / 10;
8365
+ }
8366
+ function createLinuxHostHealthCollector(adapters = defaultAdapters) {
8367
+ return {
8368
+ platform: "linux",
8369
+ async sample(previous) {
8370
+ const sampledAtMs = adapters.now();
8371
+ const [memInfo, procStat, pressure, vmstat, loadAverage, pageSizeBytes] = await Promise.all([
8372
+ readParsed(adapters, "/proc/meminfo", parseMemInfo),
8373
+ readParsed(adapters, "/proc/stat", parseProcStat),
8374
+ readParsed(adapters, "/proc/pressure/memory", parseMemoryPressure),
8375
+ readParsed(adapters, "/proc/vmstat", parseVmstat),
8376
+ readParsed(adapters, "/proc/loadavg", parseLoadAverage),
8377
+ adapters.readPageSizeBytes().catch(() => null)
8378
+ ]);
8379
+ const totalMemoryBytes = memInfo?.memTotalBytes;
8380
+ const availableMemoryBytes = memInfo?.memAvailableBytes;
8381
+ const usedMemoryBytes = totalMemoryBytes != null && availableMemoryBytes != null ? Math.max(totalMemoryBytes - availableMemoryBytes, 0) : null;
8382
+ const swapTotalBytes = memInfo?.swapTotalBytes;
8383
+ const swapFreeBytes = memInfo?.swapFreeBytes;
8384
+ const swapUsedBytes = swapTotalBytes != null && swapFreeBytes != null ? Math.max(swapTotalBytes - swapFreeBytes, 0) : null;
8385
+ const committedMemoryBytes = memInfo?.committedMemoryBytes;
8386
+ const commitLimitBytes = memInfo?.commitLimitBytes;
8387
+ const cpuCounters = procStat?.cpu ?? null;
8388
+ const swapCounters = vmstat ?? null;
8389
+ const elapsedMs = previous ? sampledAtMs - previous.sampledAtMs : 0;
8390
+ return {
8391
+ platform: "linux",
8392
+ sampledAtMs,
8393
+ cpuPercent: cpuCounters ? computeCpuPercent(cpuCounters, previous?.counters.cpu) : unavailable("The aggregate CPU counters are unavailable."),
8394
+ loadAverage1m: loadAverage == null ? unavailable("The one-minute load average is unavailable.") : available(loadAverage),
8395
+ loadPerCore1m: loadAverage == null || !procStat ? unavailable("Load average or CPU core count is unavailable.") : available(Math.round(loadAverage / procStat.coreCount * 100) / 100),
8396
+ totalMemoryBytes: totalMemoryBytes == null ? unavailable("MemTotal is unavailable.") : available(totalMemoryBytes),
8397
+ usedMemoryBytes: usedMemoryBytes == null ? unavailable("Used memory cannot be derived without MemTotal and MemAvailable.") : available(usedMemoryBytes),
8398
+ availableMemoryBytes: availableMemoryBytes == null ? unavailable("MemAvailable is unavailable.") : available(availableMemoryBytes),
8399
+ memoryUsedPercent: usedMemoryBytes == null || totalMemoryBytes == null ? unavailable("Memory utilization cannot be derived.") : available(percent(usedMemoryBytes, totalMemoryBytes)),
8400
+ memoryPressureSomeAvg10: pressure?.someAvg10 == null ? unavailable("Linux memory PSI some.avg10 is unavailable.") : available(pressure.someAvg10),
8401
+ memoryPressureFullAvg10: pressure?.fullAvg10 == null ? unavailable("Linux memory PSI full.avg10 is unavailable.") : available(pressure.fullAvg10),
8402
+ memoryPressureFreePercent: unavailable("Linux reports memory pressure through PSI."),
8403
+ swapTotalBytes: swapTotalBytes == null ? unavailable("SwapTotal is unavailable.") : available(swapTotalBytes),
8404
+ swapUsedBytes: swapUsedBytes == null ? unavailable("Swap usage cannot be derived without SwapTotal and SwapFree.") : available(swapUsedBytes),
8405
+ swapUsedPercent: swapUsedBytes == null || swapTotalBytes == null ? unavailable("Swap utilization cannot be derived.") : available(percent(swapUsedBytes, swapTotalBytes)),
8406
+ swapActivityBytesPerMinute: swapCounters && pageSizeBytes != null ? computeSwapActivityBytesPerMinute(swapCounters, previous?.counters.swap, elapsedMs, pageSizeBytes) : unavailable("Linux swap activity counters are unavailable."),
8407
+ committedMemoryBytes: committedMemoryBytes == null ? unavailable("Committed_AS is unavailable.") : available(committedMemoryBytes),
8408
+ commitLimitBytes: commitLimitBytes == null ? unavailable("CommitLimit is unavailable.") : available(commitLimitBytes),
8409
+ virtualCommitmentPercent: committedMemoryBytes == null || commitLimitBytes == null ? unavailable("Virtual commitment cannot be derived.") : available(percent(committedMemoryBytes, commitLimitBytes)),
8410
+ counters: {
8411
+ cpu: cpuCounters,
8412
+ swap: swapCounters
8413
+ }
8414
+ };
8415
+ }
8416
+ };
8417
+ }
8418
+ var execFileAsync$1, KB, LINUX_MEMORY_PRESSURE_DEFAULTS, defaultAdapters;
8419
+ var init_linux = __esmMin((() => {
8420
+ init_types();
8421
+ execFileAsync$1 = promisify(execFile);
8422
+ KB = 1024;
8423
+ LINUX_MEMORY_PRESSURE_DEFAULTS = Object.freeze({
8424
+ someWarningAvg10: 5,
8425
+ fullCriticalAvg10: 1,
8426
+ swapActivityWarningBytesPerMinute: 64 * 1024 ** 2,
8427
+ swapActivityCriticalBytesPerMinute: 256 * 1024 ** 2
8428
+ });
8429
+ defaultAdapters = {
8430
+ readFile: (path) => readFile(path, "utf-8"),
8431
+ readPageSizeBytes: async () => {
8432
+ const { stdout } = await execFileAsync$1("getconf", ["PAGESIZE"], {
8433
+ encoding: "utf-8",
8434
+ timeout: 5e3
8435
+ });
8436
+ const value = Number(stdout.trim());
8437
+ if (!Number.isFinite(value) || value <= 0) throw new Error("getconf returned an invalid page size");
8438
+ return value;
8439
+ },
8440
+ now: () => Date.now()
8441
+ };
8442
+ }));
8443
+ //#endregion
8444
+ //#region ../../lib/system-health/collector.ts
8445
+ /**
8446
+ * Selects the platform host-health collector. Linux and macOS expose native
8447
+ * current-pressure signals; unsupported platforms return unavailable signals
8448
+ * so callers never mistake missing measurements for measured zeroes.
8449
+ */
8450
+ function buildProcessTreeIndex(rows) {
8451
+ const childrenByParent = /* @__PURE__ */ new Map();
8452
+ for (const row of rows) {
8453
+ const children = childrenByParent.get(row.ppid);
8454
+ if (children) children.push(row.pid);
8455
+ else childrenByParent.set(row.ppid, [row.pid]);
8456
+ }
8457
+ return { childrenByParent };
8458
+ }
8459
+ function collectDescendantPids(rootPid, index) {
8460
+ const descendants = /* @__PURE__ */ new Set();
8461
+ const queue = [rootPid];
8462
+ while (queue.length > 0) {
8463
+ const pid = queue.shift();
8464
+ if (pid == null || descendants.has(pid)) continue;
8465
+ descendants.add(pid);
8466
+ queue.push(...index.childrenByParent.get(pid) ?? []);
8467
+ }
8468
+ return descendants;
8469
+ }
8470
+ function createUnsupportedCollector(platform = "unsupported") {
8471
+ const signal = () => unavailable("Host health collection is unsupported on this platform.");
8472
+ return {
8473
+ platform,
8474
+ async sample() {
8475
+ return {
8476
+ platform,
8477
+ sampledAtMs: Date.now(),
8478
+ cpuPercent: signal(),
8479
+ loadAverage1m: signal(),
8480
+ loadPerCore1m: signal(),
8481
+ totalMemoryBytes: signal(),
8482
+ usedMemoryBytes: signal(),
8483
+ availableMemoryBytes: signal(),
8484
+ memoryUsedPercent: signal(),
8485
+ memoryPressureSomeAvg10: signal(),
8486
+ memoryPressureFullAvg10: signal(),
8487
+ memoryPressureFreePercent: signal(),
8488
+ swapTotalBytes: signal(),
8489
+ swapUsedBytes: signal(),
8490
+ swapUsedPercent: signal(),
8491
+ swapActivityBytesPerMinute: signal(),
8492
+ committedMemoryBytes: signal(),
8493
+ commitLimitBytes: signal(),
8494
+ virtualCommitmentPercent: signal(),
8495
+ counters: {
8496
+ cpu: null,
8497
+ swap: null
8498
+ }
8499
+ };
8500
+ }
8501
+ };
8502
+ }
8503
+ function createHostHealthCollector(selection = {}) {
8504
+ const platform = selection.platform ?? platform$1();
8505
+ if (platform === "linux") return selection.linux ?? createLinuxHostHealthCollector();
8506
+ if (platform === "darwin") return selection.darwin ?? createDarwinHostHealthCollector();
8507
+ return createUnsupportedCollector();
8508
+ }
8509
+ var init_collector = __esmMin((() => {
8510
+ init_darwin();
8511
+ init_linux();
8512
+ init_types();
8513
+ }));
8514
+ //#endregion
8515
+ //#region ../../lib/runtime-census.ts
8516
+ function parseRuntimeProcessTable(output) {
8517
+ return output.split("\n").flatMap((line) => {
8518
+ const match = line.trim().match(/^(\d+)\s+(\d+)\s+([0-9.]+)\s+(\d+)\s+(\S+)(?:\s+(.*))?$/);
8519
+ if (!match) return [];
8520
+ const pid = Number(match[1]);
8521
+ const ppid = Number(match[2]);
8522
+ const cpuPercent = Number(match[3]);
8523
+ const rssKb = Number(match[4]);
8524
+ if (![
8525
+ pid,
8526
+ ppid,
8527
+ cpuPercent,
8528
+ rssKb
8529
+ ].every(Number.isFinite)) return [];
8530
+ return [{
8531
+ pid,
8532
+ ppid,
8533
+ cpuPercent,
8534
+ rssBytes: rssKb * 1024,
8535
+ comm: match[5] ?? "",
8536
+ command: match[6] ?? match[5] ?? ""
8537
+ }];
8538
+ });
8539
+ }
8540
+ async function readRuntimeProcessTable() {
8541
+ const { stdout } = await execFileAsync("ps", ["-eo", "pid=,ppid=,pcpu=,rss=,comm=,args="], {
8542
+ encoding: "utf8",
8543
+ timeout: 1e4
8544
+ });
8545
+ return parseRuntimeProcessTable(String(stdout));
8546
+ }
8547
+ function buildRuntimeCensus(panes, processes, sampledAt, options) {
8548
+ const panesBySession = /* @__PURE__ */ new Map();
8549
+ for (const pane of panes) {
8550
+ const sessionPanes = panesBySession.get(pane.sessionName);
8551
+ if (sessionPanes) sessionPanes.push(pane);
8552
+ else panesBySession.set(pane.sessionName, [pane]);
8553
+ }
8554
+ const processesByPid = new Map(processes.map((process) => [process.pid, process]));
8555
+ return {
8556
+ sampledAt,
8557
+ available: options.tmuxAvailable,
8558
+ tmuxAvailable: options.tmuxAvailable,
8559
+ processAvailable: options.processAvailable,
8560
+ stale: options.stale ?? false,
8561
+ error: options.error ?? null,
8562
+ panes,
8563
+ sessionNames: new Set(panesBySession.keys()),
8564
+ panesBySession,
8565
+ processesByPid,
8566
+ processTree: buildProcessTreeIndex(processes)
8567
+ };
8568
+ }
8569
+ function createRuntimeCensusService(deps) {
8570
+ const now = deps.now ?? Date.now;
8571
+ const ttlMs = deps.ttlMs ?? 3e3;
8572
+ let snapshot = null;
8573
+ let inFlight = null;
8574
+ const refresh = () => {
8575
+ if (inFlight) return inFlight;
8576
+ inFlight = Promise.allSettled([deps.listPanes(), deps.readProcesses()]).then(([panesResult, processesResult]) => {
8577
+ const errors = [];
8578
+ if (panesResult.status === "rejected") errors.push(panesResult.reason instanceof Error ? panesResult.reason.message : String(panesResult.reason));
8579
+ if (processesResult.status === "rejected") errors.push(processesResult.reason instanceof Error ? processesResult.reason.message : String(processesResult.reason));
8580
+ snapshot = buildRuntimeCensus(panesResult.status === "fulfilled" ? panesResult.value : snapshot?.panes ?? [], processesResult.status === "fulfilled" ? processesResult.value : [...snapshot?.processesByPid.values() ?? []], now(), {
8581
+ tmuxAvailable: panesResult.status === "fulfilled",
8582
+ processAvailable: processesResult.status === "fulfilled",
8583
+ stale: errors.length > 0,
8584
+ error: errors.length > 0 ? errors.join("; ") : null
8585
+ });
8586
+ return snapshot;
8587
+ }).finally(() => {
8588
+ inFlight = null;
8589
+ });
8590
+ return inFlight;
8591
+ };
8592
+ return {
8593
+ get(options) {
8594
+ if (!options?.fresh && snapshot && now() - snapshot.sampledAt < ttlMs) return Promise.resolve(snapshot);
8595
+ return refresh();
8596
+ },
8597
+ peek() {
8598
+ return snapshot;
8599
+ },
8600
+ reset() {
8601
+ snapshot = null;
8602
+ inFlight = null;
8603
+ }
8604
+ };
8605
+ }
8606
+ function getRuntimeCensus(options) {
8607
+ return runtimeCensusService.get(options);
8608
+ }
8609
+ function refreshRuntimeCensus() {
8610
+ return runtimeCensusService.get({ fresh: true });
8611
+ }
8612
+ function getRuntimeCensusSnapshot() {
8613
+ return runtimeCensusService.peek();
8614
+ }
8615
+ function panePidsForSession(census, sessionName) {
8616
+ return (census.panesBySession.get(sessionName) ?? []).map((pane) => pane.panePid);
8617
+ }
8618
+ function descendantPidsForSession(census, sessionName) {
8619
+ const descendants = /* @__PURE__ */ new Set();
8620
+ for (const panePid of panePidsForSession(census, sessionName)) for (const pid of collectDescendantPids(panePid, census.processTree)) descendants.add(pid);
8621
+ return descendants;
8622
+ }
8623
+ function runtimeCensusHasHarnessProcess(census, sessionName) {
8624
+ if (!census.tmuxAvailable || !census.processAvailable) return true;
8625
+ const panePids = panePidsForSession(census, sessionName);
8626
+ if (panePids.length === 0) return false;
8627
+ for (const panePid of panePids) for (const pid of collectDescendantPids(panePid, census.processTree)) {
8628
+ const comm = census.processesByPid.get(pid)?.comm;
8629
+ if (comm && !KEEPALIVE_FOREGROUND_COMMANDS.has(comm)) return true;
8630
+ }
8631
+ return false;
8632
+ }
8633
+ var execFileAsync, KEEPALIVE_FOREGROUND_COMMANDS, runtimeCensusService;
8634
+ var init_runtime_census = __esmMin((() => {
8635
+ init_collector();
8636
+ execFileAsync = promisify(execFile);
8637
+ KEEPALIVE_FOREGROUND_COMMANDS = new Set([
8638
+ "sleep",
8639
+ "bash",
8640
+ "sh",
8641
+ "dash",
8642
+ "zsh",
8643
+ "ash"
8644
+ ]);
8645
+ runtimeCensusService = createRuntimeCensusService({
8646
+ listPanes: async () => {
8647
+ const { listAllPaneRecords } = await import("./tmux-DoThH6aj.js");
8648
+ return Effect.runPromise(listAllPaneRecords());
8649
+ },
8650
+ readProcesses: readRuntimeProcessTable
8651
+ });
8652
+ }));
8653
+ //#endregion
8043
8654
  //#region ../../lib/agents/queries.ts
8044
8655
  function listRunningAgentsSync() {
8045
- const tmuxSessions = listSessionsSync();
8046
- const tmuxNames = new Set(tmuxSessions.map((s) => s.name));
8656
+ const census = getRuntimeCensusSnapshot();
8657
+ const tmuxNames = census ? census.sessionNames : new Set(listSessionsSync().map((session) => session.name));
8658
+ const tmuxUnavailable = census?.tmuxAvailable === false;
8047
8659
  return listOverdeckAgentStatesSync().map((state) => {
8048
8660
  const normalizedId = normalizeAgentId(state.id);
8049
8661
  return {
8050
8662
  ...state,
8051
8663
  id: normalizedId,
8052
- tmuxActive: tmuxNames.has(normalizedId)
8664
+ tmuxActive: tmuxUnavailable || tmuxNames.has(normalizedId)
8053
8665
  };
8054
8666
  });
8055
8667
  }
@@ -8168,23 +8780,24 @@ var listRunningAgents;
8168
8780
  var init_queries = __esmMin((() => {
8169
8781
  init_agents();
8170
8782
  init_tmux();
8783
+ init_runtime_census();
8171
8784
  init_paths();
8172
8785
  init_agent_rollback_state();
8173
8786
  init_agent_state_sync();
8174
8787
  listRunningAgents = () => Effect.gen(function* () {
8175
- const tmuxSessions = yield* listSessions();
8176
- const tmuxNames = new Set(tmuxSessions.map((s) => s.name));
8788
+ const runtimeCensus = yield* Effect.promise(() => getRuntimeCensus());
8789
+ const tmuxNames = runtimeCensus.sessionNames;
8177
8790
  return listOverdeckAgentStatesSync().map((state) => {
8178
8791
  const normalizedId = normalizeAgentId(state.id);
8179
8792
  return {
8180
8793
  ...state,
8181
8794
  id: normalizedId,
8182
- tmuxActive: tmuxNames.has(normalizedId)
8795
+ tmuxActive: !runtimeCensus.tmuxAvailable || tmuxNames.has(normalizedId)
8183
8796
  };
8184
8797
  });
8185
8798
  });
8186
8799
  }));
8187
8800
  //#endregion
8188
- export { stopAgent as $, init_pty_token as $n, init_ohmypi_fifo as $t, buildCompactRecoverySeed as A, getAgentStateFilePath as An, init_spawn_prep as At, appendActivity as B, recordAgentFailure as Bn, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as Bt, init_slot_reconcile as C, clearAgentTroubled as Cn, probeTranscriptSince as Ct, detectCrashedAgents as D, getAgentDir as Dn, assertWorkspaceStackHealthyForSpawn as Dt, autoRecoverAgents as E, decideResumeGate as En, writeBridgeTokenSync as Et, isContextOverflowTail as F, isRole as Fn, providerDefaultHarnessSync as Ft, init_activity as G, saveAgentStateSync as Gn, getProviderAuthMode as Gt, getLatestSessionId as H, recordStartupSessionExit as Hn, getAgentRuntimeBaseCommand as Ht, init_messaging as I, markAgentRunning as In, resolveImplicitStaffing as It, init_ohmypi as J, setAgentYieldedSync as Jn, injectPiConversationMemory as Jt, saveSessionId as K, setAgentPaused as Kn, getRoleRuntimeBaseCommand as Kt, messageAgent as L, markAgentRunningState as Ln, resolveStaffing as Lt, resumeAgent as M, init_agent_state as Mn, transitionIssueToInProgress as Mt, init_context_overflow as N, isAgentPaused as Nn, transitionIssueToInReview as Nt, recoverAgent as O, getAgentResumeGateBlockReason as On, buildAgentLaunchConfig as Ot, isContextOverflowError as P, isAgentTroubled as Pn, init_staffing as Pt, init_termination as Q, readAgentHarnessModelRecordSync as Qn, piFifoPaths as Qt, init_operator_interventions as R, markAgentStoppedState as Rn, init_resolve_tier as Rt, init_tier_escalation as S, clearAgentPausedSync as Sn, init_transcript_landing as St, reconcileSlotState as T, clearYieldForResumeSync as Tn, init_bridge_token as Tt, getLatestSessionIdSync as U, resetAgentFailureCount as Un, getCodexLauncherFields as Ut, getActivity as V, recordAgentFailureSync as Vn, describeOhmypiSpawnFailure as Vt, getSessionId as W, saveAgentState as Wn, getOhmypiLauncherFields as Wt, spawnAgent as X, writeAgentStateJsonSync as Xn, waitForPromptReady as Xt, init_spawn as Y, wipeAgentStateDirs as Yn, roleAgentDefinitionPath as Yt, spawnRun as Z, init_agent_record_sync as Zn, init_pi_fifo as Zt, spawnTierSupervisor as _, writeChannelsBridgeMcpConfig as _n, init_codex_auth as _r, deliverAgentPermissionDecision as _t, listRunningAgentsSync as a, determineModel as an, normalizeAgentId as ar, getConcurrencyLimits as at, init_tier_feed as b, __testInternals as bn, parseOhmypiSessionCostResultSync as br, setAgentDeliveryMethod as bt, compactAtTierRunBoundary as c, getProviderTmuxFlags as cn, waitForReadySignal as cr, releaseSwarmSlot as ct, replayStandingAgent as d, getOpenAIAuthStatus as dn, init_runtime_state as dr, tryReserveSwarmSlot as dt, ohmypiFifoPaths as en, writePtyToken as er, stopAgentSync as et, shouldReplayCompactAtTierRunBoundary as f, init_openai_auth as fn, saveAgentRuntimeState as fr, workResumeSlotsAvailable as ft, shouldSupervise as g, dismissDevChannelsDialog as gn, checkCodexAuthStatus as gr, deliverAgentMessage as gt, loadPrdDraft as h, decideSupervisorForWorkAgent as hn, applyCodexAuthBurnFlag as hr, setCachedMemoryVerdict as ht, listRunningAgents as i, buildSpawnEnvForModel as in, isQualifiedAgentId as ir, emergencyBrake as it, init_resume as j, getAgentStateSync as jn, retrieveSpawnTimeMemoryContext as jt, restartAgent as k, getAgentState as kn, defaultRunWorkspace as kt, contextWindowForModel as l, init_provider_health as ln, getAgentRuntimeState as lr, resetPatrolDispatchBudget as lt, init_tier_supervisor as m, decideChannelsForWorkAgent as mn, init_agent_runtime as mr, init_memory_verdict_cache as mt, init_queries as n, init_claude_auth as nn, resolvePtySupervisorScriptPath as nr, countRunningSwarmSlotsForIssue as nt, warnOnBareNumericIssueIds as o, getProviderEnvForModel as on, resolveAgentTargetSync as or, init_concurrency as ot, deliverCommitForReview as p, buildDefaultResumeContinueMessage as pn, getAgentRuntimeSnapshot as pr, getCachedMemoryVerdict as pt, createOhmypiRuntimeSync as q, setAgentPausedSync as qn, init_runtime_command as qt, listAgentStates as r, buildCavemanExports as rn, clearReadySignal as rr, describeRunningAgents as rt, init_agents as s, getProviderExportsForModel as sn, waitForAgentIdle as sr, releaseAdvancingSlot as st, dropLegacyAgentStatesMissingRoleAsync as t, getClaudeAuthStatus as tn, init_pty_supervisor_locate as tr, countRunningAgents as tt, replayCrashedStandingAgent as u, validateProviderHealth as un, getAgentRuntimeStateSync as ur, tryReserveAdvancingSlot as ut, supervisorAgentId as v, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as vn, paneShowsCodexAuthBurn as vr, deliverInitialPromptWithRetry as vt, listSlotAssignments as w, clearAgentTroubledSync as wn, BRIDGE_TOKEN_HEADER as wt, decideEscalation as x, clearAgentPaused as xn, captureTranscriptUserRecordSnapshot as xt, broadcastCommit as y, SESSION_EXITED_BEFORE_KICKOFF as yn, init_ohmypi_parser as yr, deliverResumeMessageWithTranscriptConfirmation as yt, operatorInterventionEvent as z, markAgentTroubled as zn, resolveTier as zt };
8801
+ export { appendActivity as $, recordAgentFailure as $n, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as $t, spawnTierSupervisor as A, writeChannelsBridgeMcpConfig as An, init_codex_auth as Ar, deliverAgentPermissionDecision as At, detectCrashedAgents as B, getAgentDir as Bn, assertWorkspaceStackHealthyForSpawn as Bt, replayCrashedStandingAgent as C, validateProviderHealth as Cn, getAgentRuntimeStateSync as Cr, tryReserveAdvancingSlot as Ct, init_tier_supervisor as D, decideChannelsForWorkAgent as Dn, init_agent_runtime as Dr, init_memory_verdict_cache as Dt, deliverCommitForReview as E, buildDefaultResumeContinueMessage as En, getAgentRuntimeSnapshot as Er, getCachedMemoryVerdict as Et, init_tier_escalation as F, clearAgentPausedSync as Fn, init_transcript_landing as Ft, resumeAgent as G, init_agent_state as Gn, transitionIssueToInProgress as Gt, restartAgent as H, getAgentState as Hn, defaultRunWorkspace as Ht, init_slot_reconcile as I, clearAgentTroubled as In, probeTranscriptSince as It, isContextOverflowTail as J, isRole as Jn, providerDefaultHarnessSync as Jt, init_context_overflow as K, isAgentPaused as Kn, transitionIssueToInReview as Kt, listSlotAssignments as L, clearAgentTroubledSync as Ln, BRIDGE_TOKEN_HEADER as Lt, broadcastCommit as M, SESSION_EXITED_BEFORE_KICKOFF as Mn, init_ohmypi_parser as Mr, deliverResumeMessageWithTranscriptConfirmation as Mt, init_tier_feed as N, __testInternals as Nn, parseOhmypiSessionCostResultSync as Nr, setAgentDeliveryMethod as Nt, loadPrdDraft as O, decideSupervisorForWorkAgent as On, applyCodexAuthBurnFlag as Or, setCachedMemoryVerdict as Ot, decideEscalation as P, clearAgentPaused as Pn, captureTranscriptUserRecordSnapshot as Pt, operatorInterventionEvent as Q, markAgentTroubled as Qn, resolveTier as Qt, reconcileSlotState as R, clearYieldForResumeSync as Rn, init_bridge_token as Rt, contextWindowForModel as S, init_provider_health as Sn, getAgentRuntimeState as Sr, resetPatrolDispatchBudget as St, shouldReplayCompactAtTierRunBoundary as T, init_openai_auth as Tn, saveAgentRuntimeState as Tr, workResumeSlotsAvailable as Tt, buildCompactRecoverySeed as U, getAgentStateFilePath as Un, init_spawn_prep as Ut, recoverAgent as V, getAgentResumeGateBlockReason as Vn, buildAgentLaunchConfig as Vt, init_resume as W, getAgentStateSync as Wn, retrieveSpawnTimeMemoryContext as Wt, messageAgent as X, markAgentRunningState as Xn, resolveStaffing as Xt, init_messaging as Y, markAgentRunning as Yn, resolveImplicitStaffing as Yt, init_operator_interventions as Z, markAgentStoppedState as Zn, init_resolve_tier as Zt, init_linux as _, buildSpawnEnvForModel as _n, isQualifiedAgentId as _r, emergencyBrake as _t, listRunningAgentsSync as a, getRoleRuntimeBaseCommand as an, setAgentPaused as ar, saveSessionId as at, init_agents as b, getProviderExportsForModel as bn, waitForAgentIdle as br, releaseAdvancingSlot as bt, getRuntimeCensus as c, roleAgentDefinitionPath as cn, wipeAgentStateDirs as cr, init_spawn as ct, panePidsForSession as d, piFifoPaths as dn, readAgentHarnessModelRecordSync as dr, init_termination as dt, describeOhmypiSpawnFailure as en, recordAgentFailureSync as er, getActivity as et, refreshRuntimeCensus as f, init_ohmypi_fifo as fn, init_pty_token as fr, stopAgent as ft, LINUX_MEMORY_PRESSURE_DEFAULTS as g, buildCavemanExports as gn, clearReadySignal as gr, describeRunningAgents as gt, init_collector as h, init_claude_auth as hn, resolvePtySupervisorScriptPath as hr, countRunningSwarmSlotsForIssue as ht, listRunningAgents as i, getProviderAuthMode as in, saveAgentStateSync as ir, init_activity as it, supervisorAgentId as j, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as jn, paneShowsCodexAuthBurn as jr, deliverInitialPromptWithRetry as jt, shouldSupervise as k, dismissDevChannelsDialog as kn, checkCodexAuthStatus as kr, deliverAgentMessage as kt, getRuntimeCensusSnapshot as l, waitForPromptReady as ln, writeAgentStateJsonSync as lr, spawnAgent as lt, createHostHealthCollector as m, getClaudeAuthStatus as mn, init_pty_supervisor_locate as mr, countRunningAgents as mt, init_queries as n, getCodexLauncherFields as nn, resetAgentFailureCount as nr, getLatestSessionIdSync as nt, warnOnBareNumericIssueIds as o, init_runtime_command as on, setAgentPausedSync as or, createOhmypiRuntimeSync as ot, runtimeCensusHasHarnessProcess as p, ohmypiFifoPaths as pn, writePtyToken as pr, stopAgentSync as pt, isContextOverflowError as q, isAgentTroubled as qn, init_staffing as qt, listAgentStates as r, getOhmypiLauncherFields as rn, saveAgentState as rr, getSessionId as rt, descendantPidsForSession as s, injectPiConversationMemory as sn, setAgentYieldedSync as sr, init_ohmypi as st, dropLegacyAgentStatesMissingRoleAsync as t, getAgentRuntimeBaseCommand as tn, recordStartupSessionExit as tr, getLatestSessionId as tt, init_runtime_census as u, init_pi_fifo as un, init_agent_record_sync as ur, spawnRun as ut, DARWIN_MEMORY_PRESSURE_DEFAULTS as v, determineModel as vn, normalizeAgentId as vr, getConcurrencyLimits as vt, replayStandingAgent as w, getOpenAIAuthStatus as wn, init_runtime_state as wr, tryReserveSwarmSlot as wt, compactAtTierRunBoundary as x, getProviderTmuxFlags as xn, waitForReadySignal as xr, releaseSwarmSlot as xt, init_darwin as y, getProviderEnvForModel as yn, resolveAgentTargetSync as yr, init_concurrency as yt, autoRecoverAgents as z, decideResumeGate as zn, writeBridgeTokenSync as zt };
8189
8802
 
8190
- //# sourceMappingURL=queries-B5hl7lMQ.js.map
8803
+ //# sourceMappingURL=queries-6d7Cdtm7.js.map