@overdeck/desktop 0.45.15 → 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 (331) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-DHZk2ceV.js → acceptance-criteria-BZ_nQS1f.js} +2 -2
  3. package/server/{advancing-selfheal-CSuZ31bB.js → advancing-selfheal-DJYAvGv-.js} +6 -5
  4. package/server/{agent-gc-D_DxfBHR.js → agent-gc-D0wDIeV1.js} +3 -3
  5. package/server/{agent-state-EP2QFV9n.js → agent-state-lGvgPP4m.js} +1 -1
  6. package/server/{agent-state-service-C_2ZAQRP.js → agent-state-service-CZrayD_G.js} +1 -1
  7. package/server/{agent-state-service-BZkvgQf4.js → agent-state-service-DFslS5go.js} +9 -52
  8. package/server/{agents-CsOzAmRg.js → agents-B9GwfCyp.js} +99 -140
  9. package/server/{agents-DCvyTXNU.js → agents-CEcaxSkR.js} +1 -1
  10. package/server/{archive-planning-DkivCk1A.js → archive-planning-CbghE9-o.js} +5 -5
  11. package/server/{archive-planning-CTILQRnV.js → archive-planning-CoyIbgGK.js} +1 -1
  12. package/server/{artifact-index-jobs-CmsvQ1ey.js → artifact-index-jobs-CcSrUoSE.js} +2 -2
  13. package/server/{auto-commit-QAfsu3Sb.js → auto-commit-IW-eik_b.js} +1 -1
  14. package/server/{backlog-auto-trigger-ueRaT8Dy.js → backlog-auto-trigger-BfgDsII0.js} +3 -3
  15. package/server/{bd-process-lock-D3S4T4o-.js → bd-process-lock-XAXAet9O.js} +2 -2
  16. package/server/{beads-CYsLiyIM.js → beads-B1u04n3o.js} +1 -1
  17. package/server/{beads-BGGxrkZ5.js → beads-BeSMEjGT.js} +7 -7
  18. package/server/{beads-query-B1DlJVp9.js → beads-query-Dl4FhT8J.js} +2 -2
  19. package/server/{beads-restore-CyygSmmn.js → beads-restore-BUItPOjI.js} +2 -2
  20. package/server/behavior-BTpYbAv4.js +10 -0
  21. package/server/{briefing-freshness-Kh5V8RTh.js → briefing-freshness-DESTCWo-.js} +4 -4
  22. package/server/{checkpoint-manager-fu9oVsR-.js → checkpoint-manager-BwFdegJF.js} +2 -2
  23. package/server/{checkpoint-manager-CAFos8e1.js → checkpoint-manager-DWSXooZV.js} +1 -1
  24. package/server/checkpoint-worker.js +1 -1
  25. package/server/{checkpoints-1BqOlS4q.js → checkpoints-BtUonbs3.js} +2 -2
  26. package/server/{checkpoints-DvhGi8P_.js → checkpoints-fjadfOKF.js} +1 -1
  27. package/server/{claude-hooks-provision-s_wdpeVj.js → claude-hooks-provision-DAtxutOs.js} +132 -114
  28. package/server/claude-hooks-provision-DiK62u0k.js +3 -0
  29. package/server/{claude-permissions-CaWqysff.js → claude-permissions-CThLgf8d.js} +2 -2
  30. package/server/{claude-settings-overlay-CcTf0xzG.js → claude-settings-overlay-BF9MPIwx.js} +2 -2
  31. package/server/{claude-settings-overlay-BbA4FbVI.js → claude-settings-overlay-Dx_Uqcmv.js} +1 -1
  32. package/server/{cli-BwCvCUBK.js → cli-ByKIIMfT.js} +9 -9
  33. package/server/cli-D9cUTbBr.js +3 -0
  34. package/server/{cliproxy-BsoNNDAj.js → cliproxy-B4c1BUvs.js} +2 -2
  35. package/server/{cliproxy-C2xC-3vH.js → cliproxy-C_GuT5DU.js} +1 -1
  36. package/server/{close-issue-BleIwP3f.js → close-issue-BOuLKr6e.js} +5 -5
  37. package/server/{closed-issue-reaper-BwUUvjEW.js → closed-issue-reaper-CksfuiFD.js} +1 -1
  38. package/server/{closed-issue-reaper-mC5pujeb.js → closed-issue-reaper-DCAYzNXW.js} +9 -9
  39. package/server/{codex-B7DTpwEw.js → codex-BYPz6ZdF.js} +1 -1
  40. package/server/{codex-DW60_5j2.js → codex-BbqIRZjd.js} +6 -5
  41. package/server/{behavior-Cpj03N4v.js → codex-parser-mFYZh8vR.js} +3 -9
  42. package/server/{compact-beads-DKL54y6j.js → compact-beads-CyJtoXJi.js} +5 -5
  43. package/server/{compact-beads-CK_hHEnB.js → compact-beads-N00E4EVa.js} +1 -1
  44. package/server/{config-ZNnMpIlh.js → config-DVLdmnMJ.js} +2 -2
  45. package/server/{config-BRNQJXhA.js → config-Dj6N8EP9.js} +1 -1
  46. package/server/{config-yaml-Dcz-8uit.js → config-yaml-cNOZcEww.js} +91 -22
  47. package/server/{conflict-gate-DTje2Ll7.js → conflict-gate-BMKm_5DV.js} +3 -3
  48. package/server/{conflict-gate-DGT8jCLp.js → conflict-gate-CuXUv-bP.js} +1 -1
  49. package/server/{context-layers-ByOWUjUg.js → context-layers-CeAwSYNt.js} +2 -2
  50. package/server/{context-layers-BdUCQ-cl.js → context-layers-c0JqYHcS.js} +3 -3
  51. package/server/{control-settings-DwkAeooY.js → control-settings-D4EFsRBd.js} +4 -4
  52. package/server/{conversation-compaction-OTYgd6eg.js → conversation-compaction-BCggyih4.js} +8 -8
  53. package/server/{conversation-compaction-WYQZUVDm.js → conversation-compaction-kHVfVRg3.js} +1 -1
  54. package/server/{conversation-service-BR1OgvxO.js → conversation-service-B8LFQQm1.js} +6 -5
  55. package/server/{conversation-service-C_kNZPLx.js → conversation-service-BTzObqGi.js} +1 -1
  56. package/server/{conversations-DG2M8WnT.js → conversations-B-lcHv-5.js} +4 -4
  57. package/server/{conversations-izHvSoAR.js → conversations-BM7zlXjr.js} +1 -1
  58. package/server/{cost-B2mj17iG.js → cost-BcpRQ-7o.js} +3 -3
  59. package/server/{cost-DQ2ajr_m.js → cost-D9kPIY_5.js} +2 -2
  60. package/server/{cost-sync-gTayEuWP.js → cost-sync-DF6odxK9.js} +3 -3
  61. package/server/{dag-CqTehWpY.js → dag-DKI3sOmX.js} +3 -3
  62. package/server/{dangerous-git-ops-DDWQlPC3.js → dangerous-git-ops-Bn18PEcN.js} +1 -1
  63. package/server/dashboard-db-worker.js +6 -6
  64. package/server/{deacon-BqW9HMew.js → deacon-DONuopff.js} +3 -3
  65. package/server/{deacon-DrKDBeJL.js → deacon-DdARMjZq.js} +127 -107
  66. package/server/{deacon-nudge-log-D1wEK6zF.js → deacon-nudge-log-B-naf89q.js} +1 -1
  67. package/server/{deacon-swarm-CO_A7xyd.js → deacon-swarm-BNGkmYR_.js} +11 -11
  68. package/server/deacon-swarm-CvdFekIO.js +2 -0
  69. package/server/deacon.js +7 -7
  70. package/server/{devcontainer-renderer-BQolp_qZ.js → devcontainer-renderer-C-34Sxyz.js} +3 -3
  71. package/server/{dist-Bc32rWJB.js → dist-BMXvKiZP.js} +1 -1
  72. package/server/dist-BNwrgsUO.js +3 -0
  73. package/server/{dist-src-Byxt1ifL.js → dist-src-BgGUblXg.js} +1 -1
  74. package/server/{docker-s-esqZ__.js → docker-apZ9pBYw.js} +2 -2
  75. package/server/{ensure-devcontainer-DA4-jF6R.js → ensure-devcontainer-Bqi1EF1P.js} +4 -4
  76. package/server/{ensure-devcontainer-pUVaT0h3.js → ensure-devcontainer-Dq3KoOIl.js} +1 -1
  77. package/server/{esm-shims-CJHy8CZY.js → esm-shims-BEjvINX3.js} +1 -1
  78. package/server/{event-store-CcJAhKCl.js → event-store-CqDgfbAs.js} +1 -1
  79. package/server/{event-store-DRte2Rwt.js → event-store-D89fMfXS.js} +3 -3
  80. package/server/{events-Bej1w_k8.js → events-S_C0pvl6.js} +3 -3
  81. package/server/{events-CtsLScn8.js → events-rIGncmP1.js} +1 -1
  82. package/server/{export-Dx_qJ3h8.js → export-BJHSVwKP.js} +2 -2
  83. package/server/{factory-FN727tWr.js → factory-DV18m0rc.js} +5 -5
  84. package/server/{feature-registry-population-ie-yBcQC.js → feature-registry-population-CqZSnqQi.js} +4 -4
  85. package/server/{feature-registry-storage-CkZTFSsn.js → feature-registry-storage-BeXmNBwK.js} +2 -2
  86. package/server/{features-Dtm9ABuz.js → features-u5XeMaOK.js} +2 -2
  87. package/server/{feedback-target-BYtpyt1i.js → feedback-target-CwyWf0Dg.js} +6 -6
  88. package/server/{feedback-target-DVJQDiE4.js → feedback-target-DDG1PWl3.js} +1 -1
  89. package/server/{feedback-writer-DOUhyIW2.js → feedback-writer-BsJiw5aT.js} +1 -1
  90. package/server/{feedback-writer-fdE1BzeL.js → feedback-writer-D20HSXre.js} +4 -4
  91. package/server/{flywheel-CUErLAyN.js → flywheel-9Y1X7IM-.js} +13 -13
  92. package/server/{flywheel-Bv3wv2S6.js → flywheel-Dczmgchd.js} +12 -12
  93. package/server/{flywheel-Bi82iiNl.js → flywheel-RCnHAgc4.js} +1 -1
  94. package/server/{flywheel-merge-order-BaEN3iyN.js → flywheel-merge-order-CtCYsFJP.js} +7 -7
  95. package/server/{flywheel-merge-order-DXjeBnJ1.js → flywheel-merge-order-DEtEd3aK.js} +1 -1
  96. package/server/forge-8y6aEPTB.js +2 -0
  97. package/server/{forge-ButEdJ31.js → forge-DFDThFil.js} +2 -2
  98. package/server/{from-CbtTxftl.js → from-NSJypkI8.js} +1 -1
  99. package/server/{fts-db-CBgBLZcL.js → fts-db-C5A_TTOM.js} +2 -2
  100. package/server/{fts-operations-CI9Xuo_1.js → fts-operations-DvCSimfU.js} +2 -2
  101. package/server/{git-utils-BCLRWQ-y.js → git-utils-C0neHvQx.js} +1 -1
  102. package/server/{git-utils-ClfpP47N.js → git-utils-Dr0L7mFk.js} +2 -2
  103. package/server/{github-app-DRD2woO0.js → github-app-Bwt9lK4A.js} +1 -1
  104. package/server/{github-app-DscZ0_B6.js → github-app-u9-SX7Gc.js} +2 -2
  105. package/server/{github-client-DpiZnxGH.js → github-client-Btyy3uan.js} +3 -3
  106. package/server/{github-client-iFRw8f7e.js → github-client-Do3k-N1W.js} +1 -1
  107. package/server/{github-pr-lookup-D-EBexxC.js → github-pr-lookup-DOF1U2WW.js} +2 -2
  108. package/server/{harness-resolve-iMjyNUJ2.js → harness-resolve-C6g2R0Cd.js} +3 -3
  109. package/server/{health-events-CRdxDFN2.js → health-events-B4u-2a9m.js} +2 -2
  110. package/server/{health-events-B_WsQyYm.js → health-events-Bos3sk5g.js} +1 -1
  111. package/server/{hooks-C9b7Vqpw.js → hooks-BCoOjL_R.js} +2 -2
  112. package/server/{hooks-C1ScyVxP.js → hooks-uEr8WTx_.js} +1 -1
  113. package/server/{hume-TQ5pvOZ_.js → hume-BqxYKbUf.js} +2 -2
  114. package/server/hume-CerGi2RH.js +3 -0
  115. package/server/{idle-stack-reaper-B1kG7B_X.js → idle-stack-reaper-DbZ8ukMd.js} +2 -2
  116. package/server/{idle-stack-reaper-iFVOAoJy.js → idle-stack-reaper-H0W6XtHh.js} +1 -1
  117. package/server/{infra-bpq1MHKU.js → infra-Ba9mS6e6.js} +3 -3
  118. package/server/{injection-BLWfwTVZ.js → injection-C1DKXeIZ.js} +1 -1
  119. package/server/{injection-DJqWld1v.js → injection-yrMBxzVq.js} +7 -7
  120. package/server/{inspect-agent-DytCsltn.js → inspect-agent-B-mnb4uh.js} +9 -9
  121. package/server/inspect-agent-CWkeAB7J.js +2 -0
  122. package/server/{internal-token-CCaWaTwE.js → internal-token-BPYEaXFh.js} +1 -1
  123. package/server/{internal-token-CjlhdufS.js → internal-token-BtqSbKTx.js} +2 -2
  124. package/server/{io-BiQ2Cs3k.js → io-VEGSAqsd.js} +15 -22
  125. package/server/{issue-closed-FApNiOOs.js → issue-closed-BxcePXL-.js} +4 -4
  126. package/server/{issue-lifecycle-C-K53ASY.js → issue-lifecycle--8MRxrG1.js} +22 -22
  127. package/server/{issue-lifecycle-BkFWNjlD.js → issue-lifecycle-CdMUauyb.js} +1 -1
  128. package/server/{issue-service-singleton-CuHGpJJP.js → issue-service-singleton-CkTUI-eu.js} +10 -10
  129. package/server/{issue-service-singleton-bG1WdSdQ.js → issue-service-singleton-MZsDhAob.js} +1 -1
  130. package/server/{issues-CwQMphDH.js → issues-CBAsuoAO.js} +2 -2
  131. package/server/{jsonl-parser-dNIjHgym.js → jsonl-parser-BUW5_sSK.js} +3 -3
  132. package/server/{label-cleanup-DYvAZknd.js → label-cleanup-htK6fBRU.js} +3 -3
  133. package/server/{layers-CD6FysRU.js → layers-jjL16At6.js} +2 -2
  134. package/server/{lifecycle-C_73gi-C.js → lifecycle-Ck2UR27D.js} +7 -7
  135. package/server/{lifecycle-io-C_Wu0_i-.js → lifecycle-io-DXv8Utct.js} +1 -1
  136. package/server/{lifecycle-io-CeYxP3cE.js → lifecycle-io-IehcRt2v.js} +36 -47
  137. package/server/{linear-client-4qoKnuQu.js → linear-client-By7hjwuN.js} +1 -1
  138. package/server/{linear-client-EtVyblVz.js → linear-client-D9cSQfvD.js} +3 -3
  139. package/server/memory-fts-worker.js +1 -1
  140. package/server/{merge-brm721Es.js → merge-BLcEZNXz.js} +1 -1
  141. package/server/{merge-7rqkTUm2.js → merge-BN8FGJ2q.js} +3 -3
  142. package/server/{merge-agent-4Zhlgvqp.js → merge-agent-B3u2szOL.js} +29 -29
  143. package/server/{merge-agent-36wfYm2u.js → merge-agent-ejC7Wos8.js} +1 -1
  144. package/server/{merge-batch-itfnwdsT.js → merge-batch-DyqlgYGp.js} +1 -1
  145. package/server/{merge-blockers-Bto_Oe_o.js → merge-blockers-cq-aS2KG.js} +2 -2
  146. package/server/merge-ops-CFkQtXEj.js +2 -0
  147. package/server/{merge-rebase-Czfqfe4q.js → merge-rebase-Dl7yIxtV.js} +2 -2
  148. package/server/{merge-set-BIkGQL9j.js → merge-set-CZ9Nbay0.js} +3 -3
  149. package/server/{merge-set-G1RHcu3D.js → merge-set-Dy0D0r3i.js} +1 -1
  150. package/server/{merge-sync-DIrmlZUr.js → merge-sync-CG9kDCdT.js} +1 -1
  151. package/server/{merge-sync-B43Dybea.js → merge-sync-D7jWLgCC.js} +2 -2
  152. package/server/{merge-train-DGqVuNZV.js → merge-train-CH33XJOH.js} +3 -3
  153. package/server/{merge-train-deps-q15XLnAS.js → merge-train-deps-JoVdGnOg.js} +4 -4
  154. package/server/{merge-verification-Cqfxx6bE.js → merge-verification-D4wTChdX.js} +4 -4
  155. package/server/{multipart-parser-CiPxxfUH.js → multipart-parser-Csn8U-K9.js} +2 -2
  156. package/server/{no-resume-mode-yrPEQ_pC.js → no-resume-mode-Gh5R_YLF.js} +1 -1
  157. package/server/node_modules/.package-lock.json +1 -1
  158. package/server/{orphan-proposed-reconciler-DAD9FJtQ.js → orphan-proposed-reconciler-BIcNu4tl.js} +1 -1
  159. package/server/{orphan-proposed-reconciler-BWWHn4Lr.js → orphan-proposed-reconciler-DI_IS1p_.js} +10 -10
  160. package/server/package-lock.json +2 -2
  161. package/server/package.json +1 -1
  162. package/server/{pan-dir-Bj7Hy8iu.js → pan-dir-CQIfKG8c.js} +4 -4
  163. package/server/{paths-C9DkhIOT.js → paths-Blj6A9AJ.js} +2 -2
  164. package/server/{pickup-CKRuGDsB.js → pickup-BtvRBbvI.js} +1 -1
  165. package/server/{pipeline-notifier-BkKbQ8ji.js → pipeline-notifier-BH4PAi-w.js} +1 -1
  166. package/server/{pipeline-notifier-CAurUste.js → pipeline-notifier-D_WYtEwl.js} +2 -2
  167. package/server/{project-pipelines-BRWaGmI4.js → project-pipelines-jMTitpeO.js} +2 -2
  168. package/server/projects-CrBE6IhN.js +3 -0
  169. package/server/{prompts-DfI5qbTW.js → prompts-B3njaImU.js} +2 -2
  170. package/server/{providers-CWDXoaMA.js → providers-BbEyFhPX.js} +7 -7
  171. package/server/{providers-D-5txBRc.js → providers-DnPxkHoG.js} +1 -1
  172. package/server/public/assets/chunk-BO2N2NFS-3qh9TUJi.js +103 -0
  173. package/server/public/assets/{diagram-OG6HWLK6-Avtvq2qI.js → diagram-OG6HWLK6-D8UVTPj7.js} +1 -1
  174. package/server/public/assets/{dist-BEHQuasD.js → dist-BvLLn1YC.js} +3 -3
  175. package/server/public/assets/{dist-BvmY-qb1.js → dist-CyubL7Wj.js} +1 -1
  176. package/server/public/assets/{ganttDiagram-6RSMTGT7-7KhCd0fH.js → ganttDiagram-6RSMTGT7-BI4E1LbQ.js} +1 -1
  177. package/server/public/assets/{highlighted-body-OFNGDK62-iQoBMTf0.js → highlighted-body-OFNGDK62-D_bapWkF.js} +1 -1
  178. package/server/public/assets/index-BAZxZ-8I.js +796 -0
  179. package/server/public/assets/{index-DUFDmvmH.css → index-FBG3JBfq.css} +1 -1
  180. package/server/public/assets/{linear-CiJHW9g5.js → linear-CEdobObr.js} +1 -1
  181. package/server/public/assets/mermaid-GHXKKRXX-BYP8MI37.js +1 -0
  182. package/server/public/assets/{pieDiagram-4H26LBE5-BOhmvUhW.js → pieDiagram-4H26LBE5-DT79L01f.js} +1 -1
  183. package/server/public/assets/{prod-DmLBBqat.js → prod-CR_K2DFV.js} +4 -4
  184. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Cjku660G.js → quadrantDiagram-W4KKPZXB-BEkKXXrL.js} +1 -1
  185. package/server/public/assets/{sankeyDiagram-5OEKKPKP-D52w5oPh.js → sankeyDiagram-5OEKKPKP-BxSCqn-j.js} +1 -1
  186. package/server/public/assets/{xychartDiagram-2RQKCTM6-BTO07_Iv.js → xychartDiagram-2RQKCTM6-DicwJGG_.js} +1 -1
  187. package/server/public/index.html +2 -2
  188. package/server/{pull-requests-CKZPWhjD.js → pull-requests-43LPDfM8.js} +1 -1
  189. package/server/{pull-requests-Bmre-Xlz.js → pull-requests-DyUkQl4W.js} +3 -3
  190. package/server/{rally-BBd9tQ__.js → rally-BtWjybOa.js} +3 -3
  191. package/server/{rally-api-DDc85HIz.js → rally-api-B-YA_oXx.js} +1 -1
  192. package/server/{rally-api-DxZFObI_.js → rally-api-B-osULNL.js} +2 -2
  193. package/server/{rally-client-BADHn0m_.js → rally-client-CzFymP7P.js} +1 -1
  194. package/server/{rally-client-DvvLiAQP.js → rally-client-sErNQBO0.js} +5 -5
  195. package/server/rally-oggyp4cs.js +3 -0
  196. package/server/{reap-terminal-sessions-D6JDJsqF.js → reap-terminal-sessions-2s-fvilz.js} +1 -1
  197. package/server/{reap-terminal-sessions-D_xvy-Mk.js → reap-terminal-sessions-DnDQ7pf9.js} +1 -1
  198. package/server/{rebuild-stack-D19i080j.js → rebuild-stack-CoU-HqZj.js} +6 -6
  199. package/server/{rebuild-stack-GOsWqXi3.js → rebuild-stack-nGD_nPZo.js} +1 -1
  200. package/server/{reconstruct-cache-lQrG4xGg.js → reconstruct-cache-Wj8GrYB0.js} +6 -6
  201. package/server/{record-pyB6VA32.js → record-lEYK__LD.js} +1 -1
  202. package/server/{recovery-trip-Dfh1tNHn.js → recovery-trip-BT7nb9OV.js} +2 -2
  203. package/server/{release-engine-DxcMWRuK.js → release-engine-CBLQXDlH.js} +5 -5
  204. package/server/{release-set-BYsgX7o6.js → release-set-BNiqi7hy.js} +3 -3
  205. package/server/{remote-DmeL21dF.js → remote-DW_TWQnr.js} +3 -3
  206. package/server/{remote-8W2Yhygw.js → remote-DcO9An_f.js} +3 -3
  207. package/server/{remote-agents-BfQBE6MN.js → remote-agents-C4cyxHQS.js} +6 -6
  208. package/server/{remote-agents-DlvbzO7m.js → remote-agents-Cv-U-_V8.js} +1 -1
  209. package/server/{remote-completion-BgkiSQmx.js → remote-completion-PhXGGFQy.js} +13 -13
  210. package/server/{resolver-dTpSSzaH.js → resolver-C7dLn8OK.js} +2 -2
  211. package/server/resume-BYZBIab-.js +3 -0
  212. package/server/{review-agent-D025Wt7w.js → review-agent-Dn-yn7Zj.js} +23 -23
  213. package/server/{review-agent-Rub0OpZc.js → review-agent-u5q3ip7H.js} +1 -1
  214. package/server/{review-artifacts-CX951jTU.js → review-artifacts-D4T04aYI.js} +6 -6
  215. package/server/{review-context-DGGGR_w5.js → review-context-Rc0VDLG_.js} +8 -8
  216. package/server/{review-monitor-0_qqMcnS.js → review-monitor-BC--miCO.js} +2 -2
  217. package/server/{review-status-Br6lAFGO.js → review-status-CG0iDuWa.js} +1 -1
  218. package/server/{review-status-4qqLkRMu.js → review-status-Dc1l4dVz.js} +18 -18
  219. package/server/{review-status-enrichment-Cr8m3uVL.js → review-status-enrichment-C1a1OG_1.js} +3 -3
  220. package/server/{review-status-sync-OC-l1lNt.js → review-status-sync-CAr-hfnJ.js} +2 -2
  221. package/server/{review-status-sync-D3KUhsdA.js → review-status-sync-CfSixhhX.js} +1 -1
  222. package/server/{review-verdict-feedback-DrWMuRaj.js → review-verdict-feedback-CVDbIDBe.js} +7 -7
  223. package/server/{review-verdict-feedback-YOzmsq9G.js → review-verdict-feedback-D2Q960wX.js} +1 -1
  224. package/server/{rollup-DmazRY0j.js → rollup-CakjztPl.js} +1 -1
  225. package/server/{rollup-CnxbwaLH.js → rollup-DctoIu-A.js} +8 -8
  226. package/server/{scanner-DE1MqAaF.js → scanner-BTM1jc_u.js} +7 -7
  227. package/server/{sequence-io-C0uoqfGx.js → sequence-io-pnoIDGv4.js} +4 -4
  228. package/server/{sequencer-agent-i-b2u4SJ.js → sequencer-agent-9Soi-WL-.js} +6 -6
  229. package/server/server.js +422 -1746
  230. package/server/{service-D0_gh2tl.js → service-DfTVoqJg.js} +46 -46
  231. package/server/{session-fork-DZ12vipL.js → session-fork-C4jAFHj8.js} +2 -2
  232. package/server/session-history-DanhhiCw.js +168 -0
  233. package/server/{settings-ByqjPtFO.js → settings-Cuc12oP_.js} +2 -2
  234. package/server/settings-Cy7SCFO9.js +2 -0
  235. package/server/{settings-DCC4BAqj.js → settings-DfT3f86D.js} +3 -3
  236. package/server/{shadow-engineering-BhnmtW5m.js → shadow-engineering-bKuKTCn-.js} +3 -3
  237. package/server/{shadow-state-ByXZehsy.js → shadow-state-CVHpRWlb.js} +1 -1
  238. package/server/{shadow-state-CKm8xWX9.js → shadow-state-DJz6_pb_.js} +2 -2
  239. package/server/{ship-log-DE_0Cv_i.js → ship-log-CwqPFfqx.js} +1 -1
  240. package/server/{smart-compaction-h4_ca6Uk.js → smart-compaction-B4KlpZGN.js} +1 -1
  241. package/server/{smart-compaction-D5Zen3AA.js → smart-compaction-CiWfGfRZ.js} +7 -7
  242. package/server/{spawn-planning-session-Dueit4WX.js → spawn-planning-session-CU-DwyDl.js} +15 -15
  243. package/server/{spawn-planning-session-Bgi7Ub02.js → spawn-planning-session-D5N3RuLG.js} +1 -1
  244. package/server/{specialist-completion-BZ8M-WZ0.js → specialist-completion-CJcv-NXH.js} +1 -1
  245. package/server/{specialist-context-BMq83C58.js → specialist-context-B2HlbNxS.js} +5 -5
  246. package/server/{specialist-handoff-logger-BxX1YefH.js → specialist-handoff-logger-CQyF1ygu.js} +2 -2
  247. package/server/{specialist-logs-BWZYcJ6P.js → specialist-logs-CdcUpfjj.js} +3 -3
  248. package/server/{specialists-BudKrjOu.js → specialists-CFgw_0Q6.js} +1657 -113
  249. package/server/{specialists-DrPrC9Y9.js → specialists-CwzFdapR.js} +18 -18
  250. package/server/{specialists-ZkW4Mb7U.js → specialists-D7AcFi1u.js} +1 -1
  251. package/server/{specialists-8ZAguXef.js → specialists-k22_Btaq.js} +1 -1
  252. package/server/specs-RzcDgozr.js +3 -0
  253. package/server/{src-DHn4Rd2F.js → src-B4TTzNSr.js} +72 -1
  254. package/server/{src-Dv6L03vW.js → src-BvpMg4EB.js} +3 -3
  255. package/server/{src-DNUUqkec.js → src-D4YUZrwR.js} +6 -6
  256. package/server/{stack-health-DxsTx7II.js → stack-health-CSgcYcr8.js} +2 -2
  257. package/server/{stack-health-Dclm7_tu.js → stack-health-DVN7zRnL.js} +1 -1
  258. package/server/{state-home-CRowbXqU.js → state-home-CEvD_v5F.js} +6 -6
  259. package/server/{state-mapping-BvAgFK8n.js → state-mapping-C13UaCL7.js} +1 -1
  260. package/server/{stuck-remediation-CFWUP8_I.js → stuck-remediation-CxsyxwFO.js} +43 -21
  261. package/server/{stuck-remediation-CLHd-lrF.js → stuck-remediation-nTIvhGOR.js} +1 -1
  262. package/server/{summary-fork-CKc01Our.js → summary-fork-CnRMPCYd.js} +2 -2
  263. package/server/{summary-fork-CtCwBJ2Z.js → summary-fork-gKSoFAnK.js} +8 -8
  264. package/server/{supervisor-BA5D72Qa.js → supervisor-CZMs8s0M.js} +2 -2
  265. package/server/supervisor-CfX192ma.js +2 -0
  266. package/server/{swarm-readiness-CL5sM9B1.js → swarm-readiness-h6-pwY8w.js} +3 -3
  267. package/server/{system-prerequisites-DmFSXIE5.js → system-prerequisites-DZZTi2G6.js} +1 -1
  268. package/server/{teardown-workspace-DWmFJzTw.js → teardown-workspace-B4D-oCVg.js} +17 -17
  269. package/server/{test-agent-queue-DjsQoV5X.js → test-agent-queue-CnuYku4B.js} +6 -6
  270. package/server/{test-verdict-BSqsQp3G.js → test-verdict-CRsPpByy.js} +1 -1
  271. package/server/{test-verdict-D1AmZ2c0.js → test-verdict-CXMLATGc.js} +1 -1
  272. package/server/{tldr-daemon-DD9rI5gA.js → tldr-daemon-CgZQ3jmZ.js} +1 -1
  273. package/server/{tldr-daemon-C-MGomL8.js → tldr-daemon-CuA8hz21.js} +2 -2
  274. package/server/{tmux-x291Gjjb.js → tmux-By8E_Yv_.js} +1 -1
  275. package/server/{tmux-C_d-lSIq.js → tmux-C3g9VFcg.js} +2 -2
  276. package/server/{token-DfBf1bsd.js → token-g_sJ19g3.js} +2 -2
  277. package/server/token-util-C9u4An3K.js +3 -0
  278. package/server/{token-util-CROoF5ic.js → token-util-DiwnnbJo.js} +1 -1
  279. package/server/{tracker-config-DItsdelv.js → tracker-config-BzfVj41Z.js} +1 -1
  280. package/server/{tracker-config-CNODpd11.js → tracker-config-dQxC15vH.js} +2 -2
  281. package/server/{tracker-utils-Ch2_5GGf.js → tracker-utils--z8FLSWn.js} +2 -2
  282. package/server/{tracker-utils-B9ZoVA9b.js → tracker-utils-DkKyRT0H.js} +1 -1
  283. package/server/{traefik-connect-BF4x_LUQ.js → traefik-connect-CZYB3dlm.js} +1 -1
  284. package/server/{tunnel-r_5nHAI6.js → tunnel-BpWZs0Jy.js} +3 -3
  285. package/server/{tunnel-YD80_IHr.js → tunnel-CN2px87h.js} +1 -1
  286. package/server/{typed-errors-DSPn_xWP.js → typed-errors-CrN1AByg.js} +1 -1
  287. package/server/{typed-errors-BEJhbjJg.js → typed-errors-sLpGfegz.js} +1 -1
  288. package/server/{types-CE1m_daD.js → types-BLS_Zbmd.js} +1 -1
  289. package/server/{types-33JEP4LZ.js → types-tlXf80x3.js} +1 -1
  290. package/server/{uat-train-DjkFWXge.js → uat-train-BRo6DM7p.js} +24 -24
  291. package/server/{uat-train-DDI00aqD.js → uat-train-utGVmqdm.js} +1 -1
  292. package/server/{validation-DUTiJnyz.js → validation-CsPVsoA0.js} +4 -4
  293. package/server/{validation-ict8hnXk.js → validation-Dq_wwcw3.js} +1 -1
  294. package/server/{verification-runner-inLgeQux.js → verification-runner-CMT5WRMS.js} +11 -11
  295. package/server/{verification-runner-ATaLbpr5.js → verification-runner-D0Uh-9jc.js} +1 -1
  296. package/server/{vtt-parser-QnRfcjiU.js → vtt-parser-C_XPlifj.js} +1 -1
  297. package/server/{work-agent-prompt-fZljjA1_.js → work-agent-prompt-ZTAb2Hyf.js} +11 -11
  298. package/server/workflows-BLwxUMP7.js +2 -0
  299. package/server/{workflows-oBnJ7Tm0.js → workflows-CXRwhw_o.js} +14 -14
  300. package/server/{workspace-B2WOW9Hw.js → workspace-9UEsKuiP.js} +1 -1
  301. package/server/{workspace-CNuW2j41.js → workspace-CNfuj1-5.js} +3 -3
  302. package/server/{workspace-config-CBgMGhWs.js → workspace-config-ChWOECy0.js} +1 -1
  303. package/server/{workspace-manager-DjUAJCSs.js → workspace-manager-BO-6k3sP.js} +1 -1
  304. package/server/{workspace-manager-CB-R07R3.js → workspace-manager-D8AByFIT.js} +13 -13
  305. package/server/{workspace-metadata-9Nn5kgRl.js → workspace-metadata-CvC268MN.js} +2 -2
  306. package/server/{workspace-metadata-Fd58uUQG.js → workspace-metadata-DZiJtnuF.js} +1 -1
  307. package/server/{workspaces-BjWXntty.js → workspaces-D-uIoqbg.js} +103 -95
  308. package/server/{writer-CQMGzEkw.js → writer-BUweuRPx.js} +1 -1
  309. package/server/{writer-fe1-8iGc.js → writer-CrP2xuBn.js} +3 -3
  310. package/sync-sources/hooks/ask-user-question-hook +7 -1
  311. package/sync-sources/hooks/record-cost-event.js +2 -2
  312. package/sync-sources/hooks/record-cost-event.js.map +1 -1
  313. package/server/agent-runtime-mirror-DrWxopNA.js +0 -37
  314. package/server/cli-ClIQwgMI.js +0 -3
  315. package/server/deacon-swarm-BY5hKNaU.js +0 -2
  316. package/server/dist-DGTwcZhI.js +0 -3
  317. package/server/forge-XlDgPQWs.js +0 -2
  318. package/server/hume-K1pi8jC4.js +0 -3
  319. package/server/inspect-agent-477VxQim.js +0 -2
  320. package/server/merge-ops-PzqsW69V.js +0 -2
  321. package/server/projects-KJ94e50I.js +0 -3
  322. package/server/public/assets/chunk-BO2N2NFS-ClukPsZQ.js +0 -103
  323. package/server/public/assets/index-DnTZ2QeN.js +0 -796
  324. package/server/public/assets/mermaid-GHXKKRXX-DZJOwgBG.js +0 -1
  325. package/server/rally-Dc2Wnxw2.js +0 -3
  326. package/server/resume-DhcIqsTm.js +0 -3
  327. package/server/settings-yydgaqhv.js +0 -2
  328. package/server/specs-DwoAEGrW.js +0 -3
  329. package/server/supervisor-DHjumXlL.js +0 -2
  330. package/server/token-util-xNaV-00f.js +0 -3
  331. package/server/workflows-tU7KKxQi.js +0 -2
