@overdeck/desktop 0.47.0 → 0.48.0

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 (444) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +59 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-10Ur5Dne.js → acceptance-criteria-DmtLDbtt.js} +2 -2
  4. package/server/{activity-logger-CyteR4JO.js → activity-logger-Co5qljIj.js} +55 -4
  5. package/server/activity-logger-K7FYGF_z.js +3 -0
  6. package/server/{advancing-selfheal-BNwqxseD.js → advancing-selfheal-8AR68Asf.js} +6 -6
  7. package/server/{agent-gc-C3h9Or3a.js → agent-gc-BmYeT6eH.js} +5 -5
  8. package/server/agent-state-Dq3s84-P.js +3 -0
  9. package/server/{agent-state-service-C63p_ftq.js → agent-state-service-DK1Vay1E.js} +1 -1
  10. package/server/{agent-state-service-Ds6OeFvo.js → agent-state-service-rjnzpHDx.js} +6 -6
  11. package/server/agent-state-source-Ds968-j6.js +21 -0
  12. package/server/{agents-J5mEnekq.js → agents-Dls7tfJH.js} +5 -5
  13. package/server/agents-IPSa5kzn.js +3 -0
  14. package/server/{archive-planning-BwhxeP7C.js → archive-planning-Cq7cyinS.js} +51 -24
  15. package/server/archive-planning-MbkGCBIY.js +2 -0
  16. package/server/{artifact-index-jobs-D1q_vR3V.js → artifact-index-jobs-Dj_8kpTd.js} +3 -3
  17. package/server/{assemble-Bgwqv-Ro.js → assemble-BTCmbcfH.js} +20 -13
  18. package/server/{auto-spawn-consent-CQ9Bi9q6.js → auto-spawn-consent-lXqRJ1Dr.js} +304 -121
  19. package/server/{backlog-auto-trigger-n1lzPgN4.js → backlog-auto-trigger-Dn-amzt6.js} +3 -3
  20. package/server/{behavior-td6-xhQk.js → behavior-DIMQMRzs.js} +2 -2
  21. package/server/{boot-reconciled-stop-events-C7gGe3oB.js → boot-reconciled-stop-events-D6SeUTIr.js} +1 -1
  22. package/server/{bridge-pool-patrol-CYH2OLb5.js → bridge-pool-patrol-BEjt-xF3.js} +2 -2
  23. package/server/{briefing-freshness-DRqZ8lAz.js → briefing-freshness-3PNmL_p3.js} +2 -2
  24. package/server/{build-info-7yiEpl6u.js → build-info-CJg813Hm.js} +3 -3
  25. package/server/{build-info-CpG__c63.js → build-info-CXyeFsXu.js} +1 -1
  26. package/server/{checkpoint-manager-CkKmB0wZ.js → checkpoint-manager-9t7G5c1V.js} +1 -1
  27. package/server/{checkpoint-manager-DBcyNR8w.js → checkpoint-manager-B2G38R3p.js} +3 -3
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-Wm963lm8.js → checkpoints-CuBgiXO-.js} +1 -1
  30. package/server/{checkpoints-D95apurL.js → checkpoints-VTZMd4Qm.js} +2 -2
  31. package/server/{claude-hooks-provision-Bjitl9aI.js → claude-hooks-provision-55SyQaPz.js} +2 -2
  32. package/server/{claude-hooks-provision-4RPxNkE8.js → claude-hooks-provision-CEUT-CZd.js} +1 -1
  33. package/server/{claude-permissions-CpbpvUQ2.js → claude-permissions-Cn0dIu2i.js} +2 -2
  34. package/server/{claude-settings-overlay-BzkHYDwR.js → claude-settings-overlay-B19hdzSA.js} +1 -1
  35. package/server/{claude-settings-overlay-_H9Yrzab.js → claude-settings-overlay-Yg_ANh81.js} +2 -2
  36. package/server/{cli-Cte9ZFGn.js → cli-C9S84iTy.js} +79 -22
  37. package/server/cli-M1cwZ__d.js +3 -0
  38. package/server/{cliproxy-C5fMJ7rY.js → cliproxy-CJq3KXU6.js} +2 -2
  39. package/server/{cliproxy-DaAbWMjC.js → cliproxy-DgEZlr7Y.js} +1 -1
  40. package/server/{close-issue-BPh1ARCF.js → close-issue-DPxRddGR.js} +5 -5
  41. package/server/{closed-issue-reaper-DoOZqGFK.js → closed-issue-reaper-C5Zn4GRS.js} +13 -13
  42. package/server/{closed-issue-reaper-DHRfRMrp.js → closed-issue-reaper-D-2B48Ri.js} +1 -1
  43. package/server/{codex-o8FJwzmy.js → codex-B3n_rkwn.js} +1 -1
  44. package/server/{codex-BzGDW_d3.js → codex-CjkD1PJu.js} +6 -6
  45. package/server/{codex-parser-Dt-ycU8L.js → codex-parser-DpB1Il-P.js} +2 -2
  46. package/server/{compaction-continuation-CvXpbZ4w.js → compaction-continuation-DZD9ukSE.js} +3 -3
  47. package/server/{config-CL3Gyvja.js → config-C5saf4Ja.js} +1 -1
  48. package/server/{config-BvLe652W.js → config-DnLJATZk.js} +2 -2
  49. package/server/{config-Bi3u1VK7.js → config-DvM8jtQK.js} +2 -2
  50. package/server/{config-yaml-CxdwhAIA.js → config-yaml-BSCqwmX0.js} +11299 -10972
  51. package/server/{conflict-gate-CX80JYYS.js → conflict-gate-DXa_L28t.js} +1 -1
  52. package/server/{conflict-gate-E4nt7ZeS.js → conflict-gate-WfVqgalf.js} +4 -4
  53. package/server/{context-layers-DAG83UZt.js → context-layers-D7UqH9Ab.js} +2 -2
  54. package/server/{context-layers-C_IIysnm.js → context-layers-Dpz3Vd6d.js} +3 -3
  55. package/server/{control-settings-CiqGxXnc.js → control-settings-DVf6pKyv.js} +4 -4
  56. package/server/{conversation-compaction-BE3CNtHF.js → conversation-compaction-5XuH6OBn.js} +1 -1
  57. package/server/{conversation-compaction-D6-yLtqt.js → conversation-compaction-COrbnX1J.js} +8 -8
  58. package/server/{conversation-service-DBxoYMDl.js → conversation-service-BufdtnZF.js} +169 -10
  59. package/server/{conversation-service-D_TS2b1r.js → conversation-service-DnUyIiLb.js} +1 -1
  60. package/server/{conversations-D0UEdLtk.js → conversations-B4rxz-Wl.js} +17 -10
  61. package/server/{conversations-BKDVpB-3.js → conversations-D1bwxQMy.js} +1 -1
  62. package/server/{cost-DpgYmYqR.js → cost-CpFDrJUS.js} +46 -2
  63. package/server/{cost-DS1s0DbG.js → cost-KLuwKCW9.js} +3 -3
  64. package/server/{cost-sync-tOCCGnEt.js → cost-sync-cesi9dp8.js} +3 -3
  65. package/server/{dag-BtkgLeqY.js → dag-BYiFMqpU.js} +2 -2
  66. package/server/{dangerous-git-ops-CFLykHWt.js → dangerous-git-ops-BKvd3-Hk.js} +1 -1
  67. package/server/dashboard-db-worker.js +7 -7
  68. package/server/{deacon-BIblC-WX.js → deacon-BbsWw8a6.js} +3 -3
  69. package/server/{deacon-pLRLbPvR.js → deacon-HdEh0Esp.js} +863 -214
  70. package/server/deacon-event-client-C93rvOT7.js +237 -0
  71. package/server/deacon-event-client-Ck5Ei7Mn.js +3 -0
  72. package/server/{deacon-nudge-log-B08gF0mh.js → deacon-nudge-log-BND_97Wo.js} +4 -3
  73. package/server/{deacon-pending-lifecycle-B-Io84AP.js → deacon-pending-lifecycle-CD3YsiQK.js} +3 -3
  74. package/server/deacon-swarm-DgWADWd_.js +2 -0
  75. package/server/{deacon-swarm-v5PMun-m.js → deacon-swarm-rqrl4TMs.js} +39 -18
  76. package/server/deacon.js +12 -210
  77. package/server/{dead-end-trip-D8A3msX9.js → dead-end-trip-DSF23CLX.js} +4 -3
  78. package/server/dead-end-trip-zKlS4v6f.js +2 -0
  79. package/server/delivery-CsbQdZkS.js +3 -0
  80. package/server/{deploy-patrol-sYgOxLeb.js → deploy-patrol-kARAkji4.js} +17 -21
  81. package/server/{deploy-queue-VfohaPN_.js → deploy-queue-Bj0HJT1i.js} +2 -2
  82. package/server/{deploy-queue-gHJBycaF.js → deploy-queue-rjTUy1RM.js} +1 -1
  83. package/server/{deploy-window-D4DQb8VP.js → deploy-window-B2IM-9G5.js} +10 -44
  84. package/server/{deploy-window-CFRZ0-kt.js → deploy-window-BNFWnA8D.js} +1 -1
  85. package/server/{dev-supervisor-DiOBDM1c.js → dev-supervisor-B1mZYXz4.js} +2 -2
  86. package/server/{devcontainer-renderer-BUOIlfgD.js → devcontainer-renderer-B-o68Z5B.js} +3 -3
  87. package/server/{dist-C3A8B8wM.js → dist-3W--cGMa.js} +1 -1
  88. package/server/dist-BR0QtwmS.js +3 -0
  89. package/server/{dist-src-C0adpegX.js → dist-src-C-Vk2jNk.js} +1 -1
  90. package/server/{docker-Y3PElJb0.js → docker-DH3jUYg1.js} +1 -1
  91. package/server/{docker-BJzlkqYB.js → docker-meuLKLzV.js} +27 -20
  92. package/server/{dod-DlNtcH6n.js → dod-D7-9dCOD.js} +1 -1
  93. package/server/{driver-CKVGi51s.js → driver-CmsY2RLl.js} +1 -1
  94. package/server/{durable-review-pipeline-DP6bIcOY.js → durable-review-pipeline-CStTgOAf.js} +1 -1
  95. package/server/{durable-review-pipeline-Cibps-Rg.js → durable-review-pipeline-Chq0lzjL.js} +1 -1
  96. package/server/{ensure-devcontainer-DMAbWqtQ.js → ensure-devcontainer-BE3llBWP.js} +1 -1
  97. package/server/{ensure-devcontainer-BAofzBPv.js → ensure-devcontainer-BXrY7C2Z.js} +4 -4
  98. package/server/{esm-shims-BeObUkaw.js → esm-shims-Bzy4ZzNU.js} +1 -1
  99. package/server/event-store-COd2tOx8.js +3 -0
  100. package/server/{event-store-CrHcVC5_.js → event-store-D_AR-Y78.js} +184 -11
  101. package/server/{events-CF8QDbuV.js → events-CCkFWa7X.js} +1 -1
  102. package/server/{events-BNrvchBg.js → events-zjDQozet.js} +3 -3
  103. package/server/{factory-Cmm9Hsho.js → factory-DhavwKVc.js} +5 -5
  104. package/server/{feature-registry-population-B6HpNWRy.js → feature-registry-population-DWGBKyWd.js} +4 -4
  105. package/server/{feature-registry-storage-DJEFx1Pf.js → feature-registry-storage-C5DkXmCM.js} +3 -3
  106. package/server/{features-D5km80UI.js → features-CC47YcCX.js} +2 -2
  107. package/server/{feedback-target-BJ5ZADsu.js → feedback-target-D9Tex35_.js} +1 -1
  108. package/server/{feedback-target-DSxEL6lP.js → feedback-target-DoRCR3L-.js} +18 -7
  109. package/server/{feedback-writer-CoB9Z6aU.js → feedback-writer-CTSuA6lw.js} +1 -1
  110. package/server/{feedback-writer-C27Hak8a.js → feedback-writer-DdsBdtNL.js} +5 -5
  111. package/server/{flywheel-DZZdtiOL.js → flywheel-DHWHzaYK.js} +1 -1
  112. package/server/{flywheel-f662Q-y2.js → flywheel-DJQa9az8.js} +14 -14
  113. package/server/{flywheel-BHx8XuMr.js → flywheel-TacAI9MA.js} +21 -17
  114. package/server/{flywheel-merge-order-Dil0LmdN.js → flywheel-merge-order-D2foPh88.js} +1 -1
  115. package/server/{flywheel-merge-order-D_xLMbJU.js → flywheel-merge-order-DRtex2Dt.js} +7 -7
  116. package/server/forge-CdlCG9aS.js +3 -0
  117. package/server/{forge-BaKGCya6.js → forge-c8LeC-tw.js} +2 -2
  118. package/server/{from-B3tZbB55.js → from-BogSwvr2.js} +1 -1
  119. package/server/{fs-lock-Bre3sGoz.js → fs-lock-D_GeJtXl.js} +3 -3
  120. package/server/{fts-operations-B9jG8wa3.js → fts-operations-DP9R-8Q3.js} +3 -3
  121. package/server/{git-utils-Xg4PFN45.js → git-utils-C31x1lpE.js} +1 -1
  122. package/server/{git-utils-CsvYfJU3.js → git-utils-xQ74FoSn.js} +5 -4
  123. package/server/{github-app-Bmg4R9mv.js → github-app-CpQSDlv8.js} +1 -1
  124. package/server/{github-app-CmNk0zLU.js → github-app-D2QuvZ3j.js} +3 -3
  125. package/server/{github-client-qazkPrg0.js → github-client-D9YvJX5D.js} +3 -3
  126. package/server/{github-client-B6KM9_wA.js → github-client-Tpi3PmKX.js} +1 -1
  127. package/server/{github-pr-lookup-DAcVeRLK.js → github-pr-lookup-DvBMv-IW.js} +2 -2
  128. package/server/{harness-binary-BSpiXaLw.js → harness-binary-BHxWf_sX.js} +7 -6
  129. package/server/{harness-resolve-BAJu5MX8.js → harness-resolve-bj9WMABA.js} +4 -4
  130. package/server/{health-events-BwX32k8d.js → health-events-bCDPn59Z.js} +2 -2
  131. package/server/{health-events-2Z6Wa9SM.js → health-events-qo7Ss34U.js} +1 -1
  132. package/server/{hooks-DbtbimEf.js → hooks-Dyxtg5fk.js} +2 -2
  133. package/server/{hooks-D1g1jKLI.js → hooks-X2XHBB2b.js} +1 -1
  134. package/server/{hume-DXNiu6nQ.js → hume-DrZEGpqc.js} +2 -2
  135. package/server/hume-YPsy4UA8.js +3 -0
  136. package/server/{idle-stack-reaper-Cy-dQzW4.js → idle-stack-reaper-CJ1ygW0p.js} +37 -7
  137. package/server/{idle-stack-reaper-CRA1e0jr.js → idle-stack-reaper-uJGOb-vu.js} +1 -1
  138. package/server/{in-flight-guard-D-sSkADM.js → in-flight-guard-CG2Eo-rr.js} +1 -1
  139. package/server/{infra-BDQDRopn.js → infra-CTrmVqc_.js} +111 -6
  140. package/server/{injection-Bl8d_jHZ.js → injection-BisQ0lpX.js} +1 -1
  141. package/server/{injection-6AGnXxlj.js → injection-C9sxqbc2.js} +73 -193
  142. package/server/{inspect-agent-nXdIptyh.js → inspect-agent-BoSO51YC.js} +12 -12
  143. package/server/inspect-agent-BykeOH4a.js +2 -0
  144. package/server/{internal-token-DzK385vD.js → internal-token-AvXePaQT.js} +2 -2
  145. package/server/{internal-token-Ias7N8Kg.js → internal-token-Djkj-yqK.js} +1 -1
  146. package/server/{io-B00PBNku.js → io-mxOWMZ7I.js} +6 -6
  147. package/server/{issue-closed-BehTG1be.js → issue-closed-Bj_bCv_0.js} +7 -7
  148. package/server/{issue-lifecycle-BqSuQvbn.js → issue-lifecycle-A5YIpDZE.js} +1 -1
  149. package/server/{issue-lifecycle-Birk-ifu.js → issue-lifecycle-BXUqaHzF.js} +32 -28
  150. package/server/{issue-service-singleton-C6ZduvuY.js → issue-service-singleton-BPNEXczv.js} +11 -11
  151. package/server/{issue-service-singleton-B2wXiIlw.js → issue-service-singleton-CcaHjKPR.js} +1 -1
  152. package/server/{issues-DQ5-LatB.js → issues-AX-YBeAQ.js} +2 -2
  153. package/server/{jsonl-parser-BDpnGFCl.js → jsonl-parser-CgYWQ20q.js} +7 -3
  154. package/server/kimi-code-BYbme0aV.js +579 -0
  155. package/server/kimi-code-D_Ppt82c.js +3 -0
  156. package/server/kimi-parser-B-JBg3Pv.js +147 -0
  157. package/server/{label-cleanup-Dwnky8FG.js → label-cleanup-sXUlgdM0.js} +3 -3
  158. package/server/{lifecycle-B4Xdb4cY.js → lifecycle-D2X3al0D.js} +2 -2
  159. package/server/{lifecycle-B3s4sM1G.js → lifecycle-DjlljAZ1.js} +6 -6
  160. package/server/{lifecycle-io-CzTHEooc.js → lifecycle-io-C5nVk55o.js} +1 -1
  161. package/server/{lifecycle-io-DCo6s6ks.js → lifecycle-io-NPm1YtIG.js} +5 -5
  162. package/server/{linear-client-CnbtHiic.js → linear-client--luYwCZg.js} +1 -1
  163. package/server/{linear-client-9uq7fhiV.js → linear-client-B8pLegW1.js} +3 -3
  164. package/server/{linear-mcp-auth-BxUOzswy.js → linear-mcp-auth-BQVWV0I3.js} +6 -6
  165. package/server/{linear-mcp-auth-D46fBCLf.js → linear-mcp-auth-Dx81Zl4G.js} +1 -1
  166. package/server/memory-fts-worker.js +1 -1
  167. package/server/{merge-DiW9RdSB.js → merge-Bx5Bh9pi.js} +3 -3
  168. package/server/{merge-sr8Nrnmi.js → merge-Dqmh_zja.js} +1 -1
  169. package/server/{merge-agent-BLUgRsz3.js → merge-agent-DP9AUY29.js} +33 -33
  170. package/server/{merge-agent-DQTXZk8z.js → merge-agent-DWd0KfiS.js} +1 -1
  171. package/server/{merge-batch-Cp_j9BGk.js → merge-batch-BdmvTEAC.js} +1 -1
  172. package/server/{merge-completeness-BLbB5-6n.js → merge-completeness-BfRwFjRx.js} +1 -1
  173. package/server/{merge-completeness-B46KqhtY.js → merge-completeness-C1FevcDT.js} +4 -4
  174. package/server/merge-ops-B98tKc1e.js +2 -0
  175. package/server/merge-rebase-BLykMwPO.js +2 -0
  176. package/server/{merge-rebase-DIkBjgwq.js → merge-rebase-BX1xKsrE.js} +2 -2
  177. package/server/{merge-set-CBgHfwM0.js → merge-set-DsLjjLEV.js} +4 -4
  178. package/server/{merge-set-DeUxFsC3.js → merge-set-H6epHOsw.js} +1 -1
  179. package/server/{merge-sync-kr4vqyjM.js → merge-sync-BEdfsQV4.js} +2 -2
  180. package/server/{merge-sync-CpGmk6Ch.js → merge-sync-BebcWWGA.js} +1 -1
  181. package/server/{merge-train-Dmrcus12.js → merge-train-D1I0lNOT.js} +4 -4
  182. package/server/{merge-train-deps-D_uGX91G.js → merge-train-deps-D_-C0Pk2.js} +4 -4
  183. package/server/{merge-verification-NvaAd8CZ.js → merge-verification-DN1Ov9bU.js} +6 -6
  184. package/server/{merged-docker-cleanup-worker-Y1R06TEl.js → merged-docker-cleanup-worker-CfXSr2pA.js} +4 -4
  185. package/server/{merged-docker-cleanup-worker-DH_hrGPI.js → merged-docker-cleanup-worker-ybsPyHjB.js} +1 -1
  186. package/server/{multipart-parser-R-oC8dQg.js → multipart-parser-CL5QG8iv.js} +2 -2
  187. package/server/{no-resume-mode-BgD0JUmM.js → no-resume-mode-DUR7Hi98.js} +1 -1
  188. package/server/node_modules/.package-lock.json +7 -7
  189. package/server/node_modules/brace-expansion/README.md +23 -1
  190. package/server/node_modules/brace-expansion/index.js +206 -85
  191. package/server/node_modules/brace-expansion/package.json +1 -1
  192. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +34 -28
  193. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  194. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  195. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  196. package/server/node_modules/msgpackr/dist/index.js +34 -28
  197. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  198. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  199. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  200. package/server/node_modules/msgpackr/dist/node.cjs +36 -29
  201. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  202. package/server/node_modules/msgpackr/dist/test.js +63 -32
  203. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  204. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +34 -28
  205. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  206. package/server/node_modules/msgpackr/package.json +1 -1
  207. package/server/node_modules/msgpackr/unpack.js +34 -28
  208. package/server/{orphan-proposed-reconciler-DcgTPPFY.js → orphan-proposed-reconciler-CEW1maPl.js} +1 -1
  209. package/server/{orphan-proposed-reconciler-B6vJHxtX.js → orphan-proposed-reconciler-DfqHZftT.js} +23 -22
  210. package/server/package-lock.json +8 -8
  211. package/server/package.json +1 -1
  212. package/server/{pan-dir-DMzF5wne.js → pan-dir-DhgKfO86.js} +21 -6
  213. package/server/{paths-sJBSb7Ul.js → paths-BUuhi6jM.js} +17 -17
  214. package/server/{pending-lifecycle-claim-DilzGfgk.js → pending-lifecycle-claim-DJlA1rTR.js} +2 -2
  215. package/server/{persistent-logger-H_VjuOu7.js → persistent-logger-s8cbpFNV.js} +2 -2
  216. package/server/{pickup-DWhqzliO.js → pickup-2AxtB3dW.js} +1 -1
  217. package/server/{pipeline-membership-C88VBnhJ.js → pipeline-membership-2_okL5bm.js} +1 -1
  218. package/server/{pipeline-membership-D9SBvItj.js → pipeline-membership-Dqv6_0ig.js} +1 -1
  219. package/server/{pipeline-membership-gather-4eR-7Tqy.js → pipeline-membership-gather-4F1-tXKI.js} +1 -1
  220. package/server/{pipeline-membership-gather-CeVGnNJ2.js → pipeline-membership-gather-CtJ_7aGf.js} +149 -17
  221. package/server/{pipeline-notifier-DT6xLFao.js → pipeline-notifier-CO9rxJgB.js} +1 -1
  222. package/server/{pipeline-notifier-D0ALV6Nw.js → pipeline-notifier-DDfVBJhJ.js} +2 -2
  223. package/server/{post-merge-lifecycle-worker-8HIeS_J6.js → post-merge-lifecycle-worker-DmSOkeNp.js} +3 -3
  224. package/server/{project-pipelines-9SKt2bEc.js → project-pipelines-72WE8GVK.js} +2 -2
  225. package/server/{project-repos-B5pIphKg.js → project-repos-BAqDwtvi.js} +16 -11
  226. package/server/project-repos-Df90Zw7Y.js +3 -0
  227. package/server/projects-WqMWCdpa.js +3 -0
  228. package/server/{prompts-CgzMBvQF.js → prompts-XkL10m8M.js} +2 -2
  229. package/server/{providers-BJQSnAAp.js → providers-ClGPGkQ8.js} +15 -12
  230. package/server/providers-DFUOed8u.js +3 -0
  231. package/server/public/assets/{chunk-BO2N2NFS-D_pGACYN.js → chunk-BO2N2NFS-CeQUdPxr.js} +4 -4
  232. package/server/public/assets/{diagram-OG6HWLK6-BO6fe3hH.js → diagram-OG6HWLK6-B7rgk4yT.js} +1 -1
  233. package/server/public/assets/{dist-5zingMiA.js → dist-2RPazfXY.js} +3 -3
  234. package/server/public/assets/{dist-CVxhbI2E.js → dist-B9NInrVZ.js} +1 -1
  235. package/server/public/assets/{ganttDiagram-6RSMTGT7-Bgj4A7kp.js → ganttDiagram-6RSMTGT7-Bxp0gV14.js} +1 -1
  236. package/server/public/assets/{highlighted-body-OFNGDK62-DNPK7_cm.js → highlighted-body-OFNGDK62-CzoRTVlC.js} +1 -1
  237. package/server/public/assets/index-Cml-kHo6.css +1 -0
  238. package/server/public/assets/{index-DEpY-D1O.js → index-CvN8cEgs.js} +216 -215
  239. package/server/public/assets/{linear-BB0jQT16.js → linear-CFEEl3ND.js} +1 -1
  240. package/server/public/assets/mermaid-GHXKKRXX-CpV7nCBM.js +1 -0
  241. package/server/public/assets/{pieDiagram-4H26LBE5-DeGIzzpZ.js → pieDiagram-4H26LBE5-BeR8R0cr.js} +1 -1
  242. package/server/public/assets/{prod-XBLvikex.js → prod-CYjzjCrn.js} +4 -4
  243. package/server/public/assets/{quadrantDiagram-W4KKPZXB-BV9SLeWz.js → quadrantDiagram-W4KKPZXB-BpcTkFuW.js} +1 -1
  244. package/server/public/assets/{sankeyDiagram-5OEKKPKP-Dwja0gj8.js → sankeyDiagram-5OEKKPKP-Bx2ETEV5.js} +1 -1
  245. package/server/public/assets/{xychartDiagram-2RQKCTM6-DCB4qvfw.js → xychartDiagram-2RQKCTM6-BKgEAFaj.js} +1 -1
  246. package/server/public/index.html +2 -2
  247. package/server/{pull-requests-7BgLDsIo.js → pull-requests-B-KrUph5.js} +3 -3
  248. package/server/{pull-requests-Dq0y6IxE.js → pull-requests-DK5k92B4.js} +1 -1
  249. package/server/{queries-C-MUZaIy.js → queries-DVpl1vsU.js} +1212 -193
  250. package/server/{rally-CPysR4T_.js → rally-DbE561hD.js} +3 -3
  251. package/server/rally-O_st_X7n.js +3 -0
  252. package/server/{rally-api-8Ptlp2os.js → rally-api-CZLeEd2C.js} +2 -2
  253. package/server/{rally-api-CgosKdKL.js → rally-api-DaHtn5QN.js} +1 -1
  254. package/server/{rally-client-CCX0hADj.js → rally-client-C-MAl8ur.js} +1 -1
  255. package/server/{rally-client-iYMHWQD7.js → rally-client-Ch3zRsBX.js} +5 -5
  256. package/server/{reap-terminal-sessions-Qf-9LVQc.js → reap-terminal-sessions-C1n0ALRb.js} +2 -2
  257. package/server/{reap-terminal-sessions-4Xg9NGA8.js → reap-terminal-sessions-DegFS2p1.js} +2 -2
  258. package/server/{rebuild-stack-CMdgaylx.js → rebuild-stack-C9Li44A3.js} +20 -10
  259. package/server/{rebuild-stack-DqcOVmJO.js → rebuild-stack-qC0jCNm6.js} +2 -2
  260. package/server/{reconstruct-cache-CMZJ_Vjq.js → reconstruct-cache-BHyiAg02.js} +7 -7
  261. package/server/record-aVzu-LGm.js +3 -0
  262. package/server/record-update-CZh46a2f.js +617 -0
  263. package/server/{record-update-DhI7eySG.js → record-update-DtdJK2Iw.js} +1 -1
  264. package/server/recovery-trip-CSNWSLDn.js +77 -0
  265. package/server/recovery-trip-_16hFKv4.js +3 -0
  266. package/server/{release-engine-B2X9AfFC.js → release-engine-Be5MX5GP.js} +5 -5
  267. package/server/{release-set-G4XKyQ8K.js → release-set-DJv_O6PS.js} +3 -3
  268. package/server/{remote-BXarMvqf.js → remote-BMM3uH2J.js} +3 -3
  269. package/server/{remote-CUhyqjXk.js → remote-C0xVTHA5.js} +3 -3
  270. package/server/{remote-agents-CLZB3Coc.js → remote-agents-BIIoc5pD.js} +1 -1
  271. package/server/{remote-agents-Bba-MgSA.js → remote-agents-EUiZ26bj.js} +7 -7
  272. package/server/{remote-completion-CwAp79EC.js → remote-completion-BS4tJUn8.js} +13 -13
  273. package/server/resolver-BvHd6RE4.js +163 -0
  274. package/server/resume-9thEqAQR.js +3 -0
  275. package/server/{review-agent--pOptAEV.js → review-agent-BHGaBoBu.js} +29 -29
  276. package/server/{review-agent-BTCNkq2h.js → review-agent-CD3RQ-tc.js} +1 -1
  277. package/server/{review-artifacts-BNmw8dWE.js → review-artifacts-DyhajWso.js} +6 -6
  278. package/server/{review-context-DFxYOOJW.js → review-context-B-dlsPnx.js} +9 -9
  279. package/server/{review-convoy-liveness-BgU_1jJf.js → review-convoy-liveness-D7M-s_nS.js} +2 -2
  280. package/server/{review-status-Dma9SFaN.js → review-status-B6wYcOtP.js} +1 -1
  281. package/server/{review-status-CGvlA4o_.js → review-status-CKLk5aZ-.js} +308 -58
  282. package/server/{review-status-emit-DURrmGYX.js → review-status-emit-CJ7UmEVU.js} +3 -3
  283. package/server/{review-status-enrichment-8NiNXi5W.js → review-status-enrichment-DJRgGX7-.js} +3 -3
  284. package/server/review-status-limits-4EJDCGHO.js +7 -0
  285. package/server/{review-status-source-DIk1JSow.js → review-status-source-7nU3Z2wL.js} +1 -1
  286. package/server/{review-status-source-BLx_1siH.js → review-status-source-BsDYGfyv.js} +1 -1
  287. package/server/{review-status-sync-muT-EBp2.js → review-status-sync-BLssMTEW.js} +1 -1
  288. package/server/{review-status-sync-0GxOqeqF.js → review-status-sync-BxBeHRde.js} +35 -11
  289. package/server/{review-verdict-feedback-xJNdqBnX.js → review-verdict-feedback-5jWuzgpc.js} +90 -16
  290. package/server/{review-verdict-feedback-HwF6ODFy.js → review-verdict-feedback-HRY9P4bN.js} +1 -1
  291. package/server/{rollup-BQaol5TX.js → rollup-BGIrCEkU.js} +79 -44
  292. package/server/rollup-CZB4UL9q.js +3 -0
  293. package/server/{scanner-C-D2cFdX.js → scanner-DydjXPrz.js} +16 -9
  294. package/server/search-DdtIjAiu.js +395 -0
  295. package/server/{sequence-io-Bmf1EZM5.js → sequence-io-Fw-cLyDs.js} +4 -4
  296. package/server/{sequencer-agent-CigMyKh2.js → sequencer-agent-BcpGMt5x.js} +15 -10
  297. package/server/server.js +1258 -438
  298. package/server/{service-CD0DvFvD.js → service-BFFkGsG4.js} +58 -58
  299. package/server/{session-fork-B6cQ5eya.js → session-fork-D0V-3e5P.js} +2 -2
  300. package/server/{session-history-3ON_IJjm.js → session-history-Bta5l9jY.js} +5 -5
  301. package/server/{settings-PilbFZAM.js → settings-Ce8B1daF.js} +2 -2
  302. package/server/{settings-VN0qOh4U.js → settings-E3FnEIUx.js} +3 -3
  303. package/server/settings-eOOJpxi_.js +2 -0
  304. package/server/{shadow-engineering-DXvx77oE.js → shadow-engineering-Mt9nJO4i.js} +3 -3
  305. package/server/{shadow-state-CZBp7pwq.js → shadow-state-Bzj_AZCV.js} +1 -1
  306. package/server/{shadow-state-BBk_zacw.js → shadow-state-DrkhoVSx.js} +2 -2
  307. package/server/{shadow-utils-DdZ05AJS.js → shadow-utils-H1GfqP06.js} +2 -2
  308. package/server/{ship-log-7kJfjUX2.js → ship-log-CFUIo4PR.js} +1 -1
  309. package/server/{smart-compaction-8fA5k5XN.js → smart-compaction-DSTq-Wua.js} +1 -1
  310. package/server/{smart-compaction-ByhL9cRS.js → smart-compaction-Hzp3KCJX.js} +7 -7
  311. package/server/{spawn-planning-session-vLUJoFjy.js → spawn-planning-session-C0uSA2SL.js} +2 -2
  312. package/server/{spawn-planning-session-pcF-YeFE.js → spawn-planning-session-DN4son31.js} +23 -21
  313. package/server/{specialist-completion-B07XjWD2.js → specialist-completion-Cf6tpIh1.js} +1 -1
  314. package/server/{specialist-context-DJ-zFyL3.js → specialist-context-DEUEkjIQ.js} +5 -5
  315. package/server/{specialist-handoff-logger-aKSxbIgD.js → specialist-handoff-logger-D_LmQDj3.js} +2 -2
  316. package/server/{specialist-logs-Dae-n52_.js → specialist-logs-7Ynue0R7.js} +3 -3
  317. package/server/{specialists-KR3pKulN.js → specialists-CQwBEGlD.js} +1 -1
  318. package/server/{specialists-6PWdtWcg.js → specialists-DAjPgYs_.js} +504 -238
  319. package/server/{specialists-DUiExaxb.js → specialists-Hr6iW9fU.js} +18 -18
  320. package/server/{specialists-Bz-wFT7R.js → specialists-MOoeB4A8.js} +1 -1
  321. package/server/specs-Dl88cbKY.js +3 -0
  322. package/server/{src-B948bGVR.js → src-BYdwL_n-.js} +668 -64
  323. package/server/{src-vHy2-oCv.js → src-DQnkPN2i.js} +3 -3
  324. package/server/{src-rac0Mepv.js → src-DhfDV0o4.js} +6 -6
  325. package/server/{stack-health-DqLTiEu4.js → stack-health-D_iKwNRg.js} +107 -16
  326. package/server/stack-health-deVSdDwn.js +3 -0
  327. package/server/{stale-task-claims-Cab_Fo_Z.js → stale-task-claims-BYJGqhLI.js} +5 -5
  328. package/server/{staleness-CGTZyp6V.js → staleness-CopBDKnA.js} +1 -1
  329. package/server/{staleness-C-a5rBxF.js → staleness-D8WeMUHd.js} +1 -1
  330. package/server/{state-home-722Dkx92.js → state-home-DjN8qduI.js} +24 -3
  331. package/server/{state-mapping-CybR81Uf.js → state-mapping-DlM7OYRW.js} +1 -1
  332. package/server/{state-migrate-2u8wIpoL.js → state-migrate-a2p1gtD7.js} +4 -4
  333. package/server/state-mirror-Cv_XgvT5.js +121 -0
  334. package/server/{stuck-remediation-r1TJu68G.js → stuck-remediation-CXJX_kki.js} +1 -1
  335. package/server/{stuck-remediation-CC6q3eqQ.js → stuck-remediation-CbCRSz1v.js} +31 -732
  336. package/server/{substrate-bug-weights-service-CzIyyWFT.js → substrate-bug-weights-service-DxpopNd9.js} +3 -3
  337. package/server/{summary-fork-BqgmgPDt.js → summary-fork-B61fjRJn.js} +2 -2
  338. package/server/{summary-fork-Df2WFijM.js → summary-fork-B9pszUJN.js} +91 -10
  339. package/server/supervisor/{injection-budget-Cg_KIb3o.js → injection-budget-Ar7hgyJq.js} +1 -1
  340. package/server/supervisor/pty-supervisor.js +12 -3
  341. package/server/supervisor/{pty-token-BbjwEUUM.js → pty-token-CXCFU0Z8.js} +1 -1
  342. package/server/{supervisor-BxqSpjcN.js → supervisor-BvnxbuuF.js} +6 -4
  343. package/server/supervisor-C69kpqvd.js +2 -0
  344. package/server/{swarm-readiness-DfFxa9-n.js → swarm-readiness-vTw1kqGa.js} +3 -3
  345. package/server/{system-prerequisites-ICLSkhhZ.js → system-prerequisites-LLzTEqsK.js} +3 -3
  346. package/server/{teardown-workspace-DRdi_CPa.js → teardown-workspace-CqKKVJr1.js} +15 -15
  347. package/server/{test-agent-queue-A_-p-i0I.js → test-agent-queue-CWMq7oyG.js} +8 -7
  348. package/server/{test-verdict-BHgTAwIG.js → test-verdict-NdtgRBuA.js} +1 -1
  349. package/server/{test-verdict-C4i9aqEP.js → test-verdict-diIWE6hz.js} +15 -3
  350. package/server/{tldr-daemon-CvWXBhX1.js → tldr-daemon-B1Jhrtc8.js} +1 -1
  351. package/server/{tldr-daemon-wvsU6bKv.js → tldr-daemon-Bpls1CJB.js} +2 -2
  352. package/server/{tmux-CfDHob9M.js → tmux-CImZaX4q.js} +10 -16
  353. package/server/tmux-Cjpx8L8u.js +4 -0
  354. package/server/{token-DrxwytsZ.js → token-Bgpjo3tE.js} +2 -2
  355. package/server/token-util-BsjFll-k.js +3 -0
  356. package/server/{token-util-B48BlCba.js → token-util-BymbpkJp.js} +1 -1
  357. package/server/{tracker-config-BcPMElRB.js → tracker-config-4DaKVTfc.js} +2 -2
  358. package/server/{tracker-utils-CJ6BHjcD.js → tracker-utils-BDeAXC-q.js} +2 -2
  359. package/server/{traefik-connect-DZ6nMYMj.js → traefik-connect-CC5FyxYj.js} +1 -1
  360. package/server/{tunnel-Bp-dRHZz.js → tunnel-CDWkeceJ.js} +1 -1
  361. package/server/{tunnel-DUbUPElU.js → tunnel-CPf5M-Pc.js} +3 -3
  362. package/server/{typed-errors-DyjseiB6.js → typed-errors-9K7Dq_Vn.js} +1 -1
  363. package/server/{typed-errors-CKeoDdU3.js → typed-errors-DrS5fb5z.js} +1 -1
  364. package/server/{types-Cm5ASJbq.js → types-DzlUKiuf.js} +4 -3
  365. package/server/{types-Di8wdakq.js → types-kI9ik8XO.js} +1 -1
  366. package/server/{uat-promote-verification-CoJuh7XO.js → uat-promote-verification-c_pxoxEc.js} +5 -5
  367. package/server/{uat-train-4Q0k06CQ.js → uat-train-CWGxBdJO.js} +0 -0
  368. package/server/{uat-train-Dewoatps.js → uat-train-CfCYd2ve.js} +1 -1
  369. package/server/{validate-B0C8p66t.js → validate-f3ItVCfm.js} +3 -3
  370. package/server/{validation-hVOwQk8T.js → validation-5G_wQtea.js} +1 -1
  371. package/server/{validation-B_kIRfNe.js → validation-7tSiCM82.js} +4 -4
  372. package/server/{verification-artifact-BxlxTiYK.js → verification-artifact-9h9dH8uX.js} +1 -1
  373. package/server/{verification-artifact-D70AtckY.js → verification-artifact-C_4WJnf6.js} +1 -1
  374. package/server/{verification-runner-Bc3cJvpC.js → verification-runner-BV5F6wrA.js} +1 -1
  375. package/server/{verification-runner-KZTz6u72.js → verification-runner-D58KmBhK.js} +18 -38
  376. package/server/{vtt-parser-CE_i3Bcw.js → vtt-parser-2iT9OHa9.js} +1 -1
  377. package/server/{work-agent-prompt-ByrPAzOy.js → work-agent-prompt-D03s4DD1.js} +9 -9
  378. package/server/{workflows-D0vP1WrK.js → workflows-BMBwLYPV.js} +281 -98
  379. package/server/workflows-BOmWGpIh.js +2 -0
  380. package/server/{workspace-DQkRPLlQ.js → workspace-BgflNCH0.js} +3 -3
  381. package/server/{workspace-COWvdibH.js → workspace-Cn9ywfSW.js} +1 -1
  382. package/server/{workspace-anchor-drift-pwz23TI1.js → workspace-anchor-drift-C8Fy3shi.js} +1 -1
  383. package/server/{workspace-anchor-drift-DXYIAHzr.js → workspace-anchor-drift-CMiNncwq.js} +5 -8
  384. package/server/{workspace-config-BdZM4PvZ.js → workspace-config-aUc2nIz6.js} +1 -1
  385. package/server/{workspace-manager-BPgTrG66.js → workspace-manager-Bem7ZBs9.js} +521 -292
  386. package/server/workspace-manager-C0CpNh3t.js +3 -0
  387. package/server/{workspace-metadata-CdjzAP8x.js → workspace-metadata-C5iSlPRo.js} +1 -1
  388. package/server/{workspace-metadata-DkO_iTLo.js → workspace-metadata-UKmTYmDQ.js} +2 -2
  389. package/server/{workspaces-CRBJikLp.js → workspaces-DqxgwDZ8.js} +143 -113
  390. package/sync-sources/hooks/notification-hook +12 -1
  391. package/sync-sources/hooks/pan-hook-lib.sh +226 -0
  392. package/sync-sources/hooks/session-start-hook +31 -4
  393. package/sync-sources/hooks/work-agent-stop-hook +23 -1
  394. package/sync-sources/skills/pan-memory/SKILL.md +19 -3
  395. package/sync-sources/skills/pan-projects/SKILL.md +9 -0
  396. package/sync-sources/skills/pan-restart/SKILL.md +26 -7
  397. package/sync-sources/skills/pan-workspace/SKILL.md +77 -0
  398. package/server/activity-logger-CMthG6Vd.js +0 -3
  399. package/server/agent-state-CYXJVG72.js +0 -3
  400. package/server/agents-ePFVoZbu.js +0 -3
  401. package/server/archive-planning-B2XplFzT.js +0 -2
  402. package/server/cli-CjOCSnfj.js +0 -3
  403. package/server/deacon-swarm-B1XkIvfr.js +0 -2
  404. package/server/delivery-BX9HR4wQ.js +0 -3
  405. package/server/dist-B3YPQa5A.js +0 -3
  406. package/server/event-store-5UKzh9Jf.js +0 -3
  407. package/server/forge-B5o319qI.js +0 -3
  408. package/server/fts-db-IVc4_M3f.js +0 -146
  409. package/server/hume-VUCNbTgn.js +0 -3
  410. package/server/inspect-agent-CUwVmr2h.js +0 -2
  411. package/server/merge-ops-1abz6O_P.js +0 -2
  412. package/server/merge-rebase-CJJVAJuz.js +0 -2
  413. package/server/node_modules/brace-expansion/.tap/coverage/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -757
  414. package/server/node_modules/brace-expansion/.tap/processinfo/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -719
  415. package/server/node_modules/brace-expansion/ADVISORY-CVE-2026-14257.md +0 -107
  416. package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts +0 -8
  417. package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +0 -1
  418. package/server/node_modules/brace-expansion/dist/commonjs/index.js +0 -263
  419. package/server/node_modules/brace-expansion/dist/commonjs/index.js.map +0 -1
  420. package/server/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
  421. package/server/node_modules/brace-expansion/dist/esm/index.d.ts +0 -8
  422. package/server/node_modules/brace-expansion/dist/esm/index.d.ts.map +0 -1
  423. package/server/node_modules/brace-expansion/dist/esm/index.js +0 -259
  424. package/server/node_modules/brace-expansion/dist/esm/index.js.map +0 -1
  425. package/server/node_modules/brace-expansion/dist/esm/package.json +0 -3
  426. package/server/project-repos-DPjOdfPa.js +0 -3
  427. package/server/projects-_n3Zui6K.js +0 -3
  428. package/server/providers-BI1mOBQ4.js +0 -3
  429. package/server/public/assets/index-Ddkcz3WT.css +0 -1
  430. package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +0 -1
  431. package/server/rally-D_VW4bJv.js +0 -3
  432. package/server/record-BTwWhtBb.js +0 -3
  433. package/server/record-update-DaOKS7Wb.js +0 -277
  434. package/server/recovery-trip-DDH-02ng.js +0 -44
  435. package/server/resume-mOREjlYu.js +0 -3
  436. package/server/rollup-BR4t_wck.js +0 -3
  437. package/server/settings-CVmWiJ-r.js +0 -2
  438. package/server/specs--enInima.js +0 -3
  439. package/server/stack-health-BikqHSjn.js +0 -3
  440. package/server/supervisor-B4anCCSm.js +0 -2
  441. package/server/tmux-Ctk6RV5l.js +0 -3
  442. package/server/token-util-D411CAq9.js +0 -3
  443. package/server/workflows-DtDX08ed.js +0 -2
  444. package/server/workspace-manager-C1F3XsnS.js +0 -3
