@overdeck/desktop 0.47.0 → 0.48.0
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 +59 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-10Ur5Dne.js → acceptance-criteria-DmtLDbtt.js} +2 -2
- package/server/{activity-logger-CyteR4JO.js → activity-logger-Co5qljIj.js} +55 -4
- package/server/activity-logger-K7FYGF_z.js +3 -0
- package/server/{advancing-selfheal-BNwqxseD.js → advancing-selfheal-8AR68Asf.js} +6 -6
- package/server/{agent-gc-C3h9Or3a.js → agent-gc-BmYeT6eH.js} +5 -5
- package/server/agent-state-Dq3s84-P.js +3 -0
- package/server/{agent-state-service-C63p_ftq.js → agent-state-service-DK1Vay1E.js} +1 -1
- package/server/{agent-state-service-Ds6OeFvo.js → agent-state-service-rjnzpHDx.js} +6 -6
- package/server/agent-state-source-Ds968-j6.js +21 -0
- package/server/{agents-J5mEnekq.js → agents-Dls7tfJH.js} +5 -5
- package/server/agents-IPSa5kzn.js +3 -0
- package/server/{archive-planning-BwhxeP7C.js → archive-planning-Cq7cyinS.js} +51 -24
- package/server/archive-planning-MbkGCBIY.js +2 -0
- package/server/{artifact-index-jobs-D1q_vR3V.js → artifact-index-jobs-Dj_8kpTd.js} +3 -3
- package/server/{assemble-Bgwqv-Ro.js → assemble-BTCmbcfH.js} +20 -13
- package/server/{auto-spawn-consent-CQ9Bi9q6.js → auto-spawn-consent-lXqRJ1Dr.js} +304 -121
- package/server/{backlog-auto-trigger-n1lzPgN4.js → backlog-auto-trigger-Dn-amzt6.js} +3 -3
- package/server/{behavior-td6-xhQk.js → behavior-DIMQMRzs.js} +2 -2
- package/server/{boot-reconciled-stop-events-C7gGe3oB.js → boot-reconciled-stop-events-D6SeUTIr.js} +1 -1
- package/server/{bridge-pool-patrol-CYH2OLb5.js → bridge-pool-patrol-BEjt-xF3.js} +2 -2
- package/server/{briefing-freshness-DRqZ8lAz.js → briefing-freshness-3PNmL_p3.js} +2 -2
- package/server/{build-info-7yiEpl6u.js → build-info-CJg813Hm.js} +3 -3
- package/server/{build-info-CpG__c63.js → build-info-CXyeFsXu.js} +1 -1
- package/server/{checkpoint-manager-CkKmB0wZ.js → checkpoint-manager-9t7G5c1V.js} +1 -1
- package/server/{checkpoint-manager-DBcyNR8w.js → checkpoint-manager-B2G38R3p.js} +3 -3
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-Wm963lm8.js → checkpoints-CuBgiXO-.js} +1 -1
- package/server/{checkpoints-D95apurL.js → checkpoints-VTZMd4Qm.js} +2 -2
- package/server/{claude-hooks-provision-Bjitl9aI.js → claude-hooks-provision-55SyQaPz.js} +2 -2
- package/server/{claude-hooks-provision-4RPxNkE8.js → claude-hooks-provision-CEUT-CZd.js} +1 -1
- package/server/{claude-permissions-CpbpvUQ2.js → claude-permissions-Cn0dIu2i.js} +2 -2
- package/server/{claude-settings-overlay-BzkHYDwR.js → claude-settings-overlay-B19hdzSA.js} +1 -1
- package/server/{claude-settings-overlay-_H9Yrzab.js → claude-settings-overlay-Yg_ANh81.js} +2 -2
- package/server/{cli-Cte9ZFGn.js → cli-C9S84iTy.js} +79 -22
- package/server/cli-M1cwZ__d.js +3 -0
- package/server/{cliproxy-C5fMJ7rY.js → cliproxy-CJq3KXU6.js} +2 -2
- package/server/{cliproxy-DaAbWMjC.js → cliproxy-DgEZlr7Y.js} +1 -1
- package/server/{close-issue-BPh1ARCF.js → close-issue-DPxRddGR.js} +5 -5
- package/server/{closed-issue-reaper-DoOZqGFK.js → closed-issue-reaper-C5Zn4GRS.js} +13 -13
- package/server/{closed-issue-reaper-DHRfRMrp.js → closed-issue-reaper-D-2B48Ri.js} +1 -1
- package/server/{codex-o8FJwzmy.js → codex-B3n_rkwn.js} +1 -1
- package/server/{codex-BzGDW_d3.js → codex-CjkD1PJu.js} +6 -6
- package/server/{codex-parser-Dt-ycU8L.js → codex-parser-DpB1Il-P.js} +2 -2
- package/server/{compaction-continuation-CvXpbZ4w.js → compaction-continuation-DZD9ukSE.js} +3 -3
- package/server/{config-CL3Gyvja.js → config-C5saf4Ja.js} +1 -1
- package/server/{config-BvLe652W.js → config-DnLJATZk.js} +2 -2
- package/server/{config-Bi3u1VK7.js → config-DvM8jtQK.js} +2 -2
- package/server/{config-yaml-CxdwhAIA.js → config-yaml-BSCqwmX0.js} +11299 -10972
- package/server/{conflict-gate-CX80JYYS.js → conflict-gate-DXa_L28t.js} +1 -1
- package/server/{conflict-gate-E4nt7ZeS.js → conflict-gate-WfVqgalf.js} +4 -4
- package/server/{context-layers-DAG83UZt.js → context-layers-D7UqH9Ab.js} +2 -2
- package/server/{context-layers-C_IIysnm.js → context-layers-Dpz3Vd6d.js} +3 -3
- package/server/{control-settings-CiqGxXnc.js → control-settings-DVf6pKyv.js} +4 -4
- package/server/{conversation-compaction-BE3CNtHF.js → conversation-compaction-5XuH6OBn.js} +1 -1
- package/server/{conversation-compaction-D6-yLtqt.js → conversation-compaction-COrbnX1J.js} +8 -8
- package/server/{conversation-service-DBxoYMDl.js → conversation-service-BufdtnZF.js} +169 -10
- package/server/{conversation-service-D_TS2b1r.js → conversation-service-DnUyIiLb.js} +1 -1
- package/server/{conversations-D0UEdLtk.js → conversations-B4rxz-Wl.js} +17 -10
- package/server/{conversations-BKDVpB-3.js → conversations-D1bwxQMy.js} +1 -1
- package/server/{cost-DpgYmYqR.js → cost-CpFDrJUS.js} +46 -2
- package/server/{cost-DS1s0DbG.js → cost-KLuwKCW9.js} +3 -3
- package/server/{cost-sync-tOCCGnEt.js → cost-sync-cesi9dp8.js} +3 -3
- package/server/{dag-BtkgLeqY.js → dag-BYiFMqpU.js} +2 -2
- package/server/{dangerous-git-ops-CFLykHWt.js → dangerous-git-ops-BKvd3-Hk.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-BIblC-WX.js → deacon-BbsWw8a6.js} +3 -3
- package/server/{deacon-pLRLbPvR.js → deacon-HdEh0Esp.js} +863 -214
- package/server/deacon-event-client-C93rvOT7.js +237 -0
- package/server/deacon-event-client-Ck5Ei7Mn.js +3 -0
- package/server/{deacon-nudge-log-B08gF0mh.js → deacon-nudge-log-BND_97Wo.js} +4 -3
- package/server/{deacon-pending-lifecycle-B-Io84AP.js → deacon-pending-lifecycle-CD3YsiQK.js} +3 -3
- package/server/deacon-swarm-DgWADWd_.js +2 -0
- package/server/{deacon-swarm-v5PMun-m.js → deacon-swarm-rqrl4TMs.js} +39 -18
- package/server/deacon.js +12 -210
- package/server/{dead-end-trip-D8A3msX9.js → dead-end-trip-DSF23CLX.js} +4 -3
- package/server/dead-end-trip-zKlS4v6f.js +2 -0
- package/server/delivery-CsbQdZkS.js +3 -0
- package/server/{deploy-patrol-sYgOxLeb.js → deploy-patrol-kARAkji4.js} +17 -21
- package/server/{deploy-queue-VfohaPN_.js → deploy-queue-Bj0HJT1i.js} +2 -2
- package/server/{deploy-queue-gHJBycaF.js → deploy-queue-rjTUy1RM.js} +1 -1
- package/server/{deploy-window-D4DQb8VP.js → deploy-window-B2IM-9G5.js} +10 -44
- package/server/{deploy-window-CFRZ0-kt.js → deploy-window-BNFWnA8D.js} +1 -1
- package/server/{dev-supervisor-DiOBDM1c.js → dev-supervisor-B1mZYXz4.js} +2 -2
- package/server/{devcontainer-renderer-BUOIlfgD.js → devcontainer-renderer-B-o68Z5B.js} +3 -3
- package/server/{dist-C3A8B8wM.js → dist-3W--cGMa.js} +1 -1
- package/server/dist-BR0QtwmS.js +3 -0
- package/server/{dist-src-C0adpegX.js → dist-src-C-Vk2jNk.js} +1 -1
- package/server/{docker-Y3PElJb0.js → docker-DH3jUYg1.js} +1 -1
- package/server/{docker-BJzlkqYB.js → docker-meuLKLzV.js} +27 -20
- package/server/{dod-DlNtcH6n.js → dod-D7-9dCOD.js} +1 -1
- package/server/{driver-CKVGi51s.js → driver-CmsY2RLl.js} +1 -1
- package/server/{durable-review-pipeline-DP6bIcOY.js → durable-review-pipeline-CStTgOAf.js} +1 -1
- package/server/{durable-review-pipeline-Cibps-Rg.js → durable-review-pipeline-Chq0lzjL.js} +1 -1
- package/server/{ensure-devcontainer-DMAbWqtQ.js → ensure-devcontainer-BE3llBWP.js} +1 -1
- package/server/{ensure-devcontainer-BAofzBPv.js → ensure-devcontainer-BXrY7C2Z.js} +4 -4
- package/server/{esm-shims-BeObUkaw.js → esm-shims-Bzy4ZzNU.js} +1 -1
- package/server/event-store-COd2tOx8.js +3 -0
- package/server/{event-store-CrHcVC5_.js → event-store-D_AR-Y78.js} +184 -11
- package/server/{events-CF8QDbuV.js → events-CCkFWa7X.js} +1 -1
- package/server/{events-BNrvchBg.js → events-zjDQozet.js} +3 -3
- package/server/{factory-Cmm9Hsho.js → factory-DhavwKVc.js} +5 -5
- package/server/{feature-registry-population-B6HpNWRy.js → feature-registry-population-DWGBKyWd.js} +4 -4
- package/server/{feature-registry-storage-DJEFx1Pf.js → feature-registry-storage-C5DkXmCM.js} +3 -3
- package/server/{features-D5km80UI.js → features-CC47YcCX.js} +2 -2
- package/server/{feedback-target-BJ5ZADsu.js → feedback-target-D9Tex35_.js} +1 -1
- package/server/{feedback-target-DSxEL6lP.js → feedback-target-DoRCR3L-.js} +18 -7
- package/server/{feedback-writer-CoB9Z6aU.js → feedback-writer-CTSuA6lw.js} +1 -1
- package/server/{feedback-writer-C27Hak8a.js → feedback-writer-DdsBdtNL.js} +5 -5
- package/server/{flywheel-DZZdtiOL.js → flywheel-DHWHzaYK.js} +1 -1
- package/server/{flywheel-f662Q-y2.js → flywheel-DJQa9az8.js} +14 -14
- package/server/{flywheel-BHx8XuMr.js → flywheel-TacAI9MA.js} +21 -17
- package/server/{flywheel-merge-order-Dil0LmdN.js → flywheel-merge-order-D2foPh88.js} +1 -1
- package/server/{flywheel-merge-order-D_xLMbJU.js → flywheel-merge-order-DRtex2Dt.js} +7 -7
- package/server/forge-CdlCG9aS.js +3 -0
- package/server/{forge-BaKGCya6.js → forge-c8LeC-tw.js} +2 -2
- package/server/{from-B3tZbB55.js → from-BogSwvr2.js} +1 -1
- package/server/{fs-lock-Bre3sGoz.js → fs-lock-D_GeJtXl.js} +3 -3
- package/server/{fts-operations-B9jG8wa3.js → fts-operations-DP9R-8Q3.js} +3 -3
- package/server/{git-utils-Xg4PFN45.js → git-utils-C31x1lpE.js} +1 -1
- package/server/{git-utils-CsvYfJU3.js → git-utils-xQ74FoSn.js} +5 -4
- package/server/{github-app-Bmg4R9mv.js → github-app-CpQSDlv8.js} +1 -1
- package/server/{github-app-CmNk0zLU.js → github-app-D2QuvZ3j.js} +3 -3
- package/server/{github-client-qazkPrg0.js → github-client-D9YvJX5D.js} +3 -3
- package/server/{github-client-B6KM9_wA.js → github-client-Tpi3PmKX.js} +1 -1
- package/server/{github-pr-lookup-DAcVeRLK.js → github-pr-lookup-DvBMv-IW.js} +2 -2
- package/server/{harness-binary-BSpiXaLw.js → harness-binary-BHxWf_sX.js} +7 -6
- package/server/{harness-resolve-BAJu5MX8.js → harness-resolve-bj9WMABA.js} +4 -4
- package/server/{health-events-BwX32k8d.js → health-events-bCDPn59Z.js} +2 -2
- package/server/{health-events-2Z6Wa9SM.js → health-events-qo7Ss34U.js} +1 -1
- package/server/{hooks-DbtbimEf.js → hooks-Dyxtg5fk.js} +2 -2
- package/server/{hooks-D1g1jKLI.js → hooks-X2XHBB2b.js} +1 -1
- package/server/{hume-DXNiu6nQ.js → hume-DrZEGpqc.js} +2 -2
- package/server/hume-YPsy4UA8.js +3 -0
- package/server/{idle-stack-reaper-Cy-dQzW4.js → idle-stack-reaper-CJ1ygW0p.js} +37 -7
- package/server/{idle-stack-reaper-CRA1e0jr.js → idle-stack-reaper-uJGOb-vu.js} +1 -1
- package/server/{in-flight-guard-D-sSkADM.js → in-flight-guard-CG2Eo-rr.js} +1 -1
- package/server/{infra-BDQDRopn.js → infra-CTrmVqc_.js} +111 -6
- package/server/{injection-Bl8d_jHZ.js → injection-BisQ0lpX.js} +1 -1
- package/server/{injection-6AGnXxlj.js → injection-C9sxqbc2.js} +73 -193
- package/server/{inspect-agent-nXdIptyh.js → inspect-agent-BoSO51YC.js} +12 -12
- package/server/inspect-agent-BykeOH4a.js +2 -0
- package/server/{internal-token-DzK385vD.js → internal-token-AvXePaQT.js} +2 -2
- package/server/{internal-token-Ias7N8Kg.js → internal-token-Djkj-yqK.js} +1 -1
- package/server/{io-B00PBNku.js → io-mxOWMZ7I.js} +6 -6
- package/server/{issue-closed-BehTG1be.js → issue-closed-Bj_bCv_0.js} +7 -7
- package/server/{issue-lifecycle-BqSuQvbn.js → issue-lifecycle-A5YIpDZE.js} +1 -1
- package/server/{issue-lifecycle-Birk-ifu.js → issue-lifecycle-BXUqaHzF.js} +32 -28
- package/server/{issue-service-singleton-C6ZduvuY.js → issue-service-singleton-BPNEXczv.js} +11 -11
- package/server/{issue-service-singleton-B2wXiIlw.js → issue-service-singleton-CcaHjKPR.js} +1 -1
- package/server/{issues-DQ5-LatB.js → issues-AX-YBeAQ.js} +2 -2
- package/server/{jsonl-parser-BDpnGFCl.js → jsonl-parser-CgYWQ20q.js} +7 -3
- package/server/kimi-code-BYbme0aV.js +579 -0
- package/server/kimi-code-D_Ppt82c.js +3 -0
- package/server/kimi-parser-B-JBg3Pv.js +147 -0
- package/server/{label-cleanup-Dwnky8FG.js → label-cleanup-sXUlgdM0.js} +3 -3
- package/server/{lifecycle-B4Xdb4cY.js → lifecycle-D2X3al0D.js} +2 -2
- package/server/{lifecycle-B3s4sM1G.js → lifecycle-DjlljAZ1.js} +6 -6
- package/server/{lifecycle-io-CzTHEooc.js → lifecycle-io-C5nVk55o.js} +1 -1
- package/server/{lifecycle-io-DCo6s6ks.js → lifecycle-io-NPm1YtIG.js} +5 -5
- package/server/{linear-client-CnbtHiic.js → linear-client--luYwCZg.js} +1 -1
- package/server/{linear-client-9uq7fhiV.js → linear-client-B8pLegW1.js} +3 -3
- package/server/{linear-mcp-auth-BxUOzswy.js → linear-mcp-auth-BQVWV0I3.js} +6 -6
- package/server/{linear-mcp-auth-D46fBCLf.js → linear-mcp-auth-Dx81Zl4G.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-DiW9RdSB.js → merge-Bx5Bh9pi.js} +3 -3
- package/server/{merge-sr8Nrnmi.js → merge-Dqmh_zja.js} +1 -1
- package/server/{merge-agent-BLUgRsz3.js → merge-agent-DP9AUY29.js} +33 -33
- package/server/{merge-agent-DQTXZk8z.js → merge-agent-DWd0KfiS.js} +1 -1
- package/server/{merge-batch-Cp_j9BGk.js → merge-batch-BdmvTEAC.js} +1 -1
- package/server/{merge-completeness-BLbB5-6n.js → merge-completeness-BfRwFjRx.js} +1 -1
- package/server/{merge-completeness-B46KqhtY.js → merge-completeness-C1FevcDT.js} +4 -4
- package/server/merge-ops-B98tKc1e.js +2 -0
- package/server/merge-rebase-BLykMwPO.js +2 -0
- package/server/{merge-rebase-DIkBjgwq.js → merge-rebase-BX1xKsrE.js} +2 -2
- package/server/{merge-set-CBgHfwM0.js → merge-set-DsLjjLEV.js} +4 -4
- package/server/{merge-set-DeUxFsC3.js → merge-set-H6epHOsw.js} +1 -1
- package/server/{merge-sync-kr4vqyjM.js → merge-sync-BEdfsQV4.js} +2 -2
- package/server/{merge-sync-CpGmk6Ch.js → merge-sync-BebcWWGA.js} +1 -1
- package/server/{merge-train-Dmrcus12.js → merge-train-D1I0lNOT.js} +4 -4
- package/server/{merge-train-deps-D_uGX91G.js → merge-train-deps-D_-C0Pk2.js} +4 -4
- package/server/{merge-verification-NvaAd8CZ.js → merge-verification-DN1Ov9bU.js} +6 -6
- package/server/{merged-docker-cleanup-worker-Y1R06TEl.js → merged-docker-cleanup-worker-CfXSr2pA.js} +4 -4
- package/server/{merged-docker-cleanup-worker-DH_hrGPI.js → merged-docker-cleanup-worker-ybsPyHjB.js} +1 -1
- package/server/{multipart-parser-R-oC8dQg.js → multipart-parser-CL5QG8iv.js} +2 -2
- package/server/{no-resume-mode-BgD0JUmM.js → no-resume-mode-DUR7Hi98.js} +1 -1
- package/server/node_modules/.package-lock.json +7 -7
- package/server/node_modules/brace-expansion/README.md +23 -1
- package/server/node_modules/brace-expansion/index.js +206 -85
- package/server/node_modules/brace-expansion/package.json +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs +34 -28
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.js +34 -28
- package/server/node_modules/msgpackr/dist/index.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/node.cjs +36 -29
- package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/test.js +63 -32
- package/server/node_modules/msgpackr/dist/test.js.map +1 -1
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +34 -28
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/package.json +1 -1
- package/server/node_modules/msgpackr/unpack.js +34 -28
- package/server/{orphan-proposed-reconciler-DcgTPPFY.js → orphan-proposed-reconciler-CEW1maPl.js} +1 -1
- package/server/{orphan-proposed-reconciler-B6vJHxtX.js → orphan-proposed-reconciler-DfqHZftT.js} +23 -22
- package/server/package-lock.json +8 -8
- package/server/package.json +1 -1
- package/server/{pan-dir-DMzF5wne.js → pan-dir-DhgKfO86.js} +21 -6
- package/server/{paths-sJBSb7Ul.js → paths-BUuhi6jM.js} +17 -17
- package/server/{pending-lifecycle-claim-DilzGfgk.js → pending-lifecycle-claim-DJlA1rTR.js} +2 -2
- package/server/{persistent-logger-H_VjuOu7.js → persistent-logger-s8cbpFNV.js} +2 -2
- package/server/{pickup-DWhqzliO.js → pickup-2AxtB3dW.js} +1 -1
- package/server/{pipeline-membership-C88VBnhJ.js → pipeline-membership-2_okL5bm.js} +1 -1
- package/server/{pipeline-membership-D9SBvItj.js → pipeline-membership-Dqv6_0ig.js} +1 -1
- package/server/{pipeline-membership-gather-4eR-7Tqy.js → pipeline-membership-gather-4F1-tXKI.js} +1 -1
- package/server/{pipeline-membership-gather-CeVGnNJ2.js → pipeline-membership-gather-CtJ_7aGf.js} +149 -17
- package/server/{pipeline-notifier-DT6xLFao.js → pipeline-notifier-CO9rxJgB.js} +1 -1
- package/server/{pipeline-notifier-D0ALV6Nw.js → pipeline-notifier-DDfVBJhJ.js} +2 -2
- package/server/{post-merge-lifecycle-worker-8HIeS_J6.js → post-merge-lifecycle-worker-DmSOkeNp.js} +3 -3
- package/server/{project-pipelines-9SKt2bEc.js → project-pipelines-72WE8GVK.js} +2 -2
- package/server/{project-repos-B5pIphKg.js → project-repos-BAqDwtvi.js} +16 -11
- package/server/project-repos-Df90Zw7Y.js +3 -0
- package/server/projects-WqMWCdpa.js +3 -0
- package/server/{prompts-CgzMBvQF.js → prompts-XkL10m8M.js} +2 -2
- package/server/{providers-BJQSnAAp.js → providers-ClGPGkQ8.js} +15 -12
- package/server/providers-DFUOed8u.js +3 -0
- package/server/public/assets/{chunk-BO2N2NFS-D_pGACYN.js → chunk-BO2N2NFS-CeQUdPxr.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-BO6fe3hH.js → diagram-OG6HWLK6-B7rgk4yT.js} +1 -1
- package/server/public/assets/{dist-5zingMiA.js → dist-2RPazfXY.js} +3 -3
- package/server/public/assets/{dist-CVxhbI2E.js → dist-B9NInrVZ.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-Bgj4A7kp.js → ganttDiagram-6RSMTGT7-Bxp0gV14.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-DNPK7_cm.js → highlighted-body-OFNGDK62-CzoRTVlC.js} +1 -1
- package/server/public/assets/index-Cml-kHo6.css +1 -0
- package/server/public/assets/{index-DEpY-D1O.js → index-CvN8cEgs.js} +216 -215
- package/server/public/assets/{linear-BB0jQT16.js → linear-CFEEl3ND.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-CpV7nCBM.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-DeGIzzpZ.js → pieDiagram-4H26LBE5-BeR8R0cr.js} +1 -1
- package/server/public/assets/{prod-XBLvikex.js → prod-CYjzjCrn.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-BV9SLeWz.js → quadrantDiagram-W4KKPZXB-BpcTkFuW.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-Dwja0gj8.js → sankeyDiagram-5OEKKPKP-Bx2ETEV5.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-DCB4qvfw.js → xychartDiagram-2RQKCTM6-BKgEAFaj.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-7BgLDsIo.js → pull-requests-B-KrUph5.js} +3 -3
- package/server/{pull-requests-Dq0y6IxE.js → pull-requests-DK5k92B4.js} +1 -1
- package/server/{queries-C-MUZaIy.js → queries-DVpl1vsU.js} +1212 -193
- package/server/{rally-CPysR4T_.js → rally-DbE561hD.js} +3 -3
- package/server/rally-O_st_X7n.js +3 -0
- package/server/{rally-api-8Ptlp2os.js → rally-api-CZLeEd2C.js} +2 -2
- package/server/{rally-api-CgosKdKL.js → rally-api-DaHtn5QN.js} +1 -1
- package/server/{rally-client-CCX0hADj.js → rally-client-C-MAl8ur.js} +1 -1
- package/server/{rally-client-iYMHWQD7.js → rally-client-Ch3zRsBX.js} +5 -5
- package/server/{reap-terminal-sessions-Qf-9LVQc.js → reap-terminal-sessions-C1n0ALRb.js} +2 -2
- package/server/{reap-terminal-sessions-4Xg9NGA8.js → reap-terminal-sessions-DegFS2p1.js} +2 -2
- package/server/{rebuild-stack-CMdgaylx.js → rebuild-stack-C9Li44A3.js} +20 -10
- package/server/{rebuild-stack-DqcOVmJO.js → rebuild-stack-qC0jCNm6.js} +2 -2
- package/server/{reconstruct-cache-CMZJ_Vjq.js → reconstruct-cache-BHyiAg02.js} +7 -7
- package/server/record-aVzu-LGm.js +3 -0
- package/server/record-update-CZh46a2f.js +617 -0
- package/server/{record-update-DhI7eySG.js → record-update-DtdJK2Iw.js} +1 -1
- package/server/recovery-trip-CSNWSLDn.js +77 -0
- package/server/recovery-trip-_16hFKv4.js +3 -0
- package/server/{release-engine-B2X9AfFC.js → release-engine-Be5MX5GP.js} +5 -5
- package/server/{release-set-G4XKyQ8K.js → release-set-DJv_O6PS.js} +3 -3
- package/server/{remote-BXarMvqf.js → remote-BMM3uH2J.js} +3 -3
- package/server/{remote-CUhyqjXk.js → remote-C0xVTHA5.js} +3 -3
- package/server/{remote-agents-CLZB3Coc.js → remote-agents-BIIoc5pD.js} +1 -1
- package/server/{remote-agents-Bba-MgSA.js → remote-agents-EUiZ26bj.js} +7 -7
- package/server/{remote-completion-CwAp79EC.js → remote-completion-BS4tJUn8.js} +13 -13
- package/server/resolver-BvHd6RE4.js +163 -0
- package/server/resume-9thEqAQR.js +3 -0
- package/server/{review-agent--pOptAEV.js → review-agent-BHGaBoBu.js} +29 -29
- package/server/{review-agent-BTCNkq2h.js → review-agent-CD3RQ-tc.js} +1 -1
- package/server/{review-artifacts-BNmw8dWE.js → review-artifacts-DyhajWso.js} +6 -6
- package/server/{review-context-DFxYOOJW.js → review-context-B-dlsPnx.js} +9 -9
- package/server/{review-convoy-liveness-BgU_1jJf.js → review-convoy-liveness-D7M-s_nS.js} +2 -2
- package/server/{review-status-Dma9SFaN.js → review-status-B6wYcOtP.js} +1 -1
- package/server/{review-status-CGvlA4o_.js → review-status-CKLk5aZ-.js} +308 -58
- package/server/{review-status-emit-DURrmGYX.js → review-status-emit-CJ7UmEVU.js} +3 -3
- package/server/{review-status-enrichment-8NiNXi5W.js → review-status-enrichment-DJRgGX7-.js} +3 -3
- package/server/review-status-limits-4EJDCGHO.js +7 -0
- package/server/{review-status-source-DIk1JSow.js → review-status-source-7nU3Z2wL.js} +1 -1
- package/server/{review-status-source-BLx_1siH.js → review-status-source-BsDYGfyv.js} +1 -1
- package/server/{review-status-sync-muT-EBp2.js → review-status-sync-BLssMTEW.js} +1 -1
- package/server/{review-status-sync-0GxOqeqF.js → review-status-sync-BxBeHRde.js} +35 -11
- package/server/{review-verdict-feedback-xJNdqBnX.js → review-verdict-feedback-5jWuzgpc.js} +90 -16
- package/server/{review-verdict-feedback-HwF6ODFy.js → review-verdict-feedback-HRY9P4bN.js} +1 -1
- package/server/{rollup-BQaol5TX.js → rollup-BGIrCEkU.js} +79 -44
- package/server/rollup-CZB4UL9q.js +3 -0
- package/server/{scanner-C-D2cFdX.js → scanner-DydjXPrz.js} +16 -9
- package/server/search-DdtIjAiu.js +395 -0
- package/server/{sequence-io-Bmf1EZM5.js → sequence-io-Fw-cLyDs.js} +4 -4
- package/server/{sequencer-agent-CigMyKh2.js → sequencer-agent-BcpGMt5x.js} +15 -10
- package/server/server.js +1258 -438
- package/server/{service-CD0DvFvD.js → service-BFFkGsG4.js} +58 -58
- package/server/{session-fork-B6cQ5eya.js → session-fork-D0V-3e5P.js} +2 -2
- package/server/{session-history-3ON_IJjm.js → session-history-Bta5l9jY.js} +5 -5
- package/server/{settings-PilbFZAM.js → settings-Ce8B1daF.js} +2 -2
- package/server/{settings-VN0qOh4U.js → settings-E3FnEIUx.js} +3 -3
- package/server/settings-eOOJpxi_.js +2 -0
- package/server/{shadow-engineering-DXvx77oE.js → shadow-engineering-Mt9nJO4i.js} +3 -3
- package/server/{shadow-state-CZBp7pwq.js → shadow-state-Bzj_AZCV.js} +1 -1
- package/server/{shadow-state-BBk_zacw.js → shadow-state-DrkhoVSx.js} +2 -2
- package/server/{shadow-utils-DdZ05AJS.js → shadow-utils-H1GfqP06.js} +2 -2
- package/server/{ship-log-7kJfjUX2.js → ship-log-CFUIo4PR.js} +1 -1
- package/server/{smart-compaction-8fA5k5XN.js → smart-compaction-DSTq-Wua.js} +1 -1
- package/server/{smart-compaction-ByhL9cRS.js → smart-compaction-Hzp3KCJX.js} +7 -7
- package/server/{spawn-planning-session-vLUJoFjy.js → spawn-planning-session-C0uSA2SL.js} +2 -2
- package/server/{spawn-planning-session-pcF-YeFE.js → spawn-planning-session-DN4son31.js} +23 -21
- package/server/{specialist-completion-B07XjWD2.js → specialist-completion-Cf6tpIh1.js} +1 -1
- package/server/{specialist-context-DJ-zFyL3.js → specialist-context-DEUEkjIQ.js} +5 -5
- package/server/{specialist-handoff-logger-aKSxbIgD.js → specialist-handoff-logger-D_LmQDj3.js} +2 -2
- package/server/{specialist-logs-Dae-n52_.js → specialist-logs-7Ynue0R7.js} +3 -3
- package/server/{specialists-KR3pKulN.js → specialists-CQwBEGlD.js} +1 -1
- package/server/{specialists-6PWdtWcg.js → specialists-DAjPgYs_.js} +504 -238
- package/server/{specialists-DUiExaxb.js → specialists-Hr6iW9fU.js} +18 -18
- package/server/{specialists-Bz-wFT7R.js → specialists-MOoeB4A8.js} +1 -1
- package/server/specs-Dl88cbKY.js +3 -0
- package/server/{src-B948bGVR.js → src-BYdwL_n-.js} +668 -64
- package/server/{src-vHy2-oCv.js → src-DQnkPN2i.js} +3 -3
- package/server/{src-rac0Mepv.js → src-DhfDV0o4.js} +6 -6
- package/server/{stack-health-DqLTiEu4.js → stack-health-D_iKwNRg.js} +107 -16
- package/server/stack-health-deVSdDwn.js +3 -0
- package/server/{stale-task-claims-Cab_Fo_Z.js → stale-task-claims-BYJGqhLI.js} +5 -5
- package/server/{staleness-CGTZyp6V.js → staleness-CopBDKnA.js} +1 -1
- package/server/{staleness-C-a5rBxF.js → staleness-D8WeMUHd.js} +1 -1
- package/server/{state-home-722Dkx92.js → state-home-DjN8qduI.js} +24 -3
- package/server/{state-mapping-CybR81Uf.js → state-mapping-DlM7OYRW.js} +1 -1
- package/server/{state-migrate-2u8wIpoL.js → state-migrate-a2p1gtD7.js} +4 -4
- package/server/state-mirror-Cv_XgvT5.js +121 -0
- package/server/{stuck-remediation-r1TJu68G.js → stuck-remediation-CXJX_kki.js} +1 -1
- package/server/{stuck-remediation-CC6q3eqQ.js → stuck-remediation-CbCRSz1v.js} +31 -732
- package/server/{substrate-bug-weights-service-CzIyyWFT.js → substrate-bug-weights-service-DxpopNd9.js} +3 -3
- package/server/{summary-fork-BqgmgPDt.js → summary-fork-B61fjRJn.js} +2 -2
- package/server/{summary-fork-Df2WFijM.js → summary-fork-B9pszUJN.js} +91 -10
- package/server/supervisor/{injection-budget-Cg_KIb3o.js → injection-budget-Ar7hgyJq.js} +1 -1
- package/server/supervisor/pty-supervisor.js +12 -3
- package/server/supervisor/{pty-token-BbjwEUUM.js → pty-token-CXCFU0Z8.js} +1 -1
- package/server/{supervisor-BxqSpjcN.js → supervisor-BvnxbuuF.js} +6 -4
- package/server/supervisor-C69kpqvd.js +2 -0
- package/server/{swarm-readiness-DfFxa9-n.js → swarm-readiness-vTw1kqGa.js} +3 -3
- package/server/{system-prerequisites-ICLSkhhZ.js → system-prerequisites-LLzTEqsK.js} +3 -3
- package/server/{teardown-workspace-DRdi_CPa.js → teardown-workspace-CqKKVJr1.js} +15 -15
- package/server/{test-agent-queue-A_-p-i0I.js → test-agent-queue-CWMq7oyG.js} +8 -7
- package/server/{test-verdict-BHgTAwIG.js → test-verdict-NdtgRBuA.js} +1 -1
- package/server/{test-verdict-C4i9aqEP.js → test-verdict-diIWE6hz.js} +15 -3
- package/server/{tldr-daemon-CvWXBhX1.js → tldr-daemon-B1Jhrtc8.js} +1 -1
- package/server/{tldr-daemon-wvsU6bKv.js → tldr-daemon-Bpls1CJB.js} +2 -2
- package/server/{tmux-CfDHob9M.js → tmux-CImZaX4q.js} +10 -16
- package/server/tmux-Cjpx8L8u.js +4 -0
- package/server/{token-DrxwytsZ.js → token-Bgpjo3tE.js} +2 -2
- package/server/token-util-BsjFll-k.js +3 -0
- package/server/{token-util-B48BlCba.js → token-util-BymbpkJp.js} +1 -1
- package/server/{tracker-config-BcPMElRB.js → tracker-config-4DaKVTfc.js} +2 -2
- package/server/{tracker-utils-CJ6BHjcD.js → tracker-utils-BDeAXC-q.js} +2 -2
- package/server/{traefik-connect-DZ6nMYMj.js → traefik-connect-CC5FyxYj.js} +1 -1
- package/server/{tunnel-Bp-dRHZz.js → tunnel-CDWkeceJ.js} +1 -1
- package/server/{tunnel-DUbUPElU.js → tunnel-CPf5M-Pc.js} +3 -3
- package/server/{typed-errors-DyjseiB6.js → typed-errors-9K7Dq_Vn.js} +1 -1
- package/server/{typed-errors-CKeoDdU3.js → typed-errors-DrS5fb5z.js} +1 -1
- package/server/{types-Cm5ASJbq.js → types-DzlUKiuf.js} +4 -3
- package/server/{types-Di8wdakq.js → types-kI9ik8XO.js} +1 -1
- package/server/{uat-promote-verification-CoJuh7XO.js → uat-promote-verification-c_pxoxEc.js} +5 -5
- package/server/{uat-train-4Q0k06CQ.js → uat-train-CWGxBdJO.js} +0 -0
- package/server/{uat-train-Dewoatps.js → uat-train-CfCYd2ve.js} +1 -1
- package/server/{validate-B0C8p66t.js → validate-f3ItVCfm.js} +3 -3
- package/server/{validation-hVOwQk8T.js → validation-5G_wQtea.js} +1 -1
- package/server/{validation-B_kIRfNe.js → validation-7tSiCM82.js} +4 -4
- package/server/{verification-artifact-BxlxTiYK.js → verification-artifact-9h9dH8uX.js} +1 -1
- package/server/{verification-artifact-D70AtckY.js → verification-artifact-C_4WJnf6.js} +1 -1
- package/server/{verification-runner-Bc3cJvpC.js → verification-runner-BV5F6wrA.js} +1 -1
- package/server/{verification-runner-KZTz6u72.js → verification-runner-D58KmBhK.js} +18 -38
- package/server/{vtt-parser-CE_i3Bcw.js → vtt-parser-2iT9OHa9.js} +1 -1
- package/server/{work-agent-prompt-ByrPAzOy.js → work-agent-prompt-D03s4DD1.js} +9 -9
- package/server/{workflows-D0vP1WrK.js → workflows-BMBwLYPV.js} +281 -98
- package/server/workflows-BOmWGpIh.js +2 -0
- package/server/{workspace-DQkRPLlQ.js → workspace-BgflNCH0.js} +3 -3
- package/server/{workspace-COWvdibH.js → workspace-Cn9ywfSW.js} +1 -1
- package/server/{workspace-anchor-drift-pwz23TI1.js → workspace-anchor-drift-C8Fy3shi.js} +1 -1
- package/server/{workspace-anchor-drift-DXYIAHzr.js → workspace-anchor-drift-CMiNncwq.js} +5 -8
- package/server/{workspace-config-BdZM4PvZ.js → workspace-config-aUc2nIz6.js} +1 -1
- package/server/{workspace-manager-BPgTrG66.js → workspace-manager-Bem7ZBs9.js} +521 -292
- package/server/workspace-manager-C0CpNh3t.js +3 -0
- package/server/{workspace-metadata-CdjzAP8x.js → workspace-metadata-C5iSlPRo.js} +1 -1
- package/server/{workspace-metadata-DkO_iTLo.js → workspace-metadata-UKmTYmDQ.js} +2 -2
- package/server/{workspaces-CRBJikLp.js → workspaces-DqxgwDZ8.js} +143 -113
- package/sync-sources/hooks/notification-hook +12 -1
- package/sync-sources/hooks/pan-hook-lib.sh +226 -0
- package/sync-sources/hooks/session-start-hook +31 -4
- package/sync-sources/hooks/work-agent-stop-hook +23 -1
- package/sync-sources/skills/pan-memory/SKILL.md +19 -3
- package/sync-sources/skills/pan-projects/SKILL.md +9 -0
- package/sync-sources/skills/pan-restart/SKILL.md +26 -7
- package/sync-sources/skills/pan-workspace/SKILL.md +77 -0
- package/server/activity-logger-CMthG6Vd.js +0 -3
- package/server/agent-state-CYXJVG72.js +0 -3
- package/server/agents-ePFVoZbu.js +0 -3
- package/server/archive-planning-B2XplFzT.js +0 -2
- package/server/cli-CjOCSnfj.js +0 -3
- package/server/deacon-swarm-B1XkIvfr.js +0 -2
- package/server/delivery-BX9HR4wQ.js +0 -3
- package/server/dist-B3YPQa5A.js +0 -3
- package/server/event-store-5UKzh9Jf.js +0 -3
- package/server/forge-B5o319qI.js +0 -3
- package/server/fts-db-IVc4_M3f.js +0 -146
- package/server/hume-VUCNbTgn.js +0 -3
- package/server/inspect-agent-CUwVmr2h.js +0 -2
- package/server/merge-ops-1abz6O_P.js +0 -2
- package/server/merge-rebase-CJJVAJuz.js +0 -2
- package/server/node_modules/brace-expansion/.tap/coverage/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -757
- package/server/node_modules/brace-expansion/.tap/processinfo/8b906b8c-e21f-40b5-8c0d-214d8c2682c5.json +0 -719
- package/server/node_modules/brace-expansion/ADVISORY-CVE-2026-14257.md +0 -107
- package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts +0 -8
- package/server/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +0 -1
- package/server/node_modules/brace-expansion/dist/commonjs/index.js +0 -263
- package/server/node_modules/brace-expansion/dist/commonjs/index.js.map +0 -1
- package/server/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
- package/server/node_modules/brace-expansion/dist/esm/index.d.ts +0 -8
- package/server/node_modules/brace-expansion/dist/esm/index.d.ts.map +0 -1
- package/server/node_modules/brace-expansion/dist/esm/index.js +0 -259
- package/server/node_modules/brace-expansion/dist/esm/index.js.map +0 -1
- package/server/node_modules/brace-expansion/dist/esm/package.json +0 -3
- package/server/project-repos-DPjOdfPa.js +0 -3
- package/server/projects-_n3Zui6K.js +0 -3
- package/server/providers-BI1mOBQ4.js +0 -3
- package/server/public/assets/index-Ddkcz3WT.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +0 -1
- package/server/rally-D_VW4bJv.js +0 -3
- package/server/record-BTwWhtBb.js +0 -3
- package/server/record-update-DaOKS7Wb.js +0 -277
- package/server/recovery-trip-DDH-02ng.js +0 -44
- package/server/resume-mOREjlYu.js +0 -3
- package/server/rollup-BR4t_wck.js +0 -3
- package/server/settings-CVmWiJ-r.js +0 -2
- package/server/specs--enInima.js +0 -3
- package/server/stack-health-BikqHSjn.js +0 -3
- package/server/supervisor-B4anCCSm.js +0 -2
- package/server/tmux-Ctk6RV5l.js +0 -3
- package/server/token-util-D411CAq9.js +0 -3
- package/server/workflows-DtDX08ed.js +0 -2
- package/server/workspace-manager-C1F3XsnS.js +0 -3
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
5
|
-
import { i as updateIssueRecord, r as init_record_update } from "./record-update-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
2
|
+
import { Bt as resolveStateReadHomeSync, G as getIssueWorkspacePath, Q as readIssueRecordSync, Sn as resolveProjectFromIssueSync, X as readIssueRecord, Yt as findProjectByPathSync, _i as packageRoot, cn as init_projects, f as loadConfigSync, hi as init_paths, mi as getOverdeckHome, nn as getProjectSync, q as init_record, t as init_config_yaml, zt as init_state_read_home } from "./config-yaml-BSCqwmX0.js";
|
|
3
|
+
import { a as emitActivityEntrySync, c as init_activity_logger, o as emitActivityTtsSync } from "./activity-logger-Co5qljIj.js";
|
|
4
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CTrmVqc_.js";
|
|
5
|
+
import { i as updateIssueRecord, r as init_record_update } from "./record-update-CZh46a2f.js";
|
|
6
|
+
import { a as getWorkspaceForIssue, o as init_resolver } from "./resolver-BvHd6RE4.js";
|
|
7
|
+
import { t as init_review_status_limits } from "./review-status-limits-4EJDCGHO.js";
|
|
8
|
+
import { r as registerFeedbackAgentStateReader, t as init_agent_state_source } from "./agent-state-source-Ds968-j6.js";
|
|
9
|
+
import { d as init_cost_sync, i as getCostBreakdownByStageAndModelSync, o as getCostForIssueSync } from "./cost-sync-cesi9dp8.js";
|
|
10
|
+
import { r as notifyPipelineSync, t as init_pipeline_notifier } from "./pipeline-notifier-DDfVBJhJ.js";
|
|
11
|
+
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, t as clearWorkspaceStuck$1, u as upsertReviewStatusSync } from "./review-status-sync-BxBeHRde.js";
|
|
12
|
+
import { a as registerCanonicalReviewStatusResolver, n as init_review_status_source, o as registerReviewStatusMapReader } from "./review-status-source-7nU3Z2wL.js";
|
|
13
|
+
import { a as PAN_DIRNAME, f as WORKSPACE_RUNTIME_DIRNAME, m as init_types$3, r as PAN_CONTINUES_DIRNAME } from "./types-DzlUKiuf.js";
|
|
14
|
+
import { i as init_merge_set, r as getMergeSetSync } from "./merge-set-DsLjjLEV.js";
|
|
15
|
+
import { o as init_lifecycle, r as XBRIEF_FILENAME_SUFFIX, t as LEGACY_VBRIEF_FILENAME_SUFFIX } from "./lifecycle-D2X3al0D.js";
|
|
13
16
|
import { basename, dirname, join } from "node:path";
|
|
14
17
|
import { Data, Effect } from "effect";
|
|
15
18
|
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
16
|
-
import { dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, posix, relative as relative$1, sep as sep$1 } from "path";
|
|
19
|
+
import { dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, posix as posix$1, relative as relative$1, sep as sep$1 } from "path";
|
|
17
20
|
import { homedir } from "os";
|
|
18
21
|
import { hostname } from "node:os";
|
|
19
22
|
import { chmodSync as chmodSync$1, createReadStream as createReadStream$1, existsSync as existsSync$1, linkSync, mkdirSync as mkdirSync$1, promises as promises$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, renameSync as renameSync$1, rmSync as rmSync$1, statSync as statSync$1, writeFileSync as writeFileSync$1 } from "node:fs";
|
|
@@ -47,6 +50,7 @@ function overdeckRowToAgentState(row) {
|
|
|
47
50
|
id: row.id,
|
|
48
51
|
issueId: row.issue_id,
|
|
49
52
|
workspace: row.workspace,
|
|
53
|
+
workspaceId: row.workspace_id ?? void 0,
|
|
50
54
|
role: row.role,
|
|
51
55
|
model: row.model ?? "",
|
|
52
56
|
status: row.status,
|
|
@@ -104,6 +108,7 @@ function stateToOverdeckParamsForDb(state, updatedAt) {
|
|
|
104
108
|
state.role,
|
|
105
109
|
state.status,
|
|
106
110
|
state.workspace,
|
|
111
|
+
state.workspaceId ?? getWorkspaceForIssue(state.issueId)?.id ?? null,
|
|
107
112
|
state.sessionId ?? null,
|
|
108
113
|
state.harness ?? "",
|
|
109
114
|
state.model ?? "",
|
|
@@ -165,6 +170,8 @@ function saveOverdeckAgentStateSync(state) {
|
|
|
165
170
|
}
|
|
166
171
|
var AGENT_COLUMNS_FOR_DB, SELECT_AGENT_SQL;
|
|
167
172
|
var init_agent_state_sync = __esmMin((() => {
|
|
173
|
+
init_agent_state_source();
|
|
174
|
+
init_resolver();
|
|
168
175
|
init_infra();
|
|
169
176
|
AGENT_COLUMNS_FOR_DB = [
|
|
170
177
|
"id",
|
|
@@ -172,6 +179,7 @@ var init_agent_state_sync = __esmMin((() => {
|
|
|
172
179
|
"role",
|
|
173
180
|
"status",
|
|
174
181
|
"workspace",
|
|
182
|
+
"workspace_id",
|
|
175
183
|
"session_id",
|
|
176
184
|
"harness",
|
|
177
185
|
"model",
|
|
@@ -218,6 +226,165 @@ var init_agent_state_sync = __esmMin((() => {
|
|
|
218
226
|
"updated_at"
|
|
219
227
|
];
|
|
220
228
|
SELECT_AGENT_SQL = `SELECT ${AGENT_COLUMNS_FOR_DB.join(", ")} FROM agents`;
|
|
229
|
+
registerFeedbackAgentStateReader(listOverdeckAgentStatesSync);
|
|
230
|
+
}));
|
|
231
|
+
//#endregion
|
|
232
|
+
//#region ../../lib/pan-dir/pipeline-verdict-merge.ts
|
|
233
|
+
function fields(pipeline) {
|
|
234
|
+
return pipeline;
|
|
235
|
+
}
|
|
236
|
+
function isTerminal(gate, value) {
|
|
237
|
+
return typeof value === "string" && TERMINAL_GATE_VALUES[gate].includes(value);
|
|
238
|
+
}
|
|
239
|
+
/** Milliseconds for an ISO/epoch cycle marker, or undefined when it does not parse. */
|
|
240
|
+
function cycleMs(value) {
|
|
241
|
+
if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
|
|
242
|
+
if (typeof value !== "string") return void 0;
|
|
243
|
+
const parsed = Date.parse(value);
|
|
244
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Merge a freshly-read on-disk pipeline over a rebuilt one without losing a
|
|
248
|
+
* terminal verdict the rebuild carries.
|
|
249
|
+
*
|
|
250
|
+
* Order of rules:
|
|
251
|
+
* 1. Either side lacks `updatedAt` → the rebuilt block wins (PAN-2587 guard).
|
|
252
|
+
* 2. The rebuilt block is at least as new → it wins outright (PAN-2587).
|
|
253
|
+
* 3. Otherwise `fresh` is the base — newer-wins for every non-verdict field.
|
|
254
|
+
* 4. `fresh` belongs to a strictly newer review cycle → it wins wholesale;
|
|
255
|
+
* a new cycle legitimately resets the previous cycle's verdicts.
|
|
256
|
+
* 5. Any gate where `rebuilt` holds a terminal verdict and the base does not
|
|
257
|
+
* keeps the rebuilt status plus its companion fields.
|
|
258
|
+
*/
|
|
259
|
+
function mergePipelineVerdictAware(rebuilt, fresh) {
|
|
260
|
+
if (!fresh?.updatedAt || !rebuilt?.updatedAt) return rebuilt;
|
|
261
|
+
if (!(rebuilt.updatedAt < fresh.updatedAt)) return rebuilt;
|
|
262
|
+
const rebuiltCycle = cycleMs(rebuilt.reviewSpawnedAt);
|
|
263
|
+
const freshCycle = cycleMs(fresh.reviewSpawnedAt);
|
|
264
|
+
if (rebuiltCycle !== void 0 && freshCycle !== void 0 && freshCycle > rebuiltCycle) return fresh;
|
|
265
|
+
let merged;
|
|
266
|
+
for (const gate of GATE_NAMES) {
|
|
267
|
+
if (!isTerminal(gate, fields(rebuilt)[gate]) || isTerminal(gate, fields(fresh)[gate])) continue;
|
|
268
|
+
merged ??= structuredClone(fresh);
|
|
269
|
+
const target = fields(merged);
|
|
270
|
+
const source = fields(rebuilt);
|
|
271
|
+
for (const field of [gate, ...GATE_COMPANIONS[gate]]) if (source[field] === void 0) delete target[field];
|
|
272
|
+
else target[field] = source[field];
|
|
273
|
+
}
|
|
274
|
+
return merged ?? fresh;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Does this status update drive some gate to a terminal verdict it was not
|
|
278
|
+
* already at? That is the write an agent cannot cheaply retry — losing it
|
|
279
|
+
* strands the verdict in the agent's pane — so the journal writer waits out lock
|
|
280
|
+
* contention for it instead of dropping to the workspace fallback on the first
|
|
281
|
+
* collision (PAN-3092). Bookkeeping writes stay single-shot; retrying those
|
|
282
|
+
* would only add lock pressure.
|
|
283
|
+
*/
|
|
284
|
+
function carriesNewTerminalVerdict(previous, update) {
|
|
285
|
+
return GATE_NAMES.some((gate) => {
|
|
286
|
+
const next = update[gate];
|
|
287
|
+
return next !== void 0 && next !== previous[gate] && isTerminal(gate, next);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Has the journal settled every gate the workspace fallback holds a terminal
|
|
292
|
+
* verdict for? The drain asks this before deleting a fallback as superseded: a
|
|
293
|
+
* newer-but-verdict-free journal write must not consume a verdict that never
|
|
294
|
+
* landed anywhere (PAN-3092; MIN-902 lost its review verdict exactly this way).
|
|
295
|
+
*
|
|
296
|
+
* Coverage is per-gate VALUE equality, not merely "the journal reached some
|
|
297
|
+
* terminal value". `pipeline.updatedAt` is restamped by unrelated bookkeeping —
|
|
298
|
+
* the root defect this issue exists for — so a later whole-pipeline timestamp is
|
|
299
|
+
* no evidence that a journal's differing terminal value is the newer one; it may
|
|
300
|
+
* be an older verdict carried forward while the newer specialist result waits in
|
|
301
|
+
* the fallback. When the values differ the fallback is folded instead, and
|
|
302
|
+
* `mergePipelineVerdictAware` decides the winner from per-gate evidence.
|
|
303
|
+
*/
|
|
304
|
+
function pipelineCoversFallbackVerdicts(journal, fallback) {
|
|
305
|
+
const journalCycle = cycleMs(journal.reviewSpawnedAt);
|
|
306
|
+
const fallbackWrittenMs = cycleMs(fallback.updatedAt);
|
|
307
|
+
if (journalCycle !== void 0 && fallbackWrittenMs !== void 0 && journalCycle > fallbackWrittenMs) return true;
|
|
308
|
+
const journalFields = fields(journal);
|
|
309
|
+
const fallbackFields = fields(fallback.pipeline);
|
|
310
|
+
for (const gate of GATE_NAMES) {
|
|
311
|
+
const held = fallbackFields[gate];
|
|
312
|
+
if (!isTerminal(gate, held)) continue;
|
|
313
|
+
if (journalFields[gate] !== held) return false;
|
|
314
|
+
}
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Which gates hold DIFFERENT terminal verdicts in the journal and the fallback,
|
|
319
|
+
* within the same review cycle?
|
|
320
|
+
*
|
|
321
|
+
* This is the one case the drain cannot resolve: two written terminal verdicts
|
|
322
|
+
* for one gate, and no per-gate timestamp to order them by. The whole-pipeline
|
|
323
|
+
* `updatedAt` is restamped by unrelated bookkeeping, so "the journal's is newer"
|
|
324
|
+
* is exactly the inference PAN-3092 exists to stop making. Callers preserve the
|
|
325
|
+
* fallback and let the stranded-fallback sweep put the conflict in front of an
|
|
326
|
+
* operator rather than picking a winner.
|
|
327
|
+
*/
|
|
328
|
+
function findFallbackVerdictConflicts(journal, fallback) {
|
|
329
|
+
const journalCycle = cycleMs(journal.reviewSpawnedAt);
|
|
330
|
+
const fallbackWrittenMs = cycleMs(fallback.updatedAt);
|
|
331
|
+
if (journalCycle !== void 0 && fallbackWrittenMs !== void 0 && journalCycle > fallbackWrittenMs) return [];
|
|
332
|
+
const journalFields = fields(journal);
|
|
333
|
+
const fallbackFields = fields(fallback.pipeline);
|
|
334
|
+
const conflicts = [];
|
|
335
|
+
for (const gate of GATE_NAMES) {
|
|
336
|
+
const held = fallbackFields[gate];
|
|
337
|
+
if (!isTerminal(gate, held)) continue;
|
|
338
|
+
const settled = journalFields[gate];
|
|
339
|
+
if (!isTerminal(gate, settled) || settled === held) continue;
|
|
340
|
+
conflicts.push({
|
|
341
|
+
gate,
|
|
342
|
+
journalValue: String(settled),
|
|
343
|
+
fallbackValue: String(held)
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
return conflicts;
|
|
347
|
+
}
|
|
348
|
+
/** Boolean form of {@link findFallbackVerdictConflicts} for the drain's withhold decision. */
|
|
349
|
+
function pipelineConflictsWithFallbackVerdicts(journal, fallback) {
|
|
350
|
+
return findFallbackVerdictConflicts(journal, fallback).length > 0;
|
|
351
|
+
}
|
|
352
|
+
var TERMINAL_GATE_VALUES, GATE_COMPANIONS, GATE_NAMES;
|
|
353
|
+
var init_pipeline_verdict_merge = __esmMin((() => {
|
|
354
|
+
TERMINAL_GATE_VALUES = {
|
|
355
|
+
reviewStatus: [
|
|
356
|
+
"passed",
|
|
357
|
+
"blocked",
|
|
358
|
+
"failed",
|
|
359
|
+
"skipped"
|
|
360
|
+
],
|
|
361
|
+
testStatus: ["passed", "failed"],
|
|
362
|
+
uatStatus: ["passed", "failed"],
|
|
363
|
+
verificationStatus: [
|
|
364
|
+
"passed",
|
|
365
|
+
"failed",
|
|
366
|
+
"skipped"
|
|
367
|
+
],
|
|
368
|
+
inspectStatus: [
|
|
369
|
+
"passed",
|
|
370
|
+
"blocked",
|
|
371
|
+
"failed"
|
|
372
|
+
],
|
|
373
|
+
mergeStatus: ["merged", "failed"]
|
|
374
|
+
};
|
|
375
|
+
GATE_COMPANIONS = {
|
|
376
|
+
reviewStatus: [
|
|
377
|
+
"reviewNotes",
|
|
378
|
+
"reviewedAtCommit",
|
|
379
|
+
"reviewerVerdicts"
|
|
380
|
+
],
|
|
381
|
+
testStatus: ["testNotes"],
|
|
382
|
+
uatStatus: ["uatNotes"],
|
|
383
|
+
verificationStatus: ["verificationNotes", "lastVerifiedCommit"],
|
|
384
|
+
inspectStatus: ["inspectNotes"],
|
|
385
|
+
mergeStatus: ["mergeNotes", "mergeStep"]
|
|
386
|
+
};
|
|
387
|
+
GATE_NAMES = Object.keys(TERMINAL_GATE_VALUES);
|
|
221
388
|
}));
|
|
222
389
|
//#endregion
|
|
223
390
|
//#region ../../lib/pan-dir/records.ts
|
|
@@ -244,6 +411,7 @@ function projectPipeline(issueId, status, existing) {
|
|
|
244
411
|
issueId,
|
|
245
412
|
reviewStatus: status?.reviewStatus ?? "pending",
|
|
246
413
|
testStatus: status?.testStatus ?? "pending",
|
|
414
|
+
uatStatus: status?.uatStatus,
|
|
247
415
|
verificationStatus: status?.verificationStatus,
|
|
248
416
|
inspectStatus: status?.inspectStatus,
|
|
249
417
|
mergeStatus: status?.mergeStatus,
|
|
@@ -260,6 +428,7 @@ function projectPipeline(issueId, status, existing) {
|
|
|
260
428
|
...base,
|
|
261
429
|
reviewNotes: status.reviewNotes,
|
|
262
430
|
testNotes: status.testNotes,
|
|
431
|
+
uatNotes: status.uatNotes,
|
|
263
432
|
verificationNotes: status.verificationNotes,
|
|
264
433
|
inspectNotes: status.inspectNotes,
|
|
265
434
|
mergeNotes: status.mergeNotes,
|
|
@@ -391,10 +560,15 @@ async function buildIssueRecord(project, issueId, opts = {}) {
|
|
|
391
560
|
* the status the rebuild projects — observed clobbering PAN-399's passed
|
|
392
561
|
* verdict back to a pre-verdict snapshot. Same newer-wins rule (ISO `updatedAt`
|
|
393
562
|
* comparison) the journal readers use.
|
|
563
|
+
*
|
|
564
|
+
* PAN-3092: newer-wins alone conflates write-recency with verdict-truth, because
|
|
565
|
+
* `projectPipeline` stamps `updatedAt` on every write, verdict or not. The
|
|
566
|
+
* comparison now runs through `mergePipelineVerdictAware`, which keeps
|
|
567
|
+
* newer-wins for every non-verdict field but refuses to drop a terminal verdict
|
|
568
|
+
* in favour of a same-cycle verdict-free write.
|
|
394
569
|
*/
|
|
395
570
|
function pickNewerPipeline(rebuilt, fresh) {
|
|
396
|
-
|
|
397
|
-
return rebuilt.updatedAt < fresh.updatedAt ? fresh : rebuilt;
|
|
571
|
+
return mergePipelineVerdictAware(rebuilt, fresh);
|
|
398
572
|
}
|
|
399
573
|
/**
|
|
400
574
|
* PAN-1908 / PAN-1919: rebuild and queue the per-issue permanent record for a
|
|
@@ -438,19 +612,46 @@ var init_records = __esmMin((() => {
|
|
|
438
612
|
init_agent_state_sync();
|
|
439
613
|
init_record();
|
|
440
614
|
init_record_update();
|
|
615
|
+
init_pipeline_verdict_merge();
|
|
441
616
|
}));
|
|
442
617
|
//#endregion
|
|
443
618
|
//#region ../../lib/overdeck/review-status-record-sync.ts
|
|
444
|
-
function
|
|
445
|
-
const
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
619
|
+
function verdictWriteBackoffDelaysMs() {
|
|
620
|
+
const raw = process.env.OVERDECK_VERDICT_BACKOFF_DELAYS_MS;
|
|
621
|
+
if (!raw) return DEFAULT_VERDICT_BACKOFF_DELAYS_MS;
|
|
622
|
+
const parsed = raw.split(",").map((part) => Number(part.trim())).filter((ms) => Number.isFinite(ms) && ms >= 0);
|
|
623
|
+
return parsed.length > 0 ? parsed : DEFAULT_VERDICT_BACKOFF_DELAYS_MS;
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
* One journal-write attempt. `false` means the durable write definitively
|
|
627
|
+
* failed; `undefined` (a test double, say) is "unknown", not "failed", and only
|
|
628
|
+
* a definite `true` is safe to treat as a landed write.
|
|
629
|
+
*/
|
|
630
|
+
async function attemptJournalWrite(issueId, status) {
|
|
631
|
+
try {
|
|
632
|
+
return await updateIssueRecordForIssue(issueId, status);
|
|
633
|
+
} catch {
|
|
634
|
+
return false;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
function updateIssueRecordForReviewStatusSync(issueId, status, options) {
|
|
638
|
+
const delays = options?.verdictWrite ? verdictWriteBackoffDelaysMs() : [];
|
|
639
|
+
const write = (async () => {
|
|
640
|
+
for (let attempt = 0;; attempt += 1) {
|
|
641
|
+
const landed = await attemptJournalWrite(issueId, status);
|
|
642
|
+
if (landed !== false) {
|
|
643
|
+
if (landed === true) trackVerdictFallbackDrain(issueId);
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
const delay = delays[attempt];
|
|
647
|
+
if (delay === void 0) break;
|
|
648
|
+
await new Promise((resolve) => {
|
|
649
|
+
setTimeout(resolve, delay);
|
|
650
|
+
});
|
|
651
|
+
}
|
|
451
652
|
writeWorkspaceVerdictFallbackSync(issueId, status);
|
|
452
653
|
scheduleVerdictFallbackDrain(issueId);
|
|
453
|
-
});
|
|
654
|
+
})();
|
|
454
655
|
pendingJournalWrites.add(write);
|
|
455
656
|
write.finally(() => pendingJournalWrites.delete(write));
|
|
456
657
|
}
|
|
@@ -491,6 +692,7 @@ function enrichReviewNotesFromRecordSync(issueId, status) {
|
|
|
491
692
|
...status,
|
|
492
693
|
reviewNotes: pipeline.reviewNotes ?? status.reviewNotes,
|
|
493
694
|
testNotes: pipeline.testNotes ?? status.testNotes,
|
|
695
|
+
uatNotes: pipeline.uatNotes ?? status.uatNotes,
|
|
494
696
|
mergeNotes: pipeline.mergeNotes ?? status.mergeNotes,
|
|
495
697
|
inspectNotes: pipeline.inspectNotes ?? status.inspectNotes,
|
|
496
698
|
verificationNotes: pipeline.verificationNotes ?? status.verificationNotes,
|
|
@@ -507,6 +709,8 @@ function durableSubset(p) {
|
|
|
507
709
|
return {
|
|
508
710
|
reviewStatus: p.reviewStatus,
|
|
509
711
|
testStatus: p.testStatus,
|
|
712
|
+
uatStatus: p.uatStatus ?? void 0,
|
|
713
|
+
uatNotes: p.uatNotes,
|
|
510
714
|
mergeStatus: p.mergeStatus ?? void 0,
|
|
511
715
|
mergeStep: p.mergeStep,
|
|
512
716
|
inspectStatus: p.inspectStatus ?? void 0,
|
|
@@ -708,6 +912,21 @@ async function readWorkspaceVerdictFallback(issueId) {
|
|
|
708
912
|
* write was in flight stays at the live path for its own drain schedule, and
|
|
709
913
|
* no step ever renames onto a path another process may have just created.
|
|
710
914
|
*/
|
|
915
|
+
/**
|
|
916
|
+
* PAN-3092: why is a fallback still pending? A failed drain returns `false` for
|
|
917
|
+
* two materially different reasons — the record write lost to a contended lock,
|
|
918
|
+
* or the fold was deliberately withheld because the journal and the fallback
|
|
919
|
+
* hold different terminal verdicts for one gate. Only the first clears on its
|
|
920
|
+
* own; the second is permanent until an operator picks a verdict, so the sweep
|
|
921
|
+
* must be able to tell them apart before it tells anyone to wait.
|
|
922
|
+
*
|
|
923
|
+
* Read-only and lock-free: the caller is already reporting lock contention.
|
|
924
|
+
*/
|
|
925
|
+
async function findWorkspaceVerdictConflicts(issueId, fallback) {
|
|
926
|
+
const journal = await readPipeline(issueId);
|
|
927
|
+
if (!journal?.updatedAt || journal.updatedAt < fallback.updatedAt) return [];
|
|
928
|
+
return findFallbackVerdictConflicts(journal, fallback);
|
|
929
|
+
}
|
|
711
930
|
async function drainWorkspaceVerdictFallback(issueId) {
|
|
712
931
|
const claims = claimWorkspaceVerdictFallbackSync(issueId);
|
|
713
932
|
if (!claims) return true;
|
|
@@ -716,16 +935,19 @@ async function drainWorkspaceVerdictFallback(issueId) {
|
|
|
716
935
|
const losers = claims.filter((claim) => claim !== winner);
|
|
717
936
|
const { fallback } = winner;
|
|
718
937
|
const journal = readPipelineSync(issueId);
|
|
719
|
-
|
|
938
|
+
const journalAtLeastAsNew = !!journal?.updatedAt && !(journal.updatedAt < fallback.updatedAt);
|
|
939
|
+
if (journalAtLeastAsNew && pipelineCoversFallbackVerdicts(journal, fallback)) {
|
|
720
940
|
for (const claim of claims) rmSync$1(claim.claimPath, { force: true });
|
|
721
941
|
return true;
|
|
722
942
|
}
|
|
723
|
-
|
|
943
|
+
const conflicted = journalAtLeastAsNew && pipelineConflictsWithFallbackVerdicts(journal, fallback);
|
|
944
|
+
const status = {
|
|
724
945
|
issueId: fallback.issueId,
|
|
725
946
|
...fallback.pipeline,
|
|
726
947
|
updatedAt: fallback.updatedAt,
|
|
727
948
|
readyForMerge: false
|
|
728
|
-
}
|
|
949
|
+
};
|
|
950
|
+
if (conflicted ? false : await updateIssueRecordForIssue(issueId, status)) {
|
|
729
951
|
for (const claim of claims) rmSync$1(claim.claimPath, { force: true });
|
|
730
952
|
return true;
|
|
731
953
|
}
|
|
@@ -815,12 +1037,21 @@ async function readJournalStatus(issueId) {
|
|
|
815
1037
|
const [pipeline, fallback] = await Promise.all([readPipeline(issueId), readWorkspaceVerdictFallback(issueId)]);
|
|
816
1038
|
return projectJournalStatus(pipeline, fallback);
|
|
817
1039
|
}
|
|
818
|
-
var pendingJournalWrites, FALLBACK_CLEARABLE_FIELDS, drainClaimCounter, DRAIN_RETRY_DELAYS_MS, drainTimers;
|
|
1040
|
+
var pendingJournalWrites, DEFAULT_VERDICT_BACKOFF_DELAYS_MS, FALLBACK_CLEARABLE_FIELDS, drainClaimCounter, DRAIN_RETRY_DELAYS_MS, drainTimers;
|
|
819
1041
|
var init_review_status_record_sync = __esmMin((() => {
|
|
820
1042
|
init_records();
|
|
821
1043
|
init_record();
|
|
1044
|
+
init_pipeline_verdict_merge();
|
|
822
1045
|
init_projects();
|
|
823
1046
|
pendingJournalWrites = /* @__PURE__ */ new Set();
|
|
1047
|
+
DEFAULT_VERDICT_BACKOFF_DELAYS_MS = [
|
|
1048
|
+
2e3,
|
|
1049
|
+
5e3,
|
|
1050
|
+
1e4,
|
|
1051
|
+
2e4,
|
|
1052
|
+
4e4,
|
|
1053
|
+
8e4
|
|
1054
|
+
];
|
|
824
1055
|
FALLBACK_CLEARABLE_FIELDS = [
|
|
825
1056
|
"strikeTransportRetryCount",
|
|
826
1057
|
"strikeNextAttemptAt",
|
|
@@ -1046,6 +1277,7 @@ var init_review_status_reconcile = __esmMin((() => {
|
|
|
1046
1277
|
init_review_status_sync();
|
|
1047
1278
|
init_review_convergence();
|
|
1048
1279
|
init_projects();
|
|
1280
|
+
init_review_status_limits();
|
|
1049
1281
|
}));
|
|
1050
1282
|
//#endregion
|
|
1051
1283
|
//#region ../../lib/review-dispatch-decision.ts
|
|
@@ -1116,7 +1348,7 @@ function createGetModuleFromFilename(basePath = process.argv[1] ? dirname$1(proc
|
|
|
1116
1348
|
return (filename) => {
|
|
1117
1349
|
if (!filename) return;
|
|
1118
1350
|
const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;
|
|
1119
|
-
let { dir, base: file, ext } = posix.parse(normalizedFilename);
|
|
1351
|
+
let { dir, base: file, ext } = posix$1.parse(normalizedFilename);
|
|
1120
1352
|
if (".js" === ext || ".mjs" === ext || ".cjs" === ext) file = file.slice(0, -1 * ext.length);
|
|
1121
1353
|
const decodedFile = decodeURIComponent(file);
|
|
1122
1354
|
if (!dir) dir = ".";
|
|
@@ -6856,9 +7088,9 @@ var init_service = __esmMin((() => {
|
|
|
6856
7088
|
//#region ../../lib/telemetry/pipeline.ts
|
|
6857
7089
|
async function readCanonicalPipelineMembership(issueId) {
|
|
6858
7090
|
const [membershipModule, gatherModule, recordModule] = await Promise.all([
|
|
6859
|
-
import("./pipeline-membership-
|
|
6860
|
-
import("./pipeline-membership-gather-
|
|
6861
|
-
import("./record-
|
|
7091
|
+
import("./pipeline-membership-2_okL5bm.js"),
|
|
7092
|
+
import("./pipeline-membership-gather-4F1-tXKI.js"),
|
|
7093
|
+
import("./record-aVzu-LGm.js")
|
|
6862
7094
|
]);
|
|
6863
7095
|
const project = recordModule.resolveProjectForIssue(issueId);
|
|
6864
7096
|
if (!project) return false;
|
|
@@ -6909,11 +7141,16 @@ var init_pipeline = __esmMin((() => {
|
|
|
6909
7141
|
"claude-code",
|
|
6910
7142
|
"ohmypi",
|
|
6911
7143
|
"codex",
|
|
6912
|
-
"acp"
|
|
7144
|
+
"acp",
|
|
7145
|
+
"kimi-code"
|
|
6913
7146
|
]);
|
|
6914
7147
|
}));
|
|
6915
7148
|
//#endregion
|
|
6916
7149
|
//#region ../../lib/review-status.ts
|
|
7150
|
+
function truncateHistoryNote(notes) {
|
|
7151
|
+
if (!notes || notes.length <= 500) return notes;
|
|
7152
|
+
return notes.slice(0, 499) + "…";
|
|
7153
|
+
}
|
|
6917
7154
|
/**
|
|
6918
7155
|
* Authoritative "allowed to merge" predicate (PAN-1759). The flywheel
|
|
6919
7156
|
* orchestrator's pipeline verb says it INTENDS to merge an issue; this record
|
|
@@ -7042,49 +7279,59 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
7042
7279
|
"failed",
|
|
7043
7280
|
"skipped"
|
|
7044
7281
|
].includes(update.reviewStatus ?? "") && merged.reviewRequestedAt && (!merged.reviewSpawnedAt || Date.parse(merged.reviewRequestedAt) <= new Date(merged.reviewSpawnedAt).getTime())) merged.reviewRequestedAt = void 0;
|
|
7045
|
-
const history = [...status.history || []];
|
|
7046
7282
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
7047
|
-
|
|
7283
|
+
const rawHistory = [...status.history || []];
|
|
7284
|
+
if (update.reviewStatus && update.reviewStatus !== status.reviewStatus) rawHistory.push({
|
|
7048
7285
|
type: "review",
|
|
7049
7286
|
status: update.reviewStatus,
|
|
7050
7287
|
timestamp: now,
|
|
7051
|
-
notes: update.reviewNotes
|
|
7288
|
+
...update.reviewNotes ? { notes: update.reviewNotes } : {}
|
|
7052
7289
|
});
|
|
7053
|
-
if (update.testStatus && update.testStatus !== status.testStatus)
|
|
7290
|
+
if (update.testStatus && update.testStatus !== status.testStatus) rawHistory.push({
|
|
7054
7291
|
type: "test",
|
|
7055
7292
|
status: update.testStatus,
|
|
7056
7293
|
timestamp: now,
|
|
7057
|
-
notes: update.testNotes
|
|
7294
|
+
...update.testNotes ? { notes: update.testNotes } : {}
|
|
7058
7295
|
});
|
|
7059
|
-
if (update.uatStatus && update.uatStatus !== status.uatStatus)
|
|
7296
|
+
if (update.uatStatus && update.uatStatus !== status.uatStatus) rawHistory.push({
|
|
7060
7297
|
type: "uat",
|
|
7061
7298
|
status: update.uatStatus,
|
|
7062
7299
|
timestamp: now,
|
|
7063
|
-
notes: update.uatNotes
|
|
7300
|
+
...update.uatNotes ? { notes: update.uatNotes } : {}
|
|
7064
7301
|
});
|
|
7065
|
-
if (update.mergeStatus && update.mergeStatus !== status.mergeStatus)
|
|
7302
|
+
if (update.mergeStatus && update.mergeStatus !== status.mergeStatus) rawHistory.push({
|
|
7066
7303
|
type: "merge",
|
|
7067
7304
|
status: update.mergeStatus,
|
|
7068
7305
|
timestamp: now
|
|
7069
7306
|
});
|
|
7070
|
-
if (update.releaseStatus && update.releaseStatus !== status.releaseStatus)
|
|
7307
|
+
if (update.releaseStatus && update.releaseStatus !== status.releaseStatus) rawHistory.push({
|
|
7071
7308
|
type: "release",
|
|
7072
7309
|
status: update.releaseStatus,
|
|
7073
7310
|
timestamp: now,
|
|
7074
|
-
notes: update.releaseNotes
|
|
7311
|
+
...update.releaseNotes ? { notes: update.releaseNotes } : {}
|
|
7075
7312
|
});
|
|
7076
|
-
while (history.length > 10) history.shift();
|
|
7077
7313
|
const readyForMerge = (merged.blockerReasons?.length ?? 0) > 0 ? false : update.readyForMerge !== void 0 ? update.readyForMerge : reviewGatesPassedSync(merged);
|
|
7314
|
+
const boundedHistory = rawHistory.slice(-20).map((entry) => ({
|
|
7315
|
+
...entry,
|
|
7316
|
+
notes: entry.notes ? truncateHistoryNote(entry.notes) : void 0
|
|
7317
|
+
}));
|
|
7318
|
+
const dbStatus = normalizeReviewStatusSync({
|
|
7319
|
+
...merged,
|
|
7320
|
+
issueId,
|
|
7321
|
+
updatedAt: now,
|
|
7322
|
+
readyForMerge,
|
|
7323
|
+
history: rawHistory
|
|
7324
|
+
});
|
|
7078
7325
|
const updated = normalizeReviewStatusSync({
|
|
7079
7326
|
...merged,
|
|
7080
7327
|
issueId,
|
|
7081
7328
|
updatedAt: now,
|
|
7082
7329
|
readyForMerge,
|
|
7083
|
-
history
|
|
7330
|
+
history: boundedHistory
|
|
7084
7331
|
});
|
|
7085
7332
|
if (readyForMerge && !status.readyForMerge && updated.prUrl) (async () => {
|
|
7086
7333
|
try {
|
|
7087
|
-
const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-
|
|
7334
|
+
const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CpQSDlv8.js");
|
|
7088
7335
|
if (!isGitHubAppConfigured()) return;
|
|
7089
7336
|
const prMatch = updated.prUrl.match(/github\.com\/([^/]+)\/([^/]+)\/pull/);
|
|
7090
7337
|
if (!prMatch) return;
|
|
@@ -7104,9 +7351,10 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
7104
7351
|
console.warn(`[review-status] Failed to report commit status: ${err.message}`);
|
|
7105
7352
|
}
|
|
7106
7353
|
})();
|
|
7107
|
-
|
|
7354
|
+
const verdictWrite = carriesNewTerminalVerdict(status, update);
|
|
7355
|
+
updateIssueRecordForReviewStatusSync(issueId, updated, { verdictWrite });
|
|
7108
7356
|
try {
|
|
7109
|
-
upsertReviewStatusSync(
|
|
7357
|
+
upsertReviewStatusSync(dbStatus);
|
|
7110
7358
|
} catch (err) {
|
|
7111
7359
|
const msg = err instanceof Error ? err.message : String(err);
|
|
7112
7360
|
console.warn(`[review-status] DB cache write skipped for ${issueId} (${msg}); journal holds the verdict, host will reconcile on read.`);
|
|
@@ -7338,8 +7586,8 @@ function emitReactiveLifecycleEvent(type, issueId) {
|
|
|
7338
7586
|
}
|
|
7339
7587
|
async function deliverReviewVerdictFeedbackHostSide(issueId, status) {
|
|
7340
7588
|
try {
|
|
7341
|
-
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-
|
|
7342
|
-
const { getAgentStateSync } = await import("./agents-
|
|
7589
|
+
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-HRY9P4bN.js");
|
|
7590
|
+
const { getAgentStateSync } = await import("./agents-IPSa5kzn.js");
|
|
7343
7591
|
const runId = getAgentStateSync(`agent-${issueId.toLowerCase()}-review`)?.reviewRunId;
|
|
7344
7592
|
if ((await Effect.runPromise(deliverReviewVerdictFeedback({
|
|
7345
7593
|
issueId,
|
|
@@ -7382,7 +7630,7 @@ function maybeAutoDispatchReviewHostSide(issueId, status) {
|
|
|
7382
7630
|
}
|
|
7383
7631
|
async function dispatchReviewHostSide(issueId, prUrl) {
|
|
7384
7632
|
try {
|
|
7385
|
-
const { hasDurableReviewPipelineHandler, startDurableReviewPipelineHostSide } = await import("./durable-review-pipeline-
|
|
7633
|
+
const { hasDurableReviewPipelineHandler, startDurableReviewPipelineHostSide } = await import("./durable-review-pipeline-CStTgOAf.js");
|
|
7386
7634
|
if (!hasDurableReviewPipelineHandler()) {
|
|
7387
7635
|
if (!loggedMissingPipelineHandler) {
|
|
7388
7636
|
loggedMissingPipelineHandler = true;
|
|
@@ -7390,7 +7638,7 @@ async function dispatchReviewHostSide(issueId, prUrl) {
|
|
|
7390
7638
|
}
|
|
7391
7639
|
return;
|
|
7392
7640
|
}
|
|
7393
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
7641
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-CD3RQ-tc.js");
|
|
7394
7642
|
if (!await startDurableReviewPipelineHostSide({
|
|
7395
7643
|
issueId,
|
|
7396
7644
|
...prUrl ? { prUrl } : {},
|
|
@@ -7412,13 +7660,13 @@ function maybeRecoverTestVerdictHostSide(issueId, status) {
|
|
|
7412
7660
|
}
|
|
7413
7661
|
async function recoverTestVerdictHostSide(issueId) {
|
|
7414
7662
|
try {
|
|
7415
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
7663
|
+
const { resolveProjectFromIssueSync } = await import("./projects-WqMWCdpa.js");
|
|
7416
7664
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
7417
7665
|
if (!resolved) return;
|
|
7418
7666
|
const { existsSync } = await import("fs");
|
|
7419
7667
|
const workspace = join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
7420
7668
|
if (!existsSync(workspace)) return;
|
|
7421
|
-
const { readTestVerdictArtifact } = await import("./test-verdict-
|
|
7669
|
+
const { readTestVerdictArtifact } = await import("./test-verdict-NdtgRBuA.js");
|
|
7422
7670
|
const artifact = readTestVerdictArtifact(workspace);
|
|
7423
7671
|
if (!artifact) return;
|
|
7424
7672
|
setReviewStatusSync(issueId, {
|
|
@@ -7465,13 +7713,13 @@ function resetPipelineVerdictsForWorkStartSync(issueId, options = {}) {
|
|
|
7465
7713
|
}
|
|
7466
7714
|
async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
|
|
7467
7715
|
try {
|
|
7468
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
7716
|
+
const { resolveProjectFromIssueSync } = await import("./projects-WqMWCdpa.js");
|
|
7469
7717
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
7470
7718
|
const workspace = resolved ? join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`) : void 0;
|
|
7471
7719
|
const notes = status.testNotes;
|
|
7472
7720
|
let feedbackPath;
|
|
7473
7721
|
try {
|
|
7474
|
-
const { writeFeedbackFile } = await import("./feedback-writer-
|
|
7722
|
+
const { writeFeedbackFile } = await import("./feedback-writer-CTSuA6lw.js");
|
|
7475
7723
|
const r = await Effect.runPromise(writeFeedbackFile({
|
|
7476
7724
|
issueId,
|
|
7477
7725
|
workspacePath: workspace,
|
|
@@ -7483,10 +7731,10 @@ async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
|
|
|
7483
7731
|
if (r.success) feedbackPath = r.filePath;
|
|
7484
7732
|
} catch {}
|
|
7485
7733
|
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.`;
|
|
7486
|
-
const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-
|
|
7734
|
+
const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-D9Tex35_.js");
|
|
7487
7735
|
const target = await resolveIssueFeedbackTarget(issueId);
|
|
7488
7736
|
if ("agentId" in target) {
|
|
7489
|
-
const { messageAgent } = await import("./agents-
|
|
7737
|
+
const { messageAgent } = await import("./agents-IPSa5kzn.js");
|
|
7490
7738
|
await messageAgent(target.agentId, message, "internal", { owesRework: true });
|
|
7491
7739
|
console.log(`[review-status] delivered test failure to ${target.agentId} for ${issueId} (host-side)`);
|
|
7492
7740
|
} else await surfaceIssueFeedbackNeedsYou(issueId, target.reason, {
|
|
@@ -7689,8 +7937,10 @@ var init_review_status = __esmMin((() => {
|
|
|
7689
7937
|
init_review_status_source();
|
|
7690
7938
|
init_review_status_normalize();
|
|
7691
7939
|
init_review_status_record_sync();
|
|
7940
|
+
init_pipeline_verdict_merge();
|
|
7692
7941
|
init_review_status_reconcile();
|
|
7693
7942
|
init_review_dispatch_decision();
|
|
7943
|
+
init_review_status_limits();
|
|
7694
7944
|
init_review_status_read();
|
|
7695
7945
|
init_pipeline();
|
|
7696
7946
|
registerReviewStatusMapReader(() => getAllReviewStatusesFromDb());
|
|
@@ -7732,6 +7982,6 @@ var init_review_status = __esmMin((() => {
|
|
|
7732
7982
|
});
|
|
7733
7983
|
}));
|
|
7734
7984
|
//#endregion
|
|
7735
|
-
export { synchronizeAnalyticsServices as A, reviewGatesPassedSync as B, setReviewStatusSync as C, resolvePipelineTelemetryContext as D, init_pipeline as E, telemetryEnvironmentForcesOff as F,
|
|
7985
|
+
export { listOverdeckAgentStatesSync as $, synchronizeAnalyticsServices as A, reviewGatesPassedSync as B, setReviewStatusSync as C, resolvePipelineTelemetryContext as D, init_pipeline as E, telemetryEnvironmentForcesOff as F, findWorkspaceVerdictConflicts as G, findBlockingFindings as H, init_pipeline_agent_reader as I, readJournalStatusSync as J, init_review_status_record_sync as K, registerPipelineTelemetryAgentReader as L, init_install_id as M, init_config as N, getAnalyticsService as O, resolveTelemetryEnabled as P, init_agent_state_sync as Q, init_review_dispatch_decision as R, setReviewStatus as S, capturePipelineStageForIssue as T, init_review_findings as U, verificationSatisfied as V, drainWorkspaceVerdictFallback as W, AGENT_COLUMNS_FOR_DB as X, readWorkspaceVerdictFallback as Y, getOverdeckAgentStateSync as Z, markWorkspaceStuck as _, clearStuckMergeStatuses as a, setAutoMerge as b, fixStuckCommentedReviews as c, getReviewStatusSync as d, saveOverdeckAgentStateSync as et, getReviewStatusesSync as f, loadReviewStatusesForIssues as g, loadReviewStatuses as h, clearReviewStatus as i, getOrCreateInstallId as j, init_service as k, fixStuckReadyForMerge as l, loadReadyForMergeFlags as m, ReviewStatusError as n, clearWorkspaceStuck as o, init_review_status as p, readJournalStatus as q, clearFeedbackDeliveryStuck as r, dispatchReviewHostSide as s, FEEDBACK_DELIVERY_STUCK_REASON as t, stateToOverdeckParamsForDb as tt, getReviewStatus as u, mergeGateEligibility as v, capturePipelineStage as w, setDeaconIgnored as x, resetPipelineVerdictsForWorkStartSync as y, needsReviewDispatch as z };
|
|
7736
7986
|
|
|
7737
|
-
//# sourceMappingURL=review-status-
|
|
7987
|
+
//# sourceMappingURL=review-status-CKLk5aZ-.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-
|
|
2
|
-
import { t as enrichReviewStatus } from "./review-status-enrichment-
|
|
1
|
+
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-CKLk5aZ-.js";
|
|
2
|
+
import { t as enrichReviewStatus } from "./review-status-enrichment-DJRgGX7-.js";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
4
|
import { isDeepStrictEqual } from "node:util";
|
|
5
5
|
//#region review-status-emit.ts
|
|
@@ -47,4 +47,4 @@ function emitReviewStatusChanged(append, issueId, status) {
|
|
|
47
47
|
//#endregion
|
|
48
48
|
export { sameCanonicalReviewStatus as n, emitReviewStatusChanged as t };
|
|
49
49
|
|
|
50
|
-
//# sourceMappingURL=review-status-emit-
|
|
50
|
+
//# sourceMappingURL=review-status-emit-CJ7UmEVU.js.map
|
package/server/{review-status-enrichment-8NiNXi5W.js → review-status-enrichment-DJRgGX7-.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Sn as resolveProjectFromIssueSync, cn as init_projects } from "./config-yaml-BSCqwmX0.js";
|
|
2
|
+
import { C as init_tmux, j as listSessionNames } from "./tmux-CImZaX4q.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-DJRgGX7-.js.map
|