@@ -1,43 +1,43 @@
1
- import { $n as extractNumberSync, Cn as findProjectByTeamSync, Kn as resolveProjectFromIssueSync, Kr as getOverdeckHome, On as getProjectSync, Pn as init_projects, Rn as listProjectsSync, ar as resolveIssueIdSync, br as init_errors, dn as isStatePlaneOnlyStatus, dr as GitError, er as extractPrefixSync, qr as init_paths, rr as parseIssueIdSync, tr as init_issue_id, un as init_state_plane, ur as FsError, yn as extractTeamPrefix, zr as encodeClaudeProjectDir } from "./config-yaml-Dcz-8uit.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-BudKrjOu.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-bpq1MHKU.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-C_d-lSIq.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-4qqLkRMu.js";
7
- import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle-C-K53ASY.js";
8
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DQ2ajr_m.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-CsOzAmRg.js";
10
- import { f as CostWriter, l as CostDoorLive } from "./service-D0_gh2tl.js";
11
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-CNODpd11.js";
12
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-Ch2_5GGf.js";
13
- import { o as getInternalTokenSync, s as init_internal_token } from "./internal-token-CjlhdufS.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-B43Dybea.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-BiQ2Cs3k.js";
17
- import { f as init_config, m as loadConfigSync$1 } from "./config-ZNnMpIlh.js";
18
- import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-DG2M8WnT.js";
19
- import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-DxsTx7II.js";
20
- import { o as criticalPath, t as actionableDoc, u as init_dag } from "./dag-CqTehWpY.js";
21
- import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-B1DlJVp9.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-Bej1w_k8.js";
23
- import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-CB-R07R3.js";
24
- import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-BQolp_qZ.js";
25
- import { a as init_jsonl_parser, t as getActiveSessionModelSync } from "./jsonl-parser-dNIjHgym.js";
26
- import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-DkivCk1A.js";
27
- import { T as verifyAppCanMerge, f as init_github_app, m as isIntegrationPermissionError } from "./github-app-DscZ0_B6.js";
28
- import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-9Nn5kgRl.js";
29
- import { n as restoreTrackedBeadsExport, t as init_beads_restore } from "./beads-restore-CyygSmmn.js";
30
- import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-Cr8m3uVL.js";
31
- import { n as generateDailySummary, r as init_cli } from "./cli-BwCvCUBK.js";
32
- import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-DGGGR_w5.js";
33
- import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-C-MGomL8.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-4Zhlgvqp.js";
35
- import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-7rqkTUm2.js";
36
- import { n as init_release_set, t as getReleaseSetSync } from "./release-set-BYsgX7o6.js";
37
- import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-DTje2Ll7.js";
38
- import { n as runVerificationForIssue } from "./verification-runner-inLgeQux.js";
39
- import { t as teardownWorkspace } from "./teardown-workspace-DWmFJzTw.js";
40
- import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-D19i080j.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-pUVaT0h3.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-DRD2woO0.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}`);
@@ -2846,8 +2846,8 @@ async function triggerMerge(issueId) {
2846
2846
  try {
2847
2847
  if (workspaceInfo.isRemote && workspaceInfo.vmName) {
2848
2848
  console.log(`[merge] Remote workspace detected for ${issueId}, using review artifact merge...`);
2849
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-G1RHcu3D.js");
2850
- const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
2849
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-Dy0D0r3i.js");
2850
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
2851
2851
  const remotePrimaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
2852
2852
  const remoteTargetBranch = remotePrimaryRepo?.targetBranch || "main";
2853
2853
  const remoteForge = remotePrimaryRepo?.forge || "github";
@@ -2882,7 +2882,7 @@ async function triggerMerge(issueId) {
2882
2882
  readyForMerge: false
2883
2883
  });
2884
2884
  completePendingOperation(issueId, null);
2885
- const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
2885
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
2886
2886
  await postMergeLifecycle(issueId, projectPath);
2887
2887
  return {
2888
2888
  success: true,
@@ -2919,10 +2919,10 @@ async function triggerMerge(issueId) {
2919
2919
  const projectConfig = findProjectByTeamSync(issuePrefix);
2920
2920
  if (projectConfig?.workspace?.type === "polyrepo" && projectConfig?.workspace?.repos) {
2921
2921
  console.log(`[merge] Polyrepo detected for ${issueId}, coordinating merge set...`);
2922
- const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-G1RHcu3D.js");
2923
- const { runQualityGates } = await import("./validation-ict8hnXk.js");
2924
- const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
2925
- const { messageAgent } = await import("./agents-DCvyTXNU.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");
2926
2926
  let mergeSet = getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId);
2927
2927
  if (!mergeSet) {
2928
2928
  const error = `No merge set found for ${issueId}`;
@@ -3192,7 +3192,7 @@ async function triggerMerge(issueId) {
3192
3192
  readyForMerge: false
3193
3193
  });
3194
3194
  completePendingOperation(issueId, null);
3195
- const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
3195
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
3196
3196
  advanceQueue();
3197
3197
  await postMergeLifecycle(issueId, projectPath);
3198
3198
  return {
@@ -3203,8 +3203,8 @@ async function triggerMerge(issueId) {
3203
3203
  repos: mergeResults
3204
3204
  };
3205
3205
  }
3206
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-G1RHcu3D.js");
3207
- const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
3206
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-Dy0D0r3i.js");
3207
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
3208
3208
  const primaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
3209
3209
  const targetBranch = primaryRepo?.targetBranch || "main";
3210
3210
  const primaryForge = primaryRepo?.forge || "github";
@@ -3246,7 +3246,7 @@ async function triggerMerge(issueId) {
3246
3246
  };
3247
3247
  }
3248
3248
  if (githubPrRef) try {
3249
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DRD2woO0.js");
3249
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bwt9lK4A.js");
3250
3250
  if (isGitHubAppConfigured()) {
3251
3251
  const prState = await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number));
3252
3252
  if (prState.state !== "OPEN" && !prState.merged) {
@@ -3307,7 +3307,7 @@ async function triggerMerge(issueId) {
3307
3307
  readyForMerge: false
3308
3308
  });
3309
3309
  completePendingOperation(issueId, null);
3310
- const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
3310
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
3311
3311
  await postMergeLifecycle(issueId, projectPath, branchName);
3312
3312
  return {
3313
3313
  success: true,
@@ -3321,13 +3321,13 @@ async function triggerMerge(issueId) {
3321
3321
  } catch (prStateErr) {
3322
3322
  console.warn(`[merge] Pre-merge PR state check failed for ${issueId}: ${prStateErr.message} — proceeding (check is best-effort)`);
3323
3323
  }
3324
- const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
3324
+ const { postMergeLifecycle } = await import("./merge-agent-ejC7Wos8.js");
3325
3325
  const agentId = `agent-${issueId.toLowerCase()}`;
3326
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.`;
3327
3327
  setReviewStatus(issueId, { mergeStep: "rebasing" });