@@ -1,49 +1,49 @@
1
- import { An as extractTeamPrefix, Er as GitError, Fr as init_errors, Gn as init_projects, Pn as findProjectByTeamSync, Tr as FsError, Yn as listProjectsSync, ar as resolveProjectFromIssueSync, br as resolveIssueIdSync, ci as getOverdeckHome, gn as isStatePlaneOnlyStatus, gr as init_issue_id, hn as init_state_plane, hr as extractPrefixSync, li as init_paths, mr as extractNumberSync, t as init_config_yaml, ti as encodeClaudeProjectDir, tt as resolveModel, vr as parseIssueIdSync, zn as getProjectSync } from "./config-yaml-CxdwhAIA.js";
2
- import { At as jsonResponse, Ot as httpHandler, ct as spawnPanCli, n as _serverManagedMerges, nt as isInternalAgentRequest, ot as getWorkAgentLifecycleStateSync, rt as resolveRequestedStartedBy, wt as getHeaderFromMap, xt as rejectUnsafeDashboardMutationRequest, yt as rejectUnauthorizedDashboardRequest } from "./specialists-6PWdtWcg.js";
3
- import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
4
- import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BDQDRopn.js";
5
- import { H as sessionExists, M as listSessionNames, at as buildChildEnvWithoutTmuxSync, i as capturePane, ot as init_child_env, w as init_tmux } from "./tmux-CfDHob9M.js";
6
- import { a as init_event_store, n as getEventStore } from "./event-store-CrHcVC5_.js";
7
- import { C as setReviewStatusSync, _ as markWorkspaceStuck, b as setAutoMerge, d as getReviewStatusSync, h as loadReviewStatuses, p as init_review_status, r as clearFeedbackDeliveryStuck, x as setDeaconIgnored } from "./review-status-CGvlA4o_.js";
8
- import { _ as findPositionInQueueSync, a as EventStoreService, g as computeQueuePositionFromStatusSync, s as init_domain_services, v as init_queue_position } from "./issue-lifecycle-Birk-ifu.js";
9
- import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DpgYmYqR.js";
10
- import { Br as saveAgentRuntimeState, Qn as decideResumeGate, Rr as getAgentRuntimeStateSync, X as messageAgent, Zn as clearYieldForResumeSync, Zt as transitionIssueToInReview, _r as saveAgentStateSync, b as init_agents, er as getAgentResumeGateBlockReason, i as listRunningAgents, ir as init_agent_state, rr as getAgentStateSync, tr as getAgentState, ut as spawnAgent } from "./queries-C-MUZaIy.js";
11
- import { f as CostWriter, l as CostDoorLive } from "./service-CD0DvFvD.js";
12
- import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-BcPMElRB.js";
13
- import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
14
- import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DzK385vD.js";
15
- import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-D0ALV6Nw.js";
16
- import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, p as init_types } from "./types-Cm5ASJbq.js";
17
- import { a as getAllActiveQueues, c as init_merge_sync } from "./merge-sync-kr4vqyjM.js";
18
- import { l as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-B5pIphKg.js";
19
- import { O as findXBriefByIssue, _ as XBRIEF_INSPECTION_POLICIES, c as mergeRecordStatusOverrides, g as serializeXBriefDocument, j as readXBriefDocument, k as init_xbrief_index, o as init_io, r as findPlan, s as isPlanningComplete, u as readPlan, v as init_types$1 } from "./io-B00PBNku.js";
20
- import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-D0UEdLtk.js";
21
- import { E as normalizeModelOverrideSync, T as init_model_validation } from "./auto-spawn-consent-CQ9Bi9q6.js";
22
- import { f as init_config, m as loadConfigSync$1 } from "./config-BvLe652W.js";
23
- import { a as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot, r as composeProjectNameForWorkspace, s as init_stack_health } from "./stack-health-DqLTiEu4.js";
24
- import { a as criticalPath, l as init_dag, t as actionableDoc } from "./dag-BtkgLeqY.js";
25
- import { E as verifyAppCanMerge, M as withConcurrencyLimit, f as init_github_app, j as init_concurrency, m as isIntegrationPermissionError } from "./github-app-CmNk0zLU.js";
26
- import { a as readEventsFromLineSync, i as init_events, l as init_wal, o as readEventsSync, r as getLastEventMetadataSync, t as appendCostEventSync } from "./events-BNrvchBg.js";
27
- import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-BPgTrG66.js";
28
- import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-BUOIlfgD.js";
29
- import { a as init_jsonl_parser, t as getActiveSessionModelSync } from "./jsonl-parser-BDpnGFCl.js";
30
- import { i as findWorkspacePath } from "./archive-planning-BwhxeP7C.js";
31
- import { n as init_merge_verification, t as handlePostRebaseVerificationDeferral } from "./merge-verification-NvaAd8CZ.js";
32
- import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-E4nt7ZeS.js";
33
- import { r as init_in_flight_guard, t as createInFlightGuard } from "./in-flight-guard-D-sSkADM.js";
34
- import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-DkO_iTLo.js";
35
- import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-8NiNXi5W.js";
36
- import { n as generateDailySummary, r as init_cli } from "./cli-Cte9ZFGn.js";
37
- import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-DFxYOOJW.js";
38
- import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-wvsU6bKv.js";
39
- 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-BLUgRsz3.js";
40
- import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-DiW9RdSB.js";
41
- import { t as rebaseFeatureBranch } from "./merge-rebase-DIkBjgwq.js";
42
- import { n as init_release_set, t as getReleaseSetSync } from "./release-set-G4XKyQ8K.js";
43
- import { r as runVerificationForIssue } from "./verification-runner-KZTz6u72.js";
44
- import { n as init_durable_review_pipeline, r as registerDurableReviewPipelineHandler } from "./durable-review-pipeline-Cibps-Rg.js";
45
- import { t as teardownWorkspace } from "./teardown-workspace-DRdi_CPa.js";
46
- import { t as init_rebuild_stack } from "./rebuild-stack-CMdgaylx.js";
1
+ import { Ar as FsError, Fn as parseIssueIdSync, Ln as resolveIssueIdSync, Mn as extractPrefixSync, Nn as init_issue_id, Sn as resolveProjectFromIssueSync, Vr as init_errors, Zt as findProjectByTeamSync, cn as init_projects, dr as resolveModel, fn as listProjectsSync, hi as init_paths, jn as extractNumberSync, jr as GitError, jt as isOverdeckOwnedOnlyStatus, kt as init_state_plane, mi as getOverdeckHome, nn as getProjectSync, qt as extractTeamPrefix, si as encodeClaudeProjectDir, t as init_config_yaml } from "./config-yaml-BSCqwmX0.js";
2
+ import { Dt as getHeaderFromMap, Nt as jsonResponse, St as rejectUnauthorizedDashboardRequest, at as resolveRequestedStartedBy, ct as getWorkAgentLifecycleStateSync, it as isInternalAgentRequest, jt as httpHandler, n as _serverManagedMerges, ut as spawnPanCli, wt as rejectUnsafeDashboardMutationRequest } from "./specialists-DAjPgYs_.js";
3
+ import { f as init_config, m as loadConfigSync$1 } from "./config-DnLJATZk.js";
4
+ import { a as emitActivityEntrySync, c as init_activity_logger } from "./activity-logger-Co5qljIj.js";
5
+ import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CTrmVqc_.js";
6
+ import { C as init_tmux, V as sessionExists, at as init_child_env, it as buildChildEnvWithoutTmuxSync, j as listSessionNames, r as capturePane } from "./tmux-CImZaX4q.js";
7
+ import { a as init_event_store, n as getEventStore } from "./event-store-D_AR-Y78.js";
8
+ import { C as setReviewStatusSync, _ as markWorkspaceStuck, b as setAutoMerge, d as getReviewStatusSync, h as loadReviewStatuses, p as init_review_status, r as clearFeedbackDeliveryStuck, x as setDeaconIgnored } from "./review-status-CKLk5aZ-.js";
9
+ import { _ as findPositionInQueueSync, a as EventStoreService, g as computeQueuePositionFromStatusSync, s as init_domain_services, v as init_queue_position } from "./issue-lifecycle-BXUqaHzF.js";
10
+ import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-CpFDrJUS.js";
11
+ import { Pr as saveAgentStateSync, Tt as spawnAgent, _r as getAgentResumeGateBlockReason, b as init_agents, br as getAgentStateSync, ft as messageAgent, hr as decideResumeGate, i as listRunningAgents, mr as clearYieldForResumeSync, pn as transitionIssueToInReview, ri as saveAgentRuntimeState, ti as getAgentRuntimeStateSync, vr as getAgentState, xr as init_agent_state } from "./queries-DVpl1vsU.js";
12
+ import { f as CostWriter, l as CostDoorLive } from "./service-BFFkGsG4.js";
13
+ import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-4DaKVTfc.js";
14
+ import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-BDeAXC-q.js";
15
+ import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-AvXePaQT.js";
16
+ import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-DDfVBJhJ.js";
17
+ import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, m as init_types } from "./types-DzlUKiuf.js";
18
+ import { a as getAllActiveQueues, c as init_merge_sync } from "./merge-sync-BEdfsQV4.js";
19
+ import { i as init_project_repos, u as resolveWorkspaceRepoRootsSync } from "./project-repos-BAqDwtvi.js";
20
+ import { A as init_xbrief_index, M as readXBriefDocument, _ as serializeXBriefDocument, c as isPlanningComplete, d as readPlan, k as findXBriefByIssue, l as mergeRecordStatusOverrides, r as findPlan, s as init_io, v as XBRIEF_INSPECTION_POLICIES, y as init_types$1 } from "./io-mxOWMZ7I.js";
21
+ import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-B4rxz-Wl.js";
22
+ import { D as normalizeModelOverrideSync, E as init_model_validation } from "./auto-spawn-consent-lXqRJ1Dr.js";
23
+ import { c as init_stack_health, n as collectDockerContainerLifecycleSnapshot, o as getWorkspaceStackHealth, r as composeProjectNameForWorkspace } from "./stack-health-D_iKwNRg.js";
24
+ import { a as criticalPath, l as init_dag, t as actionableDoc } from "./dag-BYiFMqpU.js";
25
+ import { E as verifyAppCanMerge, M as withConcurrencyLimit, f as init_github_app, j as init_concurrency, m as isIntegrationPermissionError } from "./github-app-D2QuvZ3j.js";
26
+ import { a as readEventsFromLineSync, i as init_events, l as init_wal, o as readEventsSync, r as getLastEventMetadataSync, t as appendCostEventSync } from "./events-zjDQozet.js";
27
+ import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-Bem7ZBs9.js";
28
+ import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-B-o68Z5B.js";
29
+ import { a as init_jsonl_parser, t as getActiveSessionModelSync } from "./jsonl-parser-CgYWQ20q.js";
30
+ import { i as findWorkspacePath } from "./archive-planning-Cq7cyinS.js";
31
+ import { n as init_merge_verification, t as handlePostRebaseVerificationDeferral } from "./merge-verification-DN1Ov9bU.js";
32
+ import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-WfVqgalf.js";
33
+ import { r as init_in_flight_guard, t as createInFlightGuard } from "./in-flight-guard-CG2Eo-rr.js";
34
+ import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-UKmTYmDQ.js";
35
+ import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-DJRgGX7-.js";
36
+ import { n as generateDailySummary, r as init_cli } from "./cli-C9S84iTy.js";
37
+ import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-B-dlsPnx.js";
38
+ import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-Bpls1CJB.js";
39
+ 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-DP9AUY29.js";
40
+ import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-Bx5Bh9pi.js";
41
+ import { t as rebaseFeatureBranch } from "./merge-rebase-BX1xKsrE.js";
42
+ import { n as init_release_set, t as getReleaseSetSync } from "./release-set-DJv_O6PS.js";
43
+ import { r as runVerificationForIssue } from "./verification-runner-D58KmBhK.js";
44
+ import { n as init_durable_review_pipeline, r as registerDurableReviewPipelineHandler } from "./durable-review-pipeline-Chq0lzjL.js";
45
+ import { t as teardownWorkspace } from "./teardown-workspace-CqKKVJr1.js";
46
+ import { t as init_rebuild_stack } from "./rebuild-stack-C9Li44A3.js";
47
47
  import { basename, dirname, join, resolve, sep } from "node:path";
