@overdeck/desktop 0.45.21 → 0.45.23
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/package.json +1 -1
- package/server/{acceptance-criteria-CJIFA8Vg.js → acceptance-criteria-DOA0KgXx.js} +5 -5
- package/server/{advancing-selfheal-CPOBO5ZS.js → advancing-selfheal-BBu6DSNm.js} +6 -6
- package/server/{agent-gc-D6PUckBB.js → agent-gc-BV1q_2EV.js} +4 -4
- package/server/agent-state-Bg0lhqwj.js +3 -0
- package/server/{agent-state-service-DHwemt96.js → agent-state-service-CnzFKSAQ.js} +1 -1
- package/server/{agent-state-service-6MFQqnFy.js → agent-state-service-HoK8U4jW.js} +5 -5
- package/server/{agents-DbrHWunF.js → agents-B4Bjbkfv.js} +4 -4
- package/server/agents-FlIgQ3ql.js +3 -0
- package/server/{archive-planning-BOnwJq8M.js → archive-planning-DYrYojxl.js} +31 -7
- package/server/{archive-planning-MPpvQJL4.js → archive-planning-zkJb3BeM.js} +1 -1
- package/server/{artifact-index-jobs-BOoySTKD.js → artifact-index-jobs-C-xy7Z5v.js} +2 -2
- package/server/{backlog-auto-trigger-BUaFI44J.js → backlog-auto-trigger-GtG71X8H.js} +3 -3
- package/server/{behavior-Dg-D8eBG.js → behavior-B_-4EKF3.js} +2 -2
- package/server/{briefing-freshness-OouGbJ7d.js → briefing-freshness-DWdW7vUm.js} +2 -2
- package/server/{build-info-27NlbKhV.js → build-info-BT096lEl.js} +3 -3
- package/server/{build-info-Cv6CI7Gu.js → build-info-DgTqZkL5.js} +1 -1
- package/server/{checkpoint-manager-C7mFCY_E.js → checkpoint-manager-B7Bt29J0.js} +1 -1
- package/server/{checkpoint-manager-D64fCC4p.js → checkpoint-manager-DDqcGyu8.js} +2 -2
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-Vh-J15ge.js → checkpoints-C-AXLfYT.js} +2 -2
- package/server/{checkpoints-DwZqT2qQ.js → checkpoints-CpgCjAlN.js} +1 -1
- package/server/{claude-hooks-provision-CS5W_dhI.js → claude-hooks-provision-C8wdRnN1.js} +1 -1
- package/server/{claude-hooks-provision-BVLGfHrv.js → claude-hooks-provision-but-_qGY.js} +2 -2
- package/server/{claude-permissions-C2OrLYKL.js → claude-permissions-H_5wHQZQ.js} +2 -2
- package/server/{claude-settings-overlay-DWXjafJh.js → claude-settings-overlay-BTENVmYf.js} +1 -1
- package/server/{claude-settings-overlay-DX-fMFpC.js → claude-settings-overlay-CbSz0Dvb.js} +2 -2
- package/server/cli-BsVIHwzC.js +3 -0
- package/server/{cli-mvpEOb3w.js → cli-vBeXbPrq.js} +9 -9
- package/server/{cliproxy-Dvsr4ZkW.js → cliproxy-Bgb2XCqi.js} +2 -2
- package/server/{cliproxy-7g1nObvB.js → cliproxy-DW0V86F8.js} +1 -1
- package/server/{close-issue-8F6uawYj.js → close-issue-Dn_4c4G8.js} +5 -5
- package/server/{closed-issue-reaper-BhV-r-tC.js → closed-issue-reaper-CWpY2uBw.js} +1 -1
- package/server/{closed-issue-reaper-BaYQYF6w.js → closed-issue-reaper-hANY_ehE.js} +9 -9
- package/server/codex-Dg7Is5yb.js +3 -0
- package/server/{codex-D_UBEOwL.js → codex-TmSi-yTv.js} +30 -8
- package/server/{codex-parser-BTzlOZiV.js → codex-parser-C4gSH-IR.js} +2 -2
- package/server/{config-CrduXs4a.js → config-CCvjQf27.js} +2 -2
- package/server/{config-nAB_F-Gp.js → config-DUIhMN_T.js} +1 -1
- package/server/{config-G1TOMJZA.js → config-DjLOdbgT.js} +2 -2
- package/server/{config-yaml-Ciyp2mYe.js → config-yaml-DvyMuOle.js} +177 -211
- package/server/{conflict-gate-BKalpcjL.js → conflict-gate-BSJkNTdp.js} +1 -1
- package/server/{conflict-gate-BLUNMs1i.js → conflict-gate-CmrYpa47.js} +3 -3
- package/server/{context-layers-YNpf6Q_I.js → context-layers-B3Nt58jl.js} +2 -2
- package/server/{context-layers-Cg9ZgVfx.js → context-layers-ZYFcWiyc.js} +3 -3
- package/server/{control-settings-D_79A6gp.js → control-settings-aP1ANIlI.js} +4 -4
- package/server/{conversation-compaction-DiuZbIUB.js → conversation-compaction-CNbTLB86.js} +8 -8
- package/server/{conversation-compaction-CMIeWW4_.js → conversation-compaction-DiG5zWQq.js} +1 -1
- package/server/{conversation-service-DQybSPUK.js → conversation-service-Du-MTNpJ.js} +6 -6
- package/server/{conversation-service-CWk8mEym.js → conversation-service-Up7FEzIC.js} +1 -1
- package/server/{conversations-BJ-t3BRm.js → conversations-6mPANqvL.js} +1 -1
- package/server/{conversations-BUgGvqVL.js → conversations-DbOs1e9Q.js} +4 -4
- package/server/{cost-jJ2cgDcG.js → cost-CW4WSe72.js} +3 -3
- package/server/{cost-Drm7qeD5.js → cost-Ca0YTWDw.js} +18 -2
- package/server/{cost-sync-DzHP6zaR.js → cost-sync-C0VdGme1.js} +3 -3
- package/server/{dag-DIji6O2b.js → dag-CdOjJVDT.js} +9 -9
- package/server/{dangerous-git-ops-BebB-61h.js → dangerous-git-ops-CT-IypG3.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-pleYrvIm.js → deacon-DYSEJb48.js} +3 -3
- package/server/{deacon-nudge-log-C5VCKtyi.js → deacon-nudge-log-Bjg8U4Y9.js} +3 -3
- package/server/{deacon-1s7bM5zn.js → deacon-pRnyD5w9.js} +1133 -474
- package/server/deacon-swarm-9jRLS5Ke.js +2 -0
- package/server/{deacon-swarm-DmA3rJ7k.js → deacon-swarm-DftYRDo8.js} +17 -17
- package/server/deacon.js +8 -8
- package/server/{deploy-patrol-DmM6F-yw.js → deploy-patrol-Bjsho_ha.js} +136 -19
- package/server/{deploy-window-ClLq1RYf.js → deploy-window-CM6W1-c6.js} +1 -1
- package/server/{deploy-window-jw4S_Y-c.js → deploy-window-DeP_OIRk.js} +77 -10
- package/server/{dev-supervisor-Do2Stz49.js → dev-supervisor-BpMoHlkR.js} +2 -2
- package/server/{devcontainer-renderer-D8ylupco.js → devcontainer-renderer-CtUgrVKW.js} +3 -3
- package/server/dist-Bd3vn0Hw.js +3 -0
- package/server/{dist-yfR7G1BL.js → dist-DyRx4cI7.js} +1 -1
- package/server/{docker-ClwPQaba.js → docker-BK7HIcBj.js} +2 -2
- package/server/{dod-BLphkhjs.js → dod-BrSfUHm0.js} +1 -1
- package/server/{ensure-devcontainer-BA3bICoY.js → ensure-devcontainer-DRqaAkBR.js} +1 -1
- package/server/{ensure-devcontainer-CFpQatOc.js → ensure-devcontainer-DseivYEy.js} +4 -4
- package/server/{esm-shims-BZw-fTQ6.js → esm-shims-CbI3BVkl.js} +1 -1
- package/server/{event-store-DABarGNz.js → event-store-Cr5PQwFC.js} +1 -1
- package/server/{event-store-BVnON3vf.js → event-store-tdiY5eDZ.js} +3 -3
- package/server/{events-CmERlnwn.js → events-CC1dgUpx.js} +3 -3
- package/server/{events-LGeUehYW.js → events-CvvGK6LT.js} +1 -1
- package/server/{factory-CQNprtHe.js → factory-CynerjXO.js} +50 -13
- package/server/{feature-registry-population-D9Z3tYSa.js → feature-registry-population-B0pmAz0a.js} +4 -4
- package/server/{feature-registry-storage-BWymOgXE.js → feature-registry-storage-_wUBRD3J.js} +2 -2
- package/server/{features--fOza5g5.js → features-Dhxz-wLc.js} +2 -2
- package/server/{feedback-target-Dqik2WTe.js → feedback-target-CPS15Vte.js} +7 -7
- package/server/{feedback-target-Dn9vfPpz.js → feedback-target-iygZwmMc.js} +1 -1
- package/server/{feedback-writer-Wlq5-qgS.js → feedback-writer-C9b6ccN1.js} +6 -5
- package/server/{feedback-writer-DDQNV8uc.js → feedback-writer-qmiMbqTZ.js} +1 -1
- package/server/{flywheel-Q-38YhZG.js → flywheel-DMCUzDWg.js} +1 -1
- package/server/{flywheel-1Wd8WDlh.js → flywheel-DSSpWmqF.js} +13 -13
- package/server/{flywheel-DPUc8r3V.js → flywheel-DcBkQvgE.js} +14 -14
- package/server/{flywheel-merge-order-CeBuX0EJ.js → flywheel-merge-order-C-6zRLvM.js} +1 -1
- package/server/{flywheel-merge-order-4SqOXFAr.js → flywheel-merge-order-DxbQKE1d.js} +8 -8
- package/server/forge-B-ZWyTRm.js +2 -0
- package/server/{forge-DBbDpiYc.js → forge-Ch9gCFod.js} +2 -2
- package/server/{from-hh6vTBGl.js → from-CJ_aH5jD.js} +1 -1
- package/server/{fts-db-6ponMie2.js → fts-db-CKgg0VKg.js} +2 -2
- package/server/{fts-operations-KIRK165y.js → fts-operations-BrL_VTRr.js} +2 -2
- package/server/git-utils-BVa07a4a.js +198 -0
- package/server/{git-utils-DmF5xkj8.js → git-utils-Dry_Ka_D.js} +1 -1
- package/server/{github-app-B3yfECo8.js → github-app-CMBdIFBQ.js} +11 -3
- package/server/{github-app-CeSVFL6C.js → github-app-CPfoFAdV.js} +1 -1
- package/server/{github-client-Dslipypz.js → github-client--XVlDpwM.js} +2 -2
- package/server/{github-client-4A6FgA8O.js → github-client-B4QsdE-X.js} +1 -1
- package/server/{github-pr-lookup-DBP0YHMr.js → github-pr-lookup-BRbDW-qk.js} +2 -2
- package/server/harness-binary-CVio2m-u.js +106 -0
- package/server/{harness-resolve-BGpO-OVM.js → harness-resolve-qHJBhy3Z.js} +9 -15
- package/server/{health-events-CZGZ5I-A.js → health-events-C9B8y1Hm.js} +2 -2
- package/server/{health-events-CnwV_SSz.js → health-events-CpfvuVmm.js} +1 -1
- package/server/{hooks-CoNscX84.js → hooks-DUXw8A0-.js} +2 -2
- package/server/{hooks-DvX33gY_.js → hooks-ltecuFqZ.js} +1 -1
- package/server/{hume-DSJt5eA_.js → hume-BEq0bUDg.js} +2 -2
- package/server/hume-B_DbflNM.js +3 -0
- package/server/{idle-stack-reaper-5DVRoY6P.js → idle-stack-reaper-D7w9t3fE.js} +1 -1
- package/server/{idle-stack-reaper-BfL8HqYy.js → idle-stack-reaper-w1ISSlhs.js} +2 -2
- package/server/{in-flight-guard-tVGiI5ee.js → in-flight-guard-aQ1IxeI3.js} +2 -2
- package/server/{infra-DN2wSxle.js → infra-CzaSOgul.js} +4 -4
- package/server/{injection-DtlT8Akv.js → injection-DZ0PfYa4.js} +7 -7
- package/server/{injection-DK9zh_HL.js → injection-oNZeoDhL.js} +1 -1
- package/server/{inspect-agent-DKByUS_F.js → inspect-agent-DJKLWcVT.js} +15 -11
- package/server/inspect-agent-ch-F-5Ci.js +2 -0
- package/server/{internal-token-DhfFiwW7.js → internal-token-Bb4XeV2x.js} +2 -2
- package/server/{internal-token-7bYL5v6K.js → internal-token-DXdfprGr.js} +1 -1
- package/server/{io-BiM-7Zsx.js → io-B3_AHDfr.js} +160 -184
- package/server/{issue-closed-Dfw3QDyZ.js → issue-closed-zhdvQicO.js} +7 -7
- package/server/{issue-lifecycle-B7HZWnTA.js → issue-lifecycle-CreaCkjW.js} +22 -22
- package/server/{issue-lifecycle-ytsEdDlK.js → issue-lifecycle-Dy4vd0Oa.js} +1 -1
- package/server/{issue-service-singleton-CPESc4Or.js → issue-service-singleton-B5ushCvE.js} +8 -8
- package/server/{issue-service-singleton-D5EB5eYr.js → issue-service-singleton-DabvBWUp.js} +1 -1
- package/server/{issues-XYtFMxrH.js → issues-B6ToV6x1.js} +2 -2
- package/server/{jsonl-parser-DJV2eZUP.js → jsonl-parser-Dhflo1SH.js} +3 -3
- package/server/{label-cleanup-CJ4m8iRU.js → label-cleanup-BKPJm4Hv.js} +3 -3
- package/server/{label-reconciler-CNf3Ylm3.js → label-reconciler-DdWbHEBu.js} +4 -4
- package/server/{launcher-generator-5DJRiovn.js → launcher-generator-CHVm7bGT.js} +10 -9
- package/server/{layers-cZx7ibtV.js → layers-DzxSTGNA.js} +2 -2
- package/server/lifecycle-DfeyBDwA.js +121 -0
- package/server/lifecycle-io-Bsnr2K4F.js +3 -0
- package/server/{lifecycle-io-DMurK4oM.js → lifecycle-io-D8iNBcux.js} +37 -37
- package/server/{lifecycle-CE7619Xw.js → lifecycle-sycO16hj.js} +6 -6
- package/server/{linear-client-BLyN-NiP.js → linear-client-D4zqMnX7.js} +2 -2
- package/server/{linear-client-Bj1l4FOA.js → linear-client-DqhDQO9k.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-hSC2BENe.js → merge-C_ZEhbqI.js} +3 -3
- package/server/{merge-CwX2_AWm.js → merge-DK23JEdS.js} +1 -1
- package/server/{merge-agent-CnORPiri.js → merge-agent-BQM3a8z5.js} +1 -1
- package/server/{merge-agent-DnBsms_V.js → merge-agent-XrB80vfT.js} +369 -213
- package/server/{merge-batch-C2w2U2eK.js → merge-batch-Bwoyr8Je.js} +1 -1
- package/server/{merge-blockers-DhRgh76x.js → merge-blockers-BsFjGrQ8.js} +2 -2
- package/server/merge-ops-DlB1IM0Y.js +2 -0
- package/server/{merge-rebase-CE-ZyOMY.js → merge-rebase-C1KIVr0s.js} +2 -2
- package/server/{merge-set-D7YNU1ZB.js → merge-set-DLz0MkGT.js} +3 -3
- package/server/{merge-set-DHkzPCJU.js → merge-set-DnSYdBEp.js} +1 -1
- package/server/{merge-sync-De1FYva5.js → merge-sync-DZ9dojJn.js} +2 -2
- package/server/{merge-sync-CpGA9Kg7.js → merge-sync-SSv3E-pl.js} +1 -1
- package/server/{merge-train-SvkRJZ-k.js → merge-train-DxDfBTjr.js} +3 -3
- package/server/{merge-train-deps-CECJTElu.js → merge-train-deps-CyYQUksx.js} +4 -4
- package/server/{merge-verification-B3meGcXF.js → merge-verification-CSizH3HY.js} +4 -4
- package/server/{multipart-parser-ByTMgYV5.js → multipart-parser-Dt8YPN5S.js} +2 -2
- package/server/{no-resume-mode-BnInAFKs.js → no-resume-mode-Cx3K0hHi.js} +11 -8
- package/server/node_modules/.package-lock.json +5 -5
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +3 -3
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +2 -2
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +5 -5
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +6 -8
- package/server/{orphan-proposed-reconciler-CAfuWTA1.js → orphan-proposed-reconciler-BTkDrl4R.js} +1 -1
- package/server/{orphan-proposed-reconciler-AxAGUouN.js → orphan-proposed-reconciler-neK8dHQk.js} +23 -14
- package/server/package-lock.json +6 -6
- package/server/package.json +1 -1
- package/server/{pan-dir-Rw17YjT1.js → pan-dir-DeVUgwA7.js} +78 -58
- package/server/{paths-FP8v3lTz.js → paths-_zEts6wc.js} +2 -2
- package/server/{pickup-xi3KTLaJ.js → pickup-Dd0Znxxy.js} +2 -2
- package/server/{pipeline-membership-BtKMNY7v.js → pipeline-membership-0HaEGDlH.js} +190 -68
- package/server/{pipeline-notifier-dQ-U4NSb.js → pipeline-notifier-6iCJplFZ.js} +1 -1
- package/server/{pipeline-notifier-BM2HLF7B.js → pipeline-notifier-D0ykk59O.js} +2 -2
- package/server/{project-pipelines-B59NfN44.js → project-pipelines-2sK1apsO.js} +2 -2
- package/server/projects-9SkRpES9.js +3 -0
- package/server/{prompts-CbqaVjbe.js → prompts-Dp4Tpk39.js} +2 -2
- package/server/providers-DKkBXhxU.js +3 -0
- package/server/{providers-d3pwXGVE.js → providers-DV7ec8l7.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-BxYSL7J-.js → chunk-BO2N2NFS-CltymLRg.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-C_F9Q2as.js → diagram-OG6HWLK6-D2f6pjgA.js} +1 -1
- package/server/public/assets/{dist-DQNg4CiF.js → dist-BWR4qFiV.js} +1 -1
- package/server/public/assets/{dist-CLSlc6cV.js → dist-DEmlBBNQ.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-Cq0my-0C.js → ganttDiagram-6RSMTGT7-DnfiViPK.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-eZC03dGh.js → highlighted-body-OFNGDK62-B8Wrmj9H.js} +1 -1
- package/server/public/assets/index-CUr1xv8w.css +1 -0
- package/server/public/assets/{index-SLYGA8AQ.js → index-CsSuZQBI.js} +148 -145
- package/server/public/assets/{linear-6Fi3qnGg.js → linear-C9zFQpkX.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-Dpmc6xsv.js → pieDiagram-4H26LBE5-lR8H7Yjd.js} +1 -1
- package/server/public/assets/{prod-ojHllFvN.js → prod-B1jCQihw.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-Ulr9gON5.js → quadrantDiagram-W4KKPZXB-CVQ2guem.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-CwdHGXfL.js → sankeyDiagram-5OEKKPKP-eD1RB4gm.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-r-bEDzJh.js → xychartDiagram-2RQKCTM6-ChEC6dQn.js} +1 -1
- package/server/public/index.html +54 -10
- package/server/{pull-requests-D3N6HQzI.js → pull-requests--Ib2jTgy.js} +1 -1
- package/server/{pull-requests-CjjPj7v6.js → pull-requests-CXIhdCYD.js} +13 -11
- package/server/{queries-B5hl7lMQ.js → queries-6d7Cdtm7.js} +723 -110
- package/server/{rally-Dp0Gb1DN.js → rally-B708-nZn.js} +3 -3
- package/server/{rally-api-DGaFz5L5.js → rally-api-nY0ZANw3.js} +2 -2
- package/server/{rally-api-CKr0O4DJ.js → rally-api-yjQ0TfHd.js} +1 -1
- package/server/{rally-client-SVbjGvqj.js → rally-client-B1EJhfV0.js} +4 -4
- package/server/{rally-client-Cqf6EX_r.js → rally-client-CULK2XAY.js} +1 -1
- package/server/rally-njs_mJrt.js +3 -0
- package/server/reap-terminal-sessions-MWnqdLCJ.js +4 -0
- package/server/{reap-terminal-sessions-CjqRAGw7.js → reap-terminal-sessions-N3BTkmX_.js} +11 -28
- package/server/{rebuild-stack-DHqCLvLX.js → rebuild-stack-Dp4eLkt4.js} +6 -6
- package/server/{rebuild-stack-DjdpALr1.js → rebuild-stack-kA7XngID.js} +1 -1
- package/server/{reconstruct-cache-BqrCQt0o.js → reconstruct-cache-uWbZfjms.js} +6 -6
- package/server/record-t6V-3Dcj.js +3 -0
- package/server/{record-update-BlB8mpKO.js → record-update-DACtKh6_.js} +1 -1
- package/server/record-update-Dq0t2uBG.js +310 -0
- package/server/{recovery-trip-l1Hsi37x.js → recovery-trip-BJtIQuag.js} +2 -2
- package/server/{release-engine-CSI4K6Oj.js → release-engine-DZpmGGzb.js} +5 -5
- package/server/{release-set-BywwggrE.js → release-set-hnXd_kga.js} +3 -3
- package/server/{remote-DYziAkiZ.js → remote-4tiENDaI.js} +3 -3
- package/server/{remote-cnoeuDWn.js → remote-Br-ZWVIP.js} +3 -3
- package/server/{remote-agents-BNORDWAX.js → remote-agents-CRCg1L4H.js} +1 -1
- package/server/{remote-agents-CZ2rc8I0.js → remote-agents-nmty1mLu.js} +6 -6
- package/server/{remote-completion-W67FNQ-A.js → remote-completion-BbWNd10K.js} +13 -13
- package/server/resume-CcKqnTvE.js +3 -0
- package/server/{review-agent-CSswH985.js → review-agent-DJRO8EG8.js} +1 -1
- package/server/{review-agent-CqSqSHkU.js → review-agent-sKkE1FEL.js} +23 -23
- package/server/{review-artifacts-BBgnd5df.js → review-artifacts-BLbSC4ke.js} +5 -5
- package/server/{review-context-Ctp9BdNJ.js → review-context-BgX3lcCx.js} +9 -9
- package/server/{review-status-CCgPVK1h.js → review-status-A7quS5KJ.js} +56 -39
- package/server/review-status-C6n6-9f_.js +3 -0
- package/server/{review-status-enrichment-DtDRGpst.js → review-status-enrichment-tbOn_A_u.js} +3 -3
- package/server/review-status-source-CxuEjLGg.js +39 -0
- package/server/{review-status-sync-jnLgd04F.js → review-status-sync-BhSQ0d0l.js} +2 -2
- package/server/{review-status-sync-C792ksoJ.js → review-status-sync-To3-iS-N.js} +1 -1
- package/server/{review-verdict-feedback-D5lW0o3k.js → review-verdict-feedback-C1Kg8n7t.js} +1 -1
- package/server/{review-verdict-feedback-CMsIpTpy.js → review-verdict-feedback-CTRNtzXO.js} +7 -7
- package/server/{rollup-B3kQmNpl.js → rollup-B53Y81xK.js} +1 -1
- package/server/{rollup-CLj_AK9f.js → rollup-WA0VD-Rr.js} +8 -8
- package/server/{scanner-C4NeC4FE.js → scanner-D2743cp8.js} +11 -7
- package/server/{sequence-io-Ce-6grIY.js → sequence-io-Cg0zYj_E.js} +4 -4
- package/server/{sequencer-agent-Bpz0yGmG.js → sequencer-agent-BGY8gjg-.js} +5 -5
- package/server/server.js +1348 -963
- package/server/{service-CqAY8Kmk.js → service-DCpB_SGd.js} +154 -51
- package/server/{session-fork-uNo4rMRA.js → session-fork-BQ8_6H32.js} +2 -2
- package/server/{session-history-DUehL3KN.js → session-history-CVZDpS3c.js} +4 -4
- package/server/{settings-DP2OYLXL.js → settings-BZ5m1UCl.js} +3 -3
- package/server/settings-D0OSwos5.js +2 -0
- package/server/{settings-D9grjmaP.js → settings-ylxwqwQG.js} +2 -2
- package/server/{shadow-engineering-Bi_oIMtF.js → shadow-engineering-BlxG6Xye.js} +3 -3
- package/server/{shadow-state-CDxEuPlE.js → shadow-state-C2_epgx2.js} +1 -1
- package/server/{shadow-state-a_ztFBJe.js → shadow-state-Dh-HzF2J.js} +2 -2
- package/server/{shadow-utils-CyOg6_Xq.js → shadow-utils-4bvjn9b3.js} +2 -2
- package/server/{ship-log-DDcueaIR.js → ship-log-ClSMIzZX.js} +1 -1
- package/server/{smart-compaction-C1_VVLEd.js → smart-compaction-CHIxLr_d.js} +1 -1
- package/server/{smart-compaction--Oj65Uov.js → smart-compaction-r4pHQBIr.js} +7 -7
- package/server/{spawn-planning-session-AiUSsBnH.js → spawn-planning-session-DWAorh2B.js} +25 -20
- package/server/{spawn-planning-session-LFtK2QCE.js → spawn-planning-session-KC_UduxD.js} +1 -1
- package/server/{specialist-completion-qOgqdqXH.js → specialist-completion-BXhav38U.js} +1 -1
- package/server/{specialist-context-gjj8Z4Ii.js → specialist-context-DtrYvGJ-.js} +5 -5
- package/server/{specialist-handoff-logger-BsBNvVZv.js → specialist-handoff-logger-C45ouoZ6.js} +2 -2
- package/server/{specialist-logs-CSLtvPx6.js → specialist-logs-DJ3RzKxW.js} +3 -3
- package/server/{specialists-D0VBf8g_.js → specialists-D5fRZXmN.js} +1 -1
- package/server/specialists-DVj0hvaL.js +3 -0
- package/server/{specialists-CYRwELzc.js → specialists-DyFeedjn.js} +66 -76
- package/server/{specialists-DAegTvRt.js → specialists-JVO00bs7.js} +374 -220
- package/server/specs-nN45DG2X.js +3 -0
- package/server/{src-OLoJhUiJ.js → src-CG9mCkP6.js} +6 -6
- package/server/{src-BqTcrfO_.js → src-CMTQGyCK.js} +3 -3
- package/server/{src-Dpq1yFIl.js → src-U7_kTPEE.js} +338 -4
- package/server/{stack-health-I713ELld.js → stack-health-Df0YEZKa.js} +1 -1
- package/server/{stack-health-DV_f-lK0.js → stack-health-puygdaMd.js} +2 -2
- package/server/{stale-task-claims-CQSKZVq0.js → stale-task-claims-BbFwCTb0.js} +4 -4
- package/server/{staleness-BbsGxmF2.js → staleness-Bpy41ngS.js} +15 -3
- package/server/{staleness-zGp4P1hd.js → staleness-Cbl_w4Bw.js} +1 -1
- package/server/{state-home-DixkE-up.js → state-home-CIGjwNfJ.js} +119 -54
- package/server/state-migrate-Dkzaxvny.js +487 -0
- package/server/{stuck-remediation-BWkK_O7A.js → stuck-remediation-CzEov_fq.js} +27 -21
- package/server/{stuck-remediation-CTPRC2S5.js → stuck-remediation-sY_MHHgQ.js} +1 -1
- package/server/{substrate-bug-weights-service-DXd0ID83.js → substrate-bug-weights-service-BH66lhm7.js} +3 -3
- package/server/{summary-fork-CdLn8Chr.js → summary-fork-D8bXjCr7.js} +2 -2
- package/server/{summary-fork-f3DpgjXh.js → summary-fork-DHhJIsAL.js} +8 -8
- package/server/{supervisor-Ch8CDuoF.js → supervisor-BO-Zk_h-.js} +3 -3
- package/server/supervisor-BPy-o1A8.js +2 -0
- package/server/{swarm-readiness-C9P2iPap.js → swarm-readiness-CQ_fwUWF.js} +4 -4
- package/server/{system-prerequisites-DkoQBn1q.js → system-prerequisites-Bza0ffAh.js} +24 -44
- package/server/{teardown-workspace-D-5yMyit.js → teardown-workspace-CEgauF4U.js} +15 -15
- package/server/{test-agent-queue-BwpUpu-o.js → test-agent-queue-DXDt0Xa-.js} +7 -7
- package/server/{test-verdict-BRiSu7eW.js → test-verdict-CmUBK5cT.js} +1 -1
- package/server/{test-verdict-BQ1yx7d4.js → test-verdict-DFjjIHR5.js} +1 -1
- package/server/{tldr-daemon-DjxP5g6Y.js → tldr-daemon-BDtLOIlO.js} +2 -2
- package/server/{tldr-daemon-BJA7TkqS.js → tldr-daemon-DL566HbH.js} +1 -1
- package/server/tmux-DoThH6aj.js +3 -0
- package/server/{tmux-y1blSxks.js → tmux-ftABRAmc.js} +76 -44
- package/server/{token-LUrbM9sU.js → token-CsOhvw42.js} +2 -2
- package/server/{token-util-BZaDAQ8S.js → token-util-CTmczIfW.js} +1 -1
- package/server/token-util-DrHg8abn.js +3 -0
- package/server/{tracker-config-DSFZBdXP.js → tracker-config-B4itFzDo.js} +2 -2
- package/server/{tracker-utils-WtP_V-yn.js → tracker-utils-BePq_oj-.js} +1 -1
- package/server/{tracker-utils-DiceZN3a.js → tracker-utils-tnxxqROg.js} +2 -2
- package/server/{traefik-connect-BXqfOP4-.js → traefik-connect-m73vGebA.js} +1 -1
- package/server/{tunnel-DTng1rfQ.js → tunnel-B2vxjx_b.js} +3 -3
- package/server/{tunnel-WcJImbAC.js → tunnel-Cgj-IGIl.js} +1 -1
- package/server/{types-BjaZ1oqH.js → types-BBNjPcqU.js} +1 -1
- package/server/{types-DqeBMmJN.js → types-hraoaQIp.js} +1 -1
- package/server/{uat-train-BpLnp7Cx.js → uat-train-CuEn0t9M.js} +28 -28
- package/server/{uat-train-Wismge7h.js → uat-train-cKfM-_WW.js} +1 -1
- package/server/{validation-BA4e5EGm.js → validation-B5JxoPUS.js} +259 -9
- package/server/{validation-CUWamZ4X.js → validation-CIi6pnI2.js} +1 -1
- package/server/{verification-artifact-Dr_0g9nb.js → verification-artifact-BcnIbigL.js} +1 -1
- package/server/{verification-artifact-CrbI4tJE.js → verification-artifact-C-lIHfUa.js} +1 -1
- package/server/{verification-runner-gAzh3cVD.js → verification-runner-Br0S_Ous.js} +103 -37
- package/server/{verification-runner-Dcksl_P-.js → verification-runner-CDj4lD4t.js} +1 -1
- package/server/{vtt-parser-3VZKsmSm.js → vtt-parser-DKpNNW5i.js} +1 -1
- package/server/{work-agent-prompt-ULdcANl5.js → work-agent-prompt-Yb2bd3Fq.js} +16 -15
- package/server/{workflows-B8ROFlfw.js → workflows-C9WmILql.js} +39 -77
- package/server/workflows-D90rMOya.js +2 -0
- package/server/{workspace-DhTDA8nB.js → workspace-BVl4rihN.js} +3 -3
- package/server/{workspace-DSjUJaJN.js → workspace-DuUdndHe.js} +1 -1
- package/server/{workspace-config-BAAsAv-o.js → workspace-config-cEGcO6UT.js} +1 -1
- package/server/{workspace-manager-CcujONCR.js → workspace-manager-ZTdJAy9M.js} +1 -1
- package/server/{workspace-manager-DsN52IMG.js → workspace-manager-hLUv3ADC.js} +23 -16
- package/server/{workspace-metadata-DIL5_U4c.js → workspace-metadata-CskwzzhL.js} +2 -2
- package/server/{workspace-metadata-CftOpNLs.js → workspace-metadata-DNpMixRq.js} +1 -1
- package/server/{workspaces-Dmlh1YXm.js → workspaces-hWvy9eKs.js} +276 -110
- package/sync-sources/agents/pan-inspect-agent.md +1 -1
- package/sync-sources/agents/pan-merge-agent.md +1 -1
- package/sync-sources/agents/pan-planning-agent.md +4 -4
- package/sync-sources/agents/pan-work-agent.md +1 -1
- package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
- package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
- package/sync-sources/hooks/record-cost-event.js +363 -71
- package/sync-sources/hooks/session-start-hook +7 -0
- package/sync-sources/hooks/work-agent-stop-hook +1 -1
- package/sync-sources/rules/per-bead-durability.md +1 -1
- package/sync-sources/rules/prd-authoring.md +1 -1
- package/sync-sources/skills/feature-work/SKILL.md +1 -1
- package/sync-sources/skills/pan/SKILL.md +2 -2
- package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
- package/sync-sources/skills/pan-approve/SKILL.md +1 -1
- package/sync-sources/skills/pan-close/SKILL.md +1 -1
- package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
- package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
- package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
- package/sync-sources/skills/pan-plan/SKILL.md +6 -6
- package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
- package/sync-sources/skills/pan-recap/SKILL.md +2 -2
- package/sync-sources/skills/pan-review/SKILL.md +1 -1
- package/sync-sources/skills/pan-start/SKILL.md +26 -3
- package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
- package/sync-sources/skills/pan-sync/SKILL.md +1 -1
- package/sync-sources/skills/pan-task/SKILL.md +2 -2
- package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
- package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
- package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
- package/sync-sources/skills/plan/SKILL.md +11 -11
- package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
- package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
- package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
- package/server/agent-state-BV_6RHnO.js +0 -3
- package/server/agents-Czz6R57Z.js +0 -3
- package/server/cli-ChErG518.js +0 -3
- package/server/codex-BBeZ8c3s.js +0 -3
- package/server/deacon-swarm-uudlSCLM.js +0 -2
- package/server/dist-BEDL2alY.js +0 -3
- package/server/forge-DbhJyH6u.js +0 -2
- package/server/git-utils-Bkxzr1Xf.js +0 -129
- package/server/hume-BrA1tUuk.js +0 -3
- package/server/inspect-agent-CyXNo9fM.js +0 -2
- package/server/lifecycle-io-CUpsxG0p.js +0 -3
- package/server/merge-ops-BpTtuO8x.js +0 -2
- package/server/projects-IRHJIPYC.js +0 -3
- package/server/providers-BqCdTryq.js +0 -3
- package/server/public/assets/index-C6NLz_1S.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-BNwFoQsf.js +0 -1
- package/server/rally-DGimSRBQ.js +0 -3
- package/server/reap-terminal-sessions-C1mfzoZo.js +0 -3
- package/server/record-update-RviRDSNs.js +0 -168
- package/server/record-us0YECMO.js +0 -3
- package/server/resume-OyN3dEXE.js +0 -3
- package/server/review-status-DXeqFpk5.js +0 -3
- package/server/settings-BaPXXJsT.js +0 -2
- package/server/specialists-C6WkeKFK.js +0 -3
- package/server/specs-BsNcum0h.js +0 -3
- package/server/state-migrate-_zJJ6XKE.js +0 -362
- package/server/supervisor-Qy1QecAs.js +0 -2
- package/server/tmux-HQLgwo_C.js +0 -3
- package/server/token-util-Cg-QnowA.js +0 -3
- package/server/workflows-C5c-RPsY.js +0 -2
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { $n as
|
|
2
|
-
import { d as rejectUnsafeDashboardMutationRequest, ht as getHeaderFromMap, it as getWorkAgentLifecycleStateSync, l as rejectUnauthorizedDashboardRequest, n as _serverManagedMerges, ot as spawnPanCli, xt as jsonResponse, yt as httpHandler } from "./specialists-
|
|
1
|
+
import { $n as resolveIssueIdSync, Br as getOverdeckHome, Jn as extractPrefixSync, Nr as encodeClaudeProjectDir, Tn as init_projects, Vr as init_paths, Xt as isStatePlaneOnlyStatus, Yn as init_issue_id, Yt as init_state_plane, Zn as parseIssueIdSync, ar as GitError, ir as FsError, kn as listProjectsSync, mn as findProjectByTeamSync, mr as init_errors, qn as extractNumberSync, t as init_config_yaml, tt as resolveModel, un as extractTeamPrefix, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
|
|
2
|
+
import { d as rejectUnsafeDashboardMutationRequest, ht as getHeaderFromMap, it as getWorkAgentLifecycleStateSync, l as rejectUnauthorizedDashboardRequest, n as _serverManagedMerges, ot as spawnPanCli, xt as jsonResponse, yt as httpHandler } from "./specialists-JVO00bs7.js";
|
|
3
3
|
import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
|
|
4
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
5
|
-
import {
|
|
6
|
-
import { a as init_event_store, n as getEventStore } from "./event-store-
|
|
7
|
-
import { _ as
|
|
8
|
-
import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle-
|
|
9
|
-
import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-
|
|
10
|
-
import {
|
|
11
|
-
import { f as CostWriter, l as CostDoorLive } from "./service-
|
|
12
|
-
import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-
|
|
13
|
-
import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-
|
|
14
|
-
import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-
|
|
15
|
-
import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, p as init_types } from "./types-
|
|
16
|
-
import { o as init_merge_sync, r as getAllActiveQueues } from "./merge-sync-
|
|
17
|
-
import { A as
|
|
18
|
-
import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-
|
|
19
|
-
import { i as normalizeModelOverrideSync, r as init_model_validation } from "./launcher-generator-
|
|
20
|
-
import { f as init_config, m as loadConfigSync$1 } from "./config-
|
|
21
|
-
import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-
|
|
22
|
-
import { a as criticalPath, l as init_dag, t as actionableDoc } from "./dag-
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-
|
|
31
|
-
import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-
|
|
32
|
-
import { n as generateDailySummary, r as init_cli } from "./cli-
|
|
33
|
-
import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-
|
|
34
|
-
import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-
|
|
35
|
-
import { C as init_operations, S as gitPush, T as listGitOperationsSync, a as init_merge_agent, w as init_git_activity, x as MainDivergedError, y as syncMainIntoWorkspace } from "./merge-agent-
|
|
36
|
-
import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-
|
|
37
|
-
import { n as init_release_set, t as getReleaseSetSync } from "./release-set-
|
|
38
|
-
import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-
|
|
39
|
-
import { r as runVerificationForIssue } from "./verification-runner-
|
|
40
|
-
import { t as teardownWorkspace } from "./teardown-workspace-
|
|
41
|
-
import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-
|
|
4
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
|
|
5
|
+
import { $ as init_child_env, H as sessionExists, M as listSessionNames, Q as buildChildEnvWithoutTmuxSync, i as capturePane, w as init_tmux } from "./tmux-ftABRAmc.js";
|
|
6
|
+
import { a as init_event_store, n as getEventStore } from "./event-store-tdiY5eDZ.js";
|
|
7
|
+
import { _ as setAutoMerge, b as setReviewStatusSync, c as getReviewStatusSync, d as loadReviewStatuses, l as init_review_status, p as markWorkspaceStuck, v as setDeaconIgnored } from "./review-status-A7quS5KJ.js";
|
|
8
|
+
import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle-CreaCkjW.js";
|
|
9
|
+
import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-Ca0YTWDw.js";
|
|
10
|
+
import { Cr as getAgentRuntimeStateSync, Hn as getAgentState, Kt as transitionIssueToInReview, Tr as saveAgentRuntimeState, X as messageAgent, b as init_agents, i as listRunningAgents, lt as spawnAgent } from "./queries-6d7Cdtm7.js";
|
|
11
|
+
import { f as CostWriter, l as CostDoorLive } from "./service-DCpB_SGd.js";
|
|
12
|
+
import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-B4itFzDo.js";
|
|
13
|
+
import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-tnxxqROg.js";
|
|
14
|
+
import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-Bb4XeV2x.js";
|
|
15
|
+
import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, p as init_types } from "./types-hraoaQIp.js";
|
|
16
|
+
import { o as init_merge_sync, r as getAllActiveQueues } from "./merge-sync-DZ9dojJn.js";
|
|
17
|
+
import { A as init_xbrief_index, M as readXBriefDocument, _ as XBRIEF_INSPECTION_POLICIES, c as mergeRecordStatusOverrides, g as serializeXBriefDocument, k as findXBriefByIssue, o as init_io, r as findPlan, s as isPlanningComplete, u as readPlan, v as init_types$1 } from "./io-B3_AHDfr.js";
|
|
18
|
+
import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-DbOs1e9Q.js";
|
|
19
|
+
import { i as normalizeModelOverrideSync, r as init_model_validation } from "./launcher-generator-CHVm7bGT.js";
|
|
20
|
+
import { f as init_config, m as loadConfigSync$1 } from "./config-CCvjQf27.js";
|
|
21
|
+
import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-puygdaMd.js";
|
|
22
|
+
import { a as criticalPath, l as init_dag, t as actionableDoc } from "./dag-CdOjJVDT.js";
|
|
23
|
+
import { A as withConcurrencyLimit, E as verifyAppCanMerge, f as init_github_app, k as init_concurrency, m as isIntegrationPermissionError } from "./github-app-CMBdIFBQ.js";
|
|
24
|
+
import { a as readEventsFromLineSync, i as init_events, l as init_wal, o as readEventsSync, r as getLastEventMetadataSync, t as appendCostEventSync } from "./events-CC1dgUpx.js";
|
|
25
|
+
import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-hLUv3ADC.js";
|
|
26
|
+
import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-CtUgrVKW.js";
|
|
27
|
+
import { a as init_jsonl_parser, t as getActiveSessionModelSync } from "./jsonl-parser-Dhflo1SH.js";
|
|
28
|
+
import { r as init_in_flight_guard, t as createInFlightGuard } from "./in-flight-guard-aQ1IxeI3.js";
|
|
29
|
+
import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-DYrYojxl.js";
|
|
30
|
+
import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-CskwzzhL.js";
|
|
31
|
+
import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-tbOn_A_u.js";
|
|
32
|
+
import { n as generateDailySummary, r as init_cli } from "./cli-vBeXbPrq.js";
|
|
33
|
+
import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-BgX3lcCx.js";
|
|
34
|
+
import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-BDtLOIlO.js";
|
|
35
|
+
import { C as init_operations, S as gitPush, T as listGitOperationsSync, a as init_merge_agent, w as init_git_activity, x as MainDivergedError, y as syncMainIntoWorkspace } from "./merge-agent-XrB80vfT.js";
|
|
36
|
+
import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-C_ZEhbqI.js";
|
|
37
|
+
import { n as init_release_set, t as getReleaseSetSync } from "./release-set-hnXd_kga.js";
|
|
38
|
+
import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-CmrYpa47.js";
|
|
39
|
+
import { r as runVerificationForIssue } from "./verification-runner-Br0S_Ous.js";
|
|
40
|
+
import { t as teardownWorkspace } from "./teardown-workspace-CEgauF4U.js";
|
|
41
|
+
import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-Dp4eLkt4.js";
|
|
42
42
|
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
43
43
|
import { Effect, Layer, Option, Stream } from "effect";
|
|
44
44
|
import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, writeFileSync } from "fs";
|
|
@@ -54,6 +54,162 @@ import { promisify } from "node:util";
|
|
|
54
54
|
import { timingSafeEqual } from "node:crypto";
|
|
55
55
|
import { createConnection } from "node:net";
|
|
56
56
|
import { crc32 } from "node:zlib";
|
|
57
|
+
//#region services/agent-output-service.ts
|
|
58
|
+
/**
|
|
59
|
+
* Agent Output Service (PAN-1221 F3)
|
|
60
|
+
*
|
|
61
|
+
* Captures tmux pane output only for agents with an active output subscriber.
|
|
62
|
+
* Explicit agent subscriptions and the public all-output SSE feed share one
|
|
63
|
+
* reference-counted poller, so zero interest means zero pane captures.
|
|
64
|
+
*/
|
|
65
|
+
init_agents();
|
|
66
|
+
init_tmux();
|
|
67
|
+
init_concurrency();
|
|
68
|
+
init_event_store();
|
|
69
|
+
function splitLines(text) {
|
|
70
|
+
const lines = text.split("\n");
|
|
71
|
+
if (lines.length > 0 && lines[lines.length - 1] === "") lines.pop();
|
|
72
|
+
return lines;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Find new lines by looking for the longest suffix of `previous` that matches
|
|
76
|
+
* a prefix of `current`. The non-overlapping prefix of `current` is returned.
|
|
77
|
+
* If there is no overlap, all of `current` is new (pane was cleared or scrolled
|
|
78
|
+
* past the overlap window).
|
|
79
|
+
*/
|
|
80
|
+
function diffLines(previous, current) {
|
|
81
|
+
if (previous.length === 0) return current;
|
|
82
|
+
for (let start = 0; start < previous.length; start++) {
|
|
83
|
+
const suffix = previous.slice(start);
|
|
84
|
+
if (suffix.length > current.length) continue;
|
|
85
|
+
if (suffix.every((line, i) => line === current[i])) return current.slice(suffix.length);
|
|
86
|
+
}
|
|
87
|
+
return current;
|
|
88
|
+
}
|
|
89
|
+
function hasAgentInterest(state, agentId) {
|
|
90
|
+
return state.allInterestCount > 0 || (state.interestCounts.get(agentId) ?? 0) > 0;
|
|
91
|
+
}
|
|
92
|
+
async function captureInterestedAgent(state, agentId) {
|
|
93
|
+
if (!hasAgentInterest(state, agentId) || state.inFlight.has(agentId)) return;
|
|
94
|
+
state.inFlight.add(agentId);
|
|
95
|
+
try {
|
|
96
|
+
let stdout;
|
|
97
|
+
try {
|
|
98
|
+
const remoteState = await readFile(join(homedir$1(), ".overdeck", "agents", agentId, "remote-state.json"), "utf-8").then((text) => JSON.parse(text)).catch(() => null);
|
|
99
|
+
if (remoteState?.location === "remote" && remoteState?.vmName) {
|
|
100
|
+
const { getRemoteAgentOutput } = await import("./remote-agents-CRCg1L4H.js");
|
|
101
|
+
stdout = await getRemoteAgentOutput(agentId, remoteState.vmName, 50);
|
|
102
|
+
} else stdout = await Effect.runPromise(capturePane(agentId, 50));
|
|
103
|
+
} catch {
|
|
104
|
+
stdout = await Effect.runPromise(capturePane(agentId, 50).pipe(Effect.catch(() => Effect.succeed(""))));
|
|
105
|
+
}
|
|
106
|
+
if (!hasAgentInterest(state, agentId)) return;
|
|
107
|
+
if (!stdout || stdout.trim() === "" || stdout.trim() === "Session not found") return;
|
|
108
|
+
const previousOutput = state.lastOutput.get(agentId) ?? "";
|
|
109
|
+
if (stdout === previousOutput) return;
|
|
110
|
+
const newLines = diffLines(splitLines(previousOutput), splitLines(stdout));
|
|
111
|
+
state.lastOutput.set(agentId, stdout);
|
|
112
|
+
if (newLines.length === 0) return;
|
|
113
|
+
const event = {
|
|
114
|
+
type: "agent.output_received",
|
|
115
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
116
|
+
payload: {
|
|
117
|
+
agentId,
|
|
118
|
+
lines: newLines
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
getEventStore().emitOnly(event);
|
|
122
|
+
} finally {
|
|
123
|
+
state.inFlight.delete(agentId);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function pollOnce(state) {
|
|
127
|
+
if (state.polling) return;
|
|
128
|
+
state.polling = true;
|
|
129
|
+
try {
|
|
130
|
+
const interestedIds = new Set(state.interestCounts.keys());
|
|
131
|
+
if (state.allInterestCount > 0) try {
|
|
132
|
+
const runningAgents = await Effect.runPromise(listRunningAgents());
|
|
133
|
+
for (const agent of runningAgents) if (agent.tmuxActive) interestedIds.add(agent.id);
|
|
134
|
+
} catch {}
|
|
135
|
+
if (interestedIds.size === 0) return;
|
|
136
|
+
await Effect.runPromise(withConcurrencyLimit([...interestedIds].map((agentId) => Effect.tryPromise({
|
|
137
|
+
try: () => captureInterestedAgent(state, agentId),
|
|
138
|
+
catch: (cause) => cause
|
|
139
|
+
})), 4));
|
|
140
|
+
} finally {
|
|
141
|
+
state.polling = false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const POLL_INTERVAL_MS = 3e3;
|
|
145
|
+
const serviceState = {
|
|
146
|
+
timer: null,
|
|
147
|
+
lastOutput: /* @__PURE__ */ new Map(),
|
|
148
|
+
interestCounts: /* @__PURE__ */ new Map(),
|
|
149
|
+
allInterestCount: 0,
|
|
150
|
+
inFlight: /* @__PURE__ */ new Set(),
|
|
151
|
+
polling: false,
|
|
152
|
+
started: false
|
|
153
|
+
};
|
|
154
|
+
function hasAnyInterest(state) {
|
|
155
|
+
return state.allInterestCount > 0 || state.interestCounts.size > 0;
|
|
156
|
+
}
|
|
157
|
+
function ensurePolling() {
|
|
158
|
+
if (!serviceState.started || serviceState.timer !== null || !hasAnyInterest(serviceState)) return;
|
|
159
|
+
serviceState.timer = setInterval(() => {
|
|
160
|
+
pollOnce(serviceState).catch(() => void 0);
|
|
161
|
+
}, POLL_INTERVAL_MS);
|
|
162
|
+
}
|
|
163
|
+
function stopPollingIfIdle() {
|
|
164
|
+
if (hasAnyInterest(serviceState) || serviceState.timer === null) return;
|
|
165
|
+
clearInterval(serviceState.timer);
|
|
166
|
+
serviceState.timer = null;
|
|
167
|
+
}
|
|
168
|
+
function retainAgentOutputInterest(agentId) {
|
|
169
|
+
const previousCount = serviceState.interestCounts.get(agentId) ?? 0;
|
|
170
|
+
serviceState.interestCounts.set(agentId, previousCount + 1);
|
|
171
|
+
ensurePolling();
|
|
172
|
+
if (serviceState.started && previousCount === 0) captureInterestedAgent(serviceState, agentId).catch(() => void 0);
|
|
173
|
+
let released = false;
|
|
174
|
+
return () => {
|
|
175
|
+
if (released) return;
|
|
176
|
+
released = true;
|
|
177
|
+
const count = serviceState.interestCounts.get(agentId) ?? 0;
|
|
178
|
+
if (count <= 1) serviceState.interestCounts.delete(agentId);
|
|
179
|
+
else serviceState.interestCounts.set(agentId, count - 1);
|
|
180
|
+
stopPollingIfIdle();
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/** Preserve the public SSE feed's existing all-agent output surface on demand. */
|
|
184
|
+
function retainAllAgentOutputInterest() {
|
|
185
|
+
serviceState.allInterestCount += 1;
|
|
186
|
+
ensurePolling();
|
|
187
|
+
if (serviceState.started && serviceState.allInterestCount === 1) pollOnce(serviceState).catch(() => void 0);
|
|
188
|
+
let released = false;
|
|
189
|
+
return () => {
|
|
190
|
+
if (released) return;
|
|
191
|
+
released = true;
|
|
192
|
+
serviceState.allInterestCount = Math.max(0, serviceState.allInterestCount - 1);
|
|
193
|
+
stopPollingIfIdle();
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function startAgentOutputService() {
|
|
197
|
+
if (serviceState.started) return;
|
|
198
|
+
serviceState.started = true;
|
|
199
|
+
ensurePolling();
|
|
200
|
+
if (hasAnyInterest(serviceState)) pollOnce(serviceState).catch(() => void 0);
|
|
201
|
+
}
|
|
202
|
+
function stopAgentOutputService() {
|
|
203
|
+
serviceState.started = false;
|
|
204
|
+
if (serviceState.timer !== null) clearInterval(serviceState.timer);
|
|
205
|
+
serviceState.timer = null;
|
|
206
|
+
serviceState.lastOutput.clear();
|
|
207
|
+
serviceState.interestCounts.clear();
|
|
208
|
+
serviceState.allInterestCount = 0;
|
|
209
|
+
serviceState.inFlight.clear();
|
|
210
|
+
serviceState.polling = false;
|
|
211
|
+
}
|
|
212
|
+
//#endregion
|
|
57
213
|
//#region workspace-paths.ts
|
|
58
214
|
init_issue_id();
|
|
59
215
|
function getWorkspacePathForIssue(projectPath, rawIssueId) {
|
|
@@ -775,7 +931,7 @@ const postWorkspaceContainerActionRoute = HttpRouter.add("POST", "/api/workspace
|
|
|
775
931
|
}
|
|
776
932
|
if (!workspacePath) return jsonResponse({ error: `Workspace not found for ${issueId}` }, { status: 404 });
|
|
777
933
|
if (!composeFile && ["start", "restart"].includes(action)) {
|
|
778
|
-
const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-
|
|
934
|
+
const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-DRqaAkBR.js"));
|
|
779
935
|
if (ensureDevcontainerSync({
|
|
780
936
|
workspacePath,
|
|
781
937
|
issueId
|
|
@@ -2371,6 +2527,7 @@ const getEventStreamRoute = HttpRouter.add("GET", "/events/stream", httpHandler(
|
|
|
2371
2527
|
const nodeStream = new ReadableStream({
|
|
2372
2528
|
start(controller) {
|
|
2373
2529
|
let closed = false;
|
|
2530
|
+
let cleanedUp = false;
|
|
2374
2531
|
const safeEnqueue = (chunk) => {
|
|
2375
2532
|
if (closed) return;
|
|
2376
2533
|
try {
|
|
@@ -2398,14 +2555,17 @@ const getEventStreamRoute = HttpRouter.add("GET", "/events/stream", httpHandler(
|
|
|
2398
2555
|
if (!matchesFilter(event, filters)) return;
|
|
2399
2556
|
safeEnqueue(encoder.encode(formatFrame(event)));
|
|
2400
2557
|
});
|
|
2558
|
+
const releaseOutputInterest = !filters.types || filters.types.has("agent.output_received") ? retainAllAgentOutputInterest() : () => void 0;
|
|
2401
2559
|
const keepalive = setInterval(() => {
|
|
2402
2560
|
safeEnqueue(encoder.encode(`: keepalive\n\n`));
|
|
2403
2561
|
}, KEEPALIVE_INTERVAL_MS);
|
|
2404
2562
|
cleanup = () => {
|
|
2405
|
-
if (
|
|
2563
|
+
if (cleanedUp) return;
|
|
2564
|
+
cleanedUp = true;
|
|
2406
2565
|
closed = true;
|
|
2407
2566
|
clearInterval(keepalive);
|
|
2408
2567
|
unsubscribe();
|
|
2568
|
+
releaseOutputInterest();
|
|
2409
2569
|
try {
|
|
2410
2570
|
controller.close();
|
|
2411
2571
|
} catch {}
|
|
@@ -2602,6 +2762,12 @@ const internalEventsRouteLayer = Layer.mergeAll(internalEventsRoute, internalEve
|
|
|
2602
2762
|
//#endregion
|
|
2603
2763
|
//#region routes/workspaces/merge-strike.ts
|
|
2604
2764
|
init_agents();
|
|
2765
|
+
function mergeVerificationOptions(request) {
|
|
2766
|
+
return {
|
|
2767
|
+
syncTargetBranch: false,
|
|
2768
|
+
...request.kind === "strike" ? { skipPlanChecklist: true } : {}
|
|
2769
|
+
};
|
|
2770
|
+
}
|
|
2605
2771
|
function parseStrikeMergeRequest(raw) {
|
|
2606
2772
|
if (!raw || typeof raw !== "object") return null;
|
|
2607
2773
|
const request = raw;
|
|
@@ -2823,7 +2989,7 @@ async function reconcileGitHubMergeStatus(issueId, status) {
|
|
|
2823
2989
|
const prRef = parseGitHubPullRequestUrl(status.prUrl);
|
|
2824
2990
|
if (!prRef) return false;
|
|
2825
2991
|
try {
|
|
2826
|
-
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-
|
|
2992
|
+
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CPfoFAdV.js");
|
|
2827
2993
|
if (!isGitHubAppConfigured()) return false;
|
|
2828
2994
|
const prState = await Effect.runPromise(getPullRequestState(prRef.owner, prRef.repo, prRef.number));
|
|
2829
2995
|
console.log(`[merge] reconcileGitHubMergeStatus: ${issueId} PR #${prRef.number} merged=${prState.merged} state=${prState.state}`);
|
|
@@ -2842,7 +3008,7 @@ async function reconcileGitHubMergeStatus(issueId, status) {
|
|
|
2842
3008
|
}
|
|
2843
3009
|
/**
|
|
2844
3010
|
* Build a rich PR body with issue link, tasks task summary, and AC checklist
|
|
2845
|
-
* from the
|
|
3011
|
+
* from the xBRIEF plan. Exported for testing.
|
|
2846
3012
|
*/
|
|
2847
3013
|
async function buildRichPRBody(issueId, workspacePath) {
|
|
2848
3014
|
const lines = [];
|
|
@@ -3090,8 +3256,8 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3090
3256
|
try {
|
|
3091
3257
|
if (request.kind === "normal" && workspaceInfo.isRemote && workspaceInfo.vmName) {
|
|
3092
3258
|
console.log(`[merge] Remote workspace detected for ${issueId}, using review artifact merge...`);
|
|
3093
|
-
const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-
|
|
3094
|
-
const { getForgeAdapter } = await import("./forge-
|
|
3259
|
+
const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-DnSYdBEp.js");
|
|
3260
|
+
const { getForgeAdapter } = await import("./forge-B-ZWyTRm.js");
|
|
3095
3261
|
const remotePrimaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
|
|
3096
3262
|
const remoteTargetBranch = remotePrimaryRepo?.targetBranch || "main";
|
|
3097
3263
|
const remoteForge = remotePrimaryRepo?.forge || "github";
|
|
@@ -3127,7 +3293,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3127
3293
|
...mergeCompletionStatus(request)
|
|
3128
3294
|
});
|
|
3129
3295
|
completePendingOperation(issueId, null);
|
|
3130
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
3296
|
+
const { postMergeLifecycle } = await import("./merge-agent-BQM3a8z5.js");
|
|
3131
3297
|
await postMergeLifecycle(issueId, projectPath);
|
|
3132
3298
|
return {
|
|
3133
3299
|
success: true,
|
|
@@ -3164,10 +3330,10 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3164
3330
|
const projectConfig = findProjectByTeamSync(issuePrefix);
|
|
3165
3331
|
if (projectConfig?.workspace?.type === "polyrepo" && projectConfig?.workspace?.repos) {
|
|
3166
3332
|
console.log(`[merge] Polyrepo detected for ${issueId}, coordinating merge set...`);
|
|
3167
|
-
const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-
|
|
3168
|
-
const { runQualityGates } = await import("./validation-
|
|
3169
|
-
const { getForgeAdapter } = await import("./forge-
|
|
3170
|
-
const { messageAgent } = await import("./agents-
|
|
3333
|
+
const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-DnSYdBEp.js");
|
|
3334
|
+
const { runQualityGates } = await import("./validation-CIi6pnI2.js");
|
|
3335
|
+
const { getForgeAdapter } = await import("./forge-B-ZWyTRm.js");
|
|
3336
|
+
const { messageAgent } = await import("./agents-FlIgQ3ql.js");
|
|
3171
3337
|
let mergeSet = getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId);
|
|
3172
3338
|
if (!mergeSet) {
|
|
3173
3339
|
const error = `No merge set found for ${issueId}`;
|
|
@@ -3438,7 +3604,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3438
3604
|
...mergeCompletionStatus(request)
|
|
3439
3605
|
});
|
|
3440
3606
|
completePendingOperation(issueId, null);
|
|
3441
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
3607
|
+
const { postMergeLifecycle } = await import("./merge-agent-BQM3a8z5.js");
|
|
3442
3608
|
advanceQueue();
|
|
3443
3609
|
await postMergeLifecycle(issueId, projectPath);
|
|
3444
3610
|
return {
|
|
@@ -3449,8 +3615,8 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3449
3615
|
repos: mergeResults
|
|
3450
3616
|
};
|
|
3451
3617
|
}
|
|
3452
|
-
const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-
|
|
3453
|
-
const { getForgeAdapter } = await import("./forge-
|
|
3618
|
+
const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-DnSYdBEp.js");
|
|
3619
|
+
const { getForgeAdapter } = await import("./forge-B-ZWyTRm.js");
|
|
3454
3620
|
const primaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
|
|
3455
3621
|
const targetBranch = primaryRepo?.targetBranch || "main";
|
|
3456
3622
|
const primaryForge = primaryRepo?.forge || "github";
|
|
@@ -3492,7 +3658,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3492
3658
|
};
|
|
3493
3659
|
}
|
|
3494
3660
|
if (githubPrRef) try {
|
|
3495
|
-
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-
|
|
3661
|
+
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CPfoFAdV.js");
|
|
3496
3662
|
if (isGitHubAppConfigured()) {
|
|
3497
3663
|
const prState = await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number));
|
|
3498
3664
|
if (prState.state !== "OPEN" && !prState.merged) {
|
|
@@ -3554,7 +3720,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3554
3720
|
...mergeCompletionStatus(request)
|
|
3555
3721
|
});
|
|
3556
3722
|
completePendingOperation(issueId, null);
|
|
3557
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
3723
|
+
const { postMergeLifecycle } = await import("./merge-agent-BQM3a8z5.js");
|
|
3558
3724
|
await postMergeLifecycle(issueId, projectPath, branchName);
|
|
3559
3725
|
return {
|
|
3560
3726
|
success: true,
|
|
@@ -3568,13 +3734,13 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3568
3734
|
} catch (prStateErr) {
|
|
3569
3735
|
console.warn(`[merge] Pre-merge PR state check failed for ${issueId}: ${prStateErr.message} — proceeding (check is best-effort)`);
|
|
3570
3736
|
}
|
|
3571
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
3737
|
+
const { postMergeLifecycle } = await import("./merge-agent-BQM3a8z5.js");
|
|
3572
3738
|
const agentId = request.kind === "strike" ? request.recoveryTarget : `agent-${issueId.toLowerCase()}`;
|
|
3573
3739
|
const rebaseMsg = request.kind === "strike" ? `STRIKE LANDING REQUEST: Rebase ${branchName} onto ${targetBranch}, resolve conflicts, run the full quality gates, push ${branchName}, then run pan strike-ready ${issueId} to persist the new HEAD. Do NOT merge or push main.` : `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.`;
|
|
3574
3740
|
setReviewStatus(issueId, { mergeStep: "rebasing" });
|
|
3575
3741
|
console.log(`[merge] Rebasing ${branchName} onto ${targetBranch} for ${issueId} (agent=${await Effect.runPromise(sessionExists(agentId)) ? "running" : "stopped"})...`);
|
|
3576
3742
|
{
|
|
3577
|
-
const { beginShipLog, appendShipLog } = await import("./ship-log-
|
|
3743
|
+
const { beginShipLog, appendShipLog } = await import("./ship-log-ClSMIzZX.js");
|
|
3578
3744
|
beginShipLog(issueId);
|
|
3579
3745
|
appendShipLog(issueId, `Ship started: rebasing ${branchName} onto ${targetBranch}…`, "rebasing");
|
|
3580
3746
|
}
|
|
@@ -3705,7 +3871,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3705
3871
|
});
|
|
3706
3872
|
let skipLocalVerification = false;
|
|
3707
3873
|
if (primaryForge === "github" && artifactUrl) try {
|
|
3708
|
-
const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-
|
|
3874
|
+
const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-CPfoFAdV.js");
|
|
3709
3875
|
if (isGitHubAppConfigured()) {
|
|
3710
3876
|
const ref = parsePullRequestRef({ url: artifactUrl });
|
|
3711
3877
|
if (ref) {
|
|
@@ -3726,14 +3892,14 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3726
3892
|
} catch (ciErr) {
|
|
3727
3893
|
console.warn(`[merge] CI-state check failed (${ciErr.message?.slice(0, 120)}) — falling back to local verification for ${issueId}`);
|
|
3728
3894
|
}
|
|
3729
|
-
const { appendShipLog } = await import("./ship-log-
|
|
3895
|
+
const { appendShipLog } = await import("./ship-log-ClSMIzZX.js");
|
|
3730
3896
|
if (skipLocalVerification) appendShipLog(issueId, "✓ Local verification skipped — CI already green on this exact commit", "verifying");
|
|
3731
3897
|
const verifyResult = skipLocalVerification ? { outcome: "passed" } : await (async () => {
|
|
3732
3898
|
console.log(`[merge] Running post-rebase verification for ${issueId}...`);
|
|
3733
3899
|
appendShipLog(issueId, "Running post-rebase verification (full quality-gate suite)…", "verifying");
|
|
3734
|
-
const { runVerificationForIssue } = await import("./verification-runner-
|
|
3900
|
+
const { runVerificationForIssue } = await import("./verification-runner-CDj4lD4t.js");
|
|
3735
3901
|
return Effect.runPromise(runVerificationForIssue(issueId, workspacePath, { isRemote: false }, "merge-verify", {
|
|
3736
|
-
|
|
3902
|
+
...mergeVerificationOptions(request),
|
|
3737
3903
|
onGateLog: (line) => appendShipLog(issueId, line, "verifying")
|
|
3738
3904
|
}));
|
|
3739
3905
|
})();
|
|
@@ -3764,7 +3930,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3764
3930
|
console.log(`[merge] Post-rebase verification ${verifyResult.outcome} for ${issueId}`);
|
|
3765
3931
|
setReviewStatus(issueId, { mergeStep: "reporting-statuses" });
|
|
3766
3932
|
try {
|
|
3767
|
-
const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-
|
|
3933
|
+
const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CPfoFAdV.js");
|
|
3768
3934
|
if (githubPrRef && isGitHubAppConfigured()) {
|
|
3769
3935
|
const sha = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).headSha.trim();
|
|
3770
3936
|
if (sha) {
|
|
@@ -3792,7 +3958,7 @@ async function triggerMerge(issueId, request = { kind: "normal" }) {
|
|
|
3792
3958
|
} catch (prMergeErr) {
|
|
3793
3959
|
console.error(`[merge] Review artifact merge threw for ${issueId}:`, prMergeErr);
|
|
3794
3960
|
try {
|
|
3795
|
-
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-
|
|
3961
|
+
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-CPfoFAdV.js");
|
|
3796
3962
|
if (githubPrRef && isGitHubAppConfigured()) {
|
|
3797
3963
|
artifactMerged = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).merged;
|
|
3798
3964
|
if (artifactMerged) console.log(`[merge] Race-detected: PR #${githubPrRef.number} for ${issueId} was already merged despite thrown error; proceeding`);
|
|
@@ -3911,8 +4077,8 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
|
|
|
3911
4077
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
3912
4078
|
if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
|
|
3913
4079
|
return yield* Effect.promise(async () => {
|
|
3914
|
-
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-
|
|
3915
|
-
const { getForgeAdapter } = await import("./forge-
|
|
4080
|
+
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-DnSYdBEp.js");
|
|
4081
|
+
const { getForgeAdapter } = await import("./forge-B-ZWyTRm.js");
|
|
3916
4082
|
let mergeSet = getMergeSetSync(issueId);
|
|
3917
4083
|
if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
|
|
3918
4084
|
const results = [];
|
|
@@ -4000,8 +4166,8 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
|
|
|
4000
4166
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
4001
4167
|
if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
|
|
4002
4168
|
return yield* Effect.promise(async () => {
|
|
4003
|
-
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-
|
|
4004
|
-
const { getForgeAdapter } = await import("./forge-
|
|
4169
|
+
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-DnSYdBEp.js");
|
|
4170
|
+
const { getForgeAdapter } = await import("./forge-B-ZWyTRm.js");
|
|
4005
4171
|
let mergeSet = getMergeSetSync(issueId);
|
|
4006
4172
|
if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
|
|
4007
4173
|
const results = [];
|
|
@@ -4194,7 +4360,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
|
|
|
4194
4360
|
console.log(`[approve] Starting role pipeline for ${issueId}...`);
|
|
4195
4361
|
let reviewResult;
|
|
4196
4362
|
try {
|
|
4197
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
4363
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-DJRO8EG8.js");
|
|
4198
4364
|
reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
4199
4365
|
issueId,
|
|
4200
4366
|
workspace: workspacePath,
|
|
@@ -4241,7 +4407,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
|
|
|
4241
4407
|
}
|
|
4242
4408
|
console.log(`[approve] Step 3/3: Running server-side rebase for ${issueId}...`);
|
|
4243
4409
|
try {
|
|
4244
|
-
const { rebaseFeatureBranch } = await import("./merge-rebase-
|
|
4410
|
+
const { rebaseFeatureBranch } = await import("./merge-rebase-C1KIVr0s.js");
|
|
4245
4411
|
const workspacePathForRebase = join(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
4246
4412
|
const rebaseResult = await Effect.runPromise(rebaseFeatureBranch(workspacePathForRebase, branchName, "main", issueId));
|
|
4247
4413
|
if (!rebaseResult.success) {
|
|
@@ -4261,7 +4427,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
|
|
|
4261
4427
|
completePendingOperation(issueId, pushResult.error);
|
|
4262
4428
|
return jsonResponse({ error: pushResult.error }, { status: pushResult.httpStatus });
|
|
4263
4429
|
}
|
|
4264
|
-
const { approve: lifecycleApprove } = await import("./lifecycle-
|
|
4430
|
+
const { approve: lifecycleApprove } = await import("./lifecycle-sycO16hj.js");
|
|
4265
4431
|
const ghResolved = resolveGitHubIssueSync(issueId);
|
|
4266
4432
|
const isGitHubIssueFlag = ghResolved.isGitHub;
|
|
4267
4433
|
const lifecycleCtx = {
|
|
@@ -4295,7 +4461,7 @@ const getMergeQueueRoute = HttpRouter.add("GET", "/api/merge-queue", httpHandler
|
|
|
4295
4461
|
})));
|
|
4296
4462
|
const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pipeline/notify", httpHandler(Effect.gen(function* () {
|
|
4297
4463
|
const request = yield* HttpServerRequest.HttpServerRequest;
|
|
4298
|
-
const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-
|
|
4464
|
+
const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-DXdfprGr.js"));
|
|
4299
4465
|
const expected = getInternalTokenSync();
|
|
4300
4466
|
if (!expected) return jsonResponse({
|
|
4301
4467
|
ok: false,
|
|
@@ -4309,7 +4475,7 @@ const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pi
|
|
|
4309
4475
|
}, 403);
|
|
4310
4476
|
const event = yield* readJsonBody;
|
|
4311
4477
|
const type = event.type;
|
|
4312
|
-
const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-
|
|
4478
|
+
const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-6iCJplFZ.js"));
|
|
4313
4479
|
switch (type) {
|
|
4314
4480
|
case "status_changed": {
|
|
4315
4481
|
const issueId = event.issueId;
|
|
@@ -4472,7 +4638,7 @@ init_review_status();
|
|
|
4472
4638
|
init_io();
|
|
4473
4639
|
init_types();
|
|
4474
4640
|
init_dag();
|
|
4475
|
-
|
|
4641
|
+
init_xbrief_index();
|
|
4476
4642
|
init_types$1();
|
|
4477
4643
|
init_review_context();
|
|
4478
4644
|
init_tldr_daemon();
|
|
@@ -4601,9 +4767,9 @@ async function getIndexStats(workspacePath) {
|
|
|
4601
4767
|
function resolvePlanLocation(projectPath, issueId) {
|
|
4602
4768
|
return Effect.gen(function* () {
|
|
4603
4769
|
const workspacePath = join(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
4604
|
-
const found = yield*
|
|
4770
|
+
const found = yield* findXBriefByIssue(projectPath, issueId);
|
|
4605
4771
|
if (found) {
|
|
4606
|
-
const doc = yield*
|
|
4772
|
+
const doc = yield* readXBriefDocument(found.path);
|
|
4607
4773
|
return {
|
|
4608
4774
|
path: found.path,
|
|
4609
4775
|
lifecycleDir: found.lifecycleDir,
|
|
@@ -4990,7 +5156,7 @@ const getWorkspacePlanRoute = HttpRouter.add("GET", "/api/workspaces/:issueId/pl
|
|
|
4990
5156
|
const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
|
|
4991
5157
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
4992
5158
|
const location = yield* resolvePlanLocation(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), issueId);
|
|
4993
|
-
if (!location) return jsonResponse({ error: "No
|
|
5159
|
+
if (!location) return jsonResponse({ error: "No xBRIEF plan found for this workspace" }, { status: 404 });
|
|
4994
5160
|
const cp = criticalPath(actionableDoc(location.doc));
|
|
4995
5161
|
return jsonResponse({
|
|
4996
5162
|
...location.doc,
|
|
@@ -5026,14 +5192,14 @@ const patchWorkspacePlanInspectionPolicyRoute = HttpRouter.add("PATCH", "/api/wo
|
|
|
5026
5192
|
const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
|
|
5027
5193
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
5028
5194
|
const policy = (yield* readJsonBody).inspectionPolicy;
|
|
5029
|
-
if (!
|
|
5195
|
+
if (!XBRIEF_INSPECTION_POLICIES.includes(policy)) return jsonResponse({ error: "Invalid inspection policy" }, { status: 400 });
|
|
5030
5196
|
const location = yield* resolvePlanLocation(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), issueId);
|
|
5031
|
-
if (!location) return jsonResponse({ error: "No
|
|
5197
|
+
if (!location) return jsonResponse({ error: "No xBRIEF plan found for this workspace" }, { status: 404 });
|
|
5032
5198
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
5033
5199
|
const updated = {
|
|
5034
5200
|
...location.doc,
|
|
5035
|
-
|
|
5036
|
-
...location.doc.
|
|
5201
|
+
xBRIEFInfo: {
|
|
5202
|
+
...location.doc.xBRIEFInfo,
|
|
5037
5203
|
inspectionPolicy: policy,
|
|
5038
5204
|
updated: now
|
|
5039
5205
|
},
|
|
@@ -5042,7 +5208,7 @@ const patchWorkspacePlanInspectionPolicyRoute = HttpRouter.add("PATCH", "/api/wo
|
|
|
5042
5208
|
updated: now
|
|
5043
5209
|
}
|
|
5044
5210
|
};
|
|
5045
|
-
yield* Effect.promise(() => writeFile(location.path,
|
|
5211
|
+
yield* Effect.promise(() => writeFile(location.path, `${serializeXBriefDocument(updated)}\n`, "utf-8"));
|
|
5046
5212
|
const cp = criticalPath(updated);
|
|
5047
5213
|
return jsonResponse({
|
|
5048
5214
|
...updated,
|
|
@@ -5084,10 +5250,10 @@ const patchWorkspaceTieredExecutionRoute = HttpRouter.add("PATCH", "/api/workspa
|
|
|
5084
5250
|
if (override !== "on" && override !== "off" && override !== null && override !== void 0) return jsonResponse({ error: "Invalid tiered-execution override" }, { status: 400 });
|
|
5085
5251
|
const project = getProjectSync(extractPrefixSync(issueId) ?? issueId.split("-")[0]);
|
|
5086
5252
|
if (!project) return jsonResponse({ error: "Project not found" }, { status: 404 });
|
|
5087
|
-
yield* Effect.promise(() => import("./record-
|
|
5253
|
+
yield* Effect.promise(() => import("./record-t6V-3Dcj.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
|
|
5088
5254
|
const projectPath = project.path;
|
|
5089
5255
|
const location = yield* resolvePlanLocation(projectPath, issueId);
|
|
5090
|
-
if (!location) return jsonResponse({ error: "No
|
|
5256
|
+
if (!location) return jsonResponse({ error: "No xBRIEF plan found for this workspace" }, { status: 404 });
|
|
5091
5257
|
const globalEnabled = loadConfigSync().config.tieredExecution?.enabled ?? false;
|
|
5092
5258
|
const planMetadata = location.doc.plan?.metadata;
|
|
5093
5259
|
let source;
|
|
@@ -5550,7 +5716,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
|
|
|
5550
5716
|
console.log(`Feature branch push note: ${errorMessage(pushErr)}`);
|
|
5551
5717
|
}
|
|
5552
5718
|
try {
|
|
5553
|
-
const { createReviewArtifactsForIssue } = await import("./review-artifacts-
|
|
5719
|
+
const { createReviewArtifactsForIssue } = await import("./review-artifacts-BLbSC4ke.js");
|
|
5554
5720
|
const artifactResult = await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath));
|
|
5555
5721
|
const primaryArtifact = artifactResult.mergeSet?.repos.find((repo) => !!repo.artifactUrl);
|
|
5556
5722
|
artifactResult.mergeSet?.repos.find((repo) => repo.mergeStatus !== "skipped")?.targetBranch;
|
|
@@ -5605,7 +5771,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
|
|
|
5605
5771
|
} catch {}
|
|
5606
5772
|
return;
|
|
5607
5773
|
}
|
|
5608
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
5774
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-DJRO8EG8.js");
|
|
5609
5775
|
const prUrl = getReviewStatusSync(issueId)?.prUrl;
|
|
5610
5776
|
const reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
5611
5777
|
issueId,
|
|
@@ -5744,7 +5910,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
|
|
|
5744
5910
|
console.log(`[request-review] Feature branch push note: ${errorMessage(pushErr)}`);
|
|
5745
5911
|
}
|
|
5746
5912
|
const prUrl = getReviewStatusSync(issueId)?.prUrl;
|
|
5747
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
5913
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-DJRO8EG8.js");
|
|
5748
5914
|
const result = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
5749
5915
|
issueId,
|
|
5750
5916
|
workspace: workspacePathRerun,
|
|
@@ -5794,7 +5960,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
|
|
|
5794
5960
|
});
|
|
5795
5961
|
} else {
|
|
5796
5962
|
const workspacePath = join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
5797
|
-
const { spawnRun } = yield* Effect.promise(() => import("./agents-
|
|
5963
|
+
const { spawnRun } = yield* Effect.promise(() => import("./agents-FlIgQ3ql.js"));
|
|
5798
5964
|
try {
|
|
5799
5965
|
const testRun = yield* Effect.promise(() => spawnRun(issueId, "test", { workspace: workspacePath }));
|
|
5800
5966
|
setReviewStatus(issueId, { testStatus: "testing" });
|
|
@@ -5904,7 +6070,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
|
|
|
5904
6070
|
testStatus: "pending",
|
|
5905
6071
|
reviewNotes
|
|
5906
6072
|
});
|
|
5907
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
6073
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-DJRO8EG8.js");
|
|
5908
6074
|
const result = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
5909
6075
|
issueId,
|
|
5910
6076
|
workspace: workspacePath,
|
|
@@ -6213,7 +6379,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
6213
6379
|
const result = processResetReviewPipeline(issueId, resetWorkspace.exists);
|
|
6214
6380
|
if (result.httpStatus !== 200) return jsonResponse(result.body, { status: result.httpStatus });
|
|
6215
6381
|
try {
|
|
6216
|
-
const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-
|
|
6382
|
+
const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-BQM3a8z5.js"));
|
|
6217
6383
|
resetPostMergeState(issueId);
|
|
6218
6384
|
} catch (err) {
|
|
6219
6385
|
console.warn(`[reset-review] resetPostMergeState best-effort failed for ${issueId}:`, err);
|
|
@@ -6222,7 +6388,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
6222
6388
|
const rerun = body?.rerun === true;
|
|
6223
6389
|
if (rerun) try {
|
|
6224
6390
|
yield* Effect.promise(async () => {
|
|
6225
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
6391
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-DJRO8EG8.js");
|
|
6226
6392
|
const dispatchArgs = buildReviewRedispatchArgs(issueId, resetWorkspace, workspaceInfo, resolved);
|
|
6227
6393
|
if (dispatchArgs) {
|
|
6228
6394
|
const result = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
@@ -6251,7 +6417,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
6251
6417
|
const postWorkspaceReviewPurgeRoute = HttpRouter.add("POST", "/api/review/:issueId/purge", httpHandler(Effect.gen(function* () {
|
|
6252
6418
|
const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
|
|
6253
6419
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
6254
|
-
const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-
|
|
6420
|
+
const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-DJRO8EG8.js"));
|
|
6255
6421
|
const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
|
|
6256
6422
|
const purge = yield* Effect.promise(() => purgeReviewAgentsForIssue(projectKey, issueId));
|
|
6257
6423
|
const workspaceInfo = getWorkspaceInfoForIssue(issueId);
|
|
@@ -6281,8 +6447,8 @@ const postWorkspaceAbortReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
6281
6447
|
success: false,
|
|
6282
6448
|
error: "Workspace does not exist"
|
|
6283
6449
|
}, { status: 400 });
|
|
6284
|
-
const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-
|
|
6285
|
-
const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-
|
|
6450
|
+
const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-9SkRpES9.js"));
|
|
6451
|
+
const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-DJRO8EG8.js"));
|
|
6286
6452
|
const { killed, failed } = yield* killAllReviewerSessions(resolveProjectFromIssueSync(issueId)?.projectKey, issueId);
|
|
6287
6453
|
setReviewStatus(issueId, {
|
|
6288
6454
|
reviewStatus: "pending",
|
|
@@ -6354,8 +6520,8 @@ const getReviewConfigRoute = HttpRouter.add("GET", "/api/review/:issueId/config"
|
|
|
6354
6520
|
const issueId = ((yield* HttpRouter.params)["issueId"] ?? "").toUpperCase();
|
|
6355
6521
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
6356
6522
|
return jsonResponse(yield* Effect.promise(async () => {
|
|
6357
|
-
const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-
|
|
6358
|
-
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-
|
|
6523
|
+
const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-t6V-3Dcj.js");
|
|
6524
|
+
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-DJRO8EG8.js");
|
|
6359
6525
|
const project = resolveProjectForIssue(issueId);
|
|
6360
6526
|
const record = project ? readIssueRecordSync(project, issueId) : null;
|
|
6361
6527
|
return {
|
|
@@ -6390,9 +6556,9 @@ const postReviewConfigRoute = HttpRouter.add("POST", "/api/review/:issueId/confi
|
|
|
6390
6556
|
return jsonResponse({ error: error instanceof Error ? error.message : String(error) }, { status: 400 });
|
|
6391
6557
|
}
|
|
6392
6558
|
return jsonResponse(yield* Effect.promise(async () => {
|
|
6393
|
-
const { resolveProjectForIssue } = await import("./record-
|
|
6394
|
-
const { updateIssueRecord } = await import("./record-update-
|
|
6395
|
-
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-
|
|
6559
|
+
const { resolveProjectForIssue } = await import("./record-t6V-3Dcj.js");
|
|
6560
|
+
const { updateIssueRecord } = await import("./record-update-DACtKh6_.js");
|
|
6561
|
+
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-DJRO8EG8.js");
|
|
6396
6562
|
const record = await updateIssueRecord(resolveProjectForIssue(issueId), issueId, (current) => {
|
|
6397
6563
|
if (hasMode) if (body.reviewMode === null) delete current.reviewMode;
|
|
6398
6564
|
else current.reviewMode = body.reviewMode;
|
|
@@ -6825,7 +6991,7 @@ async function readWorkspacePlanningMarkdown(issueId, fileName) {
|
|
|
6825
6991
|
*/
|
|
6826
6992
|
async function readWorkspaceContinueFile(_projectPath, workspacePath, issueId) {
|
|
6827
6993
|
try {
|
|
6828
|
-
const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-
|
|
6994
|
+
const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-t6V-3Dcj.js");
|
|
6829
6995
|
const recordView = readRecordContinueViewSync(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId);
|
|
6830
6996
|
return recordView ? JSON.stringify(recordView, null, 2) : null;
|
|
6831
6997
|
} catch {
|
|
@@ -7584,7 +7750,7 @@ const getWorkspaceReviewStatusRoute = HttpRouter.add("GET", "/api/review/:issueI
|
|
|
7584
7750
|
if (queuePosition === null) try {
|
|
7585
7751
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
7586
7752
|
if (resolved) {
|
|
7587
|
-
const { getQueueForProject } = yield* Effect.promise(() => import("./merge-
|
|
7753
|
+
const { getQueueForProject } = yield* Effect.promise(() => import("./merge-DK23JEdS.js"));
|
|
7588
7754
|
const mergePos = findPositionInQueueSync(issueId, getQueueForProject(resolved.projectKey).map((e) => ({
|
|
7589
7755
|
id: String(e.id),
|
|
7590
7756
|
type: "task",
|
|
@@ -7622,7 +7788,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7622
7788
|
const workspaceInfo = getWorkspaceInfoForIssue(issueId);
|
|
7623
7789
|
if (workspaceInfo.exists && workspaceInfo.localPath) {
|
|
7624
7790
|
const localPath = workspaceInfo.localPath;
|
|
7625
|
-
const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-
|
|
7791
|
+
const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-Dry_Ka_D.js"));
|
|
7626
7792
|
try {
|
|
7627
7793
|
const gitInfo = yield* getWorkspaceGitInfo(localPath);
|
|
7628
7794
|
if (gitInfo.HEAD) update.reviewedAtCommit = gitInfo.HEAD;
|
|
@@ -7637,7 +7803,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7637
7803
|
if (verificationStatus) update.verificationStatus = verificationStatus;
|
|
7638
7804
|
if (readyForMerge !== void 0) update.readyForMerge = readyForMerge;
|
|
7639
7805
|
const status = setReviewStatus(issueId, update);
|
|
7640
|
-
const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-
|
|
7806
|
+
const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-DVj0hvaL.js"));
|
|
7641
7807
|
const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
|
|
7642
7808
|
if (reviewStatus && [
|
|
7643
7809
|
"passed",
|
|
@@ -7655,7 +7821,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7655
7821
|
const agentId = `agent-${issueId.toLowerCase()}`;
|
|
7656
7822
|
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.`;
|
|
7657
7823
|
try {
|
|
7658
|
-
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-
|
|
7824
|
+
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-qmiMbqTZ.js"));
|
|
7659
7825
|
const wsInfo = getWorkspaceInfoForIssue(issueId);
|
|
7660
7826
|
const fileResult = yield* Effect.promise(() => writeFeedbackFile({
|
|
7661
7827
|
issueId,
|
|
@@ -7719,7 +7885,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7719
7885
|
const agentId = `agent-${issueId.toLowerCase()}`;
|
|
7720
7886
|
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.`;
|
|
7721
7887
|
try {
|
|
7722
|
-
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-
|
|
7888
|
+
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-qmiMbqTZ.js"));
|
|
7723
7889
|
const wsInfo = getWorkspaceInfoForIssue(issueId);
|
|
7724
7890
|
const fileResult = yield* Effect.promise(() => writeFeedbackFile({
|
|
7725
7891
|
issueId,
|
|
@@ -7752,14 +7918,14 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7752
7918
|
});
|
|
7753
7919
|
yield* Effect.promise(async () => {
|
|
7754
7920
|
try {
|
|
7755
|
-
const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-
|
|
7921
|
+
const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-9SkRpES9.js");
|
|
7756
7922
|
const project = resolveProjectFromIssueSync(issueId);
|
|
7757
7923
|
const repo = (project ? getProjectSync(project.projectKey) : null)?.github_repo;
|
|
7758
7924
|
if (!repo || !repo.includes("/")) return;
|
|
7759
7925
|
const [owner, name] = repo.split("/");
|
|
7760
7926
|
const wsInfo = getWorkspaceInfoForIssue(issueId);
|
|
7761
7927
|
if (!wsInfo?.localPath) return;
|
|
7762
|
-
const { postOverdeckTestsStatus } = await import("./github-app-
|
|
7928
|
+
const { postOverdeckTestsStatus } = await import("./github-app-CPfoFAdV.js");
|
|
7763
7929
|
await postOverdeckTestsStatus(wsInfo.localPath, owner, name, "success", "Test specialist passed");
|
|
7764
7930
|
} catch (err) {
|
|
7765
7931
|
console.warn(`[review-status] Failed to post overdeck/tests for ${issueId}: ${err.message}`);
|
|
@@ -7801,7 +7967,7 @@ const postWorkspaceRefreshTokenRoute = HttpRouter.add("POST", "/api/workspaces/:
|
|
|
7801
7967
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
7802
7968
|
const issueLower = issueId.toLowerCase();
|
|
7803
7969
|
const workspacePath = join(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), "workspaces", `feature-${issueLower}`);
|
|
7804
|
-
const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-
|
|
7970
|
+
const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-CPfoFAdV.js"));
|
|
7805
7971
|
if (!isGitHubAppConfigured()) return jsonResponse({
|
|
7806
7972
|
success: false,
|
|
7807
7973
|
error: "GitHub App not configured"
|
|
@@ -7814,6 +7980,6 @@ const postWorkspaceRefreshTokenRoute = HttpRouter.add("POST", "/api/workspaces/:
|
|
|
7814
7980
|
})));
|
|
7815
7981
|
const workspacesRouteLayer = Layer.mergeAll(workspaceDataRouteLayer, postWorkspaceRebuildRoute, postWorkspaceRebuildAndStartRoute, uatStackActionRouteLayer, getWorkspaceStateMdRoute, getWorkspaceInferenceMdRoute, stashCleanRouteLayer, containerOpsRouteLayer, postWorkspaceStartRoute, getWorkspaceReviewStatusRoute, postWorkspaceReviewStatusRoute, reviewPipelineRouteLayer, reviewControlRouteLayer, mergeOpsRouteLayer, postWorkspaceRefreshTokenRoute);
|
|
7816
7982
|
//#endregion
|
|
7817
|
-
export { getWorkspacePathForIssue as C, resolveIssueHeadlineCost as S, getCostsForIssueSync as _, pushApproveMain as a, processPendingFeedbackDeliveries as b, triggerMerge as c, resumeQueuedMerges as d, syncWalFromAllProjects as f, migrateAllSessionsSync as g, reclassifyUnknownCostEventsSync as h, mergeOpsRouteLayer as i, internalEventsRouteLayer as l, reconcilePiTranscripts as m, buildRichPRBody as n, reconcileGitHubMergeStatus as o, reconcile as p, isBranchAlreadyRebased as r, shouldBlockApproveForDirtyStatus as s, workspacesRouteLayer as t, eventsRouteLayer as u, rebuildCacheSync as v, getCachedRunningAgents as x, syncCacheSync as y };
|
|
7983
|
+
export { getWorkspacePathForIssue as C, stopAgentOutputService as E, resolveIssueHeadlineCost as S, startAgentOutputService as T, getCostsForIssueSync as _, pushApproveMain as a, processPendingFeedbackDeliveries as b, triggerMerge as c, resumeQueuedMerges as d, syncWalFromAllProjects as f, migrateAllSessionsSync as g, reclassifyUnknownCostEventsSync as h, mergeOpsRouteLayer as i, internalEventsRouteLayer as l, reconcilePiTranscripts as m, buildRichPRBody as n, reconcileGitHubMergeStatus as o, reconcile as p, isBranchAlreadyRebased as r, shouldBlockApproveForDirtyStatus as s, workspacesRouteLayer as t, eventsRouteLayer as u, rebuildCacheSync as v, retainAgentOutputInterest as w, getCachedRunningAgents as x, syncCacheSync as y };
|
|
7818
7984
|
|
|
7819
|
-
//# sourceMappingURL=workspaces-
|
|
7985
|
+
//# sourceMappingURL=workspaces-hWvy9eKs.js.map
|