@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,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Or as init_errors, _r as ConfigError, br as GitHubApiError, vr as FsError } from "./config-yaml-Ciyp2mYe.js";
2
+ import { ir as FsError, mr as init_errors, or as GitHubApiError, rr as ConfigError } from "./config-yaml-DvyMuOle.js";
3
3
  import { Effect } from "effect";
4
4
  import { existsSync, readFileSync } from "fs";
5
5
  import { join } from "path";
@@ -41,7 +41,7 @@ function withConcurrencyLimitPromise(tasks, max) {
41
41
  /** Cache settled values for a TTL while preserving single-flight for pending work regardless of age. */
42
42
  function createSettledTtlPromiseCache(ttlMs, now = Date.now) {
43
43
  const entries = /* @__PURE__ */ new Map();
44
- return (key, load) => {
44
+ const get = (key, load) => {
45
45
  const cached = entries.get(key);
46
46
  if (cached && (cached.settledAt === null || now() - cached.settledAt < ttlMs)) return cached.promise;
47
47
  const entry = {
@@ -56,6 +56,14 @@ function createSettledTtlPromiseCache(ttlMs, now = Date.now) {
56
56
  });
57
57
  return entry.promise;
58
58
  };
59
+ get.invalidate = (key) => {
60
+ if (key === void 0) {
61
+ for (const [k, entry] of entries) if (entry.settledAt !== null) entries.delete(k);
62
+ return;
63
+ }
64
+ if (entries.get(key)?.settledAt !== null) entries.delete(key);
65
+ };
66
+ return get;
59
67
  }
60
68
  /** Schedule promise work through one limiter shared by every caller of the returned function. */
61
69
  function createPromiseConcurrencyLimiter(max) {
@@ -645,4 +653,4 @@ var init_github_app = __esmMin((() => {
645
653
  //#endregion
646
654
  export { withConcurrencyLimit as A, postOverdeckTestsStatus as C, createPromiseConcurrencyLimiter as D, verifyAppCanMerge as E, createSettledTtlPromiseCache as O, parsePullRequestRef as S, reportCommitStatus as T, listOpenIssuesWithLabelsPromise as _, getCiCheckRunsState as a, loadGitHubAppConfig as b, getIssueStatePromise as c, getPullRequestState as d, init_github_app as f, listOpenIssuesWithLabels as g, listIssuesWithAnyLabelPromise as h, getBotIdentity as i, withConcurrencyLimitPromise as j, init_concurrency as k, getMergeBackendStatus as l, isIntegrationPermissionError as m, generateInstallationToken as n, getCiCheckRunsStatePromise as o, isGitHubAppConfigured as p, getAppStatus as r, getIssueState as s, configureWorkspaceForBot as t, getPullRequestHeadState as u, listPullRequestsForHead as v, refreshWorkspaceToken as w, mergePullRequestWithApp as x, listPullRequestsForHeadPromise as y };
647
655
 
648
- //# sourceMappingURL=github-app-B3yfECo8.js.map
656
+ //# sourceMappingURL=github-app-CMBdIFBQ.js.map
@@ -1,3 +1,3 @@
1
- import { C as postOverdeckTestsStatus, E as verifyAppCanMerge, S as parsePullRequestRef, T as reportCommitStatus, _ as listOpenIssuesWithLabelsPromise, a as getCiCheckRunsState, b as loadGitHubAppConfig, c as getIssueStatePromise, d as getPullRequestState, f as init_github_app, g as listOpenIssuesWithLabels, h as listIssuesWithAnyLabelPromise, i as getBotIdentity, l as getMergeBackendStatus, m as isIntegrationPermissionError, n as generateInstallationToken, o as getCiCheckRunsStatePromise, p as isGitHubAppConfigured, r as getAppStatus, s as getIssueState, t as configureWorkspaceForBot, u as getPullRequestHeadState, v as listPullRequestsForHead, w as refreshWorkspaceToken, x as mergePullRequestWithApp, y as listPullRequestsForHeadPromise } from "./github-app-B3yfECo8.js";
1
+ import { C as postOverdeckTestsStatus, E as verifyAppCanMerge, S as parsePullRequestRef, T as reportCommitStatus, _ as listOpenIssuesWithLabelsPromise, a as getCiCheckRunsState, b as loadGitHubAppConfig, c as getIssueStatePromise, d as getPullRequestState, f as init_github_app, g as listOpenIssuesWithLabels, h as listIssuesWithAnyLabelPromise, i as getBotIdentity, l as getMergeBackendStatus, m as isIntegrationPermissionError, n as generateInstallationToken, o as getCiCheckRunsStatePromise, p as isGitHubAppConfigured, r as getAppStatus, s as getIssueState, t as configureWorkspaceForBot, u as getPullRequestHeadState, v as listPullRequestsForHead, w as refreshWorkspaceToken, x as mergePullRequestWithApp, y as listPullRequestsForHeadPromise } from "./github-app-CMBdIFBQ.js";
2
2
  init_github_app();
3
3
  export { configureWorkspaceForBot, generateInstallationToken, getAppStatus, getBotIdentity, getCiCheckRunsState, getCiCheckRunsStatePromise, getIssueState, getIssueStatePromise, getMergeBackendStatus, getPullRequestHeadState, getPullRequestState, isGitHubAppConfigured, isIntegrationPermissionError, listIssuesWithAnyLabelPromise, listOpenIssuesWithLabels, listOpenIssuesWithLabelsPromise, listPullRequestsForHead, listPullRequestsForHeadPromise, loadGitHubAppConfig, mergePullRequestWithApp, parsePullRequestRef, postOverdeckTestsStatus, refreshWorkspaceToken, reportCommitStatus, verifyAppCanMerge };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-DSFZBdXP.js";
2
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-B4itFzDo.js";
3
3
  import { a as RateLimited, c as TrackerNotConfigured, d as init_typed_errors, r as IssueNotFound, s as TrackerApiError } from "./typed-errors-2BTMxkZq.js";
4
4
  import { Context, Effect, Layer } from "effect";
5
5
  //#region services/github-client.ts
@@ -241,4 +241,4 @@ var init_github_client = __esmMin((() => {
241
241
  //#endregion
242
242
  export { init_github_client as i, GitHubClientLive as n, GitHubClientOptionalLive as r, GitHubClient as t };
243
243
 
244
- //# sourceMappingURL=github-client-Dslipypz.js.map
244
+ //# sourceMappingURL=github-client--XVlDpwM.js.map
@@ -1,3 +1,3 @@
1
- import { i as init_github_client, n as GitHubClientLive, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-Dslipypz.js";
1
+ import { i as init_github_client, n as GitHubClientLive, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client--XVlDpwM.js";
2
2
  init_github_client();
3
3
  export { GitHubClient, GitHubClientLive, GitHubClientOptionalLive };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-B3yfECo8.js";
2
+ import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CMBdIFBQ.js";
3
3
  import { Effect } from "effect";
4
4
  import { execFile } from "node:child_process";
5
5
  import { promisify } from "node:util";
@@ -41,4 +41,4 @@ var init_github_pr_lookup = __esmMin((() => {
41
41
  //#endregion
42
42
  export { init_github_pr_lookup as n, lookupPullRequestNumberForBranch as r, githubPrLookupSource as t };
43
43
 
44
- //# sourceMappingURL=github-pr-lookup-DBP0YHMr.js.map
44
+ //# sourceMappingURL=github-pr-lookup-BRbDW-qk.js.map
@@ -0,0 +1,106 @@
1
+ import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
+ import { delimiter, dirname, isAbsolute, join, resolve } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { constants } from "node:fs";
5
+ import { access } from "node:fs/promises";
6
+ import { execFile } from "node:child_process";
7
+ import { promisify } from "node:util";
8
+ //#region ../../lib/harness-binary.ts
9
+ async function firstExecutable(directories, binary, accessExecutable) {
10
+ const seen = /* @__PURE__ */ new Set();
11
+ for (const directory of directories) {
12
+ if (!directory) continue;
13
+ const candidate = join(directory, binary);
14
+ if (seen.has(candidate)) continue;
15
+ seen.add(candidate);
16
+ try {
17
+ await accessExecutable(candidate);
18
+ return candidate;
19
+ } catch {}
20
+ }
21
+ return null;
22
+ }
23
+ /** Resolve an executable to an absolute, executable path outside the server's inherited PATH alone. */
24
+ async function resolveExecutable(binary, options = {}) {
25
+ if (!SAFE_BINARY_NAME.test(binary)) throw new Error(`Invalid executable name: ${binary}`);
26
+ const cwd = options.cwd ?? process.cwd();
27
+ const home = resolve(cwd, options.home ?? homedir());
28
+ const pathValue = options.pathValue ?? process.env["PATH"] ?? "";
29
+ const accessExecutable = options.accessExecutable ?? ((path) => access(path, constants.X_OK));
30
+ const runCommand = options.runCommand ?? defaultRunCommand;
31
+ const pathMatch = await firstExecutable(pathValue.split(delimiter).filter(Boolean).map((directory) => isAbsolute(directory) ? directory : resolve(cwd, directory)), binary, accessExecutable);
32
+ if (pathMatch) return pathMatch;
33
+ const fixedMatch = await firstExecutable([
34
+ join(home, ".local", "bin"),
35
+ join(home, ".claude", "local"),
36
+ join(home, ".npm-global", "bin")
37
+ ], binary, accessExecutable);
38
+ if (fixedMatch) return fixedMatch;
39
+ try {
40
+ const npmPrefix = (await runCommand("npm", ["prefix", "-g"])).trim().split("\n")[0]?.trim();
41
+ if (npmPrefix) {
42
+ const npmMatch = await firstExecutable([join(resolve(cwd, npmPrefix), "bin")], binary, accessExecutable);
43
+ if (npmMatch) return npmMatch;
44
+ }
45
+ } catch {}
46
+ const bunMatch = await firstExecutable([join(home, ".bun", "bin")], binary, accessExecutable);
47
+ if (bunMatch) return bunMatch;
48
+ if (options.allowLoginShell !== false) {
49
+ const shell = options.shell ?? process.env["SHELL"];
50
+ if (shell) try {
51
+ const shellResult = (await runCommand(shell, ["-lc", `command -v ${binary}`])).trim().split("\n")[0]?.trim();
52
+ if (shellResult && isAbsolute(shellResult)) {
53
+ await accessExecutable(shellResult);
54
+ return shellResult;
55
+ }
56
+ } catch {}
57
+ }
58
+ return null;
59
+ }
60
+ function harnessBinaryName(harness) {
61
+ return HARNESS_BINARY_BY_RUNTIME[harness];
62
+ }
63
+ async function resolveHarnessBinary(harness, options) {
64
+ return resolveExecutable(harnessBinaryName(harness), options);
65
+ }
66
+ async function requireHarnessBinary(harness, options) {
67
+ const binary = harnessBinaryName(harness);
68
+ const resolved = await resolveExecutable(binary, options);
69
+ if (resolved) return resolved;
70
+ const harnessName = harness === "claude-code" ? "Claude Code" : harness === "ohmypi" ? "OhMyPi" : "Codex CLI";
71
+ throw new Error(`${harnessName} executable "${binary}" was not found. Install ${harnessName} or add its installation directory to PATH, then restart Overdeck. No terminal session was created.`);
72
+ }
73
+ function shellQuote(value) {
74
+ return `'${value.replace(/'/g, `'\\''`)}'`;
75
+ }
76
+ function harnessPathExport(resolvedBinary) {
77
+ return `export PATH=${shellQuote(dirname(resolvedBinary))}:"$PATH"`;
78
+ }
79
+ async function prepareHarnessLaunch(harness, options) {
80
+ const binaryPath = await requireHarnessBinary(harness, options);
81
+ return {
82
+ binaryPath,
83
+ pathExport: harnessPathExport(binaryPath)
84
+ };
85
+ }
86
+ var execFileAsync, SAFE_BINARY_NAME, HARNESS_BINARY_BY_RUNTIME, defaultRunCommand;
87
+ var init_harness_binary = __esmMin((() => {
88
+ execFileAsync = promisify(execFile);
89
+ SAFE_BINARY_NAME = /^[A-Za-z0-9._+-]+$/;
90
+ HARNESS_BINARY_BY_RUNTIME = {
91
+ "claude-code": "claude",
92
+ ohmypi: "omp",
93
+ codex: "codex"
94
+ };
95
+ defaultRunCommand = async (command, args) => {
96
+ const { stdout } = await execFileAsync(command, args, {
97
+ encoding: "utf-8",
98
+ timeout: 1e4
99
+ });
100
+ return stdout;
101
+ };
102
+ }));
103
+ //#endregion
104
+ export { resolveHarnessBinary as a, resolveExecutable as i, init_harness_binary as n, prepareHarnessLaunch as r, harnessBinaryName as t };
105
+
106
+ //# sourceMappingURL=harness-binary-CVio2m-u.js.map
@@ -1,18 +1,16 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { A as init_harness_policy, B as init_providers, I as getBuiltInDefaultHarness, O as canUseHarnessSync, f as loadConfigSync, k as canUseModelWithAuthSync, t as init_config_yaml, z as getProviderForModelSync } from "./config-yaml-Ciyp2mYe.js";
3
- import { exec } from "child_process";
4
- import { promisify } from "util";
2
+ import { A as canUseHarnessSync, H as init_providers, M as init_harness_policy, R as getBuiltInDefaultHarness, V as getProviderForModelSync, f as loadConfigSync, j as canUseModelWithAuthSync, t as init_config_yaml } from "./config-yaml-DvyMuOle.js";
3
+ import { a as resolveHarnessBinary, n as init_harness_binary, t as harnessBinaryName } from "./harness-binary-CVio2m-u.js";
5
4
  //#region ../../lib/harness-resolve.ts
6
5
  async function getProviderAuthModeForModel(model) {
7
- const { getProviderAuthMode } = await import("./agents-Czz6R57Z.js");
6
+ const { getProviderAuthMode } = await import("./agents-FlIgQ3ql.js");
8
7
  return getProviderAuthMode(model);
9
8
  }
10
9
  async function hasHarnessBinary(harness) {
11
- const binary = BINARY_BY_HARNESS[harness];
12
- if (!binary) return true;
10
+ if (harness === "claude-code") return true;
13
11
  const cached = harnessAvailabilityCache.get(harness);
14
12
  if (cached) return cached;
15
- const check = execAsync(`command -v ${binary}`).then(() => true, () => false);
13
+ const check = resolveHarnessBinary(harness).then((resolved) => resolved !== null);
16
14
  harnessAvailabilityCache.set(harness, check);
17
15
  return check;
18
16
  }
@@ -40,23 +38,19 @@ async function resolveHarness(input) {
40
38
  return "claude-code";
41
39
  }
42
40
  if (!await hasHarnessBinary(winner)) {
43
- const binary = BINARY_BY_HARNESS[winner];
41
+ const binary = harnessBinaryName(winner);
44
42
  if (builtInHarness && builtInHarness !== "claude-code") throw new HarnessResolutionError(`Harness ${winner} (provider default for ${input.model}) has no installed ${binary} binary at spawn — refusing to silently fall back to claude-code. Install ${binary} (check its PATH) and retry.`);
45
43
  console.warn(`harness ${winner} requested for ${provider}, but ${binary} is not installed — falling back to native claude-code`);
46
44
  return "claude-code";
47
45
  }
48
46
  return winner;
49
47
  }
50
- var execAsync, BINARY_BY_HARNESS, harnessAvailabilityCache, builtInDefaultNoticeProviders, HarnessResolutionError;
48
+ var harnessAvailabilityCache, builtInDefaultNoticeProviders, HarnessResolutionError;
51
49
  var init_harness_resolve = __esmMin((() => {
52
50
  init_harness_policy();
51
+ init_harness_binary();
53
52
  init_providers();
54
53
  init_config_yaml();
55
- execAsync = promisify(exec);
56
- BINARY_BY_HARNESS = {
57
- ohmypi: "omp",
58
- codex: "codex"
59
- };
60
54
  harnessAvailabilityCache = /* @__PURE__ */ new Map();
61
55
  builtInDefaultNoticeProviders = /* @__PURE__ */ new Set();
62
56
  HarnessResolutionError = class extends Error {
@@ -69,4 +63,4 @@ var init_harness_resolve = __esmMin((() => {
69
63
  //#endregion
70
64
  export { resolveHarness as n, init_harness_resolve as t };
71
65
 
72
- //# sourceMappingURL=harness-resolve-BGpO-OVM.js.map
66
+ //# sourceMappingURL=harness-resolve-qHJBhy3Z.js.map
@@ -1,4 +1,4 @@
1
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-DN2wSxle.js";
1
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
2
2
  //#region ../../lib/overdeck/health-events.ts
3
3
  init_infra();
4
4
  function parseMetadata(row) {
@@ -66,4 +66,4 @@ function getHealthHistory(agentId, startTime, endTime) {
66
66
  //#endregion
67
67
  export { getLatestHealthEvent as n, writeHealthEvent as r, getHealthHistory as t };
68
68
 
69
- //# sourceMappingURL=health-events-CZGZ5I-A.js.map
69
+ //# sourceMappingURL=health-events-C9B8y1Hm.js.map
@@ -1,2 +1,2 @@
1
- import { n as getLatestHealthEvent, r as writeHealthEvent, t as getHealthHistory } from "./health-events-CZGZ5I-A.js";
1
+ import { n as getLatestHealthEvent, r as writeHealthEvent, t as getHealthHistory } from "./health-events-C9B8y1Hm.js";
2
2
  export { getHealthHistory, getLatestHealthEvent, writeHealthEvent };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Or as init_errors, kr as AGENTS_DIR, ti as init_paths, vr as FsError } from "./config-yaml-Ciyp2mYe.js";
2
+ import { Vr as init_paths, hr as AGENTS_DIR, ir as FsError, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
3
  import { Effect } from "effect";
4
4
  import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "fs";
5
5
  import { join } from "path";
@@ -294,4 +294,4 @@ var init_hooks = __esmMin((() => {
294
294
  //#endregion
295
295
  export { pushToHookSync as _, collectMail as a, sendMail as b, generateFixedPointPromptSync as c, initHook as d, initHookSync as f, pushToHook as g, popFromHookSync as h, clearHookSync as i, getHook as l, popFromHook as m, checkHookSync as n, collectMailSync as o, init_hooks as p, clearHook as r, generateFixedPointPrompt as s, checkHook as t, getHookSync as u, reorderHookItems as v, sendMailSync as x, reorderHookItemsSync as y };
296
296
 
297
- //# sourceMappingURL=hooks-CoNscX84.js.map
297
+ //# sourceMappingURL=hooks-DUXw8A0-.js.map
@@ -1,3 +1,3 @@
1
- import { _ as pushToHookSync, a as collectMail, b as sendMail, c as generateFixedPointPromptSync, d as initHook, f as initHookSync, g as pushToHook, h as popFromHookSync, i as clearHookSync, l as getHook, m as popFromHook, n as checkHookSync, o as collectMailSync, p as init_hooks, r as clearHook, s as generateFixedPointPrompt, t as checkHook, u as getHookSync, v as reorderHookItems, x as sendMailSync, y as reorderHookItemsSync } from "./hooks-CoNscX84.js";
1
+ import { _ as pushToHookSync, a as collectMail, b as sendMail, c as generateFixedPointPromptSync, d as initHook, f as initHookSync, g as pushToHook, h as popFromHookSync, i as clearHookSync, l as getHook, m as popFromHook, n as checkHookSync, o as collectMailSync, p as init_hooks, r as clearHook, s as generateFixedPointPrompt, t as checkHook, u as getHookSync, v as reorderHookItems, x as sendMailSync, y as reorderHookItemsSync } from "./hooks-DUXw8A0-.js";
2
2
  init_hooks();
3
3
  export { checkHook, checkHookSync, clearHook, clearHookSync, collectMail, collectMailSync, generateFixedPointPrompt, generateFixedPointPromptSync, getHook, getHookSync, initHook, initHookSync, popFromHook, popFromHookSync, pushToHook, pushToHookSync, reorderHookItems, reorderHookItemsSync, sendMail, sendMailSync };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-BAAsAv-o.js";
2
+ import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-cEGcO6UT.js";
3
3
  import { Data, Effect } from "effect";
4
4
  //#region ../../lib/hume.ts
5
5
  /**
@@ -189,4 +189,4 @@ var init_hume = __esmMin((() => {
189
189
  //#endregion
190
190
  export { init_hume as i, createHumeConfig as n, deleteHumeConfig as r, HumeApiError as t };
191
191
 
192
- //# sourceMappingURL=hume-DSJt5eA_.js.map
192
+ //# sourceMappingURL=hume-BEq0bUDg.js.map
@@ -0,0 +1,3 @@
1
+ import { i as init_hume, r as deleteHumeConfig } from "./hume-BEq0bUDg.js";
2
+ init_hume();
3
+ export { deleteHumeConfig };
@@ -1,2 +1,2 @@
1
- import { t as handleAgentLifecycleEventForIdleStack } from "./idle-stack-reaper-BfL8HqYy.js";
1
+ import { t as handleAgentLifecycleEventForIdleStack } from "./idle-stack-reaper-w1ISSlhs.js";
2
2
  export { handleAgentLifecycleEventForIdleStack };
@@ -1,5 +1,5 @@
1
1
  import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
2
- import { j as listSessionNames, w as init_tmux } from "./tmux-y1blSxks.js";
2
+ import { M as listSessionNames, w as init_tmux } from "./tmux-ftABRAmc.js";
3
3
  import { Effect } from "effect";
4
4
  import { exec } from "child_process";
5
5
  import { promisify } from "util";
@@ -132,4 +132,4 @@ async function reconcileIdleWorkspaceStacks(deps = {}) {
132
132
  //#endregion
133
133
  export { reconcileIdleWorkspaceStacks as n, handleAgentLifecycleEventForIdleStack as t };
134
134
 
135
- //# sourceMappingURL=idle-stack-reaper-BfL8HqYy.js.map
135
+ //# sourceMappingURL=idle-stack-reaper-w1ISSlhs.js.map
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { w as init_tmux } from "./tmux-y1blSxks.js";
2
+ import { w as init_tmux } from "./tmux-ftABRAmc.js";
3
3
  import "effect";
4
4
  import "fs";
5
5
  import "path";
@@ -95,4 +95,4 @@ var init_in_flight_guard = __esmMin((() => {}));
95
95
  //#endregion
96
96
  export { init_review_convoy_liveness as a, init_review_monitor as c, evaluateReviewConvoyLiveness as i, createPromiseCoalescer as n, reviewTimestampMs as o, init_in_flight_guard as r, REVIEW_SUB_ROLES as s, createInFlightGuard as t };
97
97
 
98
- //# sourceMappingURL=in-flight-guard-tVGiI5ee.js.map
98
+ //# sourceMappingURL=in-flight-guard-aQ1IxeI3.js.map
@@ -1,8 +1,8 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { At as init_record, Et as getIssueRecordPath, Ft as readIssueRecordSync, ei as getOverdeckHome, ri as packageRoot, ti as init_paths$1 } from "./config-yaml-Ciyp2mYe.js";
2
+ import { Br as getOverdeckHome, Nt as readIssueRecordSync, Ot as init_record, Ur as packageRoot, Vr as init_paths$1, wt as getIssueRecordPath } from "./config-yaml-DvyMuOle.js";
3
3
  import { n as openDatabase, t as init_driver$1 } from "./driver-CKVGi51s.js";
4
- import { n as updateIssueRecord, t as init_record_update } from "./record-update-RviRDSNs.js";
5
- import { D as killSession, V as sessionExists, _ as getAgentSessions, w as init_tmux } from "./tmux-y1blSxks.js";
4
+ import { n as updateIssueRecord, t as init_record_update } from "./record-update-Dq0t2uBG.js";
5
+ import { D as killSession, H as sessionExists, _ as getAgentSessions, w as init_tmux } from "./tmux-ftABRAmc.js";
6
6
  import { dirname, isAbsolute, join } from "node:path";
7
7
  import { Context, Effect, Layer, Queue, Stream } from "effect";
8
8
  import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -5093,4 +5093,4 @@ var init_infra = __esmMin((() => {
5093
5093
  //#endregion
5094
5094
  export { init_paths as A, inArray as C, sql as D, like as E, OVERDECK_MIGRATION_PATH as O, gte as S, isNull as T, integer as _, EventBus as a, and as b, Records as c, getOverdeckDatabaseSync as d, init_infra as f, real as g, text as h, DbLive as i, getOverdeckDatabasePath as k, Tmux as l, sqliteTable as m, CostArchiveLive as n, EventBusLive as o, init_sqlite_core as p, Db as r, Forge as s, CostArchive as t, TmuxLive as u, init_drizzle_orm as v, isNotNull as w, eq as x, desc as y };
5095
5095
 
5096
- //# sourceMappingURL=infra-DN2wSxle.js.map
5096
+ //# sourceMappingURL=infra-CzaSOgul.js.map
@@ -1,10 +1,10 @@
1
1
  import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as resolveProjectFromIssueSync, Gn as loadProjectsConfigSync, mr as require_dist, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
3
- import { d as resolveRagRunsFile, f as resolveStatusFile, i as init_paths, r as ensureParentDir } from "./paths-FP8v3lTz.js";
4
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features--fOza5g5.js";
5
- import { a as isMemoryKnowledgeIndexEnabled, i as init_settings, o as isMemoryPromptTimeInjectionEnabled } from "./settings-DP2OYLXL.js";
6
- import { n as extractWithProviderPolicy, t as init_providers } from "./providers-d3pwXGVE.js";
7
- import { n as init_fts_db, r as runMemoryFtsStatement } from "./fts-db-6ponMie2.js";
2
+ import { Tn as init_projects, er as require_dist, jn as loadProjectsConfigSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
3
+ import { d as resolveRagRunsFile, f as resolveStatusFile, i as init_paths, r as ensureParentDir } from "./paths-_zEts6wc.js";
4
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-Dhxz-wLc.js";
5
+ import { a as isMemoryKnowledgeIndexEnabled, i as init_settings, o as isMemoryPromptTimeInjectionEnabled } from "./settings-BZ5m1UCl.js";
6
+ import { n as extractWithProviderPolicy, t as init_providers } from "./providers-DV7ec8l7.js";
7
+ import { n as init_fts_db, r as runMemoryFtsStatement } from "./fts-db-CKgg0VKg.js";
8
8
  import { Result, Schema } from "effect";
9
9
  import { extname, isAbsolute, join, relative, resolve } from "path";
10
10
  import { createHash, randomUUID } from "crypto";
@@ -815,4 +815,4 @@ var init_injection = __esmMin((() => {
815
815
  //#endregion
816
816
  export { init_query_expansion as a, clearQueryExpansionCache as i, init_injection as n, buildMatchQuery as o, injectPromptTimeMemory as r, init_search as s, PROMPT_TIME_MEMORY_BUDGETS as t };
817
817
 
818
- //# sourceMappingURL=injection-DtlT8Akv.js.map
818
+ //# sourceMappingURL=injection-DZ0PfYa4.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_injection, r as injectPromptTimeMemory } from "./injection-DtlT8Akv.js";
1
+ import { n as init_injection, r as injectPromptTimeMemory } from "./injection-DZ0PfYa4.js";
2
2
  init_injection();
3
3
  export { injectPromptTimeMemory };
@@ -1,11 +1,12 @@
1
- import { B as init_providers, C as init_tier_table, F as clearCredentialFileAuthSync, Or as init_errors, Q as resolveModel, T as resolveTieredExecutionEnabled, U as setupCredentialFileAuthSync, f as loadConfigSync, t as init_config_yaml, wr as ProcessSpawnError, yr as GitError, z as getProviderForModelSync } from "./config-yaml-Ciyp2mYe.js";
2
- import { D as killSession, V as sessionExists, s as createSession, w as init_tmux } from "./tmux-y1blSxks.js";
3
- import { c as init_review_status, y as setReviewStatusSync } from "./review-status-CCgPVK1h.js";
4
- import { Wn as saveAgentState, _ as spawnTierSupervisor, fr as saveAgentRuntimeState, h as loadPrdDraft, m as init_tier_supervisor, on as getProviderEnvForModel, p as deliverCommitForReview, s as init_agents, v as supervisorAgentId } from "./queries-B5hl7lMQ.js";
5
- import { m as readWorkspacePlanSync, o as init_io } from "./io-BiM-7Zsx.js";
6
- import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-5DJRiovn.js";
7
- import { a as init_claude_permissions, i as getClaudePermissionFlagsSync } from "./claude-permissions-C2OrLYKL.js";
8
- import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-Dfw3QDyZ.js";
1
+ import { D as resolveTieredExecutionEnabled, G as setupCredentialFileAuthSync, H as init_providers, L as clearCredentialFileAuthSync, T as init_tier_table, V as getProviderForModelSync, ar as GitError, f as loadConfigSync, mr as init_errors, t as init_config_yaml, tt as resolveModel, ur as ProcessSpawnError } from "./config-yaml-DvyMuOle.js";
2
+ import { D as killSession, H as sessionExists, s as createSession, w as init_tmux } from "./tmux-ftABRAmc.js";
3
+ import { b as setReviewStatusSync, l as init_review_status } from "./review-status-A7quS5KJ.js";
4
+ import { A as spawnTierSupervisor, D as init_tier_supervisor, E as deliverCommitForReview, O as loadPrdDraft, Tr as saveAgentRuntimeState, b as init_agents, j as supervisorAgentId, rr as saveAgentState, yn as getProviderEnvForModel } from "./queries-6d7Cdtm7.js";
5
+ import { m as readWorkspacePlanSync, o as init_io } from "./io-B3_AHDfr.js";
6
+ import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-CHVm7bGT.js";
7
+ import { a as init_claude_permissions, i as getClaudePermissionFlagsSync } from "./claude-permissions-H_5wHQZQ.js";
8
+ import { n as init_harness_binary, r as prepareHarnessLaunch } from "./harness-binary-CVio2m-u.js";
9
+ import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-zhdvQicO.js";
9
10
  import { Effect } from "effect";
10
11
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
11
12
  import { dirname, join } from "path";
@@ -146,6 +147,7 @@ function getCurrentHead(workspacePath) {
146
147
  */
147
148
  init_errors();
148
149
  init_review_status();
150
+ init_harness_binary();
149
151
  init_launcher_generator();
150
152
  init_tmux();
151
153
  init_config_yaml();
@@ -163,7 +165,7 @@ async function buildInspectPromptPromise(context) {
163
165
  if (!existsSync(templatePath)) throw new Error(`Inspect agent prompt template not found at ${templatePath}`);
164
166
  const template = readFileSync(templatePath, "utf-8");
165
167
  const item = readWorkspacePlanSync(context.workspace)?.plan.items.find((candidate) => candidate.id === context.itemId);
166
- if (!item) throw new Error(`Item ${context.itemId} requires a readable vBRIEF entry in ${context.workspace}.`);
168
+ if (!item) throw new Error(`Item ${context.itemId} requires a readable xBRIEF entry in ${context.workspace}.`);
167
169
  const itemDescription = `**Title:** ${item.title}\n\n**Action:** ${item.narrative?.Action ?? "No narrative provided."}`;
168
170
  const diffBase = await Effect.runPromise(getDiffBase(context.projectKey, context.issueId, context.workspace));
169
171
  const diffStats = await Effect.runPromise(getDiffStats(context.workspace, diffBase));
@@ -177,7 +179,7 @@ async function routeInspectToStandingSupervisorIfEnabled(context) {
177
179
  const doc = readWorkspacePlanSync(context.workspace);
178
180
  if (!resolveTieredExecutionEnabled(tiered, doc?.plan.metadata)) return void 0;
179
181
  const item = doc?.plan.items.find((candidate) => candidate.id === context.itemId);
180
- if (!doc || !item) throw new Error(`Standing supervisor inspection for ${context.issueId} item ${context.itemId} requires a readable vBRIEF item in ${context.workspace}.`);
182
+ if (!doc || !item) throw new Error(`Standing supervisor inspection for ${context.issueId} item ${context.itemId} requires a readable xBRIEF item in ${context.workspace}.`);
181
183
  const agentId = supervisorAgentId(context.issueId);
182
184
  if (!await Effect.runPromise(sessionExists(agentId))) await spawnTierSupervisor(context.issueId, tiered.supervisor, { workspace: context.workspace });
183
185
  setReviewStatusSync(context.issueId.toUpperCase(), {
@@ -220,6 +222,7 @@ async function spawnInspectAgentPromise(context, opts = {}) {
220
222
  }
221
223
  const supervisorRoute = await routeInspectToStandingSupervisorIfEnabled(context);
222
224
  if (supervisorRoute) return supervisorRoute;
225
+ const harnessLaunch = await prepareHarnessLaunch("claude-code");
223
226
  if (await Effect.runPromise(sessionExists(tmuxSession))) await Effect.runPromise(killSession(tmuxSession)).catch(() => {});
224
227
  const prompt = await Effect.runPromise(buildInspectPrompt(context));
225
228
  setReviewStatusSync(context.issueId.toUpperCase(), {
@@ -246,6 +249,7 @@ async function spawnInspectAgentPromise(context, opts = {}) {
246
249
  workingDir: context.workspace,
247
250
  setTerminalEnv: true,
248
251
  unsetProviderEnv: true,
252
+ extraEnvExports: [harnessLaunch.pathExport],
249
253
  providerExports: Object.entries(providerEnv).map(([k, v]) => `export ${k}='${v.replace(/'/g, "'\"'\"'")}'`).join("\n") + (Object.keys(providerEnv).length ? "\n" : ""),
250
254
  overdeckEnv: {
251
255
  agentId: tmuxSession,
@@ -337,4 +341,4 @@ function onInspectComplete(projectKey, issueId, itemId, status, workspacePath) {
337
341
  //#endregion
338
342
  export { onInspectComplete as n, spawnInspectAgent as r, buildInspectPrompt as t };
339
343
 
340
- //# sourceMappingURL=inspect-agent-DKByUS_F.js.map
344
+ //# sourceMappingURL=inspect-agent-DJKLWcVT.js.map
@@ -0,0 +1,2 @@
1
+ import { n as onInspectComplete } from "./inspect-agent-DJKLWcVT.js";
2
+ export { onInspectComplete };
@@ -1,5 +1,5 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Or as init_errors, ei as getOverdeckHome, ti as init_paths, vr as FsError } from "./config-yaml-Ciyp2mYe.js";
2
+ import { Br as getOverdeckHome, Vr as init_paths, ir as FsError, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
3
  import { join } from "node:path";
4
4
  import { Effect } from "effect";
5
5
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -101,4 +101,4 @@ var init_internal_token = __esmMin((() => {
101
101
  //#endregion
102
102
  export { getInternalToken as a, ensureInternalTokenSync as i, _resetInternalTokenCacheForTests as n, getInternalTokenSync as o, ensureInternalToken as r, init_internal_token as s, INTERNAL_TOKEN_HEADER as t };
103
103
 
104
- //# sourceMappingURL=internal-token-DhfFiwW7.js.map
104
+ //# sourceMappingURL=internal-token-Bb4XeV2x.js.map
@@ -1,3 +1,3 @@
1
- import { a as getInternalToken, i as ensureInternalTokenSync, n as _resetInternalTokenCacheForTests, o as getInternalTokenSync, r as ensureInternalToken, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DhfFiwW7.js";
1
+ import { a as getInternalToken, i as ensureInternalTokenSync, n as _resetInternalTokenCacheForTests, o as getInternalTokenSync, r as ensureInternalToken, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-Bb4XeV2x.js";
2
2
  init_internal_token();
3
3
  export { INTERNAL_TOKEN_HEADER, _resetInternalTokenCacheForTests, ensureInternalToken, ensureInternalTokenSync, getInternalToken, getInternalTokenSync };