@overdeck/desktop 0.45.12 → 0.45.13

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 (323) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +33 -0
  2. package/package.json +7 -2
  3. package/server/{acceptance-criteria-1LHgD9vg.js → acceptance-criteria-CfujPRrz.js} +2 -2
  4. package/server/{advancing-selfheal-BqsLWqEM.js → advancing-selfheal-Bn5QiLtn.js} +4 -4
  5. package/server/{agent-gc-CUb52n7s.js → agent-gc-Cl9Nm0Zu.js} +3 -3
  6. package/server/{agent-state-D-moNwhA.js → agent-state-C6Rm6FPR.js} +1 -1
  7. package/server/{agent-state-service-BzESvLOf.js → agent-state-service-JhFzYCP_.js} +5 -5
  8. package/server/{agent-state-service-BaZH7sXJ.js → agent-state-service-U8feBf8t.js} +1 -1
  9. package/server/{agents-C4kZ8a2r.js → agents-CxbuBjID.js} +1 -1
  10. package/server/{agents-B5LfpLPv.js → agents-DqQa4Dq_.js} +88 -64
  11. package/server/{archive-planning-oX1pj6nY.js → archive-planning-CPitEZo4.js} +3 -3
  12. package/server/{archive-planning-BbZe-8IK.js → archive-planning-DmpT1_14.js} +1 -1
  13. package/server/{artifact-index-jobs-DGr6bxev.js → artifact-index-jobs-sMnNtPhy.js} +2 -2
  14. package/server/{auto-commit-CGQlb4rV.js → auto-commit-wZ9X7Isd.js} +1 -1
  15. package/server/{backlog-auto-trigger-BlJHikOm.js → backlog-auto-trigger-Cf9C8fwD.js} +2 -2
  16. package/server/{bd-process-lock-i3CYMS-B.js → bd-process-lock-D1aJxeYv.js} +2 -2
  17. package/server/{beads-BNU-fb48.js → beads-CivpXztb.js} +1 -1
  18. package/server/{beads-DD7fYCl5.js → beads-DRoj6-e1.js} +4 -4
  19. package/server/{beads-query-e6oku4P5.js → beads-query-tOsAYP5h.js} +2 -2
  20. package/server/{behavior-CPf0pbOt.js → behavior-D3d2mVyD.js} +3 -3
  21. package/server/{briefing-freshness-B2FdLwIv.js → briefing-freshness-BL3Q6p7R.js} +4 -4
  22. package/server/{checkpoint-manager-JryW6MpM.js → checkpoint-manager-DCxjQvP_.js} +2 -2
  23. package/server/{checkpoint-manager-eFgaMMu4.js → checkpoint-manager-j5URlFY7.js} +1 -1
  24. package/server/checkpoint-worker.js +1 -1
  25. package/server/{checkpoints-qvOqvMuC.js → checkpoints-BoX1H2Hf.js} +2 -2
  26. package/server/{checkpoints-BK17oicz.js → checkpoints-Bu_M_Q9W.js} +1 -1
  27. package/server/claude-hooks-provision-D-jGXmu1.js +360 -0
  28. package/server/{claude-permissions-B6bWGh9d.js → claude-permissions-DxIjkOVl.js} +2 -2
  29. package/server/{claude-settings-overlay-BPdhTPjo.js → claude-settings-overlay-5b9X2S0C.js} +1 -1
  30. package/server/{claude-settings-overlay-CRyyKKXQ.js → claude-settings-overlay-BPDS6GfE.js} +2 -2
  31. package/server/cli-CqgiSAU8.js +3 -0
  32. package/server/{cli-B75AieAM.js → cli-s7bPWy-E.js} +9 -9
  33. package/server/{cliproxy-CCzwuSNe.js → cliproxy-BituqWtR.js} +2 -2
  34. package/server/{cliproxy-DOQf66G9.js → cliproxy-D3sHB0sI.js} +1 -1
  35. package/server/{close-issue-_X3MXJyG.js → close-issue-CrBE7voz.js} +4 -4
  36. package/server/{closed-issue-reaper-CLR7ClsO.js → closed-issue-reaper-BRQBc7Xa.js} +1 -1
  37. package/server/{closed-issue-reaper-BsUfBSjM.js → closed-issue-reaper-DX9mYUji.js} +9 -9
  38. package/server/{codex-CY-QRuU9.js → codex-Bi1ITSOo.js} +1 -1
  39. package/server/{codex-B4KEpX5V.js → codex-CO0HrK3j.js} +5 -5
  40. package/server/{compact-beads-cZds2MTr.js → compact-beads-CrA8-k10.js} +1 -1
  41. package/server/{compact-beads-uEDccC76.js → compact-beads-DUkCUFxA.js} +3 -3
  42. package/server/{config-DARrpYWA.js → config-B4_d7z7z.js} +1 -1
  43. package/server/{config-8sjaU6jZ.js → config-DsCxzjXK.js} +2 -2
  44. package/server/{config-yaml-ClpGgrf6.js → config-yaml-C_djSurJ.js} +2 -2
  45. package/server/{conflict-gate-Ds9_2yjd.js → conflict-gate-CpOn9KC-.js} +1 -1
  46. package/server/{conflict-gate-BtB_o-Vi.js → conflict-gate-D47Kl78u.js} +3 -3
  47. package/server/{context-layers-r2ywnQYA.js → context-layers-BNhUBTkf.js} +3 -3
  48. package/server/{context-layers-CRCk1QG7.js → context-layers-CHl3Nroz.js} +2 -2
  49. package/server/{control-settings-D1B3u6HP.js → control-settings-KyYNXZLv.js} +4 -4
  50. package/server/{conversation-compaction-D86Zo2Ci.js → conversation-compaction-D3aS5PnS.js} +8 -8
  51. package/server/{conversation-compaction-CZRVk4hg.js → conversation-compaction-D4Wed1BJ.js} +1 -1
  52. package/server/{conversation-service-CuTVU8dV.js → conversation-service-CFZIjs-M.js} +5 -5
  53. package/server/{conversation-service-CkL-6MuG.js → conversation-service-DcDB5usR.js} +1 -1
  54. package/server/{conversations-DfJKBDwB.js → conversations-BSOU5qnu.js} +4 -4
  55. package/server/{conversations-BmWEluPL.js → conversations-BbDPrz89.js} +1 -1
  56. package/server/{cost-DAPYN6iA.js → cost-BE_ulOrw.js} +3 -3
  57. package/server/{cost-CCnqa5xK.js → cost-CaiG63FG.js} +2 -2
  58. package/server/{cost-sync-BDL10Nwu.js → cost-sync-D6AX8jv-.js} +3 -3
  59. package/server/{dag-Dv2r5bVD.js → dag-BQFtXOuJ.js} +3 -3
  60. package/server/{dangerous-git-ops-Dcw7PbYo.js → dangerous-git-ops-04Ba-Qu3.js} +1 -1
  61. package/server/dashboard-db-worker.js +6 -6
  62. package/server/{deacon-CM0MxbS8.js → deacon-2EvA9Ci3.js} +97 -97
  63. package/server/{deacon-DYnZH7kC.js → deacon-Bz-6Wjmn.js} +3 -3
  64. package/server/deacon-swarm-B8pgK2a7.js +2 -0
  65. package/server/{deacon-swarm-BstYoz8Q.js → deacon-swarm-DYYOzHRH.js} +10 -10
  66. package/server/deacon.js +7 -7
  67. package/server/{devcontainer-renderer-CaYOG9JN.js → devcontainer-renderer-Dx0C7VWJ.js} +2 -2
  68. package/server/dist-BYSj075e.js +3 -0
  69. package/server/{dist-BIC8spJ0.js → dist-ya66D9ze.js} +1 -1
  70. package/server/{docker-DDI1shu3.js → docker-D2TbXDO6.js} +2 -2
  71. package/server/{ensure-devcontainer-CbSXvN9W.js → ensure-devcontainer-BIShzs3M.js} +1 -1
  72. package/server/{ensure-devcontainer-DCAg3ksz.js → ensure-devcontainer-BTiMfFp5.js} +3 -3
  73. package/server/{event-store-DU3HkZlN.js → event-store-C02Gprug.js} +1 -1
  74. package/server/{event-store-DCMqyI07.js → event-store-C71x6h0i.js} +3 -3
  75. package/server/{events-BfiosVAn.js → events-BFDuPV6n.js} +3 -3
  76. package/server/{events-DLRxpSuV.js → events-D2gP2-Yv.js} +1 -1
  77. package/server/{factory-BMtWV9iv.js → factory-ByfbrCab.js} +4 -4
  78. package/server/{feature-registry-population-DA7bO6Zn.js → feature-registry-population-CSH66UO8.js} +4 -4
  79. package/server/{feature-registry-storage-nAY1fbBt.js → feature-registry-storage-DW7dUefc.js} +2 -2
  80. package/server/{features-DMu7eGmU.js → features-x_aLR7U9.js} +2 -2
  81. package/server/{feedback-target-DHqcw3cN.js → feedback-target-BFo9fScH.js} +6 -6
  82. package/server/{feedback-target-B2SEai8-.js → feedback-target-C4VMPTZu.js} +1 -1
  83. package/server/{feedback-writer-qvm7UON7.js → feedback-writer-B9ZqnnX3.js} +4 -4
  84. package/server/{feedback-writer-DMBdS_jL.js → feedback-writer-DCyd75yJ.js} +1 -1
  85. package/server/{flywheel-Dfpx4bIV.js → flywheel-D9NKvWqb.js} +11 -11
  86. package/server/{flywheel-k4FPtCQ_.js → flywheel-DB48X7Nn.js} +1 -1
  87. package/server/{flywheel-D2LdPSic.js → flywheel-DwQCoZQG.js} +13 -13
  88. package/server/{flywheel-merge-order-CB4lbXeJ.js → flywheel-merge-order-DrjmFXg4.js} +6 -6
  89. package/server/{flywheel-merge-order-CttTazRY.js → flywheel-merge-order-f1bi5XIf.js} +1 -1
  90. package/server/{forge-CoPFXFyl.js → forge-C-SoKy8U.js} +2 -2
  91. package/server/forge-CUCYK7h_.js +2 -0
  92. package/server/{from-B0YoJl9-.js → from-fu7ZumnY.js} +1 -1
  93. package/server/{fts-db-DAHW1yA_.js → fts-db-CL-YzSRG.js} +2 -2
  94. package/server/{fts-operations-DDXDBi0d.js → fts-operations-Bylu5NjM.js} +2 -2
  95. package/server/{git-utils-B90Zjzfl.js → git-utils-C8koBs8j.js} +2 -2
  96. package/server/{git-utils-DbfC0zls.js → git-utils-Ym380hJZ.js} +1 -1
  97. package/server/{github-app-C7lftMNj.js → github-app-DIr70YLg.js} +1 -1
  98. package/server/{github-app-BecAnXRX.js → github-app-DhycHVLF.js} +2 -2
  99. package/server/{github-client-D21rCIXk.js → github-client-7gkcXcBS.js} +2 -2
  100. package/server/{github-client-BwtKZtM0.js → github-client-Ji9lUTNF.js} +1 -1
  101. package/server/{github-pr-lookup-CzVWuysl.js → github-pr-lookup-rt7T9FwA.js} +2 -2
  102. package/server/{harness-resolve-SkRJm4a7.js → harness-resolve-CvGXUnAF.js} +3 -3
  103. package/server/{health-events-BT0aAfeA.js → health-events-D4E1DLN-.js} +2 -2
  104. package/server/{health-events-DA_JLpgZ.js → health-events-DDfkoO5a.js} +1 -1
  105. package/server/{hooks-DxEn2BoY.js → hooks-D_6pAbuJ.js} +2 -2
  106. package/server/{hooks-BQxRXtRb.js → hooks-DvdnCVv6.js} +1 -1
  107. package/server/{idle-stack-reaper-C7fJL8jH.js → idle-stack-reaper-DNbV9-fj.js} +1 -1
  108. package/server/{idle-stack-reaper-DGy7tvC9.js → idle-stack-reaper-cDRXDpgE.js} +2 -2
  109. package/server/{infra-DE3C4PMr.js → infra-Clew3DpF.js} +50 -3
  110. package/server/{injection-Dt22tGvS.js → injection-QCIHOpk6.js} +1 -1
  111. package/server/{injection-Cc4Qt8LZ.js → injection-ql0Nddcn.js} +7 -7
  112. package/server/inspect-agent-D8UBDgfR.js +2 -0
  113. package/server/{inspect-agent-DOaCDkCF.js → inspect-agent-DY18KEx4.js} +9 -9
  114. package/server/{internal-token-B_1YLWLI.js → internal-token-BeXjPLKy.js} +2 -2
  115. package/server/{internal-token-nobT6FhA.js → internal-token-C90jBp-y.js} +1 -1
  116. package/server/{io-A7ZuOBkz.js → io-CbAFXQge.js} +2 -2
  117. package/server/{issue-closed-Da3DeomA.js → issue-closed-BYC2TCk-.js} +4 -4
  118. package/server/{issue-lifecycle-543pQX9D.js → issue-lifecycle-BoJa6qIt.js} +21 -21
  119. package/server/{issue-lifecycle-Bd9XBJAQ.js → issue-lifecycle-CLHbj8RS.js} +1 -1
  120. package/server/{issue-service-singleton-BC2JLZi7.js → issue-service-singleton-3g_CCY-1.js} +1 -1
  121. package/server/{issue-service-singleton-Brc3t0SV.js → issue-service-singleton-BS9NENuR.js} +8 -8
  122. package/server/{issues-D3kt9UWE.js → issues-BPcqPqfV.js} +2 -2
  123. package/server/{label-cleanup-w9X_T3AQ.js → label-cleanup-CwiCSZrb.js} +2 -2
  124. package/server/{layers-Cwe1J-9o.js → layers-OHHLphl0.js} +2 -2
  125. package/server/{lifecycle-f1GbDK33.js → lifecycle-B8IdvUbt.js} +6 -6
  126. package/server/{lifecycle-io-D56q8zlO.js → lifecycle-io-BMCH1Bxg.js} +1 -1
  127. package/server/{lifecycle-io-Bqvj0m3i.js → lifecycle-io-C73m5e6R.js} +4 -4
  128. package/server/{linear-client-Bh4T4S-c.js → linear-client-BMxgycoy.js} +1 -1
  129. package/server/{linear-client-CfJMTAYd.js → linear-client-CgQlM4aT.js} +2 -2
  130. package/server/memory-fts-worker.js +1 -1
  131. package/server/{merge-ZrXFM3jv.js → merge-B7Oi-g6k.js} +3 -3
  132. package/server/{merge-DRMPa8CQ.js → merge-BRkVaIx-.js} +1 -1
  133. package/server/merge-agent-Bwm34MZ5.js +3 -0
  134. package/server/{merge-agent-CHHs5S_0.js → merge-agent-DNFFsiEm.js} +61 -26
  135. package/server/{merge-batch-BwhGdlh4.js → merge-batch-BpYXUaqJ.js} +1 -1
  136. package/server/{merge-blockers-BMhDpMl_.js → merge-blockers-DIOZmqdK.js} +2 -2
  137. package/server/merge-ops-B7m-hBEZ.js +2 -0
  138. package/server/{merge-rebase-R7MfqpiE.js → merge-rebase-C8WH39MB.js} +2 -2
  139. package/server/{merge-set-B3Breacq.js → merge-set-CsEE2CyQ.js} +9 -5
  140. package/server/{merge-set-D-iXNP0I.js → merge-set-DOsBTBQc.js} +1 -1
  141. package/server/{merge-sync-DHWbGtjR.js → merge-sync-C2B322Ot.js} +2 -2
  142. package/server/{merge-sync-bOOtfeXR.js → merge-sync-CcLM2vwW.js} +1 -1
  143. package/server/{merge-train-98ptZrPT.js → merge-train-BIm7-7cy.js} +3 -3
  144. package/server/{merge-train-deps-B5FWJTE2.js → merge-train-deps-DG1oQ2DT.js} +4 -4
  145. package/server/{merge-verification-BGiuiXAK.js → merge-verification-BAbjxEd5.js} +4 -4
  146. package/server/{multipart-parser-D7mzNNDm.js → multipart-parser-jKtKAXtl.js} +2 -2
  147. package/server/node_modules/.package-lock.json +1 -1
  148. package/server/{orphan-proposed-reconciler-CSuxivr9.js → orphan-proposed-reconciler-BqVGaOIj.js} +1 -1
  149. package/server/{orphan-proposed-reconciler-BSGCNJ6X.js → orphan-proposed-reconciler-zHrwJ3xr.js} +9 -9
  150. package/server/package-lock.json +2 -2
  151. package/server/package.json +1 -1
  152. package/server/{pan-dir-DoPtdHrp.js → pan-dir-BlNrLzW7.js} +3 -3
  153. package/server/{paths-CVDLPxXp.js → paths-CiVeo4N_.js} +2 -2
  154. package/server/{pipeline-notifier-WD2dnOsR.js → pipeline-notifier-DBF6dHxH.js} +2 -2
  155. package/server/{pipeline-notifier-BtYHbBPl.js → pipeline-notifier-nkWCe042.js} +1 -1
  156. package/server/{projects-Bqfwuqet.js → projects-BqRMlDOv.js} +1 -1
  157. package/server/{prompts-Cg7e9FPb.js → prompts-CXbQvevY.js} +2 -2
  158. package/server/{providers-fLduChnX.js → providers-CUdAb5Qu.js} +7 -7
  159. package/server/{providers-JjK6izqX.js → providers-gZ0cUgQM.js} +1 -1
  160. package/server/public/assets/{chunk-BO2N2NFS-aNlsGDCu.js → chunk-BO2N2NFS-C-6y8VFI.js} +4 -4
  161. package/server/public/assets/{diagram-OG6HWLK6-CnjkrvT8.js → diagram-OG6HWLK6-NACO1xW5.js} +1 -1
  162. package/server/public/assets/{dist-CGKBCieA.js → dist-D1FjqGgm.js} +1 -1
  163. package/server/public/assets/{dist-Bg3Sbsx4.js → dist-DQD-ZjQY.js} +3 -3
  164. package/server/public/assets/{ganttDiagram-6RSMTGT7-C8LLKj23.js → ganttDiagram-6RSMTGT7-CEMAKgmE.js} +1 -1
  165. package/server/public/assets/{highlighted-body-OFNGDK62-BSDEUvhW.js → highlighted-body-OFNGDK62-D5lC7FW8.js} +1 -1
  166. package/server/public/assets/{index-LQIfhmgI.js → index-BDqWyuZQ.js} +140 -140
  167. package/server/public/assets/{linear-DEbYZoxg.js → linear-DDHAMRPB.js} +1 -1
  168. package/server/public/assets/mermaid-GHXKKRXX-DRM2ANcR.js +1 -0
  169. package/server/public/assets/{pieDiagram-4H26LBE5-BtZL5pXE.js → pieDiagram-4H26LBE5-DwBdeKBb.js} +1 -1
  170. package/server/public/assets/{prod-DYVvIyuh.js → prod-DAZt0c4G.js} +4 -4
  171. package/server/public/assets/{quadrantDiagram-W4KKPZXB-a7vS8Jc8.js → quadrantDiagram-W4KKPZXB-CNDLp-_m.js} +1 -1
  172. package/server/public/assets/{sankeyDiagram-5OEKKPKP-Ckbq2SWH.js → sankeyDiagram-5OEKKPKP-oIUL_uO1.js} +1 -1
  173. package/server/public/assets/{xychartDiagram-2RQKCTM6-DJyeNa99.js → xychartDiagram-2RQKCTM6-B-IM6Cck.js} +1 -1
  174. package/server/public/index.html +1 -1
  175. package/server/{pull-requests-D2SjJIwY.js → pull-requests-DZ-V7_LB.js} +1 -1
  176. package/server/{pull-requests-1WXmTBlo.js → pull-requests-kTRl7cWC.js} +3 -3
  177. package/server/rally-CRteqXe0.js +3 -0
  178. package/server/{rally-api-H5I2CBO0.js → rally-api-DpZo3WwF.js} +2 -2
  179. package/server/{rally-api-BtvwdX6d.js → rally-api-jOk4vit_.js} +1 -1
  180. package/server/{rally-client-Bt-qHiOh.js → rally-client-BQjm3aaq.js} +1 -1
  181. package/server/{rally-client-33CYZYYu.js → rally-client-CoWZeVEj.js} +4 -4
  182. package/server/{rally-8aQlLLVj.js → rally-xCTZ-UcI.js} +3 -3
  183. package/server/{rebuild-stack-KHkkrGjx.js → rebuild-stack-BZ7j27xY.js} +5 -5
  184. package/server/{rebuild-stack-CXSgAGPR.js → rebuild-stack-r-cxcr26.js} +1 -1
  185. package/server/{reconstruct-cache-D_Ml65_6.js → reconstruct-cache-13EkMg_i.js} +6 -6
  186. package/server/{record-De2syxNB.js → record-CJsjvRO4.js} +1 -1
  187. package/server/release-engine-YLTnEO_K.js +306 -0
  188. package/server/release-set-DwvT_Opu.js +125 -0
  189. package/server/{remote-CGuognN3.js → remote-9u9WL0NJ.js} +3 -3
  190. package/server/{remote-D0Old0Cv.js → remote-B062S1Kc.js} +3 -3
  191. package/server/{remote-agents-UHoi4oGr.js → remote-agents-B4eWgwNd.js} +1 -1
  192. package/server/{remote-agents-DfhMq6kQ.js → remote-agents-BBTg-vLT.js} +5 -5
  193. package/server/{remote-completion-RZYePR_0.js → remote-completion-B0rmBnbL.js} +12 -12
  194. package/server/resume-R7xkSmLW.js +3 -0
  195. package/server/{review-agent-uwVftH98.js → review-agent-Bf9XjLnl.js} +1 -1
  196. package/server/{review-agent-sZBCpEVv.js → review-agent-tfR5RDzG.js} +22 -22
  197. package/server/{review-artifacts-C7a45b1_.js → review-artifacts-D0_IE6DQ.js} +6 -6
  198. package/server/{review-context-CErbQpKL.js → review-context-CXO5ml5D.js} +7 -7
  199. package/server/{review-monitor-DHD9m_kh.js → review-monitor-DfFUSx0J.js} +2 -2
  200. package/server/{review-status-JhQ3qlDS.js → review-status-B0Axo-Ma.js} +1 -1
  201. package/server/{review-status-gPndPUBc.js → review-status-BcfwcAcO.js} +23 -16
  202. package/server/{review-status-enrichment-qWvWckYN.js → review-status-enrichment-Cp5kFTGl.js} +3 -3
  203. package/server/{review-status-sync-B_GrEke8.js → review-status-sync-Bc0c_u12.js} +1 -1
  204. package/server/{review-status-sync-D3A9KX95.js → review-status-sync-CEFty1pW.js} +9 -5
  205. package/server/{review-verdict-feedback-4WZ5ZdbC.js → review-verdict-feedback-BOKRLLDf.js} +6 -6
  206. package/server/{review-verdict-feedback-Zo0r_z4m.js → review-verdict-feedback-BnGtT0vN.js} +1 -1
  207. package/server/{rollup-Bmhn80tB.js → rollup-BVqFuiS9.js} +1 -1
  208. package/server/{rollup-BrUIKMv_.js → rollup-C22QDVxh.js} +8 -8
  209. package/server/{scanner-BIGumel_.js → scanner-BLCnuXqY.js} +7 -7
  210. package/server/{sequence-io-DA0akEQN.js → sequence-io-BozlUb6f.js} +4 -4
  211. package/server/{sequencer-agent-DeflKafB.js → sequencer-agent-BEDEHfd2.js} +5 -5
  212. package/server/server.js +251 -160
  213. package/server/{service-V0sUK-OR.js → service-C8jKYZ0w.js} +42 -42
  214. package/server/{session-fork-Yx3UcAQf.js → session-fork-BDGksK4e.js} +2 -2
  215. package/server/{settings-CFEeQRj2.js → settings-CSLhh6qR.js} +2 -2
  216. package/server/settings-CSaXtkoA.js +2 -0
  217. package/server/{settings-CxVate0h.js → settings-DrRQCren.js} +3 -3
  218. package/server/{shadow-engineering-BRxnVSDk.js → shadow-engineering-BMcBN-Of.js} +2 -2
  219. package/server/{shadow-state-BiMwdyl1.js → shadow-state-B4ayC7nx.js} +2 -2
  220. package/server/{shadow-state-1aS8FijU.js → shadow-state-CHqWHD3T.js} +1 -1
  221. package/server/{ship-log-CMWH3H5-.js → ship-log-CDVmOlZP.js} +1 -1
  222. package/server/{smart-compaction-Bw1K_Sbl.js → smart-compaction-C-F5sP9P.js} +7 -7
  223. package/server/{smart-compaction-xblMyVpT.js → smart-compaction-V9DBrGcr.js} +1 -1
  224. package/server/{spawn-planning-session-CzDFSKAQ.js → spawn-planning-session-Bz4_JES2.js} +1 -1
  225. package/server/{spawn-planning-session-DxLxcM7m.js → spawn-planning-session-dSpOU0lP.js} +15 -15
  226. package/server/{specialist-completion-BiEXUHfD.js → specialist-completion-Coz3eTSr.js} +1 -1
  227. package/server/{specialist-context-BfkTA81h.js → specialist-context-fmb03vXQ.js} +5 -5
  228. package/server/{specialist-handoff-logger-BiKuLtNm.js → specialist-handoff-logger-B9HK_lRu.js} +2 -2
  229. package/server/{specialist-logs-CFJjGsLC.js → specialist-logs-B24R2B9Y.js} +3 -3
  230. package/server/{specialists-BLIreoE7.js → specialists-B6f5-5nG.js} +1 -1
  231. package/server/{specialists-DjHbwQ_p.js → specialists-BGNZ0_ZW.js} +18 -18
  232. package/server/{specialists-B4byf18k.js → specialists-CL7E8yUg.js} +75 -75
  233. package/server/{specialists-DdvpFNt1.js → specialists-Chvvwf5z.js} +1 -1
  234. package/server/specs-oaaYaA5c.js +3 -0
  235. package/server/{src-CALBEUMX.js → src-BVxZuHMg.js} +3 -3
  236. package/server/{src-mK_M_ZIj.js → src-D-VXCC9C.js} +5 -5
  237. package/server/{src-fgbU-jJ-.js → src-DGAEtABV.js} +13 -2
  238. package/server/{stack-health-BFM8YlHw.js → stack-health-BKbTTOT2.js} +1 -1
  239. package/server/{stack-health-Qd7rPiVe.js → stack-health-C-le5erA.js} +2 -2
  240. package/server/{state-home-C2Bicw9N.js → state-home-CoyWsECg.js} +6 -6
  241. package/server/{summary-fork-EWWBvzgE.js → summary-fork-BF_0vxrq.js} +2 -2
  242. package/server/{summary-fork-DezPkJSm.js → summary-fork-BlE30Q-I.js} +8 -8
  243. package/server/supervisor-03Tj_Wra.js +2 -0
  244. package/server/{supervisor-D5GC5jUM.js → supervisor-BSeML_p0.js} +2 -2
  245. package/server/{swarm-readiness-Cf9mommA.js → swarm-readiness-CQ4sjrXc.js} +3 -3
  246. package/server/{system-prerequisites-BsI9hxh9.js → system-prerequisites-DnmLYOnU.js} +13 -1
  247. package/server/{teardown-workspace-CWz1pbEK.js → teardown-workspace-CpcjDrZ4.js} +12 -12
  248. package/server/{test-agent-queue-TiVXe3ZT.js → test-agent-queue-Bq298zZl.js} +5 -5
  249. package/server/{tldr-daemon-C_1frSDj.js → tldr-daemon-CaSUXd9r.js} +2 -2
  250. package/server/{tldr-daemon-Big5IZ_M.js → tldr-daemon-Rn1Zue0P.js} +1 -1
  251. package/server/{tmux-D57f-XNv.js → tmux-BVc-NeKM.js} +2 -2
  252. package/server/{tmux-DClqWwb8.js → tmux-CbcrkUx5.js} +1 -1
  253. package/server/{token-_qujO3JZ.js → token-D2OC_9ms.js} +1 -1
  254. package/server/{tracker-config-BmdJU_w6.js → tracker-config-C1Y_2CIo.js} +2 -2
  255. package/server/{tracker-config-B_Ubts1Z.js → tracker-config-EsBoOWEy.js} +1 -1
  256. package/server/{tracker-utils-Bg-Sevcv.js → tracker-utils-DSb9cfrF.js} +1 -1
  257. package/server/{tracker-utils-CWFt6jjV.js → tracker-utils-lph9C3Pw.js} +2 -2
  258. package/server/{tunnel-UBf2vyAL.js → tunnel-BFBCeo97.js} +2 -2
  259. package/server/{tunnel-hOBNQbmF.js → tunnel-DDe-ATFF.js} +1 -1
  260. package/server/{uat-train-DGkIkLxu.js → uat-train-8T24rPzc.js} +1 -1
  261. package/server/{uat-train-qNanv5hN.js → uat-train-DtKHHy1U.js} +23 -23
  262. package/server/{validation-B0QaLIHP.js → validation-COOXwNXU.js} +1 -1
  263. package/server/{validation-C4wegCvH.js → validation-lyudzPvD.js} +3 -3
  264. package/server/{verification-runner-CntudBes.js → verification-runner-DO0nYTJx.js} +11 -11
  265. package/server/{verification-runner-DdleMNLq.js → verification-runner-Dd1FX8Qk.js} +1 -1
  266. package/server/{vtt-parser-CKc-smWM.js → vtt-parser-C57tEF7-.js} +1 -1
  267. package/server/{work-agent-prompt-CG5jFV9A.js → work-agent-prompt-B2F3ZwKm.js} +11 -11
  268. package/server/workflows-B4fIN8VP.js +2 -0
  269. package/server/{workflows-BK2xs_a8.js → workflows-Clz_AFwR.js} +13 -13
  270. package/server/{workspace-CLrSIRCx.js → workspace-CY_2-Ddv.js} +3 -3
  271. package/server/{workspace-C9lC5o3E.js → workspace-D0rCFemz.js} +1 -1
  272. package/server/{workspace-manager-Cb2a7bg9.js → workspace-manager-BIfpzqdU.js} +1 -1
  273. package/server/{workspace-manager-BJhW2sky.js → workspace-manager-D6NgGkiF.js} +10 -10
  274. package/server/{workspace-metadata-QQmo_Z0l.js → workspace-metadata-C8yn8kAH.js} +2 -2
  275. package/server/{workspace-metadata-CTRnr323.js → workspace-metadata-DfgR40YU.js} +1 -1
  276. package/server/{workspaces-Ca4zZs12.js → workspaces-DOeHyKmA.js} +104 -92
  277. package/sync-sources/hooks/ask-user-question-hook +87 -0
  278. package/sync-sources/hooks/auto-approve-hook +96 -0
  279. package/sync-sources/hooks/codex-notify-hook +62 -0
  280. package/sync-sources/hooks/gh-issue-trailer-hook +4 -0
  281. package/sync-sources/hooks/gh-issue-trailer-hook.d.ts +7 -0
  282. package/sync-sources/hooks/gh-issue-trailer-hook.d.ts.map +1 -0
  283. package/sync-sources/hooks/gh-issue-trailer-hook.js +239 -0
  284. package/sync-sources/hooks/gh-issue-trailer-hook.js.map +1 -0
  285. package/sync-sources/hooks/gh-issue-trailer-hook.ts +296 -0
  286. package/sync-sources/hooks/git-hooks/post-checkout +109 -0
  287. package/sync-sources/hooks/heartbeat-hook +113 -0
  288. package/sync-sources/hooks/notification-hook +70 -0
  289. package/sync-sources/hooks/notify-complete +79 -0
  290. package/sync-sources/hooks/pan-hook-lib.sh +153 -0
  291. package/sync-sources/hooks/permission-event-hook +24 -0
  292. package/sync-sources/hooks/post-compact-hook +25 -0
  293. package/sync-sources/hooks/pre-compact-hook +26 -0
  294. package/sync-sources/hooks/pre-tool-hook +35 -0
  295. package/sync-sources/hooks/record-cost-event.d.ts +1 -0
  296. package/sync-sources/hooks/record-cost-event.js +31858 -0
  297. package/sync-sources/hooks/record-cost-event.js.map +1 -0
  298. package/sync-sources/hooks/record-cost-event.ts +267 -0
  299. package/sync-sources/hooks/rtk-bash-filter +152 -0
  300. package/sync-sources/hooks/session-start-hook +80 -0
  301. package/sync-sources/hooks/specialist-stop-hook +106 -0
  302. package/sync-sources/hooks/statusline.sh +169 -0
  303. package/sync-sources/hooks/stop-hook +217 -0
  304. package/sync-sources/hooks/tldr-post-edit +72 -0
  305. package/sync-sources/hooks/tldr-read-enforcer +340 -0
  306. package/sync-sources/hooks/tmux-send-keys-guard +87 -0
  307. package/sync-sources/hooks/tsdown.config.ts +14 -0
  308. package/sync-sources/hooks/user-prompt-submit-hook +57 -0
  309. package/sync-sources/hooks/work-agent-stop-hook +424 -0
  310. package/server/cli-Ch_BWJB2.js +0 -3
  311. package/server/deacon-swarm-CSWGRfzr.js +0 -2
  312. package/server/dist-BUplB3Od.js +0 -3
  313. package/server/forge-IgLR0Ist.js +0 -2
  314. package/server/inspect-agent-CYoWAeeB.js +0 -2
  315. package/server/merge-agent-CfohxFWM.js +0 -3
  316. package/server/merge-ops-Czke6UAp.js +0 -2
  317. package/server/public/assets/mermaid-GHXKKRXX-CZOsRYoT.js +0 -1
  318. package/server/rally-Ba9QoNYc.js +0 -3
  319. package/server/resume-CmxF3Kjz.js +0 -3
  320. package/server/settings-DEhYpW0k.js +0 -2
  321. package/server/specs-CVH1kvz3.js +0 -3
  322. package/server/supervisor-DQMK2e3I.js +0 -2
  323. package/server/workflows-pKw9yRSV.js +0 -2
