@overdeck/desktop 0.45.13 → 0.45.16

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 (336) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-CfujPRrz.js → acceptance-criteria-BZ_nQS1f.js} +2 -2
  3. package/server/{advancing-selfheal-Bn5QiLtn.js → advancing-selfheal-DJYAvGv-.js} +6 -5
  4. package/server/{agent-gc-Cl9Nm0Zu.js → agent-gc-D0wDIeV1.js} +3 -3
  5. package/server/{agent-state-C6Rm6FPR.js → agent-state-lGvgPP4m.js} +1 -1
  6. package/server/{agent-state-service-U8feBf8t.js → agent-state-service-CZrayD_G.js} +1 -1
  7. package/server/{agent-state-service-JhFzYCP_.js → agent-state-service-DFslS5go.js} +9 -52
  8. package/server/{agents-DqQa4Dq_.js → agents-B9GwfCyp.js} +155 -153
  9. package/server/{agents-CxbuBjID.js → agents-CEcaxSkR.js} +1 -1
  10. package/server/{archive-planning-CPitEZo4.js → archive-planning-CbghE9-o.js} +5 -5
  11. package/server/{archive-planning-DmpT1_14.js → archive-planning-CoyIbgGK.js} +1 -1
  12. package/server/{artifact-index-jobs-sMnNtPhy.js → artifact-index-jobs-CcSrUoSE.js} +2 -2
  13. package/server/auto-commit-IW-eik_b.js +3 -0
  14. package/server/{backlog-auto-trigger-Cf9C8fwD.js → backlog-auto-trigger-BfgDsII0.js} +3 -3
  15. package/server/{bd-process-lock-D1aJxeYv.js → bd-process-lock-XAXAet9O.js} +32 -11
  16. package/server/{beads-CivpXztb.js → beads-B1u04n3o.js} +1 -1
  17. package/server/{beads-DRoj6-e1.js → beads-BeSMEjGT.js} +96 -196
  18. package/server/{beads-query-tOsAYP5h.js → beads-query-Dl4FhT8J.js} +24 -99
  19. package/server/beads-restore-BUItPOjI.js +23 -0
  20. package/server/behavior-BTpYbAv4.js +10 -0
  21. package/server/{briefing-freshness-BL3Q6p7R.js → briefing-freshness-DESTCWo-.js} +4 -4
  22. package/server/{checkpoint-manager-DCxjQvP_.js → checkpoint-manager-BwFdegJF.js} +2 -2
  23. package/server/{checkpoint-manager-j5URlFY7.js → checkpoint-manager-DWSXooZV.js} +1 -1
  24. package/server/checkpoint-worker.js +1 -1
  25. package/server/{checkpoints-BoX1H2Hf.js → checkpoints-BtUonbs3.js} +2 -2
  26. package/server/{checkpoints-Bu_M_Q9W.js → checkpoints-fjadfOKF.js} +1 -1
  27. package/server/{claude-hooks-provision-D-jGXmu1.js → claude-hooks-provision-DAtxutOs.js} +132 -114
  28. package/server/claude-hooks-provision-DiK62u0k.js +3 -0
  29. package/server/{claude-permissions-DxIjkOVl.js → claude-permissions-CThLgf8d.js} +2 -2
  30. package/server/{claude-settings-overlay-BPDS6GfE.js → claude-settings-overlay-BF9MPIwx.js} +2 -2
  31. package/server/{claude-settings-overlay-5b9X2S0C.js → claude-settings-overlay-Dx_Uqcmv.js} +1 -1
  32. package/server/{cli-s7bPWy-E.js → cli-ByKIIMfT.js} +9 -9
  33. package/server/cli-D9cUTbBr.js +3 -0
  34. package/server/{cliproxy-BituqWtR.js → cliproxy-B4c1BUvs.js} +2 -2
  35. package/server/{cliproxy-D3sHB0sI.js → cliproxy-C_GuT5DU.js} +1 -1
  36. package/server/{close-issue-CrBE7voz.js → close-issue-BOuLKr6e.js} +5 -5
  37. package/server/{closed-issue-reaper-BRQBc7Xa.js → closed-issue-reaper-CksfuiFD.js} +1 -1
  38. package/server/{closed-issue-reaper-DX9mYUji.js → closed-issue-reaper-DCAYzNXW.js} +102 -30
  39. package/server/{codex-Bi1ITSOo.js → codex-BYPz6ZdF.js} +1 -1
  40. package/server/{codex-CO0HrK3j.js → codex-BbqIRZjd.js} +6 -5
  41. package/server/{behavior-D3d2mVyD.js → codex-parser-mFYZh8vR.js} +3 -9
  42. package/server/{compact-beads-DUkCUFxA.js → compact-beads-CyJtoXJi.js} +15 -8
  43. package/server/{compact-beads-CrA8-k10.js → compact-beads-N00E4EVa.js} +1 -1
  44. package/server/{config-DsCxzjXK.js → config-DVLdmnMJ.js} +2 -2
  45. package/server/{config-B4_d7z7z.js → config-Dj6N8EP9.js} +1 -1
  46. package/server/{config-yaml-C_djSurJ.js → config-yaml-cNOZcEww.js} +118 -23
  47. package/server/{conflict-gate-D47Kl78u.js → conflict-gate-BMKm_5DV.js} +3 -3
  48. package/server/{conflict-gate-CpOn9KC-.js → conflict-gate-CuXUv-bP.js} +1 -1
  49. package/server/{context-layers-CHl3Nroz.js → context-layers-CeAwSYNt.js} +2 -2
  50. package/server/{context-layers-BNhUBTkf.js → context-layers-c0JqYHcS.js} +3 -3
  51. package/server/{control-settings-KyYNXZLv.js → control-settings-D4EFsRBd.js} +4 -4
  52. package/server/{conversation-compaction-D3aS5PnS.js → conversation-compaction-BCggyih4.js} +8 -8
  53. package/server/{conversation-compaction-D4Wed1BJ.js → conversation-compaction-kHVfVRg3.js} +1 -1
  54. package/server/{conversation-service-CFZIjs-M.js → conversation-service-B8LFQQm1.js} +6 -5
  55. package/server/{conversation-service-DcDB5usR.js → conversation-service-BTzObqGi.js} +1 -1
  56. package/server/{conversations-BSOU5qnu.js → conversations-B-lcHv-5.js} +4 -4
  57. package/server/{conversations-BbDPrz89.js → conversations-BM7zlXjr.js} +1 -1
  58. package/server/{cost-BE_ulOrw.js → cost-BcpRQ-7o.js} +3 -3
  59. package/server/{cost-CaiG63FG.js → cost-D9kPIY_5.js} +2 -2
  60. package/server/{cost-sync-D6AX8jv-.js → cost-sync-DF6odxK9.js} +3 -3
  61. package/server/{dag-BQFtXOuJ.js → dag-DKI3sOmX.js} +3 -3
  62. package/server/{dangerous-git-ops-04Ba-Qu3.js → dangerous-git-ops-Bn18PEcN.js} +1 -1
  63. package/server/dashboard-db-worker.js +6 -6
  64. package/server/{deacon-Bz-6Wjmn.js → deacon-DONuopff.js} +3 -3
  65. package/server/{deacon-2EvA9Ci3.js → deacon-DdARMjZq.js} +188 -1601
  66. package/server/{deacon-swarm-DYYOzHRH.js → deacon-swarm-BNGkmYR_.js} +12 -105
  67. package/server/deacon-swarm-CvdFekIO.js +2 -0
  68. package/server/deacon.js +7 -7
  69. package/server/{devcontainer-renderer-Dx0C7VWJ.js → devcontainer-renderer-C-34Sxyz.js} +3 -3
  70. package/server/{dist-ya66D9ze.js → dist-BMXvKiZP.js} +1 -1
  71. package/server/dist-BNwrgsUO.js +3 -0
  72. package/server/{dist-src-Byxt1ifL.js → dist-src-BgGUblXg.js} +1 -1
  73. package/server/{docker-D2TbXDO6.js → docker-apZ9pBYw.js} +67 -28
  74. package/server/{ensure-devcontainer-BTiMfFp5.js → ensure-devcontainer-Bqi1EF1P.js} +4 -4
  75. package/server/{ensure-devcontainer-BIShzs3M.js → ensure-devcontainer-Dq3KoOIl.js} +1 -1
  76. package/server/{esm-shims-DiV9jHa_.js → esm-shims-BEjvINX3.js} +1 -1
  77. package/server/{event-store-C02Gprug.js → event-store-CqDgfbAs.js} +1 -1
  78. package/server/{event-store-C71x6h0i.js → event-store-D89fMfXS.js} +3 -3
  79. package/server/{events-BFDuPV6n.js → events-S_C0pvl6.js} +3 -3
  80. package/server/{events-D2gP2-Yv.js → events-rIGncmP1.js} +1 -1
  81. package/server/export-BJHSVwKP.js +87 -0
  82. package/server/{factory-ByfbrCab.js → factory-DV18m0rc.js} +5 -5
  83. package/server/{feature-registry-population-CSH66UO8.js → feature-registry-population-CqZSnqQi.js} +4 -4
  84. package/server/{feature-registry-storage-DW7dUefc.js → feature-registry-storage-BeXmNBwK.js} +2 -2
  85. package/server/{features-x_aLR7U9.js → features-u5XeMaOK.js} +2 -2
  86. package/server/{feedback-target-BFo9fScH.js → feedback-target-CwyWf0Dg.js} +6 -6
  87. package/server/{feedback-target-C4VMPTZu.js → feedback-target-DDG1PWl3.js} +1 -1
  88. package/server/{feedback-writer-DCyd75yJ.js → feedback-writer-BsJiw5aT.js} +1 -1
  89. package/server/{feedback-writer-B9ZqnnX3.js → feedback-writer-D20HSXre.js} +4 -4
  90. package/server/{flywheel-DwQCoZQG.js → flywheel-9Y1X7IM-.js} +13 -13
  91. package/server/{flywheel-D9NKvWqb.js → flywheel-Dczmgchd.js} +23 -15
  92. package/server/{flywheel-DB48X7Nn.js → flywheel-RCnHAgc4.js} +1 -1
  93. package/server/{flywheel-merge-order-DrjmFXg4.js → flywheel-merge-order-CtCYsFJP.js} +7 -7
  94. package/server/{flywheel-merge-order-f1bi5XIf.js → flywheel-merge-order-DEtEd3aK.js} +1 -1
  95. package/server/forge-8y6aEPTB.js +2 -0
  96. package/server/{forge-C-SoKy8U.js → forge-DFDThFil.js} +2 -2
  97. package/server/{from-fu7ZumnY.js → from-NSJypkI8.js} +1 -1
  98. package/server/{fts-db-CL-YzSRG.js → fts-db-C5A_TTOM.js} +2 -2
  99. package/server/{fts-operations-Bylu5NjM.js → fts-operations-DvCSimfU.js} +2 -2
  100. package/server/{git-utils-Ym380hJZ.js → git-utils-C0neHvQx.js} +1 -1
  101. package/server/{git-utils-C8koBs8j.js → git-utils-Dr0L7mFk.js} +2 -2
  102. package/server/{github-app-DIr70YLg.js → github-app-Bwt9lK4A.js} +1 -1
  103. package/server/{github-app-DhycHVLF.js → github-app-u9-SX7Gc.js} +2 -2
  104. package/server/{github-client-7gkcXcBS.js → github-client-Btyy3uan.js} +3 -3
  105. package/server/{github-client-Ji9lUTNF.js → github-client-Do3k-N1W.js} +1 -1
  106. package/server/{github-pr-lookup-rt7T9FwA.js → github-pr-lookup-DOF1U2WW.js} +2 -2
  107. package/server/{harness-resolve-CvGXUnAF.js → harness-resolve-C6g2R0Cd.js} +3 -3
  108. package/server/{health-events-D4E1DLN-.js → health-events-B4u-2a9m.js} +2 -2
  109. package/server/{health-events-DDfkoO5a.js → health-events-Bos3sk5g.js} +1 -1
  110. package/server/{hooks-D_6pAbuJ.js → hooks-BCoOjL_R.js} +2 -2
  111. package/server/{hooks-DvdnCVv6.js → hooks-uEr8WTx_.js} +1 -1
  112. package/server/{hume-DkVOs1Qi.js → hume-BqxYKbUf.js} +2 -2
  113. package/server/hume-CerGi2RH.js +3 -0
  114. package/server/{idle-stack-reaper-cDRXDpgE.js → idle-stack-reaper-DbZ8ukMd.js} +2 -2
  115. package/server/{idle-stack-reaper-DNbV9-fj.js → idle-stack-reaper-H0W6XtHh.js} +1 -1
  116. package/server/{infra-Clew3DpF.js → infra-Ba9mS6e6.js} +3 -3
  117. package/server/{injection-QCIHOpk6.js → injection-C1DKXeIZ.js} +1 -1
  118. package/server/{injection-ql0Nddcn.js → injection-yrMBxzVq.js} +7 -7
  119. package/server/{inspect-agent-DY18KEx4.js → inspect-agent-B-mnb4uh.js} +9 -9
  120. package/server/inspect-agent-CWkeAB7J.js +2 -0
  121. package/server/{internal-token-C90jBp-y.js → internal-token-BPYEaXFh.js} +1 -1
  122. package/server/{internal-token-BeXjPLKy.js → internal-token-BtqSbKTx.js} +2 -2
  123. package/server/{io-CbAFXQge.js → io-VEGSAqsd.js} +15 -22
  124. package/server/{issue-closed-BYC2TCk-.js → issue-closed-BxcePXL-.js} +4 -4
  125. package/server/{issue-lifecycle-BoJa6qIt.js → issue-lifecycle--8MRxrG1.js} +22 -22
  126. package/server/{issue-lifecycle-CLHbj8RS.js → issue-lifecycle-CdMUauyb.js} +1 -1
  127. package/server/{issue-service-singleton-BS9NENuR.js → issue-service-singleton-CkTUI-eu.js} +10 -10
  128. package/server/{issue-service-singleton-3g_CCY-1.js → issue-service-singleton-MZsDhAob.js} +1 -1
  129. package/server/{issues-BPcqPqfV.js → issues-CBAsuoAO.js} +2 -2
  130. package/server/jsonl-parser-BUW5_sSK.js +245 -0
  131. package/server/{label-cleanup-CwiCSZrb.js → label-cleanup-htK6fBRU.js} +3 -3
  132. package/server/{layers-OHHLphl0.js → layers-jjL16At6.js} +2 -2
  133. package/server/{lifecycle-B8IdvUbt.js → lifecycle-Ck2UR27D.js} +7 -7
  134. package/server/{lifecycle-io-BMCH1Bxg.js → lifecycle-io-DXv8Utct.js} +1 -1
  135. package/server/{lifecycle-io-C73m5e6R.js → lifecycle-io-IehcRt2v.js} +36 -47
  136. package/server/{linear-client-BMxgycoy.js → linear-client-By7hjwuN.js} +1 -1
  137. package/server/{linear-client-CgQlM4aT.js → linear-client-D9cSQfvD.js} +3 -3
  138. package/server/memory-fts-worker.js +1 -1
  139. package/server/{merge-BRkVaIx-.js → merge-BLcEZNXz.js} +1 -1
  140. package/server/{merge-B7Oi-g6k.js → merge-BN8FGJ2q.js} +3 -3
  141. package/server/{merge-agent-DNFFsiEm.js → merge-agent-B3u2szOL.js} +29 -29
  142. package/server/{merge-agent-Bwm34MZ5.js → merge-agent-ejC7Wos8.js} +1 -1
  143. package/server/{merge-batch-BpYXUaqJ.js → merge-batch-DyqlgYGp.js} +1 -1
  144. package/server/{merge-blockers-DIOZmqdK.js → merge-blockers-cq-aS2KG.js} +2 -2
  145. package/server/merge-ops-CFkQtXEj.js +2 -0
  146. package/server/{merge-rebase-C8WH39MB.js → merge-rebase-Dl7yIxtV.js} +2 -2
  147. package/server/{merge-set-CsEE2CyQ.js → merge-set-CZ9Nbay0.js} +3 -3
  148. package/server/{merge-set-DOsBTBQc.js → merge-set-Dy0D0r3i.js} +1 -1
  149. package/server/{merge-sync-CcLM2vwW.js → merge-sync-CG9kDCdT.js} +1 -1
  150. package/server/{merge-sync-C2B322Ot.js → merge-sync-D7jWLgCC.js} +2 -2
  151. package/server/{merge-train-BIm7-7cy.js → merge-train-CH33XJOH.js} +3 -3
  152. package/server/{merge-train-deps-DG1oQ2DT.js → merge-train-deps-JoVdGnOg.js} +4 -4
  153. package/server/{merge-verification-BAbjxEd5.js → merge-verification-D4wTChdX.js} +4 -4
  154. package/server/{multipart-parser-jKtKAXtl.js → multipart-parser-Csn8U-K9.js} +2 -2
  155. package/server/{no-resume-mode-yrPEQ_pC.js → no-resume-mode-Gh5R_YLF.js} +1 -1
  156. package/server/node_modules/.package-lock.json +1 -1
  157. package/server/{orphan-proposed-reconciler-BqVGaOIj.js → orphan-proposed-reconciler-BIcNu4tl.js} +1 -1
  158. package/server/{orphan-proposed-reconciler-zHrwJ3xr.js → orphan-proposed-reconciler-DI_IS1p_.js} +15 -39
  159. package/server/package-lock.json +2 -2
  160. package/server/package.json +1 -1
  161. package/server/{pan-dir-BlNrLzW7.js → pan-dir-CQIfKG8c.js} +4 -4
  162. package/server/{paths-CiVeo4N_.js → paths-Blj6A9AJ.js} +2 -2
  163. package/server/{pickup-KLRUhThD.js → pickup-BtvRBbvI.js} +1 -1
  164. package/server/{pipeline-notifier-nkWCe042.js → pipeline-notifier-BH4PAi-w.js} +1 -1
  165. package/server/{pipeline-notifier-DBF6dHxH.js → pipeline-notifier-D_WYtEwl.js} +2 -2
  166. package/server/project-pipelines-jMTitpeO.js +162 -0
  167. package/server/projects-CrBE6IhN.js +3 -0
  168. package/server/{prompts-CXbQvevY.js → prompts-B3njaImU.js} +2 -2
  169. package/server/{providers-CUdAb5Qu.js → providers-BbEyFhPX.js} +7 -7
  170. package/server/providers-DnPxkHoG.js +3 -0
  171. package/server/public/assets/chunk-BO2N2NFS-3qh9TUJi.js +103 -0
  172. package/server/public/assets/{diagram-OG6HWLK6-NACO1xW5.js → diagram-OG6HWLK6-D8UVTPj7.js} +1 -1
  173. package/server/public/assets/{dist-DQD-ZjQY.js → dist-BvLLn1YC.js} +3 -3
  174. package/server/public/assets/{dist-D1FjqGgm.js → dist-CyubL7Wj.js} +1 -1
  175. package/server/public/assets/{ganttDiagram-6RSMTGT7-CEMAKgmE.js → ganttDiagram-6RSMTGT7-BI4E1LbQ.js} +1 -1
  176. package/server/public/assets/{highlighted-body-OFNGDK62-D5lC7FW8.js → highlighted-body-OFNGDK62-D_bapWkF.js} +1 -1
  177. package/server/public/assets/index-BAZxZ-8I.js +796 -0
  178. package/server/public/assets/index-FBG3JBfq.css +1 -0
  179. package/server/public/assets/{linear-DDHAMRPB.js → linear-CEdobObr.js} +1 -1
  180. package/server/public/assets/mermaid-GHXKKRXX-BYP8MI37.js +1 -0
  181. package/server/public/assets/{pieDiagram-4H26LBE5-DwBdeKBb.js → pieDiagram-4H26LBE5-DT79L01f.js} +1 -1
  182. package/server/public/assets/{prod-DAZt0c4G.js → prod-CR_K2DFV.js} +4 -4
  183. package/server/public/assets/{quadrantDiagram-W4KKPZXB-CNDLp-_m.js → quadrantDiagram-W4KKPZXB-BEkKXXrL.js} +1 -1
  184. package/server/public/assets/{sankeyDiagram-5OEKKPKP-oIUL_uO1.js → sankeyDiagram-5OEKKPKP-BxSCqn-j.js} +1 -1
  185. package/server/public/assets/{xychartDiagram-2RQKCTM6-B-IM6Cck.js → xychartDiagram-2RQKCTM6-DicwJGG_.js} +1 -1
  186. package/server/public/index.html +2 -2
  187. package/server/{pull-requests-DZ-V7_LB.js → pull-requests-43LPDfM8.js} +1 -1
  188. package/server/{pull-requests-kTRl7cWC.js → pull-requests-DyUkQl4W.js} +3 -3
  189. package/server/{rally-xCTZ-UcI.js → rally-BtWjybOa.js} +3 -3
  190. package/server/{rally-api-jOk4vit_.js → rally-api-B-YA_oXx.js} +1 -1
  191. package/server/{rally-api-DpZo3WwF.js → rally-api-B-osULNL.js} +2 -2
  192. package/server/{rally-client-BQjm3aaq.js → rally-client-CzFymP7P.js} +1 -1
  193. package/server/{rally-client-CoWZeVEj.js → rally-client-sErNQBO0.js} +5 -5
  194. package/server/rally-oggyp4cs.js +3 -0
  195. package/server/{reap-terminal-sessions-CAmURC2h.js → reap-terminal-sessions-2s-fvilz.js} +1 -1
  196. package/server/{reap-terminal-sessions-BwJb2DLJ.js → reap-terminal-sessions-DnDQ7pf9.js} +1 -1
  197. package/server/{rebuild-stack-BZ7j27xY.js → rebuild-stack-CoU-HqZj.js} +6 -6
  198. package/server/{rebuild-stack-r-cxcr26.js → rebuild-stack-nGD_nPZo.js} +1 -1
  199. package/server/{reconstruct-cache-13EkMg_i.js → reconstruct-cache-Wj8GrYB0.js} +6 -6
  200. package/server/record-lEYK__LD.js +3 -0
  201. package/server/recovery-trip-BT7nb9OV.js +98 -0
  202. package/server/{release-engine-YLTnEO_K.js → release-engine-CBLQXDlH.js} +5 -5
  203. package/server/{release-set-DwvT_Opu.js → release-set-BNiqi7hy.js} +3 -3
  204. package/server/{remote-B062S1Kc.js → remote-DW_TWQnr.js} +3 -3
  205. package/server/{remote-9u9WL0NJ.js → remote-DcO9An_f.js} +3 -3
  206. package/server/{remote-agents-BBTg-vLT.js → remote-agents-C4cyxHQS.js} +6 -6
  207. package/server/{remote-agents-B4eWgwNd.js → remote-agents-Cv-U-_V8.js} +1 -1
  208. package/server/{remote-completion-B0rmBnbL.js → remote-completion-PhXGGFQy.js} +13 -13
  209. package/server/resolver-C7dLn8OK.js +158 -0
  210. package/server/resume-BYZBIab-.js +3 -0
  211. package/server/{review-agent-tfR5RDzG.js → review-agent-Dn-yn7Zj.js} +23 -23
  212. package/server/{review-agent-Bf9XjLnl.js → review-agent-u5q3ip7H.js} +1 -1
  213. package/server/{review-artifacts-D0_IE6DQ.js → review-artifacts-D4T04aYI.js} +6 -6
  214. package/server/{review-context-CXO5ml5D.js → review-context-Rc0VDLG_.js} +8 -8
  215. package/server/{review-monitor-DfFUSx0J.js → review-monitor-BC--miCO.js} +2 -2
  216. package/server/{review-status-B0Axo-Ma.js → review-status-CG0iDuWa.js} +1 -1
  217. package/server/{review-status-BcfwcAcO.js → review-status-Dc1l4dVz.js} +18 -18
  218. package/server/{review-status-enrichment-Cp5kFTGl.js → review-status-enrichment-C1a1OG_1.js} +3 -3
  219. package/server/{review-status-sync-CEFty1pW.js → review-status-sync-CAr-hfnJ.js} +2 -2
  220. package/server/{review-status-sync-Bc0c_u12.js → review-status-sync-CfSixhhX.js} +1 -1
  221. package/server/{review-verdict-feedback-BOKRLLDf.js → review-verdict-feedback-CVDbIDBe.js} +7 -7
  222. package/server/{review-verdict-feedback-BnGtT0vN.js → review-verdict-feedback-D2Q960wX.js} +1 -1
  223. package/server/{rollup-BVqFuiS9.js → rollup-CakjztPl.js} +1 -1
  224. package/server/{rollup-C22QDVxh.js → rollup-DctoIu-A.js} +8 -8
  225. package/server/{scanner-BLCnuXqY.js → scanner-BTM1jc_u.js} +7 -7
  226. package/server/{sequence-io-BozlUb6f.js → sequence-io-pnoIDGv4.js} +4 -4
  227. package/server/{sequencer-agent-BEDEHfd2.js → sequencer-agent-9Soi-WL-.js} +10 -6
  228. package/server/server.js +1239 -1836
  229. package/server/{service-C8jKYZ0w.js → service-DfTVoqJg.js} +1668 -1408
  230. package/server/{session-fork-BDGksK4e.js → session-fork-C4jAFHj8.js} +2 -2
  231. package/server/session-history-DanhhiCw.js +168 -0
  232. package/server/{settings-CSLhh6qR.js → settings-Cuc12oP_.js} +2 -2
  233. package/server/settings-Cy7SCFO9.js +2 -0
  234. package/server/{settings-DrRQCren.js → settings-DfT3f86D.js} +3 -3
  235. package/server/{shadow-engineering-BMcBN-Of.js → shadow-engineering-bKuKTCn-.js} +3 -3
  236. package/server/{shadow-state-CHqWHD3T.js → shadow-state-CVHpRWlb.js} +1 -1
  237. package/server/{shadow-state-B4ayC7nx.js → shadow-state-DJz6_pb_.js} +2 -2
  238. package/server/{ship-log-CDVmOlZP.js → ship-log-CwqPFfqx.js} +1 -1
  239. package/server/{smart-compaction-V9DBrGcr.js → smart-compaction-B4KlpZGN.js} +1 -1
  240. package/server/{smart-compaction-C-F5sP9P.js → smart-compaction-CiWfGfRZ.js} +7 -7
  241. package/server/{spawn-planning-session-dSpOU0lP.js → spawn-planning-session-CU-DwyDl.js} +15 -15
  242. package/server/{spawn-planning-session-Bz4_JES2.js → spawn-planning-session-D5N3RuLG.js} +1 -1
  243. package/server/{specialist-completion-Coz3eTSr.js → specialist-completion-CJcv-NXH.js} +1 -1
  244. package/server/{specialist-context-fmb03vXQ.js → specialist-context-B2HlbNxS.js} +5 -5
  245. package/server/{specialist-handoff-logger-B9HK_lRu.js → specialist-handoff-logger-CQyF1ygu.js} +2 -2
  246. package/server/{specialist-logs-B24R2B9Y.js → specialist-logs-CdcUpfjj.js} +3 -3
  247. package/server/{specialists-CL7E8yUg.js → specialists-CFgw_0Q6.js} +1657 -113
  248. package/server/{specialists-BGNZ0_ZW.js → specialists-CwzFdapR.js} +20 -256
  249. package/server/{specialists-B6f5-5nG.js → specialists-D7AcFi1u.js} +1 -1
  250. package/server/{specialists-Chvvwf5z.js → specialists-k22_Btaq.js} +1 -1
  251. package/server/specs-RzcDgozr.js +3 -0
  252. package/server/{src-DGAEtABV.js → src-B4TTzNSr.js} +84 -2
  253. package/server/{src-BVxZuHMg.js → src-BvpMg4EB.js} +3 -3
  254. package/server/{src-D-VXCC9C.js → src-D4YUZrwR.js} +6 -6
  255. package/server/{stack-health-C-le5erA.js → stack-health-CSgcYcr8.js} +2 -2
  256. package/server/{stack-health-BKbTTOT2.js → stack-health-DVN7zRnL.js} +1 -1
  257. package/server/{state-home-CoyWsECg.js → state-home-CEvD_v5F.js} +6 -6
  258. package/server/{state-mapping-BvAgFK8n.js → state-mapping-C13UaCL7.js} +1 -1
  259. package/server/stuck-remediation-CxsyxwFO.js +1513 -0
  260. package/server/stuck-remediation-nTIvhGOR.js +2 -0
  261. package/server/{summary-fork-BF_0vxrq.js → summary-fork-CnRMPCYd.js} +2 -2
  262. package/server/{summary-fork-BlE30Q-I.js → summary-fork-gKSoFAnK.js} +8 -8
  263. package/server/{supervisor-BSeML_p0.js → supervisor-CZMs8s0M.js} +2 -2
  264. package/server/supervisor-CfX192ma.js +2 -0
  265. package/server/{swarm-readiness-CQ4sjrXc.js → swarm-readiness-h6-pwY8w.js} +3 -3
  266. package/server/{system-prerequisites-DnmLYOnU.js → system-prerequisites-DZZTi2G6.js} +1 -1
  267. package/server/{teardown-workspace-CpcjDrZ4.js → teardown-workspace-B4D-oCVg.js} +37 -68
  268. package/server/{test-agent-queue-Bq298zZl.js → test-agent-queue-CnuYku4B.js} +6 -6
  269. package/server/{test-verdict-CCDd25uN.js → test-verdict-CRsPpByy.js} +1 -1
  270. package/server/{test-verdict-Bm4uv_AA.js → test-verdict-CXMLATGc.js} +1 -1
  271. package/server/{tldr-daemon-Rn1Zue0P.js → tldr-daemon-CgZQ3jmZ.js} +1 -1
  272. package/server/{tldr-daemon-CaSUXd9r.js → tldr-daemon-CuA8hz21.js} +2 -2
  273. package/server/{tmux-CbcrkUx5.js → tmux-By8E_Yv_.js} +1 -1
  274. package/server/{tmux-BVc-NeKM.js → tmux-C3g9VFcg.js} +2 -2
  275. package/server/{token-D2OC_9ms.js → token-g_sJ19g3.js} +2 -2
  276. package/server/token-util-C9u4An3K.js +3 -0
  277. package/server/{token-util-CROoF5ic.js → token-util-DiwnnbJo.js} +1 -1
  278. package/server/{tracker-config-EsBoOWEy.js → tracker-config-BzfVj41Z.js} +1 -1
  279. package/server/{tracker-config-C1Y_2CIo.js → tracker-config-dQxC15vH.js} +2 -2
  280. package/server/{tracker-utils-lph9C3Pw.js → tracker-utils--z8FLSWn.js} +2 -2
  281. package/server/{tracker-utils-DSb9cfrF.js → tracker-utils-DkKyRT0H.js} +1 -1
  282. package/server/{traefik-connect-5EP1WS_Z.js → traefik-connect-CZYB3dlm.js} +1 -1
  283. package/server/{tunnel-BFBCeo97.js → tunnel-BpWZs0Jy.js} +3 -3
  284. package/server/{tunnel-DDe-ATFF.js → tunnel-CN2px87h.js} +1 -1
  285. package/server/{typed-errors-DSPn_xWP.js → typed-errors-CrN1AByg.js} +1 -1
  286. package/server/{typed-errors-BEJhbjJg.js → typed-errors-sLpGfegz.js} +1 -1
  287. package/server/{types-CE1m_daD.js → types-BLS_Zbmd.js} +1 -1
  288. package/server/{types-B5u3NxMl.js → types-tlXf80x3.js} +1 -1
  289. package/server/{uat-train-DtKHHy1U.js → uat-train-BRo6DM7p.js} +24 -24
  290. package/server/{uat-train-8T24rPzc.js → uat-train-utGVmqdm.js} +1 -1
  291. package/server/{validation-lyudzPvD.js → validation-CsPVsoA0.js} +4 -4
  292. package/server/{validation-COOXwNXU.js → validation-Dq_wwcw3.js} +1 -1
  293. package/server/{verification-runner-DO0nYTJx.js → verification-runner-CMT5WRMS.js} +12 -12
  294. package/server/{verification-runner-Dd1FX8Qk.js → verification-runner-D0Uh-9jc.js} +1 -1
  295. package/server/{vtt-parser-C57tEF7-.js → vtt-parser-C_XPlifj.js} +1 -1
  296. package/server/{work-agent-prompt-B2F3ZwKm.js → work-agent-prompt-ZTAb2Hyf.js} +12 -12
  297. package/server/workflows-BLwxUMP7.js +2 -0
  298. package/server/{workflows-Clz_AFwR.js → workflows-CXRwhw_o.js} +14 -14
  299. package/server/{workspace-D0rCFemz.js → workspace-9UEsKuiP.js} +1 -1
  300. package/server/{workspace-CY_2-Ddv.js → workspace-CNfuj1-5.js} +3 -3
  301. package/server/{workspace-config-DA8U97k9.js → workspace-config-ChWOECy0.js} +1 -1
  302. package/server/{workspace-manager-BIfpzqdU.js → workspace-manager-BO-6k3sP.js} +1 -1
  303. package/server/{workspace-manager-D6NgGkiF.js → workspace-manager-D8AByFIT.js} +13 -13
  304. package/server/{workspace-metadata-C8yn8kAH.js → workspace-metadata-CvC268MN.js} +2 -2
  305. package/server/{workspace-metadata-DfgR40YU.js → workspace-metadata-DZiJtnuF.js} +1 -1
  306. package/server/{workspaces-DOeHyKmA.js → workspaces-D-uIoqbg.js} +104 -122
  307. package/server/writer-BUweuRPx.js +3 -0
  308. package/server/writer-CrP2xuBn.js +251 -0
  309. package/sync-sources/hooks/ask-user-question-hook +7 -1
  310. package/sync-sources/hooks/record-cost-event.js +4 -3
  311. package/sync-sources/hooks/record-cost-event.js.map +1 -1
  312. package/server/agent-runtime-mirror-DrWxopNA.js +0 -37
  313. package/server/auto-commit-wZ9X7Isd.js +0 -3
  314. package/server/bd-mutex-BItGvLQ8.js +0 -35
  315. package/server/beads-restore-CMbDSB5R.js +0 -60
  316. package/server/cli-CqgiSAU8.js +0 -3
  317. package/server/deacon-swarm-B8pgK2a7.js +0 -2
  318. package/server/dist-BYSj075e.js +0 -3
  319. package/server/forge-CUCYK7h_.js +0 -2
  320. package/server/hume-x9voULey.js +0 -3
  321. package/server/inspect-agent-D8UBDgfR.js +0 -2
  322. package/server/merge-ops-B7m-hBEZ.js +0 -2
  323. package/server/projects-BqRMlDOv.js +0 -3
  324. package/server/providers-gZ0cUgQM.js +0 -3
  325. package/server/public/assets/chunk-BO2N2NFS-C-6y8VFI.js +0 -103
  326. package/server/public/assets/index-BDqWyuZQ.js +0 -796
  327. package/server/public/assets/index-CZiADHcL.css +0 -1
  328. package/server/public/assets/mermaid-GHXKKRXX-DRM2ANcR.js +0 -1
  329. package/server/rally-CRteqXe0.js +0 -3
  330. package/server/record-CJsjvRO4.js +0 -3
  331. package/server/resume-R7xkSmLW.js +0 -3
  332. package/server/settings-CSaXtkoA.js +0 -2
  333. package/server/specs-oaaYaA5c.js +0 -3
  334. package/server/supervisor-03Tj_Wra.js +0 -2
  335. package/server/token-util-xNaV-00f.js +0 -3
  336. package/server/workflows-B4fIN8VP.js +0 -2
