@overdeck/desktop 0.45.7 → 0.45.8

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 (303) hide show
  1. package/package.json +10 -3
  2. package/server/{acceptance-criteria-DYffaKI9.js → acceptance-criteria-l0DSvFFS.js} +2 -2
  3. package/server/{activity-logger-DO27GsPa.js → activity-logger-DvYvFhwZ.js} +1 -1
  4. package/server/{activity-logger-Dm95Ua07.js → activity-logger-pcbf-e30.js} +3 -2
  5. package/server/{advancing-selfheal-n8tAeFwE.js → advancing-selfheal-CMlGznKv.js} +11 -66
  6. package/server/{agent-gc-CIFaa2vJ.js → agent-gc-BtAzj8QN.js} +3 -3
  7. package/server/{agent-state-service-BqVDA9b8.js → agent-state-service-5ge9xxhx.js} +5 -5
  8. package/server/{agent-state-service-CLifyinO.js → agent-state-service-C1iUF9Ft.js} +1 -1
  9. package/server/agent-state-xk_G8t90.js +3 -0
  10. package/server/{agents-KaEsWZ8D.js → agents-BIggLvi_.js} +1 -1
  11. package/server/{agents-D_x5BSZM.js → agents-DHvsjsuP.js} +129 -61
  12. package/server/{archive-planning-CFxmeFKh.js → archive-planning-B4Qi02bk.js} +1 -1
  13. package/server/{archive-planning-DVUXlRBs.js → archive-planning-zTvWWHG_.js} +4 -4
  14. package/server/{artifact-index-jobs-ChUgzZah.js → artifact-index-jobs-BrByqVkB.js} +2 -2
  15. package/server/{auto-commit-2KiBFh-K.js → auto-commit-DoIPFoEs.js} +1 -1
  16. package/server/{backlog-auto-trigger-DoTEMZMl.js → backlog-auto-trigger-COm_R96V.js} +3 -3
  17. package/server/{bd-mutex-CE6P_MlD.js → bd-mutex-BItGvLQ8.js} +2 -2
  18. package/server/{bd-process-lock-Ch3WNHS9.js → bd-process-lock-CJkoG7hW.js} +2 -2
  19. package/server/{beads-B43pgBIy.js → beads-AmCXEv_E.js} +1 -1
  20. package/server/{beads-BugPvtWp.js → beads-DlZm-vrG.js} +5 -5
  21. package/server/{beads-query-CtqWakL6.js → beads-query-BrVNWoSL.js} +2 -2
  22. package/server/{beads-restore-BqTMSQi-.js → beads-restore-CMbDSB5R.js} +1 -1
  23. package/server/{behavior-vk1sixby.js → behavior-By-2Wipv.js} +3 -3
  24. package/server/{briefing-freshness-B3YxHQ-L.js → briefing-freshness-CXhZdnB8.js} +4 -4
  25. package/server/{checkpoint-manager-CdrwLsQh.js → checkpoint-manager-CPw51H2n.js} +1 -1
  26. package/server/{checkpoint-manager-Dg6cWZz3.js → checkpoint-manager-CfNpHOp4.js} +11 -2
  27. package/server/checkpoint-worker.js +1 -1
  28. package/server/{checkpoints-DDd-0doa.js → checkpoints-BbfH1EIy.js} +2 -2
  29. package/server/{checkpoints-dBCJr0dC.js → checkpoints-BjlBWOA8.js} +1 -1
  30. package/server/{claude-permissions-BpwIcIR7.js → claude-permissions-DrRAs_0F.js} +3 -3
  31. package/server/{claude-settings-overlay-DnraWcz6.js → claude-settings-overlay-BSeS7Ki3.js} +2 -2
  32. package/server/{claude-settings-overlay-xD_Vu420.js → claude-settings-overlay-CEWlIFL-.js} +1 -1
  33. package/server/cli-CJDWXE_Y.js +3 -0
  34. package/server/{cli-BmzYZZKi.js → cli-CvK9xuSS.js} +9 -9
  35. package/server/{cliproxy-DYWdJKZ1.js → cliproxy-BOcmOK6l.js} +1 -1
  36. package/server/{cliproxy-CE2GDY7x.js → cliproxy-J-_1iIXe.js} +2 -2
  37. package/server/{close-issue-CpJd4SOL.js → close-issue-BnpErnD1.js} +5 -5
  38. package/server/{closed-issue-reaper-QpcvCDeE.js → closed-issue-reaper-BLCQwTpF.js} +1 -1
  39. package/server/{closed-issue-reaper-DubXY9Zg.js → closed-issue-reaper-DRqK5k39.js} +10 -10
  40. package/server/{codex-j8aVgRou.js → codex-BUZjrnqH.js} +1 -1
  41. package/server/{codex-B3J1TXo7.js → codex-DcInrhok.js} +5 -5
  42. package/server/{compact-beads-CqhLqG-k.js → compact-beads-RFwdZFPA.js} +4 -4
  43. package/server/{compact-beads-BeilHCdj.js → compact-beads-omhUgj5b.js} +1 -1
  44. package/server/{config-DHU0j_pS.js → config-CzcWQ24p.js} +1 -1
  45. package/server/{config-DkEhJM0h.js → config-oWoKf5jO.js} +4 -4
  46. package/server/{config-yaml-DbdN9Fuq.js → config-yaml-DPAieL_G.js} +3 -2
  47. package/server/{conflict-gate-CgOtMo8i.js → conflict-gate-BhKvrPxn.js} +4 -4
  48. package/server/{conflict-gate-D00zFjeu.js → conflict-gate-JdFuhKuF.js} +1 -1
  49. package/server/{context-layers-BHEjT8Cn.js → context-layers-CTjQwcEQ.js} +3 -3
  50. package/server/{context-layers-0Lgq-SE_.js → context-layers-DxKsseHI.js} +2 -2
  51. package/server/{control-settings-CYv732Gs.js → control-settings-BMqUkXmR.js} +4 -4
  52. package/server/{conversation-compaction-Dbw03b-X.js → conversation-compaction-Ba5aZdrb.js} +1 -1
  53. package/server/{conversation-compaction-DKXvmX50.js → conversation-compaction-C5o_eKEm.js} +8 -8
  54. package/server/{conversation-service-BwKUeEvn.js → conversation-service-DvG8vZSV.js} +5 -5
  55. package/server/{conversation-service-kYYeRp9B.js → conversation-service-WKl-sw58.js} +1 -1
  56. package/server/{conversations-Dwr1jHrO.js → conversations-DL_BAWVk.js} +4 -4
  57. package/server/{conversations-D-uOnA8T.js → conversations-Dcx6LeIh.js} +1 -1
  58. package/server/{cost-DiSDkYe7.js → cost-C2CuA66z.js} +2 -2
  59. package/server/{cost-DNIyZH1X.js → cost-DaOG8sUB.js} +3 -3
  60. package/server/{cost-sync-CfXu-3TF.js → cost-sync-8lkDeL9g.js} +3 -3
  61. package/server/{dag-DZBowTd2.js → dag-jH8ZkewR.js} +3 -3
  62. package/server/{dangerous-git-ops-Pongxg2d.js → dangerous-git-ops-Dcw7PbYo.js} +1 -1
  63. package/server/dashboard-db-worker.js +6 -6
  64. package/server/{deacon-DT0BsVyE.js → deacon-Cv2RMfHs.js} +3 -3
  65. package/server/{deacon-f0yvsG5S.js → deacon-j3qSZ7--.js} +222 -110
  66. package/server/{deacon-nudge-log-Cmcch2Av.js → deacon-nudge-log-CJGA6aSQ.js} +1 -1
  67. package/server/deacon-swarm-D1iAUX-P.js +2 -0
  68. package/server/{deacon-swarm-BBGnhvD2.js → deacon-swarm-DadWNi5J.js} +88 -43
  69. package/server/deacon.js +8 -8
  70. package/server/{devcontainer-renderer-Cpz7XBj0.js → devcontainer-renderer-DUJYYRQB.js} +3 -3
  71. package/server/{dist-DypOkJv9.js → dist-BIC8spJ0.js} +1 -1
  72. package/server/dist-BUplB3Od.js +3 -0
  73. package/server/{docker-DARVx0OZ.js → docker-Q4bphryk.js} +2 -2
  74. package/server/{ensure-devcontainer-Dmdw4BxF.js → ensure-devcontainer-BCB6fHp9.js} +1 -1
  75. package/server/{ensure-devcontainer-BJssuBG6.js → ensure-devcontainer-XLL0vtgV.js} +4 -4
  76. package/server/{esm-shims-Crmvo9Ln.js → esm-shims-DiV9jHa_.js} +1 -1
  77. package/server/{event-store-BeEE8pW5.js → event-store-DIk9wvnS.js} +1 -1
  78. package/server/{event-store-DrfTJZ1_.js → event-store-DTJXZjCl.js} +4 -4
  79. package/server/events-BlzVUyTx.js +3 -0
  80. package/server/{events-BbClwoM-.js → events-DGWZzye2.js} +4 -4
  81. package/server/{factory-DVv9cpG5.js → factory-rG4T40su.js} +4 -4
  82. package/server/{feature-registry-population-C6eVdq4J.js → feature-registry-population-Dwyj9gEM.js} +4 -4
  83. package/server/{feature-registry-storage-ByBosRId.js → feature-registry-storage-CnGyNgAq.js} +2 -2
  84. package/server/{features-EZfSwuqq.js → features-CYY2_Eeh.js} +2 -2
  85. package/server/{feedback-target-DENaINE6.js → feedback-target-C4DaDSZ8.js} +1 -1
  86. package/server/{feedback-target-Dv4VnbQl.js → feedback-target-oE4-Esxl.js} +48 -17
  87. package/server/{feedback-writer-Dxg8qM8i.js → feedback-writer-DMaO0XXa.js} +4 -4
  88. package/server/{feedback-writer-BvHE1I-3.js → feedback-writer-thrdxYpK.js} +1 -1
  89. package/server/{flywheel-Akbd9VNM.js → flywheel-BqDdGvrQ.js} +1 -1
  90. package/server/{flywheel-B4KN9BmW.js → flywheel-ClMjGW_u.js} +11 -11
  91. package/server/{flywheel-ByZyAv3P.js → flywheel-DefHRzY4.js} +13 -13
  92. package/server/{flywheel-merge-order-DPFZbt-w.js → flywheel-merge-order-B6YDSElh.js} +1 -1
  93. package/server/{flywheel-merge-order-BYUPxqgx.js → flywheel-merge-order-CuDcqTRJ.js} +7 -7
  94. package/server/forge-BfP7OJwK.js +2 -0
  95. package/server/{forge-BnTExkbK.js → forge-BixzckB0.js} +2 -2
  96. package/server/{from-B2i_NgIH.js → from-D4xmArTA.js} +1 -1
  97. package/server/{fts-db-dnCj-PD3.js → fts-db-DPtxOAjp.js} +2 -2
  98. package/server/{fts-operations-CAAofsTQ.js → fts-operations-VrGjsT0w.js} +2 -2
  99. package/server/{git-utils-CB3gDSM-.js → git-utils-D_cax3fD.js} +2 -2
  100. package/server/{git-utils-Bk7sJZru.js → git-utils-RAmTwjFB.js} +1 -1
  101. package/server/{github-app-CIhMNI4C.js → github-app-B5PDHMyn.js} +1 -1
  102. package/server/{github-app-BIU8a93o.js → github-app-FMXgo3vK.js} +2 -2
  103. package/server/{github-client-DmZgsnYP.js → github-client-VRiB6N-4.js} +1 -1
  104. package/server/{github-client-zREpj5HA.js → github-client-yjbXaqpR.js} +2 -2
  105. package/server/{github-pr-lookup-CPri6JR1.js → github-pr-lookup-t8X8R0c0.js} +2 -2
  106. package/server/{harness-resolve-TzYAiXzZ.js → harness-resolve-DKeSVsJL.js} +3 -3
  107. package/server/{health-events-CDWk8Oz4.js → health-events-CD6q47ub.js} +1 -1
  108. package/server/{health-events-Dd0FuKrE.js → health-events-DaLX4-0a.js} +2 -2
  109. package/server/{hooks-C6HBXlVm.js → hooks-CmHFSj_Z.js} +2 -2
  110. package/server/{hooks-DRLzoFof.js → hooks-D-cbMUzQ.js} +1 -1
  111. package/server/{hume-Bb91r_2I.js → hume-DkVOs1Qi.js} +2 -2
  112. package/server/hume-x9voULey.js +3 -0
  113. package/server/{idle-stack-reaper-BPHnItVj.js → idle-stack-reaper-DBKQ9SKu.js} +3 -3
  114. package/server/{idle-stack-reaper-D5bwmuwX.js → idle-stack-reaper-DdnERp3G.js} +1 -1
  115. package/server/{infra-CCTzpcuJ.js → infra-CpKlYZA9.js} +3 -3
  116. package/server/{injection-D6L7D_w0.js → injection-CszhePD2.js} +7 -7
  117. package/server/{injection-CBrN8UxB.js → injection-DKzL2Axk.js} +1 -1
  118. package/server/{inspect-agent-CSYyFWqP.js → inspect-agent-BKKc0XnB.js} +9 -9
  119. package/server/inspect-agent-vm88mLYr.js +2 -0
  120. package/server/{internal-token-DWhBqgIk.js → internal-token-CQUx9YLc.js} +2 -2
  121. package/server/{internal-token-DCrCAG_M.js → internal-token-DrGdpLFo.js} +1 -1
  122. package/server/{io-DtAQ_2hp.js → io-Wy8YpFeP.js} +2 -2
  123. package/server/{issue-closed-0Zx72zXf.js → issue-closed-BO84g03t.js} +4 -4
  124. package/server/{issue-lifecycle-ZTt6kP_K.js → issue-lifecycle-DnhQgddB.js} +22 -22
  125. package/server/{issue-lifecycle-CJ7-D4XX.js → issue-lifecycle-nY4esZn8.js} +1 -1
  126. package/server/{issue-service-singleton-DNh4RRI7.js → issue-service-singleton-Bnqv1uaa.js} +1 -1
  127. package/server/{issue-service-singleton-DRE7S-Zg.js → issue-service-singleton-_AquSBTl.js} +8 -8
  128. package/server/{issues-CGc8Aaxm.js → issues-ChNcfHta.js} +2 -2
  129. package/server/{label-cleanup-CNsPlXy6.js → label-cleanup-bVXCGWBM.js} +3 -3
  130. package/server/{layers-CO_VLcSv.js → layers-vdvlpFki.js} +2 -2
  131. package/server/{lifecycle-B_NFvTj9.js → lifecycle-CGKm7doE.js} +7 -7
  132. package/server/{lifecycle-io-D0FftBLy.js → lifecycle-io-CdqPkCyk.js} +1 -1
  133. package/server/{lifecycle-io-WDGwa1vV.js → lifecycle-io-DSrv9xGh.js} +4 -4
  134. package/server/{linear-client-MvjflCXs.js → linear-client-BxKvL6U8.js} +1 -1
  135. package/server/{linear-client-CSgH24Ym.js → linear-client-E0HdXtWs.js} +2 -2
  136. package/server/memory-fts-worker.js +1 -1
  137. package/server/{merge-DltB-RGV.js → merge-D3wEbmUJ.js} +1 -1
  138. package/server/{merge-Ce9DHBXM.js → merge-UlAwCk80.js} +4 -4
  139. package/server/{merge-agent-Rv0bNQNU.js → merge-agent-BcgAYStl.js} +27 -27
  140. package/server/{merge-agent-DRXwKxmb.js → merge-agent-Dh8Y9PDO.js} +1 -1
  141. package/server/{merge-batch-LLp_cXUR.js → merge-batch-BwhGdlh4.js} +1 -1
  142. package/server/{merge-blockers-BqYUtLBd.js → merge-blockers-DwdQNsYD.js} +2 -2
  143. package/server/merge-ops-QdBiQ8XB.js +2 -0
  144. package/server/{merge-rebase-AiSEs4QB.js → merge-rebase-CH12_ufi.js} +2 -2
  145. package/server/{merge-set-CUY9msG9.js → merge-set-TRxJwR-w.js} +3 -3
  146. package/server/{merge-set-CSJoIpKB.js → merge-set-rXK3ehnB.js} +1 -1
  147. package/server/{merge-sync-CAjbJeTp.js → merge-sync-BKLKu9kz.js} +1 -1
  148. package/server/{merge-sync-CuyWzzZK.js → merge-sync-CaLRt2cB.js} +2 -2
  149. package/server/{merge-train-DndZCAiv.js → merge-train-DmxlYbEo.js} +3 -3
  150. package/server/{merge-train-deps-Bsy90Q7t.js → merge-train-deps-DBHsOWt9.js} +4 -4
  151. package/server/{merge-verification-Kvh4WViS.js → merge-verification-DA9rvqsE.js} +4 -4
  152. package/server/{multipart-parser-BWnfyoyz.js → multipart-parser-DtIEUW2B.js} +2 -2
  153. package/server/{no-resume-mode-CKy2bwZL.js → no-resume-mode-yrPEQ_pC.js} +1 -1
  154. package/server/{orphan-proposed-reconciler-Cg5_uVy1.js → orphan-proposed-reconciler-Db8tUhce.js} +10 -10
  155. package/server/{orphan-proposed-reconciler-CjUuBs6J.js → orphan-proposed-reconciler-mXV--tcB.js} +1 -1
  156. package/server/{pan-dir-Cn3NUnxU.js → pan-dir-BgBeeZDX.js} +3 -3
  157. package/server/{paths-Bo-kA9ta.js → paths-TE1GOZDr.js} +2 -2
  158. package/server/{pickup-DRn-XNXS.js → pickup-KLRUhThD.js} +1 -1
  159. package/server/{pipeline-notifier-BbGQtvKM.js → pipeline-notifier-aX_5EqQO.js} +2 -2
  160. package/server/{pipeline-notifier-DQsOtdjZ.js → pipeline-notifier-lwMa--Gz.js} +1 -1
  161. package/server/{projects-CKTA6Klk.js → projects-BNmVxnNt.js} +1 -1
  162. package/server/{prompts-CVncQg4P.js → prompts-CelsUdrx.js} +2 -2
  163. package/server/{providers-uPI9uU7Q.js → providers-4-xOzHQu.js} +7 -7
  164. package/server/{providers-CapuDkKX.js → providers-BOnRq5XK.js} +1 -1
  165. package/server/public/assets/{chunk-BO2N2NFS-CaAvtgHW.js → chunk-BO2N2NFS-jJsbVwoD.js} +4 -4
  166. package/server/public/assets/{diagram-OG6HWLK6-C4flU2X9.js → diagram-OG6HWLK6-Cp1aNi3v.js} +1 -1
  167. package/server/public/assets/{dist-DXAnG2e9.js → dist-B2-Oc7J1.js} +1 -1
  168. package/server/public/assets/{dist-DygIHsen.js → dist-Dbb8vdyE.js} +3 -3
  169. package/server/public/assets/{ganttDiagram-6RSMTGT7-BJY25etK.js → ganttDiagram-6RSMTGT7-rujV2mSn.js} +1 -1
  170. package/server/public/assets/{highlighted-body-OFNGDK62-DIEQLSG_.js → highlighted-body-OFNGDK62-Df3Exbbt.js} +1 -1
  171. package/server/public/assets/{index-BsKNi2y5.js → index-rQPa7qlV.js} +88 -88
  172. package/server/public/assets/{linear-CRa2o9KP.js → linear-Ctp3LAJ5.js} +1 -1
  173. package/server/public/assets/mermaid-GHXKKRXX-BnC2HrDq.js +1 -0
  174. package/server/public/assets/{pieDiagram-4H26LBE5-Cb6OrK_c.js → pieDiagram-4H26LBE5-K-m6VCum.js} +1 -1
  175. package/server/public/assets/{prod-DWpuiL-y.js → prod-jqZ3zqVg.js} +4 -4
  176. package/server/public/assets/{quadrantDiagram-W4KKPZXB-DhZzzcAO.js → quadrantDiagram-W4KKPZXB-DXcFax_1.js} +1 -1
  177. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CVe6lE5A.js → sankeyDiagram-5OEKKPKP-DnD_J_rB.js} +1 -1
  178. package/server/public/assets/{xychartDiagram-2RQKCTM6-zukUz5pI.js → xychartDiagram-2RQKCTM6-Dx25iKVp.js} +1 -1
  179. package/server/public/index.html +1 -1
  180. package/server/{pull-requests-C3csHJsc.js → pull-requests-CH4iBFLl.js} +3 -3
  181. package/server/{pull-requests-MeAgb3Ax.js → pull-requests-DL_4klIb.js} +1 -1
  182. package/server/{rally-nalS21zz.js → rally-D0mKv2t8.js} +3 -3
  183. package/server/rally-DffLLIdl.js +3 -0
  184. package/server/{rally-api-DzQryQi8.js → rally-api-CcCdecF-.js} +1 -1
  185. package/server/{rally-api-DdY4ebu3.js → rally-api-DgAt6FbN.js} +2 -2
  186. package/server/{rally-client-9duSds1_.js → rally-client-DYjtgTOu.js} +4 -4
  187. package/server/{rally-client-B16-bZk9.js → rally-client-X0bEEN2B.js} +1 -1
  188. package/server/reap-terminal-sessions-BwJb2DLJ.js +3 -0
  189. package/server/{reap-terminal-sessions-C6rD1pDT.js → reap-terminal-sessions-CAmURC2h.js} +12 -62
  190. package/server/{rebuild-stack-D9qBmVcM.js → rebuild-stack-BLG3rlWa.js} +6 -6
  191. package/server/{rebuild-stack-DrWMHxoY.js → rebuild-stack-ByFCMqTK.js} +1 -1
  192. package/server/{reconstruct-cache--H2QBooC.js → reconstruct-cache-_tDZ2D72.js} +6 -6
  193. package/server/{record-fn7uPjsl.js → record-DjPikotp.js} +1 -1
  194. package/server/{remote-BEkHf2HO.js → remote-B1Trmr0N.js} +3 -3
  195. package/server/{remote-Dl6Hn0zz.js → remote-TN0cV8k-.js} +3 -3
  196. package/server/{remote-agents-DNdP4sew.js → remote-agents-CmbIKw7E.js} +5 -5
  197. package/server/{remote-agents-OB4zwVHz.js → remote-agents-DNuaAgU6.js} +1 -1
  198. package/server/{remote-completion-BINc1Y8c.js → remote-completion-Bklh6loJ.js} +12 -12
  199. package/server/resume-DnIsmIgC.js +3 -0
  200. package/server/review-agent-DgySDb-G.js +3 -0
  201. package/server/{review-agent-C-A6IgXc.js → review-agent-phzqNqIs.js} +599 -197
  202. package/server/{review-artifacts-DTTdAYsU.js → review-artifacts-BGc69epg.js} +7 -7
  203. package/server/{review-context-De14xPtc.js → review-context-CCq56O_Y.js} +7 -7
  204. package/server/{review-monitor-BNV3kjLq.js → review-monitor-BKG2ubt5.js} +2 -2
  205. package/server/{review-status-DWAsTqfJ.js → review-status-BQjqQXZG.js} +160 -52
  206. package/server/{review-status-mo3tyc8L.js → review-status-bBkqUj5i.js} +1 -1
  207. package/server/{review-status-enrichment-C6sr9wOI.js → review-status-enrichment-CGlcApSn.js} +3 -3
  208. package/server/{review-status-sync-D-p7TQit.js → review-status-sync-BWHnrq-k.js} +3 -3
  209. package/server/{review-status-sync-MvYGQLDD.js → review-status-sync-BxHBVH8s.js} +1 -1
  210. package/server/{review-verdict-feedback-BbIfN5Vg.js → review-verdict-feedback-cZh9Wi9G.js} +1 -1
  211. package/server/{review-verdict-feedback-Cfc-THvz.js → review-verdict-feedback-wqnikhMK.js} +16 -36
  212. package/server/{rollup-DgWlrSBc.js → rollup-BJE-Vc7H.js} +8 -8
  213. package/server/{rollup-CxR6GMTe.js → rollup-DBNy1yFB.js} +1 -1
  214. package/server/{scanner-6OmIn5XE.js → scanner-CUGpdp4i.js} +7 -7
  215. package/server/{sequence-io-CxiPMMKM.js → sequence-io-B2GmilSI.js} +4 -4
  216. package/server/{sequencer-agent--xPlSfR2.js → sequencer-agent-D8pW2aU_.js} +5 -5
  217. package/server/server.js +166 -162
  218. package/server/{service-CXje28KS.js → service-CILd-uOt.js} +46 -45
  219. package/server/session-fork-DDSDVoIK.js +99 -0
  220. package/server/{settings-ChvoXExM.js → settings-CBrei_kx.js} +2 -2
  221. package/server/{settings-DZq_bi-B.js → settings-D2wt4nku.js} +3 -3
  222. package/server/settings-vLoKyghx.js +2 -0
  223. package/server/{shadow-engineering-BHeyD5bL.js → shadow-engineering-Ba1D0QUN.js} +2 -2
  224. package/server/{shadow-state-p3YTxrJ5.js → shadow-state-BOaq8BrD.js} +1 -1
  225. package/server/{shadow-state-3L0eHQNE.js → shadow-state-DTC7AMHc.js} +2 -2
  226. package/server/{ship-log-B2EEH__n.js → ship-log-CMWH3H5-.js} +1 -1
  227. package/server/{smart-compaction-DRXK5_io.js → smart-compaction-Bgp_gwcA.js} +1 -1
  228. package/server/{smart-compaction-DMB4hv07.js → smart-compaction-CrP90OFE.js} +7 -7
  229. package/server/{spawn-planning-session-BZfVvIi3.js → spawn-planning-session-BmJWHSCu.js} +15 -15
  230. package/server/{spawn-planning-session-BBUzeHJQ.js → spawn-planning-session-D15KbPOy.js} +1 -1
  231. package/server/{specialist-completion-BAZHHbmp.js → specialist-completion-BiEXUHfD.js} +1 -1
  232. package/server/{specialist-context-DgdhI7rm.js → specialist-context-CwKkcXL9.js} +5 -5
  233. package/server/{specialist-handoff-logger-CH1nC8fq.js → specialist-handoff-logger-B_2VsWli.js} +2 -2
  234. package/server/{specialist-logs-DynFhFXg.js → specialist-logs-CvDxquV_.js} +3 -3
  235. package/server/{specialists-LJ9MZMCz.js → specialists-BCjcG4uE.js} +1 -1
  236. package/server/{specialists-BUKBHtmQ.js → specialists-BYi0k8CZ.js} +18 -18
  237. package/server/{specialists-e0Jmecc1.js → specialists-D07ybnam.js} +78 -85
  238. package/server/{specialists-CF02f9p2.js → specialists-F2uMO4QS.js} +1 -1
  239. package/server/specs-DeS98l_p.js +3 -0
  240. package/server/{src-CNLON0co.js → src-BswtmojL.js} +6 -6
  241. package/server/{src-DhJeCV1p.js → src-Dp0WHgDZ.js} +3 -3
  242. package/server/{src-AXK4mjue.js → src-fgbU-jJ-.js} +6 -3
  243. package/server/{stack-health-8jZH0Lgk.js → stack-health-BJVh1TCg.js} +3 -3
  244. package/server/{stack-health-CXYHwv5D.js → stack-health-Deel1mSW.js} +1 -1
  245. package/server/{state-home-XkLSsJCD.js → state-home-Bgj7i-C7.js} +8 -7
  246. package/server/{summary-fork-shfA2XOf.js → summary-fork-DedqguZb.js} +2 -2
  247. package/server/{summary-fork-BWa0ECGL.js → summary-fork-EjvOkEPl.js} +12 -91
  248. package/server/{supervisor-owMkHcx8.js → supervisor-0oXvLwyC.js} +3 -3
  249. package/server/supervisor-D1-XwmZ7.js +2 -0
  250. package/server/{swarm-readiness-BACUsKOx.js → swarm-readiness-OBgamRql.js} +3 -3
  251. package/server/{teardown-workspace-CYt_PBaq.js → teardown-workspace-5LCVbjfq.js} +14 -14
  252. package/server/{test-agent-queue-C1s6mB8C.js → test-agent-queue-qfsq6uaC.js} +6 -6
  253. package/server/{test-verdict-CmxX3KEf.js → test-verdict-BkubHtti.js} +1 -1
  254. package/server/{test-verdict-njEv9ZY2.js → test-verdict-D3Il7cBK.js} +1 -1
  255. package/server/{tldr-daemon-CEUflKr2.js → tldr-daemon-CJW_P4On.js} +2 -2
  256. package/server/{tldr-daemon-HIo0dwDB.js → tldr-daemon-CJqGsDFh.js} +1 -1
  257. package/server/tmux-CeDD14p1.js +3 -0
  258. package/server/{tmux-CBYZ5lKF.js → tmux-ePNhMIMU.js} +2 -2
  259. package/server/{token-CiS3w6Ma.js → token-_qujO3JZ.js} +1 -1
  260. package/server/{tracker-config-CVCoeaaL.js → tracker-config-C3hiPVAM.js} +2 -2
  261. package/server/{tracker-config-Bx50plWp.js → tracker-config-Drt_tx4D.js} +1 -1
  262. package/server/{tracker-utils-C2Lg4RoB.js → tracker-utils-D6B8scEw.js} +1 -1
  263. package/server/{tracker-utils-mI4d-vh8.js → tracker-utils-bpWs7Xyx.js} +2 -2
  264. package/server/{traefik-connect-D21-YEyX.js → traefik-connect-5EP1WS_Z.js} +1 -1
  265. package/server/{tunnel-BK4PVyb0.js → tunnel-3Ve8BS4H.js} +3 -3
  266. package/server/{tunnel-CcHkuRIS.js → tunnel-AporWhoi.js} +1 -1
  267. package/server/{types-DoPMvws2.js → types-B5u3NxMl.js} +1 -1
  268. package/server/{uat-train-BLFPxqLx.js → uat-train-C3hWXtip.js} +1 -1
  269. package/server/{uat-train-CQ_E-2ei.js → uat-train-CtNGgXxj.js} +27 -27
  270. package/server/{validation-Dab3bnSN.js → validation-BmUB-26g.js} +4 -4
  271. package/server/{validation-1QnjDMc0.js → validation-CbqP_dze.js} +1 -1
  272. package/server/{verification-runner-BO8TgZWA.js → verification-runner-BPAhPWR7.js} +11 -11
  273. package/server/{verification-runner-UhAAqOio.js → verification-runner-DuZRHjPU.js} +1 -1
  274. package/server/{vtt-parser-D-q5-8il.js → vtt-parser-CKc-smWM.js} +1 -1
  275. package/server/{work-agent-prompt-D_7T1xw5.js → work-agent-prompt-DCdHsm-V.js} +11 -11
  276. package/server/workflows-Cz8OtiB4.js +2 -0
  277. package/server/{workflows-CB5SWd0B.js → workflows-H-COJ84X.js} +14 -14
  278. package/server/{workspace-C4Avf_Tp.js → workspace-4ZufqeMe.js} +3 -3
  279. package/server/{workspace--XWYPbn1.js → workspace-DYv9kBg6.js} +1 -1
  280. package/server/{workspace-config-BwJB-bLH.js → workspace-config-DA8U97k9.js} +1 -1
  281. package/server/{workspace-manager-_6zbrhNF.js → workspace-manager-B3PqQQSM.js} +1 -1
  282. package/server/{workspace-manager-BE3OznLY.js → workspace-manager-CEWK-OXd.js} +12 -12
  283. package/server/{workspace-metadata-BCgODi1j.js → workspace-metadata-1eu1RvAT.js} +2 -2
  284. package/server/{workspace-metadata-wKPgY8PN.js → workspace-metadata-C0I-nIDL.js} +1 -1
  285. package/server/{workspaces-DpMiZ9BP.js → workspaces-CRU9_vRn.js} +154 -106
  286. package/server/agent-state-DTZCqWx5.js +0 -3
  287. package/server/cli-wyiCmp7b.js +0 -3
  288. package/server/deacon-swarm-jDiQ0kKk.js +0 -2
  289. package/server/dist-CnkaBMG-.js +0 -3
  290. package/server/forge-D2QLGWK9.js +0 -2
  291. package/server/hume-sCsuupWb.js +0 -3
  292. package/server/inspect-agent-DnspoIls.js +0 -2
  293. package/server/merge-ops-B6xc_Irj.js +0 -2
  294. package/server/public/assets/mermaid-GHXKKRXX-uIkd-n0c.js +0 -1
  295. package/server/rally-BJiyvz3w.js +0 -3
  296. package/server/reap-terminal-sessions-mW7SPDtP.js +0 -2
  297. package/server/resume-Pur3Z2e8.js +0 -3
  298. package/server/review-agent-BRSSFv7e.js +0 -3
  299. package/server/settings-D0XXIUQ0.js +0 -2
  300. package/server/specs-COn3zZ2Q.js +0 -3
  301. package/server/supervisor-DwGIhpXk.js +0 -2
  302. package/server/tmux-DNmHGMEv.js +0 -3
  303. package/server/workflows-Plo_VxeO.js +0 -2
