@overdeck/desktop 0.45.12 → 0.45.15
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 +33 -0
- package/package.json +7 -2
- package/server/{acceptance-criteria-1LHgD9vg.js → acceptance-criteria-DHZk2ceV.js} +2 -2
- package/server/{advancing-selfheal-BqsLWqEM.js → advancing-selfheal-CSuZ31bB.js} +5 -5
- package/server/{agent-gc-CUb52n7s.js → agent-gc-D_DxfBHR.js} +3 -3
- package/server/{agent-state-D-moNwhA.js → agent-state-EP2QFV9n.js} +1 -1
- package/server/{agent-state-service-BzESvLOf.js → agent-state-service-BZkvgQf4.js} +5 -5
- package/server/{agent-state-service-BaZH7sXJ.js → agent-state-service-C_2ZAQRP.js} +1 -1
- package/server/{agents-B5LfpLPv.js → agents-CsOzAmRg.js} +145 -78
- package/server/{agents-C4kZ8a2r.js → agents-DCvyTXNU.js} +1 -1
- package/server/{archive-planning-BbZe-8IK.js → archive-planning-CTILQRnV.js} +1 -1
- package/server/{archive-planning-oX1pj6nY.js → archive-planning-DkivCk1A.js} +4 -4
- package/server/{artifact-index-jobs-DGr6bxev.js → artifact-index-jobs-CmsvQ1ey.js} +2 -2
- package/server/auto-commit-QAfsu3Sb.js +3 -0
- package/server/{backlog-auto-trigger-BlJHikOm.js → backlog-auto-trigger-ueRaT8Dy.js} +2 -2
- package/server/{bd-process-lock-i3CYMS-B.js → bd-process-lock-D3S4T4o-.js} +32 -11
- package/server/{beads-DD7fYCl5.js → beads-BGGxrkZ5.js} +96 -196
- package/server/{beads-BNU-fb48.js → beads-CYsLiyIM.js} +1 -1
- package/server/{beads-query-e6oku4P5.js → beads-query-B1DlJVp9.js} +24 -99
- package/server/beads-restore-CyygSmmn.js +23 -0
- package/server/{behavior-CPf0pbOt.js → behavior-Cpj03N4v.js} +3 -3
- package/server/{briefing-freshness-B2FdLwIv.js → briefing-freshness-Kh5V8RTh.js} +4 -4
- package/server/{checkpoint-manager-eFgaMMu4.js → checkpoint-manager-CAFos8e1.js} +1 -1
- package/server/{checkpoint-manager-JryW6MpM.js → checkpoint-manager-fu9oVsR-.js} +2 -2
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-qvOqvMuC.js → checkpoints-1BqOlS4q.js} +2 -2
- package/server/{checkpoints-BK17oicz.js → checkpoints-DvhGi8P_.js} +1 -1
- package/server/claude-hooks-provision-s_wdpeVj.js +360 -0
- package/server/{claude-permissions-B6bWGh9d.js → claude-permissions-CaWqysff.js} +2 -2
- package/server/{claude-settings-overlay-BPdhTPjo.js → claude-settings-overlay-BbA4FbVI.js} +1 -1
- package/server/{claude-settings-overlay-CRyyKKXQ.js → claude-settings-overlay-CcTf0xzG.js} +2 -2
- package/server/{cli-B75AieAM.js → cli-BwCvCUBK.js} +9 -9
- package/server/cli-ClIQwgMI.js +3 -0
- package/server/{cliproxy-CCzwuSNe.js → cliproxy-BsoNNDAj.js} +2 -2
- package/server/{cliproxy-DOQf66G9.js → cliproxy-C2xC-3vH.js} +1 -1
- package/server/{close-issue-_X3MXJyG.js → close-issue-BleIwP3f.js} +5 -5
- package/server/{closed-issue-reaper-CLR7ClsO.js → closed-issue-reaper-BwUUvjEW.js} +1 -1
- package/server/{closed-issue-reaper-BsUfBSjM.js → closed-issue-reaper-mC5pujeb.js} +102 -30
- package/server/{codex-CY-QRuU9.js → codex-B7DTpwEw.js} +1 -1
- package/server/{codex-B4KEpX5V.js → codex-DW60_5j2.js} +5 -5
- package/server/{compact-beads-cZds2MTr.js → compact-beads-CK_hHEnB.js} +1 -1
- package/server/{compact-beads-uEDccC76.js → compact-beads-DKL54y6j.js} +15 -8
- package/server/{config-DARrpYWA.js → config-BRNQJXhA.js} +1 -1
- package/server/{config-8sjaU6jZ.js → config-ZNnMpIlh.js} +2 -2
- package/server/{config-yaml-ClpGgrf6.js → config-yaml-Dcz-8uit.js} +29 -3
- package/server/{conflict-gate-Ds9_2yjd.js → conflict-gate-DGT8jCLp.js} +1 -1
- package/server/{conflict-gate-BtB_o-Vi.js → conflict-gate-DTje2Ll7.js} +3 -3
- package/server/{context-layers-r2ywnQYA.js → context-layers-BdUCQ-cl.js} +3 -3
- package/server/{context-layers-CRCk1QG7.js → context-layers-ByOWUjUg.js} +2 -2
- package/server/{control-settings-D1B3u6HP.js → control-settings-DwkAeooY.js} +4 -4
- package/server/{conversation-compaction-D86Zo2Ci.js → conversation-compaction-OTYgd6eg.js} +8 -8
- package/server/{conversation-compaction-CZRVk4hg.js → conversation-compaction-WYQZUVDm.js} +1 -1
- package/server/{conversation-service-CuTVU8dV.js → conversation-service-BR1OgvxO.js} +5 -5
- package/server/{conversation-service-CkL-6MuG.js → conversation-service-C_kNZPLx.js} +1 -1
- package/server/{conversations-DfJKBDwB.js → conversations-DG2M8WnT.js} +4 -4
- package/server/{conversations-BmWEluPL.js → conversations-izHvSoAR.js} +1 -1
- package/server/{cost-DAPYN6iA.js → cost-B2mj17iG.js} +3 -3
- package/server/{cost-CCnqa5xK.js → cost-DQ2ajr_m.js} +2 -2
- package/server/{cost-sync-BDL10Nwu.js → cost-sync-gTayEuWP.js} +3 -3
- package/server/{dag-Dv2r5bVD.js → dag-CqTehWpY.js} +3 -3
- package/server/{dangerous-git-ops-Dcw7PbYo.js → dangerous-git-ops-DDWQlPC3.js} +1 -1
- package/server/dashboard-db-worker.js +6 -6
- package/server/{deacon-DYnZH7kC.js → deacon-BqW9HMew.js} +3 -3
- package/server/{deacon-CM0MxbS8.js → deacon-DrKDBeJL.js} +161 -1594
- package/server/{deacon-nudge-log-B-naf89q.js → deacon-nudge-log-D1wEK6zF.js} +1 -1
- package/server/deacon-swarm-BY5hKNaU.js +2 -0
- package/server/{deacon-swarm-BstYoz8Q.js → deacon-swarm-CO_A7xyd.js} +12 -105
- package/server/deacon.js +7 -7
- package/server/{devcontainer-renderer-CaYOG9JN.js → devcontainer-renderer-BQolp_qZ.js} +3 -3
- package/server/{dist-BIC8spJ0.js → dist-Bc32rWJB.js} +1 -1
- package/server/dist-DGTwcZhI.js +3 -0
- package/server/{docker-DDI1shu3.js → docker-s-esqZ__.js} +67 -28
- package/server/{ensure-devcontainer-DCAg3ksz.js → ensure-devcontainer-DA4-jF6R.js} +4 -4
- package/server/{ensure-devcontainer-CbSXvN9W.js → ensure-devcontainer-pUVaT0h3.js} +1 -1
- package/server/{esm-shims-DiV9jHa_.js → esm-shims-CJHy8CZY.js} +1 -1
- package/server/{event-store-DU3HkZlN.js → event-store-CcJAhKCl.js} +1 -1
- package/server/{event-store-DCMqyI07.js → event-store-DRte2Rwt.js} +3 -3
- package/server/{events-BfiosVAn.js → events-Bej1w_k8.js} +3 -3
- package/server/{events-DLRxpSuV.js → events-CtsLScn8.js} +1 -1
- package/server/export-Dx_qJ3h8.js +87 -0
- package/server/{factory-BMtWV9iv.js → factory-FN727tWr.js} +4 -4
- package/server/{feature-registry-population-DA7bO6Zn.js → feature-registry-population-ie-yBcQC.js} +4 -4
- package/server/{feature-registry-storage-nAY1fbBt.js → feature-registry-storage-CkZTFSsn.js} +2 -2
- package/server/{features-DMu7eGmU.js → features-Dtm9ABuz.js} +2 -2
- package/server/{feedback-target-DHqcw3cN.js → feedback-target-BYtpyt1i.js} +6 -6
- package/server/{feedback-target-B2SEai8-.js → feedback-target-DVJQDiE4.js} +1 -1
- package/server/{feedback-writer-DMBdS_jL.js → feedback-writer-DOUhyIW2.js} +1 -1
- package/server/{feedback-writer-qvm7UON7.js → feedback-writer-fdE1BzeL.js} +4 -4
- package/server/{flywheel-k4FPtCQ_.js → flywheel-Bi82iiNl.js} +1 -1
- package/server/{flywheel-Dfpx4bIV.js → flywheel-Bv3wv2S6.js} +23 -15
- package/server/{flywheel-D2LdPSic.js → flywheel-CUErLAyN.js} +13 -13
- package/server/{flywheel-merge-order-CB4lbXeJ.js → flywheel-merge-order-BaEN3iyN.js} +7 -7
- package/server/{flywheel-merge-order-CttTazRY.js → flywheel-merge-order-DXjeBnJ1.js} +1 -1
- package/server/{forge-CoPFXFyl.js → forge-ButEdJ31.js} +2 -2
- package/server/forge-XlDgPQWs.js +2 -0
- package/server/{from-B0YoJl9-.js → from-CbtTxftl.js} +1 -1
- package/server/{fts-db-DAHW1yA_.js → fts-db-CBgBLZcL.js} +2 -2
- package/server/{fts-operations-DDXDBi0d.js → fts-operations-CI9Xuo_1.js} +2 -2
- package/server/{git-utils-DbfC0zls.js → git-utils-BCLRWQ-y.js} +1 -1
- package/server/{git-utils-B90Zjzfl.js → git-utils-ClfpP47N.js} +2 -2
- package/server/{github-app-C7lftMNj.js → github-app-DRD2woO0.js} +1 -1
- package/server/{github-app-BecAnXRX.js → github-app-DscZ0_B6.js} +2 -2
- package/server/{github-client-D21rCIXk.js → github-client-DpiZnxGH.js} +2 -2
- package/server/{github-client-BwtKZtM0.js → github-client-iFRw8f7e.js} +1 -1
- package/server/{github-pr-lookup-CzVWuysl.js → github-pr-lookup-D-EBexxC.js} +2 -2
- package/server/{harness-resolve-SkRJm4a7.js → harness-resolve-iMjyNUJ2.js} +3 -3
- package/server/{health-events-DA_JLpgZ.js → health-events-B_WsQyYm.js} +1 -1
- package/server/{health-events-BT0aAfeA.js → health-events-CRdxDFN2.js} +2 -2
- package/server/{hooks-BQxRXtRb.js → hooks-C1ScyVxP.js} +1 -1
- package/server/{hooks-DxEn2BoY.js → hooks-C9b7Vqpw.js} +2 -2
- package/server/hume-K1pi8jC4.js +3 -0
- package/server/{hume-DkVOs1Qi.js → hume-TQ5pvOZ_.js} +2 -2
- package/server/{idle-stack-reaper-DGy7tvC9.js → idle-stack-reaper-B1kG7B_X.js} +2 -2
- package/server/{idle-stack-reaper-C7fJL8jH.js → idle-stack-reaper-iFVOAoJy.js} +1 -1
- package/server/{infra-DE3C4PMr.js → infra-bpq1MHKU.js} +50 -3
- package/server/{injection-Dt22tGvS.js → injection-BLWfwTVZ.js} +1 -1
- package/server/{injection-Cc4Qt8LZ.js → injection-DJqWld1v.js} +7 -7
- package/server/inspect-agent-477VxQim.js +2 -0
- package/server/{inspect-agent-DOaCDkCF.js → inspect-agent-DytCsltn.js} +9 -9
- package/server/{internal-token-nobT6FhA.js → internal-token-CCaWaTwE.js} +1 -1
- package/server/{internal-token-B_1YLWLI.js → internal-token-CjlhdufS.js} +2 -2
- package/server/{io-A7ZuOBkz.js → io-BiQ2Cs3k.js} +2 -2
- package/server/{issue-closed-Da3DeomA.js → issue-closed-FApNiOOs.js} +4 -4
- package/server/{issue-lifecycle-Bd9XBJAQ.js → issue-lifecycle-BkFWNjlD.js} +1 -1
- package/server/{issue-lifecycle-543pQX9D.js → issue-lifecycle-C-K53ASY.js} +21 -21
- package/server/{issue-service-singleton-Brc3t0SV.js → issue-service-singleton-CuHGpJJP.js} +8 -8
- package/server/{issue-service-singleton-BC2JLZi7.js → issue-service-singleton-bG1WdSdQ.js} +1 -1
- package/server/{issues-D3kt9UWE.js → issues-CwQMphDH.js} +2 -2
- package/server/jsonl-parser-dNIjHgym.js +245 -0
- package/server/{label-cleanup-w9X_T3AQ.js → label-cleanup-DYvAZknd.js} +3 -3
- package/server/{layers-Cwe1J-9o.js → layers-CD6FysRU.js} +2 -2
- package/server/{lifecycle-f1GbDK33.js → lifecycle-C_73gi-C.js} +7 -7
- package/server/{lifecycle-io-D56q8zlO.js → lifecycle-io-C_Wu0_i-.js} +1 -1
- package/server/{lifecycle-io-Bqvj0m3i.js → lifecycle-io-CeYxP3cE.js} +4 -4
- package/server/{linear-client-Bh4T4S-c.js → linear-client-4qoKnuQu.js} +1 -1
- package/server/{linear-client-CfJMTAYd.js → linear-client-EtVyblVz.js} +2 -2
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-ZrXFM3jv.js → merge-7rqkTUm2.js} +3 -3
- package/server/merge-agent-36wfYm2u.js +3 -0
- package/server/{merge-agent-CHHs5S_0.js → merge-agent-4Zhlgvqp.js} +62 -27
- package/server/{merge-batch-BwhGdlh4.js → merge-batch-itfnwdsT.js} +1 -1
- package/server/{merge-blockers-BMhDpMl_.js → merge-blockers-Bto_Oe_o.js} +2 -2
- package/server/{merge-DRMPa8CQ.js → merge-brm721Es.js} +1 -1
- package/server/merge-ops-PzqsW69V.js +2 -0
- package/server/{merge-rebase-R7MfqpiE.js → merge-rebase-Czfqfe4q.js} +2 -2
- package/server/{merge-set-B3Breacq.js → merge-set-BIkGQL9j.js} +9 -5
- package/server/{merge-set-D-iXNP0I.js → merge-set-G1RHcu3D.js} +1 -1
- package/server/{merge-sync-DHWbGtjR.js → merge-sync-B43Dybea.js} +2 -2
- package/server/{merge-sync-bOOtfeXR.js → merge-sync-DIrmlZUr.js} +1 -1
- package/server/{merge-train-98ptZrPT.js → merge-train-DGqVuNZV.js} +3 -3
- package/server/{merge-train-deps-B5FWJTE2.js → merge-train-deps-q15XLnAS.js} +4 -4
- package/server/{merge-verification-BGiuiXAK.js → merge-verification-Cqfxx6bE.js} +4 -4
- package/server/{multipart-parser-D7mzNNDm.js → multipart-parser-CiPxxfUH.js} +2 -2
- package/server/node_modules/.package-lock.json +1 -1
- package/server/{orphan-proposed-reconciler-BSGCNJ6X.js → orphan-proposed-reconciler-BWWHn4Lr.js} +15 -39
- package/server/{orphan-proposed-reconciler-CSuxivr9.js → orphan-proposed-reconciler-DAD9FJtQ.js} +1 -1
- package/server/package-lock.json +2 -2
- package/server/package.json +1 -1
- package/server/{pan-dir-DoPtdHrp.js → pan-dir-Bj7Hy8iu.js} +3 -3
- package/server/{paths-CVDLPxXp.js → paths-C9DkhIOT.js} +2 -2
- package/server/{pickup-KLRUhThD.js → pickup-CKRuGDsB.js} +1 -1
- package/server/{pipeline-notifier-BtYHbBPl.js → pipeline-notifier-BkKbQ8ji.js} +1 -1
- package/server/{pipeline-notifier-WD2dnOsR.js → pipeline-notifier-CAurUste.js} +2 -2
- package/server/project-pipelines-BRWaGmI4.js +162 -0
- package/server/projects-KJ94e50I.js +3 -0
- package/server/{prompts-Cg7e9FPb.js → prompts-DfI5qbTW.js} +2 -2
- package/server/{providers-fLduChnX.js → providers-CWDXoaMA.js} +7 -7
- package/server/providers-D-5txBRc.js +3 -0
- package/server/public/assets/{chunk-BO2N2NFS-aNlsGDCu.js → chunk-BO2N2NFS-ClukPsZQ.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-CnjkrvT8.js → diagram-OG6HWLK6-Avtvq2qI.js} +1 -1
- package/server/public/assets/{dist-Bg3Sbsx4.js → dist-BEHQuasD.js} +3 -3
- package/server/public/assets/{dist-CGKBCieA.js → dist-BvmY-qb1.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-C8LLKj23.js → ganttDiagram-6RSMTGT7-7KhCd0fH.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-BSDEUvhW.js → highlighted-body-OFNGDK62-iQoBMTf0.js} +1 -1
- package/server/public/assets/index-DUFDmvmH.css +1 -0
- package/server/public/assets/index-DnTZ2QeN.js +796 -0
- package/server/public/assets/{linear-DEbYZoxg.js → linear-CiJHW9g5.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-DZJOwgBG.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BtZL5pXE.js → pieDiagram-4H26LBE5-BOhmvUhW.js} +1 -1
- package/server/public/assets/{prod-DYVvIyuh.js → prod-DmLBBqat.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-a7vS8Jc8.js → quadrantDiagram-W4KKPZXB-Cjku660G.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-Ckbq2SWH.js → sankeyDiagram-5OEKKPKP-D52w5oPh.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-DJyeNa99.js → xychartDiagram-2RQKCTM6-BTO07_Iv.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-1WXmTBlo.js → pull-requests-Bmre-Xlz.js} +3 -3
- package/server/{pull-requests-D2SjJIwY.js → pull-requests-CKZPWhjD.js} +1 -1
- package/server/{rally-8aQlLLVj.js → rally-BBd9tQ__.js} +3 -3
- package/server/rally-Dc2Wnxw2.js +3 -0
- package/server/{rally-api-BtvwdX6d.js → rally-api-DDc85HIz.js} +1 -1
- package/server/{rally-api-H5I2CBO0.js → rally-api-DxZFObI_.js} +2 -2
- package/server/{rally-client-Bt-qHiOh.js → rally-client-BADHn0m_.js} +1 -1
- package/server/{rally-client-33CYZYYu.js → rally-client-DvvLiAQP.js} +4 -4
- package/server/{reap-terminal-sessions-CAmURC2h.js → reap-terminal-sessions-D6JDJsqF.js} +1 -1
- package/server/{reap-terminal-sessions-BwJb2DLJ.js → reap-terminal-sessions-D_xvy-Mk.js} +1 -1
- package/server/{rebuild-stack-KHkkrGjx.js → rebuild-stack-D19i080j.js} +6 -6
- package/server/{rebuild-stack-CXSgAGPR.js → rebuild-stack-GOsWqXi3.js} +1 -1
- package/server/{reconstruct-cache-D_Ml65_6.js → reconstruct-cache-lQrG4xGg.js} +6 -6
- package/server/record-pyB6VA32.js +3 -0
- package/server/recovery-trip-Dfh1tNHn.js +98 -0
- package/server/release-engine-DxcMWRuK.js +306 -0
- package/server/release-set-BYsgX7o6.js +125 -0
- package/server/{remote-CGuognN3.js → remote-8W2Yhygw.js} +3 -3
- package/server/{remote-D0Old0Cv.js → remote-DmeL21dF.js} +3 -3
- package/server/{remote-agents-DfhMq6kQ.js → remote-agents-BfQBE6MN.js} +5 -5
- package/server/{remote-agents-UHoi4oGr.js → remote-agents-DlvbzO7m.js} +1 -1
- package/server/{remote-completion-RZYePR_0.js → remote-completion-BgkiSQmx.js} +12 -12
- package/server/resolver-dTpSSzaH.js +158 -0
- package/server/resume-DhcIqsTm.js +3 -0
- package/server/{review-agent-sZBCpEVv.js → review-agent-D025Wt7w.js} +22 -22
- package/server/{review-agent-uwVftH98.js → review-agent-Rub0OpZc.js} +1 -1
- package/server/{review-artifacts-C7a45b1_.js → review-artifacts-CX951jTU.js} +6 -6
- package/server/{review-context-CErbQpKL.js → review-context-DGGGR_w5.js} +7 -7
- package/server/{review-monitor-DHD9m_kh.js → review-monitor-0_qqMcnS.js} +2 -2
- package/server/{review-status-gPndPUBc.js → review-status-4qqLkRMu.js} +24 -17
- package/server/{review-status-JhQ3qlDS.js → review-status-Br6lAFGO.js} +1 -1
- package/server/{review-status-enrichment-qWvWckYN.js → review-status-enrichment-Cr8m3uVL.js} +3 -3
- package/server/{review-status-sync-B_GrEke8.js → review-status-sync-D3KUhsdA.js} +1 -1
- package/server/{review-status-sync-D3A9KX95.js → review-status-sync-OC-l1lNt.js} +9 -5
- package/server/{review-verdict-feedback-4WZ5ZdbC.js → review-verdict-feedback-DrWMuRaj.js} +6 -6
- package/server/{review-verdict-feedback-Zo0r_z4m.js → review-verdict-feedback-YOzmsq9G.js} +1 -1
- package/server/{rollup-BrUIKMv_.js → rollup-CnxbwaLH.js} +8 -8
- package/server/{rollup-Bmhn80tB.js → rollup-DmazRY0j.js} +1 -1
- package/server/{scanner-BIGumel_.js → scanner-DE1MqAaF.js} +7 -7
- package/server/{sequence-io-DA0akEQN.js → sequence-io-C0uoqfGx.js} +4 -4
- package/server/{sequencer-agent-DeflKafB.js → sequencer-agent-i-b2u4SJ.js} +10 -6
- package/server/server.js +1115 -297
- package/server/{service-V0sUK-OR.js → service-D0_gh2tl.js} +1668 -1408
- package/server/{session-fork-Yx3UcAQf.js → session-fork-DZ12vipL.js} +2 -2
- package/server/{settings-CFEeQRj2.js → settings-ByqjPtFO.js} +2 -2
- package/server/{settings-CxVate0h.js → settings-DCC4BAqj.js} +3 -3
- package/server/settings-yydgaqhv.js +2 -0
- package/server/{shadow-engineering-BRxnVSDk.js → shadow-engineering-BhnmtW5m.js} +2 -2
- package/server/{shadow-state-1aS8FijU.js → shadow-state-ByXZehsy.js} +1 -1
- package/server/{shadow-state-BiMwdyl1.js → shadow-state-CKm8xWX9.js} +2 -2
- package/server/{ship-log-CMWH3H5-.js → ship-log-DE_0Cv_i.js} +1 -1
- package/server/{smart-compaction-Bw1K_Sbl.js → smart-compaction-D5Zen3AA.js} +7 -7
- package/server/{smart-compaction-xblMyVpT.js → smart-compaction-h4_ca6Uk.js} +1 -1
- package/server/{spawn-planning-session-CzDFSKAQ.js → spawn-planning-session-Bgi7Ub02.js} +1 -1
- package/server/{spawn-planning-session-DxLxcM7m.js → spawn-planning-session-Dueit4WX.js} +15 -15
- package/server/{specialist-completion-BiEXUHfD.js → specialist-completion-BZ8M-WZ0.js} +1 -1
- package/server/{specialist-context-BfkTA81h.js → specialist-context-BMq83C58.js} +5 -5
- package/server/{specialist-handoff-logger-BiKuLtNm.js → specialist-handoff-logger-BxX1YefH.js} +2 -2
- package/server/{specialist-logs-CFJjGsLC.js → specialist-logs-BWZYcJ6P.js} +3 -3
- package/server/{specialists-DdvpFNt1.js → specialists-8ZAguXef.js} +1 -1
- package/server/{specialists-B4byf18k.js → specialists-BudKrjOu.js} +76 -76
- package/server/{specialists-DjHbwQ_p.js → specialists-DrPrC9Y9.js} +20 -256
- package/server/{specialists-BLIreoE7.js → specialists-ZkW4Mb7U.js} +1 -1
- package/server/specs-DwoAEGrW.js +3 -0
- package/server/{src-fgbU-jJ-.js → src-DHn4Rd2F.js} +25 -3
- package/server/{src-mK_M_ZIj.js → src-DNUUqkec.js} +6 -6
- package/server/{src-CALBEUMX.js → src-Dv6L03vW.js} +3 -3
- package/server/{stack-health-BFM8YlHw.js → stack-health-Dclm7_tu.js} +1 -1
- package/server/{stack-health-Qd7rPiVe.js → stack-health-DxsTx7II.js} +2 -2
- package/server/{state-home-C2Bicw9N.js → state-home-CRowbXqU.js} +6 -6
- package/server/stuck-remediation-CFWUP8_I.js +1491 -0
- package/server/stuck-remediation-CLHd-lrF.js +2 -0
- package/server/{summary-fork-EWWBvzgE.js → summary-fork-CKc01Our.js} +2 -2
- package/server/{summary-fork-DezPkJSm.js → summary-fork-CtCwBJ2Z.js} +8 -8
- package/server/{supervisor-D5GC5jUM.js → supervisor-BA5D72Qa.js} +2 -2
- package/server/supervisor-DHjumXlL.js +2 -0
- package/server/{swarm-readiness-Cf9mommA.js → swarm-readiness-CL5sM9B1.js} +3 -3
- package/server/{system-prerequisites-BsI9hxh9.js → system-prerequisites-DmFSXIE5.js} +13 -1
- package/server/{teardown-workspace-CWz1pbEK.js → teardown-workspace-DWmFJzTw.js} +37 -68
- package/server/{test-agent-queue-TiVXe3ZT.js → test-agent-queue-DjsQoV5X.js} +6 -6
- package/server/{test-verdict-CCDd25uN.js → test-verdict-BSqsQp3G.js} +1 -1
- package/server/{test-verdict-Bm4uv_AA.js → test-verdict-D1AmZ2c0.js} +1 -1
- package/server/{tldr-daemon-C_1frSDj.js → tldr-daemon-C-MGomL8.js} +2 -2
- package/server/{tldr-daemon-Big5IZ_M.js → tldr-daemon-DD9rI5gA.js} +1 -1
- package/server/{tmux-D57f-XNv.js → tmux-C_d-lSIq.js} +2 -2
- package/server/{tmux-DClqWwb8.js → tmux-x291Gjjb.js} +1 -1
- package/server/{token-_qujO3JZ.js → token-DfBf1bsd.js} +1 -1
- package/server/{tracker-config-BmdJU_w6.js → tracker-config-CNODpd11.js} +2 -2
- package/server/{tracker-config-B_Ubts1Z.js → tracker-config-DItsdelv.js} +1 -1
- package/server/{tracker-utils-Bg-Sevcv.js → tracker-utils-B9ZoVA9b.js} +1 -1
- package/server/{tracker-utils-CWFt6jjV.js → tracker-utils-Ch2_5GGf.js} +2 -2
- package/server/{traefik-connect-5EP1WS_Z.js → traefik-connect-BF4x_LUQ.js} +1 -1
- package/server/{tunnel-hOBNQbmF.js → tunnel-YD80_IHr.js} +1 -1
- package/server/{tunnel-UBf2vyAL.js → tunnel-r_5nHAI6.js} +3 -3
- package/server/{types-B5u3NxMl.js → types-33JEP4LZ.js} +1 -1
- package/server/{uat-train-DGkIkLxu.js → uat-train-DDI00aqD.js} +1 -1
- package/server/{uat-train-qNanv5hN.js → uat-train-DjkFWXge.js} +25 -25
- package/server/{validation-C4wegCvH.js → validation-DUTiJnyz.js} +4 -4
- package/server/{validation-B0QaLIHP.js → validation-ict8hnXk.js} +1 -1
- package/server/{verification-runner-DdleMNLq.js → verification-runner-ATaLbpr5.js} +1 -1
- package/server/{verification-runner-CntudBes.js → verification-runner-inLgeQux.js} +12 -12
- package/server/{vtt-parser-CKc-smWM.js → vtt-parser-QnRfcjiU.js} +1 -1
- package/server/{work-agent-prompt-CG5jFV9A.js → work-agent-prompt-fZljjA1_.js} +12 -12
- package/server/{workflows-BK2xs_a8.js → workflows-oBnJ7Tm0.js} +14 -14
- package/server/workflows-tU7KKxQi.js +2 -0
- package/server/{workspace-C9lC5o3E.js → workspace-B2WOW9Hw.js} +1 -1
- package/server/{workspace-CLrSIRCx.js → workspace-CNuW2j41.js} +3 -3
- package/server/{workspace-config-DA8U97k9.js → workspace-config-CBgMGhWs.js} +1 -1
- package/server/{workspace-manager-BJhW2sky.js → workspace-manager-CB-R07R3.js} +12 -12
- package/server/{workspace-manager-Cb2a7bg9.js → workspace-manager-DjUAJCSs.js} +1 -1
- package/server/{workspace-metadata-QQmo_Z0l.js → workspace-metadata-9Nn5kgRl.js} +2 -2
- package/server/{workspace-metadata-CTRnr323.js → workspace-metadata-Fd58uUQG.js} +1 -1
- package/server/{workspaces-Ca4zZs12.js → workspaces-BjWXntty.js} +106 -120
- package/server/writer-CQMGzEkw.js +3 -0
- package/server/writer-fe1-8iGc.js +251 -0
- package/sync-sources/hooks/ask-user-question-hook +87 -0
- package/sync-sources/hooks/auto-approve-hook +96 -0
- package/sync-sources/hooks/codex-notify-hook +62 -0
- package/sync-sources/hooks/gh-issue-trailer-hook +4 -0
- package/sync-sources/hooks/gh-issue-trailer-hook.d.ts +7 -0
- package/sync-sources/hooks/gh-issue-trailer-hook.d.ts.map +1 -0
- package/sync-sources/hooks/gh-issue-trailer-hook.js +239 -0
- package/sync-sources/hooks/gh-issue-trailer-hook.js.map +1 -0
- package/sync-sources/hooks/gh-issue-trailer-hook.ts +296 -0
- package/sync-sources/hooks/git-hooks/post-checkout +109 -0
- package/sync-sources/hooks/heartbeat-hook +113 -0
- package/sync-sources/hooks/notification-hook +70 -0
- package/sync-sources/hooks/notify-complete +79 -0
- package/sync-sources/hooks/pan-hook-lib.sh +153 -0
- package/sync-sources/hooks/permission-event-hook +24 -0
- package/sync-sources/hooks/post-compact-hook +25 -0
- package/sync-sources/hooks/pre-compact-hook +26 -0
- package/sync-sources/hooks/pre-tool-hook +35 -0
- package/sync-sources/hooks/record-cost-event.d.ts +1 -0
- package/sync-sources/hooks/record-cost-event.js +31859 -0
- package/sync-sources/hooks/record-cost-event.js.map +1 -0
- package/sync-sources/hooks/record-cost-event.ts +267 -0
- package/sync-sources/hooks/rtk-bash-filter +152 -0
- package/sync-sources/hooks/session-start-hook +80 -0
- package/sync-sources/hooks/specialist-stop-hook +106 -0
- package/sync-sources/hooks/statusline.sh +169 -0
- package/sync-sources/hooks/stop-hook +217 -0
- package/sync-sources/hooks/tldr-post-edit +72 -0
- package/sync-sources/hooks/tldr-read-enforcer +340 -0
- package/sync-sources/hooks/tmux-send-keys-guard +87 -0
- package/sync-sources/hooks/tsdown.config.ts +14 -0
- package/sync-sources/hooks/user-prompt-submit-hook +57 -0
- package/sync-sources/hooks/work-agent-stop-hook +424 -0
- package/server/auto-commit-CGQlb4rV.js +0 -3
- package/server/bd-mutex-BItGvLQ8.js +0 -35
- package/server/beads-restore-CMbDSB5R.js +0 -60
- package/server/cli-Ch_BWJB2.js +0 -3
- package/server/deacon-swarm-CSWGRfzr.js +0 -2
- package/server/dist-BUplB3Od.js +0 -3
- package/server/forge-IgLR0Ist.js +0 -2
- package/server/hume-x9voULey.js +0 -3
- package/server/inspect-agent-CYoWAeeB.js +0 -2
- package/server/merge-agent-CfohxFWM.js +0 -3
- package/server/merge-ops-Czke6UAp.js +0 -2
- package/server/projects-Bqfwuqet.js +0 -3
- package/server/providers-JjK6izqX.js +0 -3
- package/server/public/assets/index-CZiADHcL.css +0 -1
- package/server/public/assets/index-LQIfhmgI.js +0 -796
- package/server/public/assets/mermaid-GHXKKRXX-CZOsRYoT.js +0 -1
- package/server/rally-Ba9QoNYc.js +0 -3
- package/server/record-De2syxNB.js +0 -3
- package/server/resume-CmxF3Kjz.js +0 -3
- package/server/settings-DEhYpW0k.js +0 -2
- package/server/specs-CVH1kvz3.js +0 -3
- package/server/supervisor-DQMK2e3I.js +0 -2
- package/server/workflows-pKw9yRSV.js +0 -2
|
@@ -1,42 +1,43 @@
|
|
|
1
|
-
import { $n as
|
|
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-
|
|
1
|
+
import { $n as extractNumberSync, Cn as findProjectByTeamSync, Kn as resolveProjectFromIssueSync, Kr as getOverdeckHome, On as getProjectSync, Pn as init_projects, Rn as listProjectsSync, ar as resolveIssueIdSync, br as init_errors, dn as isStatePlaneOnlyStatus, dr as GitError, er as extractPrefixSync, qr as init_paths, rr as parseIssueIdSync, tr as init_issue_id, un as init_state_plane, ur as FsError, yn as extractTeamPrefix, zr as encodeClaudeProjectDir } from "./config-yaml-Dcz-8uit.js";
|
|
2
|
+
import { D as jsonResponse, E as httpHandler, S as normalizeOrigin, b as getTrustedOrigins, f as getWorkAgentLifecycleStateSync, n as _serverManagedMerges, y as getHeaderFromMap } from "./specialists-BudKrjOu.js";
|
|
3
3
|
import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-pcbf-e30.js";
|
|
4
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
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 getAgentRuntimeStateSync, j as messageAgent, t as init_agents, vr as saveAgentRuntimeState } 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-
|
|
4
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-bpq1MHKU.js";
|
|
5
|
+
import { K as buildChildEnvWithoutTmuxSync, L as sessionExists, O as listSessionNames, i as capturePane, q as init_child_env, x as init_tmux } from "./tmux-C_d-lSIq.js";
|
|
6
|
+
import { _ as setDeaconIgnored, c as init_review_status, f as markWorkspaceStuck, g as setAutoMerge, s as getReviewStatusSync, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-4qqLkRMu.js";
|
|
7
|
+
import { _ as init_queue_position, a as EventStoreService, g as findPositionInQueueSync, h as computeQueuePositionFromStatusSync, s as init_domain_services } from "./issue-lifecycle-C-K53ASY.js";
|
|
8
|
+
import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-DQ2ajr_m.js";
|
|
9
|
+
import { Mn as getAgentState, Rt as transitionIssueToInReview, U as spawnAgent, Z as listRunningAgents, gr as getAgentRuntimeStateSync, j as messageAgent, t as init_agents, vr as saveAgentRuntimeState } from "./agents-CsOzAmRg.js";
|
|
10
|
+
import { f as CostWriter, l as CostDoorLive } from "./service-D0_gh2tl.js";
|
|
11
|
+
import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-CNODpd11.js";
|
|
12
|
+
import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-Ch2_5GGf.js";
|
|
13
|
+
import { o as getInternalTokenSync, s as init_internal_token } from "./internal-token-CjlhdufS.js";
|
|
14
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, i as init_events, l as init_wal, o as readEventsSync, r as getLastEventMetadataSync, t as appendCostEventSync } from "./events-
|
|
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 {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
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
|
|
35
|
-
import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
15
|
+
import { o as init_merge_sync, r as getAllActiveQueues } from "./merge-sync-B43Dybea.js";
|
|
16
|
+
import { A as findVBriefByIssue, N as readVBriefDocument, b as init_types$1, c as mergeRecordStatusOverrides, j as init_vbrief_index, o as init_io, r as findPlan, s as isPlanningComplete, u as readPlan, y as VBRIEF_INSPECTION_POLICIES } from "./io-BiQ2Cs3k.js";
|
|
17
|
+
import { f as init_config, m as loadConfigSync$1 } from "./config-ZNnMpIlh.js";
|
|
18
|
+
import { it as findConversationForCostSessionSync, k as init_conversations } from "./conversations-DG2M8WnT.js";
|
|
19
|
+
import { a as init_stack_health, i as getWorkspaceStackHealth, n as collectDockerContainerLifecycleSnapshot } from "./stack-health-DxsTx7II.js";
|
|
20
|
+
import { o as criticalPath, t as actionableDoc, u as init_dag } from "./dag-CqTehWpY.js";
|
|
21
|
+
import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-B1DlJVp9.js";
|
|
22
|
+
import { a as readEventsFromLineSync, i as init_events, l as init_wal, o as readEventsSync, r as getLastEventMetadataSync, t as appendCostEventSync } from "./events-Bej1w_k8.js";
|
|
23
|
+
import { n as getContainersReferencingWorkspacePath, r as init_workspace_manager } from "./workspace-manager-CB-R07R3.js";
|
|
24
|
+
import { r as init_devcontainer_renderer, t as DEVCONTAINER_DIRNAME } from "./devcontainer-renderer-BQolp_qZ.js";
|
|
25
|
+
import { a as init_jsonl_parser, t as getActiveSessionModelSync } from "./jsonl-parser-dNIjHgym.js";
|
|
26
|
+
import { i as findWorkspacePath, o as init_archive_planning } from "./archive-planning-DkivCk1A.js";
|
|
27
|
+
import { T as verifyAppCanMerge, f as init_github_app, m as isIntegrationPermissionError } from "./github-app-DscZ0_B6.js";
|
|
28
|
+
import { a as loadWorkspaceMetadataSync, i as listWorkspaceMetadataSync } from "./workspace-metadata-9Nn5kgRl.js";
|
|
29
|
+
import { n as restoreTrackedBeadsExport, t as init_beads_restore } from "./beads-restore-CyygSmmn.js";
|
|
30
|
+
import { n as enrichReviewStatusFromSessions } from "./review-status-enrichment-Cr8m3uVL.js";
|
|
31
|
+
import { n as generateDailySummary, r as init_cli } from "./cli-BwCvCUBK.js";
|
|
32
|
+
import { a as getDiffStat, i as getDiffBase, o as init_review_context, r as getChangedFiles } from "./review-context-DGGGR_w5.js";
|
|
33
|
+
import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-C-MGomL8.js";
|
|
34
|
+
import { C as init_operations, S as gitPush, T as listGitOperationsSync, a as init_merge_agent, w as init_git_activity, x as MainDivergedError, y as syncMainIntoWorkspace } from "./merge-agent-4Zhlgvqp.js";
|
|
35
|
+
import { F as enqueueMerge, I as getAllActiveQueues$1, L as getCurrentMerge, P as dequeueMerge, z as markMergeProcessing } from "./merge-7rqkTUm2.js";
|
|
36
|
+
import { n as init_release_set, t as getReleaseSetSync } from "./release-set-BYsgX7o6.js";
|
|
37
|
+
import { i as init_conflict_gate, r as getCachedConflictGateMergeability } from "./conflict-gate-DTje2Ll7.js";
|
|
38
|
+
import { n as runVerificationForIssue } from "./verification-runner-inLgeQux.js";
|
|
39
|
+
import { t as teardownWorkspace } from "./teardown-workspace-DWmFJzTw.js";
|
|
40
|
+
import { n as init_rebuild_stack, t as composeProjectNameForWorkspace } from "./rebuild-stack-D19i080j.js";
|
|
40
41
|
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
41
42
|
import { Effect, Layer, Option } from "effect";
|
|
42
43
|
import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, writeFileSync } from "fs";
|
|
@@ -973,7 +974,7 @@ const postWorkspaceContainerActionRoute = HttpRouter.add("POST", "/api/workspace
|
|
|
973
974
|
}
|
|
974
975
|
if (!workspacePath) return jsonResponse({ error: `Workspace not found for ${issueId}` }, { status: 404 });
|
|
975
976
|
if (!composeFile && ["start", "restart"].includes(action)) {
|
|
976
|
-
const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-
|
|
977
|
+
const { ensureDevcontainerSync } = yield* Effect.promise(() => import("./ensure-devcontainer-pUVaT0h3.js"));
|
|
977
978
|
if (ensureDevcontainerSync({
|
|
978
979
|
workspacePath,
|
|
979
980
|
issueId
|
|
@@ -2593,7 +2594,7 @@ async function reconcileGitHubMergeStatus(issueId, status) {
|
|
|
2593
2594
|
const prRef = parseGitHubPullRequestUrl(status.prUrl);
|
|
2594
2595
|
if (!prRef) return false;
|
|
2595
2596
|
try {
|
|
2596
|
-
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-
|
|
2597
|
+
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DRD2woO0.js");
|
|
2597
2598
|
if (!isGitHubAppConfigured()) return false;
|
|
2598
2599
|
const prState = await Effect.runPromise(getPullRequestState(prRef.owner, prRef.repo, prRef.number));
|
|
2599
2600
|
console.log(`[merge] reconcileGitHubMergeStatus: ${issueId} PR #${prRef.number} merged=${prState.merged} state=${prState.state}`);
|
|
@@ -2610,31 +2611,6 @@ async function reconcileGitHubMergeStatus(issueId, status) {
|
|
|
2610
2611
|
return false;
|
|
2611
2612
|
}
|
|
2612
2613
|
}
|
|
2613
|
-
async function readBeadsFromJsonl(workspacePath, issueId) {
|
|
2614
|
-
try {
|
|
2615
|
-
const jsonlPath = join(workspacePath, ".beads", "issues.jsonl");
|
|
2616
|
-
if (!existsSync$1(jsonlPath)) return [];
|
|
2617
|
-
const raw = await readFile(jsonlPath, "utf-8");
|
|
2618
|
-
const issueLower = issueId.toLowerCase();
|
|
2619
|
-
const beads = [];
|
|
2620
|
-
for (const line of raw.split("\n")) {
|
|
2621
|
-
if (!line.trim()) continue;
|
|
2622
|
-
try {
|
|
2623
|
-
const entry = JSON.parse(line);
|
|
2624
|
-
const labels = Array.isArray(entry.labels) ? entry.labels : [];
|
|
2625
|
-
if (labels.some((l) => l.toLowerCase() === issueLower)) beads.push({
|
|
2626
|
-
id: String(entry.id ?? ""),
|
|
2627
|
-
title: String(entry.title ?? ""),
|
|
2628
|
-
status: String(entry.status ?? "open"),
|
|
2629
|
-
labels
|
|
2630
|
-
});
|
|
2631
|
-
} catch {}
|
|
2632
|
-
}
|
|
2633
|
-
return beads;
|
|
2634
|
-
} catch {
|
|
2635
|
-
return [];
|
|
2636
|
-
}
|
|
2637
|
-
}
|
|
2638
2614
|
/**
|
|
2639
2615
|
* Build a rich PR body with issue link, beads task summary, and AC checklist
|
|
2640
2616
|
* from the vBRIEF plan. Exported for testing.
|
|
@@ -2660,8 +2636,7 @@ async function buildRichPRBody(issueId, workspacePath) {
|
|
|
2660
2636
|
}
|
|
2661
2637
|
} catch {}
|
|
2662
2638
|
try {
|
|
2663
|
-
|
|
2664
|
-
if (beads.length === 0) beads = await readBeadsFromJsonl(workspacePath, issueId);
|
|
2639
|
+
const beads = (await Effect.runPromise(queryBeadsForIssue(workspacePath, issueId, { acquisitionTimeoutMs: 500 }))).beads;
|
|
2665
2640
|
if (beads.length > 0) {
|
|
2666
2641
|
lines.push("## Implementation Tasks");
|
|
2667
2642
|
lines.push("");
|
|
@@ -2871,8 +2846,8 @@ async function triggerMerge(issueId) {
|
|
|
2871
2846
|
try {
|
|
2872
2847
|
if (workspaceInfo.isRemote && workspaceInfo.vmName) {
|
|
2873
2848
|
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-
|
|
2849
|
+
const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-G1RHcu3D.js");
|
|
2850
|
+
const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
|
|
2876
2851
|
const remotePrimaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
|
|
2877
2852
|
const remoteTargetBranch = remotePrimaryRepo?.targetBranch || "main";
|
|
2878
2853
|
const remoteForge = remotePrimaryRepo?.forge || "github";
|
|
@@ -2907,7 +2882,7 @@ async function triggerMerge(issueId) {
|
|
|
2907
2882
|
readyForMerge: false
|
|
2908
2883
|
});
|
|
2909
2884
|
completePendingOperation(issueId, null);
|
|
2910
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
2885
|
+
const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
|
|
2911
2886
|
await postMergeLifecycle(issueId, projectPath);
|
|
2912
2887
|
return {
|
|
2913
2888
|
success: true,
|
|
@@ -2944,10 +2919,10 @@ async function triggerMerge(issueId) {
|
|
|
2944
2919
|
const projectConfig = findProjectByTeamSync(issuePrefix);
|
|
2945
2920
|
if (projectConfig?.workspace?.type === "polyrepo" && projectConfig?.workspace?.repos) {
|
|
2946
2921
|
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-
|
|
2922
|
+
const { getMergeSetSync, ensureMergeSetForIssueSync, upsertMergeSetSync, withRepoStateSync } = await import("./merge-set-G1RHcu3D.js");
|
|
2923
|
+
const { runQualityGates } = await import("./validation-ict8hnXk.js");
|
|
2924
|
+
const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
|
|
2925
|
+
const { messageAgent } = await import("./agents-DCvyTXNU.js");
|
|
2951
2926
|
let mergeSet = getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId);
|
|
2952
2927
|
if (!mergeSet) {
|
|
2953
2928
|
const error = `No merge set found for ${issueId}`;
|
|
@@ -3217,7 +3192,7 @@ async function triggerMerge(issueId) {
|
|
|
3217
3192
|
readyForMerge: false
|
|
3218
3193
|
});
|
|
3219
3194
|
completePendingOperation(issueId, null);
|
|
3220
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
3195
|
+
const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
|
|
3221
3196
|
advanceQueue();
|
|
3222
3197
|
await postMergeLifecycle(issueId, projectPath);
|
|
3223
3198
|
return {
|
|
@@ -3228,8 +3203,8 @@ async function triggerMerge(issueId) {
|
|
|
3228
3203
|
repos: mergeResults
|
|
3229
3204
|
};
|
|
3230
3205
|
}
|
|
3231
|
-
const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-
|
|
3232
|
-
const { getForgeAdapter } = await import("./forge-
|
|
3206
|
+
const { getMergeSetSync, ensureMergeSetForIssueSync } = await import("./merge-set-G1RHcu3D.js");
|
|
3207
|
+
const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
|
|
3233
3208
|
const primaryRepo = (getMergeSetSync(issueId) || ensureMergeSetForIssueSync(issueId))?.repos[0];
|
|
3234
3209
|
const targetBranch = primaryRepo?.targetBranch || "main";
|
|
3235
3210
|
const primaryForge = primaryRepo?.forge || "github";
|
|
@@ -3271,7 +3246,7 @@ async function triggerMerge(issueId) {
|
|
|
3271
3246
|
};
|
|
3272
3247
|
}
|
|
3273
3248
|
if (githubPrRef) try {
|
|
3274
|
-
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-
|
|
3249
|
+
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DRD2woO0.js");
|
|
3275
3250
|
if (isGitHubAppConfigured()) {
|
|
3276
3251
|
const prState = await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number));
|
|
3277
3252
|
if (prState.state !== "OPEN" && !prState.merged) {
|
|
@@ -3332,7 +3307,7 @@ async function triggerMerge(issueId) {
|
|
|
3332
3307
|
readyForMerge: false
|
|
3333
3308
|
});
|
|
3334
3309
|
completePendingOperation(issueId, null);
|
|
3335
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
3310
|
+
const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
|
|
3336
3311
|
await postMergeLifecycle(issueId, projectPath, branchName);
|
|
3337
3312
|
return {
|
|
3338
3313
|
success: true,
|
|
@@ -3346,13 +3321,13 @@ async function triggerMerge(issueId) {
|
|
|
3346
3321
|
} catch (prStateErr) {
|
|
3347
3322
|
console.warn(`[merge] Pre-merge PR state check failed for ${issueId}: ${prStateErr.message} — proceeding (check is best-effort)`);
|
|
3348
3323
|
}
|
|
3349
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
3324
|
+
const { postMergeLifecycle } = await import("./merge-agent-36wfYm2u.js");
|
|
3350
3325
|
const agentId = `agent-${issueId.toLowerCase()}`;
|
|
3351
3326
|
const rebaseMsg = `MERGE REQUESTED: The human has clicked MERGE for ${issueId}. Please rebase onto ${targetBranch} and push:\n\n1. git fetch origin ${targetBranch}\n2. git rebase origin/${targetBranch}\n3. If conflicts: resolve them, git add, git rebase --continue\n4. git push --force-with-lease\n\nAfter pushing, the server will handle verification and merge automatically. Do NOT run gh pr merge yourself.`;
|
|
3352
3327
|
setReviewStatus(issueId, { mergeStep: "rebasing" });
|
|
3353
3328
|
console.log(`[merge] Rebasing ${branchName} onto ${targetBranch} for ${issueId} (agent=${await Effect.runPromise(sessionExists(agentId)) ? "running" : "stopped"})...`);
|
|
3354
3329
|
{
|
|
3355
|
-
const { beginShipLog, appendShipLog } = await import("./ship-log-
|
|
3330
|
+
const { beginShipLog, appendShipLog } = await import("./ship-log-DE_0Cv_i.js");
|
|
3356
3331
|
beginShipLog(issueId);
|
|
3357
3332
|
appendShipLog(issueId, `Ship started: rebasing ${branchName} onto ${targetBranch}…`, "rebasing");
|
|
3358
3333
|
}
|
|
@@ -3480,7 +3455,7 @@ async function triggerMerge(issueId) {
|
|
|
3480
3455
|
});
|
|
3481
3456
|
let skipLocalVerification = false;
|
|
3482
3457
|
if (primaryForge === "github" && artifactUrl) try {
|
|
3483
|
-
const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-
|
|
3458
|
+
const { parsePullRequestRef, getCiCheckRunsStatePromise, isGitHubAppConfigured } = await import("./github-app-DRD2woO0.js");
|
|
3484
3459
|
if (isGitHubAppConfigured()) {
|
|
3485
3460
|
const ref = parsePullRequestRef({ url: artifactUrl });
|
|
3486
3461
|
if (ref) {
|
|
@@ -3501,12 +3476,12 @@ async function triggerMerge(issueId) {
|
|
|
3501
3476
|
} catch (ciErr) {
|
|
3502
3477
|
console.warn(`[merge] CI-state check failed (${ciErr.message?.slice(0, 120)}) — falling back to local verification for ${issueId}`);
|
|
3503
3478
|
}
|
|
3504
|
-
const { appendShipLog } = await import("./ship-log-
|
|
3479
|
+
const { appendShipLog } = await import("./ship-log-DE_0Cv_i.js");
|
|
3505
3480
|
if (skipLocalVerification) appendShipLog(issueId, "✓ Local verification skipped — CI already green on this exact commit", "verifying");
|
|
3506
3481
|
const verifyResult = skipLocalVerification ? { outcome: "passed" } : await (async () => {
|
|
3507
3482
|
console.log(`[merge] Running post-rebase verification for ${issueId}...`);
|
|
3508
3483
|
appendShipLog(issueId, "Running post-rebase verification (full quality-gate suite)…", "verifying");
|
|
3509
|
-
const { runVerificationForIssue } = await import("./verification-runner-
|
|
3484
|
+
const { runVerificationForIssue } = await import("./verification-runner-ATaLbpr5.js");
|
|
3510
3485
|
return Effect.runPromise(runVerificationForIssue(issueId, workspacePath, { isRemote: false }, "merge-verify", {
|
|
3511
3486
|
syncTargetBranch: false,
|
|
3512
3487
|
onGateLog: (line) => appendShipLog(issueId, line, "verifying")
|
|
@@ -3539,7 +3514,7 @@ async function triggerMerge(issueId) {
|
|
|
3539
3514
|
console.log(`[merge] Post-rebase verification ${verifyResult.outcome} for ${issueId}`);
|
|
3540
3515
|
setReviewStatus(issueId, { mergeStep: "reporting-statuses" });
|
|
3541
3516
|
try {
|
|
3542
|
-
const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-
|
|
3517
|
+
const { getPullRequestState, isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-DRD2woO0.js");
|
|
3543
3518
|
if (githubPrRef && isGitHubAppConfigured()) {
|
|
3544
3519
|
const sha = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).headSha.trim();
|
|
3545
3520
|
if (sha) {
|
|
@@ -3567,7 +3542,7 @@ async function triggerMerge(issueId) {
|
|
|
3567
3542
|
} catch (prMergeErr) {
|
|
3568
3543
|
console.error(`[merge] Review artifact merge threw for ${issueId}:`, prMergeErr);
|
|
3569
3544
|
try {
|
|
3570
|
-
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-
|
|
3545
|
+
const { getPullRequestState, isGitHubAppConfigured } = await import("./github-app-DRD2woO0.js");
|
|
3571
3546
|
if (githubPrRef && isGitHubAppConfigured()) {
|
|
3572
3547
|
artifactMerged = (await Effect.runPromise(getPullRequestState(githubPrRef.owner, githubPrRef.repo, githubPrRef.number))).merged;
|
|
3573
3548
|
if (artifactMerged) console.log(`[merge] Race-detected: PR #${githubPrRef.number} for ${issueId} was already merged despite thrown error; proceeding`);
|
|
@@ -3684,8 +3659,8 @@ const postForgeApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge
|
|
|
3684
3659
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
3685
3660
|
if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
|
|
3686
3661
|
return yield* Effect.promise(async () => {
|
|
3687
|
-
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-
|
|
3688
|
-
const { getForgeAdapter } = await import("./forge-
|
|
3662
|
+
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-G1RHcu3D.js");
|
|
3663
|
+
const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
|
|
3689
3664
|
let mergeSet = getMergeSetSync(issueId);
|
|
3690
3665
|
if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
|
|
3691
3666
|
const results = [];
|
|
@@ -3773,8 +3748,8 @@ const postForgeMergeRoute = HttpRouter.add("POST", "/api/issues/:issueId/forge-m
|
|
|
3773
3748
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
3774
3749
|
if (!/^[A-Z]+-\d+$/i.test(issueId)) return jsonResponse({ error: "Invalid issue ID format" }, { status: 400 });
|
|
3775
3750
|
return yield* Effect.promise(async () => {
|
|
3776
|
-
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-
|
|
3777
|
-
const { getForgeAdapter } = await import("./forge-
|
|
3751
|
+
const { getMergeSetSync, upsertMergeSetSync, withRepoArtifactUrlSync, withRepoStateSync } = await import("./merge-set-G1RHcu3D.js");
|
|
3752
|
+
const { getForgeAdapter } = await import("./forge-XlDgPQWs.js");
|
|
3778
3753
|
let mergeSet = getMergeSetSync(issueId);
|
|
3779
3754
|
if (!mergeSet) return jsonResponse({ error: `No merge set found for ${issueId}` }, { status: 404 });
|
|
3780
3755
|
const results = [];
|
|
@@ -3967,7 +3942,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
|
|
|
3967
3942
|
console.log(`[approve] Starting role pipeline for ${issueId}...`);
|
|
3968
3943
|
let reviewResult;
|
|
3969
3944
|
try {
|
|
3970
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
3945
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
|
|
3971
3946
|
reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
3972
3947
|
issueId,
|
|
3973
3948
|
workspace: workspacePath,
|
|
@@ -4014,7 +3989,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
|
|
|
4014
3989
|
}
|
|
4015
3990
|
console.log(`[approve] Step 3/3: Running server-side rebase for ${issueId}...`);
|
|
4016
3991
|
try {
|
|
4017
|
-
const { rebaseFeatureBranch } = await import("./merge-rebase-
|
|
3992
|
+
const { rebaseFeatureBranch } = await import("./merge-rebase-Czfqfe4q.js");
|
|
4018
3993
|
const workspacePathForRebase = join(projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
4019
3994
|
const rebaseResult = await Effect.runPromise(rebaseFeatureBranch(workspacePathForRebase, branchName, "main", issueId));
|
|
4020
3995
|
if (!rebaseResult.success) {
|
|
@@ -4034,7 +4009,7 @@ const postWorkspaceApproveRoute = HttpRouter.add("POST", "/api/issues/:issueId/a
|
|
|
4034
4009
|
completePendingOperation(issueId, pushResult.error);
|
|
4035
4010
|
return jsonResponse({ error: pushResult.error }, { status: pushResult.httpStatus });
|
|
4036
4011
|
}
|
|
4037
|
-
const { approve: lifecycleApprove } = await import("./lifecycle-
|
|
4012
|
+
const { approve: lifecycleApprove } = await import("./lifecycle-C_73gi-C.js");
|
|
4038
4013
|
const ghResolved = resolveGitHubIssueSync(issueId);
|
|
4039
4014
|
const isGitHubIssueFlag = ghResolved.isGitHub;
|
|
4040
4015
|
const lifecycleCtx = {
|
|
@@ -4068,7 +4043,7 @@ const getMergeQueueRoute = HttpRouter.add("GET", "/api/merge-queue", httpHandler
|
|
|
4068
4043
|
})));
|
|
4069
4044
|
const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pipeline/notify", httpHandler(Effect.gen(function* () {
|
|
4070
4045
|
const request = yield* HttpServerRequest.HttpServerRequest;
|
|
4071
|
-
const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-
|
|
4046
|
+
const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-CCaWaTwE.js"));
|
|
4072
4047
|
const expected = getInternalTokenSync();
|
|
4073
4048
|
if (!expected) return jsonResponse({
|
|
4074
4049
|
ok: false,
|
|
@@ -4082,7 +4057,7 @@ const postInternalPipelineNotifyRoute = HttpRouter.add("POST", "/api/internal/pi
|
|
|
4082
4057
|
}, 403);
|
|
4083
4058
|
const event = yield* readJsonBody;
|
|
4084
4059
|
const type = event.type;
|
|
4085
|
-
const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-
|
|
4060
|
+
const { notifyPipelineSync } = yield* Effect.promise(() => import("./pipeline-notifier-BkKbQ8ji.js"));
|
|
4086
4061
|
switch (type) {
|
|
4087
4062
|
case "status_changed": {
|
|
4088
4063
|
const issueId = event.issueId;
|
|
@@ -4857,7 +4832,7 @@ const patchWorkspaceTieredExecutionRoute = HttpRouter.add("PATCH", "/api/workspa
|
|
|
4857
4832
|
if (override !== "on" && override !== "off" && override !== null && override !== void 0) return jsonResponse({ error: "Invalid tiered-execution override" }, { status: 400 });
|
|
4858
4833
|
const project = getProjectSync(extractPrefixSync(issueId) ?? issueId.split("-")[0]);
|
|
4859
4834
|
if (!project) return jsonResponse({ error: "Project not found" }, { status: 404 });
|
|
4860
|
-
yield* Effect.promise(() => import("./record-
|
|
4835
|
+
yield* Effect.promise(() => import("./record-pyB6VA32.js").then((m) => m.writeRecordTieredExecutionOverride(project, issueId, override)));
|
|
4861
4836
|
const projectPath = project.path;
|
|
4862
4837
|
const location = yield* resolvePlanLocation(projectPath, issueId);
|
|
4863
4838
|
if (!location) return jsonResponse({ error: "No vBRIEF plan found for this workspace" }, { status: 404 });
|
|
@@ -5153,6 +5128,9 @@ const stashCleanRouteLayer = Layer.mergeAll(getWorkspaceStashesRoute, postWorksp
|
|
|
5153
5128
|
* POST /api/review/:issueId/trigger
|
|
5154
5129
|
* POST /api/review/:issueId/request
|
|
5155
5130
|
*
|
|
5131
|
+
* Release read endpoint:
|
|
5132
|
+
* GET /api/workspaces/:issueId/release
|
|
5133
|
+
*
|
|
5156
5134
|
* The cancel/control routes (reset, purge, abort, pending, unstick,
|
|
5157
5135
|
* deacon-ignore, auto-merge) live in review-control.ts. Shared singletons
|
|
5158
5136
|
* (review-status wrapper, pending-ops cluster, project path, readJsonBody,
|
|
@@ -5163,6 +5141,7 @@ init_projects();
|
|
|
5163
5141
|
init_state_plane();
|
|
5164
5142
|
init_domain_services();
|
|
5165
5143
|
init_review_status();
|
|
5144
|
+
init_release_set();
|
|
5166
5145
|
init_conflict_gate();
|
|
5167
5146
|
init_beads_restore();
|
|
5168
5147
|
init_agents();
|
|
@@ -5290,7 +5269,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
|
|
|
5290
5269
|
console.log(`Feature branch push note: ${errorMessage(pushErr)}`);
|
|
5291
5270
|
}
|
|
5292
5271
|
try {
|
|
5293
|
-
const { createReviewArtifactsForIssue } = await import("./review-artifacts-
|
|
5272
|
+
const { createReviewArtifactsForIssue } = await import("./review-artifacts-CX951jTU.js");
|
|
5294
5273
|
const artifactResult = await Effect.runPromise(createReviewArtifactsForIssue(issueId, workspacePath));
|
|
5295
5274
|
const primaryArtifact = artifactResult.mergeSet?.repos.find((repo) => !!repo.artifactUrl);
|
|
5296
5275
|
artifactResult.mergeSet?.repos.find((repo) => repo.mergeStatus !== "skipped")?.targetBranch;
|
|
@@ -5345,7 +5324,7 @@ const postWorkspaceReviewRoute = HttpRouter.add("POST", "/api/review/:issueId/tr
|
|
|
5345
5324
|
} catch {}
|
|
5346
5325
|
return;
|
|
5347
5326
|
}
|
|
5348
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
5327
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
|
|
5349
5328
|
const prUrl = getReviewStatusSync(issueId)?.prUrl;
|
|
5350
5329
|
const reviewResult = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
5351
5330
|
issueId,
|
|
@@ -5485,7 +5464,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
|
|
|
5485
5464
|
console.log(`[request-review] Feature branch push note: ${errorMessage(pushErr)}`);
|
|
5486
5465
|
}
|
|
5487
5466
|
const prUrl = getReviewStatusSync(issueId)?.prUrl;
|
|
5488
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
5467
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
|
|
5489
5468
|
const result = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
5490
5469
|
issueId,
|
|
5491
5470
|
workspace: workspacePathRerun,
|
|
@@ -5535,7 +5514,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
|
|
|
5535
5514
|
});
|
|
5536
5515
|
} else {
|
|
5537
5516
|
const workspacePath = join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
5538
|
-
const { spawnRun } = yield* Effect.promise(() => import("./agents-
|
|
5517
|
+
const { spawnRun } = yield* Effect.promise(() => import("./agents-DCvyTXNU.js"));
|
|
5539
5518
|
try {
|
|
5540
5519
|
const testRun = yield* Effect.promise(() => spawnRun(issueId, "test", { workspace: workspacePath }));
|
|
5541
5520
|
setReviewStatus(issueId, { testStatus: "testing" });
|
|
@@ -5624,7 +5603,7 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
|
|
|
5624
5603
|
autoRequeueCount: newCount
|
|
5625
5604
|
}, { status: 500 });
|
|
5626
5605
|
const result = yield* Effect.promise(async () => {
|
|
5627
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
5606
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
|
|
5628
5607
|
return await Effect.runPromise(spawnReviewRoleForIssue({
|
|
5629
5608
|
issueId,
|
|
5630
5609
|
workspace: workspacePath,
|
|
@@ -5688,7 +5667,14 @@ const postWorkspaceRequestReviewRoute = HttpRouter.add("POST", "/api/review/:iss
|
|
|
5688
5667
|
}, { status: 500 });
|
|
5689
5668
|
}
|
|
5690
5669
|
})));
|
|
5691
|
-
const
|
|
5670
|
+
const getReleaseSetRoute = HttpRouter.add("GET", "/api/workspaces/:issueId/release", httpHandler(Effect.gen(function* () {
|
|
5671
|
+
const rawIssueId = (yield* HttpRouter.params)["issueId"] ?? "";
|
|
5672
|
+
if (!parseIssueIdSync(rawIssueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
5673
|
+
const releaseSet = getReleaseSetSync(resolveIssueIdSync(rawIssueId));
|
|
5674
|
+
if (!releaseSet) return jsonResponse({ error: "Release set not found" }, { status: 404 });
|
|
5675
|
+
return jsonResponse(releaseSet);
|
|
5676
|
+
})));
|
|
5677
|
+
const reviewPipelineRouteLayer = Layer.mergeAll(postWorkspaceReviewRoute, postWorkspaceRequestReviewRoute, getReleaseSetRoute);
|
|
5692
5678
|
//#endregion
|
|
5693
5679
|
//#region routes/workspaces/review-control.ts
|
|
5694
5680
|
/**
|
|
@@ -5921,7 +5907,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
5921
5907
|
const result = processResetReviewPipeline(issueId, resetWorkspace.exists);
|
|
5922
5908
|
if (result.httpStatus !== 200) return jsonResponse(result.body, { status: result.httpStatus });
|
|
5923
5909
|
try {
|
|
5924
|
-
const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-
|
|
5910
|
+
const { resetPostMergeState } = yield* Effect.promise(() => import("./merge-agent-36wfYm2u.js"));
|
|
5925
5911
|
resetPostMergeState(issueId);
|
|
5926
5912
|
} catch (err) {
|
|
5927
5913
|
console.warn(`[reset-review] resetPostMergeState best-effort failed for ${issueId}:`, err);
|
|
@@ -5930,7 +5916,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
5930
5916
|
const rerun = body?.rerun === true;
|
|
5931
5917
|
if (rerun) try {
|
|
5932
5918
|
yield* Effect.promise(async () => {
|
|
5933
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
5919
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-Rub0OpZc.js");
|
|
5934
5920
|
const dispatchArgs = buildReviewRedispatchArgs(issueId, resetWorkspace, workspaceInfo, resolved);
|
|
5935
5921
|
if (dispatchArgs) {
|
|
5936
5922
|
const result = await Effect.runPromise(spawnReviewRoleForIssue({
|
|
@@ -5959,7 +5945,7 @@ const postWorkspaceResetReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
5959
5945
|
const postWorkspaceReviewPurgeRoute = HttpRouter.add("POST", "/api/review/:issueId/purge", httpHandler(Effect.gen(function* () {
|
|
5960
5946
|
const issueId = (yield* HttpRouter.params)["issueId"] ?? "";
|
|
5961
5947
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
5962
|
-
const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-
|
|
5948
|
+
const { purgeReviewAgentsForIssue } = yield* Effect.promise(() => import("./review-agent-Rub0OpZc.js"));
|
|
5963
5949
|
const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
|
|
5964
5950
|
const purge = yield* Effect.promise(() => purgeReviewAgentsForIssue(projectKey, issueId));
|
|
5965
5951
|
const workspaceInfo = getWorkspaceInfoForIssue(issueId);
|
|
@@ -5989,8 +5975,8 @@ const postWorkspaceAbortReviewRoute = HttpRouter.add("POST", "/api/review/:issue
|
|
|
5989
5975
|
success: false,
|
|
5990
5976
|
error: "Workspace does not exist"
|
|
5991
5977
|
}, { status: 400 });
|
|
5992
|
-
const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-
|
|
5993
|
-
const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-
|
|
5978
|
+
const { resolveProjectFromIssueSync } = yield* Effect.promise(() => import("./projects-KJ94e50I.js"));
|
|
5979
|
+
const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-Rub0OpZc.js"));
|
|
5994
5980
|
const { killed, failed } = yield* killAllReviewerSessions(resolveProjectFromIssueSync(issueId)?.projectKey, issueId);
|
|
5995
5981
|
setReviewStatus(issueId, {
|
|
5996
5982
|
reviewStatus: "pending",
|
|
@@ -6062,8 +6048,8 @@ const getReviewConfigRoute = HttpRouter.add("GET", "/api/review/:issueId/config"
|
|
|
6062
6048
|
const issueId = ((yield* HttpRouter.params)["issueId"] ?? "").toUpperCase();
|
|
6063
6049
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
6064
6050
|
return jsonResponse(yield* Effect.promise(async () => {
|
|
6065
|
-
const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-
|
|
6066
|
-
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-
|
|
6051
|
+
const { readIssueRecordSync, resolveProjectForIssue } = await import("./record-pyB6VA32.js");
|
|
6052
|
+
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-Rub0OpZc.js");
|
|
6067
6053
|
const project = resolveProjectForIssue(issueId);
|
|
6068
6054
|
const record = project ? readIssueRecordSync(project, issueId) : null;
|
|
6069
6055
|
return {
|
|
@@ -6089,8 +6075,8 @@ const postReviewConfigRoute = HttpRouter.add("POST", "/api/review/:issueId/confi
|
|
|
6089
6075
|
if (hasMode && body.reviewMode !== null && body.reviewMode !== "quick" && body.reviewMode !== "full" && body.reviewMode !== "none") return jsonResponse({ error: "reviewMode must be quick, full, none, or null" }, { status: 400 });
|
|
6090
6076
|
if (hasScope && body.reReviewScope !== null && body.reReviewScope !== "all" && body.reReviewScope !== "changed" && body.reReviewScope !== "blockers") return jsonResponse({ error: "reReviewScope must be all, changed, blockers, or null" }, { status: 400 });
|
|
6091
6077
|
return jsonResponse(yield* Effect.promise(async () => {
|
|
6092
|
-
const { ensureIssueRecordSync, readIssueRecordSync, resolveProjectForIssue, writeIssueRecordSync } = await import("./record-
|
|
6093
|
-
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-
|
|
6078
|
+
const { ensureIssueRecordSync, readIssueRecordSync, resolveProjectForIssue, writeIssueRecordSync } = await import("./record-pyB6VA32.js");
|
|
6079
|
+
const { resolveReviewMode, resolveReReviewScope } = await import("./review-agent-Rub0OpZc.js");
|
|
6094
6080
|
const project = resolveProjectForIssue(issueId);
|
|
6095
6081
|
const record = readIssueRecordSync(project, issueId) ?? ensureIssueRecordSync(project, issueId);
|
|
6096
6082
|
if (hasMode) if (body.reviewMode === null) delete record.reviewMode;
|
|
@@ -6484,7 +6470,7 @@ async function readWorkspacePlanningMarkdown(issueId, fileName) {
|
|
|
6484
6470
|
*/
|
|
6485
6471
|
async function readWorkspaceContinueFile(_projectPath, workspacePath, issueId) {
|
|
6486
6472
|
try {
|
|
6487
|
-
const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-
|
|
6473
|
+
const { readRecordContinueViewSync, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-pyB6VA32.js");
|
|
6488
6474
|
const recordView = readRecordContinueViewSync(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId);
|
|
6489
6475
|
return recordView ? JSON.stringify(recordView, null, 2) : null;
|
|
6490
6476
|
} catch {
|
|
@@ -7253,7 +7239,7 @@ const getWorkspaceReviewStatusRoute = HttpRouter.add("GET", "/api/review/:issueI
|
|
|
7253
7239
|
if (queuePosition === null) try {
|
|
7254
7240
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
7255
7241
|
if (resolved) {
|
|
7256
|
-
const { getQueueForProject } = yield* Effect.promise(() => import("./merge-
|
|
7242
|
+
const { getQueueForProject } = yield* Effect.promise(() => import("./merge-brm721Es.js"));
|
|
7257
7243
|
const mergePos = findPositionInQueueSync(issueId, getQueueForProject(resolved.projectKey).map((e) => ({
|
|
7258
7244
|
id: String(e.id),
|
|
7259
7245
|
type: "task",
|
|
@@ -7291,7 +7277,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7291
7277
|
const workspaceInfo = getWorkspaceInfoForIssue(issueId);
|
|
7292
7278
|
if (workspaceInfo.exists && workspaceInfo.localPath) {
|
|
7293
7279
|
const localPath = workspaceInfo.localPath;
|
|
7294
|
-
const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-
|
|
7280
|
+
const { getWorkspaceGitInfo } = yield* Effect.promise(() => import("./git-utils-BCLRWQ-y.js"));
|
|
7295
7281
|
try {
|
|
7296
7282
|
const gitInfo = yield* getWorkspaceGitInfo(localPath);
|
|
7297
7283
|
if (gitInfo.HEAD) update.reviewedAtCommit = gitInfo.HEAD;
|
|
@@ -7306,7 +7292,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7306
7292
|
if (verificationStatus) update.verificationStatus = verificationStatus;
|
|
7307
7293
|
if (readyForMerge !== void 0) update.readyForMerge = readyForMerge;
|
|
7308
7294
|
const status = setReviewStatus(issueId, update);
|
|
7309
|
-
const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-
|
|
7295
|
+
const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-8ZAguXef.js"));
|
|
7310
7296
|
const projectKey = resolveProjectFromIssueSync(issueId)?.projectKey;
|
|
7311
7297
|
if (reviewStatus && [
|
|
7312
7298
|
"passed",
|
|
@@ -7324,7 +7310,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7324
7310
|
const agentId = `agent-${issueId.toLowerCase()}`;
|
|
7325
7311
|
const feedbackBody = `CODE REVIEW ${reviewStatus.toUpperCase()} for ${issueId}:\n\n${reviewNotes}\n\n## REQUIRED: Fix ALL issues above, then invoke the /rebase-and-submit skill\n\n1. Read each blocking issue carefully\n2. Fix the code for EVERY issue listed\n3. Run tests locally to verify your fixes\n4. Commit every change\n5. Invoke the /rebase-and-submit skill for ${issueId} — this is an atomic task that runs pan done (which handles rebase + push + re-submit internally)\n\nDo NOT stop between steps. Do NOT run git push manually — the skill handles it. Do NOT stop until pan done has completed successfully.`;
|
|
7326
7312
|
try {
|
|
7327
|
-
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-
|
|
7313
|
+
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-DOUhyIW2.js"));
|
|
7328
7314
|
const wsInfo = getWorkspaceInfoForIssue(issueId);
|
|
7329
7315
|
const fileResult = yield* Effect.promise(() => writeFeedbackFile({
|
|
7330
7316
|
issueId,
|
|
@@ -7388,7 +7374,7 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7388
7374
|
const agentId = `agent-${issueId.toLowerCase()}`;
|
|
7389
7375
|
const feedbackBody = `TESTS FAILED for ${issueId}:\n\n${testNotes}\n\n## REQUIRED: Fix ALL test failures, then invoke the /rebase-and-submit skill\n\n1. Read each test failure carefully\n2. Fix the code causing EVERY failure\n3. Run the test suite locally to verify your fixes pass\n4. Commit every change\n5. Invoke the /rebase-and-submit skill for ${issueId} — this is an atomic task that runs pan done (which handles rebase + push + re-submit internally)\n\nDo NOT stop between steps. Do NOT run git push manually — the skill handles it. Do NOT stop until pan done has completed successfully.`;
|
|
7390
7376
|
try {
|
|
7391
|
-
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-
|
|
7377
|
+
const { writeFeedbackFile } = yield* Effect.promise(() => import("./feedback-writer-DOUhyIW2.js"));
|
|
7392
7378
|
const wsInfo = getWorkspaceInfoForIssue(issueId);
|
|
7393
7379
|
const fileResult = yield* Effect.promise(() => writeFeedbackFile({
|
|
7394
7380
|
issueId,
|
|
@@ -7413,14 +7399,14 @@ const postWorkspaceReviewStatusRoute = HttpRouter.add("POST", "/api/review/:issu
|
|
|
7413
7399
|
console.log(`[review-status] ${issueId} marked ready for merge after test=passed`);
|
|
7414
7400
|
yield* Effect.promise(async () => {
|
|
7415
7401
|
try {
|
|
7416
|
-
const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-
|
|
7402
|
+
const { resolveProjectFromIssueSync, getProjectSync } = await import("./projects-KJ94e50I.js");
|
|
7417
7403
|
const project = resolveProjectFromIssueSync(issueId);
|
|
7418
7404
|
const repo = (project ? getProjectSync(project.projectKey) : null)?.github_repo;
|
|
7419
7405
|
if (!repo || !repo.includes("/")) return;
|
|
7420
7406
|
const [owner, name] = repo.split("/");
|
|
7421
7407
|
const wsInfo = getWorkspaceInfoForIssue(issueId);
|
|
7422
7408
|
if (!wsInfo?.localPath) return;
|
|
7423
|
-
const { postOverdeckTestsStatus } = await import("./github-app-
|
|
7409
|
+
const { postOverdeckTestsStatus } = await import("./github-app-DRD2woO0.js");
|
|
7424
7410
|
await postOverdeckTestsStatus(wsInfo.localPath, owner, name, "success", "Test specialist passed");
|
|
7425
7411
|
} catch (err) {
|
|
7426
7412
|
console.warn(`[review-status] Failed to post overdeck/tests for ${issueId}: ${err.message}`);
|
|
@@ -7462,7 +7448,7 @@ const postWorkspaceRefreshTokenRoute = HttpRouter.add("POST", "/api/workspaces/:
|
|
|
7462
7448
|
if (!parseIssueIdSync(issueId)) return jsonResponse({ error: "Invalid issue ID" }, { status: 400 });
|
|
7463
7449
|
const issueLower = issueId.toLowerCase();
|
|
7464
7450
|
const workspacePath = join(getProjectPath(void 0, extractPrefixSync(issueId) ?? issueId.split("-")[0]), "workspaces", `feature-${issueLower}`);
|
|
7465
|
-
const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-
|
|
7451
|
+
const { refreshWorkspaceToken, isGitHubAppConfigured } = yield* Effect.promise(() => import("./github-app-DRD2woO0.js"));
|
|
7466
7452
|
if (!isGitHubAppConfigured()) return jsonResponse({
|
|
7467
7453
|
success: false,
|
|
7468
7454
|
error: "GitHub App not configured"
|
|
@@ -7477,4 +7463,4 @@ const workspacesRouteLayer = Layer.mergeAll(workspaceDataRouteLayer, postWorkspa
|
|
|
7477
7463
|
//#endregion
|
|
7478
7464
|
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 };
|
|
7479
7465
|
|
|
7480
|
-
//# sourceMappingURL=workspaces-
|
|
7466
|
+
//# sourceMappingURL=workspaces-BjWXntty.js.map
|