@@ -1,43 +1,43 @@
1
- import { $n as extractPrefixSync, Dn as getProjectSync, Gn as resolveProjectFromIssueSync, Hr as init_paths, Ln as listProjectsSync, Nn as init_projects, Qn as extractNumberSync, Rr as encodeClaudeProjectDir, Sn as findProjectByTeamSync, Vr as getOverdeckHome, er as init_issue_id, ir as resolveIssueIdSync, ln as init_state_plane, lr as FsError, nr as parseIssueIdSync, un as isStatePlaneOnlyStatus, ur as GitError, vn as extractTeamPrefix, yr as init_errors } from "./config-yaml-C_djSurJ.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-CL7E8yUg.js";
1
+ import { Br as encodeClaudeProjectDir, Fn as init_projects, Jr as init_paths, bn as extractTeamPrefix, dn as init_state_plane, dr as FsError, er as extractNumberSync, fn as isStatePlaneOnlyStatus, fr as GitError, ir as parseIssueIdSync, kn as getProjectSync, nr as init_issue_id, or as resolveIssueIdSync, qn as resolveProjectFromIssueSync, qr as getOverdeckHome, tr as extractPrefixSync, wn as findProjectByTeamSync, xr as init_errors, zn as listProjectsSync } from "./config-yaml-cNOZcEww.js";
2
+ import { Q as getWorkAgentLifecycleStateSync, ct as getTrustedOrigins, gt as jsonResponse, mt as httpHandler, n as _serverManagedMerges, st as getHeaderFromMap, ut as normalizeOrigin } from "./specialists-CFgw_0Q6.js";
3
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-Clew3DpF.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-BVc-NeKM.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-BcfwcAcO.js";
7
- import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle-BoJa6qIt.js";
8
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-CaiG63FG.js";
9
- import { Mn as getAgentState, Rt as transitionIssueToInReview, U as spawnAgent, Z as listRunningAgents, gr as getAgentRuntimeStateSync, j as messageAgent, t as init_agents, vr as saveAgentRuntimeState } from "./agents-DqQa4Dq_.js";
10
- import { f as CostWriter, l as CostDoorLive } from "./service-C8jKYZ0w.js";
11
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-C1Y_2CIo.js";
12
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-lph9C3Pw.js";
13
- import { o as getInternalTokenSync, s as init_internal_token } from "./internal-token-BeXjPLKy.js";
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-C2B322Ot.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-CbAFXQge.js";
17
- import { f as init_config, m as loadConfigSync$1 } from "./config-DsCxzjXK.js";
18
- import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-BSOU5qnu.js";
19
- import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-C-le5erA.js";
20
- import { o as criticalPath, t as actionableDoc, u as init_dag } from "./dag-BQFtXOuJ.js";
21
- import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-tOsAYP5h.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-BFDuPV6n.js";
23
- import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-D6NgGkiF.js";
24
- import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-Dx0C7VWJ.js";
25
- import { at as init_jsonl_parser, nt as getActiveSessionModelSync } from "./specialists-BGNZ0_ZW.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-CPitEZo4.js";
28
- import { T as verifyAppCanMerge, f as init_github_app, m as isIntegrationPermissionError } from "./github-app-DhycHVLF.js";
29
- import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-C8yn8kAH.js";
30
- import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-Cp5kFTGl.js";
31
- import { n as generateDailySummary, r as init_cli } from "./cli-s7bPWy-E.js";
32
- import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-CXO5ml5D.js";
33
- import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-CaSUXd9r.js";
34
- import { C as init_operations, S as gitPush, T as listGitOperationsSync, a as init_merge_agent, w as init_git_activity, x as MainDivergedError, y as syncMainIntoWorkspace } from "./merge-agent-DNFFsiEm.js";
35
- import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-B7Oi-g6k.js";
36
- import { n as init_release_set, t as getReleaseSetSync } from "./release-set-DwvT_Opu.js";
37
- import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-D47Kl78u.js";
38
- import { n as runVerificationForIssue } from "./verification-runner-DO0nYTJx.js";
39
- import { t as teardownWorkspace } from "./teardown-workspace-CpcjDrZ4.js";
40
- import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-BZ7j27xY.js";
4
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-Ba9mS6e6.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-C3g9VFcg.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-Dc1l4dVz.js";
7
+ import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle--8MRxrG1.js";
8
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-D9kPIY_5.js";
9
+ import { Mn as getAgentState, Rt as transitionIssueToInReview, U as spawnAgent, Z as listRunningAgents, hr as saveAgentRuntimeState, j as messageAgent, pr as getAgentRuntimeStateSync, t as init_agents } from "./agents-B9GwfCyp.js";
10
+ import { f as CostWriter, l as CostDoorLive } from "./service-DfTVoqJg.js";
11
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-dQxC15vH.js";
12
+ import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils--z8FLSWn.js";
13
+ import { o as getInternalTokenSync, s as init_internal_token } from "./internal-token-BtqSbKTx.js";
14
+ import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, p as init_types } from "./types-BLS_Zbmd.js";
15
+ import { o as init_merge_sync, r as getAllActiveQueues } from "./merge-sync-D7jWLgCC.js";
16
+ import { A as init_vbrief_index, M as readVBriefDocument, b as init_types$1, c as mergeRecordStatusOverrides, k as findVBriefByIssue, o as init_io, r as findPlan, s as isPlanningComplete, u as readPlan, y as VBRIEF_INSPECTION_POLICIES } from "./io-VEGSAqsd.js";
17
+ import { f as init_config, m as loadConfigSync$1 } from "./config-DVLdmnMJ.js";
18
+ import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-B-lcHv-5.js";
19
+ import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-CSgcYcr8.js";
20
+ import { o as criticalPath, t as actionableDoc, u as init_dag } from "./dag-DKI3sOmX.js";
21
+ import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-Dl4FhT8J.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-S_C0pvl6.js";
23
+ import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-D8AByFIT.js";
24
+ import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-C-34Sxyz.js";
25
+ import { a as init_jsonl_parser, t as getActiveSessionModelSync } from "./jsonl-parser-BUW5_sSK.js";
26
+ import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-CbghE9-o.js";
27
+ import { T as verifyAppCanMerge, f as init_github_app, m as isIntegrationPermissionError } from "./github-app-u9-SX7Gc.js";
28
+ import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-CvC268MN.js";
29
+ import { n as restoreTrackedBeadsExport, t as init_beads_restore } from "./beads-restore-BUItPOjI.js";
30
+ import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-C1a1OG_1.js";
31
+ import { n as generateDailySummary, r as init_cli } from "./cli-ByKIIMfT.js";
32
+ import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-Rc0VDLG_.js";
33
+ import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-CuA8hz21.js";
34
+ import { C as init_operations, S as gitPush, T as listGitOperationsSync, a as init_merge_agent, w as init_git_activity, x as MainDivergedError, y as syncMainIntoWorkspace } from "./merge-agent-B3u2szOL.js";
35
+ import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-BN8FGJ2q.js";
36
+ import { n as init_release_set, t as getReleaseSetSync } from "./release-set-BNiqi7hy.js";
37
+ import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-BMKm_5DV.js";
38
+ import { n as runVerificationForIssue } from "./verification-runner-CMT5WRMS.js";
39
+ import { t as teardownWorkspace } from "./teardown-workspace-B4D-oCVg.js";
40
+ import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-CoU-HqZj.js";
41
41
  import { basename, dirname, join, resolve, sep } from "node:path";