3328
3328
  console.log(`[merge] Rebasing ${branchName} onto ${targetBranch} for ${issueId} (agent=${await Effect.runPromise(sessionExists(agentId)) ? "running" : "stopped"})...`);
3329
3329
  {
3330
- const { beginShipLog, appendShipLog } = await import("./ship-log-DE_0Cv_i.js");
3330
+ const { beginShipLog, appendShipLog } = await import("./ship-log-CwqPFfqx.js");
3331
3331
  beginShipLog(issueId);
3332
3332
  appendShipLog(issueId, `Ship started: rebasing ${branchName} onto ${targetBranch}…`, "rebasing");
3333
3333
  }
@@ -3455,7 +3455,7 @@ async function triggerMerge(issueId) {
3455
3455
  });
3456
3456
  let skipLocalVerification = false;
3457
3457
  if (primaryForge === "github" && artifactUrl) try {
3458
- const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-DRD2woO0.js");
3458
+ const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-Bwt9lK4A.js");
3459
3459
  if (isGitHubAppConfigured()) {
3460
3460
  const ref = parsePullRequestRef({ url: artifactUrl });
3461
3461
  if (ref) {
@@ -3476,12 +3476,12 @@ async function triggerMerge(issueId) {
3476
3476
  } catch (ciErr) {
3477
3477
  console.warn(`[merge] CI-state check failed (${ciErr.message?.slice(0, 120)}) — falling back to local verification for ${issueId}`);
3478
3478
  }
3479
- const { appendShipLog } = await import("./ship-log-DE_0Cv_i.js");
3479
+ const { appendShipLog } = await import("./ship-log-CwqPFfqx.js");
3480
3480
  if (skipLocalVerification) appendShipLog(issueId, "✓ Local verification skipped — CI already green on this exact commit", "verifying");
3481
3481
  const verifyResult = skipLocalVerification ? { outcome: "passed" } : await (async () => {
3482
3482
  console.log(`[merge] Running post-rebase verification for ${issueId}...`);
3483
3483
  appendShipLog(issueId, "Running post-rebase verification (full quality-gate suite)…", "verifying");
3484
- const { runVerificationForIssue } = await import("./verification-runner-ATaLbpr5.js");
3484
+ const { runVerificationForIssue } = await import("./verification-runner-D0Uh-9jc.js");
3485
3485
  return Effect.runPromise(runVerificationForIssue(issueId, workspacePath, { isRemote: false }, "merge-verify", {
3486
3486
  syncTargetBranch: false,
3487
3487
  onGateLog: (line) => appendShipLog(issueId, line, "verifying")
@@ -3514,7 +3514,7 @@ async function triggerMerge(issueId) {
3514
3514
  console.log(`[merge] Post-rebase verification ${verifyResult.outcome} for ${issueId}`);
3515
3515
  setReviewStatus(issueId, { mergeStep: "reporting-statuses" });
3516
3516
  try {
3517
- const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-DRD2woO0.js");
3517
+ const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-Bwt9lK4A.js");
3518
3518
  if (githubPrRef && isGitHubAppConfigured()) {
3519
3519
  const sha = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).headSha.trim();
3520
3520
  if (sha) {
@@ -3542,7 +3542,7 @@ async function triggerMerge(issueId) {
3542
3542
  } catch (prMergeErr) {
3543
3543
  console.error(`[merge] Review artifact merge threw for ${issueId}:`, prMergeErr);
3544
3544
  try {
3545
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DRD2woO0.js");
3545
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bwt9lK4A.js");
3546
3546
  if (githubPrRef && isGitHubAppConfigured()) {
3547
3547
  artifactMerged = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).merged;
3548
3548
  if (artifactMerged) console.log(`[merge] Race-detected: PR #${githubPrRef.number} for ${issueId} was already merged despite thrown error; proceeding`);
@@ -3659,8 +3659,8 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
3659
3659
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
3660
3660
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
3661
3661
  return yield* Effect.promise(async () => {
3662
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-G1RHcu3D.js");
3663
- const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
3662
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-Dy0D0r3i.js");
3663
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
3664
3664
  let mergeSet = getMergeSetSync(issueId);
3665
3665
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
3666
3666
  const results = [];
@@ -3748,8 +3748,8 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
3748
3748
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
3749
3749
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
3750
3750
  return yield* Effect.promise(async () => {
3751
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-G1RHcu3D.js");
3752
- const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
3751
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-Dy0D0r3i.js");
3752
+ const { getForgeAdapter } = await import("./forge-8y6aEPTB.js");
3753
3753
  let mergeSet = getMergeSetSync(issueId);
3754
3754
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
3755
3755
  const results = [];
@@ -3942,7 +3942,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
3942
3942
  console.log(`[approve] Starting role pipeline for ${issueId}...`);
3943
3943
  let reviewResult;
3944
3944
  try {
3945
- const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
3945
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
3946
3946
  reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
3947
3947
  issueId,
3948
3948
  workspace: workspacePath,
@@ -3989,7 +3989,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
3989
3989
  }
3990
3990
  console.log(`[approve] Step 3/3: Running server-side rebase for ${issueId}...`);
3991
3991
  try {
3992
- const { rebaseFeatureBranch } = await import("./merge-rebase-Czfqfe4q.js");
3992
+ const { rebaseFeatureBranch } = await import("./merge-rebase-Dl7yIxtV.js");
3993
3993
  const workspacePathForRebase = join(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
3994
3994
  const rebaseResult = await Effect.runPromise(rebaseFeatureBranch(workspacePathForRebase, branchName, "main", issueId));
3995
3995
  if (!rebaseResult.success) {
@@ -4009,7 +4009,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4009
4009
  completePendingOperation(issueId, pushResult.error);
4010
4010
  return jsonResponse({ error: pushResult.error }, { status: pushResult.httpStatus });
4011
4011
  }
4012
- const { approve: lifecycleApprove } = await import("./lifecycle-C_73gi-C.js");
4012
+ const { approve: lifecycleApprove } = await import("./lifecycle-Ck2UR27D.js");
4013
4013
  const ghResolved = resolveGitHubIssueSync(issueId);
4014
4014
  const isGitHubIssueFlag = ghResolved.isGitHub;
4015
4015
  const lifecycleCtx = {
@@ -4043,7 +4043,7 @@ const getMergeQueueRoute = HttpRouter.add("GET", "/api/merge-queue", httpHandler
4043
4043
  })));
4044
4044
  const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pipeline/notify", httpHandler(Effect.gen(function* () {
4045
4045
  const request = yield* HttpServerRequest.HttpServerRequest;
4046
- const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-CCaWaTwE.js"));
4046
+ const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-BPYEaXFh.js"));
4047
4047
  const expected = getInternalTokenSync();
4048
4048
  if (!expected) return jsonResponse({
4049
4049
  ok: false,
@@ -4057,7 +4057,7 @@ const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pi
4057
4057
  }, 403);
4058
4058
  const event = yield* readJsonBody;
4059
4059
  const type = event.type;
4060
- const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-BkKbQ8ji.js"));
4060
+ const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-BH4PAi-w.js"));
4061
4061
  switch (type) {
4062
4062
  case "status_changed": {
4063
4063
  const issueId = event.issueId;
@@ -4832,7 +4832,7 @@ const patchWorkspaceTieredExecutionRoute = HttpRouter.add("PATCH", "/api/workspa
4832
4832
  if (override !== "on" && override !== "off" && override !== null && override !== void 0) return jsonResponse({ error: "Invalid tiered-execution override" }, { status: 400 });
4833
4833
  const project = getProjectSync(extractPrefixSync(issueId) ?? issueId.split("-")[0]);
4834
4834
  if (!project) return jsonResponse({ error: "Project not found" }, { status: 404 });
4835
- yield* Effect.promise(() => import("./record-pyB6VA32.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
4835
+ yield* Effect.promise(() => import("./record-lEYK__LD.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
4836
4836
  const projectPath = project.path;
4837
4837
  const location = yield* resolvePlanLocation(projectPath, issueId);
4838
4838
  if (!location) return jsonResponse({ error: "No vBRIEF plan found for this workspace" }, { status: 404 });
@@ -5269,7 +5269,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
5269
5269
  console.log(`Feature branch push note: ${errorMessage(pushErr)}`);
5270
5270
  }
5271
5271
  try {
5272
- const { createReviewArtifactsForIssue } = await import("./review-artifacts-CX951jTU.js");
5272
+ const { createReviewArtifactsForIssue } = await import("./review-artifacts-D4T04aYI.js");
5273
5273
  const artifactResult = await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath));
5274
5274
  const primaryArtifact = artifactResult.mergeSet?.repos.find((repo) => !!repo.artifactUrl);
5275
5275
  artifactResult.mergeSet?.repos.find((repo) => repo.mergeStatus !== "skipped")?.targetBranch;
@@ -5324,7 +5324,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
5324
5324
  } catch {}
5325
5325
  return;
5326
5326
  }
5327
- const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
5327
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5328
5328
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
5329
5329
  const reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
5330
5330
  issueId,
@@ -5464,7 +5464,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5464
5464
  console.log(`[request-review] Feature branch push note: ${errorMessage(pushErr)}`);
5465
5465
  }
5466
5466
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
5467
- const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
5467
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5468
5468
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
5469
5469
  issueId,
5470
5470
  workspace: workspacePathRerun,
@@ -5514,7 +5514,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5514
5514
  });
5515
5515
  } else {
5516
5516
  const workspacePath = join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
5517
- const { spawnRun } = yield* Effect.promise(() => import("./agents-DCvyTXNU.js"));
5517
+ const { spawnRun } = yield* Effect.promise(() => import("./agents-CEcaxSkR.js"));
5518
5518
  try {
5519
5519
  const testRun = yield* Effect.promise(() => spawnRun(issueId, "test", { workspace: workspacePath }));
5520
5520
  setReviewStatus(issueId, { testStatus: "testing" });
@@ -5603,7 +5603,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
5603
5603
  autoRequeueCount: newCount
5604
5604
  }, { status: 500 });
5605
5605
  const result = yield* Effect.promise(async () => {
5606
- const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
5606
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5607
5607
  return await Effect.runPromise(spawnReviewRoleForIssue({
5608
5608
  issueId,
5609
5609
  workspace: workspacePath,
@@ -5907,7 +5907,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5907
5907
  const result = processResetReviewPipeline(issueId, resetWorkspace.exists);
5908
5908
  if (result.httpStatus !== 200) return jsonResponse(result.body, { status: result.httpStatus });
5909
5909
  try {
5910
- const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-36wfYm2u.js"));
5910
+ const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-ejC7Wos8.js"));
5911
5911
  resetPostMergeState(issueId);
5912
5912
  } catch (err) {
5913
5913
  console.warn(`[reset-review] resetPostMergeState best-effort failed for ${issueId}:`, err);
@@ -5916,7 +5916,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5916
5916
  const rerun = body?.rerun === true;
5917
5917
  if (rerun) try {
5918
5918
  yield* Effect.promise(async () => {
5919
- const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
5919
+ const { spawnReviewRoleForIssue } = await import("./review-agent-u5q3ip7H.js");
5920
5920
  const dispatchArgs = buildReviewRedispatchArgs(issueId, resetWorkspace, workspaceInfo, resolved);
5921
5921
  if (dispatchArgs) {
5922
5922
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
@@ -5945,7 +5945,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5945
5945
  const postWorkspaceReviewPurgeRoute = HttpRouter.add("POST", "/api/review/:issueId/purge", httpHandler(Effect.gen(function* () {
5946
5946
  const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
5947
5947
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
5948
- const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-Rub0OpZc.js"));
5948
+ const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-u5q3ip7H.js"));
5949
5949
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
5950
5950
  const purge = yield* Effect.promise(() => purgeReviewAgentsForIssue(projectKey, issueId));
5951
5951
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
@@ -5975,8 +5975,8 @@ const postWorkspaceAbortReviewRoute = HttpRouter.add("POST", "/api/review/:issue
5975
5975
  success: false,
5976
5976
  error: "Workspace does not exist"
5977
5977
  }, { status: 400 });
5978
- const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-KJ94e50I.js"));
5979
- const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-Rub0OpZc.js"));
5978
+ const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-CrBE6IhN.js"));
5979
+ const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-u5q3ip7H.js"));
5980
5980
  const { killed, failed } = yield* killAllReviewerSessions(resolveProjectFromIssueSync(issueId)?.projectKey, issueId);
5981
5981
  setReviewStatus(issueId, {
5982
5982
  reviewStatus: "pending",
@@ -6048,8 +6048,8 @@ const getReviewConfigRoute = HttpRouter.add("GET", "/api/review/:issueId/config"
6048
6048
  const issueId = ((yield* HttpRouter.params)["issueId"] ?? "").toUpperCase();
6049
6049
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
6050
6050
  return jsonResponse(yield* Effect.promise(async () => {
6051
- const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-pyB6VA32.js");
6052
- const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-Rub0OpZc.js");
6051
+ const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-lEYK__LD.js");
6052
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-u5q3ip7H.js");
6053
6053
  const project = resolveProjectForIssue(issueId);
6054
6054
  const record = project ? readIssueRecordSync(project, issueId) : null;
6055
6055
  return {
@@ -6075,8 +6075,8 @@ const postReviewConfigRoute = HttpRouter.add("POST", "/api/review/:issueId/confi
6075
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 });
6076
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 });
6077
6077
  return jsonResponse(yield* Effect.promise(async () => {
6078
- const { ensureIssueRecordSync, readIssueRecordSync, resolveProjectForIssue, writeIssueRecordSync } = await import("./record-pyB6VA32.js");
6079
- const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-Rub0OpZc.js");
6078
+ const { ensureIssueRecordSync, readIssueRecordSync, resolveProjectForIssue, writeIssueRecordSync } = await import("./record-lEYK__LD.js");
6079
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-u5q3ip7H.js");
6080
6080
  const project = resolveProjectForIssue(issueId);
6081
6081
  const record = readIssueRecordSync(project, issueId) ?? ensureIssueRecordSync(project, issueId);
6082
6082
  if (hasMode) if (body.reviewMode === null) delete record.reviewMode;
@@ -6470,7 +6470,7 @@ async function readWorkspacePlanningMarkdown(issueId, fileName) {
6470
6470
  */
6471
6471
  async function readWorkspaceContinueFile(_projectPath, workspacePath, issueId) {
6472
6472
  try {
6473
- const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-pyB6VA32.js");
6473
+ const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-lEYK__LD.js");
6474
6474
  const recordView = readRecordContinueViewSync(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId);
6475
6475
  return recordView ? JSON.stringify(recordView, null, 2) : null;
6476
6476
  } catch {
@@ -7239,7 +7239,7 @@ const getWorkspaceReviewStatusRoute = HttpRouter.add("GET", "/api/review/:issueI
7239
7239
  if (queuePosition === null) try {
7240
7240
  const resolved = resolveProjectFromIssueSync(issueId);
7241
7241
  if (resolved) {
7242
- const { getQueueForProject } = yield* Effect.promise(() => import("./merge-brm721Es.js"));
7242
+ const { getQueueForProject } = yield* Effect.promise(() => import("./merge-BLcEZNXz.js"));
7243
7243
  const mergePos = findPositionInQueueSync(issueId, getQueueForProject(resolved.projectKey).map((e) => ({
7244
7244
  id: String(e.id),
7245
7245
  type: "task",
@@ -7277,7 +7277,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7277
7277
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
7278
7278
  if (workspaceInfo.exists && workspaceInfo.localPath) {
7279
7279
  const localPath = workspaceInfo.localPath;
7280
- const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-BCLRWQ-y.js"));
7280
+ const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-C0neHvQx.js"));
7281
7281
  try {
7282
7282
  const gitInfo = yield* getWorkspaceGitInfo(localPath);
7283
7283
  if (gitInfo.HEAD) update.reviewedAtCommit = gitInfo.HEAD;
@@ -7292,7 +7292,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7292
7292
  if (verificationStatus) update.verificationStatus = verificationStatus;
7293
7293
  if (readyForMerge !== void 0) update.readyForMerge = readyForMerge;
7294
7294
  const status = setReviewStatus(issueId, update);
7295
- const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-8ZAguXef.js"));
7295
+ const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-k22_Btaq.js"));
7296
7296
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
7297
7297
  if (reviewStatus && [
7298
7298
  "passed",
@@ -7310,7 +7310,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7310
7310
  const agentId = `agent-${issueId.toLowerCase()}`;
7311
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.`;
7312
7312
  try {
7313
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-DOUhyIW2.js"));
7313
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-BsJiw5aT.js"));
7314
7314
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7315
7315
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
7316
7316
  issueId,
@@ -7374,7 +7374,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7374
7374
  const agentId = `agent-${issueId.toLowerCase()}`;
7375
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.`;
7376
7376
  try {
7377
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-DOUhyIW2.js"));
7377
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-BsJiw5aT.js"));
7378
7378
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7379
7379
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
7380
7380
  issueId,
@@ -7397,16 +7397,24 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7397
7397
  if (testStatus === "passed") {
7398
7398
  setReviewStatus(issueId, { readyForMerge: true });
7399
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
+ });
7400
7408
  yield* Effect.promise(async () => {
7401
7409
  try {
7402
- const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-KJ94e50I.js");
7410
+ const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-CrBE6IhN.js");
7403
7411
  const project = resolveProjectFromIssueSync(issueId);
7404
7412
  const repo = (project ? getProjectSync(project.projectKey) : null)?.github_repo;
7405
7413
  if (!repo || !repo.includes("/")) return;
7406
7414
  const [owner, name] = repo.split("/");
7407
7415
  const wsInfo = getWorkspaceInfoForIssue(issueId);
7408
7416
  if (!wsInfo?.localPath) return;
7409
- const { postOverdeckTestsStatus } = await import("./github-app-DRD2woO0.js");
7417
+ const { postOverdeckTestsStatus } = await import("./github-app-Bwt9lK4A.js");
7410
7418
  await postOverdeckTestsStatus(wsInfo.localPath, owner, name, "success", "Test specialist passed");
7411
7419
  } catch (err) {
7412
7420
  console.warn(`[review-status] Failed to post overdeck/tests for ${issueId}: ${err.message}`);
@@ -7421,7 +7429,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
7421
7429
  }
7422
7430
  })));
7423
7431
  const notifyAgentId = `agent-${issueId.toLowerCase()}`;
7424
- 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)}`))));
7425
7433
  }
7426
7434
  }
7427
7435
  return jsonResponse(status);
@@ -7448,7 +7456,7 @@ const postWorkspaceRefreshTokenRoute = HttpRouter.add("POST", "/api/workspaces/:
7448
7456
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
7449
7457
  const issueLower = issueId.toLowerCase();
7450
7458
  const workspacePath = join(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), "workspaces", `feature-${issueLower}`);
7451
- const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-DRD2woO0.js"));
7459
+ const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-Bwt9lK4A.js"));
7452
7460
  if (!isGitHubAppConfigured()) return jsonResponse({
7453
7461
  success: false,
7454
7462
  error: "GitHub App not configured"
@@ -7463,4 +7471,4 @@ const workspacesRouteLayer = Layer.mergeAll(workspaceDataRouteLayer, postWorkspa
7463
7471
  //#endregion
7464
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 };
7465
7473
 
7466
- //# sourceMappingURL=workspaces-BjWXntty.js.map
7474
+ //# sourceMappingURL=workspaces-D-uIoqbg.js.map
@@ -1,3 +1,3 @@
1
- import { n as init_writer, r as runMutationBatch } from "./writer-fe1-8iGc.js";
1
+ import { n as init_writer, r as runMutationBatch } from "./writer-CrP2xuBn.js";
2
2
  init_writer();
3
3
  export { runMutationBatch };
@@ -1,6 +1,6 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { a as withBdProcessLock, n as init_bd_process_lock } from "./bd-process-lock-D3S4T4o-.js";
3
- import { n as init_export, t as exportBeadsJsonl } from "./export-Dx_qJ3h8.js";
2
+ import { a as withBdProcessLock, n as init_bd_process_lock } from "./bd-process-lock-XAXAet9O.js";
3
+ import { n as init_export, t as exportBeadsJsonl } from "./export-BJHSVwKP.js";
4
4
  import { join } from "node:path";
5
5
  import { readFile, readdir, stat } from "node:fs/promises";
6
6
  import { execFile } from "node:child_process";
@@ -248,4 +248,4 @@ var init_writer = __esmMin((() => {
248
248
  //#endregion
249
249
  export { init_telemetry as a, getBeadsHealth as i, init_writer as n, recordBeadsPull as o, runMutationBatch as r, recordBeadsSyncError as s, formatMutationBatchFailure as t };
250
250
 
251
- //# sourceMappingURL=writer-fe1-8iGc.js.map
251
+ //# sourceMappingURL=writer-CrP2xuBn.js.map
@@ -49,7 +49,13 @@ if declare -f pan_resolve_agent_id >/dev/null && pan_resolve_agent_id; then
49
49
  fi
50
50
  fi
51
51
 
52
- REASON='Your question has been surfaced to the operator in the Overdeck dashboard, where they answer it directly. Restate the question and its options to the operator as a short plain-text message and wait for their reply (it arrives as a normal user message).'
52
+ # The literal "(PAN-1520)" marker is LOAD-BEARING: scanPendingInputsPromise
53
+ # (src/lib/agent-enrichment.ts, ASK_USER_QUESTION_HOOK_DENY_MARKER) keys on it
54
+ # to keep the question PENDING after this deny. A deny reason without the
55
+ # marker is treated as a real operator answer — the dashboard modal,
56
+ # notification, and needs-you entry never fire (this exact regression shipped
57
+ # in a rewording and silently killed AUQ detection until 2026-07-13).
58
+ REASON='Your question has been surfaced to the operator in the Overdeck dashboard, where they answer it directly. Restate the question and its options to the operator as a short plain-text message and wait for their reply (it arrives as a normal user message). (PAN-1520)'
53
59
 
54
60
  CONTEXT=$(echo "$INPUT" | jq -r '
55
61
  def fmt_option:
@@ -25530,12 +25530,12 @@ function resolveStateReadHomeSync(project, projectKey$1) {
25530
25530
  }
25531
25531
  promisify(execFile$1);
25532
25532
  layer$4.pipe(provide(mergeAll(layer$2, layer)));
25533
- const DEFAULT_STATE_FLUSH_WINDOW_MS = 600 * 1e3;
25533
+ const DEFAULT_STATE_FLUSH_WINDOW_MS = 0;
25534
25534
  parseStateFlushWindowMs(process.env.OVERDECK_STATE_FLUSH_WINDOW_MS);
25535
25535
  function parseStateFlushWindowMs(value) {
25536
25536
  if (!value) return DEFAULT_STATE_FLUSH_WINDOW_MS;
25537
25537
  const parsed = Number(value);
25538
- if (!Number.isFinite(parsed) || parsed <= 0) return DEFAULT_STATE_FLUSH_WINDOW_MS;
25538
+ if (!Number.isFinite(parsed) || parsed < 0) return DEFAULT_STATE_FLUSH_WINDOW_MS;
25539
25539
  return parsed;
25540
25540
  }
25541
25541
  Promise.resolve();