@@ -1,42 +1,42 @@
1
- import { $n as extractPrefixSync, Br as getOverdeckHome, Dn as getProjectSync, Gn as resolveProjectFromIssueSync, Ln as listProjectsSync, Lr as encodeClaudeProjectDir, Nn as init_projects, Qn as extractNumberSync, Sn as findProjectByTeamSync, Vr as init_paths, cr as FsError, er as init_issue_id, ln as init_state_plane, lr as GitError, nr as parseIssueIdSync, un as isStatePlaneOnlyStatus, vn as extractTeamPrefix, vr as init_errors } from "./config-yaml-DbdN9Fuq.js";
2
- import { D as jsonResponse, E as httpHandler, S as normalizeOrigin, b as getTrustedOrigins, f as getWorkAgentLifecycleStateSync, n as _serverManagedMerges, y as getHeaderFromMap } from "./specialists-e0Jmecc1.js";
3
- import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-Dm95Ua07.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CCTzpcuJ.js";
5
- import { K as buildChildEnvWithoutTmuxSync, L as sessionExists, O as listSessionNames, i as capturePane, q as init_child_env, x as init_tmux } from "./tmux-CBYZ5lKF.js";
6
- import { _ as setDeaconIgnored, c as init_review_status, f as markWorkspaceStuck, g as setAutoMerge, s as getReviewStatusSync, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-DWAsTqfJ.js";
7
- import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle-ZTt6kP_K.js";
8
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DiSDkYe7.js";
9
- import { Mn as getAgentState, Rt as transitionIssueToInReview, U as spawnAgent, Z as listRunningAgents, gr as saveAgentRuntimeState, j as messageAgent, mr as getAgentRuntimeStateSync, t as init_agents } from "./agents-D_x5BSZM.js";
10
- import { f as CostWriter, l as CostDoorLive } from "./service-CXje28KS.js";
11
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-CVCoeaaL.js";
12
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-mI4d-vh8.js";
13
- import { o as getInternalTokenSync, s as init_internal_token } from "./internal-token-DWhBqgIk.js";
1
+ import { $n as extractPrefixSync, Br as getOverdeckHome, Dn as getProjectSync, Gn as resolveProjectFromIssueSync, Ln as listProjectsSync, Lr as encodeClaudeProjectDir, Nn as init_projects, Qn as extractNumberSync, Sn as findProjectByTeamSync, Vr as init_paths, cr as FsError, er as init_issue_id, ln as init_state_plane, lr as GitError, nr as parseIssueIdSync, un as isStatePlaneOnlyStatus, vn as extractTeamPrefix, vr as init_errors } from "./config-yaml-DPAieL_G.js";
2
+ import { D as jsonResponse, E as httpHandler, S as normalizeOrigin, b as getTrustedOrigins, f as getWorkAgentLifecycleStateSync, n as _serverManagedMerges, y as getHeaderFromMap } from "./specialists-D07ybnam.js";
3
+ import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-pcbf-e30.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CpKlYZA9.js";
5
+ import { K as buildChildEnvWithoutTmuxSync, L as sessionExists, O as listSessionNames, i as capturePane, q as init_child_env, x as init_tmux } from "./tmux-ePNhMIMU.js";
6
+ import { _ as setDeaconIgnored, c as init_review_status, f as markWorkspaceStuck, g as setAutoMerge, s as getReviewStatusSync, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-BQjqQXZG.js";
7
+ import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle-DnhQgddB.js";
8
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-C2CuA66z.js";
9
+ import { Mn as getAgentState, Rt as transitionIssueToInReview, U as spawnAgent, Z as listRunningAgents, gr as saveAgentRuntimeState, j as messageAgent, mr as getAgentRuntimeStateSync, t as init_agents } from "./agents-DHvsjsuP.js";
10
+ import { f as CostWriter, l as CostDoorLive } from "./service-CILd-uOt.js";
11
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-C3hiPVAM.js";
12
+ import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-bpWs7Xyx.js";
13
+ import { o as getInternalTokenSync, s as init_internal_token } from "./internal-token-CQUx9YLc.js";
14
14
  import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, p as init_types } from "./types-CE1m_daD.js";
15
- import { o as init_merge_sync, r as getAllActiveQueues } from "./merge-sync-CuyWzzZK.js";
16
- import { A as findVBriefByIssue, N as readVBriefDocument, b as init_types$1, c as mergeRecordStatusOverrides, j as init_vbrief_index, o as init_io, r as findPlan, s as isPlanningComplete, u as readPlan, y as VBRIEF_INSPECTION_POLICIES } from "./io-DtAQ_2hp.js";
17
- import { f as init_config, m as loadConfigSync$1 } from "./config-DkEhJM0h.js";
18
- import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-Dwr1jHrO.js";
19
- import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-8jZH0Lgk.js";
20
- import { o as criticalPath, t as actionableDoc, u as init_dag } from "./dag-DZBowTd2.js";
21
- import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-CtqWakL6.js";
22
- import { a as readEventsFromLineSync, c as init_wal, i as init_events, o as readEventsSync, r as getLastEventMetadataSync, t as appendCostEventSync } from "./events-BbClwoM-.js";
23
- import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-BE3OznLY.js";
24
- import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-Cpz7XBj0.js";
25
- import { at as init_jsonl_parser, nt as getActiveSessionModelSync } from "./specialists-BUKBHtmQ.js";
26
- import { n as restoreTrackedBeadsExport, t as init_beads_restore } from "./beads-restore-BqTMSQi-.js";
27
- import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-DVUXlRBs.js";
28
- import { T as verifyAppCanMerge, f as init_github_app, m as isIntegrationPermissionError } from "./github-app-BIU8a93o.js";
29
- import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-BCgODi1j.js";
30
- import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-C6sr9wOI.js";
31
- import { n as generateDailySummary, r as init_cli } from "./cli-BmzYZZKi.js";
32
- import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-De14xPtc.js";
33
- import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-CEUflKr2.js";
34
- import { C as init_git_activity, S as init_operations, a as init_merge_agent, b as MainDivergedError, w as listGitOperationsSync, x as gitPush, y as syncMainIntoWorkspace } from "./merge-agent-Rv0bNQNU.js";
35
- import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-Ce9DHBXM.js";
36
- import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-CgOtMo8i.js";
37
- import { n as runVerificationForIssue } from "./verification-runner-BO8TgZWA.js";
38
- import { t as teardownWorkspace } from "./teardown-workspace-CYt_PBaq.js";
39
- import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-D9qBmVcM.js";
15
+ import { o as init_merge_sync, r as getAllActiveQueues } from "./merge-sync-CaLRt2cB.js";
16
+ import { A as findVBriefByIssue, N as readVBriefDocument, b as init_types$1, c as mergeRecordStatusOverrides, j as init_vbrief_index, o as init_io, r as findPlan, s as isPlanningComplete, u as readPlan, y as VBRIEF_INSPECTION_POLICIES } from "./io-Wy8YpFeP.js";
17
+ import { f as init_config, m as loadConfigSync$1 } from "./config-oWoKf5jO.js";
18
+ import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-DL_BAWVk.js";
19
+ import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-BJVh1TCg.js";
20
+ import { o as criticalPath, t as actionableDoc, u as init_dag } from "./dag-jH8ZkewR.js";
21
+ import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-BrVNWoSL.js";
22
+ import { a as readEventsFromLineSync, i as init_events, l as init_wal, o as readEventsSync, r as getLastEventMetadataSync, t as appendCostEventSync } from "./events-DGWZzye2.js";
23
+ import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-CEWK-OXd.js";
24
+ import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-DUJYYRQB.js";
25
+ import { at as init_jsonl_parser, nt as getActiveSessionModelSync } from "./specialists-BYi0k8CZ.js";
26
+ import { n as restoreTrackedBeadsExport, t as init_beads_restore } from "./beads-restore-CMbDSB5R.js";
27
+ import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-zTvWWHG_.js";
28
+ import { T as verifyAppCanMerge, f as init_github_app, m as isIntegrationPermissionError } from "./github-app-FMXgo3vK.js";
29
+ import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-1eu1RvAT.js";
30
+ import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-CGlcApSn.js";
31
+ import { n as generateDailySummary, r as init_cli } from "./cli-CvK9xuSS.js";
32
+ import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-CCq56O_Y.js";
33
+ import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-CJW_P4On.js";
34
+ import { C as init_git_activity, S as init_operations, a as init_merge_agent, b as MainDivergedError, w as listGitOperationsSync, x as gitPush, y as syncMainIntoWorkspace } from "./merge-agent-BcgAYStl.js";
35
+ import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-UlAwCk80.js";
36
+ import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-BhKvrPxn.js";
37
+ import { n as runVerificationForIssue } from "./verification-runner-BPAhPWR7.js";
38
+ import { t as teardownWorkspace } from "./teardown-workspace-5LCVbjfq.js";
39
+ import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-BLG3rlWa.js";
40
40
  import { Effect, Layer, Option } from "effect";
41
41
  import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, writeFileSync } from "fs";