42
42
  import { Effect, Layer, Option } from "effect";
43
43
  import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, writeFileSync } from "fs";
@@ -974,7 +974,7 @@ const postWorkspaceContainerActionRoute = HttpRouter.add("POST", "/api/workspace
974
974
  }
975
975
  if (!workspacePath) return jsonResponse({ error: `Workspace not found for ${issueId}` }, { status: 404 });
976
976
  if (!composeFile && ["start", "restart"].includes(action)) {
977
- const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-BIShzs3M.js"));
977
+ const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-Dq3KoOIl.js"));
978
978
  if (ensureDevcontainerSync({
979
979
  workspacePath,
980
980
  issueId
@@ -2594,7 +2594,7 @@ async function reconcileGitHubMergeStatus(issueId, status) {
2594
2594
  const prRef = parseGitHubPullRequestUrl(status.prUrl);
2595
2595
  if (!prRef) return false;
2596
2596
  try {
2597
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DIr70YLg.js");
2597
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bwt9lK4A.js");
2598
2598
  if (!isGitHubAppConfigured()) return false;
2599
2599
  const prState = await Effect.runPromise(getPullRequestState(prRef.owner, prRef.repo, prRef.number));
2600
2600
  console.log(`[merge] reconcileGitHubMergeStatus: ${issueId} PR #${prRef.number} merged=${prState.merged} state=${prState.state}`);
@@ -2611,31 +2611,6 @@ async function reconcileGitHubMergeStatus(issueId, status) {
2611
2611
  return false;
2612
2612
  }
2613
2613
  }
2614
- async function readBeadsFromJsonl(workspacePath, issueId) {
2615
- try {
2616
- const jsonlPath = join(workspacePath, ".beads", "issues.jsonl");
2617
- if (!existsSync$1(jsonlPath)) return [];
2618
- const raw = await readFile(jsonlPath, "utf-8");
2619
- const issueLower = issueId.toLowerCase();
2620
- const beads = [];
2621
- for (const line of raw.split("\n")) {
2622
- if (!line.trim()) continue;
2623
- try {
2624
- const entry = JSON.parse(line);
2625
- const labels = Array.isArray(entry.labels) ? entry.labels : [];
2626
- if (labels.some((l) => l.toLowerCase() === issueLower)) beads.push({
2627
- id: String(entry.id ?? ""),
2628
- title: String(entry.title ?? ""),
2629
- status: String(entry.status ?? "open"),
2630
- labels
2631
- });
2632
- } catch {}
2633
- }
2634
- return beads;
2635
- } catch {
2636
- return [];
2637
- }
2638
- }
2639
2614
  /**
2640
2615
  * Build a rich PR body with issue link, beads task summary, and AC checklist
2641
2616
  * from the vBRIEF plan. Exported for testing.
@@ -2661,8 +2636,7 @@ async function buildRichPRBody(issueId, workspacePath) {
2661
2636
  }
2662
2637
  } catch {}
2663
2638
  try {
2664
- let beads = (await Effect.runPromise(queryBeadsForIssue(workspacePath, issueId, { acquisitionTimeoutMs: 500 }))).beads;
2665
- if (beads.length === 0) beads = await readBeadsFromJsonl(workspacePath, issueId);
2639
+ const beads = (await Effect.runPromise(queryBeadsForIssue(workspacePath, issueId, { acquisitionTimeoutMs: 500 }))).beads;
2666
2640
  if (beads.length > 0) {
2667
2641
  lines.push("## Implementation Tasks");
2668
2642
  lines.push("");
@@ -2872,8 +2846,8 @@ async function triggerMerge(issueId) {
2872
2846
  try {
2873
2847
  if (workspaceInfo.isRemote && workspaceInfo.vmName) {
2874
2848
  console.log(`[merge] Remote workspace detected for ${issueId}, using review artifact merge...`);
2875
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-DOsBTBQc.js");
2876
- const { getForgeAdapter } = await import("./forge-CUCYK7h_.js");
2849
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-Dy0D0r3i.js");
2850
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
2877
2851
  const remotePrimaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
2878
2852
  const remoteTargetBranch = remotePrimaryRepo?.targetBranch || "main";
2879
2853
  const remoteForge = remotePrimaryRepo?.forge || "github";
@@ -2908,7 +2882,7 @@ async function triggerMerge(issueId) {
2908
2882
  readyForMerge: false
2909
2883
  });
2910
2884
  completePendingOperation(issueId, null);
2911
- const { postMergeLifecycle } = await import("./merge-agent-Bwm34MZ5.js");
2885
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
2912
2886
  await postMergeLifecycle(issueId, projectPath);
2913
2887
  return {
2914
2888
  success: true,
@@ -2945,10 +2919,10 @@ async function triggerMerge(issueId) {
2945
2919
  const projectConfig = findProjectByTeamSync(issuePrefix);
2946
2920
  if (projectConfig?.workspace?.type === "polyrepo" && projectConfig?.workspace?.repos) {
2947
2921
  console.log(`[merge] Polyrepo detected for ${issueId}, coordinating merge set...`);
2948
- const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-DOsBTBQc.js");
2949
- const { runQualityGates } = await import("./validation-COOXwNXU.js");
2950
- const { getForgeAdapter } = await import("./forge-CUCYK7h_.js");
2951
- const { messageAgent } = await import("./agents-CxbuBjID.js");
2922
+ const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-Dy0D0r3i.js");
2923
+ const { runQualityGates } = await import("./validation-Dq_wwcw3.js");
2924
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
2925
+ const { messageAgent } = await import("./agents-CEcaxSkR.js");
2952
2926
  let mergeSet = getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId);
2953
2927
  if (!mergeSet) {
2954
2928
  const error = `No merge set found for ${issueId}`;
@@ -3218,7 +3192,7 @@ async function triggerMerge(issueId) {
3218
3192
  readyForMerge: false
3219
3193
  });
3220
3194
  completePendingOperation(issueId, null);
3221
- const { postMergeLifecycle } = await import("./merge-agent-Bwm34MZ5.js");
3195
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
3222
3196
  advanceQueue();
3223
3197
  await postMergeLifecycle(issueId, projectPath);
3224
3198
  return {
@@ -3229,8 +3203,8 @@ async function triggerMerge(issueId) {
3229
3203
  repos: mergeResults
3230
3204
  };
3231
3205
  }
3232
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-DOsBTBQc.js");
3233
- const { getForgeAdapter } = await import("./forge-CUCYK7h_.js");
3206
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-Dy0D0r3i.js");
3207
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
3234
3208
  const primaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
3235
3209
  const targetBranch = primaryRepo?.targetBranch || "main";
3236
3210
  const primaryForge = primaryRepo?.forge || "github";
@@ -3272,7 +3246,7 @@ async function triggerMerge(issueId) {
3272
3246
  };
3273
3247
  }
3274
3248
  if (githubPrRef) try {
3275
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DIr70YLg.js");
3249
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bwt9lK4A.js");
3276
3250
  if (isGitHubAppConfigured()) {
3277
3251
  const prState = await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number));
3278
3252
  if (prState.state !== "OPEN" && !prState.merged) {
@@ -3333,7 +3307,7 @@ async function triggerMerge(issueId) {
3333
3307
  readyForMerge: false
3334
3308
  });
3335
3309
  completePendingOperation(issueId, null);
3336
- const { postMergeLifecycle } = await import("./merge-agent-Bwm34MZ5.js");
3310
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
3337
3311
  await postMergeLifecycle(issueId, projectPath, branchName);
3338
3312
  return {
3339
3313
  success: true,
@@ -3347,13 +3321,13 @@ async function triggerMerge(issueId) {
3347
3321
  } catch (prStateErr) {
3348
3322
  console.warn(`[merge] Pre-merge PR state check failed for ${issueId}: ${prStateErr.message} — proceeding (check is best-effort)`);
3349
3323
  }
3350
- const { postMergeLifecycle } = await import("./merge-agent-Bwm34MZ5.js");
3324
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
3351
3325
  const agentId = `agent-${issueId.toLowerCase()}`;
3352
3326
  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.`;
3353
3327
  setReviewStatus(issueId, { mergeStep: "rebasing" });
3354
3328
  console.log(`[merge] Rebasing ${branchName} onto ${targetBranch} for ${issueId} (agent=${await Effect.runPromise(sessionExists(agentId)) ? "running" : "stopped"})...`);
3355
3329
  {
3356
- const { beginShipLog, appendShipLog } = await import("./ship-log-CDVmOlZP.js");
3330
+ const { beginShipLog, appendShipLog } = await import("./ship-log-CwqPFfqx.js");
3357
3331
  beginShipLog(issueId);
3358
3332
  appendShipLog(issueId, `Ship started: rebasing ${branchName} onto ${targetBranch}…`, "rebasing");
3359
3333
  }
@@ -3481,7 +3455,7 @@ async function triggerMerge(issueId) {
3481
3455
  });
3482
3456
  let skipLocalVerification = false;
3483
3457
  if (primaryForge === "github" && artifactUrl) try {
3484
- const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-DIr70YLg.js");
3458
+ const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-Bwt9lK4A.js");
3485
3459
  if (isGitHubAppConfigured()) {
3486
3460
  const ref = parsePullRequestRef({ url: artifactUrl });
3487
3461
  if (ref) {
@@ -3502,12 +3476,12 @@ async function triggerMerge(issueId) {
3502
3476
  } catch (ciErr) {
3503
3477
  console.warn(`[merge] CI-state check failed (${ciErr.message?.slice(0, 120)}) — falling back to local verification for ${issueId}`);
3504
3478
  }
3505
- const { appendShipLog } = await import("./ship-log-CDVmOlZP.js");
3479
+ const { appendShipLog } = await import("./ship-log-CwqPFfqx.js");
3506
3480
  if (skipLocalVerification) appendShipLog(issueId, "✓ Local verification skipped — CI already green on this exact commit", "verifying");
3507
3481
  const verifyResult = skipLocalVerification ? { outcome: "passed" } : await (async () => {
3508
3482
  console.log(`[merge] Running post-rebase verification for ${issueId}...`);
3509
3483
  appendShipLog(issueId, "Running post-rebase verification (full quality-gate suite)…", "verifying");
3510
- const { runVerificationForIssue } = await import("./verification-runner-Dd1FX8Qk.js");
3484
+ const { runVerificationForIssue } = await import("./verification-runner-D0Uh-9jc.js");
3511
3485
  return Effect.runPromise(runVerificationForIssue(issueId, workspacePath, { isRemote: false }, "merge-verify", {
3512
3486
  syncTargetBranch: false,
3513
3487
  onGateLog: (line) => appendShipLog(issueId, line, "verifying")
@@ -3540,7 +3514,7 @@ async function triggerMerge(issueId) {
3540
3514
  console.log(`[merge] Post-rebase verification ${verifyResult.outcome} for ${issueId}`);
3541
3515
  setReviewStatus(issueId, { mergeStep: "reporting-statuses" });
3542
3516
  try {
3543
- const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-DIr70YLg.js");
3517
+ const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-Bwt9lK4A.js");
3544
3518
  if (githubPrRef && isGitHubAppConfigured()) {
3545
3519
  const sha = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).headSha.trim();
3546
3520
  if (sha) {
@@ -3568,7 +3542,7 @@ async function triggerMerge(issueId) {
3568
3542
  } catch (prMergeErr) {
3569
3543
  console.error(`[merge] Review artifact merge threw for ${issueId}:`, prMergeErr);
3570
3544
  try {
3571
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DIr70YLg.js");
3545
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bwt9lK4A.js");
3572
3546
  if (githubPrRef && isGitHubAppConfigured()) {
3573
3547
  artifactMerged = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).merged;
3574
3548
  if (artifactMerged) console.log(`[merge] Race-detected: PR #${githubPrRef.number} for ${issueId} was already merged despite thrown error; proceeding`);
@@ -3685,8 +3659,8 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
3685
3659
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
3686
3660
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
3687
3661
  return yield* Effect.promise(async () => {
3688
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-DOsBTBQc.js");
3689
- const { getForgeAdapter } = await import("./forge-CUCYK7h_.js");
3662
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-Dy0D0r3i.js");
3663
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
3690
3664
  let mergeSet = getMergeSetSync(issueId);
3691
3665
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
3692
3666
  const results = [];
@@ -3774,8 +3748,8 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
3774
3748
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
3775
3749
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
3776
3750
  return yield* Effect.promise(async () => {
3777
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-DOsBTBQc.js");
3778
- const { getForgeAdapter } = await import("./forge-CUCYK7h_.js");
3751
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-Dy0D0r3i.js");
3752
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
3779
3753
  let mergeSet = getMergeSetSync(issueId);
3780
3754
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
3781
3755
  const results = [];
@@ -3968,7 +3942,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
3968
3942
  console.log(`[approve] Starting role pipeline for ${issueId}...`);
3969
3943
  let reviewResult;
3970
3944
  try {
3971
- const { spawnReviewRoleForIssue } = await import("./review-agent-Bf9XjLnl.js");
3945
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
3972
3946
  reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
3973
3947
  issueId,
3974
3948
  workspace: workspacePath,
@@ -4015,7 +3989,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4015
3989
  }
4016
3990
  console.log(`[approve] Step 3/3: Running server-side rebase for ${issueId}...`);
4017
3991
  try {
4018
- const { rebaseFeatureBranch } = await import("./merge-rebase-C8WH39MB.js");
3992
+ const { rebaseFeatureBranch } = await import("./merge-rebase-Dl7yIxtV.js");
4019
3993
  const workspacePathForRebase = join(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
4020
3994
  const rebaseResult = await Effect.runPromise(rebaseFeatureBranch(workspacePathForRebase, branchName, "main", issueId));
4021
3995
  if (!rebaseResult.success) {
@@ -4035,7 +4009,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4035
4009
  completePendingOperation(issueId, pushResult.error);
4036
4010
  return jsonResponse({ error: pushResult.error }, { status: pushResult.httpStatus });
4037
4011
  }
4038
- const { approve: lifecycleApprove } = await import("./lifecycle-B8IdvUbt.js");
4012
+ const { approve: lifecycleApprove } = await import("./lifecycle-Ck2UR27D.js");
4039
4013
  const ghResolved = resolveGitHubIssueSync(issueId);
4040
4014
  const isGitHubIssueFlag = ghResolved.isGitHub;
4041
4015
  const lifecycleCtx = {
@@ -4069,7 +4043,7 @@ const getMergeQueueRoute = HttpRouter.add("GET", "/api/merge-queue", httpHandler
4069
4043
  })));
4070
4044
  const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pipeline/notify", httpHandler(Effect.gen(function* () {
4071
4045
  const request = yield* HttpServerRequest.HttpServerRequest;
4072
- const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-C90jBp-y.js"));
4046
+ const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-BPYEaXFh.js"));
4073
4047
  const expected = getInternalTokenSync();
4074
4048
  if (!expected) return jsonResponse({
4075
4049
  ok: false,
@@ -4083,7 +4057,7 @@ const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pi
4083
4057
  }, 403);
4084
4058
  const event = yield* readJsonBody;
4085
4059
  const type = event.type;
4086
- const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-nkWCe042.js"));
4060
+ const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-BH4PAi-w.js"));
4087
4061
  switch (type) {
4088
4062
  case "status_changed": {
4089
4063
  const issueId = event.issueId;
@@ -4858,7 +4832,7 @@ const patchWorkspaceTieredExecutionRoute = HttpRouter.add("PATCH", "/api/workspa
4858
4832
  if (override !== "on" && override !== "off" && override !== null && override !== void 0) return jsonResponse({ error: "Invalid tiered-execution override" }, { status: 400 });
4859
4833
  const project = getProjectSync(extractPrefixSync(issueId) ?? issueId.split("-")[0]);
4860
4834
  if (!project) return jsonResponse({ error: "Project not found" }, { status: 404 });
4861
- yield* Effect.promise(() => import("./record-CJsjvRO4.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
4835
+ yield* Effect.promise(() => import("./record-lEYK__LD.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
4862
4836
  const projectPath = project.path;
4863
4837
  const location = yield* resolvePlanLocation(projectPath, issueId);
4864
4838
  if (!location) return jsonResponse({ error: "No vBRIEF plan found for this workspace" }, { status: 404 });
@@ -5295,7 +5269,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
5295
5269
  console.log(`Feature branch push note: ${errorMessage(pushErr)}`);
5296
5270
  }
5297
5271
  try {
5298
- const { createReviewArtifactsForIssue } = await import("./review-artifacts-D0_IE6DQ.js");
5272
+ const { createReviewArtifactsForIssue } = await import("./review-artifacts-D4T04aYI.js");
5299
5273
  const artifactResult = await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath));
5300
5274
  const primaryArtifact = artifactResult.mergeSet?.repos.find((repo) => !!repo.artifactUrl);
5301
5275
  artifactResult.mergeSet?.repos.find((repo) => repo.mergeStatus !== "skipped")?.targetBranch;
@@ -5350,7 +5324,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
5350
5324
  } catch {}
5351
5325
  return;
5352
5326
  }
5353
- const { spawnReviewRoleForIssue } = await import("./review-agent-Bf9XjLnl.js");
5327
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5354
5328
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
5355
5329
  const reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
5356
5330
  issueId,
@@ -5490,7 +5464,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5490
5464
  console.log(`[request-review] Feature branch push note: ${errorMessage(pushErr)}`);
5491
5465
  }
5492
5466
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
5493
- const { spawnReviewRoleForIssue } = await import("./review-agent-Bf9XjLnl.js");
5467
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5494
5468
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
5495
5469
  issueId,
5496
5470
  workspace: workspacePathRerun,
@@ -5540,7 +5514,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5540
5514
  });
5541
5515
  } else {
5542
5516
  const workspacePath = join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
5543
- const { spawnRun } = yield* Effect.promise(() => import("./agents-CxbuBjID.js"));
5517
+ const { spawnRun } = yield* Effect.promise(() => import("./agents-CEcaxSkR.js"));
5544
5518
  try {
5545
5519
  const testRun = yield* Effect.promise(() => spawnRun(issueId, "test", { workspace: workspacePath }));
5546
5520
  setReviewStatus(issueId, { testStatus: "testing" });
@@ -5629,7 +5603,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5629
5603
  autoRequeueCount: newCount
5630
5604
  }, { status: 500 });
5631
5605
  const result = yield* Effect.promise(async () => {
5632
- const { spawnReviewRoleForIssue } = await import("./review-agent-Bf9XjLnl.js");
5606
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5633
5607
  return await Effect.runPromise(spawnReviewRoleForIssue({
5634
5608
  issueId,
5635
5609
  workspace: workspacePath,
@@ -5933,7 +5907,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5933
5907
  const result = processResetReviewPipeline(issueId, resetWorkspace.exists);
5934
5908
  if (result.httpStatus !== 200) return jsonResponse(result.body, { status: result.httpStatus });
5935
5909
  try {
5936
- const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-Bwm34MZ5.js"));
5910
+ const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-ejC7Wos8.js"));
5937
5911
  resetPostMergeState(issueId);
5938
5912
  } catch (err) {
5939
5913
  console.warn(`[reset-review] resetPostMergeState best-effort failed for ${issueId}:`, err);
@@ -5942,7 +5916,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5942
5916
  const rerun = body?.rerun === true;
5943
5917
  if (rerun) try {
5944
5918
  yield* Effect.promise(async () => {
5945
- const { spawnReviewRoleForIssue } = await import("./review-agent-Bf9XjLnl.js");
5919
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5946
5920
  const dispatchArgs = buildReviewRedispatchArgs(issueId, resetWorkspace, workspaceInfo, resolved);
5947
5921
  if (dispatchArgs) {
5948
5922
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
@@ -5971,7 +5945,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5971
5945
  const postWorkspaceReviewPurgeRoute = HttpRouter.add("POST", "/api/review/:issueId/purge", httpHandler(Effect.gen(function* () {
5972
5946
  const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
5973
5947
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
5974
- const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-Bf9XjLnl.js"));
5948
+ const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-u5q3ip7H.js"));
5975
5949
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
5976
5950
  const purge = yield* Effect.promise(() => purgeReviewAgentsForIssue(projectKey, issueId));
5977
5951
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
@@ -6001,8 +5975,8 @@ const postWorkspaceAbortReviewRoute = HttpRouter.add("POST", "/api/review/:issue
6001
5975
  success: false,
6002
5976
  error: "Workspace does not exist"
6003
5977
  }, { status: 400 });
6004
- const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-BqRMlDOv.js"));
6005
- const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-Bf9XjLnl.js"));
5978
+ const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-CrBE6IhN.js"));
5979
+ const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-u5q3ip7H.js"));
6006
5980
  const { killed, failed } = yield* killAllReviewerSessions(resolveProjectFromIssueSync(issueId)?.projectKey, issueId);
6007
5981
  setReviewStatus(issueId, {
6008
5982
  reviewStatus: "pending",
@@ -6074,8 +6048,8 @@ const getReviewConfigRoute = HttpRouter.add("GET", "/api/review/:issueId/config"
6074
6048
  const issueId = ((yield* HttpRouter.params)["issueId"] ?? "").toUpperCase();
6075
6049
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
6076
6050
  return jsonResponse(yield* Effect.promise(async () => {
6077
- const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-CJsjvRO4.js");
6078
- const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-Bf9XjLnl.js");
6051
+ const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-lEYK__LD.js");
6052
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-u5q3ip7H.js");
6079
6053
  const project = resolveProjectForIssue(issueId);
6080
6054
  const record = project ? readIssueRecordSync(project, issueId) : null;
6081
6055
  return {
@@ -6101,8 +6075,8 @@ const postReviewConfigRoute = HttpRouter.add("POST", "/api/review/:issueId/confi
6101
6075
  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 });
6102
6076
  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 });
6103
6077
  return jsonResponse(yield* Effect.promise(async () => {
6104
- const { ensureIssueRecordSync, readIssueRecordSync, resolveProjectForIssue, writeIssueRecordSync } = await import("./record-CJsjvRO4.js");
6105
- const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-Bf9XjLnl.js");
6078
+ const { ensureIssueRecordSync, readIssueRecordSync, resolveProjectForIssue, writeIssueRecordSync } = await import("./record-lEYK__LD.js");
6079
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-u5q3ip7H.js");
6106
6080
  const project = resolveProjectForIssue(issueId);
6107
6081
  const record = readIssueRecordSync(project, issueId) ?? ensureIssueRecordSync(project, issueId);
6108
6082
  if (hasMode) if (body.reviewMode === null) delete record.reviewMode;
@@ -6496,7 +6470,7 @@ async function readWorkspacePlanningMarkdown(issueId, fileName) {
6496
6470
  */
6497
6471
  async function readWorkspaceContinueFile(_projectPath, workspacePath, issueId) {
6498
6472
  try {
6499
- const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-CJsjvRO4.js");
6473
+ const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-lEYK__LD.js");
6500
6474
  const recordView = readRecordContinueViewSync(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId);
6501
6475
  return recordView ? JSON.stringify(recordView, null, 2) : null;
6502
6476
  } catch {
@@ -7265,7 +7239,7 @@ const getWorkspaceReviewStatusRoute = HttpRouter.add("GET", "/api/review/:issueI
7265
7239
  if (queuePosition === null) try {
7266
7240
  const resolved = resolveProjectFromIssueSync(issueId);
7267
7241
  if (resolved) {
7268
- const { getQueueForProject } = yield* Effect.promise(() => import("./merge-BRkVaIx-.js"));
7242
+ const { getQueueForProject } = yield* Effect.promise(() => import("./merge-BLcEZNXz.js"));
7269
7243
  const mergePos = findPositionInQueueSync(issueId, getQueueForProject(resolved.projectKey).map((e) => ({
7270
7244
  id: String(e.id),
7271
7245
  type: "task",
@@ -7303,7 +7277,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7303
7277
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
7304
7278
  if (workspaceInfo.exists && workspaceInfo.localPath) {
7305
7279
  const localPath = workspaceInfo.localPath;
7306
- const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-Ym380hJZ.js"));
7280
+ const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-C0neHvQx.js"));
7307
7281
  try {
7308
7282
  const gitInfo = yield* getWorkspaceGitInfo(localPath);
7309
7283
  if (gitInfo.HEAD) update.reviewedAtCommit = gitInfo.HEAD;
@@ -7318,7 +7292,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7318
7292
  if (verificationStatus) update.verificationStatus = verificationStatus;
7319
7293
  if (readyForMerge !== void 0) update.readyForMerge = readyForMerge;
7320
7294
  const status = setReviewStatus(issueId, update);
7321
- const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-Chvvwf5z.js"));
7295
+ const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-k22_Btaq.js"));
7322
7296
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
7323
7297
  if (reviewStatus && [
7324
7298
  "passed",
@@ -7336,7 +7310,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7336
7310
  const agentId = `agent-${issueId.toLowerCase()}`;
7337
7311
  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.`;
7338
7312
  try {
7339
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-DCyd75yJ.js"));
7313
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-BsJiw5aT.js"));
7340
7314
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7341
7315
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
7342
7316
  issueId,
@@ -7400,7 +7374,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7400
7374
  const agentId = `agent-${issueId.toLowerCase()}`;
7401
7375
  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.`;
7402
7376
  try {
7403
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-DCyd75yJ.js"));
7377
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-BsJiw5aT.js"));
7404
7378
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7405
7379
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
7406
7380
  issueId,
@@ -7423,16 +7397,24 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7423
7397
  if (testStatus === "passed") {
7424
7398
  setReviewStatus(issueId, { readyForMerge: true });
7425
7399
  console.log(`[review-status] ${issueId} marked ready for merge after test=passed`);
7400
+ emitActivityEntrySync({
7401
+ source: "ship",
7402
+ level: "success",
7403
+ issueId,
7404
+ message: `${issueId} is ready. Open Awaiting Merge and click MERGE when you are ready to land it.`,
7405
+ link: "/awaiting-merge",
7406
+ desktop: true
7407
+ });
7426
7408
  yield* Effect.promise(async () => {
7427
7409
  try {
7428
- const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-BqRMlDOv.js");
7410
+ const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-CrBE6IhN.js");
7429
7411
  const project = resolveProjectFromIssueSync(issueId);
7430
7412
  const repo = (project ? getProjectSync(project.projectKey) : null)?.github_repo;
7431
7413
  if (!repo || !repo.includes("/")) return;
7432
7414
  const [owner, name] = repo.split("/");
7433
7415
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7434
7416
  if (!wsInfo?.localPath) return;
7435
- const { postOverdeckTestsStatus } = await import("./github-app-DIr70YLg.js");
7417
+ const { postOverdeckTestsStatus } = await import("./github-app-Bwt9lK4A.js");
7436
7418
  await postOverdeckTestsStatus(wsInfo.localPath, owner, name, "success", "Test specialist passed");
7437
7419
  } catch (err) {
7438
7420
  console.warn(`[review-status] Failed to post overdeck/tests for ${issueId}: ${err.message}`);
@@ -7447,7 +7429,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7447
7429
  }
7448
7430
  })));
7449
7431
  const notifyAgentId = `agent-${issueId.toLowerCase()}`;
7450
- yield* Effect.tryPromise(() => messageAgent(notifyAgentId, `ALL CHECKS PASSED for ${issueId}. Review: passed. Tests: passed. Your work is complete — ready for merge. You may stop working on this issue.`)).pipe(Effect.tap(() => Effect.sync(() => console.log(`[review-status] Notified ${notifyAgentId} that all checks passed`))), Effect.catch((err) => Effect.sync(() => console.log(`[review-status] Could not notify work agent for ${issueId} (may not be running): ${err instanceof Error ? err.message : String(err)}`))));
7432
+ yield* Effect.tryPromise(() => messageAgent(notifyAgentId, `ALL CHECKS PASSED for ${issueId}. Review: passed. Tests: passed. Your work is complete. Tell the operator to open Overdeck's Awaiting Merge page and click MERGE when ready. You may stop working on this issue.`)).pipe(Effect.tap(() => Effect.sync(() => console.log(`[review-status] Notified ${notifyAgentId} that all checks passed`))), Effect.catch((err) => Effect.sync(() => console.log(`[review-status] Could not notify work agent for ${issueId} (may not be running): ${err instanceof Error ? err.message : String(err)}`))));
7451
7433
  }
7452
7434
  }
7453
7435
  return jsonResponse(status);
@@ -7474,7 +7456,7 @@ const postWorkspaceRefreshTokenRoute = HttpRouter.add("POST", "/api/workspaces/:
7474
7456
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
7475
7457
  const issueLower = issueId.toLowerCase();
7476
7458
  const workspacePath = join(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), "workspaces", `feature-${issueLower}`);
7477
- const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-DIr70YLg.js"));
7459
+ const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-Bwt9lK4A.js"));
7478
7460
  if (!isGitHubAppConfigured()) return jsonResponse({
7479
7461
  success: false,
7480
7462
  error: "GitHub App not configured"
@@ -7489,4 +7471,4 @@ const workspacesRouteLayer = Layer.mergeAll(workspaceDataRouteLayer, postWorkspa
7489
7471
  //#endregion
7490
7472
  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 };
7491
7473
 
7492
- //# sourceMappingURL=workspaces-DOeHyKmA.js.map
7474
+ //# sourceMappingURL=workspaces-D-uIoqbg.js.map
@@ -0,0 +1,3 @@
1
+ import { n as init_writer, r as runMutationBatch } from "./writer-CrP2xuBn.js";
2
+ init_writer();
3
+ export { runMutationBatch };