@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,15 +1,17 @@
1
- import { At as init_record, En as findProjectByPathSync, Et as getIssueRecordPath, Lt as resolveProjectForIssue, On as findProjectByTeamSync, Q as resolveModel, f as loadConfigSync, kt as getProjectConfigFromWorkspacePath, t as init_config_yaml, vt as appendSessionEntrySync, wn as extractTeamPrefix, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
2
- import { D as killSession, J as BLANKED_PROVIDER_ENV, U as setOption, V as sessionExists, Z as init_child_env, m as exactPaneTarget, r as buildTmuxCommandString, s as createSession, w as init_tmux } from "./tmux-y1blSxks.js";
3
- import { a as getHarnessBehavior } from "./src-Dpq1yFIl.js";
4
- import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-OouGbJ7d.js";
5
- import { Gn as saveAgentStateSync, Ht as getAgentRuntimeBaseCommand, Ut as getCodexLauncherFields, Wt as getOhmypiLauncherFields, Yt as roleAgentDefinitionPath, jn as getAgentStateSync, jt as retrieveSpawnTimeMemoryContext, qt as init_runtime_command, s as init_agents, sn as getProviderExportsForModel, vt as deliverInitialPromptWithRetry } from "./queries-B5hl7lMQ.js";
6
- import { t as init_behavior } from "./behavior-Dg-D8eBG.js";
7
- import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-5DJRiovn.js";
8
- import { h as workspaceContextFile, o as init_layers } from "./layers-cZx7ibtV.js";
9
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-BGpO-OVM.js";
10
- import { c as ensureWorkspacePanDir, r as writeWorkspaceContext, t as init_pan_dir } from "./pan-dir-Rw17YjT1.js";
11
- import { r as init_workspace_manager, t as createWorkspace } from "./workspace-manager-DsN52IMG.js";
12
- import { n as renderPrompt, t as init_prompts } from "./prompts-CbqaVjbe.js";
1
+ import { Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Ot as init_record, Tn as init_projects, f as loadConfigSync, fn as findProjectByPathSync, mn as findProjectByTeamSync, t as init_config_yaml, tt as resolveModel, un as extractTeamPrefix, wt as getIssueRecordPath, yt as appendSessionEntrySync } from "./config-yaml-DvyMuOle.js";
2
+ import { $ as init_child_env, D as killSession, H as sessionExists, W as setOption, X as BLANKED_PROVIDER_ENV, m as exactPaneTarget, r as buildTmuxCommandString, s as createSession, w as init_tmux } from "./tmux-ftABRAmc.js";
3
+ import { o as getHarnessBehavior } from "./src-U7_kTPEE.js";
4
+ import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-DWdW7vUm.js";
5
+ import { Wn as getAgentStateSync, Wt as retrieveSpawnTimeMemoryContext, b as init_agents, bn as getProviderExportsForModel, cn as roleAgentDefinitionPath, ir as saveAgentStateSync, jt as deliverInitialPromptWithRetry, nn as getCodexLauncherFields, on as init_runtime_command, rn as getOhmypiLauncherFields, tn as getAgentRuntimeBaseCommand } from "./queries-6d7Cdtm7.js";
6
+ import { t as init_behavior } from "./behavior-B_-4EKF3.js";
7
+ import { N as ensureWorkspacePanDir } from "./io-B3_AHDfr.js";
8
+ import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-CHVm7bGT.js";
9
+ import { h as workspaceContextFile, o as init_layers } from "./layers-DzxSTGNA.js";
10
+ import { n as init_harness_binary, r as prepareHarnessLaunch } from "./harness-binary-CVio2m-u.js";
11
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-qHJBhy3Z.js";
12
+ import { r as writeWorkspaceContext, t as init_pan_dir } from "./pan-dir-DeVUgwA7.js";
13
+ import { r as init_workspace_manager, t as createWorkspace } from "./workspace-manager-hLUv3ADC.js";
14
+ import { n as renderPrompt, t as init_prompts } from "./prompts-Dp4Tpk39.js";
13
15
  import { join, resolve } from "node:path";
14
16
  import { Effect } from "effect";
15
17
  import { homedir } from "node:os";
@@ -37,6 +39,7 @@ init_agents();
37
39
  init_runtime_command();
38
40
  init_config_yaml();
39
41
  init_harness_resolve();
42
+ init_harness_binary();
40
43
  init_behavior();
41
44
  init_launcher_generator();
42
45
  init_child_env();
@@ -205,7 +208,7 @@ ${repos.map((r) => `| \`${r.name}/\` | Git worktree for ${r.path} |`).join("\n")
205
208
  let childStoriesSection = "";
206
209
  if (issue.childStories && issue.childStories.length > 0) {
207
210
  const storyLines = issue.childStories.map((s) => `- **${s.ref}**: ${s.title} (status: ${s.status})\n ${s.description || ""}`.trim());
208
- childStoriesSection = `\n## Child Stories\n\n**This Rally Feature has ${issue.childStories.length} child story(ies).** Reference these existing stories during planning — do NOT create new ones.\n\n${storyLines.join("\n\n")}\n\n**Cross-story dependencies:** If any child story must be completed before another, encode this as a \\\`blocks\\\` edge in the vBRIEF plan between the corresponding beads. Use \\\`informs\\\` for softer ordering hints.\n`;
211
+ childStoriesSection = `\n## Child Stories\n\n**This Rally Feature has ${issue.childStories.length} child story(ies).** Reference these existing stories during planning — do NOT create new ones.\n\n${storyLines.join("\n\n")}\n\n**Cross-story dependencies:** If any child story must be completed before another, encode this as a \\\`blocks\\\` edge in the xBRIEF plan between the corresponding beads. Use \\\`informs\\\` for softer ordering hints.\n`;
209
212
  }
210
213
  const effortSection = effort && effort !== "medium" ? `
211
214
  ## Planning Effort: ${effort === "high" ? "High (Deep Analysis)" : "Low (Quick Planning)"}
@@ -232,12 +235,12 @@ The user invoked \`pan plan --auto\`. Complete planning end-to-end without askin
232
235
  - When normal planning would ask a question, choose the most defensible default and record it in \`plan.autoDecisions[]\` as \`{ "summary": "...", "rationale": "..." }\`.
233
236
  - If the issue body, PRD, or comments list options and name a recommended/default/smallest acceptable option, choose that option and record it in \`plan.autoDecisions[]\`; do not ask the operator to choose among already-documented options.
234
237
  - Halt only for a genuine contradiction between authoritative inputs, such as the issue body requiring one behavior while a linked PRD requires the opposite. If that happens, write the contradiction into continue.json hazards and stop with a clear escalation message so the dashboard surfaces it.
235
- - Still produce the same complete vBRIEF and beads via \`pan plan finalize\` when no contradiction exists.
238
+ - Still produce the same complete xBRIEF and beads via \`pan plan finalize\` when no contradiction exists.
236
239
  ` : "";
237
240
  const probeSection = probe || effort === "high" ? `
238
241
  ## Probe Pass (required before finalize)
239
242
 
240
- After drafting the vBRIEF and BEFORE running \`pan plan finalize\`, attack your own plan:
243
+ After drafting the xBRIEF and BEFORE running \`pan plan finalize\`, attack your own plan:
241
244
  - For each item: what hidden assumption would make this item wrong? Name it or clear it.
242
245
  - Which item could produce two very different diffs that both look "done"? Tighten its
243
246
  ACs or set requiresInspection: true.
@@ -286,12 +289,12 @@ async function claudePlanningSystemPromptFiles(workspacePath, harness) {
286
289
  files.push(await ensureSessionContextBriefingFile());
287
290
  const behavior = getHarnessBehavior(harness);
288
291
  if (behavior.contextLayerKind === "pi") {
289
- const { piGlobalContextFile } = await import("./context-layers-YNpf6Q_I.js");
292
+ const { piGlobalContextFile } = await import("./context-layers-B3Nt58jl.js");
290
293
  const globalFile = piGlobalContextFile();
291
294
  if (existsSync(globalFile)) files.unshift(globalFile);
292
295
  }
293
296
  if (behavior.contextLayerKind === "codex") {
294
- const { codexGlobalContextFile } = await import("./context-layers-YNpf6Q_I.js");
297
+ const { codexGlobalContextFile } = await import("./context-layers-B3Nt58jl.js");
295
298
  const globalFile = codexGlobalContextFile();
296
299
  if (existsSync(globalFile)) files.unshift(globalFile);
297
300
  }
@@ -385,7 +388,7 @@ async function spawnPlanningSession(opts) {
385
388
  };
386
389
  }
387
390
  progress(1, "Creating workspace", workspaceCreated ? "Workspace ready" : "Already exists", "complete");
388
- progress(2, "Preparing planning environment", ".pan/ workspace artifacts");
391
+ progress(2, "Preparing planning environment", ".overdeck/ workspace artifacts");
389
392
  await Effect.runPromise(killSession(sessionName)).catch(() => {});
390
393
  const workspacePanPaths = await Effect.runPromise(ensureWorkspacePanDir(workspacePath));
391
394
  await Promise.all([
@@ -394,7 +397,7 @@ async function spawnPlanningSession(opts) {
394
397
  "notes"
395
398
  ].map((subdir) => mkdir(join(workspacePanPaths.panDir, subdir), { recursive: true })));
396
399
  if (existsSync(workspacePanPaths.continuePath)) {
397
- console.log("[start-planning] Clearing stale .pan/continue.json");
400
+ console.log("[start-planning] Clearing stale .overdeck/continue.json");
398
401
  await rm(workspacePanPaths.continuePath, { force: true });
399
402
  }
400
403
  if (shadowMode) {
@@ -418,6 +421,7 @@ async function spawnPlanningSession(opts) {
418
421
  }
419
422
  const planningModel = modelOverride || settingsModel;
420
423
  const effectiveHarness = await resolvePlanningSessionHarness(planningModel, opts.harness);
424
+ const harnessLaunch = await prepareHarnessLaunch(effectiveHarness);
421
425
  console.log(`[start-planning] Final planning model: ${planningModel} (override=${modelOverride || "(none)"} settings=${settingsModel} source=${modelSource}) harness=${effectiveHarness}`);
422
426
  const prdFiles = await discoverPrdFiles(workspacePath, issue.identifier);
423
427
  if (prdFiles.length > 0) {
@@ -469,6 +473,7 @@ async function spawnPlanningSession(opts) {
469
473
  sessionType: "plan"
470
474
  },
471
475
  providerExports,
476
+ extraEnvExports: [harnessLaunch.pathExport],
472
477
  promptFile,
473
478
  baseCommand: cmdWithArgs,
474
479
  appendSystemPromptFiles: await claudePlanningSystemPromptFiles(workspacePath, effectiveHarness),
@@ -541,4 +546,4 @@ async function spawnPlanningSession(opts) {
541
546
  //#endregion
542
547
  export { resolvePlanningSessionHarness as a, resolveAutoSpawnOnFinalize as i, buildPlanningPrompt as n, spawnPlanningSession as o, readAutoSpawnOnFinalizeFlag as r, writeFeatureContext as s, autoSpawnOnFinalizeFlagPath as t };
543
548
 
544
- //# sourceMappingURL=spawn-planning-session-AiUSsBnH.js.map
549
+ //# sourceMappingURL=spawn-planning-session-DWAorh2B.js.map
@@ -1,2 +1,2 @@
1
- import { o as spawnPlanningSession } from "./spawn-planning-session-AiUSsBnH.js";
1
+ import { o as spawnPlanningSession } from "./spawn-planning-session-DWAorh2B.js";
2
2
  export { spawnPlanningSession };
@@ -85,4 +85,4 @@ function cancelAllPendingCompletions() {
85
85
  //#endregion
86
86
  export { SpecialistCancelledError, SpecialistCompletionTimeoutError, SpecialistSupersededError, cancelAllPendingCompletions, hasPendingCompletion, reportSpecialistCompletion, waitForSpecialistCompletion };
87
87
 
88
- //# sourceMappingURL=specialist-completion-qOgqdqXH.js.map
88
+ //# sourceMappingURL=specialist-completion-BXhav38U.js.map
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Nn as getProjectSync, Q as resolveModel, ei as getOverdeckHome, f as loadConfigSync, t as init_config_yaml, ti as init_paths, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
3
- import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-C2OrLYKL.js";
2
+ import { Br as getOverdeckHome, Tn as init_projects, Vr as init_paths, f as loadConfigSync, t as init_config_yaml, tt as resolveModel, yn as getProjectSync } from "./config-yaml-DvyMuOle.js";
3
+ import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-H_5wHQZQ.js";
4
4
  import { Effect } from "effect";
5
5
  import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
6
6
  import { join } from "path";
@@ -114,7 +114,7 @@ function getDigestModel(projectKey, specialistType) {
114
114
  async function generateContextDigestPromise(projectKey, specialistType, options = {}) {
115
115
  ensureContextDirectory(projectKey, specialistType);
116
116
  const runCount = options.runCount ?? getContextRunsCount(projectKey);
117
- const { getRecentRunLogs } = await import("./specialist-logs-CSLtvPx6.js");
117
+ const { getRecentRunLogs } = await import("./specialist-logs-DJ3RzKxW.js");
118
118
  const recentRuns = getRecentRunLogs(projectKey, specialistType, runCount);
119
119
  if (recentRuns.length === 0 && !options.force) {
120
120
  console.log(`[specialist-context] No recent runs for ${projectKey}/${specialistType}, skipping digest generation`);
@@ -128,7 +128,7 @@ async function generateContextDigestPromise(projectKey, specialistType, options
128
128
  if (!existsSync(tempDir)) mkdirSync(tempDir, { recursive: true });
129
129
  const promptFile = join(tempDir, `digest-prompt-${Date.now()}.md`);
130
130
  writeFileSync(promptFile, prompt, "utf-8");
131
- const { getProviderEnvForModel } = await import("./agents-Czz6R57Z.js");
131
+ const { getProviderEnvForModel } = await import("./agents-FlIgQ3ql.js");
132
132
  const providerEnv = await getProviderEnvForModel(model);
133
133
  const envPrefix = Object.entries(providerEnv).map(([k, v]) => `${k}="${v}"`).join(" ");
134
134
  const permissionFlags = getClaudePermissionFlagsStringSync();
@@ -283,4 +283,4 @@ __esmMin((() => {
283
283
  }))();
284
284
  export { deleteContextDigest, generateContextDigest, getContextDigestPath, getContextDirectory, hasContextDigest, loadContextDigest, regenerateContextDigest, scheduleDigestGeneration };
285
285
 
286
- //# sourceMappingURL=specialist-context-gjj8Z4Ii.js.map
286
+ //# sourceMappingURL=specialist-context-DtrYvGJ-.js.map
@@ -1,4 +1,4 @@
1
- import { ei as getOverdeckHome, ti as init_paths } from "./config-yaml-Ciyp2mYe.js";
1
+ import { Br as getOverdeckHome, Vr as init_paths } from "./config-yaml-DvyMuOle.js";
2
2
  import { Effect } from "effect";
3
3
  import { existsSync } from "fs";
4
4
  import { join } from "path";
@@ -52,4 +52,4 @@ const updateSpecialistHandoffStatus = (issueId, toSpecialist, status, result) =>
52
52
  //#endregion
53
53
  export { updateSpecialistHandoffStatus };
54
54
 
55
- //# sourceMappingURL=specialist-handoff-logger-BsBNvVZv.js.map
55
+ //# sourceMappingURL=specialist-handoff-logger-C45ouoZ6.js.map
@@ -1,6 +1,6 @@
1
1
  import { a as __toCommonJS, n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Kn as projects_exports, ei as getOverdeckHome, ti as init_paths, zn as init_projects } from "./config-yaml-Ciyp2mYe.js";
3
- import { n as specialists_exports, t as init_specialists } from "./specialists-CYRwELzc.js";
2
+ import { Br as getOverdeckHome, Mn as projects_exports, Tn as init_projects, Vr as init_paths } from "./config-yaml-DvyMuOle.js";
3
+ import { n as specialists_exports, t as init_specialists } from "./specialists-DyFeedjn.js";
4
4
  import { Data, Effect } from "effect";
5
5
  import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, unlinkSync, writeFileSync } from "fs";
6
6
  import { basename, join } from "path";
@@ -380,4 +380,4 @@ __esmMin((() => {
380
380
  }))();
381
381
  export { MAX_LOG_SIZE, SpecialistLogError, appendToRunLog, appendToRunLogSync, checkLogSizeLimit, cleanupAllLogs, cleanupAllLogsSync, cleanupOldLogs, cleanupOldLogsSync, createRunLog, createRunLogSync, finalizeRunLog, finalizeRunLogSync, generateRunId, getRecentRunLogs, getRunLog, getRunLogPath, getRunLogSize, getRunLogSync, getRunsDirectory, isRunLogActive, listRunLogs, listRunLogsSync, parseLogMetadata };
382
382
 
383
- //# sourceMappingURL=specialist-logs-CSLtvPx6.js.map
383
+ //# sourceMappingURL=specialist-logs-DJ3RzKxW.js.map
@@ -1,2 +1,2 @@
1
- import { i as validateSpecialistAutoCompleteMetadata, n as _serverManagedMerges, r as firePostMergeLifecycle, t as specialistsRouteLayer } from "./specialists-DAegTvRt.js";
1
+ import { i as validateSpecialistAutoCompleteMetadata, n as _serverManagedMerges, r as firePostMergeLifecycle, t as specialistsRouteLayer } from "./specialists-JVO00bs7.js";
2
2
  export { _serverManagedMerges, specialistsRouteLayer as default, specialistsRouteLayer, firePostMergeLifecycle, validateSpecialistAutoCompleteMetadata };
@@ -0,0 +1,3 @@
1
+ import { $ as updateSpecialistMetadata, A as findSessionFile, B as getProjectSpecialistDir, C as listSpecialistsForProject, D as updateRunMetadata, E as updateProjectSpecialistMetadata, F as isInitialized, G as isProjectSpecialistActivelyRunning, H as getSpecialistMetadata, I as isRunning, J as parseReviewerSessionName, K as loadRegistry, L as REVIEWER_ROLES, M as getSpecialistState, N as getSpecialistStatus, O as updateRunStatus, P as initializeEnabledSpecialists, Q as saveRegistry, R as ensureProjectSpecialistDir, S as listProjectsWithSpecialists, T as updateContextTokens, U as getTmuxSessionName, V as getReviewerSessionName, W as initSpecialistsDirectory, X as pruneSpecialistRegistryEntriesForIssue, Y as parseSpecialistRegistryKey, Z as recordWake, _ as getEnabledSpecialists, a as sendFeedbackToAgent, b as incrementProjectRunCount, c as getGracePeriodState, d as signalSpecialistCompletion, et as buildSpecialistBaseCommand, f as startGracePeriod, g as getAllProjectSpecialistStatuses, h as enableSpecialist, i as getPendingFeedback, j as getAllSpecialistStatus, k as countContextTokens, l as pauseGracePeriod, m as disableSpecialist, o as exitGracePeriod, p as terminateSpecialist, q as makeSpecialistRegistryKey, r as getFeedbackStats, s as findActiveRegistryKey, t as init_specialists, tt as buildSpecialistCavemanExports, u as resumeGracePeriod, v as getProjectSpecialistMetadata, w as setCurrentRun, x as isEnabled, y as getRunMetadata, z as getAllSpecialists } from "./specialists-DyFeedjn.js";
2
+ init_specialists();
3
+ export { REVIEWER_ROLES, buildSpecialistBaseCommand, buildSpecialistCavemanExports, countContextTokens, disableSpecialist, enableSpecialist, ensureProjectSpecialistDir, exitGracePeriod, findActiveRegistryKey, findSessionFile, getAllProjectSpecialistStatuses, getAllSpecialistStatus, getAllSpecialists, getEnabledSpecialists, getFeedbackStats, getGracePeriodState, getPendingFeedback, getProjectSpecialistDir, getProjectSpecialistMetadata, getReviewerSessionName, getRunMetadata, getSpecialistMetadata, getSpecialistState, getSpecialistStatus, getTmuxSessionName, incrementProjectRunCount, initSpecialistsDirectory, initializeEnabledSpecialists, isEnabled, isInitialized, isProjectSpecialistActivelyRunning, isRunning, listProjectsWithSpecialists, listSpecialistsForProject, loadRegistry, makeSpecialistRegistryKey, parseReviewerSessionName, parseSpecialistRegistryKey, pauseGracePeriod, pruneSpecialistRegistryEntriesForIssue, recordWake, resumeGracePeriod, saveRegistry, sendFeedbackToAgent, setCurrentRun, signalSpecialistCompletion, startGracePeriod, terminateSpecialist, updateContextTokens, updateProjectSpecialistMetadata, updateRunMetadata, updateRunStatus, updateSpecialistMetadata };
@@ -1,9 +1,9 @@
1
1
  import { n as __esmMin, r as __exportAll } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Rr as OVERDECK_HOME, kr as AGENTS_DIR, ti as init_paths } from "./config-yaml-Ciyp2mYe.js";
3
- import { D as killSession, V as sessionExists, k as listPaneValues, w as init_tmux } from "./tmux-y1blSxks.js";
4
- import { a as readCavemanVariant, n as init_workspace } from "./workspace-DhTDA8nB.js";
5
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-BGpO-OVM.js";
6
- import { a as init_jsonl_parser, n as getAllSessionFilesSync, s as parseClaudeSessionSync } from "./jsonl-parser-DJV2eZUP.js";
2
+ import { Vr as init_paths, hr as AGENTS_DIR, wr as OVERDECK_HOME } from "./config-yaml-DvyMuOle.js";
3
+ import { A as listPaneValues, D as killSession, H as sessionExists, w as init_tmux } from "./tmux-ftABRAmc.js";
4
+ import { a as readCavemanVariant, n as init_workspace } from "./workspace-BVl4rihN.js";
5
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-qHJBhy3Z.js";
6
+ import { a as init_jsonl_parser, n as getAllSessionFilesSync, s as parseClaudeSessionSync } from "./jsonl-parser-Dhflo1SH.js";
7
7
  import { Effect } from "effect";
8
8
  import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
9
9
  import { basename, join } from "path";
@@ -11,9 +11,6 @@ import "crypto";
11
11
  import { exec } from "child_process";
12
12
  import { promisify } from "util";
13
13
  //#region ../../lib/cloister/specialists-spawn.ts
14
- /**
15
- * Cloister specialist spawn command and environment helpers.
16
- */
17
14
  function roleForSpecialistModel(specialistType) {
18
15
  const normalized = specialistType.replace(/-agent$/, "");
19
16
  if (normalized === "inspect") return {
@@ -31,7 +28,7 @@ function roleForSpecialistModel(specialistType) {
31
28
  return { role: "work" };
32
29
  }
33
30
  async function buildSpecialistBaseCommand(specialistType, model, sessionName) {
34
- const { getAgentRuntimeBaseCommand } = await import("./agents-Czz6R57Z.js");
31
+ const { getAgentRuntimeBaseCommand } = await import("./agents-FlIgQ3ql.js");
35
32
  const role = roleForSpecialistModel(specialistType).role;
36
33
  const harness = await resolveHarness({
37
34
  model,
@@ -39,15 +36,6 @@ async function buildSpecialistBaseCommand(specialistType, model, sessionName) {
39
36
  });
40
37
  return getAgentRuntimeBaseCommand(model, sessionName, specialistType.startsWith("pan-") ? specialistType : `pan-${specialistType.endsWith("-agent") ? specialistType.slice(0, -6) : specialistType}-agent`, harness);
41
38
  }
42
- function readRecordedClaudeSessionId(tmuxSession) {
43
- const sessionFile = join(AGENTS_DIR, tmuxSession, "session.id");
44
- if (!existsSync(sessionFile)) return null;
45
- try {
46
- return readFileSync(sessionFile, "utf-8").trim() || null;
47
- } catch {
48
- return null;
49
- }
50
- }
51
39
  /**
52
40
  * Build shell export lines for caveman compression for specialist agents.
53
41
  *
@@ -75,7 +63,6 @@ async function buildSpecialistCavemanExports(specialistType, workspacePath, conf
75
63
  return `export CAVEMAN_DEFAULT_MODE="${mode}"\nexport OVERDECK_CAVEMAN_VARIANT="${variant}"\n`;
76
64
  }
77
65
  var init_specialists_spawn = __esmMin((() => {
78
- init_paths();
79
66
  init_workspace();
80
67
  init_harness_resolve();
81
68
  promisify(exec);
@@ -95,6 +82,22 @@ var init_specialists_spawn = __esmMin((() => {
95
82
  *
96
83
  * Manages specialist metadata, registry persistence, and session naming.
97
84
  */
85
+ /**
86
+ * Get the directory for a project's specialist
87
+ */
88
+ function getProjectSpecialistDir(projectKey, specialistType) {
89
+ return join(SPECIALISTS_DIR, projectKey, specialistType);
90
+ }
91
+ /**
92
+ * Ensure per-project specialist directory structure exists
93
+ */
94
+ function ensureProjectSpecialistDir(projectKey, specialistType) {
95
+ const specialistDir = getProjectSpecialistDir(projectKey, specialistType);
96
+ const runsDir = join(specialistDir, "runs");
97
+ const contextDir = join(specialistDir, "context");
98
+ if (!existsSync(runsDir)) mkdirSync(runsDir, { recursive: true });
99
+ if (!existsSync(contextDir)) mkdirSync(contextDir, { recursive: true });
100
+ }
98
101
  function isProjectSpecialistActivelyRunning(runtimeState, fallbackRunning = false) {
99
102
  if (runtimeState?.state === "active") return true;
100
103
  if (runtimeState?.state === "idle" || runtimeState?.state === "suspended" || runtimeState?.state === "stopped" || runtimeState?.state === "waiting-on-human") return false;
@@ -205,27 +208,6 @@ function getAllSpecialists() {
205
208
  return loadRegistry().specialists ?? [];
206
209
  }
207
210
  /**
208
- * Check if a legacy specialist has a recorded Claude session.
209
- *
210
- * @param name - Specialist name
211
- * @returns True if the specialist has a recorded session id in its agent directory
212
- */
213
- function isInitialized(name) {
214
- return readRecordedClaudeSessionId(getTmuxSessionName(name)) !== null;
215
- }
216
- /**
217
- * Get the state of a specialist from recorded agent metadata.
218
- *
219
- * Note: This only checks whether a recorded Claude session exists, not if it's actually running.
220
- * Use getSpecialistStatus() for runtime state.
221
- *
222
- * @param name - Specialist name
223
- * @returns Specialist state
224
- */
225
- function getSpecialistState(name) {
226
- return isInitialized(name) ? "sleeping" : "uninitialized";
227
- }
228
- /**
229
211
  * Get tmux session name for a specialist
230
212
  *
231
213
  * @param name - Specialist name
@@ -333,7 +315,6 @@ function recordWake(name, sessionId) {
333
315
  var SPECIALISTS_DIR, REGISTRY_FILE, DEFAULT_SPECIALISTS, REVIEWER_ROLES;
334
316
  var init_specialists_registry = __esmMin((() => {
335
317
  init_paths();
336
- init_specialists_spawn();
337
318
  SPECIALISTS_DIR = join(OVERDECK_HOME, "specialists");
338
319
  REGISTRY_FILE = join(SPECIALISTS_DIR, "registry.json");
339
320
  DEFAULT_SPECIALISTS = [];
@@ -352,6 +333,36 @@ var init_specialists_registry = __esmMin((() => {
352
333
  *
353
334
  * Resolves specialist session state, token usage, and startup status.
354
335
  */
336
+ function readRecordedClaudeSessionId(tmuxSession) {
337
+ const sessionFile = join(AGENTS_DIR, tmuxSession, "session.id");
338
+ if (!existsSync(sessionFile)) return null;
339
+ try {
340
+ return readFileSync(sessionFile, "utf-8").trim() || null;
341
+ } catch {
342
+ return null;
343
+ }
344
+ }
345
+ /**
346
+ * Check if a legacy specialist has a recorded Claude session.
347
+ *
348
+ * @param name - Specialist name
349
+ * @returns True if the specialist has a recorded session id in its agent directory
350
+ */
351
+ function isInitialized(name) {
352
+ return readRecordedClaudeSessionId(getTmuxSessionName(name)) !== null;
353
+ }
354
+ /**
355
+ * Get the state of a specialist from recorded agent metadata.
356
+ *
357
+ * Note: This only checks whether a recorded Claude session exists, not if it's actually running.
358
+ * Use getSpecialistStatus() for runtime state.
359
+ *
360
+ * @param name - Specialist name
361
+ * @returns Specialist state
362
+ */
363
+ function getSpecialistState(name) {
364
+ return isInitialized(name) ? "sleeping" : "uninitialized";
365
+ }
355
366
  /**
356
367
  * Find JSONL file for a session ID
357
368
  *
@@ -424,7 +435,7 @@ async function getSpecialistStatus(name, projectKey) {
424
435
  const sessionId = readRecordedClaudeSessionId(getTmuxSessionName(name, projectKey));
425
436
  const running = await isRunning(name, projectKey);
426
437
  const contextTokens = countContextTokens(name);
427
- const { getAgentRuntimeStateSync } = await import("./agents-Czz6R57Z.js");
438
+ const { getAgentRuntimeStateSync } = await import("./agents-FlIgQ3ql.js");
428
439
  const runtimeState = getAgentRuntimeStateSync(getTmuxSessionName(name, projectKey));
429
440
  let state;
430
441
  if (runtimeState) switch (runtimeState.state) {
@@ -482,41 +493,20 @@ async function initializeEnabledSpecialists() {
482
493
  }
483
494
  var execAsync;
484
495
  var init_specialists_status = __esmMin((() => {
496
+ init_paths();
485
497
  init_jsonl_parser();
486
498
  init_tmux();
487
499
  init_specialists_registry();
488
- init_specialists_spawn();
489
500
  execAsync = promisify(exec);
490
501
  }));
491
502
  //#endregion
492
503
  //#region ../../lib/cloister/specialists-project-meta.ts
493
504
  /**
494
- * Cloister Specialist Project Metadata
495
- *
496
- * Manages per-project specialist run metadata and configuration.
497
- */
498
- /**
499
505
  * ===========================================================================
500
506
  * Per-Project Specialist Functions
501
507
  * ===========================================================================
502
508
  */
503
509
  /**
504
- * Get the directory for a project's specialist
505
- */
506
- function getProjectSpecialistDir(projectKey, specialistType) {
507
- return join(SPECIALISTS_DIR, projectKey, specialistType);
508
- }
509
- /**
510
- * Ensure per-project specialist directory structure exists
511
- */
512
- function ensureProjectSpecialistDir(projectKey, specialistType) {
513
- const specialistDir = getProjectSpecialistDir(projectKey, specialistType);
514
- const runsDir = join(specialistDir, "runs");
515
- const contextDir = join(specialistDir, "context");
516
- if (!existsSync(runsDir)) mkdirSync(runsDir, { recursive: true });
517
- if (!existsSync(contextDir)) mkdirSync(contextDir, { recursive: true });
518
- }
519
- /**
520
510
  * Get metadata for a specific (projectKey, registryKey) pair.
521
511
  * registryKey is either a plain specialistType (legacy) or a compound key from makeSpecialistRegistryKey().
522
512
  */
@@ -637,7 +627,7 @@ function listSpecialistsForProject(projectKey) {
637
627
  */
638
628
  async function getAllProjectSpecialistStatuses() {
639
629
  const registry = loadRegistry();
640
- const { getAgentRuntimeStateSync } = await import("./agents-Czz6R57Z.js");
630
+ const { getAgentRuntimeStateSync } = await import("./agents-FlIgQ3ql.js");
641
631
  const results = [];
642
632
  for (const [projectKey, specialists] of Object.entries(registry.projects)) for (const [registryKey, metadata] of Object.entries(specialists)) {
643
633
  const { specialistType, issueId, role } = parseSpecialistRegistryKey(registryKey);
@@ -834,7 +824,7 @@ async function signalSpecialistCompletion(projectKey, specialistType, result, is
834
824
  const resolvedTmuxSession = metadata.tmuxSession ?? getTmuxSessionName(specialistType, projectKey, issueId);
835
825
  updateRunStatus(projectKey, registryKey, result.status);
836
826
  if (metadata.currentRun) try {
837
- const { finalizeRunLogSync } = await import("./specialist-logs-CSLtvPx6.js");
827
+ const { finalizeRunLogSync } = await import("./specialist-logs-DJ3RzKxW.js");
838
828
  finalizeRunLogSync(projectKey, specialistType, metadata.currentRun, {
839
829
  status: result.status,
840
830
  notes: result.notes
@@ -844,7 +834,7 @@ async function signalSpecialistCompletion(projectKey, specialistType, result, is
844
834
  }
845
835
  setCurrentRun(projectKey, registryKey, null);
846
836
  updateRunMetadata(projectKey, registryKey, { currentActivity: null });
847
- import("./agents-Czz6R57Z.js").then(({ saveAgentRuntimeState }) => {
837
+ import("./agents-FlIgQ3ql.js").then(({ saveAgentRuntimeState }) => {
848
838
  saveAgentRuntimeState(resolvedTmuxSession, {
849
839
  state: "idle",
850
840
  lastActivity: (/* @__PURE__ */ new Date()).toISOString(),
@@ -875,7 +865,7 @@ async function terminateSpecialist(projectKey, specialistType, issueId) {
875
865
  console.error(`[specialist] Failed to kill tmux session ${tmuxSession}:`, error);
876
866
  }
877
867
  if (metadata.currentRun) {
878
- const { finalizeRunLogSync } = await import("./specialist-logs-CSLtvPx6.js");
868
+ const { finalizeRunLogSync } = await import("./specialist-logs-DJ3RzKxW.js");
879
869
  try {
880
870
  finalizeRunLogSync(projectKey, specialistType, metadata.currentRun, {
881
871
  status: metadata.lastRunStatus || "incomplete",
@@ -889,12 +879,12 @@ async function terminateSpecialist(projectKey, specialistType, issueId) {
889
879
  updateRunMetadata(projectKey, registryKey, { currentActivity: null });
890
880
  const key = `${projectKey}-${specialistType}`;
891
881
  gracePeriodStates.delete(key);
892
- const { saveAgentRuntimeState } = await import("./agents-Czz6R57Z.js");
882
+ const { saveAgentRuntimeState } = await import("./agents-FlIgQ3ql.js");
893
883
  saveAgentRuntimeState(tmuxSession, {
894
884
  state: "suspended",
895
885
  lastActivity: (/* @__PURE__ */ new Date()).toISOString()
896
886
  });
897
- const { scheduleDigestGeneration } = await import("./specialist-context-gjj8Z4Ii.js");
887
+ const { scheduleDigestGeneration } = await import("./specialist-context-DtrYvGJ-.js");
898
888
  scheduleDigestGeneration(projectKey, specialistType);
899
889
  scheduleLogCleanup(projectKey, specialistType);
900
890
  }
@@ -907,8 +897,8 @@ async function terminateSpecialist(projectKey, specialistType, issueId) {
907
897
  function scheduleLogCleanup(projectKey, specialistType) {
908
898
  Promise.resolve().then(async () => {
909
899
  try {
910
- const { cleanupOldLogsSync } = await import("./specialist-logs-CSLtvPx6.js");
911
- const { getSpecialistRetention } = await import("./projects-IRHJIPYC.js");
900
+ const { cleanupOldLogsSync } = await import("./specialist-logs-DJ3RzKxW.js");
901
+ const { getSpecialistRetention } = await import("./projects-9SkRpES9.js");
912
902
  const retention = getSpecialistRetention(projectKey);
913
903
  const deleted = cleanupOldLogsSync(projectKey, specialistType, {
914
904
  maxDays: retention.max_days,
@@ -958,7 +948,7 @@ async function sendFeedbackToAgent(feedback) {
958
948
  }
959
949
  const agentSession = `agent-${toIssueId.toLowerCase()}`;
960
950
  const feedbackMessage = formatFeedbackForAgent(fullFeedback);
961
- const { writeFeedbackFile } = await import("./feedback-writer-DDQNV8uc.js");
951
+ const { writeFeedbackFile } = await import("./feedback-writer-qmiMbqTZ.js");
962
952
  const specialist = {
963
953
  "review-agent": "review-agent",
964
954
  "test-agent": "test-agent",
@@ -977,7 +967,7 @@ async function sendFeedbackToAgent(feedback) {
977
967
  return false;
978
968
  }
979
969
  try {
980
- const { messageAgent } = await import("./agents-Czz6R57Z.js");
970
+ const { messageAgent } = await import("./agents-FlIgQ3ql.js");
981
971
  await messageAgent(agentSession, `SPECIALIST FEEDBACK: ${fromSpecialist} reported ${feedback.feedbackType.toUpperCase()} for ${toIssueId}.\n\nMUST READ: ${fileResult.filePath}\n\nUse your Read tool to open this file, read every line, then address the feedback and continue working. Do NOT stop at the prompt.`);
982
972
  console.log(`[specialist] Sent feedback from ${fromSpecialist} to ${agentSession} (file: ${fileResult.filePath})`);
983
973
  return true;
@@ -1135,6 +1125,6 @@ var init_specialists = __esmMin((() => {
1135
1125
  init_specialists_feedback();
1136
1126
  }));
1137
1127
  //#endregion
1138
- export { updateSpecialistMetadata as $, updateRunStatus as A, getSpecialistMetadata as B, isEnabled as C, updateContextTokens as D, setCurrentRun as E, initializeEnabledSpecialists as F, isProjectSpecialistActivelyRunning as G, getTmuxSessionName as H, isRunning as I, parseReviewerSessionName as J, loadRegistry as K, REVIEWER_ROLES as L, findSessionFile as M, getAllSpecialistStatus as N, updateProjectSpecialistMetadata as O, getSpecialistStatus as P, saveRegistry as Q, getAllSpecialists as R, incrementProjectRunCount as S, listSpecialistsForProject as T, initSpecialistsDirectory as U, getSpecialistState as V, isInitialized as W, pruneSpecialistRegistryEntriesForIssue as X, parseSpecialistRegistryKey as Y, recordWake as Z, getAllProjectSpecialistStatuses as _, sendFeedbackToAgent as a, getProjectSpecialistMetadata as b, getGracePeriodState as c, signalSpecialistCompletion as d, buildSpecialistBaseCommand as et, startGracePeriod as f, ensureProjectSpecialistDir as g, enableSpecialist as h, getPendingFeedback as i, countContextTokens as j, updateRunMetadata as k, pauseGracePeriod as l, disableSpecialist as m, specialists_exports as n, exitGracePeriod as o, terminateSpecialist as p, makeSpecialistRegistryKey as q, getFeedbackStats as r, findActiveRegistryKey as s, init_specialists as t, buildSpecialistCavemanExports as tt, resumeGracePeriod as u, getEnabledSpecialists as v, listProjectsWithSpecialists as w, getRunMetadata as x, getProjectSpecialistDir as y, getReviewerSessionName as z };
1128
+ export { updateSpecialistMetadata as $, findSessionFile as A, getProjectSpecialistDir as B, listSpecialistsForProject as C, updateRunMetadata as D, updateProjectSpecialistMetadata as E, isInitialized as F, isProjectSpecialistActivelyRunning as G, getSpecialistMetadata as H, isRunning as I, parseReviewerSessionName as J, loadRegistry as K, REVIEWER_ROLES as L, getSpecialistState as M, getSpecialistStatus as N, updateRunStatus as O, initializeEnabledSpecialists as P, saveRegistry as Q, ensureProjectSpecialistDir as R, listProjectsWithSpecialists as S, updateContextTokens as T, getTmuxSessionName as U, getReviewerSessionName as V, initSpecialistsDirectory as W, pruneSpecialistRegistryEntriesForIssue as X, parseSpecialistRegistryKey as Y, recordWake as Z, getEnabledSpecialists as _, sendFeedbackToAgent as a, incrementProjectRunCount as b, getGracePeriodState as c, signalSpecialistCompletion as d, buildSpecialistBaseCommand as et, startGracePeriod as f, getAllProjectSpecialistStatuses as g, enableSpecialist as h, getPendingFeedback as i, getAllSpecialistStatus as j, countContextTokens as k, pauseGracePeriod as l, disableSpecialist as m, specialists_exports as n, exitGracePeriod as o, terminateSpecialist as p, makeSpecialistRegistryKey as q, getFeedbackStats as r, findActiveRegistryKey as s, init_specialists as t, buildSpecialistCavemanExports as tt, resumeGracePeriod as u, getProjectSpecialistMetadata as v, setCurrentRun as w, isEnabled as x, getRunMetadata as y, getAllSpecialists as z };
1139
1129
 
1140
- //# sourceMappingURL=specialists-CYRwELzc.js.map
1130
+ //# sourceMappingURL=specialists-DyFeedjn.js.map