42
42
  import { basename, join } from "path";
@@ -178,7 +178,7 @@ function isRfc1918(ip) {
178
178
  /**
179
179
  * True when `addr` is the IP of a container on one of THIS host's Docker bridge
180
180
  * interfaces (docker0 / br-*). Such a peer can only be a process running on this
181
- * machine — our own host-local Traefik fronting pan.localhost, or another
181
+ * machine — our own host-local Traefik fronting overdeck.localhost, or another
182
182
  * Overdeck container — never a LAN client (a direct LAN hit to the 0.0.0.0
183
183
  * API port arrives with a LAN peer that is not inside any Docker bridge subnet).
184
184
  *
@@ -234,13 +234,13 @@ const runningInContainer = existsSync$1("/.dockerenv");
234
234
  /**
235
235
  * A request we trust to mint a session because it originated from this machine —
236
236
  * the local browser hitting the dashboard directly (127.0.0.1), or the
237
- * host-local Traefik that fronts pan.localhost. In Docker, that Traefik reaches
237
+ * host-local Traefik that fronts overdeck.localhost. In Docker, that Traefik reaches
238
238
  * the host server from a Docker-bridge IP (e.g. 172.18.0.2), NOT 127.0.0.1, so
239
239
  * a literal-loopback check alone silently breaks the zero-step bootstrap for
240
- * every pan.localhost user — their session mint 401s and no cookie is ever set.
240
+ * every overdeck.localhost user — their session mint 401s and no cookie is ever set.
241
241
  *
242
242
  * This is the auto-bootstrap that removes the manual one-time #overdeck_token
243
- * step: any browser on pan.localhost gets a session with no user action. It is
243
+ * step: any browser on overdeck.localhost gets a session with no user action. It is
244
244
  * NOT a security downgrade for the LAN — the raw API ports bind 0.0.0.0, but a
245
245
  * direct LAN hit has a non-loopback, non-Docker-bridge peer and is rejected. We
246
246
  * read ONLY the real TCP peer (request.remoteAddress), never X-Forwarded-For,
@@ -973,7 +973,7 @@ const postWorkspaceContainerActionRoute = HttpRouter.add("POST", "/api/workspace
973
973
  }
974
974
  if (!workspacePath) return jsonResponse({ error: `Workspace not found for ${issueId}` }, { status: 404 });
975
975
  if (!composeFile && ["start", "restart"].includes(action)) {
976
- const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-Dmdw4BxF.js"));
976
+ const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-BCB6fHp9.js"));
977
977
  if (ensureDevcontainerSync({
978
978
  workspacePath,
979
979
  issueId
@@ -2593,7 +2593,7 @@ async function reconcileGitHubMergeStatus(issueId, status) {
2593
2593
  const prRef = parseGitHubPullRequestUrl(status.prUrl);
2594
2594
  if (!prRef) return false;
2595
2595
  try {
2596
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CIhMNI4C.js");
2596
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-B5PDHMyn.js");
2597
2597
  if (!isGitHubAppConfigured()) return false;
2598
2598
  const prState = await Effect.runPromise(getPullRequestState(prRef.owner, prRef.repo, prRef.number));
2599
2599
  console.log(`[merge] reconcileGitHubMergeStatus: ${issueId} PR #${prRef.number} merged=${prState.merged} state=${prState.state}`);
@@ -2871,8 +2871,8 @@ async function triggerMerge(issueId) {
2871
2871
  try {
2872
2872
  if (workspaceInfo.isRemote && workspaceInfo.vmName) {
2873
2873
  console.log(`[merge] Remote workspace detected for ${issueId}, using review artifact merge...`);
2874
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-CSJoIpKB.js");
2875
- const { getForgeAdapter } = await import("./forge-D2QLGWK9.js");
2874
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-rXK3ehnB.js");
2875
+ const { getForgeAdapter } = await import("./forge-BfP7OJwK.js");
2876
2876
  const remotePrimaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
2877
2877
  const remoteTargetBranch = remotePrimaryRepo?.targetBranch || "main";
2878
2878
  const remoteForge = remotePrimaryRepo?.forge || "github";
@@ -2907,7 +2907,7 @@ async function triggerMerge(issueId) {
2907
2907
  readyForMerge: false
2908
2908
  });
2909
2909
  completePendingOperation(issueId, null);
2910
- const { postMergeLifecycle } = await import("./merge-agent-DRXwKxmb.js");
2910
+ const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
2911
2911
  await postMergeLifecycle(issueId, projectPath);
2912
2912
  return {
2913
2913
  success: true,
@@ -2944,10 +2944,10 @@ async function triggerMerge(issueId) {
2944
2944
  const projectConfig = findProjectByTeamSync(issuePrefix);
2945
2945
  if (projectConfig?.workspace?.type === "polyrepo" && projectConfig?.workspace?.repos) {
2946
2946
  console.log(`[merge] Polyrepo detected for ${issueId}, coordinating merge set...`);
2947
- const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-CSJoIpKB.js");
2948
- const { runQualityGates } = await import("./validation-1QnjDMc0.js");
2949
- const { getForgeAdapter } = await import("./forge-D2QLGWK9.js");
2950
- const { messageAgent } = await import("./agents-KaEsWZ8D.js");
2947
+ const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-rXK3ehnB.js");
2948
+ const { runQualityGates } = await import("./validation-CbqP_dze.js");
2949
+ const { getForgeAdapter } = await import("./forge-BfP7OJwK.js");
2950
+ const { messageAgent } = await import("./agents-BIggLvi_.js");
2951
2951
  let mergeSet = getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId);
2952
2952
  if (!mergeSet) {
2953
2953
  const error = `No merge set found for ${issueId}`;
@@ -3217,7 +3217,7 @@ async function triggerMerge(issueId) {
3217
3217
  readyForMerge: false
3218
3218
  });
3219
3219
  completePendingOperation(issueId, null);
3220
- const { postMergeLifecycle } = await import("./merge-agent-DRXwKxmb.js");
3220
+ const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
3221
3221
  advanceQueue();
3222
3222
  await postMergeLifecycle(issueId, projectPath);
3223
3223
  return {
@@ -3228,8 +3228,8 @@ async function triggerMerge(issueId) {
3228
3228
  repos: mergeResults
3229
3229
  };
3230
3230
  }
3231
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-CSJoIpKB.js");
3232
- const { getForgeAdapter } = await import("./forge-D2QLGWK9.js");
3231
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-rXK3ehnB.js");
3232
+ const { getForgeAdapter } = await import("./forge-BfP7OJwK.js");
3233
3233
  const primaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
3234
3234
  const targetBranch = primaryRepo?.targetBranch || "main";
3235
3235
  const primaryForge = primaryRepo?.forge || "github";
@@ -3271,7 +3271,7 @@ async function triggerMerge(issueId) {
3271
3271
  };
3272
3272
  }
3273
3273
  if (githubPrRef) try {
3274
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CIhMNI4C.js");
3274
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-B5PDHMyn.js");
3275
3275
  if (isGitHubAppConfigured()) {
3276
3276
  const prState = await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number));
3277
3277
  if (prState.state !== "OPEN" && !prState.merged) {
@@ -3332,7 +3332,7 @@ async function triggerMerge(issueId) {
3332
3332
  readyForMerge: false
3333
3333
  });
3334
3334
  completePendingOperation(issueId, null);
3335
- const { postMergeLifecycle } = await import("./merge-agent-DRXwKxmb.js");
3335
+ const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
3336
3336
  await postMergeLifecycle(issueId, projectPath, branchName);
3337
3337
  return {
3338
3338
  success: true,
@@ -3346,13 +3346,13 @@ async function triggerMerge(issueId) {
3346
3346
  } catch (prStateErr) {
3347
3347
  console.warn(`[merge] Pre-merge PR state check failed for ${issueId}: ${prStateErr.message} — proceeding (check is best-effort)`);
3348
3348
  }
3349
- const { postMergeLifecycle } = await import("./merge-agent-DRXwKxmb.js");
3349
+ const { postMergeLifecycle } = await import("./merge-agent-Dh8Y9PDO.js");
3350
3350
  const agentId = `agent-${issueId.toLowerCase()}`;
3351
3351
  const rebaseMsg = `MERGE REQUESTED: The human has clicked MERGE for ${issueId}. Please rebase onto ${targetBranch} and push:\n\n1. git fetch origin ${targetBranch}\n2. git rebase origin/${targetBranch}\n3. If conflicts: resolve them, git add, git rebase --continue\n4. git push --force-with-lease\n\nAfter pushing, the server will handle verification and merge automatically. Do NOT run gh pr merge yourself.`;
3352
3352
  setReviewStatus(issueId, { mergeStep: "rebasing" });
3353
3353
  console.log(`[merge] Rebasing ${branchName} onto ${targetBranch} for ${issueId} (agent=${await Effect.runPromise(sessionExists(agentId)) ? "running" : "stopped"})...`);
3354
3354
  {
3355
- const { beginShipLog, appendShipLog } = await import("./ship-log-B2EEH__n.js");
3355
+ const { beginShipLog, appendShipLog } = await import("./ship-log-CMWH3H5-.js");
3356
3356
  beginShipLog(issueId);
3357
3357
  appendShipLog(issueId, `Ship started: rebasing ${branchName} onto ${targetBranch}…`, "rebasing");
3358
3358
  }
@@ -3480,7 +3480,7 @@ async function triggerMerge(issueId) {
3480
3480
  });
3481
3481
  let skipLocalVerification = false;
3482
3482
  if (primaryForge === "github" && artifactUrl) try {
3483
- const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-CIhMNI4C.js");
3483
+ const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-B5PDHMyn.js");
3484
3484
  if (isGitHubAppConfigured()) {
3485
3485
  const ref = parsePullRequestRef({ url: artifactUrl });
3486
3486
  if (ref) {
@@ -3501,12 +3501,12 @@ async function triggerMerge(issueId) {
3501
3501
  } catch (ciErr) {
3502
3502
  console.warn(`[merge] CI-state check failed (${ciErr.message?.slice(0, 120)}) — falling back to local verification for ${issueId}`);
3503
3503
  }
3504
- const { appendShipLog } = await import("./ship-log-B2EEH__n.js");
3504
+ const { appendShipLog } = await import("./ship-log-CMWH3H5-.js");
3505
3505
  if (skipLocalVerification) appendShipLog(issueId, "✓ Local verification skipped — CI already green on this exact commit", "verifying");
3506
3506
  const verifyResult = skipLocalVerification ? { outcome: "passed" } : await (async () => {
3507
3507
  console.log(`[merge] Running post-rebase verification for ${issueId}...`);
3508
3508
  appendShipLog(issueId, "Running post-rebase verification (full quality-gate suite)…", "verifying");
3509
- const { runVerificationForIssue } = await import("./verification-runner-UhAAqOio.js");
3509
+ const { runVerificationForIssue } = await import("./verification-runner-DuZRHjPU.js");
3510
3510
  return Effect.runPromise(runVerificationForIssue(issueId, workspacePath, { isRemote: false }, "merge-verify", {
3511
3511
  syncTargetBranch: false,
3512
3512
  onGateLog: (line) => appendShipLog(issueId, line, "verifying")
@@ -3539,7 +3539,7 @@ async function triggerMerge(issueId) {
3539
3539
  console.log(`[merge] Post-rebase verification ${verifyResult.outcome} for ${issueId}`);
3540
3540
  setReviewStatus(issueId, { mergeStep: "reporting-statuses" });
3541
3541
  try {
3542
- const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CIhMNI4C.js");
3542
+ const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-B5PDHMyn.js");
3543
3543
  if (githubPrRef && isGitHubAppConfigured()) {
3544
3544
  const sha = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).headSha.trim();
3545
3545
  if (sha) {
@@ -3567,7 +3567,7 @@ async function triggerMerge(issueId) {
3567
3567
  } catch (prMergeErr) {
3568
3568
  console.error(`[merge] Review artifact merge threw for ${issueId}:`, prMergeErr);
3569
3569
  try {
3570
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CIhMNI4C.js");
3570
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-B5PDHMyn.js");
3571
3571
  if (githubPrRef && isGitHubAppConfigured()) {
3572
3572
  artifactMerged = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).merged;
3573
3573
  if (artifactMerged) console.log(`[merge] Race-detected: PR #${githubPrRef.number} for ${issueId} was already merged despite thrown error; proceeding`);
@@ -3684,8 +3684,8 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
3684
3684
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
3685
3685
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
3686
3686
  return yield* Effect.promise(async () => {
3687
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-CSJoIpKB.js");
3688
- const { getForgeAdapter } = await import("./forge-D2QLGWK9.js");
3687
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-rXK3ehnB.js");
3688
+ const { getForgeAdapter } = await import("./forge-BfP7OJwK.js");
3689
3689
  let mergeSet = getMergeSetSync(issueId);
3690
3690
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
3691
3691
  const results = [];
@@ -3746,7 +3746,7 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
3746
3746
  }
3747
3747
  }
3748
3748
  if (results.filter((r) => r.approved).length > 0) {
3749
- const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-DO27GsPa.js");
3749
+ const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-DvYvFhwZ.js");
3750
3750
  emitActivityEntrySync({
3751
3751
  source: "dashboard",
3752
3752
  level: "success",
@@ -3773,8 +3773,8 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
3773
3773
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
3774
3774
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
3775
3775
  return yield* Effect.promise(async () => {
3776
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-CSJoIpKB.js");
3777
- const { getForgeAdapter } = await import("./forge-D2QLGWK9.js");
3776
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-rXK3ehnB.js");
3777
+ const { getForgeAdapter } = await import("./forge-BfP7OJwK.js");
3778
3778
  let mergeSet = getMergeSetSync(issueId);
3779
3779
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
3780
3780
  const results = [];
@@ -3842,7 +3842,7 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
3842
3842
  }
3843
3843
  }
3844
3844
  if (results.filter((r) => r.merged).length > 0) {
3845
- const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-DO27GsPa.js");
3845
+ const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-DvYvFhwZ.js");
3846
3846
  emitActivityEntrySync({
3847
3847
  source: "dashboard",
3848
3848
  level: "success",
@@ -3967,7 +3967,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
3967
3967
  console.log(`[approve] Starting role pipeline for ${issueId}...`);
3968
3968
  let reviewResult;
3969
3969
  try {
3970
- const { spawnReviewRoleForIssue } = await import("./review-agent-BRSSFv7e.js");
3970
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
3971
3971
  reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
3972
3972
  issueId,
3973
3973
  workspace: workspacePath,
@@ -4014,7 +4014,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4014
4014
  }
4015
4015
  console.log(`[approve] Step 3/3: Running server-side rebase for ${issueId}...`);
4016
4016
  try {
4017
- const { rebaseFeatureBranch } = await import("./merge-rebase-AiSEs4QB.js");
4017
+ const { rebaseFeatureBranch } = await import("./merge-rebase-CH12_ufi.js");
4018
4018
  const workspacePathForRebase = join$1(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
4019
4019
  const rebaseResult = await Effect.runPromise(rebaseFeatureBranch(workspacePathForRebase, branchName, "main", issueId));
4020
4020
  if (!rebaseResult.success) {
@@ -4034,7 +4034,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4034
4034
  completePendingOperation(issueId, pushResult.error);
4035
4035
  return jsonResponse({ error: pushResult.error }, { status: pushResult.httpStatus });
4036
4036
  }
4037
- const { approve: lifecycleApprove } = await import("./lifecycle-B_NFvTj9.js");
4037
+ const { approve: lifecycleApprove } = await import("./lifecycle-CGKm7doE.js");
4038
4038
  const ghResolved = resolveGitHubIssueSync(issueId);
4039
4039
  const isGitHubIssueFlag = ghResolved.isGitHub;
4040
4040
  const lifecycleCtx = {
@@ -4068,7 +4068,7 @@ const getMergeQueueRoute = HttpRouter.add("GET", "/api/merge-queue", httpHandler
4068
4068
  })));
4069
4069
  const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pipeline/notify", httpHandler(Effect.gen(function* () {
4070
4070
  const request = yield* HttpServerRequest.HttpServerRequest;
4071
- const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-DCrCAG_M.js"));
4071
+ const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-DrGdpLFo.js"));
4072
4072
  const expected = getInternalTokenSync();
4073
4073
  if (!expected) return jsonResponse({
4074
4074
  ok: false,
@@ -4082,7 +4082,7 @@ const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pi
4082
4082
  }, 403);
4083
4083
  const event = yield* readJsonBody;
4084
4084
  const type = event.type;
4085
- const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-DQsOtdjZ.js"));
4085
+ const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-lwMa--Gz.js"));
4086
4086
  switch (type) {
4087
4087
  case "status_changed": {
4088
4088
  const issueId = event.issueId;
@@ -4857,7 +4857,7 @@ const patchWorkspaceTieredExecutionRoute = HttpRouter.add("PATCH", "/api/workspa
4857
4857
  if (override !== "on" && override !== "off" && override !== null && override !== void 0) return jsonResponse({ error: "Invalid tiered-execution override" }, { status: 400 });
4858
4858
  const project = getProjectSync(extractPrefixSync(issueId) ?? issueId.split("-")[0]);
4859
4859
  if (!project) return jsonResponse({ error: "Project not found" }, { status: 404 });
4860
- yield* Effect.promise(() => import("./record-fn7uPjsl.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
4860
+ yield* Effect.promise(() => import("./record-DjPikotp.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
4861
4861
  const projectPath = project.path;
4862
4862
  const location = yield* resolvePlanLocation(projectPath, issueId);
4863
4863
  if (!location) return jsonResponse({ error: "No vBRIEF plan found for this workspace" }, { status: 404 });
@@ -5290,7 +5290,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
5290
5290
  console.log(`Feature branch push note: ${errorMessage(pushErr)}`);
5291
5291
  }
5292
5292
  try {
5293
- const { createReviewArtifactsForIssue } = await import("./review-artifacts-DTTdAYsU.js");
5293
+ const { createReviewArtifactsForIssue } = await import("./review-artifacts-BGc69epg.js");
5294
5294
  const artifactResult = await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath));
5295
5295
  const primaryArtifact = artifactResult.mergeSet?.repos.find((repo) => !!repo.artifactUrl);
5296
5296
  artifactResult.mergeSet?.repos.find((repo) => repo.mergeStatus !== "skipped")?.targetBranch;
@@ -5345,7 +5345,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
5345
5345
  } catch {}
5346
5346
  return;
5347
5347
  }
5348
- const { spawnReviewRoleForIssue } = await import("./review-agent-BRSSFv7e.js");
5348
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
5349
5349
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
5350
5350
  const reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
5351
5351
  issueId,
@@ -5373,7 +5373,6 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
5373
5373
  return;
5374
5374
  }
5375
5375
  console.log(`[review] Parallel review dispatched for ${issueId}`);
5376
- setReviewStatus(issueId, { reviewStatus: "reviewing" });
5377
5376
  completePendingOperation(issueId, null);
5378
5377
  try {
5379
5378
  await Effect.runPromise(eventStore.append({
@@ -5486,7 +5485,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5486
5485
  console.log(`[request-review] Feature branch push note: ${errorMessage(pushErr)}`);
5487
5486
  }
5488
5487
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
5489
- const { spawnReviewRoleForIssue } = await import("./review-agent-BRSSFv7e.js");
5488
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
5490
5489
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
5491
5490
  issueId,
5492
5491
  workspace: workspacePathRerun,
@@ -5536,10 +5535,10 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5536
5535
  });
5537
5536
  } else {
5538
5537
  const workspacePath = join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
5539
- setReviewStatus(issueId, { testStatus: "testing" });
5540
- const { spawnRun } = yield* Effect.promise(() => import("./agents-KaEsWZ8D.js"));
5538
+ const { spawnRun } = yield* Effect.promise(() => import("./agents-BIggLvi_.js"));
5541
5539
  try {
5542
5540
  const testRun = yield* Effect.promise(() => spawnRun(issueId, "test", { workspace: workspacePath }));
5541
+ setReviewStatus(issueId, { testStatus: "testing" });
5543
5542
  console.log(`[request-review] Test role spawned for ${issueId} as ${testRun.id}`);
5544
5543
  } catch (testErr) {
5545
5544
  const msg = testErr instanceof Error ? testErr.message : String(testErr);
@@ -5625,7 +5624,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5625
5624
  autoRequeueCount: newCount
5626
5625
  }, { status: 500 });
5627
5626
  const result = yield* Effect.promise(async () => {
5628
- const { spawnReviewRoleForIssue } = await import("./review-agent-BRSSFv7e.js");
5627
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
5629
5628
  return await Effect.runPromise(spawnReviewRoleForIssue({
5630
5629
  issueId,
5631
5630
  workspace: workspacePath,
@@ -5635,10 +5634,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5635
5634
  });
5636
5635
  if (result.success) {
5637
5636
  console.log(`[request-review] Review role spawned for ${issueId}`);
5638
- setReviewStatus(issueId, {
5639
- reviewStatus: "reviewing",
5640
- autoRequeueCount: newCount
5641
- });
5637
+ setReviewStatus(issueId, { autoRequeueCount: newCount });
5642
5638
  yield* Effect.promise(() => Effect.runPromise(eventStore.append({
5643
5639
  type: "pipeline.review-started",
5644
5640
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -5925,7 +5921,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5925
5921
  const result = processResetReviewPipeline(issueId, resetWorkspace.exists);
5926
5922
  if (result.httpStatus !== 200) return jsonResponse(result.body, { status: result.httpStatus });
5927
5923
  try {
5928
- const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-DRXwKxmb.js"));
5924
+ const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-Dh8Y9PDO.js"));
5929
5925
  resetPostMergeState(issueId);
5930
5926
  } catch (err) {
5931
5927
  console.warn(`[reset-review] resetPostMergeState best-effort failed for ${issueId}:`, err);
@@ -5934,7 +5930,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5934
5930
  const rerun = body?.rerun === true;
5935
5931
  if (rerun) try {
5936
5932
  yield* Effect.promise(async () => {
5937
- const { spawnReviewRoleForIssue } = await import("./review-agent-BRSSFv7e.js");
5933
+ const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
5938
5934
  const dispatchArgs = buildReviewRedispatchArgs(issueId, resetWorkspace, workspaceInfo, resolved);
5939
5935
  if (dispatchArgs) {
5940
5936
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
@@ -5943,10 +5939,8 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5943
5939
  branch: dispatchArgs.branch,
5944
5940
  prUrl: getReviewStatusSync(issueId)?.prUrl
5945
5941
  }));
5946
- if (result.success) {
5947
- setReviewStatus(issueId, { reviewStatus: "reviewing" });
5948
- console.log(`[reset-review] Re-dispatched review for ${issueId}`);
5949
- } else {
5942
+ if (result.success) console.log(`[reset-review] Re-dispatched review for ${issueId}`);
5943
+ else {
5950
5944
  console.warn(`[reset-review] Re-dispatch failed for ${issueId}: ${result.message || result.error}`);
5951
5945
  setReviewStatus(issueId, { reviewStatus: "pending" });
5952
5946
  }
@@ -5965,7 +5959,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5965
5959
  const postWorkspaceReviewPurgeRoute = HttpRouter.add("POST", "/api/review/:issueId/purge", httpHandler(Effect.gen(function* () {
5966
5960
  const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
5967
5961
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
5968
- const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-BRSSFv7e.js"));
5962
+ const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-DgySDb-G.js"));
5969
5963
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
5970
5964
  const purge = yield* Effect.promise(() => purgeReviewAgentsForIssue(projectKey, issueId));
5971
5965
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
@@ -5995,8 +5989,8 @@ const postWorkspaceAbortReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5995
5989
  success: false,
5996
5990
  error: "Workspace does not exist"
5997
5991
  }, { status: 400 });
5998
- const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-CKTA6Klk.js"));
5999
- const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-BRSSFv7e.js"));
5992
+ const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-BNmVxnNt.js"));
5993
+ const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-DgySDb-G.js"));
6000
5994
  const { killed, failed } = yield* killAllReviewerSessions(resolveProjectFromIssueSync(issueId)?.projectKey, issueId);
6001
5995
  setReviewStatus(issueId, {
6002
5996
  reviewStatus: "pending",
@@ -6064,7 +6058,61 @@ const deleteWorkspacePendingRoute = HttpRouter.add("DELETE", "/api/review/:issue
6064
6058
  clearPendingOperation(issueId);
6065
6059
  return jsonResponse({ success: true });
6066
6060
  })));
6067
- const reviewControlRouteLayer = Layer.mergeAll(postWorkspaceResetReviewRoute, postWorkspaceReviewPurgeRoute, postWorkspaceAbortReviewRoute, postWorkspaceUnstickRoute, postWorkspaceDeaconIgnoreRoute, postWorkspaceAutoMergeRoute, deleteWorkspacePendingRoute);
6061
+ const getReviewConfigRoute = HttpRouter.add("GET", "/api/review/:issueId/config", httpHandler(Effect.gen(function* () {
6062
+ const issueId = ((yield* HttpRouter.params)["issueId"] ?? "").toUpperCase();
6063
+ if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
6064
+ return jsonResponse(yield* Effect.promise(async () => {
6065
+ const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-DjPikotp.js");
6066
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-DgySDb-G.js");
6067
+ const project = resolveProjectForIssue(issueId);
6068
+ const record = project ? readIssueRecordSync(project, issueId) : null;
6069
+ return {
6070
+ issueId,
6071
+ override: {
6072
+ reviewMode: record?.reviewMode ?? null,
6073
+ reReviewScope: record?.reReviewScope ?? null
6074
+ },
6075
+ resolved: {
6076
+ reviewMode: resolveReviewMode(issueId),
6077
+ reReviewScope: resolveReReviewScope(issueId)
6078
+ }
6079
+ };
6080
+ }));
6081
+ })));
6082
+ const postReviewConfigRoute = HttpRouter.add("POST", "/api/review/:issueId/config", httpHandler(Effect.gen(function* () {
6083
+ const issueId = ((yield* HttpRouter.params)["issueId"] ?? "").toUpperCase();
6084
+ if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
6085
+ const body = yield* readJsonBody;
6086
+ const hasMode = Object.prototype.hasOwnProperty.call(body ?? {}, "reviewMode");
6087
+ const hasScope = Object.prototype.hasOwnProperty.call(body ?? {}, "reReviewScope");
6088
+ if (!hasMode && !hasScope) return jsonResponse({ error: "Provide reviewMode and/or reReviewScope (null clears the override)" }, { status: 400 });
6089
+ if (hasMode && body.reviewMode !== null && body.reviewMode !== "quick" && body.reviewMode !== "full" && body.reviewMode !== "none") return jsonResponse({ error: "reviewMode must be quick, full, none, or null" }, { status: 400 });
6090
+ if (hasScope && body.reReviewScope !== null && body.reReviewScope !== "all" && body.reReviewScope !== "changed" && body.reReviewScope !== "blockers") return jsonResponse({ error: "reReviewScope must be all, changed, blockers, or null" }, { status: 400 });
6091
+ return jsonResponse(yield* Effect.promise(async () => {
6092
+ const { ensureIssueRecordSync, readIssueRecordSync, resolveProjectForIssue, writeIssueRecordSync } = await import("./record-DjPikotp.js");
6093
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-DgySDb-G.js");
6094
+ const project = resolveProjectForIssue(issueId);
6095
+ const record = readIssueRecordSync(project, issueId) ?? ensureIssueRecordSync(project, issueId);
6096
+ if (hasMode) if (body.reviewMode === null) delete record.reviewMode;
6097
+ else record.reviewMode = body.reviewMode;
6098
+ if (hasScope) if (body.reReviewScope === null) delete record.reReviewScope;
6099
+ else record.reReviewScope = body.reReviewScope;
6100
+ writeIssueRecordSync(project, issueId, record);
6101
+ return {
6102
+ success: true,
6103
+ issueId,
6104
+ override: {
6105
+ reviewMode: record.reviewMode ?? null,
6106
+ reReviewScope: record.reReviewScope ?? null
6107
+ },
6108
+ resolved: {
6109
+ reviewMode: resolveReviewMode(issueId),
6110
+ reReviewScope: resolveReReviewScope(issueId)
6111
+ }
6112
+ };
6113
+ }));
6114
+ })));
6115
+ const reviewControlRouteLayer = Layer.mergeAll(postWorkspaceResetReviewRoute, postWorkspaceReviewPurgeRoute, postWorkspaceAbortReviewRoute, postWorkspaceUnstickRoute, postWorkspaceDeaconIgnoreRoute, postWorkspaceAutoMergeRoute, deleteWorkspacePendingRoute, getReviewConfigRoute, postReviewConfigRoute);
6068
6116
  //#endregion
6069
6117
  //#region routes/workspaces/uat-stack-actions.ts
6070
6118
  init_activity_logger();
@@ -6436,7 +6484,7 @@ async function readWorkspacePlanningMarkdown(issueId, fileName) {
6436
6484
  */
6437
6485
  async function readWorkspaceContinueFile(_projectPath, workspacePath, issueId) {
6438
6486
  try {
6439
- const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-fn7uPjsl.js");
6487
+ const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-DjPikotp.js");
6440
6488
  const recordView = readRecordContinueViewSync(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId);
6441
6489
  return recordView ? JSON.stringify(recordView, null, 2) : null;
6442
6490
  } catch {
@@ -7205,7 +7253,7 @@ const getWorkspaceReviewStatusRoute = HttpRouter.add("GET", "/api/review/:issueI
7205
7253
  if (queuePosition === null) try {
7206
7254
  const resolved = resolveProjectFromIssueSync(issueId);
7207
7255
  if (resolved) {
7208
- const { getQueueForProject } = yield* Effect.promise(() => import("./merge-DltB-RGV.js"));
7256
+ const { getQueueForProject } = yield* Effect.promise(() => import("./merge-D3wEbmUJ.js"));
7209
7257
  const mergePos = findPositionInQueueSync(issueId, getQueueForProject(resolved.projectKey).map((e) => ({
7210
7258
  id: String(e.id),
7211
7259
  type: "task",
@@ -7243,7 +7291,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7243
7291
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
7244
7292
  if (workspaceInfo.exists && workspaceInfo.localPath) {
7245
7293
  const localPath = workspaceInfo.localPath;
7246
- const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-Bk7sJZru.js"));
7294
+ const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-RAmTwjFB.js"));
7247
7295
  try {
7248
7296
  const gitInfo = yield* getWorkspaceGitInfo(localPath);
7249
7297
  if (gitInfo.HEAD) update.reviewedAtCommit = gitInfo.HEAD;
@@ -7258,7 +7306,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7258
7306
  if (verificationStatus) update.verificationStatus = verificationStatus;
7259
7307
  if (readyForMerge !== void 0) update.readyForMerge = readyForMerge;
7260
7308
  const status = setReviewStatus(issueId, update);
7261
- const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-CF02f9p2.js"));
7309
+ const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-F2uMO4QS.js"));
7262
7310
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
7263
7311
  if (reviewStatus && [
7264
7312
  "passed",
@@ -7276,7 +7324,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7276
7324
  const agentId = `agent-${issueId.toLowerCase()}`;
7277
7325
  const feedbackBody = `CODE REVIEW ${reviewStatus.toUpperCase()} for ${issueId}:\n\n${reviewNotes}\n\n## REQUIRED: Fix ALL issues above, then invoke the /rebase-and-submit skill\n\n1. Read each blocking issue carefully\n2. Fix the code for EVERY issue listed\n3. Run tests locally to verify your fixes\n4. Commit every change\n5. Invoke the /rebase-and-submit skill for ${issueId} — this is an atomic task that runs pan done (which handles rebase + push + re-submit internally)\n\nDo NOT stop between steps. Do NOT run git push manually — the skill handles it. Do NOT stop until pan done has completed successfully.`;
7278
7326
  try {
7279
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-BvHE1I-3.js"));
7327
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-thrdxYpK.js"));
7280
7328
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7281
7329
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
7282
7330
  issueId,
@@ -7340,7 +7388,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7340
7388
  const agentId = `agent-${issueId.toLowerCase()}`;
7341
7389
  const feedbackBody = `TESTS FAILED for ${issueId}:\n\n${testNotes}\n\n## REQUIRED: Fix ALL test failures, then invoke the /rebase-and-submit skill\n\n1. Read each test failure carefully\n2. Fix the code causing EVERY failure\n3. Run the test suite locally to verify your fixes pass\n4. Commit every change\n5. Invoke the /rebase-and-submit skill for ${issueId} — this is an atomic task that runs pan done (which handles rebase + push + re-submit internally)\n\nDo NOT stop between steps. Do NOT run git push manually — the skill handles it. Do NOT stop until pan done has completed successfully.`;
7342
7390
  try {
7343
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-BvHE1I-3.js"));
7391
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-thrdxYpK.js"));
7344
7392
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7345
7393
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
7346
7394
  issueId,
@@ -7365,14 +7413,14 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7365
7413
  console.log(`[review-status] ${issueId} marked ready for merge after test=passed`);
7366
7414
  yield* Effect.promise(async () => {
7367
7415
  try {
7368
- const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-CKTA6Klk.js");
7416
+ const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-BNmVxnNt.js");
7369
7417
  const project = resolveProjectFromIssueSync(issueId);
7370
7418
  const repo = (project ? getProjectSync(project.projectKey) : null)?.github_repo;
7371
7419
  if (!repo || !repo.includes("/")) return;
7372
7420
  const [owner, name] = repo.split("/");
7373
7421
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7374
7422
  if (!wsInfo?.localPath) return;
7375
- const { postOverdeckTestsStatus } = await import("./github-app-CIhMNI4C.js");
7423
+ const { postOverdeckTestsStatus } = await import("./github-app-B5PDHMyn.js");
7376
7424
  await postOverdeckTestsStatus(wsInfo.localPath, owner, name, "success", "Test specialist passed");
7377
7425
  } catch (err) {
7378
7426
  console.warn(`[review-status] Failed to post overdeck/tests for ${issueId}: ${err.message}`);
@@ -7414,7 +7462,7 @@ const postWorkspaceRefreshTokenRoute = HttpRouter.add("POST", "/api/workspaces/:
7414
7462
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
7415
7463
  const issueLower = issueId.toLowerCase();
7416
7464
  const workspacePath = join$1(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), "workspaces", `feature-${issueLower}`);
7417
- const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-CIhMNI4C.js"));
7465
+ const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-B5PDHMyn.js"));
7418
7466
  if (!isGitHubAppConfigured()) return jsonResponse({
7419
7467
  success: false,
7420
7468
  error: "GitHub App not configured"
@@ -7429,4 +7477,4 @@ const workspacesRouteLayer = Layer.mergeAll(workspaceDataRouteLayer, postWorkspa
7429
7477
  //#endregion
7430
7478
  export { hasDashboardInternalToken as C, getWorkspacePathForIssue as D, rejectUnsafeDashboardMutationRequest as E, dashboardSessionCookieHeader as S, rejectUnauthorizedDashboardSessionMintRequest as T, syncCacheSync as _, pushApproveMain as a, resolveIssueHeadlineCost as b, triggerMerge as c, reconcile as d, reconcilePiTranscripts as f, rebuildCacheSync as g, getCostsForIssueSync as h, mergeOpsRouteLayer as i, resumeQueuedMerges as l, migrateAllSessionsSync as m, buildRichPRBody as n, reconcileGitHubMergeStatus as o, reclassifyUnknownCostEventsSync as p, isBranchAlreadyRebased as r, shouldBlockApproveForDirtyStatus as s, workspacesRouteLayer as t, syncWalFromAllProjects as u, processPendingFeedbackDeliveries as v, rejectUnauthorizedDashboardRequest as w, dashboardCsrfToken as x, getCachedRunningAgents as y };
7431
7479
 
7432
- //# sourceMappingURL=workspaces-DpMiZ9BP.js.map
7480
+ //# sourceMappingURL=workspaces-CRU9_vRn.js.map
@@ -1,3 +0,0 @@
1
- import { Fn as init_agent_state, Pn as getAgentStateSync, Tn as clearAgentPausedSync, Xn as setAgentPausedSync } from "./agents-D_x5BSZM.js";
2
- init_agent_state();
3
- export { clearAgentPausedSync, getAgentStateSync, setAgentPausedSync };