@overdeck/desktop 0.45.7 → 0.45.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -3
- package/server/{acceptance-criteria-DYffaKI9.js → acceptance-criteria-l0DSvFFS.js} +2 -2
- package/server/{activity-logger-DO27GsPa.js → activity-logger-DvYvFhwZ.js} +1 -1
- package/server/{activity-logger-Dm95Ua07.js → activity-logger-pcbf-e30.js} +3 -2
- package/server/{advancing-selfheal-n8tAeFwE.js → advancing-selfheal-CMlGznKv.js} +11 -66
- package/server/{agent-gc-CIFaa2vJ.js → agent-gc-BtAzj8QN.js} +3 -3
- package/server/{agent-state-service-BqVDA9b8.js → agent-state-service-5ge9xxhx.js} +5 -5
- package/server/{agent-state-service-CLifyinO.js → agent-state-service-C1iUF9Ft.js} +1 -1
- package/server/agent-state-xk_G8t90.js +3 -0
- package/server/{agents-KaEsWZ8D.js → agents-BIggLvi_.js} +1 -1
- package/server/{agents-D_x5BSZM.js → agents-DHvsjsuP.js} +129 -61
- package/server/{archive-planning-CFxmeFKh.js → archive-planning-B4Qi02bk.js} +1 -1
- package/server/{archive-planning-DVUXlRBs.js → archive-planning-zTvWWHG_.js} +4 -4
- package/server/{artifact-index-jobs-ChUgzZah.js → artifact-index-jobs-BrByqVkB.js} +2 -2
- package/server/{auto-commit-2KiBFh-K.js → auto-commit-DoIPFoEs.js} +1 -1
- package/server/{backlog-auto-trigger-DoTEMZMl.js → backlog-auto-trigger-COm_R96V.js} +3 -3
- package/server/{bd-mutex-CE6P_MlD.js → bd-mutex-BItGvLQ8.js} +2 -2
- package/server/{bd-process-lock-Ch3WNHS9.js → bd-process-lock-CJkoG7hW.js} +2 -2
- package/server/{beads-B43pgBIy.js → beads-AmCXEv_E.js} +1 -1
- package/server/{beads-BugPvtWp.js → beads-DlZm-vrG.js} +5 -5
- package/server/{beads-query-CtqWakL6.js → beads-query-BrVNWoSL.js} +2 -2
- package/server/{beads-restore-BqTMSQi-.js → beads-restore-CMbDSB5R.js} +1 -1
- package/server/{behavior-vk1sixby.js → behavior-By-2Wipv.js} +3 -3
- package/server/{briefing-freshness-B3YxHQ-L.js → briefing-freshness-CXhZdnB8.js} +4 -4
- package/server/{checkpoint-manager-CdrwLsQh.js → checkpoint-manager-CPw51H2n.js} +1 -1
- package/server/{checkpoint-manager-Dg6cWZz3.js → checkpoint-manager-CfNpHOp4.js} +11 -2
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-DDd-0doa.js → checkpoints-BbfH1EIy.js} +2 -2
- package/server/{checkpoints-dBCJr0dC.js → checkpoints-BjlBWOA8.js} +1 -1
- package/server/{claude-permissions-BpwIcIR7.js → claude-permissions-DrRAs_0F.js} +3 -3
- package/server/{claude-settings-overlay-DnraWcz6.js → claude-settings-overlay-BSeS7Ki3.js} +2 -2
- package/server/{claude-settings-overlay-xD_Vu420.js → claude-settings-overlay-CEWlIFL-.js} +1 -1
- package/server/cli-CJDWXE_Y.js +3 -0
- package/server/{cli-BmzYZZKi.js → cli-CvK9xuSS.js} +9 -9
- package/server/{cliproxy-DYWdJKZ1.js → cliproxy-BOcmOK6l.js} +1 -1
- package/server/{cliproxy-CE2GDY7x.js → cliproxy-J-_1iIXe.js} +2 -2
- package/server/{close-issue-CpJd4SOL.js → close-issue-BnpErnD1.js} +5 -5
- package/server/{closed-issue-reaper-QpcvCDeE.js → closed-issue-reaper-BLCQwTpF.js} +1 -1
- package/server/{closed-issue-reaper-DubXY9Zg.js → closed-issue-reaper-DRqK5k39.js} +10 -10
- package/server/{codex-j8aVgRou.js → codex-BUZjrnqH.js} +1 -1
- package/server/{codex-B3J1TXo7.js → codex-DcInrhok.js} +5 -5
- package/server/{compact-beads-CqhLqG-k.js → compact-beads-RFwdZFPA.js} +4 -4
- package/server/{compact-beads-BeilHCdj.js → compact-beads-omhUgj5b.js} +1 -1
- package/server/{config-DHU0j_pS.js → config-CzcWQ24p.js} +1 -1
- package/server/{config-DkEhJM0h.js → config-oWoKf5jO.js} +4 -4
- package/server/{config-yaml-DbdN9Fuq.js → config-yaml-DPAieL_G.js} +3 -2
- package/server/{conflict-gate-CgOtMo8i.js → conflict-gate-BhKvrPxn.js} +4 -4
- package/server/{conflict-gate-D00zFjeu.js → conflict-gate-JdFuhKuF.js} +1 -1
- package/server/{context-layers-BHEjT8Cn.js → context-layers-CTjQwcEQ.js} +3 -3
- package/server/{context-layers-0Lgq-SE_.js → context-layers-DxKsseHI.js} +2 -2
- package/server/{control-settings-CYv732Gs.js → control-settings-BMqUkXmR.js} +4 -4
- package/server/{conversation-compaction-Dbw03b-X.js → conversation-compaction-Ba5aZdrb.js} +1 -1
- package/server/{conversation-compaction-DKXvmX50.js → conversation-compaction-C5o_eKEm.js} +8 -8
- package/server/{conversation-service-BwKUeEvn.js → conversation-service-DvG8vZSV.js} +5 -5
- package/server/{conversation-service-kYYeRp9B.js → conversation-service-WKl-sw58.js} +1 -1
- package/server/{conversations-Dwr1jHrO.js → conversations-DL_BAWVk.js} +4 -4
- package/server/{conversations-D-uOnA8T.js → conversations-Dcx6LeIh.js} +1 -1
- package/server/{cost-DiSDkYe7.js → cost-C2CuA66z.js} +2 -2
- package/server/{cost-DNIyZH1X.js → cost-DaOG8sUB.js} +3 -3
- package/server/{cost-sync-CfXu-3TF.js → cost-sync-8lkDeL9g.js} +3 -3
- package/server/{dag-DZBowTd2.js → dag-jH8ZkewR.js} +3 -3
- package/server/{dangerous-git-ops-Pongxg2d.js → dangerous-git-ops-Dcw7PbYo.js} +1 -1
- package/server/dashboard-db-worker.js +6 -6
- package/server/{deacon-DT0BsVyE.js → deacon-Cv2RMfHs.js} +3 -3
- package/server/{deacon-f0yvsG5S.js → deacon-j3qSZ7--.js} +222 -110
- package/server/{deacon-nudge-log-Cmcch2Av.js → deacon-nudge-log-CJGA6aSQ.js} +1 -1
- package/server/deacon-swarm-D1iAUX-P.js +2 -0
- package/server/{deacon-swarm-BBGnhvD2.js → deacon-swarm-DadWNi5J.js} +88 -43
- package/server/deacon.js +8 -8
- package/server/{devcontainer-renderer-Cpz7XBj0.js → devcontainer-renderer-DUJYYRQB.js} +3 -3
- package/server/{dist-DypOkJv9.js → dist-BIC8spJ0.js} +1 -1
- package/server/dist-BUplB3Od.js +3 -0
- package/server/{docker-DARVx0OZ.js → docker-Q4bphryk.js} +2 -2
- package/server/{ensure-devcontainer-Dmdw4BxF.js → ensure-devcontainer-BCB6fHp9.js} +1 -1
- package/server/{ensure-devcontainer-BJssuBG6.js → ensure-devcontainer-XLL0vtgV.js} +4 -4
- package/server/{esm-shims-Crmvo9Ln.js → esm-shims-DiV9jHa_.js} +1 -1
- package/server/{event-store-BeEE8pW5.js → event-store-DIk9wvnS.js} +1 -1
- package/server/{event-store-DrfTJZ1_.js → event-store-DTJXZjCl.js} +4 -4
- package/server/events-BlzVUyTx.js +3 -0
- package/server/{events-BbClwoM-.js → events-DGWZzye2.js} +4 -4
- package/server/{factory-DVv9cpG5.js → factory-rG4T40su.js} +4 -4
- package/server/{feature-registry-population-C6eVdq4J.js → feature-registry-population-Dwyj9gEM.js} +4 -4
- package/server/{feature-registry-storage-ByBosRId.js → feature-registry-storage-CnGyNgAq.js} +2 -2
- package/server/{features-EZfSwuqq.js → features-CYY2_Eeh.js} +2 -2
- package/server/{feedback-target-DENaINE6.js → feedback-target-C4DaDSZ8.js} +1 -1
- package/server/{feedback-target-Dv4VnbQl.js → feedback-target-oE4-Esxl.js} +48 -17
- package/server/{feedback-writer-Dxg8qM8i.js → feedback-writer-DMaO0XXa.js} +4 -4
- package/server/{feedback-writer-BvHE1I-3.js → feedback-writer-thrdxYpK.js} +1 -1
- package/server/{flywheel-Akbd9VNM.js → flywheel-BqDdGvrQ.js} +1 -1
- package/server/{flywheel-B4KN9BmW.js → flywheel-ClMjGW_u.js} +11 -11
- package/server/{flywheel-ByZyAv3P.js → flywheel-DefHRzY4.js} +13 -13
- package/server/{flywheel-merge-order-DPFZbt-w.js → flywheel-merge-order-B6YDSElh.js} +1 -1
- package/server/{flywheel-merge-order-BYUPxqgx.js → flywheel-merge-order-CuDcqTRJ.js} +7 -7
- package/server/forge-BfP7OJwK.js +2 -0
- package/server/{forge-BnTExkbK.js → forge-BixzckB0.js} +2 -2
- package/server/{from-B2i_NgIH.js → from-D4xmArTA.js} +1 -1
- package/server/{fts-db-dnCj-PD3.js → fts-db-DPtxOAjp.js} +2 -2
- package/server/{fts-operations-CAAofsTQ.js → fts-operations-VrGjsT0w.js} +2 -2
- package/server/{git-utils-CB3gDSM-.js → git-utils-D_cax3fD.js} +2 -2
- package/server/{git-utils-Bk7sJZru.js → git-utils-RAmTwjFB.js} +1 -1
- package/server/{github-app-CIhMNI4C.js → github-app-B5PDHMyn.js} +1 -1
- package/server/{github-app-BIU8a93o.js → github-app-FMXgo3vK.js} +2 -2
- package/server/{github-client-DmZgsnYP.js → github-client-VRiB6N-4.js} +1 -1
- package/server/{github-client-zREpj5HA.js → github-client-yjbXaqpR.js} +2 -2
- package/server/{github-pr-lookup-CPri6JR1.js → github-pr-lookup-t8X8R0c0.js} +2 -2
- package/server/{harness-resolve-TzYAiXzZ.js → harness-resolve-DKeSVsJL.js} +3 -3
- package/server/{health-events-CDWk8Oz4.js → health-events-CD6q47ub.js} +1 -1
- package/server/{health-events-Dd0FuKrE.js → health-events-DaLX4-0a.js} +2 -2
- package/server/{hooks-C6HBXlVm.js → hooks-CmHFSj_Z.js} +2 -2
- package/server/{hooks-DRLzoFof.js → hooks-D-cbMUzQ.js} +1 -1
- package/server/{hume-Bb91r_2I.js → hume-DkVOs1Qi.js} +2 -2
- package/server/hume-x9voULey.js +3 -0
- package/server/{idle-stack-reaper-BPHnItVj.js → idle-stack-reaper-DBKQ9SKu.js} +3 -3
- package/server/{idle-stack-reaper-D5bwmuwX.js → idle-stack-reaper-DdnERp3G.js} +1 -1
- package/server/{infra-CCTzpcuJ.js → infra-CpKlYZA9.js} +3 -3
- package/server/{injection-D6L7D_w0.js → injection-CszhePD2.js} +7 -7
- package/server/{injection-CBrN8UxB.js → injection-DKzL2Axk.js} +1 -1
- package/server/{inspect-agent-CSYyFWqP.js → inspect-agent-BKKc0XnB.js} +9 -9
- package/server/inspect-agent-vm88mLYr.js +2 -0
- package/server/{internal-token-DWhBqgIk.js → internal-token-CQUx9YLc.js} +2 -2
- package/server/{internal-token-DCrCAG_M.js → internal-token-DrGdpLFo.js} +1 -1
- package/server/{io-DtAQ_2hp.js → io-Wy8YpFeP.js} +2 -2
- package/server/{issue-closed-0Zx72zXf.js → issue-closed-BO84g03t.js} +4 -4
- package/server/{issue-lifecycle-ZTt6kP_K.js → issue-lifecycle-DnhQgddB.js} +22 -22
- package/server/{issue-lifecycle-CJ7-D4XX.js → issue-lifecycle-nY4esZn8.js} +1 -1
- package/server/{issue-service-singleton-DNh4RRI7.js → issue-service-singleton-Bnqv1uaa.js} +1 -1
- package/server/{issue-service-singleton-DRE7S-Zg.js → issue-service-singleton-_AquSBTl.js} +8 -8
- package/server/{issues-CGc8Aaxm.js → issues-ChNcfHta.js} +2 -2
- package/server/{label-cleanup-CNsPlXy6.js → label-cleanup-bVXCGWBM.js} +3 -3
- package/server/{layers-CO_VLcSv.js → layers-vdvlpFki.js} +2 -2
- package/server/{lifecycle-B_NFvTj9.js → lifecycle-CGKm7doE.js} +7 -7
- package/server/{lifecycle-io-D0FftBLy.js → lifecycle-io-CdqPkCyk.js} +1 -1
- package/server/{lifecycle-io-WDGwa1vV.js → lifecycle-io-DSrv9xGh.js} +4 -4
- package/server/{linear-client-MvjflCXs.js → linear-client-BxKvL6U8.js} +1 -1
- package/server/{linear-client-CSgH24Ym.js → linear-client-E0HdXtWs.js} +2 -2
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-DltB-RGV.js → merge-D3wEbmUJ.js} +1 -1
- package/server/{merge-Ce9DHBXM.js → merge-UlAwCk80.js} +4 -4
- package/server/{merge-agent-Rv0bNQNU.js → merge-agent-BcgAYStl.js} +27 -27
- package/server/{merge-agent-DRXwKxmb.js → merge-agent-Dh8Y9PDO.js} +1 -1
- package/server/{merge-batch-LLp_cXUR.js → merge-batch-BwhGdlh4.js} +1 -1
- package/server/{merge-blockers-BqYUtLBd.js → merge-blockers-DwdQNsYD.js} +2 -2
- package/server/merge-ops-QdBiQ8XB.js +2 -0
- package/server/{merge-rebase-AiSEs4QB.js → merge-rebase-CH12_ufi.js} +2 -2
- package/server/{merge-set-CUY9msG9.js → merge-set-TRxJwR-w.js} +3 -3
- package/server/{merge-set-CSJoIpKB.js → merge-set-rXK3ehnB.js} +1 -1
- package/server/{merge-sync-CAjbJeTp.js → merge-sync-BKLKu9kz.js} +1 -1
- package/server/{merge-sync-CuyWzzZK.js → merge-sync-CaLRt2cB.js} +2 -2
- package/server/{merge-train-DndZCAiv.js → merge-train-DmxlYbEo.js} +3 -3
- package/server/{merge-train-deps-Bsy90Q7t.js → merge-train-deps-DBHsOWt9.js} +4 -4
- package/server/{merge-verification-Kvh4WViS.js → merge-verification-DA9rvqsE.js} +4 -4
- package/server/{multipart-parser-BWnfyoyz.js → multipart-parser-DtIEUW2B.js} +2 -2
- package/server/{no-resume-mode-CKy2bwZL.js → no-resume-mode-yrPEQ_pC.js} +1 -1
- package/server/{orphan-proposed-reconciler-Cg5_uVy1.js → orphan-proposed-reconciler-Db8tUhce.js} +10 -10
- package/server/{orphan-proposed-reconciler-CjUuBs6J.js → orphan-proposed-reconciler-mXV--tcB.js} +1 -1
- package/server/{pan-dir-Cn3NUnxU.js → pan-dir-BgBeeZDX.js} +3 -3
- package/server/{paths-Bo-kA9ta.js → paths-TE1GOZDr.js} +2 -2
- package/server/{pickup-DRn-XNXS.js → pickup-KLRUhThD.js} +1 -1
- package/server/{pipeline-notifier-BbGQtvKM.js → pipeline-notifier-aX_5EqQO.js} +2 -2
- package/server/{pipeline-notifier-DQsOtdjZ.js → pipeline-notifier-lwMa--Gz.js} +1 -1
- package/server/{projects-CKTA6Klk.js → projects-BNmVxnNt.js} +1 -1
- package/server/{prompts-CVncQg4P.js → prompts-CelsUdrx.js} +2 -2
- package/server/{providers-uPI9uU7Q.js → providers-4-xOzHQu.js} +7 -7
- package/server/{providers-CapuDkKX.js → providers-BOnRq5XK.js} +1 -1
- package/server/public/assets/{chunk-BO2N2NFS-CaAvtgHW.js → chunk-BO2N2NFS-jJsbVwoD.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-C4flU2X9.js → diagram-OG6HWLK6-Cp1aNi3v.js} +1 -1
- package/server/public/assets/{dist-DXAnG2e9.js → dist-B2-Oc7J1.js} +1 -1
- package/server/public/assets/{dist-DygIHsen.js → dist-Dbb8vdyE.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-BJY25etK.js → ganttDiagram-6RSMTGT7-rujV2mSn.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-DIEQLSG_.js → highlighted-body-OFNGDK62-Df3Exbbt.js} +1 -1
- package/server/public/assets/{index-BsKNi2y5.js → index-rQPa7qlV.js} +88 -88
- package/server/public/assets/{linear-CRa2o9KP.js → linear-Ctp3LAJ5.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-BnC2HrDq.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-Cb6OrK_c.js → pieDiagram-4H26LBE5-K-m6VCum.js} +1 -1
- package/server/public/assets/{prod-DWpuiL-y.js → prod-jqZ3zqVg.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-DhZzzcAO.js → quadrantDiagram-W4KKPZXB-DXcFax_1.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-CVe6lE5A.js → sankeyDiagram-5OEKKPKP-DnD_J_rB.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-zukUz5pI.js → xychartDiagram-2RQKCTM6-Dx25iKVp.js} +1 -1
- package/server/public/index.html +1 -1
- package/server/{pull-requests-C3csHJsc.js → pull-requests-CH4iBFLl.js} +3 -3
- package/server/{pull-requests-MeAgb3Ax.js → pull-requests-DL_4klIb.js} +1 -1
- package/server/{rally-nalS21zz.js → rally-D0mKv2t8.js} +3 -3
- package/server/rally-DffLLIdl.js +3 -0
- package/server/{rally-api-DzQryQi8.js → rally-api-CcCdecF-.js} +1 -1
- package/server/{rally-api-DdY4ebu3.js → rally-api-DgAt6FbN.js} +2 -2
- package/server/{rally-client-9duSds1_.js → rally-client-DYjtgTOu.js} +4 -4
- package/server/{rally-client-B16-bZk9.js → rally-client-X0bEEN2B.js} +1 -1
- package/server/reap-terminal-sessions-BwJb2DLJ.js +3 -0
- package/server/{reap-terminal-sessions-C6rD1pDT.js → reap-terminal-sessions-CAmURC2h.js} +12 -62
- package/server/{rebuild-stack-D9qBmVcM.js → rebuild-stack-BLG3rlWa.js} +6 -6
- package/server/{rebuild-stack-DrWMHxoY.js → rebuild-stack-ByFCMqTK.js} +1 -1
- package/server/{reconstruct-cache--H2QBooC.js → reconstruct-cache-_tDZ2D72.js} +6 -6
- package/server/{record-fn7uPjsl.js → record-DjPikotp.js} +1 -1
- package/server/{remote-BEkHf2HO.js → remote-B1Trmr0N.js} +3 -3
- package/server/{remote-Dl6Hn0zz.js → remote-TN0cV8k-.js} +3 -3
- package/server/{remote-agents-DNdP4sew.js → remote-agents-CmbIKw7E.js} +5 -5
- package/server/{remote-agents-OB4zwVHz.js → remote-agents-DNuaAgU6.js} +1 -1
- package/server/{remote-completion-BINc1Y8c.js → remote-completion-Bklh6loJ.js} +12 -12
- package/server/resume-DnIsmIgC.js +3 -0
- package/server/review-agent-DgySDb-G.js +3 -0
- package/server/{review-agent-C-A6IgXc.js → review-agent-phzqNqIs.js} +599 -197
- package/server/{review-artifacts-DTTdAYsU.js → review-artifacts-BGc69epg.js} +7 -7
- package/server/{review-context-De14xPtc.js → review-context-CCq56O_Y.js} +7 -7
- package/server/{review-monitor-BNV3kjLq.js → review-monitor-BKG2ubt5.js} +2 -2
- package/server/{review-status-DWAsTqfJ.js → review-status-BQjqQXZG.js} +160 -52
- package/server/{review-status-mo3tyc8L.js → review-status-bBkqUj5i.js} +1 -1
- package/server/{review-status-enrichment-C6sr9wOI.js → review-status-enrichment-CGlcApSn.js} +3 -3
- package/server/{review-status-sync-D-p7TQit.js → review-status-sync-BWHnrq-k.js} +3 -3
- package/server/{review-status-sync-MvYGQLDD.js → review-status-sync-BxHBVH8s.js} +1 -1
- package/server/{review-verdict-feedback-BbIfN5Vg.js → review-verdict-feedback-cZh9Wi9G.js} +1 -1
- package/server/{review-verdict-feedback-Cfc-THvz.js → review-verdict-feedback-wqnikhMK.js} +16 -36
- package/server/{rollup-DgWlrSBc.js → rollup-BJE-Vc7H.js} +8 -8
- package/server/{rollup-CxR6GMTe.js → rollup-DBNy1yFB.js} +1 -1
- package/server/{scanner-6OmIn5XE.js → scanner-CUGpdp4i.js} +7 -7
- package/server/{sequence-io-CxiPMMKM.js → sequence-io-B2GmilSI.js} +4 -4
- package/server/{sequencer-agent--xPlSfR2.js → sequencer-agent-D8pW2aU_.js} +5 -5
- package/server/server.js +166 -162
- package/server/{service-CXje28KS.js → service-CILd-uOt.js} +46 -45
- package/server/session-fork-DDSDVoIK.js +99 -0
- package/server/{settings-ChvoXExM.js → settings-CBrei_kx.js} +2 -2
- package/server/{settings-DZq_bi-B.js → settings-D2wt4nku.js} +3 -3
- package/server/settings-vLoKyghx.js +2 -0
- package/server/{shadow-engineering-BHeyD5bL.js → shadow-engineering-Ba1D0QUN.js} +2 -2
- package/server/{shadow-state-p3YTxrJ5.js → shadow-state-BOaq8BrD.js} +1 -1
- package/server/{shadow-state-3L0eHQNE.js → shadow-state-DTC7AMHc.js} +2 -2
- package/server/{ship-log-B2EEH__n.js → ship-log-CMWH3H5-.js} +1 -1
- package/server/{smart-compaction-DRXK5_io.js → smart-compaction-Bgp_gwcA.js} +1 -1
- package/server/{smart-compaction-DMB4hv07.js → smart-compaction-CrP90OFE.js} +7 -7
- package/server/{spawn-planning-session-BZfVvIi3.js → spawn-planning-session-BmJWHSCu.js} +15 -15
- package/server/{spawn-planning-session-BBUzeHJQ.js → spawn-planning-session-D15KbPOy.js} +1 -1
- package/server/{specialist-completion-BAZHHbmp.js → specialist-completion-BiEXUHfD.js} +1 -1
- package/server/{specialist-context-DgdhI7rm.js → specialist-context-CwKkcXL9.js} +5 -5
- package/server/{specialist-handoff-logger-CH1nC8fq.js → specialist-handoff-logger-B_2VsWli.js} +2 -2
- package/server/{specialist-logs-DynFhFXg.js → specialist-logs-CvDxquV_.js} +3 -3
- package/server/{specialists-LJ9MZMCz.js → specialists-BCjcG4uE.js} +1 -1
- package/server/{specialists-BUKBHtmQ.js → specialists-BYi0k8CZ.js} +18 -18
- package/server/{specialists-e0Jmecc1.js → specialists-D07ybnam.js} +78 -85
- package/server/{specialists-CF02f9p2.js → specialists-F2uMO4QS.js} +1 -1
- package/server/specs-DeS98l_p.js +3 -0
- package/server/{src-CNLON0co.js → src-BswtmojL.js} +6 -6
- package/server/{src-DhJeCV1p.js → src-Dp0WHgDZ.js} +3 -3
- package/server/{src-AXK4mjue.js → src-fgbU-jJ-.js} +6 -3
- package/server/{stack-health-8jZH0Lgk.js → stack-health-BJVh1TCg.js} +3 -3
- package/server/{stack-health-CXYHwv5D.js → stack-health-Deel1mSW.js} +1 -1
- package/server/{state-home-XkLSsJCD.js → state-home-Bgj7i-C7.js} +8 -7
- package/server/{summary-fork-shfA2XOf.js → summary-fork-DedqguZb.js} +2 -2
- package/server/{summary-fork-BWa0ECGL.js → summary-fork-EjvOkEPl.js} +12 -91
- package/server/{supervisor-owMkHcx8.js → supervisor-0oXvLwyC.js} +3 -3
- package/server/supervisor-D1-XwmZ7.js +2 -0
- package/server/{swarm-readiness-BACUsKOx.js → swarm-readiness-OBgamRql.js} +3 -3
- package/server/{teardown-workspace-CYt_PBaq.js → teardown-workspace-5LCVbjfq.js} +14 -14
- package/server/{test-agent-queue-C1s6mB8C.js → test-agent-queue-qfsq6uaC.js} +6 -6
- package/server/{test-verdict-CmxX3KEf.js → test-verdict-BkubHtti.js} +1 -1
- package/server/{test-verdict-njEv9ZY2.js → test-verdict-D3Il7cBK.js} +1 -1
- package/server/{tldr-daemon-CEUflKr2.js → tldr-daemon-CJW_P4On.js} +2 -2
- package/server/{tldr-daemon-HIo0dwDB.js → tldr-daemon-CJqGsDFh.js} +1 -1
- package/server/tmux-CeDD14p1.js +3 -0
- package/server/{tmux-CBYZ5lKF.js → tmux-ePNhMIMU.js} +2 -2
- package/server/{token-CiS3w6Ma.js → token-_qujO3JZ.js} +1 -1
- package/server/{tracker-config-CVCoeaaL.js → tracker-config-C3hiPVAM.js} +2 -2
- package/server/{tracker-config-Bx50plWp.js → tracker-config-Drt_tx4D.js} +1 -1
- package/server/{tracker-utils-C2Lg4RoB.js → tracker-utils-D6B8scEw.js} +1 -1
- package/server/{tracker-utils-mI4d-vh8.js → tracker-utils-bpWs7Xyx.js} +2 -2
- package/server/{traefik-connect-D21-YEyX.js → traefik-connect-5EP1WS_Z.js} +1 -1
- package/server/{tunnel-BK4PVyb0.js → tunnel-3Ve8BS4H.js} +3 -3
- package/server/{tunnel-CcHkuRIS.js → tunnel-AporWhoi.js} +1 -1
- package/server/{types-DoPMvws2.js → types-B5u3NxMl.js} +1 -1
- package/server/{uat-train-BLFPxqLx.js → uat-train-C3hWXtip.js} +1 -1
- package/server/{uat-train-CQ_E-2ei.js → uat-train-CtNGgXxj.js} +27 -27
- package/server/{validation-Dab3bnSN.js → validation-BmUB-26g.js} +4 -4
- package/server/{validation-1QnjDMc0.js → validation-CbqP_dze.js} +1 -1
- package/server/{verification-runner-BO8TgZWA.js → verification-runner-BPAhPWR7.js} +11 -11
- package/server/{verification-runner-UhAAqOio.js → verification-runner-DuZRHjPU.js} +1 -1
- package/server/{vtt-parser-D-q5-8il.js → vtt-parser-CKc-smWM.js} +1 -1
- package/server/{work-agent-prompt-D_7T1xw5.js → work-agent-prompt-DCdHsm-V.js} +11 -11
- package/server/workflows-Cz8OtiB4.js +2 -0
- package/server/{workflows-CB5SWd0B.js → workflows-H-COJ84X.js} +14 -14
- package/server/{workspace-C4Avf_Tp.js → workspace-4ZufqeMe.js} +3 -3
- package/server/{workspace--XWYPbn1.js → workspace-DYv9kBg6.js} +1 -1
- package/server/{workspace-config-BwJB-bLH.js → workspace-config-DA8U97k9.js} +1 -1
- package/server/{workspace-manager-_6zbrhNF.js → workspace-manager-B3PqQQSM.js} +1 -1
- package/server/{workspace-manager-BE3OznLY.js → workspace-manager-CEWK-OXd.js} +12 -12
- package/server/{workspace-metadata-BCgODi1j.js → workspace-metadata-1eu1RvAT.js} +2 -2
- package/server/{workspace-metadata-wKPgY8PN.js → workspace-metadata-C0I-nIDL.js} +1 -1
- package/server/{workspaces-DpMiZ9BP.js → workspaces-CRU9_vRn.js} +154 -106
- package/server/agent-state-DTZCqWx5.js +0 -3
- package/server/cli-wyiCmp7b.js +0 -3
- package/server/deacon-swarm-jDiQ0kKk.js +0 -2
- package/server/dist-CnkaBMG-.js +0 -3
- package/server/forge-D2QLGWK9.js +0 -2
- package/server/hume-sCsuupWb.js +0 -3
- package/server/inspect-agent-DnspoIls.js +0 -2
- package/server/merge-ops-B6xc_Irj.js +0 -2
- package/server/public/assets/mermaid-GHXKKRXX-uIkd-n0c.js +0 -1
- package/server/rally-BJiyvz3w.js +0 -3
- package/server/reap-terminal-sessions-mW7SPDtP.js +0 -2
- package/server/resume-Pur3Z2e8.js +0 -3
- package/server/review-agent-BRSSFv7e.js +0 -3
- package/server/settings-D0XXIUQ0.js +0 -2
- package/server/specs-COn3zZ2Q.js +0 -3
- package/server/supervisor-DwGIhpXk.js +0 -2
- package/server/tmux-DNmHGMEv.js +0 -3
- package/server/workflows-Plo_VxeO.js +0 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Qn as extractNumberSync, er as init_issue_id } from "./config-yaml-
|
|
2
|
-
import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-
|
|
3
|
-
import { a as upsertMergeSetSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as withRepoArtifactUrlSync, s as withRepoStateSync } from "./merge-set-
|
|
4
|
-
import { i as findPlanSync, o as init_io } from "./io-
|
|
5
|
-
import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-
|
|
6
|
-
import { n as getForgeAdapter } from "./forge-
|
|
1
|
+
import { Qn as extractNumberSync, er as init_issue_id } from "./config-yaml-DPAieL_G.js";
|
|
2
|
+
import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-pcbf-e30.js";
|
|
3
|
+
import { a as upsertMergeSetSync, i as init_merge_set, n as ensureMergeSetForIssueSync, o as withRepoArtifactUrlSync, s as withRepoStateSync } from "./merge-set-TRxJwR-w.js";
|
|
4
|
+
import { i as findPlanSync, o as init_io } from "./io-Wy8YpFeP.js";
|
|
5
|
+
import { a as queryBeadsForIssue, r as init_beads_query } from "./beads-query-BrVNWoSL.js";
|
|
6
|
+
import { n as getForgeAdapter } from "./forge-BixzckB0.js";
|
|
7
7
|
import { Data, Effect } from "effect";
|
|
8
8
|
import { existsSync } from "node:fs";
|
|
9
9
|
import { join } from "node:path";
|
|
@@ -167,4 +167,4 @@ const createReviewArtifactsForIssue = (issueId, workspacePath) => Effect.tryProm
|
|
|
167
167
|
//#endregion
|
|
168
168
|
export { createReviewArtifactsForIssue };
|
|
169
169
|
|
|
170
|
-
//# sourceMappingURL=review-artifacts-
|
|
170
|
+
//# sourceMappingURL=review-artifacts-BGc69epg.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { cr as FsError, vr as init_errors } from "./config-yaml-
|
|
2
|
+
import { cr as FsError, vr as init_errors } from "./config-yaml-DPAieL_G.js";
|
|
3
3
|
import { a as PAN_DIRNAME, p as init_types } from "./types-CE1m_daD.js";
|
|
4
|
-
import { i as findPlanSync, o as init_io, u as readPlan } from "./io-
|
|
5
|
-
import { d as getDevrootPathSync, f as init_config } from "./config-
|
|
6
|
-
import { a as init_lifecycle_io, i as findVBriefByIssueSync } from "./lifecycle-io-
|
|
7
|
-
import { n as init_review_verdict_feedback } from "./review-verdict-feedback-
|
|
8
|
-
import { n as init_github_pr_lookup, r as lookupPullRequestNumberForBranch } from "./github-pr-lookup-
|
|
4
|
+
import { i as findPlanSync, o as init_io, u as readPlan } from "./io-Wy8YpFeP.js";
|
|
5
|
+
import { d as getDevrootPathSync, f as init_config } from "./config-oWoKf5jO.js";
|
|
6
|
+
import { a as init_lifecycle_io, i as findVBriefByIssueSync } from "./lifecycle-io-DSrv9xGh.js";
|
|
7
|
+
import { n as init_review_verdict_feedback } from "./review-verdict-feedback-wqnikhMK.js";
|
|
8
|
+
import { n as init_github_pr_lookup, r as lookupPullRequestNumberForBranch } from "./github-pr-lookup-t8X8R0c0.js";
|
|
9
9
|
import { Effect } from "effect";
|
|
10
10
|
import { existsSync } from "fs";
|
|
11
11
|
import { join } from "path";
|
|
@@ -700,4 +700,4 @@ var init_review_context = __esmMin((() => {
|
|
|
700
700
|
//#endregion
|
|
701
701
|
export { getDiffStat as a, getDiffBase as i, formatTier1Summary as n, init_review_context as o, getChangedFiles as r, buildReviewContext as t };
|
|
702
702
|
|
|
703
|
-
//# sourceMappingURL=review-context-
|
|
703
|
+
//# sourceMappingURL=review-context-CCq56O_Y.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { x as init_tmux } from "./tmux-
|
|
2
|
+
import { x as init_tmux } from "./tmux-ePNhMIMU.js";
|
|
3
3
|
import "effect";
|
|
4
4
|
import "fs";
|
|
5
5
|
import "path";
|
|
@@ -18,4 +18,4 @@ var init_review_monitor = __esmMin((() => {
|
|
|
18
18
|
//#endregion
|
|
19
19
|
export { init_review_monitor as n, REVIEW_SUB_ROLES as t };
|
|
20
20
|
|
|
21
|
-
//# sourceMappingURL=review-monitor-
|
|
21
|
+
//# sourceMappingURL=review-monitor-BKG2ubt5.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { At as queueIssueRecordCommit, Dn as getProjectSync, Et as getIssueWorkspacePath, Gn as resolveProjectFromIssueSync, Nn as init_projects, Nt as readIssueRecordSync, Ot as init_record, jt as readIssueRecord, zt as writeIssueRecordSync } from "./config-yaml-
|
|
3
|
-
import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-
|
|
4
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
5
|
-
import { d as init_cost_sync, i as getCostBreakdownByStageAndModelSync, o as getCostForIssueSync } from "./cost-sync-
|
|
6
|
-
import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-
|
|
7
|
-
import { c as init_review_status_sync, d as init_review_status_normalize, f as normalizeReviewStatusSync, l as markWorkspaceStuck$1, n as deleteReviewStatus, o as getReviewStatusFromDbSync, r as getAllReviewStatusesFromDb, s as getReviewStatusesFromDb, u as upsertReviewStatusSync } from "./review-status-sync-
|
|
2
|
+
import { At as queueIssueRecordCommit, Dn as getProjectSync, Et as getIssueWorkspacePath, Gn as resolveProjectFromIssueSync, Nn as init_projects, Nt as readIssueRecordSync, Ot as init_record, jt as readIssueRecord, zt as writeIssueRecordSync } from "./config-yaml-DPAieL_G.js";
|
|
3
|
+
import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-pcbf-e30.js";
|
|
4
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CpKlYZA9.js";
|
|
5
|
+
import { d as init_cost_sync, i as getCostBreakdownByStageAndModelSync, o as getCostForIssueSync } from "./cost-sync-8lkDeL9g.js";
|
|
6
|
+
import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-aX_5EqQO.js";
|
|
7
|
+
import { c as init_review_status_sync, d as init_review_status_normalize, f as normalizeReviewStatusSync, l as markWorkspaceStuck$1, n as deleteReviewStatus, o as getReviewStatusFromDbSync, r as getAllReviewStatusesFromDb, s as getReviewStatusesFromDb, u as upsertReviewStatusSync } from "./review-status-sync-BWHnrq-k.js";
|
|
8
8
|
import { a as PAN_DIRNAME, p as init_types, r as PAN_CONTINUES_DIRNAME } from "./types-CE1m_daD.js";
|
|
9
|
-
import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-
|
|
9
|
+
import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-TRxJwR-w.js";
|
|
10
10
|
import { Data, Effect } from "effect";
|
|
11
11
|
import { join } from "path";
|
|
12
12
|
import { homedir } from "os";
|
|
13
13
|
import { hostname } from "node:os";
|
|
14
|
-
import { existsSync, promises } from "node:fs";
|
|
15
|
-
import { join as join$1 } from "node:path";
|
|
14
|
+
import { existsSync, mkdirSync, promises, readFileSync, writeFileSync } from "node:fs";
|
|
15
|
+
import { dirname as dirname$1, join as join$1 } from "node:path";
|
|
16
16
|
//#region ../../lib/overdeck/agent-state-sync.ts
|
|
17
17
|
function isoFromMillis(value) {
|
|
18
18
|
return value == null ? void 0 : new Date(value).toISOString();
|
|
@@ -190,6 +190,23 @@ var init_agent_state_sync = __esmMin((() => {
|
|
|
190
190
|
SELECT_AGENT_SQL = `SELECT ${AGENT_COLUMNS_FOR_DB.join(", ")} FROM agents`;
|
|
191
191
|
}));
|
|
192
192
|
//#endregion
|
|
193
|
+
//#region ../../lib/cloister/review-status-source.ts
|
|
194
|
+
function registerReviewStatusMapReader(fn) {
|
|
195
|
+
reader = fn;
|
|
196
|
+
}
|
|
197
|
+
function readReviewStatusMap() {
|
|
198
|
+
if (!reader) return null;
|
|
199
|
+
try {
|
|
200
|
+
return reader();
|
|
201
|
+
} catch {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
var reader;
|
|
206
|
+
var init_review_status_source = __esmMin((() => {
|
|
207
|
+
reader = null;
|
|
208
|
+
}));
|
|
209
|
+
//#endregion
|
|
193
210
|
//#region ../../lib/pan-dir/record-lock.ts
|
|
194
211
|
/**
|
|
195
212
|
* Serialize async read-modify-write rebuilds for a single issue record.
|
|
@@ -363,13 +380,18 @@ async function buildIssueRecord(project, issueId, opts = {}) {
|
|
|
363
380
|
* PAN-1908 / PAN-1919: rebuild and queue the per-issue permanent record for a
|
|
364
381
|
* given issue. Fire-and-forget: failures are logged, never thrown, so
|
|
365
382
|
* review-status writes stay synchronous and fast.
|
|
383
|
+
*
|
|
384
|
+
* PAN-2583: returns whether the durable write actually landed, so the caller
|
|
385
|
+
* can fall back to a sandbox-writable verdict drop when it did not (a sandboxed
|
|
386
|
+
* reviewer cannot write ${OVERDECK_HOME}/state, and swallowing that here was
|
|
387
|
+
* how blocked review verdicts silently vanished).
|
|
366
388
|
*/
|
|
367
389
|
async function updateIssueRecordForIssue(issueId, reviewStatus) {
|
|
368
390
|
try {
|
|
369
391
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
370
|
-
if (!resolved) return;
|
|
392
|
+
if (!resolved) return false;
|
|
371
393
|
const project = getProjectSync(resolved.projectKey);
|
|
372
|
-
if (!project) return;
|
|
394
|
+
if (!project) return false;
|
|
373
395
|
await withIssueRecordLock(issueId, async () => {
|
|
374
396
|
const record = await buildIssueRecord(project, issueId, { reviewStatus });
|
|
375
397
|
const fresh = readIssueRecordSync(project, issueId);
|
|
@@ -380,8 +402,10 @@ async function updateIssueRecordForIssue(issueId, reviewStatus) {
|
|
|
380
402
|
};
|
|
381
403
|
queueIssueRecordCommit(project, issueId, writeIssueRecordSync(project, issueId, record));
|
|
382
404
|
});
|
|
405
|
+
return true;
|
|
383
406
|
} catch (err) {
|
|
384
407
|
console.warn(`[pan-dir/records] Failed to update record for ${issueId}: ${err.message}`);
|
|
408
|
+
return false;
|
|
385
409
|
}
|
|
386
410
|
}
|
|
387
411
|
var init_records = __esmMin((() => {
|
|
@@ -396,7 +420,9 @@ var init_records = __esmMin((() => {
|
|
|
396
420
|
//#endregion
|
|
397
421
|
//#region ../../lib/overdeck/review-status-record-sync.ts
|
|
398
422
|
function updateIssueRecordForReviewStatusSync(issueId, status) {
|
|
399
|
-
updateIssueRecordForIssue(issueId, status)
|
|
423
|
+
Promise.resolve(updateIssueRecordForIssue(issueId, status)).then((landed) => {
|
|
424
|
+
if (landed === false) writeWorkspaceVerdictFallbackSync(issueId, status);
|
|
425
|
+
}).catch(() => writeWorkspaceVerdictFallbackSync(issueId, status));
|
|
400
426
|
}
|
|
401
427
|
/** Resolve and read the per-issue journal record's pipeline block, or null. Best-effort. */
|
|
402
428
|
function readPipelineSync(issueId) {
|
|
@@ -432,6 +458,78 @@ function enrichReviewNotesFromRecordSync(issueId, status) {
|
|
|
432
458
|
};
|
|
433
459
|
}
|
|
434
460
|
/**
|
|
461
|
+
* The durable field subset shared by the journal record's pipeline block and the
|
|
462
|
+
* workspace verdict fallback (PAN-2583). Derived/live columns (readyForMerge,
|
|
463
|
+
* blockerReasons) are intentionally omitted — the reader recomputes them.
|
|
464
|
+
*/
|
|
465
|
+
function durableSubset(p) {
|
|
466
|
+
return {
|
|
467
|
+
reviewStatus: p.reviewStatus,
|
|
468
|
+
testStatus: p.testStatus,
|
|
469
|
+
mergeStatus: p.mergeStatus ?? void 0,
|
|
470
|
+
inspectStatus: p.inspectStatus ?? void 0,
|
|
471
|
+
verificationStatus: p.verificationStatus ?? void 0,
|
|
472
|
+
reviewNotes: p.reviewNotes,
|
|
473
|
+
testNotes: p.testNotes,
|
|
474
|
+
mergeNotes: p.mergeNotes,
|
|
475
|
+
inspectNotes: p.inspectNotes,
|
|
476
|
+
verificationNotes: p.verificationNotes,
|
|
477
|
+
scopeDrift: p.scopeDrift,
|
|
478
|
+
prUrl: p.prUrl,
|
|
479
|
+
prNumber: p.prNumber,
|
|
480
|
+
prHeadSha: p.prHeadSha,
|
|
481
|
+
reviewedAtCommit: p.reviewedAtCommit,
|
|
482
|
+
lastVerifiedCommit: p.lastVerifiedCommit,
|
|
483
|
+
reviewRequestedAt: p.reviewRequestedAt,
|
|
484
|
+
reviewerVerdicts: p.reviewerVerdicts,
|
|
485
|
+
autoMerge: p.autoMerge,
|
|
486
|
+
deaconIgnored: p.deaconIgnored,
|
|
487
|
+
deaconIgnoredAt: p.deaconIgnoredAt,
|
|
488
|
+
deaconIgnoredReason: p.deaconIgnoredReason,
|
|
489
|
+
closedOut: p.closedOut,
|
|
490
|
+
closedOutAt: p.closedOutAt
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
function workspaceVerdictFallbackPath(issueId) {
|
|
494
|
+
try {
|
|
495
|
+
const resolved = resolveProjectFromIssueSync(issueId);
|
|
496
|
+
if (!resolved) return null;
|
|
497
|
+
return join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`, ".overdeck", "pipeline-verdict.json");
|
|
498
|
+
} catch {
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
function writeWorkspaceVerdictFallbackSync(issueId, status) {
|
|
503
|
+
try {
|
|
504
|
+
const path = workspaceVerdictFallbackPath(issueId);
|
|
505
|
+
if (!path) {
|
|
506
|
+
console.error(`[review-status] PAN-2583: journal write failed for ${issueId} and no workspace could be resolved — the verdict is NOT durable`);
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
mkdirSync(dirname$1(path), { recursive: true });
|
|
510
|
+
const payload = {
|
|
511
|
+
issueId: issueId.toUpperCase(),
|
|
512
|
+
updatedAt: status.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
513
|
+
pipeline: durableSubset(status)
|
|
514
|
+
};
|
|
515
|
+
writeFileSync(path, JSON.stringify(payload, null, 2));
|
|
516
|
+
console.warn(`[review-status] journal write failed for ${issueId} — durable verdict written to workspace fallback ${path}; the host sweeps it on the next status read (PAN-2583)`);
|
|
517
|
+
} catch (err) {
|
|
518
|
+
console.error(`[review-status] PAN-2583: could not persist verdict for ${issueId} anywhere durable: ${err.message}`);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
function readWorkspaceVerdictFallbackSync(issueId) {
|
|
522
|
+
try {
|
|
523
|
+
const path = workspaceVerdictFallbackPath(issueId);
|
|
524
|
+
if (!path || !existsSync(path)) return null;
|
|
525
|
+
const parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
526
|
+
if (!parsed?.updatedAt || !parsed.pipeline) return null;
|
|
527
|
+
return parsed;
|
|
528
|
+
} catch {
|
|
529
|
+
return null;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
435
533
|
* PAN-1988: read the journal record's durable verdict for an issue — the SOURCE OF TRUTH.
|
|
436
534
|
* Returns the record `updatedAt` (used to decide whether the journal is newer than the DB
|
|
437
535
|
* cache) plus the durable status fields (flags + feedback notes). Derived/live columns
|
|
@@ -440,37 +538,32 @@ function enrichReviewNotesFromRecordSync(issueId, status) {
|
|
|
440
538
|
* This is what makes verdict writes host-owned: a sandboxed agent can always write the journal
|
|
441
539
|
* (workspace-local) even when it cannot write `~/.overdeck/overdeck.db`. The host reconciles
|
|
442
540
|
* the cache from this on read, so no agent has to escalate out of its sandbox to record a verdict.
|
|
541
|
+
*
|
|
542
|
+
* PAN-2583: since the records migration (PAN-2541) the journal itself lives in
|
|
543
|
+
* ${OVERDECK_HOME}/state, which a sandboxed reviewer cannot write either. When such a
|
|
544
|
+
* writer dropped its verdict into the workspace fallback instead, overlay it here —
|
|
545
|
+
* a strictly newer fallback wins over the record, and the host's own next journal
|
|
546
|
+
* write folds it back into the canonical record.
|
|
443
547
|
*/
|
|
444
548
|
function readJournalStatusSync(issueId) {
|
|
445
549
|
const p = readPipelineSync(issueId);
|
|
550
|
+
const fallback = readWorkspaceVerdictFallbackSync(issueId);
|
|
551
|
+
const fallbackNewer = !!fallback && (!p || (p.updatedAt ?? "") < fallback.updatedAt);
|
|
552
|
+
if (fallback && fallbackNewer) {
|
|
553
|
+
const base = p ? durableSubset(p) : {};
|
|
554
|
+
const overlay = Object.fromEntries(Object.entries(fallback.pipeline).filter(([, value]) => value !== void 0));
|
|
555
|
+
return {
|
|
556
|
+
updatedAt: fallback.updatedAt,
|
|
557
|
+
durable: {
|
|
558
|
+
...base,
|
|
559
|
+
...overlay
|
|
560
|
+
}
|
|
561
|
+
};
|
|
562
|
+
}
|
|
446
563
|
if (!p) return null;
|
|
447
564
|
return {
|
|
448
565
|
updatedAt: p.updatedAt,
|
|
449
|
-
durable:
|
|
450
|
-
reviewStatus: p.reviewStatus,
|
|
451
|
-
testStatus: p.testStatus,
|
|
452
|
-
mergeStatus: p.mergeStatus ?? void 0,
|
|
453
|
-
inspectStatus: p.inspectStatus ?? void 0,
|
|
454
|
-
verificationStatus: p.verificationStatus ?? void 0,
|
|
455
|
-
reviewNotes: p.reviewNotes,
|
|
456
|
-
testNotes: p.testNotes,
|
|
457
|
-
mergeNotes: p.mergeNotes,
|
|
458
|
-
inspectNotes: p.inspectNotes,
|
|
459
|
-
verificationNotes: p.verificationNotes,
|
|
460
|
-
scopeDrift: p.scopeDrift,
|
|
461
|
-
prUrl: p.prUrl,
|
|
462
|
-
prNumber: p.prNumber,
|
|
463
|
-
prHeadSha: p.prHeadSha,
|
|
464
|
-
reviewedAtCommit: p.reviewedAtCommit,
|
|
465
|
-
lastVerifiedCommit: p.lastVerifiedCommit,
|
|
466
|
-
reviewRequestedAt: p.reviewRequestedAt,
|
|
467
|
-
autoMerge: p.autoMerge,
|
|
468
|
-
deaconIgnored: p.deaconIgnored,
|
|
469
|
-
deaconIgnoredAt: p.deaconIgnoredAt,
|
|
470
|
-
deaconIgnoredReason: p.deaconIgnoredReason,
|
|
471
|
-
closedOut: p.closedOut,
|
|
472
|
-
closedOutAt: p.closedOutAt
|
|
473
|
-
}
|
|
566
|
+
durable: durableSubset(p)
|
|
474
567
|
};
|
|
475
568
|
}
|
|
476
569
|
var init_review_status_record_sync = __esmMin((() => {
|
|
@@ -526,7 +619,7 @@ function verificationSatisfied(status) {
|
|
|
526
619
|
* journal→DB reconcile in getReviewStatusSync derive readyForMerge identically.
|
|
527
620
|
*/
|
|
528
621
|
function reviewGatesPassedSync(s) {
|
|
529
|
-
return s.reviewStatus === "passed" && (s.testStatus === "passed" || s.testStatus === "skipped") && verificationSatisfied(s) && (s.uatStatus === void 0 || s.uatStatus === "passed") && (s.mergeStatus === "pending" || s.mergeStatus === "queued" || s.mergeStatus === void 0 || s.mergeStatus === null);
|
|
622
|
+
return (s.reviewStatus === "passed" || s.reviewStatus === "skipped") && (s.testStatus === "passed" || s.testStatus === "skipped") && verificationSatisfied(s) && (s.uatStatus === void 0 || s.uatStatus === "passed") && (s.mergeStatus === "pending" || s.mergeStatus === "queued" || s.mergeStatus === void 0 || s.mergeStatus === null);
|
|
530
623
|
}
|
|
531
624
|
/**
|
|
532
625
|
* Authoritative "allowed to merge" predicate (PAN-1759). The flywheel
|
|
@@ -542,7 +635,7 @@ function mergeGateEligibility(status) {
|
|
|
542
635
|
eligible: false,
|
|
543
636
|
reason: "no review record"
|
|
544
637
|
};
|
|
545
|
-
if (status.reviewStatus !== "passed") return {
|
|
638
|
+
if (status.reviewStatus !== "passed" && status.reviewStatus !== "skipped") return {
|
|
546
639
|
eligible: false,
|
|
547
640
|
reason: `review is ${status.reviewStatus}`
|
|
548
641
|
};
|
|
@@ -627,6 +720,15 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
627
720
|
});
|
|
628
721
|
return status;
|
|
629
722
|
}
|
|
723
|
+
if (update.reviewStatus === "reviewing" && (status.reviewStatus === "blocked" || status.reviewStatus === "failed") && update.reviewSpawnedAt === void 0) {
|
|
724
|
+
console.warn(`[review-status] Rejecting stale 'reviewing' write for ${issueId} — a terminal '${status.reviewStatus}' verdict is already recorded for this review cycle. Only a new dispatch (carrying reviewSpawnedAt) may re-enter 'reviewing'.`);
|
|
725
|
+
notifyPipelineSync({
|
|
726
|
+
type: "status_changed",
|
|
727
|
+
issueId,
|
|
728
|
+
status
|
|
729
|
+
});
|
|
730
|
+
return status;
|
|
731
|
+
}
|
|
630
732
|
if ((update.testStatus === "dispatch_failed" || update.testStatus === "failed") && status.testStatus === "passed") {
|
|
631
733
|
console.warn(`[review-status] Rejecting testStatus regression from 'passed' to '${update.testStatus}' for ${issueId}`);
|
|
632
734
|
delete update.testStatus;
|
|
@@ -636,6 +738,10 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
636
738
|
...status,
|
|
637
739
|
...update
|
|
638
740
|
};
|
|
741
|
+
if (update.reviewerVerdicts && status.reviewerVerdicts) merged.reviewerVerdicts = {
|
|
742
|
+
...status.reviewerVerdicts,
|
|
743
|
+
...update.reviewerVerdicts
|
|
744
|
+
};
|
|
639
745
|
const history = [...status.history || []];
|
|
640
746
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
641
747
|
if (update.reviewStatus && update.reviewStatus !== status.reviewStatus) history.push({
|
|
@@ -672,7 +778,7 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
672
778
|
});
|
|
673
779
|
if (readyForMerge && !status.readyForMerge && updated.prUrl) (async () => {
|
|
674
780
|
try {
|
|
675
|
-
const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-
|
|
781
|
+
const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-B5PDHMyn.js");
|
|
676
782
|
if (!isGitHubAppConfigured()) return;
|
|
677
783
|
const prMatch = updated.prUrl.match(/github\.com\/([^/]+)\/([^/]+)\/pull/);
|
|
678
784
|
if (!prMatch) return;
|
|
@@ -893,7 +999,7 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
893
999
|
eventType: "readyForMerge"
|
|
894
1000
|
});
|
|
895
1001
|
}
|
|
896
|
-
if (update.reviewStatus === "passed" && status.reviewStatus !== "passed" && updated.testStatus === "pending") if (updated.reviewedAtCommit && updated.lastVerifiedCommit && updated.reviewedAtCommit === updated.lastVerifiedCommit) {
|
|
1002
|
+
if ((update.reviewStatus === "passed" || update.reviewStatus === "skipped") && status.reviewStatus !== "passed" && status.reviewStatus !== "skipped" && updated.testStatus === "pending") if (updated.reviewedAtCommit && updated.lastVerifiedCommit && updated.reviewedAtCommit === updated.lastVerifiedCommit) {
|
|
897
1003
|
console.log(`[review-status] Skipping test role for ${issueId} — no code drift since verification (HEAD=${updated.reviewedAtCommit.slice(0, 8)})`);
|
|
898
1004
|
emitActivityEntrySync({
|
|
899
1005
|
source: "cloister",
|
|
@@ -950,7 +1056,7 @@ function resetPipelineVerdictsForWorkStartSync(issueId) {
|
|
|
950
1056
|
*/
|
|
951
1057
|
async function deliverReviewVerdictFeedbackHostSide(issueId, status) {
|
|
952
1058
|
try {
|
|
953
|
-
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-
|
|
1059
|
+
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-cZh9Wi9G.js");
|
|
954
1060
|
if ((await Effect.runPromise(deliverReviewVerdictFeedback({
|
|
955
1061
|
issueId,
|
|
956
1062
|
verdict: status.reviewStatus === "failed" ? "failed" : "blocked",
|
|
@@ -983,7 +1089,7 @@ function maybeAutoDispatchReviewHostSide(issueId, status) {
|
|
|
983
1089
|
}
|
|
984
1090
|
async function dispatchReviewHostSide(issueId, prUrl) {
|
|
985
1091
|
try {
|
|
986
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
1092
|
+
const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
|
|
987
1093
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
988
1094
|
if (!resolved) return;
|
|
989
1095
|
const { existsSync } = await import("fs");
|
|
@@ -999,7 +1105,7 @@ async function dispatchReviewHostSide(issueId, prUrl) {
|
|
|
999
1105
|
});
|
|
1000
1106
|
branch = stdout.trim() || branch;
|
|
1001
1107
|
} catch {}
|
|
1002
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
1108
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-DgySDb-G.js");
|
|
1003
1109
|
if ((await Effect.runPromise(spawnReviewRoleForIssue({
|
|
1004
1110
|
issueId,
|
|
1005
1111
|
workspace,
|
|
@@ -1021,13 +1127,13 @@ function maybeRecoverTestVerdictHostSide(issueId, status) {
|
|
|
1021
1127
|
}
|
|
1022
1128
|
async function recoverTestVerdictHostSide(issueId) {
|
|
1023
1129
|
try {
|
|
1024
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
1130
|
+
const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
|
|
1025
1131
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
1026
1132
|
if (!resolved) return;
|
|
1027
1133
|
const { existsSync } = await import("fs");
|
|
1028
1134
|
const workspace = join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
1029
1135
|
if (!existsSync(workspace)) return;
|
|
1030
|
-
const { readTestVerdictArtifact } = await import("./test-verdict-
|
|
1136
|
+
const { readTestVerdictArtifact } = await import("./test-verdict-BkubHtti.js");
|
|
1031
1137
|
const artifact = readTestVerdictArtifact(workspace);
|
|
1032
1138
|
if (!artifact) return;
|
|
1033
1139
|
setReviewStatusSync(issueId, {
|
|
@@ -1041,13 +1147,13 @@ async function recoverTestVerdictHostSide(issueId) {
|
|
|
1041
1147
|
}
|
|
1042
1148
|
async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
|
|
1043
1149
|
try {
|
|
1044
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
1150
|
+
const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
|
|
1045
1151
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
1046
1152
|
const workspace = resolved ? join(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`) : void 0;
|
|
1047
1153
|
const notes = status.testNotes;
|
|
1048
1154
|
let feedbackPath;
|
|
1049
1155
|
try {
|
|
1050
|
-
const { writeFeedbackFile } = await import("./feedback-writer-
|
|
1156
|
+
const { writeFeedbackFile } = await import("./feedback-writer-thrdxYpK.js");
|
|
1051
1157
|
const r = await Effect.runPromise(writeFeedbackFile({
|
|
1052
1158
|
issueId,
|
|
1053
1159
|
workspacePath: workspace,
|
|
@@ -1059,10 +1165,10 @@ async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
|
|
|
1059
1165
|
if (r.success) feedbackPath = r.filePath;
|
|
1060
1166
|
} catch {}
|
|
1061
1167
|
const message = `SPECIALIST FEEDBACK: test-agent reported FAILED for ${issueId}.\n\n${feedbackPath ? `MUST READ: ${feedbackPath}\n\n` : ""}${notes ? `${notes.slice(0, 400)}\n\n` : ""}Fix the failing tests, commit and push, then re-run pan done ${issueId}. Do NOT stop at the prompt.`;
|
|
1062
|
-
const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-
|
|
1168
|
+
const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-C4DaDSZ8.js");
|
|
1063
1169
|
const target = await resolveIssueFeedbackTarget(issueId);
|
|
1064
1170
|
if ("agentId" in target) {
|
|
1065
|
-
const { messageAgent } = await import("./agents-
|
|
1171
|
+
const { messageAgent } = await import("./agents-BIggLvi_.js");
|
|
1066
1172
|
await messageAgent(target.agentId, message);
|
|
1067
1173
|
console.log(`[review-status] delivered test failure to ${target.agentId} for ${issueId} (host-side)`);
|
|
1068
1174
|
} else await surfaceIssueFeedbackNeedsYou(issueId, target.reason, {
|
|
@@ -1254,9 +1360,11 @@ var init_review_status = __esmMin((() => {
|
|
|
1254
1360
|
init_pipeline_notifier();
|
|
1255
1361
|
init_activity_logger();
|
|
1256
1362
|
init_review_status_sync();
|
|
1363
|
+
init_review_status_source();
|
|
1257
1364
|
init_review_status_normalize();
|
|
1258
1365
|
init_review_status_record_sync();
|
|
1259
1366
|
init_review_dispatch_decision();
|
|
1367
|
+
registerReviewStatusMapReader(() => getAllReviewStatusesFromDb());
|
|
1260
1368
|
DEFAULT_STATUS_FILE = join(homedir(), ".overdeck", "review-status.json");
|
|
1261
1369
|
reviewDispatchAttemptAt = /* @__PURE__ */ new Map();
|
|
1262
1370
|
REVIEW_AUTO_DISPATCH_THROTTLE_MS = 3e4;
|
|
@@ -1291,6 +1399,6 @@ var init_review_status = __esmMin((() => {
|
|
|
1291
1399
|
});
|
|
1292
1400
|
}));
|
|
1293
1401
|
//#endregion
|
|
1294
|
-
export {
|
|
1402
|
+
export { listOverdeckAgentStatesSync as A, init_record_lock as C, AGENT_COLUMNS_FOR_DB as D, readReviewStatusMap as E, stateToOverdeckParamsForDb as M, getOverdeckAgentStateSync as O, needsReviewDispatch as S, init_review_status_source as T, setDeaconIgnored as _, fixStuckReadyForMerge as a, verificationSatisfied as b, init_review_status as c, loadReviewStatusesForIssues as d, markWorkspaceStuck as f, setAutoMerge as g, reviewGatesPassedSync as h, fixStuckCommentedReviews as i, saveOverdeckAgentStateSync as j, init_agent_state_sync as k, loadReadyForMergeFlags as l, resetPipelineVerdictsForWorkStartSync as m, clearReviewStatus as n, getReviewStatus as o, mergeGateEligibility as p, clearStuckMergeStatuses as r, getReviewStatusSync as s, ReviewStatusError as t, loadReviewStatuses as u, setReviewStatus as v, withIssueRecordLock as w, init_review_dispatch_decision as x, setReviewStatusSync as y };
|
|
1295
1403
|
|
|
1296
|
-
//# sourceMappingURL=review-status-
|
|
1404
|
+
//# sourceMappingURL=review-status-BQjqQXZG.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { c as init_review_status, f as markWorkspaceStuck, n as clearReviewStatus, p as mergeGateEligibility, s as getReviewStatusSync, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-
|
|
1
|
+
import { c as init_review_status, f as markWorkspaceStuck, n as clearReviewStatus, p as mergeGateEligibility, s as getReviewStatusSync, u as loadReviewStatuses, y as setReviewStatusSync } from "./review-status-BQjqQXZG.js";
|
|
2
2
|
init_review_status();
|
|
3
3
|
export { clearReviewStatus, getReviewStatusSync, loadReviewStatuses, markWorkspaceStuck, mergeGateEligibility, setReviewStatusSync };
|
package/server/{review-status-enrichment-C6sr9wOI.js → review-status-enrichment-CGlcApSn.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Gn as resolveProjectFromIssueSync, Nn as init_projects } from "./config-yaml-
|
|
2
|
-
import { O as listSessionNames, x as init_tmux } from "./tmux-
|
|
1
|
+
import { Gn as resolveProjectFromIssueSync, Nn as init_projects } from "./config-yaml-DPAieL_G.js";
|
|
2
|
+
import { O as listSessionNames, x as init_tmux } from "./tmux-ePNhMIMU.js";
|
|
3
3
|
import { Data, Effect } from "effect";
|
|
4
4
|
import { existsSync } from "fs";
|
|
5
5
|
import { join } from "path";
|
|
@@ -124,4 +124,4 @@ const enrichReviewStatus = (issueId, status) => Effect.tryPromise({
|
|
|
124
124
|
//#endregion
|
|
125
125
|
export { enrichReviewStatusFromSessions as n, enrichReviewStatus as t };
|
|
126
126
|
|
|
127
|
-
//# sourceMappingURL=review-status-enrichment-
|
|
127
|
+
//# sourceMappingURL=review-status-enrichment-CGlcApSn.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
2
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CpKlYZA9.js";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
4
|
//#region ../../lib/review-status-normalize.ts
|
|
5
5
|
function normalizeReviewStatusSync(status) {
|
|
6
6
|
const shouldClearMergeNotes = status.mergeStatus === "verifying" || status.mergeStatus === "merged";
|
|
7
|
-
const shouldClearReadyForMerge = status.mergeStatus === "merged" || status.reviewStatus !== "passed" || status.testStatus !== "passed" && status.testStatus !== "skipped" || status.uatStatus !== void 0 && status.uatStatus !== "passed" || (status.blockerReasons?.length ?? 0) > 0;
|
|
7
|
+
const shouldClearReadyForMerge = status.mergeStatus === "merged" || status.reviewStatus !== "passed" && status.reviewStatus !== "skipped" || status.testStatus !== "passed" && status.testStatus !== "skipped" || status.uatStatus !== void 0 && status.uatStatus !== "passed" || (status.blockerReasons?.length ?? 0) > 0;
|
|
8
8
|
return {
|
|
9
9
|
...status,
|
|
10
10
|
...shouldClearMergeNotes ? { mergeNotes: void 0 } : {},
|
|
@@ -271,4 +271,4 @@ var init_review_status_sync = __esmMin((() => {
|
|
|
271
271
|
//#endregion
|
|
272
272
|
export { getMergeBlockerReconcileCandidatesSync as a, init_review_status_sync as c, init_review_status_normalize as d, normalizeReviewStatusSync as f, getMergeBlockerReconcileCandidates as i, markWorkspaceStuck as l, deleteReviewStatus as n, getReviewStatusFromDbSync as o, getAllReviewStatusesFromDb as r, getReviewStatusesFromDb as s, clearWorkspaceStuck as t, upsertReviewStatusSync as u };
|
|
273
273
|
|
|
274
|
-
//# sourceMappingURL=review-status-sync-
|
|
274
|
+
//# sourceMappingURL=review-status-sync-BWHnrq-k.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { c as init_review_status_sync, t as clearWorkspaceStuck } from "./review-status-sync-
|
|
1
|
+
import { c as init_review_status_sync, t as clearWorkspaceStuck } from "./review-status-sync-BWHnrq-k.js";
|
|
2
2
|
init_review_status_sync();
|
|
3
3
|
export { clearWorkspaceStuck };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-
|
|
1
|
+
import { n as init_review_verdict_feedback, t as deliverReviewVerdictFeedback } from "./review-verdict-feedback-wqnikhMK.js";
|
|
2
2
|
init_review_verdict_feedback();
|
|
3
3
|
export { deliverReviewVerdictFeedback };
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { Gn as resolveProjectFromIssueSync, Nn as init_projects } from "./config-yaml-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { E as resumeAgent, Pn as getAgentStateSync, Tn as clearAgentPausedSync, j as messageAgent, t as init_agents } from "./agents-D_x5BSZM.js";
|
|
2
|
+
import { Gn as resolveProjectFromIssueSync, Nn as init_projects } from "./config-yaml-DPAieL_G.js";
|
|
3
|
+
import { c as init_review_status, s as getReviewStatusSync } from "./review-status-BQjqQXZG.js";
|
|
4
|
+
import { j as messageAgent, t as init_agents } from "./agents-DHvsjsuP.js";
|
|
6
5
|
import { a as PAN_DIRNAME, p as init_types } from "./types-CE1m_daD.js";
|
|
7
|
-
import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-
|
|
8
|
-
import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-
|
|
6
|
+
import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-DMaO0XXa.js";
|
|
7
|
+
import { n as resolveIssueFeedbackTarget, r as surfaceIssueFeedbackNeedsYou, t as init_feedback_target } from "./feedback-target-oE4-Esxl.js";
|
|
9
8
|
import { Effect } from "effect";
|
|
10
9
|
import { existsSync } from "node:fs";
|
|
11
10
|
import { join } from "node:path";
|
|
@@ -95,15 +94,20 @@ async function deliverReviewVerdictFeedbackPromise(opts) {
|
|
|
95
94
|
if (fileResult.success && fileResult.filePath) {
|
|
96
95
|
const message = `SPECIALIST FEEDBACK: review-agent reported ${opts.verdict.toUpperCase()} for ${issueId}.\n\nMUST READ: ${fileResult.filePath}\n\nUse your Read tool to open this file, read every line, then fix ALL review findings. Do NOT stop at the prompt.`;
|
|
97
96
|
try {
|
|
98
|
-
const target = await resolveIssueFeedbackTarget(issueId, {
|
|
99
|
-
itemId: opts.slotItemId,
|
|
100
|
-
revivePipelinePausedAgent
|
|
101
|
-
});
|
|
97
|
+
const target = await resolveIssueFeedbackTarget(issueId, { itemId: opts.slotItemId });
|
|
102
98
|
if ("agentId" in target) try {
|
|
103
99
|
await messageAgent(target.agentId, message);
|
|
104
100
|
agentMessageSent = true;
|
|
105
101
|
} catch (err) {
|
|
106
|
-
|
|
102
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
103
|
+
console.warn(`[review-verdict-feedback] Could not message ${target.agentId}; feedback file remains available: ${reason}`);
|
|
104
|
+
try {
|
|
105
|
+
await surfaceIssueFeedbackNeedsYou(issueId, `Feedback delivery to ${target.agentId} failed: ${reason}`, {
|
|
106
|
+
specialist: "review-agent",
|
|
107
|
+
feedbackPath: fileResult.filePath,
|
|
108
|
+
slotItemId: opts.slotItemId
|
|
109
|
+
});
|
|
110
|
+
} catch {}
|
|
107
111
|
}
|
|
108
112
|
else try {
|
|
109
113
|
await surfaceIssueFeedbackNeedsYou(issueId, target.reason, {
|
|
@@ -125,36 +129,12 @@ async function deliverReviewVerdictFeedbackPromise(opts) {
|
|
|
125
129
|
agentMessageSent
|
|
126
130
|
};
|
|
127
131
|
}
|
|
128
|
-
/**
|
|
129
|
-
* PAN-2461: unpause + resume an agent that the PIPELINE paused (pausedReason
|
|
130
|
-
* starts with "needs-you:") so feedback can be delivered to it. Operator pauses
|
|
131
|
-
* are left untouched.
|
|
132
|
-
*/
|
|
133
|
-
async function revivePipelinePausedAgent(agentId, issueId) {
|
|
134
|
-
try {
|
|
135
|
-
const state = getAgentStateSync(agentId);
|
|
136
|
-
if (!state) return false;
|
|
137
|
-
if (state.paused !== true || !state.pausedReason?.startsWith("needs-you:")) return false;
|
|
138
|
-
console.log(`[review-verdict-feedback] ${agentId} is pipeline-paused (${state.pausedReason}) — unpausing to deliver feedback for ${issueId}`);
|
|
139
|
-
clearAgentPausedSync(agentId);
|
|
140
|
-
const result = await resumeAgent(agentId);
|
|
141
|
-
if (!result.success) {
|
|
142
|
-
console.warn(`[review-verdict-feedback] Failed to revive ${agentId}: ${result.error}`);
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
return Effect.runPromise(sessionExists(agentId));
|
|
146
|
-
} catch (err) {
|
|
147
|
-
console.warn(`[review-verdict-feedback] revivePipelinePausedAgent(${agentId}) failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
132
|
var execFileAsync, PR_COMMENT_TIMEOUT_MS, deliverReviewVerdictFeedback;
|
|
152
133
|
var init_review_verdict_feedback = __esmMin((() => {
|
|
153
134
|
init_agents();
|
|
154
135
|
init_projects();
|
|
155
136
|
init_review_status();
|
|
156
137
|
init_types();
|
|
157
|
-
init_tmux();
|
|
158
138
|
init_feedback_writer();
|
|
159
139
|
init_feedback_target();
|
|
160
140
|
execFileAsync = promisify(execFile);
|
|
@@ -164,4 +144,4 @@ var init_review_verdict_feedback = __esmMin((() => {
|
|
|
164
144
|
//#endregion
|
|
165
145
|
export { init_review_verdict_feedback as n, postPrComment as r, deliverReviewVerdictFeedback as t };
|
|
166
146
|
|
|
167
|
-
//# sourceMappingURL=review-verdict-feedback-
|
|
147
|
+
//# sourceMappingURL=review-verdict-feedback-wqnikhMK.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { S as MemoryStatus, t as init_src } from "./src-
|
|
3
|
-
import { a as resolveArchiveDir, f as resolveStatusFile, i as init_paths, l as resolveObservationsFile, n as ensureDir, r as ensureParentDir, u as resolvePendingDir } from "./paths-
|
|
4
|
-
import { i as init_settings, n as getMemoryRollupPendingThreshold } from "./settings-
|
|
5
|
-
import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers } from "./providers-
|
|
2
|
+
import { S as MemoryStatus, t as init_src } from "./src-fgbU-jJ-.js";
|
|
3
|
+
import { a as resolveArchiveDir, f as resolveStatusFile, i as init_paths, l as resolveObservationsFile, n as ensureDir, r as ensureParentDir, u as resolvePendingDir } from "./paths-TE1GOZDr.js";
|
|
4
|
+
import { i as init_settings, n as getMemoryRollupPendingThreshold } from "./settings-D2wt4nku.js";
|
|
5
|
+
import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health, t as init_providers } from "./providers-4-xOzHQu.js";
|
|
6
6
|
import { Result, Schema } from "effect";
|
|
7
7
|
import { dirname } from "path";
|
|
8
8
|
import { randomUUID } from "crypto";
|
|
@@ -98,8 +98,8 @@ async function enqueueStatusRollupEvent(job) {
|
|
|
98
98
|
await configuredStatusRollupProcessor(job);
|
|
99
99
|
return;
|
|
100
100
|
}
|
|
101
|
-
const { initEventStore } = await import("./event-store-
|
|
102
|
-
const { synthesizeStatusRollup, commitStatusRollup } = await import("./rollup-
|
|
101
|
+
const { initEventStore } = await import("./event-store-DIk9wvnS.js");
|
|
102
|
+
const { synthesizeStatusRollup, commitStatusRollup } = await import("./rollup-DBNy1yFB.js");
|
|
103
103
|
await (await initEventStore()).appendAsync({
|
|
104
104
|
type: "memory.rollup_triggered",
|
|
105
105
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -295,7 +295,7 @@ async function clearPendingTurns(projectId, issueId, pendingTurns) {
|
|
|
295
295
|
return cleared;
|
|
296
296
|
}
|
|
297
297
|
async function emitStatusUpdatedEvent(event) {
|
|
298
|
-
const { initEventStore } = await import("./event-store-
|
|
298
|
+
const { initEventStore } = await import("./event-store-DIk9wvnS.js");
|
|
299
299
|
await (await initEventStore()).appendAsync({
|
|
300
300
|
type: "memory.status_updated",
|
|
301
301
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -446,4 +446,4 @@ var init_rollup = __esmMin((() => {
|
|
|
446
446
|
//#endregion
|
|
447
447
|
export { readCurrentStatus as a, init_pending as c, readArchivedStatuses as i, maybeTriggerStatusRollup as l, commitStatusRollup as n, readRecentObservations as o, init_rollup as r, synthesizeStatusRollup as s, buildStatusRollupPrompt as t, writePendingTurn as u };
|
|
448
448
|
|
|
449
|
-
//# sourceMappingURL=rollup-
|
|
449
|
+
//# sourceMappingURL=rollup-BJE-Vc7H.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as commitStatusRollup, r as init_rollup, s as synthesizeStatusRollup } from "./rollup-
|
|
1
|
+
import { n as commitStatusRollup, r as init_rollup, s as synthesizeStatusRollup } from "./rollup-BJE-Vc7H.js";
|
|
2
2
|
init_rollup();
|
|
3
3
|
export { commitStatusRollup, synthesizeStatusRollup };
|