48
48
  import { Effect, Layer, Option, Stream } from "effect";
49
49
  import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, writeFileSync } from "fs";
@@ -102,7 +102,7 @@ async function captureInterestedAgent(state, agentId) {
102
102
  try {
103
103
  const remoteState = await readFile(join(homedir$1(), ".overdeck", "agents", agentId, "remote-state.json"), "utf-8").then((text) => JSON.parse(text)).catch(() => null);
104
104
  if (remoteState?.location === "remote" && remoteState?.vmName) {
105
- const { getRemoteAgentOutput } = await import("./remote-agents-CLZB3Coc.js");
105
+ const { getRemoteAgentOutput } = await import("./remote-agents-BIIoc5pD.js");
106
106
  stdout = await getRemoteAgentOutput(agentId, remoteState.vmName, 50);
107
107
  } else stdout = await Effect.runPromise(capturePane(agentId, 50));
108
108
  } catch {
@@ -936,7 +936,7 @@ const postWorkspaceContainerActionRoute = HttpRouter.add("POST", "/api/workspace
936
936
  }
937
937
  if (!workspacePath) return jsonResponse({ error: `Workspace not found for ${issueId}` }, { status: 404 });
938
938
  if (!composeFile && ["start", "restart"].includes(action)) {
939
- const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-DMAbWqtQ.js"));
939
+ const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-BE3llBWP.js"));
940
940
  if (ensureDevcontainerSync({
941
941
  workspacePath,
942
942
  issueId
@@ -2701,6 +2701,36 @@ const internalEventsRoute = HttpRouter.add("POST", "/api/internal/events", httpH
2701
2701
  for (const event of events) yield* eventStore.append(event);
2702
2702
  return jsonResponse({ appended: events.length });
2703
2703
  })));
2704
+ /**
2705
+ * PAN-3092: at-most-once append for the Deacon child.
2706
+ *
2707
+ * The batching `/api/internal/events` path resolves before any HTTP request or
2708
+ * SQLite commit, so a caller there cannot know whether its event landed. This
2709
+ * route commits (or detects the duplicate) inside one transaction and answers
2710
+ * with the settled outcome, which is what an at-most-once operator warning
2711
+ * needs — the child awaits this rather than treating a local enqueue as
2712
+ * durability.
2713
+ */
2714
+ const internalEventsAppendOnceRoute = HttpRouter.add("POST", "/api/internal/events/append-once", httpHandler(Effect.gen(function* () {
2715
+ const request = yield* HttpServerRequest.HttpServerRequest;
2716
+ const auth = validateInternalEventsHeaders(request.headers);
2717
+ if (!auth.ok) return jsonResponse({ error: auth.error }, { status: auth.status });
2718
+ const text = yield* request.text;
2719
+ let parsed = {};
2720
+ try {
2721
+ parsed = text ? JSON.parse(text) : {};
2722
+ } catch {
2723
+ return jsonResponse({ error: "invalid json" }, { status: 400 });
2724
+ }
2725
+ const body = parsed;
2726
+ const event = parseInternalEventsBody({ events: [body.event] })[0];
2727
+ if (!event || typeof body.idempotencyKey !== "string" || body.idempotencyKey.length === 0) return jsonResponse({ error: "event and idempotencyKey are required" }, { status: 400 });
2728
+ try {
2729
+ return jsonResponse(getEventStore().appendOnce(event, body.idempotencyKey));
2730
+ } catch (err) {
2731
+ return jsonResponse({ error: err instanceof Error ? err.message : "append failed" }, { status: 500 });
2732
+ }
2733
+ })));
2704
2734
  const internalEventsLatestRoute = HttpRouter.add("GET", "/api/internal/events/latest", httpHandler(Effect.gen(function* () {
2705
2735
  const auth = validateInternalEventsHeaders((yield* HttpServerRequest.HttpServerRequest).headers);
2706
2736
  if (!auth.ok) return jsonResponse({ error: auth.error }, { status: auth.status });
@@ -2769,7 +2799,7 @@ const internalEventsStreamRoute = HttpRouter.add("GET", "/api/internal/events/st
2769
2799
  "X-Accel-Buffering": "no"
2770
2800
  } });
2771
2801
  })));
2772
- const internalEventsRouteLayer = Layer.mergeAll(internalEventsRoute, internalEventsLatestRoute, internalEventsStreamRoute);
2802
+ const internalEventsRouteLayer = Layer.mergeAll(internalEventsRoute, internalEventsAppendOnceRoute, internalEventsLatestRoute, internalEventsStreamRoute);
2773
2803
  //#endregion
2774
2804
  //#region routes/workspaces/merge-strike.ts
2775
2805
  init_agents();
@@ -2790,9 +2820,9 @@ function mergeVerificationOptions(request) {
2790
2820
  */
2791
2821
  async function recordCiGreenVerificationVerdict(issueId, workspacePath) {
2792
2822
  try {
2793
- const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-Xg4PFN45.js");
2823
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-C31x1lpE.js");
2794
2824
  const verifiedAnchor = await snapshotWorkspaceHeadsPromise(issueId, workspacePath).catch(() => void 0);
2795
- const { setReviewStatusSync } = await import("./review-status-Dma9SFaN.js");
2825
+ const { setReviewStatusSync } = await import("./review-status-B6wYcOtP.js");
2796
2826
  setReviewStatusSync(issueId, {
2797
2827
  verificationStatus: "passed",
2798
2828
  verificationNotes: "merge-verify: CI green on the merged tip (PAN-2487 local-gate skip)",
@@ -2811,7 +2841,7 @@ async function recordCiGreenVerificationVerdict(issueId, workspacePath) {
2811
2841
  * the workspaces-route import cycle.
2812
2842
  */
2813
2843
  async function prepareWorkAgentForRebase(opts) {
2814
- const { appendShipLog } = await import("./ship-log-7kJfjUX2.js");
2844
+ const { appendShipLog } = await import("./ship-log-CFUIo4PR.js");
2815
2845
  opts.setStatus({
2816
2846
  mergeStep: "preparing-work-agent",
2817
2847
  mergeNotes: `Preparing work agent ${opts.agentId} to rebase ${opts.scopeNote}…`
@@ -3133,7 +3163,7 @@ init_tmux();
3133
3163
  init_domain_services();
3134
3164
  const execAsync$5 = promisify(exec);
3135
3165
  const execFileAsync$4 = promisify(execFile);
3136
- const shouldBlockApproveForDirtyStatus = (status) => status.trim() !== "" && !isStatePlaneOnlyStatus(status);
3166
+ const shouldBlockApproveForDirtyStatus = (status) => status.trim() !== "" && !isOverdeckOwnedOnlyStatus(status);
3137
3167
  /**
3138
3168
  * Check whether origin/branchName already contains origin/targetBranch.
3139
3169
  * If true, no rebase is needed — the branch is already up to date with target.
@@ -3196,7 +3226,7 @@ async function reconcileGitHubMergeStatus(issueId, status) {
3196
3226
  const prRef = parseGitHubPullRequestUrl(status.prUrl);
3197
3227
  if (!prRef) return false;
3198
3228
  try {
3199
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bmg4R9mv.js");
3229
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CpQSDlv8.js");
3200
3230
  if (!isGitHubAppConfigured()) return false;
3201
3231
  const prState = await Effect.runPromise(getPullRequestState(prRef.owner, prRef.repo, prRef.number));
3202
3232
  console.log(`[merge] reconcileGitHubMergeStatus: ${issueId} PR #${prRef.number} merged=${prState.merged} state=${prState.state}`);
@@ -3466,8 +3496,8 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3466
3496
  try {
3467
3497
  if (request.kind === "normal" && workspaceInfo.isRemote && workspaceInfo.vmName) {
3468
3498
  console.log(`[merge] Remote workspace detected for ${issueId}, using review artifact merge...`);
3469
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-DeUxFsC3.js");
3470
- const { getForgeAdapter } = await import("./forge-B5o319qI.js");
3499
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-H6epHOsw.js");
3500
+ const { getForgeAdapter } = await import("./forge-CdlCG9aS.js");
3471
3501
  const remotePrimaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
3472
3502
  const remoteTargetBranch = remotePrimaryRepo?.targetBranch || "main";
3473
3503
  const remoteForge = remotePrimaryRepo?.forge || "github";
@@ -3503,7 +3533,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3503
3533
  ...mergeCompletionStatus(request)
3504
3534
  });
3505
3535
  completePendingOperation(issueId, null);
3506
- const { postMergeLifecycle } = await import("./merge-agent-DQTXZk8z.js");
3536
+ const { postMergeLifecycle } = await import("./merge-agent-DWd0KfiS.js");
3507
3537
  await postMergeLifecycle(issueId, projectPath);
3508
3538
  return {
3509
3539
  success: true,
@@ -3548,11 +3578,11 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3548
3578
  }
3549
3579
  if (isPolyrepo && projectConfig?.workspace?.repos) {
3550
3580
  console.log(`[merge] Polyrepo detected for ${issueId}, coordinating merge set...`);
3551
- const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-DeUxFsC3.js");
3552
- const { runQualityGates } = await import("./validation-hVOwQk8T.js");
3553
- const { reconcileStrandedRepos } = await import("./merge-completeness-BLbB5-6n.js");
3554
- const { getForgeAdapter } = await import("./forge-B5o319qI.js");
3555
- const { messageAgent } = await import("./agents-ePFVoZbu.js");
3581
+ const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-H6epHOsw.js");
3582
+ const { runQualityGates } = await import("./validation-5G_wQtea.js");
3583
+ const { reconcileStrandedRepos } = await import("./merge-completeness-BfRwFjRx.js");
3584
+ const { getForgeAdapter } = await import("./forge-CdlCG9aS.js");
3585
+ const { messageAgent } = await import("./agents-IPSa5kzn.js");
3556
3586
  let mergeSet = getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId);
3557
3587
  if (!mergeSet) {
3558
3588
  const error = `No merge set found for ${issueId}`;
@@ -3610,7 +3640,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3610
3640
  ...mergeCompletionStatus(request)
3611
3641
  });
3612
3642
  completePendingOperation(issueId, null);
3613
- const { postMergeLifecycle } = await import("./merge-agent-DQTXZk8z.js");
3643
+ const { postMergeLifecycle } = await import("./merge-agent-DWd0KfiS.js");
3614
3644
  advanceQueue();
3615
3645
  await postMergeLifecycle(issueId, projectPath);
3616
3646
  return {
@@ -3864,7 +3894,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3864
3894
  ...mergeCompletionStatus(request)
3865
3895
  });
3866
3896
  completePendingOperation(issueId, null);
3867
- const { postMergeLifecycle } = await import("./merge-agent-DQTXZk8z.js");
3897
+ const { postMergeLifecycle } = await import("./merge-agent-DWd0KfiS.js");
3868
3898
  advanceQueue();
3869
3899
  await postMergeLifecycle(issueId, projectPath);
3870
3900
  return {
@@ -3875,8 +3905,8 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3875
3905
  repos: mergeResults
3876
3906
  };
3877
3907
  }
3878
- const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-DeUxFsC3.js");
3879
- const { getForgeAdapter } = await import("./forge-B5o319qI.js");
3908
+ const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-H6epHOsw.js");
3909
+ const { getForgeAdapter } = await import("./forge-CdlCG9aS.js");
3880
3910
  const primaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
3881
3911
  const targetBranch = primaryRepo?.targetBranch || "main";
3882
3912
  const primaryForge = primaryRepo?.forge || "github";
@@ -3919,7 +3949,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3919
3949
  }
3920
3950
  let preMergePrState;
3921
3951
  if (githubPrRef) try {
3922
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bmg4R9mv.js");
3952
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CpQSDlv8.js");
3923
3953
  if (isGitHubAppConfigured()) {
3924
3954
  const prState = await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number));
3925
3955
  preMergePrState = prState;
@@ -3982,7 +4012,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3982
4012
  ...mergeCompletionStatus(request)
3983
4013
  });
3984
4014
  completePendingOperation(issueId, null);
3985
- const { postMergeLifecycle } = await import("./merge-agent-DQTXZk8z.js");
4015
+ const { postMergeLifecycle } = await import("./merge-agent-DWd0KfiS.js");
3986
4016
  await postMergeLifecycle(issueId, projectPath, branchName);
3987
4017
  return {
3988
4018
  success: true,
@@ -3996,8 +4026,8 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
3996
4026
  } catch (prStateErr) {
3997
4027
  console.warn(`[merge] Pre-merge PR state check failed for ${issueId}: ${prStateErr.message} — proceeding (check is best-effort)`);
3998
4028
  }
3999
- const { postMergeLifecycle } = await import("./merge-agent-DQTXZk8z.js");
4000
- const { beginShipLog, appendShipLog } = await import("./ship-log-7kJfjUX2.js");
4029
+ const { postMergeLifecycle } = await import("./merge-agent-DWd0KfiS.js");
4030
+ const { beginShipLog, appendShipLog } = await import("./ship-log-CFUIo4PR.js");
4001
4031
  let rebaseResult;
4002
4032
  if (preMergePrState?.mergeable === true && preMergePrState.mergeableState === "clean" && !preMergePrState.checksFailed && !preMergePrState.checksPending && !preMergePrState.draft && !preMergePrState.merged) {
4003
4033
  console.log(`[merge] PR is CLEAN — merging directly without rebase for ${issueId}`);
@@ -4106,7 +4136,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
4106
4136
  });
4107
4137
  let skipLocalVerification = false;
4108
4138
  if (primaryForge === "github" && artifactUrl) try {
4109
- const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-Bmg4R9mv.js");
4139
+ const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-CpQSDlv8.js");
4110
4140
  if (isGitHubAppConfigured()) {
4111
4141
  const ref = parsePullRequestRef({ url: artifactUrl });
4112
4142
  if (ref) {
@@ -4131,7 +4161,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
4131
4161
  const verifyResult = skipLocalVerification ? { outcome: "passed" } : await (async () => {
4132
4162
  console.log(`[merge] Running post-rebase verification for ${issueId}...`);
4133
4163
  appendShipLog(issueId, "Running post-rebase verification (full quality-gate suite)…", "verifying");
4134
- const { runVerificationForIssue } = await import("./verification-runner-Bc3cJvpC.js");
4164
+ const { runVerificationForIssue } = await import("./verification-runner-BV5F6wrA.js");
4135
4165
  return Effect.runPromise(runVerificationForIssue(issueId, workspacePath, { isRemote: false }, "merge-verify", {
4136
4166
  ...mergeVerificationOptions(request),
4137
4167
  onGateLog: (line) => appendShipLog(issueId, line, "verifying")
@@ -4176,7 +4206,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
4176
4206
  if (skipLocalVerification) await recordCiGreenVerificationVerdict(issueId, workspacePath);
4177
4207
  setReviewStatus(issueId, { mergeStep: "reporting-statuses" });
4178
4208
  try {
4179
- const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-Bmg4R9mv.js");
4209
+ const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CpQSDlv8.js");
4180
4210
  if (githubPrRef && isGitHubAppConfigured()) {
4181
4211
  const sha = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).headSha.trim();
4182
4212
  if (sha) {
@@ -4204,7 +4234,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
4204
4234
  } catch (prMergeErr) {
4205
4235
  console.error(`[merge] Review artifact merge threw for ${issueId}:`, prMergeErr);
4206
4236
  try {
4207
- const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-Bmg4R9mv.js");
4237
+ const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CpQSDlv8.js");
4208
4238
  if (githubPrRef && isGitHubAppConfigured()) {
4209
4239
  artifactMerged = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).merged;
4210
4240
  if (artifactMerged) console.log(`[merge] Race-detected: PR #${githubPrRef.number} for ${issueId} was already merged despite thrown error; proceeding`);
@@ -4323,8 +4353,8 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
4323
4353
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
4324
4354
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
4325
4355
  return yield* Effect.promise(async () => {
4326
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-DeUxFsC3.js");
4327
- const { getForgeAdapter } = await import("./forge-B5o319qI.js");
4356
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-H6epHOsw.js");
4357
+ const { getForgeAdapter } = await import("./forge-CdlCG9aS.js");
4328
4358
  let mergeSet = getMergeSetSync(issueId);
4329
4359
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
4330
4360
  const results = [];
@@ -4385,7 +4415,7 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
4385
4415
  }
4386
4416
  }
4387
4417
  if (results.filter((r) => r.approved).length > 0) {
4388
- const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-CMthG6Vd.js");
4418
+ const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-K7FYGF_z.js");
4389
4419
  emitActivityEntrySync({
4390
4420
  source: "dashboard",
4391
4421
  level: "success",
@@ -4412,9 +4442,9 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
4412
4442
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
4413
4443
  if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
4414
4444
  return yield* Effect.promise(async () => {
4415
- const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-DeUxFsC3.js");
4416
- const { getForgeAdapter } = await import("./forge-B5o319qI.js");
4417
- const { assessRepoMergeCompleteness } = await import("./merge-completeness-BLbB5-6n.js");
4445
+ const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-H6epHOsw.js");
4446
+ const { getForgeAdapter } = await import("./forge-CdlCG9aS.js");
4447
+ const { assessRepoMergeCompleteness } = await import("./merge-completeness-BfRwFjRx.js");
4418
4448
  let mergeSet = getMergeSetSync(issueId);
4419
4449
  if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
4420
4450
  const results = [];
@@ -4492,7 +4522,7 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
4492
4522
  }
4493
4523
  }
4494
4524
  if (results.filter((r) => r.merged).length > 0) {
4495
- const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-CMthG6Vd.js");
4525
+ const { emitActivityEntrySync, emitActivityTtsSync } = await import("./activity-logger-K7FYGF_z.js");
4496
4526
  emitActivityEntrySync({
4497
4527
  source: "dashboard",
4498
4528
  level: "success",
@@ -4617,7 +4647,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4617
4647
  console.log(`[approve] Starting role pipeline for ${issueId}...`);
4618
4648
  let reviewResult;
4619
4649
  try {
4620
- const { spawnReviewRoleForIssue } = await import("./review-agent-BTCNkq2h.js");
4650
+ const { spawnReviewRoleForIssue } = await import("./review-agent-CD3RQ-tc.js");
4621
4651
  reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
4622
4652
  issueId,
4623
4653
  workspace: workspacePath,
@@ -4664,7 +4694,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4664
4694
  }
4665
4695
  console.log(`[approve] Step 3/3: Running server-side rebase for ${issueId}...`);
4666
4696
  try {
4667
- const { rebaseFeatureBranch } = await import("./merge-rebase-CJJVAJuz.js");
4697
+ const { rebaseFeatureBranch } = await import("./merge-rebase-BLykMwPO.js");
4668
4698
  const workspacePathForRebase = join(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
4669
4699
  const rebaseResult = await Effect.runPromise(rebaseFeatureBranch(workspacePathForRebase, branchName, "main", issueId));
4670
4700
  if (!rebaseResult.success) {
@@ -4684,7 +4714,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
4684
4714
  completePendingOperation(issueId, pushResult.error);
4685
4715
  return jsonResponse({ error: pushResult.error }, { status: pushResult.httpStatus });
4686
4716
  }
4687
- const { approve: lifecycleApprove } = await import("./lifecycle-B3s4sM1G.js");
4717
+ const { approve: lifecycleApprove } = await import("./lifecycle-DjlljAZ1.js");
4688
4718
  const ghResolved = resolveGitHubIssueSync(issueId);
4689
4719
  const isGitHubIssueFlag = ghResolved.isGitHub;
4690
4720
  const lifecycleCtx = {
@@ -4718,7 +4748,7 @@ const getMergeQueueRoute = HttpRouter.add("GET", "/api/merge-queue", httpHandler
4718
4748
  })));
4719
4749
  const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pipeline/notify", httpHandler(Effect.gen(function* () {
4720
4750
  const request = yield* HttpServerRequest.HttpServerRequest;
4721
- const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-Ias7N8Kg.js"));
4751
+ const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-Djkj-yqK.js"));
4722
4752
  const expected = getInternalTokenSync();
4723
4753
  if (!expected) return jsonResponse({
4724
4754
  ok: false,
@@ -4732,7 +4762,7 @@ const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pi
4732
4762
  }, 403);
4733
4763
  const event = yield* readJsonBody;
4734
4764
  const type = event.type;
4735
- const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-DT6xLFao.js"));
4765
+ const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-CO9rxJgB.js"));
4736
4766
  switch (type) {
4737
4767
  case "status_changed": {
4738
4768
  const issueId = event.issueId;
@@ -5507,7 +5537,7 @@ const patchWorkspaceTieredExecutionRoute = HttpRouter.add("PATCH", "/api/workspa
5507
5537
  if (override !== "on" && override !== "off" && override !== null && override !== void 0) return jsonResponse({ error: "Invalid tiered-execution override" }, { status: 400 });
5508
5538
  const project = getProjectSync(extractPrefixSync(issueId) ?? issueId.split("-")[0]);
5509
5539
  if (!project) return jsonResponse({ error: "Project not found" }, { status: 404 });
5510
- yield* Effect.promise(() => import("./record-BTwWhtBb.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
5540
+ yield* Effect.promise(() => import("./record-aVzu-LGm.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
5511
5541
  const projectPath = project.path;
5512
5542
  const location = yield* resolvePlanLocation(projectPath, issueId);
5513
5543
  if (!location) return jsonResponse({ error: "No xBRIEF plan found for this workspace" }, { status: 404 });
@@ -6013,7 +6043,7 @@ function shouldTreatAsRerun(status) {
6013
6043
  return status.readyForMerge === true || status.reviewStatus === "passed" || status.testStatus === "passed" || status.mergeStatus === "failed";
6014
6044
  }
6015
6045
  function getDirtyWorkspaceErrorForReviewRequestStatus(status, workspacePath) {
6016
- if (!status.trim() || isStatePlaneOnlyStatus(status)) return null;
6046
+ if (!status.trim() || isOverdeckOwnedOnlyStatus(status)) return null;
6017
6047
  return `Workspace has uncommitted changes. Commit the changes, explicitly discard them, or surface them to the operator before requesting review:\ncd ${workspacePath}\ngit status`;
6018
6048
  }
6019
6049
  async function getDirtyWorkspaceErrorForReviewRequest(workspacePath, workspaceInfo) {
@@ -6124,7 +6154,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
6124
6154
  console.log(`Feature branch push note: ${errorMessage(pushErr)}`);
6125
6155
  }
6126
6156
  try {
6127
- const { createReviewArtifactsForIssue } = await import("./review-artifacts-BNmw8dWE.js");
6157
+ const { createReviewArtifactsForIssue } = await import("./review-artifacts-DyhajWso.js");
6128
6158
  const artifactResult = await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath));
6129
6159
  const primaryArtifact = artifactResult.mergeSet?.repos.find((repo) => !!repo.artifactUrl);
6130
6160
  artifactResult.mergeSet?.repos.find((repo) => repo.mergeStatus !== "skipped")?.targetBranch;
@@ -6184,7 +6214,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
6184
6214
  completePendingOperation(issueId, verifyOutcome.reason);
6185
6215
  return;
6186
6216
  }
6187
- const { spawnReviewRoleForIssue } = await import("./review-agent-BTCNkq2h.js");
6217
+ const { spawnReviewRoleForIssue } = await import("./review-agent-CD3RQ-tc.js");
6188
6218
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
6189
6219
  const reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
6190
6220
  issueId,
@@ -6320,7 +6350,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
6320
6350
  console.log(`[request-review] Feature branch push note: ${errorMessage(pushErr)}`);
6321
6351
  }
6322
6352
  const prUrl = getReviewStatusSync(issueId)?.prUrl;
6323
- const { spawnReviewRoleForIssue } = await import("./review-agent-BTCNkq2h.js");
6353
+ const { spawnReviewRoleForIssue } = await import("./review-agent-CD3RQ-tc.js");
6324
6354
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
6325
6355
  issueId,
6326
6356
  workspace: workspacePathRerun,
@@ -6370,7 +6400,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
6370
6400
  });
6371
6401
  } else {
6372
6402
  const workspacePath = join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
6373
- const { spawnRun } = yield* Effect.promise(() => import("./agents-ePFVoZbu.js"));
6403
+ const { spawnRun } = yield* Effect.promise(() => import("./agents-IPSa5kzn.js"));
6374
6404
  try {
6375
6405
  const testRun = yield* Effect.promise(() => spawnRun(issueId, "test", { workspace: workspacePath }));
6376
6406
  setReviewStatus(issueId, { testStatus: "testing" });
@@ -6485,7 +6515,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
6485
6515
  testStatus: "pending",
6486
6516
  reviewNotes
6487
6517
  });
6488
- const { spawnReviewRoleForIssue } = await import("./review-agent-BTCNkq2h.js");
6518
+ const { spawnReviewRoleForIssue } = await import("./review-agent-CD3RQ-tc.js");
6489
6519
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
6490
6520
  issueId,
6491
6521
  workspace: workspacePath,
@@ -6821,7 +6851,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
6821
6851
  const result = processResetReviewPipeline(issueId, resetWorkspace.exists);
6822
6852
  if (result.httpStatus !== 200) return jsonResponse(result.body, { status: result.httpStatus });
6823
6853
  try {
6824
- const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-DQTXZk8z.js"));
6854
+ const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-DWd0KfiS.js"));
6825
6855
  resetPostMergeState(issueId);
6826
6856
  } catch (err) {
6827
6857
  console.warn(`[reset-review] resetPostMergeState best-effort failed for ${issueId}:`, err);
@@ -6830,7 +6860,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
6830
6860
  const rerun = body?.rerun === true;
6831
6861
  if (rerun) try {
6832
6862
  yield* Effect.promise(async () => {
6833
- const { spawnReviewRoleForIssue } = await import("./review-agent-BTCNkq2h.js");
6863
+ const { spawnReviewRoleForIssue } = await import("./review-agent-CD3RQ-tc.js");
6834
6864
  const dispatchArgs = buildReviewRedispatchArgs(issueId, resetWorkspace, workspaceInfo, resolved);
6835
6865
  if (dispatchArgs) {
6836
6866
  const result = await Effect.runPromise(spawnReviewRoleForIssue({
@@ -6865,7 +6895,7 @@ const postReviewResyncRoute = HttpRouter.add("POST", "/api/review/:issueId/resyn
6865
6895
  const postWorkspaceReviewPurgeRoute = HttpRouter.add("POST", "/api/review/:issueId/purge", httpHandler(Effect.gen(function* () {
6866
6896
  const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
6867
6897
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
6868
- const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-BTCNkq2h.js"));
6898
+ const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-CD3RQ-tc.js"));
6869
6899
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
6870
6900
  const purge = yield* Effect.promise(() => purgeReviewAgentsForIssue(projectKey, issueId));
6871
6901
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
@@ -6895,8 +6925,8 @@ const postWorkspaceAbortReviewRoute = HttpRouter.add("POST", "/api/review/:issue
6895
6925
  success: false,
6896
6926
  error: "Workspace does not exist"
6897
6927
  }, { status: 400 });
6898
- const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-_n3Zui6K.js"));
6899
- const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-BTCNkq2h.js"));
6928
+ const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-WqMWCdpa.js"));
6929
+ const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-CD3RQ-tc.js"));
6900
6930
  const { killed, failed } = yield* killAllReviewerSessions(resolveProjectFromIssueSync(issueId)?.projectKey, issueId);
6901
6931
  setReviewStatus(issueId, {
6902
6932
  reviewStatus: "pending",
@@ -6968,8 +6998,8 @@ const getReviewConfigRoute = HttpRouter.add("GET", "/api/review/:issueId/config"
6968
6998
  const issueId = ((yield* HttpRouter.params)["issueId"] ?? "").toUpperCase();
6969
6999
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
6970
7000
  return jsonResponse(yield* Effect.promise(async () => {
6971
- const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-BTwWhtBb.js");
6972
- const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-BTCNkq2h.js");
7001
+ const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-aVzu-LGm.js");
7002
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-CD3RQ-tc.js");
6973
7003
  const project = resolveProjectForIssue(issueId);
6974
7004
  const record = project ? readIssueRecordSync(project, issueId) : null;
6975
7005
  return {
@@ -7004,9 +7034,9 @@ const postReviewConfigRoute = HttpRouter.add("POST", "/api/review/:issueId/confi
7004
7034
  return jsonResponse({ error: error instanceof Error ? error.message : String(error) }, { status: 400 });
7005
7035
  }
7006
7036
  return jsonResponse(yield* Effect.promise(async () => {
7007
- const { resolveProjectForIssue } = await import("./record-BTwWhtBb.js");
7008
- const { updateIssueRecord } = await import("./record-update-DhI7eySG.js");
7009
- const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-BTCNkq2h.js");
7037
+ const { resolveProjectForIssue } = await import("./record-aVzu-LGm.js");
7038
+ const { updateIssueRecord } = await import("./record-update-DtdJK2Iw.js");
7039
+ const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-CD3RQ-tc.js");
7010
7040
  const record = await updateIssueRecord(resolveProjectForIssue(issueId), issueId, (current) => {
7011
7041
  if (hasMode) if (body.reviewMode === null) delete current.reviewMode;
7012
7042
  else current.reviewMode = body.reviewMode;
@@ -7439,7 +7469,7 @@ async function readWorkspacePlanningMarkdown(issueId, fileName) {
7439
7469
  */
7440
7470
  async function readWorkspaceContinueFile(_projectPath, workspacePath, issueId) {
7441
7471
  try {
7442
- const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-BTwWhtBb.js");
7472
+ const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-aVzu-LGm.js");
7443
7473
  const recordView = readRecordContinueViewSync(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId);
7444
7474
  return recordView ? JSON.stringify(recordView, null, 2) : null;
7445
7475
  } catch {
@@ -8219,7 +8249,7 @@ const getWorkspaceReviewStatusRoute = HttpRouter.add("GET", "/api/review/:issueI
8219
8249
  if (queuePosition === null) try {
8220
8250
  const resolved = resolveProjectFromIssueSync(issueId);
8221
8251
  if (resolved) {
8222
- const { getQueueForProject } = yield* Effect.promise(() => import("./merge-sr8Nrnmi.js"));
8252
+ const { getQueueForProject } = yield* Effect.promise(() => import("./merge-Dqmh_zja.js"));
8223
8253
  const mergePos = findPositionInQueueSync(issueId, getQueueForProject(resolved.projectKey).map((e) => ({
8224
8254
  id: String(e.id),
8225
8255
  type: "task",
@@ -8257,7 +8287,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
8257
8287
  const workspaceInfo = getWorkspaceInfoForIssue(issueId);
8258
8288
  if (workspaceInfo.exists && workspaceInfo.localPath) {
8259
8289
  const localPath = workspaceInfo.localPath;
8260
- const { snapshotWorkspaceHeadsPromise } = yield* Effect.promise(() => import("./git-utils-Xg4PFN45.js"));
8290
+ const { snapshotWorkspaceHeadsPromise } = yield* Effect.promise(() => import("./git-utils-C31x1lpE.js"));
8261
8291
  try {
8262
8292
  const headAnchor = yield* Effect.promise(() => snapshotWorkspaceHeadsPromise(issueId, localPath));
8263
8293
  if (headAnchor) update.reviewedAtCommit = headAnchor;
@@ -8272,7 +8302,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
8272
8302
  if (verificationStatus) update.verificationStatus = verificationStatus;
8273
8303
  if (readyForMerge !== void 0) update.readyForMerge = readyForMerge;
8274
8304
  const status = setReviewStatus(issueId, update);
8275
- const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-Bz-wFT7R.js"));
8305
+ const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-MOoeB4A8.js"));
8276
8306
  const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
8277
8307
  if (reviewStatus && [
8278
8308
  "passed",
@@ -8290,7 +8320,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
8290
8320
  const agentId = `agent-${issueId.toLowerCase()}`;
8291
8321
  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.`;
8292
8322
  try {
8293
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-CoB9Z6aU.js"));
8323
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-CTSuA6lw.js"));
8294
8324
  const wsInfo = getWorkspaceInfoForIssue(issueId);
8295
8325
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
8296
8326
  issueId,
@@ -8354,7 +8384,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
8354
8384
  const agentId = `agent-${issueId.toLowerCase()}`;
8355
8385
  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.`;
8356
8386
  try {
8357
- const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-CoB9Z6aU.js"));
8387
+ const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-CTSuA6lw.js"));
8358
8388
  const wsInfo = getWorkspaceInfoForIssue(issueId);
8359
8389
  const fileResult = yield* Effect.promise(() => writeFeedbackFile({
8360
8390
  issueId,
@@ -8387,14 +8417,14 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
8387
8417
  });
8388
8418
  yield* Effect.promise(async () => {
8389
8419
  try {
8390
- const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-_n3Zui6K.js");
8420
+ const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-WqMWCdpa.js");
8391
8421
  const project = resolveProjectFromIssueSync(issueId);
8392
8422
  const repo = (project ? getProjectSync(project.projectKey) : null)?.github_repo;
8393
8423
  if (!repo || !repo.includes("/")) return;
8394
8424
  const [owner, name] = repo.split("/");
8395
8425
  const wsInfo = getWorkspaceInfoForIssue(issueId);
8396
8426
  if (!wsInfo?.localPath) return;
8397
- const { postOverdeckTestsStatus } = await import("./github-app-Bmg4R9mv.js");
8427
+ const { postOverdeckTestsStatus } = await import("./github-app-CpQSDlv8.js");
8398
8428
  await postOverdeckTestsStatus(wsInfo.localPath, owner, name, "success", "Test specialist passed");
8399
8429
  } catch (err) {
8400
8430
  console.warn(`[review-status] Failed to post overdeck/tests for ${issueId}: ${err.message}`);
@@ -8436,7 +8466,7 @@ const postWorkspaceRefreshTokenRoute = HttpRouter.add("POST", "/api/workspaces/:
8436
8466
  if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
8437
8467
  const issueLower = issueId.toLowerCase();
8438
8468
  const workspacePath = join(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), "workspaces", `feature-${issueLower}`);
8439
- const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-Bmg4R9mv.js"));
8469
+ const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-CpQSDlv8.js"));
8440
8470
  if (!isGitHubAppConfigured()) return jsonResponse({
8441
8471
  success: false,
8442
8472
  error: "GitHub App not configured"
@@ -8451,4 +8481,4 @@ const workspacesRouteLayer = Layer.mergeAll(workspaceDataRouteLayer, postWorkspa
8451
8481
  //#endregion
8452
8482
  export { getWorkspacePathForIssue as C, stopAgentOutputService as E, resolveIssueHeadlineCost as S, startAgentOutputService as T, getCostsForIssueSync as _, pushApproveMain as a, processPendingFeedbackDeliveries as b, triggerMerge as c, resumeQueuedMerges as d, syncWalFromAllProjects as f, migrateAllSessionsSync as g, reclassifyUnknownCostEventsSync as h, mergeOpsRouteLayer as i, internalEventsRouteLayer as l, reconcilePiTranscripts as m, buildRichPRBody as n, reconcileGitHubMergeStatus as o, reconcile as p, isBranchAlreadyRebased as r, shouldBlockApproveForDirtyStatus as s, workspacesRouteLayer as t, eventsRouteLayer as u, rebuildCacheSync as v, retainAgentOutputInterest as w, getCachedRunningAgents as x, syncCacheSync as y };
8453
8483
 
8454
- //# sourceMappingURL=workspaces-CRBJikLp.js.map
8484
+ //# sourceMappingURL=workspaces-DqxgwDZ8.js.map