package/server/server.js CHANGED
@@ -1,95 +1,95 @@
1
1
  import { a as __toCommonJS, i as __require, o as __toESM, t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { $n as extractPrefixSync, Br as getOverdeckHome, C as resolveTieredExecutionEnabled, Dn as getProjectSync, Dr as LOGS_DIR, E as canUseHarnessSync, Et as getIssueWorkspacePath, F as getKimiAnthropicBaseUrl, Fr as SYNC_SOURCES, G as init_registry, Gn as resolveProjectFromIssueSync, Gr as sessionFilePath, Hn as registerProjectSync, Hr as isDevMode, In as listProjects, J as computeModelOrigin, K as DEFAULT_ROLES, L as getProviderForModelSync, Ln as listProjectsSync, Lr as encodeClaudeProjectDir, M as UnknownModelError, Nn as init_projects, O as init_harness_policy, Or as OVERDECK_HOME, Ot as init_record, P as getBuiltInDefaultHarness, Q as MODEL_DEPRECATIONS, R as init_providers, S as init_tier_table, Sn as findProjectByTeamSync, T as validateTieredExecutionConfig, Ur as packageRoot, Vr as init_paths, W as defaultBackgroundAiFeatures, Wn as resolveProjectFromIssue, Wr as resolveOhmypiExtensionPath, X as resolveModel, Yn as setProjectAutoMergeDefaultSync, Z as MODEL_CAPABILITIES, _ as getDefaultTtsDaemonConfig, bn as findProjectByPathSync, c as isClaudeCodeChannelsEnabled, cr as FsError, ct as COMPLIANCE_MODES, d as loadConfigNoMigration, er as init_issue_id, et as getModelEffortLevelsSync, f as loadConfigSync, g as mergeConfigs, gr as TrackerError, h as jsYaml, i as getConversationsConfig, ir as require_dist$1, it as resolveModelIdSync, lt as PARENT_MODEL_REF, m as init_js_yaml, mr as ProcessSpawnError, n as clearConfigCache, nn as flushAutoCommits, nr as parseIssueIdSync, nt as init_model_capabilities, o as getGlobalConfigPath, p as updateConversationsConfig, q as DEFAULT_WORKHORSES, r as getConversationSearchConfigSync, rn as init_auto_commit, rt as modelSupportsImagesSync, t as init_config_yaml, tn as flushAllPendingAutoCommits, tt as hasModelCapabilitySync, u as isTldrEnabledSync, ur as GitHubApiError, ut as ROLE_EFFORTS, v as mergeTtsDaemonConfigs, vn as extractTeamPrefix, vr as init_errors, wn as getIssuePrefix, wr as CLAUDE_DIR, x as TieredExecutionConfigError, yr as AGENTS_DIR, z as piProviderForModel, zr as getLegacyHome } from "./config-yaml-ClpGgrf6.js";
3
- import { _ as getDashboardIdentity, c as startUatTrainReconciler, d as openFlywheelRunReportForDashboard, f as pauseFlywheelRunForDashboard, g as runDashboardDbJob, h as startFlywheelRunForDashboard, l as stopUatTrainReconciler, m as resumeFlywheelRunForDashboard, p as readCurrentFlywheelStatusForDashboard, u as abortFlywheelRunForDashboard, v as readHostDashboardApiPort, y as shouldRefuseHostDashboardPort } from "./uat-train-qNanv5hN.js";
4
- import { C as validateOrigin$1, D as jsonResponse, E as httpHandler, O as jsonStringResponse, T as checkCodexAuthStatus, _ as resolveJsonlPath, a as agentsRouteLayer, c as evaluateSpawnGuardrails, d as resolveConversationGitInfo, g as resolveCodexRolloutPath, h as resolveClaudeSessionId, l as invalidateAgentsCache, m as resolveAgentHarness, o as saveAgentStateAndEmitEvent, p as readLauncherPinnedSessionId, s as saveAgentStateAndEmitEventProgram, t as specialistsRouteLayer, u as resolveAgentGitInfo, v as resolvePiSessionPath, w as validateOriginHeaders, x as isTrustedOriginForHost, y as getHeaderFromMap } from "./specialists-B4byf18k.js";
2
+ import { $n as extractPrefixSync, Br as getLegacyHome, C as resolveTieredExecutionEnabled, Dn as getProjectSync, E as canUseHarnessSync, Et as getIssueWorkspacePath, F as getKimiAnthropicBaseUrl, G as init_registry, Gn as resolveProjectFromIssueSync, Gr as resolveOhmypiExtensionPath, Hn as registerProjectSync, Hr as init_paths, In as listProjects, Ir as SYNC_SOURCES, J as computeModelOrigin, K as DEFAULT_ROLES, Kr as sessionFilePath, L as getProviderForModelSync, Ln as listProjectsSync, M as UnknownModelError, Nn as init_projects, O as init_harness_policy, Or as LOGS_DIR, Ot as init_record, P as getBuiltInDefaultHarness, Q as MODEL_DEPRECATIONS, R as init_providers, Rr as encodeClaudeProjectDir, S as init_tier_table, Sn as findProjectByTeamSync, T as validateTieredExecutionConfig, Tr as CLAUDE_DIR, Ur as isDevMode, Vr as getOverdeckHome, W as defaultBackgroundAiFeatures, Wn as resolveProjectFromIssue, Wr as packageRoot, X as resolveModel, Yn as setProjectAutoMergeDefaultSync, Z as MODEL_CAPABILITIES, _ as getDefaultTtsDaemonConfig, _r as TrackerError, ar as require_dist$1, bn as findProjectByPathSync, br as AGENTS_DIR, c as isClaudeCodeChannelsEnabled, ct as COMPLIANCE_MODES, d as loadConfigNoMigration, dr as GitHubApiError, er as init_issue_id, et as getModelEffortLevelsSync, f as loadConfigSync, g as mergeConfigs, h as jsYaml, hr as ProcessSpawnError, i as getConversationsConfig, it as resolveModelIdSync, kr as OVERDECK_HOME, lr as FsError, lt as PARENT_MODEL_REF, m as init_js_yaml, n as clearConfigCache, nn as flushAutoCommits, nr as parseIssueIdSync, nt as init_model_capabilities, o as getGlobalConfigPath, p as updateConversationsConfig, q as DEFAULT_WORKHORSES, r as getConversationSearchConfigSync, rn as init_auto_commit, rt as modelSupportsImagesSync, t as init_config_yaml, tn as flushAllPendingAutoCommits, tt as hasModelCapabilitySync, u as isTldrEnabledSync, ut as ROLE_EFFORTS, v as mergeTtsDaemonConfigs, vn as extractTeamPrefix, wn as getIssuePrefix, x as TieredExecutionConfigError, yr as init_errors, z as piProviderForModel } from "./config-yaml-C_djSurJ.js";
3
+ import { _ as getDashboardIdentity, c as startUatTrainReconciler, d as openFlywheelRunReportForDashboard, f as pauseFlywheelRunForDashboard, g as runDashboardDbJob, h as startFlywheelRunForDashboard, l as stopUatTrainReconciler, m as resumeFlywheelRunForDashboard, p as readCurrentFlywheelStatusForDashboard, u as abortFlywheelRunForDashboard, v as readHostDashboardApiPort, y as shouldRefuseHostDashboardPort } from "./uat-train-DtKHHy1U.js";
4
+ import { C as validateOrigin$1, D as jsonResponse, E as httpHandler, O as jsonStringResponse, T as checkCodexAuthStatus, _ as resolveJsonlPath, a as agentsRouteLayer, c as evaluateSpawnGuardrails, d as resolveConversationGitInfo, g as resolveCodexRolloutPath, h as resolveClaudeSessionId, l as invalidateAgentsCache, m as resolveAgentHarness, o as saveAgentStateAndEmitEvent, p as readLauncherPinnedSessionId, s as saveAgentStateAndEmitEventProgram, t as specialistsRouteLayer, u as resolveAgentGitInfo, v as resolvePiSessionPath, w as validateOriginHeaders, x as isTrustedOriginForHost, y as getHeaderFromMap } from "./specialists-CL7E8yUg.js";
5
5
  import { a as init_activity_logger, i as emitDashboardLifecycleSync, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-pcbf-e30.js";
6
- import { A as init_paths$1, O as OVERDECK_MIGRATION_PATH, d as getOverdeckDatabaseSync, f as init_infra, i as DbLive, k as getOverdeckDatabasePath, u as TmuxLive } from "./infra-DE3C4PMr.js";
6
+ import { A as init_paths$1, O as OVERDECK_MIGRATION_PATH, d as getOverdeckDatabaseSync, f as init_infra, i as DbLive, k as getOverdeckDatabasePath, u as TmuxLive } from "./infra-Clew3DpF.js";
7
7
  import { n as openDatabase, t as init_driver } from "./driver-D-HBOQa_.js";
8
- import { E as listPaneValues, F as sendKeysAsync, G as buildChildEnvSync, H as init_ui_theme, I as sendRawKeystroke, K as buildChildEnvWithoutTmuxSync, L as sessionExists, M as resizeWindow, O as listSessionNames, P as sendKeys, S as isHarnessProcessAlive, U as setUiTheme, W as BLANKED_PROVIDER_ENV, b as getWindowDimensions, c as ensureManagedTmuxContextOnce, d as exactPaneTarget, i as capturePane, k as listSessions, n as buildTmuxArgs, o as createSession, p as findManagedServerPidSync, q as init_child_env, w as killSession, x as init_tmux, z as setOption } from "./tmux-D57f-XNv.js";
9
- import { a as init_event_store, i as initEventStore, n as getEventStore, r as getSharedDb } from "./event-store-DCMqyI07.js";
10
- import { _ as FlywheelRunId, a as getHarnessBehavior, b as DomainEvent, c as FlywheelStats, g as WS_METHODS, h as PanRpcGroup, m as PanRpcError, o as ContextLayerSaveRequest, s as ContextPreviewRequest, t as init_src, v as FlywheelStatus, x as MemoryObservation, y as EDITORS } from "./src-fgbU-jJ-.js";
11
- import { a as fixStuckReadyForMerge, c as init_review_status, i as fixStuckCommentedReviews, l as loadReadyForMergeFlags, n as clearReviewStatus, o as getReviewStatus, r as clearStuckMergeStatuses, s as getReviewStatusSync, u as loadReviewStatuses, v as setReviewStatus, y as setReviewStatusSync } from "./review-status-gPndPUBc.js";
12
- import { a as EventStoreService, c as ReadModelService, d as init_read_model, f as toAgentResolution, i as init_issue_lifecycle, l as ReadModelServiceLive, m as toRole, n as IssueLifecycleLive, o as EventStoreServiceLive, p as toAgentStatus, s as init_domain_services, t as IssueLifecycle } from "./issue-lifecycle-543pQX9D.js";
13
- import { d as init_agents, i as recordBriefingSessionStart, n as ensureSessionContextBriefingFile, p as listAllAgentsSync, r as init_briefing_freshness, s as AgentsResolverLive, t as appendFreshBriefingUpdate } from "./briefing-freshness-B2FdLwIv.js";
14
- import { i as init_paths$2, l as resolveObservationsFile, r as ensureParentDir, s as resolveIssueMemoryRoot, t as assertMemorySafeSegment } from "./paths-CVDLPxXp.js";
15
- import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-nAY1fbBt.js";
16
- import { a as diffAgainstMain, c as diffCheckpoints, d as diffPatchSinceCommit, f as findCommitAtTime, h as listCheckpoints, l as diffFilesAgainstHead, m as init_checkpoint_manager, o as diffAgainstMainFiles, s as diffCheckpointFiles, t as captureCheckpoint, u as diffPatchFilesAgainstHead } from "./checkpoint-manager-JryW6MpM.js";
17
- import { An as getAgentDir, At as init_bridge_token, Dt as captureTranscriptUserRecordSnapshot, Gt as getAgentRuntimeBaseCommand, Jn as saveAgentStateSync, Jt as getProviderAuthMode, M as init_operator_interventions, Mn as getAgentState, N as operatorInterventionEvent, Nn as getAgentStateFilePath, Ot as init_transcript_landing, Pn as getAgentStateSync, Q as listRunningAgentsSync, St as deliverAgentMessage, X as listAgentStates, Z as listRunningAgents, Zt as injectPiConversationMemory, _t as init_config, an as init_claude_auth, ar as init_pty_token, at as init_concurrency, bn as writeChannelsBridgeMcpConfig, bt as saveCloisterConfigSync, c as init_tier_supervisor, cr as resolvePtySupervisorScriptPath, dr as normalizeAgentId, en as init_pi_fifo, f as supervisorAgentId, gr as getAgentRuntimeStateSync, hn as init_openai_auth, hr as getAgentRuntimeState, in as getClaudeAuthStatus, ir as readAgentHarnessModelRecordSync, j as messageAgent, jt as writeBridgeTokenSync, kt as probeTranscriptSince, ln as getProviderEnvForModel, lr as clearReadySignal, mn as getOpenAIAuthStatus, mr as waitForReadySignal, nn as init_ohmypi_fifo, or as writePtyToken, rn as ohmypiFifoPaths, rr as init_agent_record_sync, rt as emergencyBrake, s as deliverCommitForReview, sr as init_pty_supervisor_locate, t as init_agents$1, tn as piFifoPaths, un as getProviderExportsForModel, vt as loadCloisterConfig, xt as shouldAutoStart, yn as dismissDevChannelsDialog, yt as loadCloisterConfigSync } from "./agents-B5LfpLPv.js";
18
- import { t as init_behavior } from "./behavior-CPf0pbOt.js";
19
- import { a as getCostForIssueAggregateSync, c as getDailyTrendsSync, d as init_cost_sync, l as getModelRollupSync, n as getBackgroundCostBySourceSync, p as queryCostEventsSync, r as getCavemanExperimentDataSync, s as getCostsByIssueSync, u as getTodayCostSync } from "./cost-sync-BDL10Nwu.js";
20
- import { c as getAgentsNeedingAttention, d as CostResolverLive, f as CostWriter, l as CostDoorLive, n as readCloisterStateFile, o as generateHealthSummary, s as getAgentHealth, t as getCloisterService, u as CostResolver } from "./service-V0sUK-OR.js";
21
- import { n as AgentStateServiceLive } from "./agent-state-service-BzESvLOf.js";
22
- import { a as init_tracker_config, i as initTrackerConfigCache, n as getLinearApiKey, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-BmdJU_w6.js";
8
+ import { E as listPaneValues, F as sendKeysAsync, G as buildChildEnvSync, H as init_ui_theme, I as sendRawKeystroke, K as buildChildEnvWithoutTmuxSync, L as sessionExists, M as resizeWindow, O as listSessionNames, P as sendKeys, S as isHarnessProcessAlive, U as setUiTheme, W as BLANKED_PROVIDER_ENV, b as getWindowDimensions, c as ensureManagedTmuxContextOnce, d as exactPaneTarget, i as capturePane, k as listSessions, n as buildTmuxArgs, o as createSession, p as findManagedServerPidSync, q as init_child_env, w as killSession, x as init_tmux, z as setOption } from "./tmux-BVc-NeKM.js";
9
+ import { a as init_event_store, i as initEventStore, n as getEventStore, r as getSharedDb } from "./event-store-C71x6h0i.js";
10
+ import { _ as FlywheelRunId, a as getHarnessBehavior, b as DomainEvent, c as FlywheelStats, g as WS_METHODS, h as PanRpcGroup, m as PanRpcError, o as ContextLayerSaveRequest, s as ContextPreviewRequest, t as init_src, v as FlywheelStatus, x as MemoryObservation, y as EDITORS } from "./src-DGAEtABV.js";
11
+ import { a as fixStuckReadyForMerge, c as init_review_status, i as fixStuckCommentedReviews, l as loadReadyForMergeFlags, n as clearReviewStatus, o as getReviewStatus, r as clearStuckMergeStatuses, s as getReviewStatusSync, u as loadReviewStatuses, v as setReviewStatus, y as setReviewStatusSync } from "./review-status-BcfwcAcO.js";
12
+ import { a as EventStoreService, c as ReadModelService, d as init_read_model, f as toAgentResolution, i as init_issue_lifecycle, l as ReadModelServiceLive, m as toRole, n as IssueLifecycleLive, o as EventStoreServiceLive, p as toAgentStatus, s as init_domain_services, t as IssueLifecycle } from "./issue-lifecycle-BoJa6qIt.js";
13
+ import { d as init_agents, i as recordBriefingSessionStart, n as ensureSessionContextBriefingFile, p as listAllAgentsSync, r as init_briefing_freshness, s as AgentsResolverLive, t as appendFreshBriefingUpdate } from "./briefing-freshness-BL3Q6p7R.js";
14
+ import { i as init_paths$2, l as resolveObservationsFile, r as ensureParentDir, s as resolveIssueMemoryRoot, t as assertMemorySafeSegment } from "./paths-CiVeo4N_.js";
15
+ import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-DW7dUefc.js";
16
+ import { a as diffAgainstMain, c as diffCheckpoints, d as diffPatchSinceCommit, f as findCommitAtTime, h as listCheckpoints, l as diffFilesAgainstHead, m as init_checkpoint_manager, o as diffAgainstMainFiles, s as diffCheckpointFiles, t as captureCheckpoint, u as diffPatchFilesAgainstHead } from "./checkpoint-manager-DCxjQvP_.js";
17
+ import { An as getAgentDir, At as init_bridge_token, Dt as captureTranscriptUserRecordSnapshot, Gt as getAgentRuntimeBaseCommand, Jn as saveAgentStateSync, Jt as getProviderAuthMode, M as init_operator_interventions, Mn as getAgentState, N as operatorInterventionEvent, Nn as getAgentStateFilePath, Ot as init_transcript_landing, Pn as getAgentStateSync, Q as listRunningAgentsSync, St as deliverAgentMessage, X as listAgentStates, Z as listRunningAgents, Zt as injectPiConversationMemory, _t as init_config, an as init_claude_auth, ar as init_pty_token, at as init_concurrency, bn as writeChannelsBridgeMcpConfig, bt as saveCloisterConfigSync, c as init_tier_supervisor, cr as resolvePtySupervisorScriptPath, dr as normalizeAgentId, en as init_pi_fifo, f as supervisorAgentId, gr as getAgentRuntimeStateSync, hn as init_openai_auth, hr as getAgentRuntimeState, in as getClaudeAuthStatus, ir as readAgentHarnessModelRecordSync, j as messageAgent, jt as writeBridgeTokenSync, kt as probeTranscriptSince, ln as getProviderEnvForModel, lr as clearReadySignal, mn as getOpenAIAuthStatus, mr as waitForReadySignal, nn as init_ohmypi_fifo, or as writePtyToken, rn as ohmypiFifoPaths, rr as init_agent_record_sync, rt as emergencyBrake, s as deliverCommitForReview, sr as init_pty_supervisor_locate, t as init_agents$1, tn as piFifoPaths, un as getProviderExportsForModel, vt as loadCloisterConfig, xt as shouldAutoStart, yn as dismissDevChannelsDialog, yt as loadCloisterConfigSync } from "./agents-DqQa4Dq_.js";
18
+ import { t as init_behavior } from "./behavior-D3d2mVyD.js";
19
+ import { a as getCostForIssueAggregateSync, c as getDailyTrendsSync, d as init_cost_sync, l as getModelRollupSync, n as getBackgroundCostBySourceSync, p as queryCostEventsSync, r as getCavemanExperimentDataSync, s as getCostsByIssueSync, u as getTodayCostSync } from "./cost-sync-D6AX8jv-.js";
20
+ import { c as getAgentsNeedingAttention, d as CostResolverLive, f as CostWriter, l as CostDoorLive, n as readCloisterStateFile, o as generateHealthSummary, s as getAgentHealth, t as getCloisterService, u as CostResolver } from "./service-C8jKYZ0w.js";
21
+ import { n as AgentStateServiceLive } from "./agent-state-service-JhFzYCP_.js";
22
+ import { a as init_tracker_config, i as initTrackerConfigCache, n as getLinearApiKey, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-C1Y_2CIo.js";
23
23
  import { d as init_typed_errors, l as WorkspaceCreateError, n as AgentStartError, r as BeadsNotInitialized, s as TrackerApiError, t as AgentAlreadyRunning, u as WorkspaceNotFound } from "./typed-errors-BEJhbjJg.js";
24
- import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-CfJMTAYd.js";
25
- import { i as init_github_client, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-D21rCIXk.js";
26
- import { i as init_rally_client, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-33CYZYYu.js";
27
- import { a as resolveTrackerTypeSync, i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-CWFt6jjV.js";
28
- import { a as CacheService, i as startSharedIssueService, n as init_issue_service_singleton, o as init_cache_service, r as issue_service_singleton_exports, s as parseIntegerHeader, t as getSharedIssueService } from "./issue-service-singleton-Brc3t0SV.js";
29
- import { i as ensureInternalTokenSync, o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-B_1YLWLI.js";
30
- import { a as setPipelineHandlerSync, t as init_pipeline_notifier } from "./pipeline-notifier-WD2dnOsR.js";
31
- import { c as init_review_status_sync, i as getMergeBlockerReconcileCandidates } from "./review-status-sync-D3A9KX95.js";
24
+ import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-CgQlM4aT.js";
25
+ import { i as init_github_client, r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-7gkcXcBS.js";
26
+ import { i as init_rally_client, r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-CoWZeVEj.js";
27
+ import { a as resolveTrackerTypeSync, i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-lph9C3Pw.js";
28
+ import { a as CacheService, i as startSharedIssueService, n as init_issue_service_singleton, o as init_cache_service, r as issue_service_singleton_exports, s as parseIntegerHeader, t as getSharedIssueService } from "./issue-service-singleton-BS9NENuR.js";
29
+ import { i as ensureInternalTokenSync, o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-BeXjPLKy.js";
30
+ import { a as setPipelineHandlerSync, t as init_pipeline_notifier } from "./pipeline-notifier-DBF6dHxH.js";
31
+ import { c as init_review_status_sync, i as getMergeBlockerReconcileCandidates } from "./review-status-sync-CEFty1pW.js";
32
32
  import { a as PAN_DIRNAME, f as asPanSpecDocument, i as PAN_CONTINUE_FILENAME, p as init_types } from "./types-CE1m_daD.js";
33
- import { C as transitionToMerging, _ as markFailed, c as isFlywheelGloballyPaused, d as listDuePendingAutoMerges, f as listProblemAutoMerges, g as markBlocked, n as getActionableAutoMerge, o as init_merge_sync, t as cancelPending, u as listActiveAutoMerges, v as markMerged, x as scheduleAutoMergeWithResult, y as requeueToPending } from "./merge-sync-DHWbGtjR.js";
34
- import { C as findSpecByIssue, O as writeSpec, T as init_specs, a as findWorkspaceDraftPlan, b as init_types$1, k as writeSpecForIssue, m as readWorkspacePlanSync, o as init_io, p as readWorkspacePlan, r as findPlan, s as isPlanningComplete, u as readPlan, x as subItemsOf } from "./io-A7ZuOBkz.js";
35
- import { C as restartCliproxy, S as readPidFile, T as stopCliproxy, b as isCliproxyInstalled, d as getCliproxyAuthDir, o as bridgeCodexAuthToCliproxy, v as init_cliproxy, w as startCliproxy, x as isCliproxyRunning, y as installCliproxy } from "./cliproxy-CCzwuSNe.js";
36
- import { f as init_config$1, m as loadConfigSync$1, s as getDashboardApiUrlSync } from "./config-8sjaU6jZ.js";
33
+ import { C as transitionToMerging, _ as markFailed, c as isFlywheelGloballyPaused, d as listDuePendingAutoMerges, f as listProblemAutoMerges, g as markBlocked, n as getActionableAutoMerge, o as init_merge_sync, t as cancelPending, u as listActiveAutoMerges, v as markMerged, x as scheduleAutoMergeWithResult, y as requeueToPending } from "./merge-sync-C2B322Ot.js";
34
+ import { C as findSpecByIssue, O as writeSpec, T as init_specs, a as findWorkspaceDraftPlan, b as init_types$1, k as writeSpecForIssue, m as readWorkspacePlanSync, o as init_io, p as readWorkspacePlan, r as findPlan, s as isPlanningComplete, u as readPlan, x as subItemsOf } from "./io-CbAFXQge.js";
35
+ import { C as restartCliproxy, S as readPidFile, T as stopCliproxy, b as isCliproxyInstalled, d as getCliproxyAuthDir, o as bridgeCodexAuthToCliproxy, v as init_cliproxy, w as startCliproxy, x as isCliproxyRunning, y as installCliproxy } from "./cliproxy-BituqWtR.js";
36
+ import { f as init_config$1, m as loadConfigSync$1, s as getDashboardApiUrlSync } from "./config-DsCxzjXK.js";
37
37
  import { n as require_auth_errors, r as require_token_error, t as require_token_util } from "./token-util-CROoF5ic.js";
38
- import { $ as updateConversationForkFallbackReason, A as isAgentConversationName, B as removeFavorite, C as getConversationByTmuxSession, D as importLegacyConversation, E as hasOtherActiveConversationOnTmuxSession, F as markConversationEnded, G as setConversationHarness, H as setClearedToConvId, I as markConversationRunning, J as setForkRequest, K as setConversationModel, M as listConversations, N as listFavoritedIds, O as incrementForkRetryCount, P as markConversationActive, Q as updateConversationDeliveryMethod, S as getConversationByName, T as getStuckForks, U as setConversationClaudeSessionId, W as setConversationEffort, X as unarchiveConversation, Y as setImportedConversationLinks, Z as updateConversationCost, _ as canRefineTitle, b as getConversationByClaudeSessionId, et as updateConversationTitle, g as backfillConversationModel, gt as getDiscoveredSessionBySessionId, h as archiveConversation, j as listArchivedConversationsWithEnrichment, k as init_conversations, nt as updateLastAttached, q as setFavorite, rt as updateSpawnError, tt as updateForkStatus, v as canReplaceTitle, w as getConversationLedgerCosts, x as getConversationById, y as createConversation, yt as init_discovered_sessions, z as recordConversationHandoff } from "./conversations-DfJKBDwB.js";
39
- import { _ as init_codex_conversation_parser, a as contextUsageFromParseResult, c as parseEntireConversation, d as init_pi_conversation_parser, f as isPiSessionFile, g as parseOhmypiConversationMessages, h as isOhmypiSessionFile, i as computeContextUsage, l as parseFromLastCompactBoundary, m as init_ohmypi_conversation_parser, n as gateSnapshotEmission, o as summarizeConversationActivity, p as parsePiConversationMessages, r as watchConversation, s as parseConversationMessages, t as init_conversation_service, v as parseCodexConversationMessages } from "./conversation-service-CuTVU8dV.js";
40
- import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-DMu7eGmU.js";
41
- import { i as init_settings, r as getMemoryWorkerConcurrency, t as areMemoryObservationsEnabled } from "./settings-CxVate0h.js";
42
- import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers$1 } from "./providers-fLduChnX.js";
43
- import { a as init_launcher_generator, i as generateLauncherScriptSync, n as init_state_home, r as isStateMigrated } from "./state-home-C2Bicw9N.js";
44
- import { a as init_claude_permissions, o as resolvePermissionModeSync, r as getClaudePermissionFlagsStringSync, t as BYPASS_PERMISSION_MODE } from "./claude-permissions-B6bWGh9d.js";
45
- import { a as globalContextFile$1, f as resolveProjectContextFile, h as workspaceContextFile, l as piGlobalContextFile, n as codexGlobalContextFile, o as init_layers, p as resolveWorkspaceContextFile, r as ensureProjectLayer } from "./layers-Cwe1J-9o.js";
46
- import { l as init_codex, s as findRolloutPath } from "./codex-B4KEpX5V.js";
47
- import { C as setMergeTrainEnabled, S as setFlywheelRequireUatBeforeMerge, b as setFlywheelAutoPickupBacklog, c as isCloisterSpawnsPausedSync, d as isFlywheelAutoPickupBacklog, f as isFlywheelGloballyPaused$1, g as setCloisterSpawnsPausedSync, h as setBootReconciliationDecision, m as isMergeTrainEnabled, o as getSetting, p as isFlywheelRequireUatBeforeMerge, r as getBootReconciliationState, s as init_control_settings, u as isDeaconGloballyPausedSync, v as setDeaconGloballyPausedSync, w as setSetting } from "./control-settings-D1B3u6HP.js";
48
- import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-SkRJm4a7.js";
49
- import { i as checkPrdGateSync, t as init_pan_dir } from "./pan-dir-DoPtdHrp.js";
50
- import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-Bqvj0m3i.js";
51
- import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-Cf9mommA.js";
52
- import { $t as scanPendingInputsPromise, B as applyIssueBlocksMainLabel, Bt as formatUptime, F as setAgentStatusChangedNotifier, G as applyIssueVetoedLabel, Gt as isSmeeConfiguredSync, H as applyIssueParkedLabel, Ht as getCurrentDockerStats, I as setAgentStoppedNotifier, J as removeIssueParkedLabel, Jt as countPendingAskUserQuestionsForAgent, K as removeIssueBlocksMainLabel, Kt as startSmeeProcessSync, L as setMergeReadyNotifier, Lt as getRuntimeForAgent, O as loadConfig, Q as createInFlightGuard, U as applyIssueReadyLabel, V as applyIssueObjectionLabel, Vt as getContainerHistory, W as applyIssueReleasedLabel, Wt as getSystemHealthSnapshot, X as removeIssueReleasedLabel, Y as removeIssueReadyLabel, Yt as getAgentJsonlMtime, Z as removeIssueVetoedLabel, _t as withConcurrencyLimit, at as listBootReconciliationCandidates, en as detectAwaitingInputForAgent, it as isBootReconciliationCandidate, k as loadState, n as assessDeaconPatrolFreshness, ot as startBootReconciliation, q as removeIssueObjectionLabel, qt as computeAgentEnrichment, rn as parseCodexApprovalPrompt, t as applyBootReconciliationDecision, tn as detectAwaitingInputFromPaneSync, x as getDeaconLogs, zt as getResourceStacks } from "./deacon-CM0MxbS8.js";
53
- import { i as CostThresholdError, l as embed, s as parseRelativeTime } from "./scanner-BIGumel_.js";
54
- import { c as tailEventsSync, n as deduplicateEventsSync, o as readEventsSync } from "./events-BfiosVAn.js";
55
- import { n as recordBackgroundAiCost, t as init_cost } from "./cost-DAPYN6iA.js";
56
- import { S as writeLatestFlywheelStatus, _ as readCurrentLatestFlywheelStatus, b as subscribeLatestFlywheelStatus, f as getFlywheelRunDetail, h as listFlywheelRuns, l as buildClassifyLookups, m as isFlywheelRunId, y as resolveLiveFlywheelRunId } from "./flywheel-Dfpx4bIV.js";
57
- import { C as hasDashboardInternalToken, D as getWorkspacePathForIssue, E as rejectUnsafeDashboardMutationRequest, S as dashboardSessionCookieHeader, T as rejectUnauthorizedDashboardSessionMintRequest, _ as syncCacheSync, b as resolveIssueHeadlineCost, d as reconcile, f as reconcilePiTranscripts, g as rebuildCacheSync, h as getCostsForIssueSync, l as resumeQueuedMerges, m as migrateAllSessionsSync, p as reclassifyUnknownCostEventsSync, t as workspacesRouteLayer, u as syncWalFromAllProjects, v as processPendingFeedbackDeliveries, w as rejectUnauthorizedDashboardRequest, x as dashboardCsrfToken, y as getCachedRunningAgents } from "./workspaces-Ca4zZs12.js";
58
- import { l as detectPlatform, u as init_platform } from "./workspace-manager-BJhW2sky.js";
59
- import { O as init_specialists, b as getReviewerSessionName } from "./specialists-DjHbwQ_p.js";
38
+ import { $ as updateConversationForkFallbackReason, A as isAgentConversationName, B as removeFavorite, C as getConversationByTmuxSession, D as importLegacyConversation, E as hasOtherActiveConversationOnTmuxSession, F as markConversationEnded, G as setConversationHarness, H as setClearedToConvId, I as markConversationRunning, J as setForkRequest, K as setConversationModel, M as listConversations, N as listFavoritedIds, O as incrementForkRetryCount, P as markConversationActive, Q as updateConversationDeliveryMethod, S as getConversationByName, T as getStuckForks, U as setConversationClaudeSessionId, W as setConversationEffort, X as unarchiveConversation, Y as setImportedConversationLinks, Z as updateConversationCost, _ as canRefineTitle, b as getConversationByClaudeSessionId, et as updateConversationTitle, g as backfillConversationModel, gt as getDiscoveredSessionBySessionId, h as archiveConversation, j as listArchivedConversationsWithEnrichment, k as init_conversations, nt as updateLastAttached, q as setFavorite, rt as updateSpawnError, tt as updateForkStatus, v as canReplaceTitle, w as getConversationLedgerCosts, x as getConversationById, y as createConversation, yt as init_discovered_sessions, z as recordConversationHandoff } from "./conversations-BSOU5qnu.js";
39
+ import { _ as init_codex_conversation_parser, a as contextUsageFromParseResult, c as parseEntireConversation, d as init_pi_conversation_parser, f as isPiSessionFile, g as parseOhmypiConversationMessages, h as isOhmypiSessionFile, i as computeContextUsage, l as parseFromLastCompactBoundary, m as init_ohmypi_conversation_parser, n as gateSnapshotEmission, o as summarizeConversationActivity, p as parsePiConversationMessages, r as watchConversation, s as parseConversationMessages, t as init_conversation_service, v as parseCodexConversationMessages } from "./conversation-service-CFZIjs-M.js";
40
+ import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-x_aLR7U9.js";
41
+ import { i as init_settings, r as getMemoryWorkerConcurrency, t as areMemoryObservationsEnabled } from "./settings-DrRQCren.js";
42
+ import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers$1 } from "./providers-CUdAb5Qu.js";
43
+ import { a as init_launcher_generator, i as generateLauncherScriptSync, n as init_state_home, r as isStateMigrated } from "./state-home-CoyWsECg.js";
44
+ import { a as init_claude_permissions, o as resolvePermissionModeSync, r as getClaudePermissionFlagsStringSync, t as BYPASS_PERMISSION_MODE } from "./claude-permissions-DxIjkOVl.js";
45
+ import { a as globalContextFile$1, f as resolveProjectContextFile, h as workspaceContextFile, l as piGlobalContextFile, n as codexGlobalContextFile, o as init_layers, p as resolveWorkspaceContextFile, r as ensureProjectLayer } from "./layers-OHHLphl0.js";
46
+ import { l as init_codex, s as findRolloutPath } from "./codex-CO0HrK3j.js";
47
+ import { C as setMergeTrainEnabled, S as setFlywheelRequireUatBeforeMerge, b as setFlywheelAutoPickupBacklog, c as isCloisterSpawnsPausedSync, d as isFlywheelAutoPickupBacklog, f as isFlywheelGloballyPaused$1, g as setCloisterSpawnsPausedSync, h as setBootReconciliationDecision, m as isMergeTrainEnabled, o as getSetting, p as isFlywheelRequireUatBeforeMerge, r as getBootReconciliationState, s as init_control_settings, u as isDeaconGloballyPausedSync, v as setDeaconGloballyPausedSync, w as setSetting } from "./control-settings-KyYNXZLv.js";
48
+ import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-CvGXUnAF.js";
49
+ import { i as checkPrdGateSync, t as init_pan_dir } from "./pan-dir-BlNrLzW7.js";
50
+ import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-C73m5e6R.js";
51
+ import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-CQ4sjrXc.js";
52
+ import { $t as scanPendingInputsPromise, B as applyIssueBlocksMainLabel, Bt as formatUptime, F as setAgentStatusChangedNotifier, G as applyIssueVetoedLabel, Gt as isSmeeConfiguredSync, H as applyIssueParkedLabel, Ht as getCurrentDockerStats, I as setAgentStoppedNotifier, J as removeIssueParkedLabel, Jt as countPendingAskUserQuestionsForAgent, K as removeIssueBlocksMainLabel, Kt as startSmeeProcessSync, L as setMergeReadyNotifier, Lt as getRuntimeForAgent, O as loadConfig, Q as createInFlightGuard, U as applyIssueReadyLabel, V as applyIssueObjectionLabel, Vt as getContainerHistory, W as applyIssueReleasedLabel, Wt as getSystemHealthSnapshot, X as removeIssueReleasedLabel, Y as removeIssueReadyLabel, Yt as getAgentJsonlMtime, Z as removeIssueVetoedLabel, _t as withConcurrencyLimit, at as listBootReconciliationCandidates, en as detectAwaitingInputForAgent, it as isBootReconciliationCandidate, k as loadState, n as assessDeaconPatrolFreshness, ot as startBootReconciliation, q as removeIssueObjectionLabel, qt as computeAgentEnrichment, rn as parseCodexApprovalPrompt, t as applyBootReconciliationDecision, tn as detectAwaitingInputFromPaneSync, x as getDeaconLogs, zt as getResourceStacks } from "./deacon-2EvA9Ci3.js";
53
+ import { i as CostThresholdError, l as embed, s as parseRelativeTime } from "./scanner-BLCnuXqY.js";
54
+ import { c as tailEventsSync, n as deduplicateEventsSync, o as readEventsSync } from "./events-BFDuPV6n.js";
55
+ import { n as recordBackgroundAiCost, t as init_cost } from "./cost-BE_ulOrw.js";
56
+ import { S as writeLatestFlywheelStatus, _ as readCurrentLatestFlywheelStatus, b as subscribeLatestFlywheelStatus, f as getFlywheelRunDetail, h as listFlywheelRuns, l as buildClassifyLookups, m as isFlywheelRunId, y as resolveLiveFlywheelRunId } from "./flywheel-D9NKvWqb.js";
57
+ import { C as hasDashboardInternalToken, D as getWorkspacePathForIssue, E as rejectUnsafeDashboardMutationRequest, S as dashboardSessionCookieHeader, T as rejectUnauthorizedDashboardSessionMintRequest, _ as syncCacheSync, b as resolveIssueHeadlineCost, d as reconcile, f as reconcilePiTranscripts, g as rebuildCacheSync, h as getCostsForIssueSync, l as resumeQueuedMerges, m as migrateAllSessionsSync, p as reclassifyUnknownCostEventsSync, t as workspacesRouteLayer, u as syncWalFromAllProjects, v as processPendingFeedbackDeliveries, w as rejectUnauthorizedDashboardRequest, x as dashboardCsrfToken, y as getCachedRunningAgents } from "./workspaces-DOeHyKmA.js";
58
+ import { l as detectPlatform, u as init_platform } from "./workspace-manager-D6NgGkiF.js";
59
+ import { O as init_specialists, b as getReviewerSessionName } from "./specialists-BGNZ0_ZW.js";
60
60
  import { t as withBdMutex } from "./bd-mutex-BItGvLQ8.js";
61
- import { c as findPrdAtStatusSync, l as init_prd_locations } from "./archive-planning-oX1pj6nY.js";
62
- import { a as getShadowState, s as init_shadow_state } from "./shadow-state-BiMwdyl1.js";
63
- import { T as verifyAppCanMerge, d as getPullRequestState, f as init_github_app, l as getMergeBackendStatus, p as isGitHubAppConfigured } from "./github-app-BecAnXRX.js";
64
- import { n as init_issue_closed, t as clearIssueClosedCache } from "./issue-closed-Da3DeomA.js";
65
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-qvm7UON7.js";
61
+ import { c as findPrdAtStatusSync, l as init_prd_locations } from "./archive-planning-CPitEZo4.js";
62
+ import { a as getShadowState, s as init_shadow_state } from "./shadow-state-B4ayC7nx.js";
63
+ import { T as verifyAppCanMerge, d as getPullRequestState, f as init_github_app, l as getMergeBackendStatus, p as isGitHubAppConfigured } from "./github-app-DhycHVLF.js";
64
+ import { n as init_issue_closed, t as clearIssueClosedCache } from "./issue-closed-BYC2TCk-.js";
65
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-B9ZqnnX3.js";
66
66
  import { a as init_boot_gates, i as formatBootGateState, o as resolveBootGates } from "./no-resume-mode-yrPEQ_pC.js";
67
67
  import { c as computeCohort, d as computeStats, f as computeWaves, h as selectNeedsPlanning, l as computeEpicGroups, m as normalizeGate, s as classifyIssue, u as computeLanes } from "./pickup-KLRUhThD.js";
68
- import { n as parseSequenceMd, r as writeSequenceMd, t as init_sequence_io } from "./sequence-io-DA0akEQN.js";
69
- import { a as loadWorkspaceMetadataSync } from "./workspace-metadata-QQmo_Z0l.js";
70
- import { i as resolveAutoSpawnOnFinalize, o as spawnPlanningSession } from "./spawn-planning-session-DxLxcM7m.js";
71
- import { d as killRemoteAgent, m as loadRemoteAgentState, o as getRemoteAgentOutput, r as checkRemoteSpendCap, s as init_remote_agents, v as sendToRemoteAgent, y as spawnRemoteAgent } from "./remote-agents-DfhMq6kQ.js";
72
- import { r as spawnInspectAgent } from "./inspect-agent-DOaCDkCF.js";
73
- import { n as init_github_pr_lookup, r as lookupPullRequestNumberForBranch, t as githubPrLookupSource } from "./github-pr-lookup-CzVWuysl.js";
74
- import { a as init_pull_requests, c as getIssuePrTabCacheGeneration, i as fetchIssuePullRequestDiff, l as init_pr_tab_cache, n as fetchIssuePullRequest, o as bumpIssuePrTabCacheGeneration, r as fetchIssuePullRequestDetails, s as getCachedIssuePrTabResponse, t as fetchIssueCheckRuns, u as setCachedIssuePrTabResponse } from "./pull-requests-1WXmTBlo.js";
75
- import { t as enrichReviewStatus } from "./review-status-enrichment-qWvWckYN.js";
76
- import { i as runMemoryFtsTransaction, n as init_fts_db, r as runMemoryFtsStatement, t as closeMemoryFtsDatabases } from "./fts-db-DAHW1yA_.js";
77
- import { c as init_pending, l as maybeTriggerStatusRollup, o as readRecentObservations, r as init_rollup, u as writePendingTurn } from "./rollup-BrUIKMv_.js";
78
- import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-C_1frSDj.js";
79
- import { C as init_git_activity, w as listGitOperationsSync } from "./merge-agent-CHHs5S_0.js";
80
- import { t as getAgentCommandSync } from "./settings-CFEeQRj2.js";
81
- import { n as init_review_agent, r as isExtendedReviewEnabled } from "./review-agent-sZBCpEVv.js";
82
- import { r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-CGuognN3.js";
83
- import { n as init_claude_settings_overlay, t as detectProviderEnvConflicts } from "./claude-settings-overlay-CRyyKKXQ.js";
84
- import { a as init_query_expansion, i as clearQueryExpansionCache, n as init_injection, o as buildMatchQuery, r as injectPromptTimeMemory, s as init_search } from "./injection-Cc4Qt8LZ.js";
85
- import { _ as init_transcript_adapter, a as generateFallbackSummary, c as handoffPreconditionFallbackReason, d as prependFallbackFocus, f as requestHandoffFromAgent, g as getTranscriptAdapter, i as copySessionFromCompactBoundary, l as init_summary_fork, o as generateSummaryForFork, p as reserveSummaryForkSession, r as authorHandoffExternal, s as handoffFailureReason, u as logHandoffFallback } from "./summary-fork-DezPkJSm.js";
86
- import { a as init_conversation_compaction, c as shouldInterceptManualCompact, n as compactConversationNative, o as isCompacting } from "./conversation-compaction-D86Zo2Ci.js";
87
- import { a as init_render, d as validateTemplate, i as hasManagedRegion, l as init_harness, o as userContentOutsideRegion, t as init_context_layers, u as renderForHarness } from "./context-layers-r2ywnQYA.js";
88
- import { r as parseArtifactRef } from "./forge-CoPFXFyl.js";
89
- import { t as getMergeBlockersPayload } from "./merge-blockers-BMhDpMl_.js";
90
- import { a as spawnSequencerAgent, i as init_sequencer_agent, n as clearFinishedSequencerRun, r as getSequencerRunStatus, t as SEQUENCER_AGENT_ID } from "./sequencer-agent-DeflKafB.js";
91
- import "./supervisor-D5GC5jUM.js";
92
- import { i as listTranscriptCheckpoints, r as getTranscriptCheckpoint$1 } from "./checkpoints-qvOqvMuC.js";
68
+ import { n as parseSequenceMd, r as writeSequenceMd, t as init_sequence_io } from "./sequence-io-BozlUb6f.js";
69
+ import { a as loadWorkspaceMetadataSync } from "./workspace-metadata-C8yn8kAH.js";
70
+ import { i as resolveAutoSpawnOnFinalize, o as spawnPlanningSession } from "./spawn-planning-session-dSpOU0lP.js";
71
+ import { d as killRemoteAgent, m as loadRemoteAgentState, o as getRemoteAgentOutput, r as checkRemoteSpendCap, s as init_remote_agents, v as sendToRemoteAgent, y as spawnRemoteAgent } from "./remote-agents-BBTg-vLT.js";
72
+ import { r as spawnInspectAgent } from "./inspect-agent-DY18KEx4.js";
73
+ import { n as init_github_pr_lookup, r as lookupPullRequestNumberForBranch, t as githubPrLookupSource } from "./github-pr-lookup-rt7T9FwA.js";
74
+ import { a as init_pull_requests, c as getIssuePrTabCacheGeneration, i as fetchIssuePullRequestDiff, l as init_pr_tab_cache, n as fetchIssuePullRequest, o as bumpIssuePrTabCacheGeneration, r as fetchIssuePullRequestDetails, s as getCachedIssuePrTabResponse, t as fetchIssueCheckRuns, u as setCachedIssuePrTabResponse } from "./pull-requests-kTRl7cWC.js";
75
+ import { t as enrichReviewStatus } from "./review-status-enrichment-Cp5kFTGl.js";
76
+ import { i as runMemoryFtsTransaction, n as init_fts_db, r as runMemoryFtsStatement, t as closeMemoryFtsDatabases } from "./fts-db-CL-YzSRG.js";
77
+ import { c as init_pending, l as maybeTriggerStatusRollup, o as readRecentObservations, r as init_rollup, u as writePendingTurn } from "./rollup-C22QDVxh.js";
78
+ import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-CaSUXd9r.js";
79
+ import { T as listGitOperationsSync, w as init_git_activity } from "./merge-agent-DNFFsiEm.js";
80
+ import { t as getAgentCommandSync } from "./settings-CSLhh6qR.js";
81
+ import { n as init_review_agent, r as isExtendedReviewEnabled } from "./review-agent-tfR5RDzG.js";
82
+ import { r as isRemoteAvailable, t as createFlyProviderFromConfig } from "./remote-9u9WL0NJ.js";
83
+ import { n as init_claude_settings_overlay, t as detectProviderEnvConflicts } from "./claude-settings-overlay-BPDS6GfE.js";
84
+ import { a as init_query_expansion, i as clearQueryExpansionCache, n as init_injection, o as buildMatchQuery, r as injectPromptTimeMemory, s as init_search } from "./injection-ql0Nddcn.js";
85
+ import { _ as init_transcript_adapter, a as generateFallbackSummary, c as handoffPreconditionFallbackReason, d as prependFallbackFocus, f as requestHandoffFromAgent, g as getTranscriptAdapter, i as copySessionFromCompactBoundary, l as init_summary_fork, o as generateSummaryForFork, p as reserveSummaryForkSession, r as authorHandoffExternal, s as handoffFailureReason, u as logHandoffFallback } from "./summary-fork-BlE30Q-I.js";
86
+ import { a as init_conversation_compaction, c as shouldInterceptManualCompact, n as compactConversationNative, o as isCompacting } from "./conversation-compaction-D3aS5PnS.js";
87
+ import { a as init_render, d as validateTemplate, i as hasManagedRegion, l as init_harness, o as userContentOutsideRegion, t as init_context_layers, u as renderForHarness } from "./context-layers-BNhUBTkf.js";
88
+ import { r as parseArtifactRef } from "./forge-C-SoKy8U.js";
89
+ import { t as getMergeBlockersPayload } from "./merge-blockers-DIOZmqdK.js";
90
+ import { a as spawnSequencerAgent, i as init_sequencer_agent, n as clearFinishedSequencerRun, r as getSequencerRunStatus, t as SEQUENCER_AGENT_ID } from "./sequencer-agent-BEDEHfd2.js";
91
+ import "./supervisor-BSeML_p0.js";
92
+ import { i as listTranscriptCheckpoints, r as getTranscriptCheckpoint$1 } from "./checkpoints-BoX1H2Hf.js";
93
93
  import { createRequire } from "node:module";
94
94
  import * as sp from "node:path";
95
95
  import { basename, delimiter, dirname, extname, isAbsolute, join, normalize, relative, resolve, sep } from "node:path";
@@ -673,7 +673,7 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
673
673
  const beadsDir = join(workspacePath, ".beads");
674
674
  const projectBeadsDir = join(workspacePath, "..", "..", ".beads");
675
675
  if (!(existsSync$1(beadsDir) || existsSync$1(projectBeadsDir))) throw new BeadsNotInitialized({ workspace: workspacePath });
676
- const { getAgentState, spawnAgent, normalizeAgentId } = await import("./agents-C4kZ8a2r.js");
676
+ const { getAgentState, spawnAgent, normalizeAgentId } = await import("./agents-CxbuBjID.js");
677
677
  const normalizedId = normalizeAgentId(issueId);
678
678
  if ((await Effect.runPromise(getAgentState(normalizedId)))?.status === "running") throw new AgentAlreadyRunning({ id: issueId });
679
679
  return {
@@ -704,7 +704,7 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
704
704
  const { workspacePath, projectPath, issue } = opts;
705
705
  if (!existsSync$1(workspacePath)) throw new WorkspaceNotFound({ id: issueId });
706
706
  const sessionName = opts.sessionName ?? `planning-${issueId.toLowerCase()}`;
707
- const { spawnPlanningSession } = await import("./spawn-planning-session-CzDFSKAQ.js");
707
+ const { spawnPlanningSession } = await import("./spawn-planning-session-Bz4_JES2.js");
708
708
  const result = await spawnPlanningSession({
709
709
  issue: {
710
710
  id: issue.id,
@@ -737,14 +737,14 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
737
737
  }),
738
738
  kill: (agentId) => Effect.tryPromise({
739
739
  try: async () => {
740
- const { stopAgent } = await import("./agents-C4kZ8a2r.js");
740
+ const { stopAgent } = await import("./agents-CxbuBjID.js");
741
741
  await Effect.runPromise(stopAgent(agentId));
742
742
  },
743
743
  catch: () => void 0
744
744
  }).pipe(Effect.ignore),
745
745
  message: (agentId, msg) => Effect.tryPromise({
746
746
  try: async () => {
747
- const { messageAgent } = await import("./agents-C4kZ8a2r.js");
747
+ const { messageAgent } = await import("./agents-CxbuBjID.js");
748
748
  await messageAgent(agentId, msg);
749
749
  },
750
750
  catch: (err) => new AgentStartError({
@@ -755,8 +755,8 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
755
755
  }),
756
756
  deepWipe: (issueId, opts) => Effect.tryPromise({
757
757
  try: async () => {
758
- const { deepWipe } = await import("./workflows-pKw9yRSV.js");
759
- const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
758
+ const { deepWipe } = await import("./workflows-B4fIN8VP.js");
759
+ const { resolveProjectFromIssueSync } = await import("./projects-BqRMlDOv.js");
760
760
  const project = resolveProjectFromIssueSync(issueId);
761
761
  const projectPath = project?.projectPath ?? process.cwd();
762
762
  await Effect.runPromise(deepWipe({
@@ -812,8 +812,8 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
812
812
  const { workspacePath, branch } = getWorkspacePath(issueId);
813
813
  const issueLower = issueId.toLowerCase();
814
814
  if (existsSync$1(workspacePath)) return workspacePath;
815
- const { createWorkspace } = await import("./workspace-manager-Cb2a7bg9.js");
816
- const { loadProjectsConfigSync } = await import("./projects-Bqfwuqet.js");
815
+ const { createWorkspace } = await import("./workspace-manager-BIfpzqdU.js");
816
+ const { loadProjectsConfigSync } = await import("./projects-BqRMlDOv.js");
817
817
  const { projects } = loadProjectsConfigSync();
818
818
  const project = resolveProjectFromIssueSync(issueId);
819
819
  if (!project) throw new WorkspaceCreateError({
@@ -848,7 +848,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
848
848
  const { workspacePath } = getWorkspacePath(issueId);
849
849
  const issueLower = issueId.toLowerCase();
850
850
  if (!existsSync$1(workspacePath)) throw new WorkspaceNotFound({ id: issueId });
851
- const { removeWorkspace } = await import("./workspace-manager-Cb2a7bg9.js");
851
+ const { removeWorkspace } = await import("./workspace-manager-BIfpzqdU.js");
852
852
  const project = resolveProjectFromIssueSync(issueId);
853
853
  if (!project) throw new WorkspaceCreateError({
854
854
  id: issueId,
@@ -879,7 +879,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
879
879
  try: async () => {
880
880
  const { workspacePath } = getWorkspacePath(issueId);
881
881
  const issueLower = issueId.toLowerCase();
882
- const { stopWorkspaceDocker } = await import("./workspace-manager-Cb2a7bg9.js");
882
+ const { stopWorkspaceDocker } = await import("./workspace-manager-BIfpzqdU.js");
883
883
  await Effect.runPromise(stopWorkspaceDocker(workspacePath, issueLower));
884
884
  },
885
885
  catch: () => void 0
@@ -948,7 +948,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
948
948
  join(workspacePath, ".devcontainer", "docker-compose.devcontainer.yml")
949
949
  ];
950
950
  if (!composePaths.find((p) => existsSync$1(p))) {
951
- const { ensureDevcontainerSync } = await import("./ensure-devcontainer-CbSXvN9W.js");
951
+ const { ensureDevcontainerSync } = await import("./ensure-devcontainer-BIShzs3M.js");
952
952
  const ensure = ensureDevcontainerSync({
953
953
  workspacePath,
954
954
  issueId
@@ -15966,7 +15966,7 @@ var require_get_vercel_oidc_token = /* @__PURE__ */ __commonJSMin(((exports, mod
15966
15966
  err = error;
15967
15967
  }
15968
15968
  try {
15969
- const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([await import("./token-util-xNaV-00f.js").then((m) => /* @__PURE__ */ __toESM(m.default)), await import("./token-_qujO3JZ.js").then((m) => /* @__PURE__ */ __toESM(m.default))]);
15969
+ const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([await import("./token-util-xNaV-00f.js").then((m) => /* @__PURE__ */ __toESM(m.default)), await import("./token-D2OC_9ms.js").then((m) => /* @__PURE__ */ __toESM(m.default))]);
15970
15970
  if (!token || isExpired(getTokenPayload(token), options?.expirationBufferMs)) {
15971
15971
  await refreshToken(options);
15972
15972
  token = getVercelOidcTokenSync();
@@ -28283,7 +28283,7 @@ var GoogleCloudTranscription = class {
28283
28283
  }
28284
28284
  async start(apiKey, model) {
28285
28285
  try {
28286
- const { SpeechClient } = await import("./src-mK_M_ZIj.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1)).then((module) => module.v1p1beta1 ?? module.v1);
28286
+ const { SpeechClient } = await import("./src-D-VXCC9C.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1)).then((module) => module.v1p1beta1 ?? module.v1);
28287
28287
  if (this.closed) return;
28288
28288
  const stream = new SpeechClient({ apiKey }).streamingRecognize({
28289
28289
  config: {
@@ -30517,7 +30517,7 @@ function isDiscoverableAgentSession(sessionName) {
30517
30517
  async function loadTrackerIssues() {
30518
30518
  const map = /* @__PURE__ */ new Map();
30519
30519
  try {
30520
- const { getSharedIssueService } = await import("./issue-service-singleton-BC2JLZi7.js");
30520
+ const { getSharedIssueService } = await import("./issue-service-singleton-3g_CCY-1.js");
30521
30521
  const issues = (await getSharedIssueService()).getIssues();
30522
30522
  for (const issue of issues) if (issue.identifier) map.set(issue.identifier.toUpperCase(), issue);
30523
30523
  } catch {
@@ -30716,7 +30716,7 @@ async function computeResourceAllocatedIssues() {
30716
30716
  if (!issue.resourceDetails.tmuxSessions.includes(sessionName)) issue.resourceDetails.tmuxSessions.push(sessionName);
30717
30717
  }
30718
30718
  try {
30719
- const { listActiveRemoteAgentStates } = await import("./remote-agents-UHoi4oGr.js");
30719
+ const { listActiveRemoteAgentStates } = await import("./remote-agents-B4eWgwNd.js");
30720
30720
  for (const remoteState of listActiveRemoteAgentStates()) {
30721
30721
  const issue = ensureIssue(remoteState.issueId);
30722
30722
  if (!issue) continue;
@@ -31285,7 +31285,7 @@ async function completePlanningArtifacts(options) {
31285
31285
  if (workspaceIssueId && workspaceIssueId.toLowerCase() !== issueLower) throw new Error(`Workspace vBRIEF is for ${workspaceIssueId.toUpperCase()}, not ${upperIssueId}`);
31286
31286
  assertPlanQuality(workspaceDoc);
31287
31287
  const createBeads = options.createBeads ?? (async (path) => {
31288
- const mod = await import("./beads-BNU-fb48.js");
31288
+ const mod = await import("./beads-CivpXztb.js");
31289
31289
  return await Effect.runPromise(mod.createBeadsFromVBrief(path));
31290
31290
  });
31291
31291
  emitCompletePlanningPhase(upperIssueId, "specWrite", "start", "writing proposed vBRIEF spec", { projectPath });
@@ -31964,7 +31964,7 @@ async function closeIssuePullRequest(issueId, reason = "Canceled via Overdeck")
31964
31964
  timeout: 15e3
31965
31965
  });
31966
31966
  try {
31967
- const { setReviewStatusSync } = await import("./review-status-JhQ3qlDS.js");
31967
+ const { setReviewStatusSync } = await import("./review-status-B0Axo-Ma.js");
31968
31968
  setReviewStatusSync(issueId.toUpperCase(), { prUrl: void 0 });
31969
31969
  } catch {}
31970
31970
  return [`Closed PR #${prNumber} on ${githubCheck.owner}/${githubCheck.repo}`];
@@ -32018,7 +32018,7 @@ async function runDestructiveIssueLifecycle(id, mode, opts = {}) {
32018
32018
  const { ctx, projectConfig } = buildLifecycleContext(id, getIssueDataService$8().getIssueSource(id) ?? void 0);
32019
32019
  const deleteWorkspace = opts.deleteWorkspace ?? true;
32020
32020
  cleanupLog.push(...await closeIssuePullRequest(id, mode === "cancel" ? "Canceled via Overdeck" : "Reset to Todo via Overdeck"));
32021
- const { resetToTodo, cancelIssueWorkflow } = await import("./lifecycle-f1GbDK33.js");
32021
+ const { resetToTodo, cancelIssueWorkflow } = await import("./lifecycle-B8IdvUbt.js");
32022
32022
  const workflow = mode === "cancel" ? cancelIssueWorkflow : resetToTodo;
32023
32023
  const result = await Effect.runPromise(workflow(ctx, {
32024
32024
  deleteWorkspace,
@@ -32033,7 +32033,7 @@ async function runDestructiveIssueLifecycle(id, mode, opts = {}) {
32033
32033
  }));
32034
32034
  cleanupLog.push(...result.steps.flatMap((step) => step.details || [step.error].filter(Boolean)));
32035
32035
  if (mode === "cancel") try {
32036
- const { transitionVBriefOnMain } = await import("./lifecycle-io-D56q8zlO.js");
32036
+ const { transitionVBriefOnMain } = await import("./lifecycle-io-BMCH1Bxg.js");
32037
32037
  const tx = await Effect.runPromise(transitionVBriefOnMain(ctx.projectPath, id, "cancelled", "cancelled", `scope: cancel ${id.toUpperCase()} vBRIEF`));
32038
32038
  if (tx.moved) cleanupLog.push(`vBRIEF moved ${tx.fromDir} → cancelled`);
32039
32039
  if (tx.committed) cleanupLog.push(`Committed vBRIEF cancellation on main`);
@@ -32041,8 +32041,8 @@ async function runDestructiveIssueLifecycle(id, mode, opts = {}) {
32041
32041
  cleanupLog.push(`vBRIEF cancel transition failed (non-fatal): ${err?.message ?? err}`);
32042
32042
  }
32043
32043
  try {
32044
- const { killAllReviewerSessions } = await import("./review-agent-uwVftH98.js");
32045
- const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
32044
+ const { killAllReviewerSessions } = await import("./review-agent-Bf9XjLnl.js");
32045
+ const { resolveProjectFromIssueSync } = await import("./projects-BqRMlDOv.js");
32046
32046
  const projectKey = resolveProjectFromIssueSync(id)?.projectKey;
32047
32047
  if (projectKey) {
32048
32048
  const { killed } = await Effect.runPromise(killAllReviewerSessions(projectKey, id.toUpperCase()));
@@ -32056,7 +32056,7 @@ async function runDestructiveIssueLifecycle(id, mode, opts = {}) {
32056
32056
  cleanupLog.push("Cleared review status");
32057
32057
  } catch {}
32058
32058
  try {
32059
- const { resetPostMergeState } = await import("./merge-agent-CfohxFWM.js");
32059
+ const { resetPostMergeState } = await import("./merge-agent-Bwm34MZ5.js");
32060
32060
  resetPostMergeState(id);
32061
32061
  resetPostMergeState(id.toUpperCase());
32062
32062
  cleanupLog.push("Cleared merge state");
@@ -32076,7 +32076,7 @@ function closeIssueTransition(options) {
32076
32076
  const { issueId, body, eventStore } = options;
32077
32077
  const { reason } = body;
32078
32078
  const projectPath = getProjectPath$3(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]);
32079
- const { close: closeWorkflow } = yield* Effect.promise(() => import("./lifecycle-f1GbDK33.js"));
32079
+ const { close: closeWorkflow } = yield* Effect.promise(() => import("./lifecycle-B8IdvUbt.js"));
32080
32080
  const githubCheck = isGitHubIssue$4(issueId);
32081
32081
  const issueDataService = getIssueDataService$8();
32082
32082
  const issueSource = issueDataService.getIssueSource(issueId);
@@ -32343,7 +32343,7 @@ function reopenIssueTransition(options) {
32343
32343
  else clearReviewStatus(id.toUpperCase());
32344
32344
  } catch {}
32345
32345
  try {
32346
- const { resetPostMergeState } = await import("./merge-agent-CfohxFWM.js");
32346
+ const { resetPostMergeState } = await import("./merge-agent-Bwm34MZ5.js");
32347
32347
  resetPostMergeState(id);
32348
32348
  resetPostMergeState(id.toUpperCase());
32349
32349
  } catch {}
@@ -32363,7 +32363,7 @@ function reopenIssueTransition(options) {
32363
32363
  const projectPath = (teamPrefix ? findProjectByTeamSync(teamPrefix) : null)?.path || "";
32364
32364
  if (projectPath) {
32365
32365
  const workspacePath = join(projectPath, "workspaces", `feature-${issueLower}`);
32366
- const { createBeadsFromVBrief } = await import("./beads-BNU-fb48.js");
32366
+ const { createBeadsFromVBrief } = await import("./beads-CivpXztb.js");
32367
32367
  if (existsSync$1(workspacePath) && await Effect.runPromise(findPlan(workspacePath))) try {
32368
32368
  const { stdout: bdCheck } = await Effect.runPromise(withBdMutex(() => Effect.promise(() => execFileAsync$11("bd", [
32369
32369
  "list",
@@ -32440,7 +32440,7 @@ function moveIssueStatus(options) {
32440
32440
  "done"
32441
32441
  ];
32442
32442
  if (!targetStatus || !validStatuses.includes(targetStatus)) return jsonResponse({ error: `Invalid targetStatus. Must be one of: ${validStatuses.join(", ")}` }, { status: 400 });
32443
- const { updateShadowState } = yield* Effect.promise(() => import("./shadow-state-1aS8FijU.js"));
32443
+ const { updateShadowState } = yield* Effect.promise(() => import("./shadow-state-CHqWHD3T.js"));
32444
32444
  const issueState = {
32445
32445
  backlog: "open",
32446
32446
  todo: "open",
@@ -32667,7 +32667,7 @@ async function copySettingsToWorkspace(id) {
32667
32667
  success: false,
32668
32668
  error: "Workspace not found"
32669
32669
  }, { status: 404 });
32670
- const { copyOverdeckSettingsToWorkspaceSync } = await import("./workspace-manager-Cb2a7bg9.js");
32670
+ const { copyOverdeckSettingsToWorkspaceSync } = await import("./workspace-manager-BIfpzqdU.js");
32671
32671
  const result = copyOverdeckSettingsToWorkspaceSync(workspacePath);
32672
32672
  return jsonResponse({
32673
32673
  success: result.errors.length === 0 || result.copied.length > 0,
@@ -32702,7 +32702,7 @@ function generateTasksForIssue(id) {
32702
32702
  success: false,
32703
32703
  error: `No vBRIEF spec found on main for ${id} — run planning first.`
32704
32704
  }, { status: 409 });
32705
- const { createBeadsFromVBrief } = yield* Effect.promise(() => import("./beads-BNU-fb48.js"));
32705
+ const { createBeadsFromVBrief } = yield* Effect.promise(() => import("./beads-CivpXztb.js"));
32706
32706
  const result = yield* createBeadsFromVBrief(workspacePath);
32707
32707
  if (!result.success || result.created.length === 0) {
32708
32708
  const errors = result.errors.length > 0 ? result.errors : ["Beads creation produced no tasks"];
@@ -33142,7 +33142,7 @@ function restartFromPlan(options) {
33142
33142
  });
33143
33143
  const resetResult = yield* Effect.promise(async () => {
33144
33144
  try {
33145
- const { runGitResetHard } = await import("./dangerous-git-ops-Dcw7PbYo.js");
33145
+ const { runGitResetHard } = await import("./dangerous-git-ops-04Ba-Qu3.js");
33146
33146
  async function findPlanningCommit(grep, label) {
33147
33147
  try {
33148
33148
  const { stdout } = await execAsync$7(`git log --grep="${grep.replace(/"/g, "\\\"")}" --format=%H -1`, {
@@ -33594,7 +33594,7 @@ function closeOutIssue(id) {
33594
33594
  }
33595
33595
  const closeOutResult = yield* Effect.promise(async () => {
33596
33596
  try {
33597
- const { closeOut } = await import("./lifecycle-f1GbDK33.js");
33597
+ const { closeOut } = await import("./lifecycle-B8IdvUbt.js");
33598
33598
  return {
33599
33599
  ok: true,
33600
33600
  result: await Effect.runPromise(closeOut(ctx))
@@ -33680,7 +33680,7 @@ function bulkCloseOut(body) {
33680
33680
  const invalidIds = issueIds.filter((id) => !isValidIssueId(id));
33681
33681
  if (invalidIds.length > 0) return jsonResponse({ error: `Invalid issue ID format: ${invalidIds.join(", ")}` }, { status: 400 });
33682
33682
  const eventStore = yield* EventStoreService;
33683
- const { closeOut } = yield* Effect.promise(() => import("./lifecycle-f1GbDK33.js"));
33683
+ const { closeOut } = yield* Effect.promise(() => import("./lifecycle-B8IdvUbt.js"));
33684
33684
  const issueDataService = getIssueDataService$5();
33685
33685
  const tasks = [];
33686
33686
  const agentChecks = yield* withConcurrencyLimit(issueIds.map((id) => Effect.promise(async () => {
@@ -33876,8 +33876,8 @@ const getIssueShipLogRoute = HttpRouter.add("GET", "/api/issues/:id/ship-log", h
33876
33876
  const id = (yield* HttpRouter.params)["id"] ?? "";
33877
33877
  if (!parseIssueIdSync(id)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
33878
33878
  return yield* Effect.promise(async () => {
33879
- const { getShipLog } = await import("./ship-log-CMWH3H5-.js");
33880
- const { getReviewStatusSync } = await import("./review-status-JhQ3qlDS.js");
33879
+ const { getShipLog } = await import("./ship-log-CDVmOlZP.js");
33880
+ const { getReviewStatusSync } = await import("./review-status-B0Axo-Ma.js");
33881
33881
  const log = getShipLog(id);
33882
33882
  const rs = getReviewStatusSync(id);
33883
33883
  return jsonResponse({
@@ -38306,7 +38306,7 @@ Be specific: reference actual file names, function names, requirement text, disc
38306
38306
  const { command: cliCmd, args: cliArgs } = getAgentCommandSync(statusModelId);
38307
38307
  const modelFlag = cliArgs.length > 0 ? ` ${cliArgs.join(" ")}` : "";
38308
38308
  const promptFile = join(planningDir, ".status-review-prompt.tmp");
38309
- const { getProviderForModelSync, getProviderEnvSync } = await import("./providers-JjK6izqX.js");
38309
+ const { getProviderForModelSync, getProviderEnvSync } = await import("./providers-gZ0cUgQM.js");
38310
38310
  let providerEnvStr = "";
38311
38311
  let providerEnv = {};
38312
38312
  const statusProvider = getProviderForModelSync(statusModelId);
@@ -38389,7 +38389,7 @@ const postMissionControlUploadRoute = HttpRouter.add("POST", "/api/command-deck/
38389
38389
  let safeName = filename.replace(/[^a-zA-Z0-9._-]/g, "-");
38390
38390
  let processedContent = content;
38391
38391
  if (safeName.endsWith(".vtt")) {
38392
- const { vttToMarkdown } = yield* Effect.promise(() => import("./vtt-parser-CKc-smWM.js"));
38392
+ const { vttToMarkdown } = yield* Effect.promise(() => import("./vtt-parser-C57tEF7-.js"));
38393
38393
  processedContent = vttToMarkdown(content);
38394
38394
  safeName = safeName.replace(/\.vtt$/, ".md");
38395
38395
  }
@@ -44204,7 +44204,7 @@ const postRallyValidateRoute = HttpRouter.add("POST", "/api/rally/validate", Eff
44204
44204
  }, { status: 400 });
44205
44205
  return yield* Effect.promise(async () => {
44206
44206
  try {
44207
- const { RallyRestApi } = await import("./rally-api-BtvwdX6d.js");
44207
+ const { RallyRestApi } = await import("./rally-api-jOk4vit_.js");
44208
44208
  const api = new RallyRestApi({
44209
44209
  apiKey,
44210
44210
  server: server || "https://rally1.rallydev.com"
@@ -44532,7 +44532,7 @@ const getPlanningStatusRoute = HttpRouter.add("GET", "/api/planning/:issueId/sta
44532
44532
  const remoteState = loadRemoteAgentState(sessionName);
44533
44533
  const isRemote = !!remoteState;
44534
44534
  const vmName = remoteState?.vmName ?? "";
44535
- const { getAgentStateSync } = await import("./agents-C4kZ8a2r.js");
44535
+ const { getAgentStateSync } = await import("./agents-CxbuBjID.js");
44536
44536
  const agentStarting = getAgentStateSync(sessionName)?.status === "starting";
44537
44537
  let tmuxSessionAlive = false;
44538
44538
  if (!isRemote) try {
@@ -44675,7 +44675,7 @@ Continue the PLANNING session. Do NOT implement anything.
44675
44675
  `);
44676
44676
  const agentCwd = workspacePath;
44677
44677
  if (existsSync$1(outputFile)) await rename(outputFile, join(planningDir, `output-${Date.now()}.jsonl`));
44678
- const { getAgentCommandSync } = await import("./settings-DEhYpW0k.js");
44678
+ const { getAgentCommandSync } = await import("./settings-CSaXtkoA.js");
44679
44679
  let msgPlanningModel = "claude-sonnet-5";
44680
44680
  try {
44681
44681
  msgPlanningModel = resolveModel("plan", void 0, loadConfigSync().config);
@@ -44796,7 +44796,7 @@ async function getIndexStats(rootPath, isMain) {
44796
44796
  }
44797
44797
  const getTldrStatusRoute = HttpRouter.add("GET", "/api/services/tldr/status", Effect.promise(async () => {
44798
44798
  try {
44799
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Big5IZ_M.js");
44799
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Rn1Zue0P.js");
44800
44800
  const projectRoot = process.cwd();
44801
44801
  const venvPath = join(projectRoot, ".venv");
44802
44802
  const results = [];
@@ -44841,7 +44841,7 @@ const getTldrStatusRoute = HttpRouter.add("GET", "/api/services/tldr/status", Ef
44841
44841
  }));
44842
44842
  const postTldrStartRoute = HttpRouter.add("POST", "/api/services/tldr/start", Effect.promise(async () => {
44843
44843
  try {
44844
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Big5IZ_M.js");
44844
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Rn1Zue0P.js");
44845
44845
  const projectRoot = process.cwd();
44846
44846
  const venvPath = join(projectRoot, ".venv");
44847
44847
  if (!existsSync$1(venvPath)) return jsonResponse({ error: "No .venv found in project root" }, { status: 404 });
@@ -44858,7 +44858,7 @@ const postTldrStartRoute = HttpRouter.add("POST", "/api/services/tldr/start", Ef
44858
44858
  }));
44859
44859
  const postTldrStopRoute = HttpRouter.add("POST", "/api/services/tldr/stop", Effect.promise(async () => {
44860
44860
  try {
44861
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Big5IZ_M.js");
44861
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Rn1Zue0P.js");
44862
44862
  const projectRoot = process.cwd();
44863
44863
  const venvPath = join(projectRoot, ".venv");
44864
44864
  if (!existsSync$1(venvPath)) return jsonResponse({ error: "No .venv found in project root" }, { status: 404 });
@@ -44875,7 +44875,7 @@ const postTldrStopRoute = HttpRouter.add("POST", "/api/services/tldr/stop", Effe
44875
44875
  }));
44876
44876
  const postTldrReloadRoute = HttpRouter.add("POST", "/api/services/tldr/reload", Effect.promise(async () => {
44877
44877
  try {
44878
- const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Big5IZ_M.js");
44878
+ const { getTldrDaemonServiceSync } = await import("./tldr-daemon-Rn1Zue0P.js");
44879
44879
  const enabled = isTldrEnabledSync();
44880
44880
  const projectRoot = process.cwd();
44881
44881
  const targets = [];
@@ -44951,7 +44951,7 @@ const getVersionRoute = HttpRouter.add("GET", "/api/version", Effect.promise(asy
44951
44951
  const version = await getOverdeckVersion();
44952
44952
  let supervisorUrl = null;
44953
44953
  try {
44954
- const { getSupervisorUrlSync } = await import("./supervisor-DQMK2e3I.js");
44954
+ const { getSupervisorUrlSync } = await import("./supervisor-03Tj_Wra.js");
44955
44955
  supervisorUrl = getSupervisorUrlSync();
44956
44956
  } catch {}
44957
44957
  return jsonResponse({
@@ -44961,7 +44961,7 @@ const getVersionRoute = HttpRouter.add("GET", "/api/version", Effect.promise(asy
44961
44961
  });
44962
44962
  }));
44963
44963
  const getPrerequisitesRoute = HttpRouter.add("GET", "/api/prerequisites", Effect.promise(async () => {
44964
- const { checkSystemPrerequisites } = await import("./system-prerequisites-BsI9hxh9.js");
44964
+ const { checkSystemPrerequisites } = await import("./system-prerequisites-DnmLYOnU.js");
44965
44965
  return jsonResponse(await checkSystemPrerequisites());
44966
44966
  }));
44967
44967
  const getRegisteredProjectsRoute = HttpRouter.add("GET", "/api/registered-projects", Effect.try({
@@ -45119,7 +45119,7 @@ const postShadowMonitorRoute = HttpRouter.add("POST", "/api/shadow/:issueId/moni
45119
45119
  const projectPath = await getProjectPath(issuePrefix);
45120
45120
  const workspacePath = join(projectPath, "workspaces", `feature-${issueLower}`);
45121
45121
  if (!existsSync$1(workspacePath)) return jsonResponse({ error: "Workspace not found" }, { status: 404 });
45122
- const { gatherArtifacts, generateBasicInference, updateInferenceDocumentSync } = await import("./shadow-engineering-BRxnVSDk.js");
45122
+ const { gatherArtifacts, generateBasicInference, updateInferenceDocumentSync } = await import("./shadow-engineering-BMcBN-Of.js");
45123
45123
  const config = {
45124
45124
  issueId,
45125
45125
  workspacePath,
@@ -45149,7 +45149,7 @@ const postShadowObserveRoute = HttpRouter.add("POST", "/api/shadow/:issueId/obse
45149
45149
  if (!existsSync$1(workspacePath)) return jsonResponse({ error: "Workspace not found" }, { status: 404 });
45150
45150
  const ghConfig = getGitHubConfig();
45151
45151
  if (!ghConfig) return jsonResponse({ error: "GitHub not configured - Observer requires GitHub" }, { status: 400 });
45152
- const { runObserverCycle } = await import("./shadow-engineering-BRxnVSDk.js");
45152
+ const { runObserverCycle } = await import("./shadow-engineering-BMcBN-Of.js");
45153
45153
  const firstRepo = ghConfig.repos[0];
45154
45154
  const config = {
45155
45155
  issueId,
@@ -46214,7 +46214,7 @@ async function cleanupConversationAttachments(name) {
46214
46214
  * sessions that the lifecycle poller missed. */
46215
46215
  async function cleanupOrphanedConversationAttachments() {
46216
46216
  try {
46217
- const { listConversations } = await import("./conversations-BmWEluPL.js");
46217
+ const { listConversations } = await import("./conversations-BbDPrz89.js");
46218
46218
  const convNames = new Set(listConversations().map((c) => c.name));
46219
46219
  const root = getConversationAttachmentsRoot();
46220
46220
  await runInBatches((await readdir(root, { withFileTypes: true })).filter((entry) => entry.isDirectory() && !convNames.has(entry.name)).map((entry) => join(root, entry.name)), 10, (path) => rm(path, {
@@ -47080,7 +47080,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
47080
47080
  const codexApprovalPolicy = codexPermMode === "full-access" ? "never" : "on-request";
47081
47081
  const codexSandboxMode = codexPermMode === "full-access" ? "danger-full-access" : codexPermMode === "read-only" ? "read-only" : "workspace-write";
47082
47082
  const codexApprovalsReviewer = codexPermMode === "auto-review" ? "auto_review" : void 0;
47083
- const { initCodexHome, extractThreadIdFromRollout } = await import("./codex-CY-QRuU9.js");
47083
+ const { initCodexHome, extractThreadIdFromRollout } = await import("./codex-Bi1ITSOo.js");
47084
47084
  initCodexHome(codexHome, {
47085
47085
  trustedDir: cwd,
47086
47086
  approvalPolicy: codexApprovalPolicy,
@@ -47149,7 +47149,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
47149
47149
  } catch {}
47150
47150
  console.log(`[claude-invoke] purpose=conversation-session | model=${model || "default"} | source=conversations.ts:spawnConversationSession | session=${tmuxSession} | resume=${resume} | command="${runtimeCommand}"`);
47151
47151
  try {
47152
- const { preTrustDirectory } = await import("./workspace-manager-Cb2a7bg9.js");
47152
+ const { preTrustDirectory } = await import("./workspace-manager-BIfpzqdU.js");
47153
47153
  preTrustDirectory(cwd);
47154
47154
  } catch {}
47155
47155
  try {
@@ -47166,7 +47166,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
47166
47166
  const codexHomeDir = codexFields.codexHome;
47167
47167
  (async () => {
47168
47168
  try {
47169
- const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-CY-QRuU9.js");
47169
+ const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-Bi1ITSOo.js");
47170
47170
  const rollout = await waitForCodexRollout(codexHomeDir, 12e4);
47171
47171
  if (rollout) {
47172
47172
  const threadId = extractThreadIdFromRollout(rollout);
@@ -50197,7 +50197,7 @@ async function registerProjectFromPath(opts) {
50197
50197
  registerProjectSync(key, projectConfig);
50198
50198
  const seededContextLayer = ensureProjectLayer(fullPath);
50199
50199
  try {
50200
- const { preTrustDirectorySync } = await import("./workspace-manager-Cb2a7bg9.js");
50200
+ const { preTrustDirectorySync } = await import("./workspace-manager-BIfpzqdU.js");
50201
50201
  preTrustDirectorySync(fullPath);
50202
50202
  } catch {}
50203
50203
  let hooksInstalled = 0;
@@ -50233,7 +50233,7 @@ init_pan_dir();
50233
50233
  init_paths();
50234
50234
  const execAsync$2 = promisify(exec);
50235
50235
  async function getIssueDataService() {
50236
- const { getSharedIssueService } = await import("./issue-service-singleton-BC2JLZi7.js");
50236
+ const { getSharedIssueService } = await import("./issue-service-singleton-3g_CCY-1.js");
50237
50237
  return getSharedIssueService();
50238
50238
  }
50239
50239
  /** Returns true if the path exists (any type). */
@@ -52233,7 +52233,7 @@ async function refreshMergeStateFromGitHub(issueId, repo, prNumber) {
52233
52233
  let mergeState;
52234
52234
  let isDraft;
52235
52235
  let checksFailed;
52236
- const { isGitHubAppConfigured, getPullRequestState } = await import("./github-app-C7lftMNj.js");
52236
+ const { isGitHubAppConfigured, getPullRequestState } = await import("./github-app-DIr70YLg.js");
52237
52237
  if (isGitHubAppConfigured()) {
52238
52238
  const prState = await Effect.runPromise(getPullRequestState(owner, repoName, prNumber));
52239
52239
  mergeable = prState.mergeable === null ? "UNKNOWN" : prState.mergeable ? "MERGEABLE" : "CONFLICTING";
@@ -52382,8 +52382,8 @@ async function handlePullRequestPromise(payload) {
52382
52382
  bumpIssuePrTabCacheGeneration(issueId);
52383
52383
  const repo = payload.repository.full_name;
52384
52384
  if (payload.action === "closed" && pr.merged === true) try {
52385
- const { postMergeLifecycle } = await import("./merge-agent-CfohxFWM.js");
52386
- const { resolveProjectFromIssueSync } = await import("./projects-Bqfwuqet.js");
52385
+ const { postMergeLifecycle } = await import("./merge-agent-Bwm34MZ5.js");
52386
+ const { resolveProjectFromIssueSync } = await import("./projects-BqRMlDOv.js");
52387
52387
  const project = resolveProjectFromIssueSync(issueId);
52388
52388
  if (project) {
52389
52389
  const branchName = pr.head.ref;
@@ -52948,7 +52948,7 @@ function getCheckpointWorker() {
52948
52948
  return worker;
52949
52949
  }
52950
52950
  async function runInline(operation, payload) {
52951
- const { claimTranscriptRange, commitTranscriptRange, releaseTranscriptRange, getTranscriptCheckpoint, listTranscriptCheckpoints } = await import("./checkpoints-BK17oicz.js");
52951
+ const { claimTranscriptRange, commitTranscriptRange, releaseTranscriptRange, getTranscriptCheckpoint, listTranscriptCheckpoints } = await import("./checkpoints-Bu_M_Q9W.js");
52952
52952
  switch (operation) {
52953
52953
  case "claimTranscriptRange": return claimTranscriptRange(payload);
52954
52954
  case "commitTranscriptRange": return commitTranscriptRange(payload);
@@ -54102,7 +54102,7 @@ function buildPendingTurn(input, fromOffset, toOffset, compressed) {
54102
54102
  };
54103
54103
  }
54104
54104
  async function emitMemoryObservationCreated(observation, timestamp) {
54105
- const { initEventStore } = await import("./event-store-DU3HkZlN.js");
54105
+ const { initEventStore } = await import("./event-store-C02Gprug.js");
54106
54106
  await (await initEventStore()).appendAsync({
54107
54107
  type: "memory.observation_created",
54108
54108
  timestamp,
@@ -57199,7 +57199,7 @@ async function getFlywheelConversationPayload() {
57199
57199
  };
57200
57200
  }
57201
57201
  async function postFlywheelReportPayload() {
57202
- const { flywheelReportCommand } = await import("./flywheel-D2LdPSic.js");
57202
+ const { flywheelReportCommand } = await import("./flywheel-DwQCoZQG.js");
57203
57203
  await flywheelReportCommand({ cwd: process.cwd() });
57204
57204
  return {
57205
57205
  status: 200,
@@ -57357,11 +57357,11 @@ const getMergeBlockersRoute = HttpRouter.add("GET", "/api/flywheel/merge-blocker
57357
57357
  async function defaultGetOrderedIssueIds() {
57358
57358
  const status = await readCurrentFlywheelStatusForDashboard();
57359
57359
  if (!status) return [];
57360
- const { computeMergeQueue } = await import("./flywheel-merge-order-CttTazRY.js");
57360
+ const { computeMergeQueue } = await import("./flywheel-merge-order-f1bi5XIf.js");
57361
57361
  return (await Effect.runPromise(computeMergeQueue(status.activePipeline, process.cwd()).pipe(Effect.provide(layer)))).map((i) => i.issueId);
57362
57362
  }
57363
57363
  async function defaultMergeOne(issueId) {
57364
- const { triggerMerge } = await import("./merge-ops-Czke6UAp.js");
57364
+ const { triggerMerge } = await import("./merge-ops-B7m-hBEZ.js");
57365
57365
  const r = await triggerMerge(issueId);
57366
57366
  return r.success ? { ok: true } : {
57367
57367
  ok: false,
@@ -57381,7 +57381,7 @@ async function postFlywheelMergeNextPayload(payload, deps = {}) {
57381
57381
  body: { error: "n must be a positive integer" }
57382
57382
  };
57383
57383
  const issueIds = (await (deps.getOrderedIssueIds ?? defaultGetOrderedIssueIds)()).slice(0, n);
57384
- const { shipMergeBatch } = await import("./merge-batch-BwhGdlh4.js");
57384
+ const { shipMergeBatch } = await import("./merge-batch-BpYXUaqJ.js");
57385
57385
  return {
57386
57386
  status: 200,
57387
57387
  body: { outcomes: await shipMergeBatch(issueIds, { merge: deps.merge ?? defaultMergeOne }) }
@@ -57538,7 +57538,7 @@ const getFlywheelMergeQueueRoute = HttpRouter.add("GET", "/api/flywheel/merge-qu
57538
57538
  return yield* Effect.promise(async () => {
57539
57539
  const status = await readCurrentFlywheelStatusForDashboard();
57540
57540
  if (!status) return jsonResponse([]);
57541
- const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-CttTazRY.js");
57541
+ const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-f1bi5XIf.js");
57542
57542
  return jsonResponse(await Effect.runPromise(computeMergeQueue(status.activePipeline, process.cwd(), { getPrUrl: resolveMergeQueuePrUrl }).pipe(Effect.provide(layer))));
57543
57543
  });
57544
57544
  })));
@@ -57552,18 +57552,18 @@ function uatGenerationNameFromParam(param) {
57552
57552
  return decoded.startsWith("uat/") ? decoded : `uat/${decoded}`;
57553
57553
  }
57554
57554
  const getUatGenerationsRoute = HttpRouter.add("GET", "/api/flywheel/uat-generations", httpHandler(Effect.gen(function* () {
57555
- const { getUatGenerationsPayload } = yield* Effect.promise(() => import("./uat-train-DGkIkLxu.js"));
57555
+ const { getUatGenerationsPayload } = yield* Effect.promise(() => import("./uat-train-8T24rPzc.js"));
57556
57556
  return jsonResponse(yield* Effect.promise(() => getUatGenerationsPayload()));
57557
57557
  })));
57558
57558
  const getUatCandidateRoute = HttpRouter.add("GET", "/api/flywheel/uat-candidate", httpHandler(Effect.gen(function* () {
57559
- const { getUatCandidatePayload } = yield* Effect.promise(() => import("./uat-train-DGkIkLxu.js"));
57559
+ const { getUatCandidatePayload } = yield* Effect.promise(() => import("./uat-train-8T24rPzc.js"));
57560
57560
  return jsonResponse(yield* Effect.promise(() => getUatCandidatePayload()));
57561
57561
  })));
57562
57562
  const postUatGenerationStackRoute = HttpRouter.add("POST", "/api/flywheel/uat-generations/:name/stack", httpHandler(Effect.gen(function* () {
57563
57563
  const authError = rejectUnsafeDashboardMutationRequest(yield* HttpServerRequest.HttpServerRequest);
57564
57564
  if (authError) return authError;
57565
57565
  const name = uatGenerationNameFromParam((yield* HttpRouter.params)["name"] ?? "");
57566
- const { postUatGenerationStackPayload } = yield* Effect.promise(() => import("./uat-train-DGkIkLxu.js"));
57566
+ const { postUatGenerationStackPayload } = yield* Effect.promise(() => import("./uat-train-8T24rPzc.js"));
57567
57567
  const result = yield* Effect.promise(() => postUatGenerationStackPayload(name));
57568
57568
  if (!result.ok) return jsonResponse({ error: result.error }, { status: result.status });
57569
57569
  return jsonResponse({
@@ -57575,8 +57575,8 @@ const postUatGenerationPromoteRoute = HttpRouter.add("POST", "/api/flywheel/uat-
57575
57575
  const authError = rejectUnsafeDashboardMutationRequest(yield* HttpServerRequest.HttpServerRequest);
57576
57576
  if (authError) return authError;
57577
57577
  const name = uatGenerationNameFromParam((yield* HttpRouter.params)["name"] ?? "");
57578
- const { postUatGenerationPromotePayload } = yield* Effect.promise(() => import("./uat-train-DGkIkLxu.js"));
57579
- const { firePostMergeLifecycle } = yield* Effect.promise(() => import("./specialists-BLIreoE7.js"));
57578
+ const { postUatGenerationPromotePayload } = yield* Effect.promise(() => import("./uat-train-8T24rPzc.js"));
57579
+ const { firePostMergeLifecycle } = yield* Effect.promise(() => import("./specialists-B6f5-5nG.js"));
57580
57580
  const result = yield* Effect.promise(() => postUatGenerationPromotePayload(name, firePostMergeLifecycle));
57581
57581
  if (!result.success) return jsonResponse(result, { status: result.reason === "not-found" ? 404 : result.reason === "merge-failed" ? 500 : 409 });
57582
57582
  return jsonResponse(result);
@@ -57589,7 +57589,7 @@ const postUatGenerationPromoteRoute = HttpRouter.add("POST", "/api/flywheel/uat-
57589
57589
  const postFlywheelAssembleUatRoute = HttpRouter.add("POST", "/api/flywheel/assemble-uat", httpHandler(Effect.gen(function* () {
57590
57590
  const authError = rejectUnsafeDashboardMutationRequest(yield* HttpServerRequest.HttpServerRequest);
57591
57591
  if (authError) return authError;
57592
- const { runUatTrainReconcile } = yield* Effect.promise(() => import("./uat-train-DGkIkLxu.js"));
57592
+ const { runUatTrainReconcile } = yield* Effect.promise(() => import("./uat-train-8T24rPzc.js"));
57593
57593
  return jsonResponse(yield* Effect.promise(() => runUatTrainReconcile({ force: true })));
57594
57594
  })));
57595
57595
  const getFlywheelStateRoute = HttpRouter.add("GET", "/api/flywheel/state", httpHandler(Effect.gen(function* () {
@@ -58460,6 +58460,8 @@ function initSchema(db) {
58460
58460
  review_notes TEXT,
58461
58461
  test_notes TEXT,
58462
58462
  merge_notes TEXT,
58463
+ release_status TEXT,
58464
+ release_notes TEXT,
58463
58465
  updated_at TEXT NOT NULL,
58464
58466
  ready_for_merge INTEGER NOT NULL DEFAULT 0,
58465
58467
  auto_requeue_count INTEGER DEFAULT 0,
@@ -58843,6 +58845,43 @@ function initSchema(db) {
58843
58845
  CREATE INDEX IF NOT EXISTS idx_merge_set_repos_issue_order
58844
58846
  ON merge_set_repos(issue_id, merge_order, repo_key);
58845
58847
 
58848
+ -- ===== Release Sets (PAN-399: coordinated post-merge release state) =====
58849
+ CREATE TABLE IF NOT EXISTS release_sets (
58850
+ issue_id TEXT PRIMARY KEY,
58851
+ project_key TEXT NOT NULL,
58852
+ project_path TEXT NOT NULL,
58853
+ workspace_type TEXT NOT NULL,
58854
+ status TEXT NOT NULL DEFAULT 'pending',
58855
+ created_at TEXT NOT NULL,
58856
+ updated_at TEXT NOT NULL
58857
+ );
58858
+
58859
+ CREATE INDEX IF NOT EXISTS idx_release_sets_project
58860
+ ON release_sets(project_key, updated_at);
58861
+
58862
+ CREATE TABLE IF NOT EXISTS release_set_components (
58863
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
58864
+ issue_id TEXT NOT NULL,
58865
+ component_key TEXT NOT NULL,
58866
+ provider TEXT,
58867
+ trigger TEXT NOT NULL,
58868
+ release_order INTEGER NOT NULL DEFAULT 0,
58869
+ required INTEGER NOT NULL DEFAULT 1,
58870
+ status TEXT NOT NULL DEFAULT 'pending',
58871
+ health_status TEXT,
58872
+ version_status TEXT,
58873
+ smoke_status TEXT,
58874
+ rollback_status TEXT,
58875
+ notes TEXT,
58876
+ FOREIGN KEY (issue_id) REFERENCES release_sets(issue_id) ON DELETE CASCADE
58877
+ );
58878
+
58879
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_release_set_components_issue_component
58880
+ ON release_set_components(issue_id, component_key);
58881
+
58882
+ CREATE INDEX IF NOT EXISTS idx_release_set_components_issue_order
58883
+ ON release_set_components(issue_id, release_order, component_key);
58884
+
58846
58885
  -- ===== Git Operations (PAN-653: persistent git event log) =====
58847
58886
  CREATE TABLE IF NOT EXISTS git_operations (
58848
58887
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -58963,7 +59002,7 @@ function initSchema(db) {
58963
59002
  CREATE INDEX IF NOT EXISTS idx_backlog_sequence_project_rank
58964
59003
  ON backlog_sequence(project_key, rank);
58965
59004
  `);
58966
- db.pragma(`user_version = 59`);
59005
+ db.pragma(`user_version = 60`);
58967
59006
  }
58968
59007
  /**
58969
59008
  * Run schema migrations if the database version is older than SCHEMA_VERSION.
@@ -58971,7 +59010,7 @@ function initSchema(db) {
58971
59010
  */
58972
59011
  function runMigrations(db, dbPath) {
58973
59012
  const currentVersion = db.pragma("user_version", { simple: true });
58974
- if (currentVersion >= 59) return;
59013
+ if (currentVersion >= 60) return;
58975
59014
  if (currentVersion === 0) {
58976
59015
  initSchema(db);
58977
59016
  return;
@@ -59716,7 +59755,48 @@ function runMigrations(db, dbPath) {
59716
59755
  db.exec(`ALTER TABLE agents ADD COLUMN last_yield_resume_at TEXT`);
59717
59756
  } catch {}
59718
59757
  }
59719
- db.pragma(`user_version = 59`);
59758
+ if (currentVersion < 60) db.exec(`
59759
+ CREATE TABLE IF NOT EXISTS release_sets (
59760
+ issue_id TEXT PRIMARY KEY,
59761
+ project_key TEXT NOT NULL,
59762
+ project_path TEXT NOT NULL,
59763
+ workspace_type TEXT NOT NULL,
59764
+ status TEXT NOT NULL DEFAULT 'pending',
59765
+ created_at TEXT NOT NULL,
59766
+ updated_at TEXT NOT NULL
59767
+ );
59768
+ CREATE INDEX IF NOT EXISTS idx_release_sets_project
59769
+ ON release_sets(project_key, updated_at);
59770
+ CREATE TABLE IF NOT EXISTS release_set_components (
59771
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
59772
+ issue_id TEXT NOT NULL,
59773
+ component_key TEXT NOT NULL,
59774
+ provider TEXT,
59775
+ trigger TEXT NOT NULL,
59776
+ release_order INTEGER NOT NULL DEFAULT 0,
59777
+ required INTEGER NOT NULL DEFAULT 1,
59778
+ status TEXT NOT NULL DEFAULT 'pending',
59779
+ health_status TEXT,
59780
+ version_status TEXT,
59781
+ smoke_status TEXT,
59782
+ rollback_status TEXT,
59783
+ notes TEXT,
59784
+ FOREIGN KEY (issue_id) REFERENCES release_sets(issue_id) ON DELETE CASCADE
59785
+ );
59786
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_release_set_components_issue_component
59787
+ ON release_set_components(issue_id, component_key);
59788
+ CREATE INDEX IF NOT EXISTS idx_release_set_components_issue_order
59789
+ ON release_set_components(issue_id, release_order, component_key);
59790
+ `);
59791
+ if (currentVersion < 60) {
59792
+ try {
59793
+ db.exec(`ALTER TABLE review_status ADD COLUMN release_status TEXT`);
59794
+ } catch {}
59795
+ try {
59796
+ db.exec(`ALTER TABLE review_status ADD COLUMN release_notes TEXT`);
59797
+ } catch {}
59798
+ }
59799
+ db.pragma(`user_version = 60`);
59720
59800
  }
59721
59801
  //#endregion
59722
59802
  //#region ../../lib/database/index.ts
@@ -61098,7 +61178,7 @@ async function pollOnce(state) {
61098
61178
  try {
61099
61179
  const remoteState = await readFile(join(homedir$1(), ".overdeck", "agents", agentId, "remote-state.json"), "utf-8").then((text) => JSON.parse(text)).catch(() => null);
61100
61180
  if (remoteState?.location === "remote" && remoteState?.vmName) {
61101
- const { getRemoteAgentOutput } = await import("./remote-agents-UHoi4oGr.js");
61181
+ const { getRemoteAgentOutput } = await import("./remote-agents-B4eWgwNd.js");
61102
61182
  stdout = await getRemoteAgentOutput(agentId, remoteState.vmName, 50);
61103
61183
  } else stdout = await Effect.runPromise(capturePane(agentId, 50));
61104
61184
  } catch {
@@ -62282,7 +62362,7 @@ const RESTART_MARKER = join$1(homedir(), ".overdeck", "dashboard-restarting.json
62282
62362
  * loads new content-hashed chunk filenames (no ERR_MODULE_NOT_FOUND after rebuild).
62283
62363
  */
62284
62364
  async function defaultLifecycleRunner(pending) {
62285
- const { postMergeLifecycle, notifyTldrDaemon } = await import("./merge-agent-CfohxFWM.js");
62365
+ const { postMergeLifecycle, notifyTldrDaemon } = await import("./merge-agent-Bwm34MZ5.js");
62286
62366
  await postMergeLifecycle(pending.issueId, pending.projectPath, pending.sourceBranch, { skipDeploy: true });
62287
62367
  if (pending.sourceBranch) await notifyTldrDaemon(pending.projectPath, pending.sourceBranch);
62288
62368
  }
@@ -62603,7 +62683,7 @@ function failureReason(result) {
62603
62683
  return result.error ?? result.message ?? `merge returned status ${result.statusCode ?? "unknown"}`;
62604
62684
  }
62605
62685
  async function defaultMergeIssue(issueId) {
62606
- const { triggerMerge } = await import("./merge-ops-Czke6UAp.js");
62686
+ const { triggerMerge } = await import("./merge-ops-B7m-hBEZ.js");
62607
62687
  return triggerMerge(issueId);
62608
62688
  }
62609
62689
  function defaultAnnounceFailure(issueId, reason) {
@@ -62815,14 +62895,14 @@ function createOverdeckDatabase(options = {}) {
62815
62895
  try {
62816
62896
  applyMigration(db, migrationPath);
62817
62897
  const tables = userTableNames(db);
62818
- if (tables.length !== 30) throw new Error(`Expected 30 overdeck tables, found ${tables.length}: ${tables.join(", ")}`);
62898
+ if (tables.length !== 32) throw new Error(`Expected 32 overdeck tables, found ${tables.length}: ${tables.join(", ")}`);
62819
62899
  assertEmptyTables(db, tables);
62820
62900
  } finally {
62821
62901
  db.close();
62822
62902
  }
62823
62903
  return {
62824
62904
  dbPath,
62825
- tableCount: 30
62905
+ tableCount: 32
62826
62906
  };
62827
62907
  }
62828
62908
  //#endregion
@@ -62884,6 +62964,17 @@ startAgentOutputService();
62884
62964
  console.log("[overdeck] AgentOutputService started");
62885
62965
  startMergeBlockerReconcileService();
62886
62966
  console.log("[overdeck] MergeBlockerReconcileService started");
62967
+ if (process.env.OVERDECK_MODE === "desktop") (async () => {
62968
+ try {
62969
+ const { provisionClaudeHooks } = await import("./claude-hooks-provision-D-jGXmu1.js");
62970
+ const result = await provisionClaudeHooks();
62971
+ if (!result.ok) console.warn(`[overdeck] Claude hook provisioning skipped: ${result.reason}`);
62972
+ else if (result.changed) console.log(`[overdeck] Claude hooks provisioned: ${result.binariesSynced} scripts, registered ${result.registered.length} hook(s)${result.pruned.length ? `, pruned ${result.pruned.length} stale` : ""}`);
62973
+ else console.log("[overdeck] Claude hooks already provisioned (no settings change)");
62974
+ } catch (err) {
62975
+ console.warn("[overdeck] Claude hook provisioning failed:", err instanceof Error ? err.message : String(err));
62976
+ }
62977
+ })();
62887
62978
  setPipelineHandlerSync((event) => {
62888
62979
  switch (event.type) {
62889
62980
  case "status_changed":
@@ -63234,7 +63325,7 @@ reconcileStaleGitHubBlockers().then((n) => {
63234
63325
  }
63235
63326
  }).catch((err) => console.warn(`[overdeck] Startup blocker reconciliation failed: ${err.message}`));
63236
63327
  try {
63237
- const { resetProcessingToQueued } = await import("./merge-sync-bOOtfeXR.js");
63328
+ const { resetProcessingToQueued } = await import("./merge-sync-CcLM2vwW.js");
63238
63329
  const resetCount = resetProcessingToQueued();
63239
63330
  if (resetCount > 0) {
63240
63331
  console.log(`[overdeck] Reset ${resetCount} stuck merge queue entries to queued`);