@overdeck/desktop 0.45.23 → 0.45.24

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 (388) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +2 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-DOA0KgXx.js → acceptance-criteria-DDCnXF58.js} +2 -2
  4. package/server/{advancing-selfheal-BBu6DSNm.js → advancing-selfheal-BVwW4qRn.js} +6 -6
  5. package/server/{agent-gc-BV1q_2EV.js → agent-gc-CHcnvonI.js} +4 -4
  6. package/server/agent-state-Bc3tzUC8.js +3 -0
  7. package/server/{agent-state-service-HoK8U4jW.js → agent-state-service-BsgWxZuB.js} +5 -5
  8. package/server/{agent-state-service-CnzFKSAQ.js → agent-state-service-D5UGKIJL.js} +1 -1
  9. package/server/{agents-B4Bjbkfv.js → agents-EbI0zCJl.js} +4 -4
  10. package/server/agents-wi9NWzs2.js +3 -0
  11. package/server/{archive-planning-zkJb3BeM.js → archive-planning-BZDgzoEj.js} +1 -1
  12. package/server/{archive-planning-DYrYojxl.js → archive-planning-Du25Jtst.js} +4 -4
  13. package/server/{artifact-index-jobs-C-xy7Z5v.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
  14. package/server/assemble-J2ZZ2C15.js +339 -0
  15. package/server/{backlog-auto-trigger-GtG71X8H.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
  16. package/server/{behavior-B_-4EKF3.js → behavior-B3exJ42O.js} +2 -2
  17. package/server/{briefing-freshness-DWdW7vUm.js → briefing-freshness-D1wzUIWv.js} +2 -2
  18. package/server/{build-info-DgTqZkL5.js → build-info-CZk_TITh.js} +1 -1
  19. package/server/{build-info-BT096lEl.js → build-info-Ie_D0_BT.js} +3 -3
  20. package/server/{checkpoint-manager-DDqcGyu8.js → checkpoint-manager-BI1Wxoku.js} +2 -2
  21. package/server/{checkpoint-manager-B7Bt29J0.js → checkpoint-manager-DwbQoqrC.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-CpgCjAlN.js → checkpoints-BJIs5QIA.js} +1 -1
  24. package/server/{checkpoints-C-AXLfYT.js → checkpoints-CQB1h765.js} +2 -2
  25. package/server/{claude-hooks-provision-C8wdRnN1.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
  26. package/server/{claude-hooks-provision-but-_qGY.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
  27. package/server/{claude-permissions-H_5wHQZQ.js → claude-permissions-DNWEVV6z.js} +2 -2
  28. package/server/{claude-settings-overlay-CbSz0Dvb.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
  29. package/server/{claude-settings-overlay-BTENVmYf.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
  30. package/server/cli-B86rejVV.js +3 -0
  31. package/server/{cli-vBeXbPrq.js → cli-RoOx5DUf.js} +9 -9
  32. package/server/{cliproxy-Bgb2XCqi.js → cliproxy-C8a1vtTU.js} +2 -2
  33. package/server/{cliproxy-DW0V86F8.js → cliproxy-fHfIeiGd.js} +1 -1
  34. package/server/{close-issue-Dn_4c4G8.js → close-issue-DoOifFIK.js} +5 -5
  35. package/server/{closed-issue-reaper-hANY_ehE.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
  36. package/server/{closed-issue-reaper-CWpY2uBw.js → closed-issue-reaper-CktPXo8m.js} +1 -1
  37. package/server/{codex-TmSi-yTv.js → codex-BZXGhUVB.js} +7 -7
  38. package/server/{codex-Dg7Is5yb.js → codex-GcHuUF-k.js} +1 -1
  39. package/server/{codex-parser-C4gSH-IR.js → codex-parser-CFZ1_1Jl.js} +2 -2
  40. package/server/{config-CCvjQf27.js → config-BZ0sHTju.js} +2 -2
  41. package/server/{config-DjLOdbgT.js → config-CKxYiCmX.js} +2 -2
  42. package/server/{config-DUIhMN_T.js → config-DzV30TOm.js} +1 -1
  43. package/server/{config-yaml-DvyMuOle.js → config-yaml-DySPNmKN.js} +23 -9
  44. package/server/{conflict-gate-CmrYpa47.js → conflict-gate-BaCVrH-N.js} +3 -3
  45. package/server/{conflict-gate-BSJkNTdp.js → conflict-gate-BhAY7TUd.js} +1 -1
  46. package/server/context-layers-BrPmE__h.js +4 -0
  47. package/server/context-layers-igZ4FI4_.js +37 -0
  48. package/server/{control-settings-aP1ANIlI.js → control-settings-BQp7_4uD.js} +4 -4
  49. package/server/{conversation-compaction-CNbTLB86.js → conversation-compaction-CgrR8YYp.js} +8 -8
  50. package/server/{conversation-compaction-DiG5zWQq.js → conversation-compaction-eQB5CkOe.js} +1 -1
  51. package/server/{conversation-service-Up7FEzIC.js → conversation-service-BLd3MYsG.js} +1 -1
  52. package/server/{conversation-service-Du-MTNpJ.js → conversation-service-DPJ71F33.js} +329 -19
  53. package/server/{conversations-DbOs1e9Q.js → conversations-6AfUfbwc.js} +5 -5
  54. package/server/{conversations-6mPANqvL.js → conversations-CAsJF9kh.js} +1 -1
  55. package/server/{cost-Ca0YTWDw.js → cost-B2ddP6wq.js} +2 -2
  56. package/server/{cost-CW4WSe72.js → cost-R-m6Yi-W.js} +3 -3
  57. package/server/{cost-sync-C0VdGme1.js → cost-sync-BsN6ER0n.js} +3 -3
  58. package/server/{dag-CdOjJVDT.js → dag-B1ucnjDU.js} +2 -2
  59. package/server/{dangerous-git-ops-CT-IypG3.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
  60. package/server/dashboard-db-worker.js +7 -7
  61. package/server/{deacon-pRnyD5w9.js → deacon-CU_cAYSR.js} +254 -144
  62. package/server/{deacon-DYSEJb48.js → deacon-kiQrb4ZT.js} +3 -3
  63. package/server/{deacon-nudge-log-Bjg8U4Y9.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
  64. package/server/{deacon-swarm-DftYRDo8.js → deacon-swarm-BXZZ1Z2-.js} +13 -13
  65. package/server/deacon-swarm-C-GwfjJy.js +2 -0
  66. package/server/deacon.js +8 -8
  67. package/server/{deploy-patrol-Bjsho_ha.js → deploy-patrol-AiFoP8dw.js} +6 -6
  68. package/server/{deploy-window-DeP_OIRk.js → deploy-window-C3F-tihF.js} +6 -6
  69. package/server/{deploy-window-CM6W1-c6.js → deploy-window-DkZraDyj.js} +1 -1
  70. package/server/{dev-supervisor-BpMoHlkR.js → dev-supervisor-bcOWqdQE.js} +2 -2
  71. package/server/{devcontainer-renderer-CtUgrVKW.js → devcontainer-renderer-_d6XhyND.js} +3 -3
  72. package/server/dist-Bzy0y69j.js +3 -0
  73. package/server/{dist-DyRx4cI7.js → dist-Cb_0uvpS.js} +1 -1
  74. package/server/{docker-BK7HIcBj.js → docker-DcMTFTUC.js} +2 -2
  75. package/server/{dod-BrSfUHm0.js → dod-C6n9RV3G.js} +1 -1
  76. package/server/{ensure-devcontainer-DRqaAkBR.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
  77. package/server/{ensure-devcontainer-DseivYEy.js → ensure-devcontainer-DNi-ono3.js} +4 -4
  78. package/server/{esm-shims-CbI3BVkl.js → esm-shims-OSHAYaS1.js} +1 -1
  79. package/server/{event-store-tdiY5eDZ.js → event-store-CQL6NeqB.js} +3 -3
  80. package/server/{event-store-Cr5PQwFC.js → event-store-EV2cMiXj.js} +1 -1
  81. package/server/{events-CvvGK6LT.js → events-BTdrdEq8.js} +1 -1
  82. package/server/{events-CC1dgUpx.js → events-DTfAe4My.js} +3 -3
  83. package/server/{factory-CynerjXO.js → factory-CFibJuaw.js} +4 -4
  84. package/server/{feature-registry-population-B0pmAz0a.js → feature-registry-population-DKZFMbFt.js} +4 -4
  85. package/server/{feature-registry-storage-_wUBRD3J.js → feature-registry-storage-BdPuLcBX.js} +2 -2
  86. package/server/{features-Dhxz-wLc.js → features-ez2271oH.js} +2 -2
  87. package/server/{feedback-target-CPS15Vte.js → feedback-target-7mqqwrX6.js} +7 -7
  88. package/server/{feedback-target-iygZwmMc.js → feedback-target-CoFDHiM8.js} +1 -1
  89. package/server/{feedback-writer-C9b6ccN1.js → feedback-writer-CY5L1lB7.js} +5 -5
  90. package/server/{feedback-writer-qmiMbqTZ.js → feedback-writer-D3a22RCd.js} +1 -1
  91. package/server/flywheel-DHrgCphM.js +1084 -0
  92. package/server/flywheel-DzGtWnJ1.js +477 -0
  93. package/server/flywheel-SVF02Jpq.js +2 -0
  94. package/server/{flywheel-merge-order-DxbQKE1d.js → flywheel-merge-order-UU0tiUld.js} +9 -8
  95. package/server/{flywheel-merge-order-C-6zRLvM.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
  96. package/server/{forge-Ch9gCFod.js → forge-CNFnyqps.js} +2 -2
  97. package/server/forge-DXnS_YFH.js +2 -0
  98. package/server/{from-CJ_aH5jD.js → from-kNxT0bZC.js} +1 -1
  99. package/server/{fts-db-CKgg0VKg.js → fts-db-CE46vDkZ.js} +2 -2
  100. package/server/{fts-operations-BrL_VTRr.js → fts-operations-CqY6zl-i.js} +2 -2
  101. package/server/{git-utils-BVa07a4a.js → git-utils-CRw2zLPC.js} +68 -3
  102. package/server/git-utils-D0_yhCgF.js +3 -0
  103. package/server/{github-app-CMBdIFBQ.js → github-app-C3QrAUd0.js} +18 -7
  104. package/server/{github-app-CPfoFAdV.js → github-app-ClZ2lk8D.js} +1 -1
  105. package/server/{github-client--XVlDpwM.js → github-client-BnIsSrEN.js} +2 -2
  106. package/server/{github-client-B4QsdE-X.js → github-client-DfQYVUaw.js} +1 -1
  107. package/server/{github-pr-lookup-BRbDW-qk.js → github-pr-lookup-D16NGsSO.js} +2 -2
  108. package/server/{harness-binary-CVio2m-u.js → harness-binary-DPUi-Pv8.js} +32 -6
  109. package/server/{harness-resolve-qHJBhy3Z.js → harness-resolve-3lNZkyT4.js} +18 -9
  110. package/server/{health-events-C9B8y1Hm.js → health-events-BBcTYQKU.js} +2 -2
  111. package/server/{health-events-CpfvuVmm.js → health-events-BDOHby5Q.js} +1 -1
  112. package/server/{hooks-DUXw8A0-.js → hooks-CKZgXlJb.js} +2 -2
  113. package/server/{hooks-ltecuFqZ.js → hooks-DPVX1rwQ.js} +1 -1
  114. package/server/{hume-BEq0bUDg.js → hume-Cz8igP9E.js} +2 -2
  115. package/server/hume-ccTf4wTX.js +3 -0
  116. package/server/{idle-stack-reaper-D7w9t3fE.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
  117. package/server/{idle-stack-reaper-w1ISSlhs.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
  118. package/server/{in-flight-guard-aQ1IxeI3.js → in-flight-guard-CAAkqPLu.js} +2 -2
  119. package/server/{infra-CzaSOgul.js → infra-BEqFxlJc.js} +14 -4
  120. package/server/{injection-DZ0PfYa4.js → injection-C8aiVJrF.js} +191 -183
  121. package/server/{injection-oNZeoDhL.js → injection-CPUIqNhI.js} +1 -1
  122. package/server/{inspect-agent-DJKLWcVT.js → inspect-agent-BLuJ1AkT.js} +135 -79
  123. package/server/inspect-agent-Brtz0URj.js +2 -0
  124. package/server/{internal-token-DXdfprGr.js → internal-token-BrcU6qfe.js} +1 -1
  125. package/server/{internal-token-Bb4XeV2x.js → internal-token-s0-oKybJ.js} +2 -2
  126. package/server/{io-B3_AHDfr.js → io-C9kF1wtJ.js} +3 -3
  127. package/server/{issue-closed-zhdvQicO.js → issue-closed-CDJk4pIp.js} +7 -7
  128. package/server/{issue-lifecycle-Dy4vd0Oa.js → issue-lifecycle-B8sZHVHh.js} +1 -1
  129. package/server/{issue-lifecycle-CreaCkjW.js → issue-lifecycle-ojZAzDBP.js} +21 -21
  130. package/server/{issue-service-singleton-DabvBWUp.js → issue-service-singleton-BvJ09SaR.js} +1 -1
  131. package/server/{issue-service-singleton-B5ushCvE.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
  132. package/server/{issues-B6ToV6x1.js → issues-BMmP_77e.js} +2 -2
  133. package/server/{jsonl-parser-Dhflo1SH.js → jsonl-parser-BXSlHwEh.js} +3 -3
  134. package/server/{label-cleanup-BKPJm4Hv.js → label-cleanup-B0UJwnv5.js} +3 -3
  135. package/server/{label-reconciler-DdWbHEBu.js → label-reconciler-B4iOAjlC.js} +4 -4
  136. package/server/{launcher-generator-CHVm7bGT.js → launcher-generator-BBWG_SiS.js} +101 -7
  137. package/server/{lifecycle-io-D8iNBcux.js → lifecycle-io-BREGpnLk.js} +5 -5
  138. package/server/{lifecycle-io-Bsnr2K4F.js → lifecycle-io-DPo7x11I.js} +1 -1
  139. package/server/{lifecycle-sycO16hj.js → lifecycle-xmBfK2GJ.js} +6 -6
  140. package/server/{lifecycle-DfeyBDwA.js → lifecycle-yPd___5E.js} +2 -2
  141. package/server/{linear-client-D4zqMnX7.js → linear-client-BsuUvkdA.js} +2 -2
  142. package/server/{linear-client-DqhDQO9k.js → linear-client-CTskEeT_.js} +1 -1
  143. package/server/memory-fts-worker.js +1 -1
  144. package/server/{merge-DK23JEdS.js → merge-B1DiziGU.js} +1 -1
  145. package/server/{merge-C_ZEhbqI.js → merge-CefQNAnq.js} +3 -3
  146. package/server/{merge-agent-XrB80vfT.js → merge-agent-4WOWlSYA.js} +28 -28
  147. package/server/{merge-agent-BQM3a8z5.js → merge-agent-CKkgIBPB.js} +1 -1
  148. package/server/{merge-batch-Bwoyr8Je.js → merge-batch-ClFn2T-y.js} +1 -1
  149. package/server/merge-ops-CR44oU9-.js +2 -0
  150. package/server/{merge-rebase-C1KIVr0s.js → merge-rebase-BfaTyXsw.js} +2 -2
  151. package/server/merge-set-DJ8-UErs.js +83 -0
  152. package/server/{merge-set-DnSYdBEp.js → merge-set-bUqbm3yc.js} +1 -1
  153. package/server/{merge-sync-SSv3E-pl.js → merge-sync-BJYeOODr.js} +1 -1
  154. package/server/{merge-sync-DZ9dojJn.js → merge-sync-VPV28g0g.js} +2 -2
  155. package/server/{merge-train-DxDfBTjr.js → merge-train-CHopycP0.js} +3 -3
  156. package/server/{merge-train-deps-CyYQUksx.js → merge-train-deps-D1cOZzy2.js} +4 -4
  157. package/server/{merge-verification-CSizH3HY.js → merge-verification-BkaOqPsw.js} +4 -4
  158. package/server/{multipart-parser-Dt8YPN5S.js → multipart-parser-duPAfSBw.js} +2 -2
  159. package/server/{no-resume-mode-Cx3K0hHi.js → no-resume-mode-Nw29vaFb.js} +1 -1
  160. package/server/node_modules/.package-lock.json +8 -8
  161. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  162. package/server/node_modules/undici/README.md +5 -0
  163. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  164. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  165. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  166. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  167. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  168. package/server/node_modules/undici/docs/docs/index.md +5 -0
  169. package/server/node_modules/undici/lib/core/request.js +1 -1
  170. package/server/node_modules/undici/lib/core/util.js +6 -1
  171. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  172. package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
  173. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  174. package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
  175. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
  176. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  177. package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
  178. package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
  179. package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
  180. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  181. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  182. package/server/node_modules/undici/lib/util/cache.js +49 -7
  183. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  184. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  185. package/server/node_modules/undici/package.json +2 -2
  186. package/server/node_modules/undici/types/client.d.ts +2 -2
  187. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  188. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  189. package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-BvKkWMJQ.js} +12 -12
  190. package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
  191. package/server/package-lock.json +9 -9
  192. package/server/package.json +1 -1
  193. package/server/{pan-dir-DeVUgwA7.js → pan-dir-B0c3w0Ya.js} +3 -3
  194. package/server/{paths-_zEts6wc.js → paths-D-xWGHdh.js} +2 -2
  195. package/server/{pickup-Dd0Znxxy.js → pickup-DUCLWrJY.js} +17 -16
  196. package/server/{pipeline-membership-0HaEGDlH.js → pipeline-membership-mY3GprlK.js} +7 -7
  197. package/server/{pipeline-notifier-6iCJplFZ.js → pipeline-notifier-BJr8gQX6.js} +1 -1
  198. package/server/{pipeline-notifier-D0ykk59O.js → pipeline-notifier-BXkJzDC4.js} +2 -2
  199. package/server/{project-pipelines-2sK1apsO.js → project-pipelines-C0MWUeCU.js} +2 -2
  200. package/server/project-repos-B6GycDh9.js +94 -0
  201. package/server/project-repos-DXKQsc_m.js +3 -0
  202. package/server/{projects-9SkRpES9.js → projects-vjjcmiN8.js} +1 -1
  203. package/server/{prompts-Dp4Tpk39.js → prompts-DxzFXuLl.js} +2 -2
  204. package/server/{providers-DV7ec8l7.js → providers-qQAwGQDW.js} +7 -7
  205. package/server/{providers-DKkBXhxU.js → providers-u4Ga0jOr.js} +1 -1
  206. package/server/public/assets/{chunk-BO2N2NFS-CltymLRg.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
  207. package/server/public/assets/{diagram-OG6HWLK6-D2f6pjgA.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
  208. package/server/public/assets/{dist-DEmlBBNQ.js → dist-ByIuzMQW.js} +3 -3
  209. package/server/public/assets/{dist-BWR4qFiV.js → dist-D7zYSEA6.js} +1 -1
  210. package/server/public/assets/{ganttDiagram-6RSMTGT7-DnfiViPK.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
  211. package/server/public/assets/{highlighted-body-OFNGDK62-B8Wrmj9H.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
  212. package/server/public/assets/{index-CsSuZQBI.js → index-CWeMerGO.js} +146 -144
  213. package/server/public/assets/{index-CUr1xv8w.css → index-CenuJ3Cw.css} +1 -1
  214. package/server/public/assets/{linear-C9zFQpkX.js → linear-BBbArIcK.js} +1 -1
  215. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
  216. package/server/public/assets/{pieDiagram-4H26LBE5-lR8H7Yjd.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
  217. package/server/public/assets/{prod-B1jCQihw.js → prod-B8vYiu52.js} +4 -4
  218. package/server/public/assets/{quadrantDiagram-W4KKPZXB-CVQ2guem.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
  219. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eD1RB4gm.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
  220. package/server/public/assets/{xychartDiagram-2RQKCTM6-ChEC6dQn.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
  221. package/server/public/index.html +2 -2
  222. package/server/{pull-requests--Ib2jTgy.js → pull-requests-7N8WKseP.js} +1 -1
  223. package/server/{pull-requests-CXIhdCYD.js → pull-requests-_lHueOHW.js} +3 -3
  224. package/server/{queries-6d7Cdtm7.js → queries-CjNIf-Ub.js} +576 -166
  225. package/server/{rally-B708-nZn.js → rally-CyWT_lNO.js} +3 -3
  226. package/server/{rally-api-nY0ZANw3.js → rally-api-C8e_1JRi.js} +2 -2
  227. package/server/{rally-api-yjQ0TfHd.js → rally-api-ClOSd-Tt.js} +1 -1
  228. package/server/{rally-client-B1EJhfV0.js → rally-client-lc-nokqr.js} +4 -4
  229. package/server/{rally-client-CULK2XAY.js → rally-client-sgtVqzNU.js} +1 -1
  230. package/server/rally-zhhtXuDP.js +3 -0
  231. package/server/{reap-terminal-sessions-MWnqdLCJ.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
  232. package/server/{reap-terminal-sessions-N3BTkmX_.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
  233. package/server/rebuild-stack-CFvcBHsS.js +4 -0
  234. package/server/{rebuild-stack-Dp4eLkt4.js → rebuild-stack-lwtsW0GO.js} +26 -35
  235. package/server/{reconstruct-cache-uWbZfjms.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
  236. package/server/{record-t6V-3Dcj.js → record-CN0pj4_5.js} +1 -1
  237. package/server/{record-update-DACtKh6_.js → record-update-bLJxAXH4.js} +1 -1
  238. package/server/{record-update-Dq0t2uBG.js → record-update-dE1Aw83j.js} +2 -2
  239. package/server/{recovery-trip-BJtIQuag.js → recovery-trip-BvRWfUXM.js} +2 -2
  240. package/server/{release-engine-DZpmGGzb.js → release-engine-Cx48W7z8.js} +5 -5
  241. package/server/{release-set-hnXd_kga.js → release-set-CQfuN9-v.js} +3 -3
  242. package/server/{remote-Br-ZWVIP.js → remote-C_2hasl7.js} +3 -3
  243. package/server/{remote-4tiENDaI.js → remote-ChgimyYa.js} +3 -3
  244. package/server/{remote-agents-nmty1mLu.js → remote-agents-By1ige5O.js} +6 -6
  245. package/server/{remote-agents-CRCg1L4H.js → remote-agents-CA3Ihlxj.js} +1 -1
  246. package/server/{remote-completion-BbWNd10K.js → remote-completion-fVe9e_3u.js} +12 -12
  247. package/server/resume-BFv1PGpA.js +3 -0
  248. package/server/{review-agent-sKkE1FEL.js → review-agent-CIGOQYBD.js} +29 -25
  249. package/server/{review-agent-DJRO8EG8.js → review-agent-DNboMyW4.js} +1 -1
  250. package/server/{review-artifacts-BLbSC4ke.js → review-artifacts-nRDPuMxd.js} +5 -5
  251. package/server/{review-context-BgX3lcCx.js → review-context-2uj-YQ8J.js} +69 -25
  252. package/server/{review-status-C6n6-9f_.js → review-status-btEYlaxA.js} +1 -1
  253. package/server/{review-status-enrichment-tbOn_A_u.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
  254. package/server/{review-status-A7quS5KJ.js → review-status-kZj_KyCk.js} +42 -26
  255. package/server/{review-status-sync-BhSQ0d0l.js → review-status-sync-BTOpxtTC.js} +10 -5
  256. package/server/{review-status-sync-To3-iS-N.js → review-status-sync-DSDK3OMy.js} +1 -1
  257. package/server/{review-verdict-feedback-CTRNtzXO.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
  258. package/server/{review-verdict-feedback-C1Kg8n7t.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
  259. package/server/{rollup-B53Y81xK.js → rollup-BKQC7jp4.js} +1 -1
  260. package/server/{rollup-WA0VD-Rr.js → rollup-FGsKki9R.js} +8 -8
  261. package/server/{scanner-D2743cp8.js → scanner-CnqEZeDy.js} +41 -14
  262. package/server/{sequence-io-Cg0zYj_E.js → sequence-io-D909zgeH.js} +4 -4
  263. package/server/{sequencer-agent-BGY8gjg-.js → sequencer-agent-CzkcK6P5.js} +5 -5
  264. package/server/server.js +2194 -341
  265. package/server/{service-DCpB_SGd.js → service-CLeAoU6G.js} +51 -50
  266. package/server/{session-fork-BQ8_6H32.js → session-fork-CHI1XvL9.js} +2 -2
  267. package/server/{session-history-CVZDpS3c.js → session-history-BT3IvqhC.js} +4 -4
  268. package/server/settings-66A6uvIA.js +2 -0
  269. package/server/{settings-BZ5m1UCl.js → settings-BTMvpNFU.js} +3 -3
  270. package/server/{settings-ylxwqwQG.js → settings-C0zgxOGf.js} +2 -2
  271. package/server/{shadow-engineering-BlxG6Xye.js → shadow-engineering-BJfgm-hX.js} +2 -2
  272. package/server/{shadow-state-Dh-HzF2J.js → shadow-state-7a-524T8.js} +2 -2
  273. package/server/{shadow-state-C2_epgx2.js → shadow-state-DnDyjujH.js} +1 -1
  274. package/server/{shadow-utils-4bvjn9b3.js → shadow-utils-Db3oroFG.js} +2 -2
  275. package/server/{ship-log-ClSMIzZX.js → ship-log-D9MlVzYU.js} +1 -1
  276. package/server/{smart-compaction-CHIxLr_d.js → smart-compaction-CV2ukKND.js} +1 -1
  277. package/server/{smart-compaction-r4pHQBIr.js → smart-compaction-KCYScAU1.js} +7 -7
  278. package/server/{spawn-planning-session-DWAorh2B.js → spawn-planning-session-DKpdFyOC.js} +30 -23
  279. package/server/{spawn-planning-session-KC_UduxD.js → spawn-planning-session-qUC2VWu3.js} +1 -1
  280. package/server/{specialist-completion-BXhav38U.js → specialist-completion-Ky9wCDpb.js} +1 -1
  281. package/server/{specialist-context-DtrYvGJ-.js → specialist-context-Bn3dCGS2.js} +5 -5
  282. package/server/{specialist-handoff-logger-C45ouoZ6.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
  283. package/server/{specialist-logs-DJ3RzKxW.js → specialist-logs-C5p8G7tx.js} +3 -3
  284. package/server/{specialists-JVO00bs7.js → specialists-CC4r-c2s.js} +776 -347
  285. package/server/{specialists-D5fRZXmN.js → specialists-CShuVGWT.js} +1 -1
  286. package/server/{specialists-DVj0hvaL.js → specialists-DM6bWjsi.js} +1 -1
  287. package/server/{specialists-DyFeedjn.js → specialists-jiuuyVkp.js} +21 -19
  288. package/server/specs-C8Wsn2XO.js +3 -0
  289. package/server/{src-CG9mCkP6.js → src-CXmtj0im.js} +6 -6
  290. package/server/{src-CMTQGyCK.js → src-CdmnTM2m.js} +5 -5
  291. package/server/{src-U7_kTPEE.js → src-DtcUOZCq.js} +111 -18
  292. package/server/stack-health-Bn3o8FBX.js +3 -0
  293. package/server/{stack-health-puygdaMd.js → stack-health-DxSdG9cW.js} +63 -9
  294. package/server/{stale-task-claims-BbFwCTb0.js → stale-task-claims-KJKxxiiQ.js} +4 -4
  295. package/server/{staleness-Cbl_w4Bw.js → staleness-CT34nwr9.js} +1 -1
  296. package/server/{staleness-Bpy41ngS.js → staleness-DPm7ClwA.js} +1 -1
  297. package/server/{state-home-CIGjwNfJ.js → state-home-Cn_Qu8IX.js} +2 -2
  298. package/server/{state-migrate-Dkzaxvny.js → state-migrate-BGg2ZaOt.js} +4 -4
  299. package/server/{stuck-remediation-CzEov_fq.js → stuck-remediation-DYuPRYYw.js} +300 -23
  300. package/server/{stuck-remediation-sY_MHHgQ.js → stuck-remediation-s9_2qfi6.js} +1 -1
  301. package/server/{substrate-bug-weights-service-BH66lhm7.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
  302. package/server/{summary-fork-DHhJIsAL.js → summary-fork-D1RAk9rJ.js} +78 -12
  303. package/server/{summary-fork-D8bXjCr7.js → summary-fork-DpcxN9tf.js} +2 -2
  304. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
  305. package/server/supervisor/pty-supervisor.js +2 -1
  306. package/server/supervisor/pty-token-x-ea28Us.js +43 -0
  307. package/server/supervisor-FTJAIsAK.js +2 -0
  308. package/server/{supervisor-BO-Zk_h-.js → supervisor-wM4ooB5O.js} +3 -3
  309. package/server/{swarm-readiness-CQ_fwUWF.js → swarm-readiness-DlP_UjHq.js} +3 -3
  310. package/server/{system-prerequisites-Bza0ffAh.js → system-prerequisites-DUDj1YHf.js} +56 -29
  311. package/server/{teardown-workspace-CEgauF4U.js → teardown-workspace-DeTTImn-.js} +15 -15
  312. package/server/{test-agent-queue-DXDt0Xa-.js → test-agent-queue-MbxX5vqq.js} +6 -6
  313. package/server/{test-verdict-CmUBK5cT.js → test-verdict-bWYBtqBg.js} +1 -1
  314. package/server/{test-verdict-DFjjIHR5.js → test-verdict-gscuksPv.js} +1 -1
  315. package/server/{tldr-daemon-DL566HbH.js → tldr-daemon-BYFkts95.js} +1 -1
  316. package/server/{tldr-daemon-BDtLOIlO.js → tldr-daemon-C-69c3OI.js} +2 -2
  317. package/server/{tmux-DoThH6aj.js → tmux-B6z7h_vZ.js} +1 -1
  318. package/server/{tmux-ftABRAmc.js → tmux-R7N7y-Mh.js} +2 -2
  319. package/server/{token-CsOhvw42.js → token-BK6t8BIT.js} +2 -2
  320. package/server/token-util-DuPuNriz.js +3 -0
  321. package/server/{token-util-CTmczIfW.js → token-util-DxXu-vd1.js} +1 -1
  322. package/server/{tracker-config-B4itFzDo.js → tracker-config-G6latr8C.js} +2 -2
  323. package/server/{tracker-utils-BePq_oj-.js → tracker-utils-B4ylXZQK.js} +1 -1
  324. package/server/{tracker-utils-tnxxqROg.js → tracker-utils-DHv5pSDT.js} +2 -2
  325. package/server/{traefik-connect-m73vGebA.js → traefik-connect-Df2uXPsQ.js} +1 -1
  326. package/server/{tunnel-B2vxjx_b.js → tunnel-CDVKJpRv.js} +3 -3
  327. package/server/{tunnel-Cgj-IGIl.js → tunnel-DGdUkGoZ.js} +1 -1
  328. package/server/{types-BBNjPcqU.js → types-5M0lupud.js} +1 -1
  329. package/server/{uat-train-cKfM-_WW.js → uat-train-B05BWkp-.js} +1 -1
  330. package/server/{uat-train-CuEn0t9M.js → uat-train-DDSrSoV1.js} +25 -25
  331. package/server/validate-IfDGkaVR.js +177 -0
  332. package/server/{validation-CIi6pnI2.js → validation-CC9OPqJZ.js} +1 -1
  333. package/server/{validation-B5JxoPUS.js → validation-Dw1pzDzr.js} +4 -4
  334. package/server/{verification-artifact-C-lIHfUa.js → verification-artifact-B3itKTxu.js} +1 -1
  335. package/server/{verification-artifact-BcnIbigL.js → verification-artifact-TVFSz_q1.js} +1 -1
  336. package/server/{verification-runner-CDj4lD4t.js → verification-runner-BW4HOKAz.js} +1 -1
  337. package/server/{verification-runner-Br0S_Ous.js → verification-runner-CkgX6EtI.js} +91 -106
  338. package/server/{vtt-parser-DKpNNW5i.js → vtt-parser-DYPbKcIJ.js} +1 -1
  339. package/server/{work-agent-prompt-Yb2bd3Fq.js → work-agent-prompt-Du8Vh2aJ.js} +9 -9
  340. package/server/workflows-BQu4RFQ-.js +2 -0
  341. package/server/{workflows-C9WmILql.js → workflows-mbQzh6mQ.js} +18 -18
  342. package/server/{workspace-DuUdndHe.js → workspace--8tnhDI0.js} +1 -1
  343. package/server/{workspace-BVl4rihN.js → workspace-BPUws1-_.js} +3 -3
  344. package/server/{workspace-config-cEGcO6UT.js → workspace-config-CIVWZOQr.js} +1 -1
  345. package/server/{workspace-manager-hLUv3ADC.js → workspace-manager-CBhNdzE4.js} +66 -15
  346. package/server/workspace-manager-CWT55qeI.js +3 -0
  347. package/server/{workspace-metadata-DNpMixRq.js → workspace-metadata-BzHnwwX4.js} +1 -1
  348. package/server/{workspace-metadata-CskwzzhL.js → workspace-metadata-_WygnyoX.js} +2 -2
  349. package/server/{workspaces-hWvy9eKs.js → workspaces-Do_9J0LQ.js} +130 -111
  350. package/sync-sources/hooks/record-cost-event.js +6 -4
  351. package/sync-sources/skills/okf/README.md +11 -3
  352. package/sync-sources/skills/okf/SKILL.md +12 -1
  353. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  354. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  355. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  356. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  357. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  358. package/sync-sources/skills/pan-start/SKILL.md +4 -0
  359. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  360. package/server/agent-state-Bg0lhqwj.js +0 -3
  361. package/server/agents-FlIgQ3ql.js +0 -3
  362. package/server/cli-BsVIHwzC.js +0 -3
  363. package/server/context-layers-B3Nt58jl.js +0 -4
  364. package/server/context-layers-ZYFcWiyc.js +0 -165
  365. package/server/deacon-swarm-9jRLS5Ke.js +0 -2
  366. package/server/dist-Bd3vn0Hw.js +0 -3
  367. package/server/flywheel-DMCUzDWg.js +0 -2
  368. package/server/flywheel-DSSpWmqF.js +0 -522
  369. package/server/flywheel-DcBkQvgE.js +0 -207
  370. package/server/forge-B-ZWyTRm.js +0 -2
  371. package/server/git-utils-Dry_Ka_D.js +0 -3
  372. package/server/hume-B_DbflNM.js +0 -3
  373. package/server/inspect-agent-ch-F-5Ci.js +0 -2
  374. package/server/layers-DzxSTGNA.js +0 -93
  375. package/server/merge-blockers-BsFjGrQ8.js +0 -41
  376. package/server/merge-ops-DlB1IM0Y.js +0 -2
  377. package/server/merge-set-DLz0MkGT.js +0 -139
  378. package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +0 -1
  379. package/server/rally-njs_mJrt.js +0 -3
  380. package/server/rebuild-stack-kA7XngID.js +0 -3
  381. package/server/resume-CcKqnTvE.js +0 -3
  382. package/server/settings-D0OSwos5.js +0 -2
  383. package/server/specs-nN45DG2X.js +0 -3
  384. package/server/stack-health-Df0YEZKa.js +0 -3
  385. package/server/supervisor-BPy-o1A8.js +0 -2
  386. package/server/token-util-DrHg8abn.js +0 -3
  387. package/server/workflows-D90rMOya.js +0 -2
  388. package/server/workspace-manager-ZTdJAy9M.js +0 -3
@@ -0,0 +1,177 @@
1
+ import { c as init_review_status_sync, r as getAllReviewStatusesFromDb } from "./review-status-sync-BTOpxtTC.js";
2
+ import { H as liveOrderIssueLookup, V as listBooks } from "./flywheel-DHrgCphM.js";
3
+ import { join } from "node:path";
4
+ import { existsSync, readdirSync, statSync } from "node:fs";
5
+ //#region ../../lib/cloister/merge-blockers.ts
6
+ init_review_status_sync();
7
+ /**
8
+ * PRs that passed review but cannot merge for a GitHub-native reason (PAN-1620):
9
+ * merge_conflict / failing_checks / not_mergeable. These sit forever unless rebased.
10
+ *
11
+ * Reads `review_status` directly from SQLite — NO HTTP — so it works inside a
12
+ * network-sandboxed harness (e.g. codex's bwrap sandbox) where a `curl` to the
13
+ * dashboard's `/api/flywheel/merge-blockers` cannot reach `127.0.0.1:3011`.
14
+ * Shared by the dashboard route and the `pan flywheel merge-blockers` CLI so the
15
+ * two surfaces can never disagree.
16
+ */
17
+ const MERGE_BLOCKER_TYPES = new Set([
18
+ "merge_conflict",
19
+ "failing_checks",
20
+ "not_mergeable"
21
+ ]);
22
+ function getMergeBlockersPayload() {
23
+ const statuses = getAllReviewStatusesFromDb();
24
+ const out = [];
25
+ for (const [issueId, status] of Object.entries(statuses)) {
26
+ if (status.reviewStatus !== "passed") continue;
27
+ if (status.mergeStatus === "merged") continue;
28
+ const reasons = (status.blockerReasons ?? []).filter((b) => MERGE_BLOCKER_TYPES.has(b.type));
29
+ if (reasons.length === 0) continue;
30
+ out.push({
31
+ issueId,
32
+ prUrl: status.prUrl,
33
+ reasons: reasons.map((b) => ({
34
+ type: b.type,
35
+ summary: b.summary
36
+ }))
37
+ });
38
+ }
39
+ return out;
40
+ }
41
+ //#endregion
42
+ //#region ../../lib/orders/validate.ts
43
+ function hasNonEmptyFile(path) {
44
+ try {
45
+ return existsSync(path) && statSync(path).isFile() && statSync(path).size > 0;
46
+ } catch {
47
+ return false;
48
+ }
49
+ }
50
+ function issuePattern(issueId) {
51
+ const escaped = issueId.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
52
+ return new RegExp(`(?:^|[-_])${escaped}(?:[-_.]|$)`, "i");
53
+ }
54
+ function nonEmptyFileNames(directory) {
55
+ if (!existsSync(directory)) return [];
56
+ return readdirSync(directory).filter((name) => hasNonEmptyFile(join(directory, name)));
57
+ }
58
+ function createOrderPrdLookup(stateRoot) {
59
+ const draftNames = new Set([...nonEmptyFileNames(join(stateRoot, "drafts")), ...nonEmptyFileNames(join(stateRoot, ".pan", "drafts"))].map((name) => name.toLowerCase()));
60
+ const specNames = [...nonEmptyFileNames(join(stateRoot, "specs")), ...nonEmptyFileNames(join(stateRoot, ".pan", "specs"))];
61
+ return (issueId) => {
62
+ const lower = issueId.toLowerCase();
63
+ if (draftNames.has(`${lower}.md`)) return true;
64
+ const pattern = issuePattern(issueId);
65
+ return specNames.some((name) => pattern.test(name));
66
+ };
67
+ }
68
+ function hasOrderIssuePrd(stateRoot, issueId) {
69
+ const lower = issueId.toLowerCase();
70
+ if ([join(stateRoot, "drafts", `${lower}.md`), join(stateRoot, ".pan", "drafts", `${lower}.md`)].some(hasNonEmptyFile)) return true;
71
+ for (const specsDir of [join(stateRoot, "specs"), join(stateRoot, ".pan", "specs")]) {
72
+ if (!existsSync(specsDir)) continue;
73
+ const pattern = issuePattern(issueId);
74
+ if (readdirSync(specsDir).some((name) => pattern.test(name) && hasNonEmptyFile(join(specsDir, name)))) return true;
75
+ }
76
+ return false;
77
+ }
78
+ function findCycle(book) {
79
+ const issues = new Set(book.items.map((item) => item.issue.toUpperCase()));
80
+ const edges = new Map(book.items.map((item) => [item.issue.toUpperCase(), item.prereqs.map((prereq) => prereq.toUpperCase()).filter((prereq) => issues.has(prereq))]));
81
+ const visiting = /* @__PURE__ */ new Set();
82
+ const visited = /* @__PURE__ */ new Set();
83
+ const path = [];
84
+ const visit = (issue) => {
85
+ if (visiting.has(issue)) {
86
+ const start = path.indexOf(issue);
87
+ return [...path.slice(start), issue];
88
+ }
89
+ if (visited.has(issue)) return null;
90
+ visiting.add(issue);
91
+ path.push(issue);
92
+ for (const prereq of edges.get(issue) ?? []) {
93
+ const cycle = visit(prereq);
94
+ if (cycle) return cycle;
95
+ }
96
+ path.pop();
97
+ visiting.delete(issue);
98
+ visited.add(issue);
99
+ return null;
100
+ };
101
+ for (const issue of issues) {
102
+ const cycle = visit(issue);
103
+ if (cycle) return cycle;
104
+ }
105
+ return null;
106
+ }
107
+ function validateBookForStart(stateRoot, book, options = {}) {
108
+ const blocks = [];
109
+ const warns = [];
110
+ if (book.items.length === 0) blocks.push({
111
+ code: "empty-book",
112
+ issue: book.id,
113
+ message: "Order book must contain at least one issue"
114
+ });
115
+ const issueLookup = options.issueLookup ?? liveOrderIssueLookup;
116
+ const ids = /* @__PURE__ */ new Set();
117
+ for (const item of book.items) {
118
+ ids.add(item.issue.toUpperCase());
119
+ item.prereqs.forEach((prereq) => ids.add(prereq.toUpperCase()));
120
+ }
121
+ const issueState = issueLookup([...ids]);
122
+ for (const item of book.items) {
123
+ const issue = item.issue.toUpperCase();
124
+ const state = issueState.get(issue);
125
+ if (!state?.open) blocks.push({
126
+ code: "issue-not-open",
127
+ issue,
128
+ message: state ? `${issue} is not open` : `${issue} could not be resolved as an open issue`
129
+ });
130
+ }
131
+ for (const other of options.books ?? listBooks(stateRoot)) {
132
+ if (other.id === book.id || other.status === "complete") continue;
133
+ for (const item of other.items) {
134
+ const issue = item.issue.toUpperCase();
135
+ if (!ids.has(issue) || !book.items.some((candidate) => candidate.issue.toUpperCase() === issue)) continue;
136
+ blocks.push({
137
+ code: "duplicate-membership",
138
+ issue,
139
+ message: `${issue} already belongs to non-complete order book ${other.id}`
140
+ });
141
+ }
142
+ }
143
+ const bookIssues = new Set(book.items.map((item) => item.issue.toUpperCase()));
144
+ for (const item of book.items) for (const rawPrereq of item.prereqs) {
145
+ const prereq = rawPrereq.toUpperCase();
146
+ if (!bookIssues.has(prereq) && !issueState.has(prereq)) blocks.push({
147
+ code: "unresolved-prerequisite",
148
+ issue: item.issue,
149
+ message: `${item.issue} prerequisite ${prereq} could not be resolved`
150
+ });
151
+ }
152
+ const cycle = findCycle(book);
153
+ if (cycle) blocks.push({
154
+ code: "prerequisite-cycle",
155
+ issue: cycle[0],
156
+ message: `Prerequisite cycle: ${cycle.join(" → ")}`
157
+ });
158
+ const hasPrd = options.hasPrd ?? ((issueId) => hasOrderIssuePrd(stateRoot, issueId));
159
+ for (const item of book.items) {
160
+ if (item.lane !== "B" || hasPrd(item.issue)) continue;
161
+ const finding = {
162
+ code: "missing-prd",
163
+ issue: item.issue,
164
+ message: `${item.issue} has no draft PRD or canonical spec`
165
+ };
166
+ if (item.planAtPickup) warns.push(finding);
167
+ else blocks.push(finding);
168
+ }
169
+ return {
170
+ blocks,
171
+ warns
172
+ };
173
+ }
174
+ //#endregion
175
+ export { getMergeBlockersPayload as i, hasOrderIssuePrd as n, validateBookForStart as r, createOrderPrdLookup as t };
176
+
177
+ //# sourceMappingURL=validate-IfDGkaVR.js.map
@@ -1,3 +1,3 @@
1
- import { i as runQualityGates, n as init_validation, r as killAllGateProcessGroups } from "./validation-B5JxoPUS.js";
1
+ import { i as runQualityGates, n as init_validation, r as killAllGateProcessGroups } from "./validation-Dw1pzDzr.js";
2
2
  init_validation();
3
3
  export { killAllGateProcessGroups, runQualityGates };
@@ -1,7 +1,7 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Br as getOverdeckHome, Vr as init_paths, mr as init_errors } from "./config-yaml-DvyMuOle.js";
3
- import { f as init_config, m as loadConfigSync } from "./config-CCvjQf27.js";
4
- import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-cEGcO6UT.js";
2
+ import { Br as getOverdeckHome, Vr as init_paths, mr as init_errors } from "./config-yaml-DySPNmKN.js";
3
+ import { f as init_config, m as loadConfigSync } from "./config-BZ0sHTju.js";
4
+ import { n as init_workspace_config, r as replacePlaceholdersSync } from "./workspace-config-CIVWZOQr.js";
5
5
  import { join } from "node:path";
6
6
  import { Effect } from "effect";
7
7
  import "fs";
@@ -522,4 +522,4 @@ var init_validation = __esmMin((() => {
522
522
  //#endregion
523
523
  export { runQualityGates as i, init_validation as n, killAllGateProcessGroups as r, DEFAULT_GATES as t };
524
524
 
525
- //# sourceMappingURL=validation-B5JxoPUS.js.map
525
+ //# sourceMappingURL=validation-Dw1pzDzr.js.map
@@ -1,2 +1,2 @@
1
- import { t as readVerificationArtifact } from "./verification-artifact-BcnIbigL.js";
1
+ import { t as readVerificationArtifact } from "./verification-artifact-TVFSz_q1.js";
2
2
  export { readVerificationArtifact };
@@ -53,4 +53,4 @@ function readVerificationArtifact(workspacePath) {
53
53
  //#endregion
54
54
  export { verificationArtifactPath as n, writeVerificationArtifact as r, readVerificationArtifact as t };
55
55
 
56
- //# sourceMappingURL=verification-artifact-BcnIbigL.js.map
56
+ //# sourceMappingURL=verification-artifact-TVFSz_q1.js.map
@@ -1,2 +1,2 @@
1
- import { n as reconcileInterruptedVerifications, r as runVerificationForIssue } from "./verification-runner-Br0S_Ous.js";
1
+ import { n as reconcileInterruptedVerifications, r as runVerificationForIssue } from "./verification-runner-CkgX6EtI.js";
2
2
  export { reconcileInterruptedVerifications, runVerificationForIssue };
@@ -1,23 +1,22 @@
1
- import { Br as getOverdeckHome, Tn as init_projects, Ur as packageRoot, Vr as init_paths, Yn as init_issue_id, Yt as init_state_plane, fn as findProjectByPathSync, mr as init_errors, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
2
- import { b as setReviewStatusSync, c as getReviewStatusSync, l as init_review_status, p as markWorkspaceStuck } from "./review-status-A7quS5KJ.js";
3
- import { X as messageAgent, ar as setAgentPaused, b as init_agents, ft as stopAgent } from "./queries-6d7Cdtm7.js";
4
- import { n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
1
+ import { Br as getOverdeckHome, Tn as init_projects, Ur as packageRoot, Vr as init_paths, Yn as init_issue_id, Yt as init_state_plane, fn as findProjectByPathSync, mr as init_errors, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
2
+ import { b as setReviewStatusSync, c as getReviewStatusSync, l as init_review_status, p as markWorkspaceStuck } from "./review-status-kZj_KyCk.js";
3
+ import { X as messageAgent, b as init_agents, ft as stopAgent, ur as setAgentPaused } from "./queries-CjNIf-Ub.js";
4
+ import { n as init_tracker_utils } from "./tracker-utils-DHv5pSDT.js";
5
5
  import { i as readReviewStatusMap, n as init_review_status_source } from "./review-status-source-CxuEjLGg.js";
6
- import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-DfeyBDwA.js";
7
- import { m as readWorkspacePlanSync, o as init_io, t as XBriefMergeConflictError, v as init_types, y as subItemsOf } from "./io-B3_AHDfr.js";
8
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-C9b6ccN1.js";
9
- import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-CPS15Vte.js";
10
- import { n as init_shadow_utils } from "./shadow-utils-4bvjn9b3.js";
11
- import { i as runQualityGates, n as init_validation, t as DEFAULT_GATES } from "./validation-B5JxoPUS.js";
12
- import { r as writeVerificationArtifact, t as readVerificationArtifact } from "./verification-artifact-BcnIbigL.js";
13
- import { n as getXBriefACStatusSync } from "./acceptance-criteria-DOA0KgXx.js";
6
+ import { c as resolveWorkspaceRepoRootsSync, r as init_project_repos } from "./project-repos-B6GycDh9.js";
7
+ import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-yPd___5E.js";
8
+ import { m as readWorkspacePlanSync, o as init_io, t as XBriefMergeConflictError, v as init_types, y as subItemsOf } from "./io-C9kF1wtJ.js";
9
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-CY5L1lB7.js";
10
+ import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-7mqqwrX6.js";
11
+ import { n as init_shadow_utils } from "./shadow-utils-Db3oroFG.js";
12
+ import { i as runQualityGates, n as init_validation, t as DEFAULT_GATES } from "./validation-Dw1pzDzr.js";
13
+ import { r as writeVerificationArtifact, t as readVerificationArtifact } from "./verification-artifact-TVFSz_q1.js";
14
+ import { n as getXBriefACStatusSync } from "./acceptance-criteria-DDCnXF58.js";
14
15
  import { join } from "node:path";
15
16
  import { Data, Effect } from "effect";
16
- import { existsSync } from "fs";
17
17
  import { basename as basename$1, dirname as dirname$1, join as join$1 } from "path";
18
18
  import { homedir } from "os";
19
- import { closeSync as closeSync$1, existsSync as existsSync$1, mkdirSync as mkdirSync$1, openSync as openSync$1, readFileSync as readFileSync$1, renameSync as renameSync$1, writeFileSync as writeFileSync$1 } from "node:fs";
20
- import { readdir } from "fs/promises";
19
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, writeFileSync } from "node:fs";
21
20
  import { exec, spawn } from "node:child_process";
22
21
  import { promisify } from "node:util";
23
22
  import { exec as exec$1 } from "child_process";
@@ -58,7 +57,7 @@ function isProcessAlive(pid) {
58
57
  }
59
58
  function readVerificationWorkerState(issueId) {
60
59
  try {
61
- const parsed = JSON.parse(readFileSync$1(statePath(issueId), "utf8"));
60
+ const parsed = JSON.parse(readFileSync(statePath(issueId), "utf8"));
62
61
  if (parsed.issueId !== issueId || !Number.isInteger(parsed.pid) || typeof parsed.runId !== "string" || typeof parsed.workspacePath !== "string" || typeof parsed.startedAt !== "string" || typeof parsed.resultPath !== "string") return null;
63
62
  return {
64
63
  ...parsed,
@@ -77,12 +76,12 @@ function readVerificationWorkerState(issueId) {
77
76
  }
78
77
  function isVerificationWorkerActive(issueId) {
79
78
  const state = readVerificationWorkerState(issueId);
80
- return !!state && isProcessAlive(state.pid) && !existsSync$1(state.resultPath);
79
+ return !!state && isProcessAlive(state.pid) && !existsSync(state.resultPath);
81
80
  }
82
81
  function writeJsonAtomic(path, value) {
83
82
  const temp = `${path}.${process.pid}.tmp`;
84
- writeFileSync$1(temp, `${JSON.stringify(value, null, 2)}\n`);
85
- renameSync$1(temp, path);
83
+ writeFileSync(temp, `${JSON.stringify(value, null, 2)}\n`);
84
+ renameSync(temp, path);
86
85
  }
87
86
  function verificationWorkerDeadline(state) {
88
87
  if (!state.admittedAt) return null;
@@ -102,7 +101,7 @@ function markVerificationWorkerAdmissionPhase(issueId, update) {
102
101
  }
103
102
  async function waitForResult(state) {
104
103
  for (;;) {
105
- if (existsSync$1(state.resultPath)) return JSON.parse(readFileSync$1(state.resultPath, "utf8"));
104
+ if (existsSync(state.resultPath)) return JSON.parse(readFileSync(state.resultPath, "utf8"));
106
105
  if (!isProcessAlive(state.pid)) return {
107
106
  outcome: "error",
108
107
  message: `Verification worker ${state.pid} exited before writing a result`
@@ -117,21 +116,21 @@ async function waitForResult(state) {
117
116
  }
118
117
  async function runSupervisedVerification(issueId, workspacePath, workspaceInfo, logPrefix, options = {}) {
119
118
  const existing = readVerificationWorkerState(issueId);
120
- if (existing && existing.workspacePath === workspacePath && isProcessAlive(existing.pid) && !existsSync$1(existing.resultPath)) {
119
+ if (existing && existing.workspacePath === workspacePath && isProcessAlive(existing.pid) && !existsSync(existing.resultPath)) {
121
120
  console.log(`[${logPrefix}] Joining live verification worker ${existing.pid} for ${issueId}`);
122
121
  return waitForResult(existing);
123
122
  }
124
123
  const dir = workerDir(issueId);
125
- mkdirSync$1(dir, { recursive: true });
124
+ mkdirSync(dir, { recursive: true });
126
125
  const runId = `${Date.now()}-${process.pid}`;
127
126
  const resultPath = join(dir, `result-${runId}.json`);
128
127
  const logPath = join(dir, `worker-${runId}.log`);
129
128
  const workerPath = process.env.OVERDECK_VERIFICATION_WORKER_PATH || join(packageRoot, "dist", "verification-worker.js");
130
- if (!existsSync$1(workerPath)) return {
129
+ if (!existsSync(workerPath)) return {
131
130
  outcome: "error",
132
131
  message: `Verification worker bundle missing at ${workerPath}; run npm run build`
133
132
  };
134
- const logFd = openSync$1(logPath, "a");
133
+ const logFd = openSync(logPath, "a");
135
134
  const child = spawn(process.execPath, [workerPath, JSON.stringify({
136
135
  issueId,
137
136
  workspacePath,
@@ -152,7 +151,7 @@ async function runSupervisedVerification(issueId, workspacePath, workspaceInfo,
152
151
  OVERDECK_VERIFICATION_WORKER: "1"
153
152
  }
154
153
  });
155
- closeSync$1(logFd);
154
+ closeSync(logFd);
156
155
  if (!child.pid) return {
157
156
  outcome: "error",
158
157
  message: "Failed to spawn verification worker"
@@ -176,6 +175,7 @@ async function runSupervisedVerification(issueId, workspacePath, workspaceInfo,
176
175
  //#region ../../lib/work/test-requirement-gate.ts
177
176
  init_projects();
178
177
  init_state_plane();
178
+ init_project_repos();
179
179
  init_lifecycle();
180
180
  init_types();
181
181
  init_io();
@@ -345,29 +345,6 @@ async function deliverVerificationFeedback(issueId, message, details, logPrefix)
345
345
  ...details
346
346
  });
347
347
  }
348
- async function resolveGitDirs(workspacePath, projectConfig) {
349
- if (!(projectConfig?.workspace?.type === "polyrepo") && existsSync(join$1(workspacePath, ".git"))) return {
350
- gitDirs: [workspacePath],
351
- isPolyrepo: false
352
- };
353
- const gitDirs = [];
354
- try {
355
- const entries = await readdir(workspacePath, { withFileTypes: true });
356
- for (const entry of entries) if (entry.isDirectory() && !entry.name.startsWith(".") && existsSync(join$1(workspacePath, entry.name, ".git"))) gitDirs.push(join$1(workspacePath, entry.name));
357
- } catch {}
358
- if (gitDirs.length > 0) return {
359
- gitDirs,
360
- isPolyrepo: true
361
- };
362
- if (existsSync(join$1(workspacePath, ".git"))) return {
363
- gitDirs: [workspacePath],
364
- isPolyrepo: false
365
- };
366
- return {
367
- gitDirs: [],
368
- isPolyrepo: false
369
- };
370
- }
371
348
  async function syncSingleRepo(gitDir, targetBranch) {
372
349
  const repoName = basename$1(gitDir);
373
350
  try {
@@ -455,6 +432,26 @@ function getSyncTargetBranch(workspacePath, projectConfig, repoName) {
455
432
  function changesetHasNoContent(changedFiles) {
456
433
  return changedFiles.map((f) => f.trim()).filter(Boolean).filter((f) => !f.startsWith(".pan/") && !isXBriefFilename(f)).length === 0;
457
434
  }
435
+ /**
436
+ * Return whether any actual workspace repository contains implementation
437
+ * changes. `undefined` means at least one repo diff failed and no positive
438
+ * evidence was found, so callers must conservatively skip the empty guard.
439
+ */
440
+ async function workspaceChangesetHasContent(issueId, workspacePath) {
441
+ const roots = resolveWorkspaceRepoRootsSync(issueId, workspacePath);
442
+ let diffFailed = false;
443
+ for (const root of roots) try {
444
+ const { stdout } = await execAsync(`git diff --name-only origin/${root.targetBranch}...HEAD`, {
445
+ cwd: root.dir,
446
+ encoding: "utf-8",
447
+ timeout: 15e3
448
+ });
449
+ if (!changesetHasNoContent(stdout.split("\n"))) return true;
450
+ } catch {
451
+ diffFailed = true;
452
+ }
453
+ return diffFailed ? void 0 : false;
454
+ }
458
455
  async function runVerificationForIssuePromise(issueId, workspacePath, workspaceInfo, logPrefix, options = {}) {
459
456
  const currentStatus = getReviewStatusSync(issueId);
460
457
  const mergedOutcome = skipMergedVerification(issueId, logPrefix, currentStatus);
@@ -473,16 +470,15 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
473
470
  console.log(`[${logPrefix}] Running verification gate for ${issueId} (attempt ${currentCycles + 1}/3)`);
474
471
  try {
475
472
  const projectConfig = findProjectByPathSync(workspacePath);
476
- const { gitDirs, isPolyrepo } = await resolveGitDirs(workspacePath, projectConfig);
477
- if (options.syncTargetBranch !== false) if (gitDirs.length === 0) console.log(`[${logPrefix}] No git directories found in workspace ${workspacePath} — skipping sync`);
473
+ const repoRoots = resolveWorkspaceRepoRootsSync(issueId, workspacePath);
474
+ const isPolyrepo = repoRoots.some((root) => root.isPolyrepo);
475
+ if (options.syncTargetBranch !== false) if (repoRoots.length === 0) console.log(`[${logPrefix}] No git directories found in workspace ${workspacePath} — skipping sync`);
478
476
  else {
479
477
  const syncResults = [];
480
- for (const gitDir of gitDirs) {
481
- const repoName = isPolyrepo ? basename$1(gitDir) : void 0;
482
- const targetBranch = getSyncTargetBranch(workspacePath, projectConfig, repoName);
483
- const displayName = repoName || basename$1(workspacePath);
484
- console.log(`[${logPrefix}] Syncing ${targetBranch} into ${displayName} for ${issueId}...`);
485
- syncResults.push(await syncSingleRepo(gitDir, targetBranch));
478
+ for (const root of repoRoots) {
479
+ const displayName = (isPolyrepo ? root.repoKey : void 0) || basename$1(workspacePath);
480
+ console.log(`[${logPrefix}] Syncing ${root.targetBranch} into ${displayName} for ${issueId}...`);
481
+ syncResults.push(await syncSingleRepo(root.dir, root.targetBranch));
486
482
  }
487
483
  const postSyncMergedOutcome = skipMergedVerification(issueId, logPrefix);
488
484
  if (postSyncMergedOutcome) return postSyncMergedOutcome;
@@ -541,7 +537,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
541
537
  const featureName = featureFolder.replace(/^feature-/, "");
542
538
  const projectPath = projectConfig?.path || dirname$1(dirname$1(workspacePath));
543
539
  const domain = projectConfig?.workspace?.dns?.domain || "localhost";
544
- const changedBase = `origin/${getSyncTargetBranch(workspacePath, projectConfig, void 0)}`;
540
+ const changedBase = `origin/${repoRoots[0]?.targetBranch ?? getSyncTargetBranch(workspacePath, projectConfig, void 0)}`;
545
541
  const placeholders = {
546
542
  FEATURE_NAME: featureName,
547
543
  FEATURE_FOLDER: featureFolder,
@@ -637,12 +633,11 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
637
633
  verificationNotes: `Verification deferred: ${failedGate.error}. Workspace stack rebuild triggered; verification re-runs on the next cycle.`
638
634
  });
639
635
  try {
640
- const { rebuildWorkspaceStack } = await import("./rebuild-stack-kA7XngID.js");
641
- Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[${logPrefix}] ${issueId} stack rebuild: ${m}`) })).then((r) => {
642
- if (!r.success) console.warn(`[${logPrefix}] Stack rebuild for ${issueId} failed: ${r.error}`);
643
- });
636
+ const { rebuildWorkspaceStack } = await import("./rebuild-stack-CFvcBHsS.js");
637
+ const rebuildResult = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[${logPrefix}] ${issueId} stack rebuild: ${m}`) }));
638
+ if (!rebuildResult.success) console.warn(`[${logPrefix}] Stack rebuild for ${issueId} failed: ${rebuildResult.error}`);
644
639
  } catch (err) {
645
- console.warn(`[${logPrefix}] Could not trigger stack rebuild for ${issueId}: ${err instanceof Error ? err.message : String(err)}`);
640
+ console.warn(`[${logPrefix}] Could not settle stack rebuild for ${issueId}: ${err instanceof Error ? err.message : String(err)}`);
646
641
  }
647
642
  return {
648
643
  outcome: "failed",
@@ -799,53 +794,43 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
799
794
  maxCycles: 3
800
795
  };
801
796
  }
802
- try {
803
- const { stdout: changedOut } = await execAsync(`git diff --name-only ${changedBase}...HEAD`, {
804
- cwd: workspacePath,
805
- encoding: "utf-8",
806
- timeout: 15e3
797
+ const changesetHasContent = await workspaceChangesetHasContent(issueId, workspacePath);
798
+ const postDiffMergedOutcome = skipMergedVerification(issueId, logPrefix);
799
+ if (postDiffMergedOutcome) return postDiffMergedOutcome;
800
+ if (changesetHasContent === false) {
801
+ const newCycleCount = currentCycles + 1;
802
+ const failedCheck = "empty-changeset";
803
+ const comparedTargets = repoRoots.map((root) => `${root.repoKey}:origin/${root.targetBranch}`).join(", ");
804
+ const summary = `Branch has no implementation — only pipeline artifacts (.pan/xBRIEF task state) changed across workspace repos vs ${comparedTargets}. The work agent produced no code (likely a kickoff-delivery zombie — PAN-2179).`;
805
+ setReviewStatusSync(issueId, {
806
+ reviewStatus: "pending",
807
+ verificationStatus: "failed",
808
+ verificationNotes: summary,
809
+ verificationCycleCount: newCycleCount,
810
+ verificationMaxCycles: 3
807
811
  });
808
- const postDiffMergedOutcome = skipMergedVerification(issueId, logPrefix);
809
- if (postDiffMergedOutcome) return postDiffMergedOutcome;
810
- if (changesetHasNoContent(changedOut.split("\n"))) {
811
- const newCycleCount = currentCycles + 1;
812
- const failedCheck = "empty-changeset";
813
- const summary = `Branch has no implementation — only pipeline artifacts (.pan/xBRIEF task state) changed vs ${changedBase}. The work agent produced no code (likely a kickoff-delivery zombie — PAN-2179).`;
814
- setReviewStatusSync(issueId, {
815
- reviewStatus: "pending",
816
- verificationStatus: "failed",
817
- verificationNotes: summary,
818
- verificationCycleCount: newCycleCount,
819
- verificationMaxCycles: 3
820
- });
821
- if (shouldEscalateVerificationFailure(currentStatus, failedCheck, newCycleCount)) await escalateVerificationStuck(issueId, failedCheck, newCycleCount, summary, logPrefix);
822
- try {
823
- await deliverVerificationFeedback(issueId, shouldEscalateVerificationFailure(currentStatus, failedCheck, newCycleCount) ? `VERIFICATION STUCK for ${issueId}.\nFailed check: ${failedCheck} after ${newCycleCount}/3 attempts — branch still has no implementation.\n\n${buildFinalFailureInstructions(issueId)}` : `VERIFICATION FAILED for ${issueId}.\nFailed check: ${failedCheck} — your branch contains NO code (only .pan/xBRIEF task state changed vs ${changedBase}).\n\nYou must actually implement the issue: read the plan (.pan/spec.vbrief.json + the issue body), write and commit the code, push, then run pan review request. Do NOT stop at the prompt — keep working until pan review request completes.`, {
824
- failedCheck,
825
- changedBase
826
- }, logPrefix);
827
- console.error(`[${logPrefix}] VERIFICATION FAILED for ${issueId}: empty-changeset (no content files vs ${changedBase})`);
828
- } catch (feedbackErr) {
829
- console.error(`[${logPrefix}] Failed to send empty-changeset feedback for ${issueId}:`, feedbackErr);
830
- }
831
- return {
832
- outcome: "failed",
812
+ if (shouldEscalateVerificationFailure(currentStatus, failedCheck, newCycleCount)) await escalateVerificationStuck(issueId, failedCheck, newCycleCount, summary, logPrefix);
813
+ try {
814
+ await deliverVerificationFeedback(issueId, shouldEscalateVerificationFailure(currentStatus, failedCheck, newCycleCount) ? `VERIFICATION STUCK for ${issueId}.\nFailed check: ${failedCheck} after ${newCycleCount}/3 attempts — branch still has no implementation.\n\n${buildFinalFailureInstructions(issueId)}` : `VERIFICATION FAILED for ${issueId}.\nFailed check: ${failedCheck} — your branch contains NO code (only .pan/xBRIEF task state changed across ${comparedTargets}).\n\nYou must actually implement the issue: read the plan (.pan/spec.vbrief.json + the issue body), write and commit the code, push, then run pan review request. Do NOT stop at the prompt — keep working until pan review request completes.`, {
833
815
  failedCheck,
834
- cycleCount: newCycleCount,
835
- maxCycles: 3
836
- };
816
+ changedBase: comparedTargets
817
+ }, logPrefix);
818
+ console.error(`[${logPrefix}] VERIFICATION FAILED for ${issueId}: empty-changeset (no content files across ${comparedTargets})`);
819
+ } catch (feedbackErr) {
820
+ console.error(`[${logPrefix}] Failed to send empty-changeset feedback for ${issueId}:`, feedbackErr);
837
821
  }
838
- } catch (diffErr) {
839
- console.warn(`[${logPrefix}] empty-changeset guard skipped (diff failed): ${diffErr.message}`);
822
+ return {
823
+ outcome: "failed",
824
+ failedCheck,
825
+ cycleCount: newCycleCount,
826
+ maxCycles: 3
827
+ };
840
828
  }
829
+ if (changesetHasContent === void 0) console.warn(`[${logPrefix}] empty-changeset guard skipped (one or more repo diffs failed)`);
841
830
  let lastVerifiedCommit;
842
831
  try {
843
- const { stdout } = await execAsync("git rev-parse HEAD", {
844
- cwd: workspacePath,
845
- encoding: "utf-8",
846
- timeout: 5e3
847
- });
848
- lastVerifiedCommit = stdout.trim();
832
+ const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-D0_yhCgF.js");
833
+ lastVerifiedCommit = await snapshotWorkspaceHeadsPromise(issueId, workspacePath);
849
834
  } catch {}
850
835
  const prePassMergedOutcome = skipMergedVerification(issueId, logPrefix);
851
836
  if (prePassMergedOutcome) return prePassMergedOutcome;
@@ -860,7 +845,7 @@ async function runVerificationForIssuePromise(issueId, workspacePath, workspaceI
860
845
  const repo = findProjectByPathSync(workspacePath)?.github_repo;
861
846
  if (!repo || !repo.includes("/")) return;
862
847
  const [owner, name] = repo.split("/");
863
- const { postOverdeckTestsStatus } = await import("./github-app-CPfoFAdV.js");
848
+ const { postOverdeckTestsStatus } = await import("./github-app-ClZ2lk8D.js");
864
849
  await postOverdeckTestsStatus(workspacePath, owner, name, "success", "Verification gate passed");
865
850
  } catch (err) {
866
851
  console.warn(`[${logPrefix}] Failed to post overdeck/tests status: ${err.message}`);
@@ -896,6 +881,6 @@ function runVerificationForIssueInProcess(issueId, workspacePath, workspaceInfo,
896
881
  return Effect.promise(() => runVerificationForIssuePromise(issueId, workspacePath, workspaceInfo, logPrefix, options));
897
882
  }
898
883
  //#endregion
899
- export { runVerificationForIssueInProcess as i, reconcileInterruptedVerifications as n, runVerificationForIssue as r, changesetHasNoContent as t };
884
+ export { workspaceChangesetHasContent as a, runVerificationForIssueInProcess as i, reconcileInterruptedVerifications as n, runVerificationForIssue as r, changesetHasNoContent as t };
900
885
 
901
- //# sourceMappingURL=verification-runner-Br0S_Ous.js.map
886
+ //# sourceMappingURL=verification-runner-CkgX6EtI.js.map
@@ -107,4 +107,4 @@ function consolidateSpeakerCues(cues) {
107
107
  //#endregion
108
108
  export { vttToMarkdown };
109
109
 
110
- //# sourceMappingURL=vtt-parser-DKpNNW5i.js.map
110
+ //# sourceMappingURL=vtt-parser-DYPbKcIJ.js.map
@@ -1,12 +1,12 @@
1
1
  import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Ot as init_record, Pt as readRecordContinueViewSync, Tn as init_projects, mn as findProjectByTeamSync, t as init_config_yaml, u as isTldrEnabledSync, un as extractTeamPrefix } from "./config-yaml-DvyMuOle.js";
3
- import { F as getReadableWorkspacePanPaths, d as readPlanSync, i as findPlanSync, o as init_io, p as readWorkspacePlan } from "./io-B3_AHDfr.js";
4
- import { f as init_config, m as loadConfigSync } from "./config-CCvjQf27.js";
5
- import { i as NotImplementedError, o as init_interface } from "./rally-api-nY0ZANw3.js";
6
- import { n as createTrackerFromConfig, r as init_factory } from "./factory-CynerjXO.js";
7
- import { i as createActiveSlice, l as init_dag, o as getDispatchableItems } from "./dag-CdOjJVDT.js";
8
- import { l as readFeedback, n as readWorkspaceContext, r as writeWorkspaceContext, t as init_pan_dir } from "./pan-dir-DeVUgwA7.js";
9
- import { n as renderPrompt, t as init_prompts } from "./prompts-Dp4Tpk39.js";
2
+ import { Dt as getProjectConfigFromWorkspacePath, Ft as resolveProjectForIssue, Ot as init_record, Pt as readRecordContinueViewSync, Tn as init_projects, mn as findProjectByTeamSync, t as init_config_yaml, u as isTldrEnabledSync, un as extractTeamPrefix } from "./config-yaml-DySPNmKN.js";
3
+ import { F as getReadableWorkspacePanPaths, d as readPlanSync, i as findPlanSync, o as init_io, p as readWorkspacePlan } from "./io-C9kF1wtJ.js";
4
+ import { f as init_config, m as loadConfigSync } from "./config-BZ0sHTju.js";
5
+ import { i as NotImplementedError, o as init_interface } from "./rally-api-C8e_1JRi.js";
6
+ import { n as createTrackerFromConfig, r as init_factory } from "./factory-CFibJuaw.js";
7
+ import { i as createActiveSlice, l as init_dag, o as getDispatchableItems } from "./dag-B1ucnjDU.js";
8
+ import { l as readFeedback, n as readWorkspaceContext, r as writeWorkspaceContext, t as init_pan_dir } from "./pan-dir-B0c3w0Ya.js";
9
+ import { n as renderPrompt, t as init_prompts } from "./prompts-DxzFXuLl.js";
10
10
  import { Effect } from "effect";
11
11
  import { existsSync, readdirSync, statSync } from "fs";
12
12
  import { dirname, join } from "path";
@@ -436,4 +436,4 @@ __esmMin((() => {
436
436
  }))();
437
437
  export { buildPolyrepoContext, buildWorkAgentPrompt, extractStitchDesigns, getTrackerContext, readFeatureContext, readPlanningContext, writeStoryFeatureContext };
438
438
 
439
- //# sourceMappingURL=work-agent-prompt-Yb2bd3Fq.js.map
439
+ //# sourceMappingURL=work-agent-prompt-Du8Vh2aJ.js.map
@@ -0,0 +1,2 @@
1
+ import { a as deepWipe, i as closeOut } from "./workflows-mbQzh6mQ.js";
2
+ export { closeOut, deepWipe };