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