@overdeck/desktop 0.47.1 → 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-Cd7ZGZCq.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-DieFp3qi.js → advancing-selfheal-8AR68Asf.js} +6 -6
- package/server/{agent-gc-BMcgTDl7.js → agent-gc-BmYeT6eH.js} +5 -5
- package/server/agent-state-Dq3s84-P.js +3 -0
- package/server/{agent-state-service-DFO6qvHp.js → agent-state-service-DK1Vay1E.js} +1 -1
- package/server/{agent-state-service-BOzQhLjU.js → agent-state-service-rjnzpHDx.js} +6 -6
- package/server/{agent-state-source-Ca_zCaII.js → agent-state-source-Ds968-j6.js} +1 -1
- package/server/{agents-CtACUuVG.js → agents-Dls7tfJH.js} +5 -5
- package/server/agents-IPSa5kzn.js +3 -0
- package/server/{archive-planning-Binfb99i.js → archive-planning-Cq7cyinS.js} +51 -24
- package/server/archive-planning-MbkGCBIY.js +2 -0
- package/server/{artifact-index-jobs-Jn7BGOtV.js → artifact-index-jobs-Dj_8kpTd.js} +3 -3
- package/server/{assemble-DsqK9OAq.js → assemble-BTCmbcfH.js} +20 -13
- package/server/{auto-spawn-consent-BooqhC3L.js → auto-spawn-consent-lXqRJ1Dr.js} +304 -121
- package/server/{backlog-auto-trigger-BADGPxov.js → backlog-auto-trigger-Dn-amzt6.js} +3 -3
- package/server/{behavior-B7biGtFT.js → behavior-DIMQMRzs.js} +2 -2
- package/server/{boot-reconciled-stop-events-bQUzU8ns.js → boot-reconciled-stop-events-D6SeUTIr.js} +1 -1
- package/server/{bridge-pool-patrol-DsPj6F7t.js → bridge-pool-patrol-BEjt-xF3.js} +2 -2
- package/server/{briefing-freshness-CUerZqWd.js → briefing-freshness-3PNmL_p3.js} +2 -2
- package/server/{build-info-D0q_i8WM.js → build-info-CJg813Hm.js} +3 -3
- package/server/{build-info-Du74MKiP.js → build-info-CXyeFsXu.js} +1 -1
- package/server/{checkpoint-manager-Cu-R5Uzg.js → checkpoint-manager-9t7G5c1V.js} +1 -1
- package/server/{checkpoint-manager-R5tnaxEY.js → checkpoint-manager-B2G38R3p.js} +3 -3
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-wF84ubZ8.js → checkpoints-CuBgiXO-.js} +1 -1
- package/server/{checkpoints-DYtLu-PB.js → checkpoints-VTZMd4Qm.js} +2 -2
- package/server/{claude-hooks-provision-DXI3Wqlm.js → claude-hooks-provision-55SyQaPz.js} +2 -2
- package/server/{claude-hooks-provision-UKxCeOyj.js → claude-hooks-provision-CEUT-CZd.js} +1 -1
- package/server/{claude-permissions-DYVLnX9t.js → claude-permissions-Cn0dIu2i.js} +2 -2
- package/server/{claude-settings-overlay-DxP2F_gY.js → claude-settings-overlay-B19hdzSA.js} +1 -1
- package/server/{claude-settings-overlay-DsbpIq2d.js → claude-settings-overlay-Yg_ANh81.js} +2 -2
- package/server/{cli-DzRKxxP_.js → cli-C9S84iTy.js} +79 -22
- package/server/cli-M1cwZ__d.js +3 -0
- package/server/{cliproxy-CG4meRFc.js → cliproxy-CJq3KXU6.js} +2 -2
- package/server/{cliproxy-Cwzw39yN.js → cliproxy-DgEZlr7Y.js} +1 -1
- package/server/{close-issue-BX1bATJy.js → close-issue-DPxRddGR.js} +5 -5
- package/server/{closed-issue-reaper-hLt0W86J.js → closed-issue-reaper-C5Zn4GRS.js} +13 -13
- package/server/{closed-issue-reaper-DvnTSN6a.js → closed-issue-reaper-D-2B48Ri.js} +1 -1
- package/server/{codex-rnJN3v3_.js → codex-B3n_rkwn.js} +1 -1
- package/server/{codex-BYwi1uyW.js → codex-CjkD1PJu.js} +6 -6
- package/server/{codex-parser-Poyz29GE.js → codex-parser-DpB1Il-P.js} +2 -2
- package/server/{compaction-continuation-DtMfHN0f.js → compaction-continuation-DZD9ukSE.js} +3 -3
- package/server/{config-R793W0yA.js → config-C5saf4Ja.js} +1 -1
- package/server/{config-CX4vk1CV.js → config-DnLJATZk.js} +2 -2
- package/server/{config-ktAVnp4s.js → config-DvM8jtQK.js} +2 -2
- package/server/{config-yaml-CxdwhAIA.js → config-yaml-BSCqwmX0.js} +11299 -10972
- package/server/{conflict-gate-BSTlwCtF.js → conflict-gate-DXa_L28t.js} +1 -1
- package/server/{conflict-gate-BNv6UolH.js → conflict-gate-WfVqgalf.js} +4 -4
- package/server/{context-layers-DCdaGsRG.js → context-layers-D7UqH9Ab.js} +2 -2
- package/server/{context-layers-DlWsDiRF.js → context-layers-Dpz3Vd6d.js} +3 -3
- package/server/{control-settings-qYYHrIqy.js → control-settings-DVf6pKyv.js} +4 -4
- package/server/{conversation-compaction-BxUKObHb.js → conversation-compaction-5XuH6OBn.js} +1 -1
- package/server/{conversation-compaction-CXQrN3I_.js → conversation-compaction-COrbnX1J.js} +8 -8
- package/server/{conversation-service-CZiUE8Uw.js → conversation-service-BufdtnZF.js} +169 -10
- package/server/{conversation-service-CDnQ3ayN.js → conversation-service-DnUyIiLb.js} +1 -1
- package/server/{conversations-D7lR670u.js → conversations-B4rxz-Wl.js} +17 -10
- package/server/{conversations-DXl5YTf4.js → conversations-D1bwxQMy.js} +1 -1
- package/server/{cost-Aat8HfO_.js → cost-CpFDrJUS.js} +46 -2
- package/server/{cost-CWvN9FP2.js → cost-KLuwKCW9.js} +3 -3
- package/server/{cost-sync-DiUBXwl6.js → cost-sync-cesi9dp8.js} +3 -3
- package/server/{dag-5QlmH0oC.js → dag-BYiFMqpU.js} +2 -2
- package/server/{dangerous-git-ops-DWX6Og8c.js → dangerous-git-ops-BKvd3-Hk.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-PW_bg4uL.js → deacon-BbsWw8a6.js} +3 -3
- package/server/{deacon-B1LD5cJU.js → deacon-HdEh0Esp.js} +672 -181
- package/server/deacon-event-client-C93rvOT7.js +237 -0
- package/server/deacon-event-client-Ck5Ei7Mn.js +3 -0
- package/server/{deacon-nudge-log-DPHsO14z.js → deacon-nudge-log-BND_97Wo.js} +4 -3
- package/server/{deacon-pending-lifecycle-2ZflPxgo.js → deacon-pending-lifecycle-CD3YsiQK.js} +3 -3
- package/server/deacon-swarm-DgWADWd_.js +2 -0
- package/server/{deacon-swarm-DwGUgSVp.js → deacon-swarm-rqrl4TMs.js} +39 -18
- package/server/deacon.js +12 -210
- package/server/{dead-end-trip-B06RFIr2.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-BNjeCL8u.js → deploy-patrol-kARAkji4.js} +17 -21
- package/server/{deploy-queue-CKT_Ia9p.js → deploy-queue-Bj0HJT1i.js} +2 -2
- package/server/{deploy-queue-DMMYhFC8.js → deploy-queue-rjTUy1RM.js} +1 -1
- package/server/{deploy-window-DC8lze3d.js → deploy-window-B2IM-9G5.js} +10 -44
- package/server/{deploy-window-D_AimdNN.js → deploy-window-BNFWnA8D.js} +1 -1
- package/server/{dev-supervisor-C4F0vbno.js → dev-supervisor-B1mZYXz4.js} +2 -2
- package/server/{devcontainer-renderer-66sqMQIi.js → devcontainer-renderer-B-o68Z5B.js} +3 -3
- package/server/{dist-C5FT9lTG.js → dist-3W--cGMa.js} +1 -1
- package/server/dist-BR0QtwmS.js +3 -0
- package/server/{dist-src-B-AlGWSl.js → dist-src-C-Vk2jNk.js} +1 -1
- package/server/{docker-BxrFhTZ_.js → docker-DH3jUYg1.js} +1 -1
- package/server/{docker-CoAT8R0J.js → docker-meuLKLzV.js} +27 -20
- package/server/{dod-Bg6wsKTV.js → dod-D7-9dCOD.js} +1 -1
- package/server/{driver-CKVGi51s.js → driver-CmsY2RLl.js} +1 -1
- package/server/{durable-review-pipeline-D_DcfIGP.js → durable-review-pipeline-CStTgOAf.js} +1 -1
- package/server/{durable-review-pipeline-HkAgnx0L.js → durable-review-pipeline-Chq0lzjL.js} +1 -1
- package/server/{ensure-devcontainer-Bg5HJAcO.js → ensure-devcontainer-BE3llBWP.js} +1 -1
- package/server/{ensure-devcontainer-DTxChVuA.js → ensure-devcontainer-BXrY7C2Z.js} +4 -4
- package/server/{esm-shims-CaBWIR7f.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-ChEFB7Jp.js → events-CCkFWa7X.js} +1 -1
- package/server/{events-DhRN-6vM.js → events-zjDQozet.js} +3 -3
- package/server/{factory-BezSPaTd.js → factory-DhavwKVc.js} +5 -5
- package/server/{feature-registry-population-DhswNiXx.js → feature-registry-population-DWGBKyWd.js} +4 -4
- package/server/{feature-registry-storage-CUVNpAso.js → feature-registry-storage-C5DkXmCM.js} +3 -3
- package/server/{features-B2CfNPFw.js → features-CC47YcCX.js} +2 -2
- package/server/{feedback-target-CMrEAoeA.js → feedback-target-D9Tex35_.js} +1 -1
- package/server/{feedback-target-VBr9gKgX.js → feedback-target-DoRCR3L-.js} +8 -8
- package/server/{feedback-writer-CY91ckuw.js → feedback-writer-CTSuA6lw.js} +1 -1
- package/server/{feedback-writer-xpFgU632.js → feedback-writer-DdsBdtNL.js} +5 -5
- package/server/{flywheel-DsICCjTR.js → flywheel-DHWHzaYK.js} +1 -1
- package/server/{flywheel-DQqsSm7P.js → flywheel-DJQa9az8.js} +14 -14
- package/server/{flywheel-CTVY3yCG.js → flywheel-TacAI9MA.js} +21 -17
- package/server/{flywheel-merge-order-C-TI4JGu.js → flywheel-merge-order-D2foPh88.js} +1 -1
- package/server/{flywheel-merge-order-CMGz-imq.js → flywheel-merge-order-DRtex2Dt.js} +7 -7
- package/server/forge-CdlCG9aS.js +3 -0
- package/server/{forge-RTNqJe6a.js → forge-c8LeC-tw.js} +2 -2
- package/server/{from-DxGcivc9.js → from-BogSwvr2.js} +1 -1
- package/server/{fs-lock-Bre3sGoz.js → fs-lock-D_GeJtXl.js} +3 -3
- package/server/{fts-operations-BuTdlZFA.js → fts-operations-DP9R-8Q3.js} +3 -3
- package/server/{git-utils-CedsVume.js → git-utils-C31x1lpE.js} +1 -1
- package/server/{git-utils-DtdoEXJk.js → git-utils-xQ74FoSn.js} +5 -4
- package/server/{github-app-DIE8BkHI.js → github-app-CpQSDlv8.js} +1 -1
- package/server/{github-app-gVnZcP9B.js → github-app-D2QuvZ3j.js} +3 -3
- package/server/{github-client-BrAC6ELh.js → github-client-D9YvJX5D.js} +3 -3
- package/server/{github-client-CBOkvBUl.js → github-client-Tpi3PmKX.js} +1 -1
- package/server/{github-pr-lookup-CgMULTPf.js → github-pr-lookup-DvBMv-IW.js} +2 -2
- package/server/{harness-binary-CnBHpd57.js → harness-binary-BHxWf_sX.js} +7 -6
- package/server/{harness-resolve-BVj6sI8m.js → harness-resolve-bj9WMABA.js} +4 -4
- package/server/{health-events-BBWO_Dh9.js → health-events-bCDPn59Z.js} +2 -2
- package/server/{health-events-Der6bOkm.js → health-events-qo7Ss34U.js} +1 -1
- package/server/{hooks-BOavco-e.js → hooks-Dyxtg5fk.js} +2 -2
- package/server/{hooks-BJNal-bs.js → hooks-X2XHBB2b.js} +1 -1
- package/server/{hume-DBocJFkA.js → hume-DrZEGpqc.js} +2 -2
- package/server/hume-YPsy4UA8.js +3 -0
- package/server/{idle-stack-reaper-DQFh8rDh.js → idle-stack-reaper-CJ1ygW0p.js} +37 -7
- package/server/{idle-stack-reaper-CyGxXOfC.js → idle-stack-reaper-uJGOb-vu.js} +1 -1
- package/server/{in-flight-guard-nXEKoxI7.js → in-flight-guard-CG2Eo-rr.js} +1 -1
- package/server/{infra-BDQDRopn.js → infra-CTrmVqc_.js} +111 -6
- package/server/{injection-DfFFEMKL.js → injection-BisQ0lpX.js} +1 -1
- package/server/{injection-CCopdUKz.js → injection-C9sxqbc2.js} +73 -193
- package/server/{inspect-agent-FCDlNT_i.js → inspect-agent-BoSO51YC.js} +12 -12
- package/server/inspect-agent-BykeOH4a.js +2 -0
- package/server/{internal-token-BG6yQKNL.js → internal-token-AvXePaQT.js} +2 -2
- package/server/{internal-token-BJZa40Ld.js → internal-token-Djkj-yqK.js} +1 -1
- package/server/{io-C0NV7y6C.js → io-mxOWMZ7I.js} +6 -6
- package/server/{issue-closed-CNNGbhWm.js → issue-closed-Bj_bCv_0.js} +7 -7
- package/server/{issue-lifecycle-DSH0GpWC.js → issue-lifecycle-A5YIpDZE.js} +1 -1
- package/server/{issue-lifecycle-BXfzxFCD.js → issue-lifecycle-BXUqaHzF.js} +32 -28
- package/server/{issue-service-singleton-F3A5VP6M.js → issue-service-singleton-BPNEXczv.js} +11 -11
- package/server/{issue-service-singleton-lwFJ4dHk.js → issue-service-singleton-CcaHjKPR.js} +1 -1
- package/server/{issues-DA-U_MpR.js → issues-AX-YBeAQ.js} +2 -2
- package/server/{jsonl-parser-BXiGANOh.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-BnxRk0Eo.js → label-cleanup-sXUlgdM0.js} +3 -3
- package/server/{lifecycle-DOgGnpIv.js → lifecycle-D2X3al0D.js} +2 -2
- package/server/{lifecycle-Di48-w4x.js → lifecycle-DjlljAZ1.js} +6 -6
- package/server/{lifecycle-io-eVG6v_8-.js → lifecycle-io-C5nVk55o.js} +1 -1
- package/server/{lifecycle-io-1XSeczTr.js → lifecycle-io-NPm1YtIG.js} +5 -5
- package/server/{linear-client-CvGo9n7M.js → linear-client--luYwCZg.js} +1 -1
- package/server/{linear-client-CYZRrcjp.js → linear-client-B8pLegW1.js} +3 -3
- package/server/{linear-mcp-auth-Cp0XaP96.js → linear-mcp-auth-BQVWV0I3.js} +6 -6
- package/server/{linear-mcp-auth-DoJnjdPZ.js → linear-mcp-auth-Dx81Zl4G.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-DO14mOr3.js → merge-Bx5Bh9pi.js} +3 -3
- package/server/{merge-ZF99ig6A.js → merge-Dqmh_zja.js} +1 -1
- package/server/{merge-agent-gpiRkcvj.js → merge-agent-DP9AUY29.js} +33 -33
- package/server/{merge-agent-C1-9zbP_.js → merge-agent-DWd0KfiS.js} +1 -1
- package/server/{merge-batch-C11ocNkO.js → merge-batch-BdmvTEAC.js} +1 -1
- package/server/{merge-completeness-CghMbyX7.js → merge-completeness-BfRwFjRx.js} +1 -1
- package/server/{merge-completeness-BUzPZy0E.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-iwlUzZjr.js → merge-rebase-BX1xKsrE.js} +2 -2
- package/server/{merge-set-Dbnx4chw.js → merge-set-DsLjjLEV.js} +4 -4
- package/server/{merge-set-BymrheTj.js → merge-set-H6epHOsw.js} +1 -1
- package/server/{merge-sync-CM978zez.js → merge-sync-BEdfsQV4.js} +2 -2
- package/server/{merge-sync-CqEtqjI2.js → merge-sync-BebcWWGA.js} +1 -1
- package/server/{merge-train-DvLcAn1G.js → merge-train-D1I0lNOT.js} +4 -4
- package/server/{merge-train-deps-Cl_kcRbO.js → merge-train-deps-D_-C0Pk2.js} +4 -4
- package/server/{merge-verification-c9Y9mllw.js → merge-verification-DN1Ov9bU.js} +6 -6
- package/server/{merged-docker-cleanup-worker-CGiDOdv8.js → merged-docker-cleanup-worker-CfXSr2pA.js} +4 -4
- package/server/{merged-docker-cleanup-worker-DgsLOx3E.js → merged-docker-cleanup-worker-ybsPyHjB.js} +1 -1
- package/server/{multipart-parser-D0twwRjz.js → multipart-parser-CL5QG8iv.js} +2 -2
- package/server/{no-resume-mode-DZvP0M_S.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-6r2OEfYd.js → orphan-proposed-reconciler-CEW1maPl.js} +1 -1
- package/server/{orphan-proposed-reconciler-DtQP6oE_.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-DAOb1V2-.js → pan-dir-DhgKfO86.js} +21 -6
- package/server/{paths-DuATV5iE.js → paths-BUuhi6jM.js} +17 -17
- package/server/{pending-lifecycle-claim-DQUHIDfX.js → pending-lifecycle-claim-DJlA1rTR.js} +2 -2
- package/server/{persistent-logger-CBj016pT.js → persistent-logger-s8cbpFNV.js} +2 -2
- package/server/{pickup-zXZl5lQI.js → pickup-2AxtB3dW.js} +1 -1
- package/server/{pipeline-membership-DHOXmvba.js → pipeline-membership-2_okL5bm.js} +1 -1
- package/server/{pipeline-membership-B2yUcBz7.js → pipeline-membership-Dqv6_0ig.js} +1 -1
- package/server/{pipeline-membership-gather-OkLXuvxR.js → pipeline-membership-gather-4F1-tXKI.js} +1 -1
- package/server/{pipeline-membership-gather-BIcJ-N0W.js → pipeline-membership-gather-CtJ_7aGf.js} +149 -17
- package/server/{pipeline-notifier-BmwrVKsO.js → pipeline-notifier-CO9rxJgB.js} +1 -1
- package/server/{pipeline-notifier-CxMes51i.js → pipeline-notifier-DDfVBJhJ.js} +2 -2
- package/server/{post-merge-lifecycle-worker-3u_rA4R0.js → post-merge-lifecycle-worker-DmSOkeNp.js} +3 -3
- package/server/{project-pipelines-C3SPFJ38.js → project-pipelines-72WE8GVK.js} +2 -2
- package/server/{project-repos-BOpBzkO6.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-B0TtboFm.js → prompts-XkL10m8M.js} +2 -2
- package/server/{providers-O2smCvSz.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-BonZ4WVG.js → pull-requests-B-KrUph5.js} +3 -3
- package/server/{pull-requests-DNcJUVWA.js → pull-requests-DK5k92B4.js} +1 -1
- package/server/{queries-DCX27GRr.js → queries-DVpl1vsU.js} +1212 -193
- package/server/{rally-Cxe7lKYX.js → rally-DbE561hD.js} +3 -3
- package/server/rally-O_st_X7n.js +3 -0
- package/server/{rally-api-CzkKenoi.js → rally-api-CZLeEd2C.js} +2 -2
- package/server/{rally-api-Cp50exEi.js → rally-api-DaHtn5QN.js} +1 -1
- package/server/{rally-client-Bu3Cekkw.js → rally-client-C-MAl8ur.js} +1 -1
- package/server/{rally-client-CyBBEDHu.js → rally-client-Ch3zRsBX.js} +5 -5
- package/server/{reap-terminal-sessions-CtAhr6L0.js → reap-terminal-sessions-C1n0ALRb.js} +2 -2
- package/server/{reap-terminal-sessions-DvFqQUnq.js → reap-terminal-sessions-DegFS2p1.js} +2 -2
- package/server/{rebuild-stack-hCQtprWC.js → rebuild-stack-C9Li44A3.js} +20 -10
- package/server/{rebuild-stack-BKYpIPDL.js → rebuild-stack-qC0jCNm6.js} +2 -2
- package/server/{reconstruct-cache-CF2avArx.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-_eO3VFth.js → release-engine-Be5MX5GP.js} +5 -5
- package/server/{release-set-vxgZwwZV.js → release-set-DJv_O6PS.js} +3 -3
- package/server/{remote-BienmcrZ.js → remote-BMM3uH2J.js} +3 -3
- package/server/{remote-CVPCc7Vy.js → remote-C0xVTHA5.js} +3 -3
- package/server/{remote-agents-kwsEZvXu.js → remote-agents-BIIoc5pD.js} +1 -1
- package/server/{remote-agents-kxraOCGT.js → remote-agents-EUiZ26bj.js} +7 -7
- package/server/{remote-completion-BtmZ42aP.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-CIRr0yYt.js → review-agent-BHGaBoBu.js} +29 -29
- package/server/{review-agent-UpAM4DmT.js → review-agent-CD3RQ-tc.js} +1 -1
- package/server/{review-artifacts-BCODM9ww.js → review-artifacts-DyhajWso.js} +6 -6
- package/server/{review-context-BBsNrDri.js → review-context-B-dlsPnx.js} +9 -9
- package/server/{review-convoy-liveness-l06_LYCt.js → review-convoy-liveness-D7M-s_nS.js} +2 -2
- package/server/{review-status-CacDM78F.js → review-status-B6wYcOtP.js} +1 -1
- package/server/{review-status-CwhA9wmd.js → review-status-CKLk5aZ-.js} +306 -59
- package/server/{review-status-emit-BPJwYcRy.js → review-status-emit-CJ7UmEVU.js} +3 -3
- package/server/{review-status-enrichment-DvyZAbGR.js → review-status-enrichment-DJRgGX7-.js} +3 -3
- package/server/review-status-limits-4EJDCGHO.js +7 -0
- package/server/{review-status-source-DWnFE0b6.js → review-status-source-7nU3Z2wL.js} +1 -1
- package/server/{review-status-source-B70ekARK.js → review-status-source-BsDYGfyv.js} +1 -1
- package/server/{review-status-sync-B0IS6Beh.js → review-status-sync-BLssMTEW.js} +1 -1
- package/server/{review-status-sync-h2CJX6ju.js → review-status-sync-BxBeHRde.js} +35 -11
- package/server/{review-verdict-feedback-yrrmgps_.js → review-verdict-feedback-5jWuzgpc.js} +22 -10
- package/server/{review-verdict-feedback-qRohbFG2.js → review-verdict-feedback-HRY9P4bN.js} +1 -1
- package/server/{rollup-CUoav0Op.js → rollup-BGIrCEkU.js} +79 -44
- package/server/rollup-CZB4UL9q.js +3 -0
- package/server/{scanner-ChURu_b-.js → scanner-DydjXPrz.js} +16 -9
- package/server/search-DdtIjAiu.js +395 -0
- package/server/{sequence-io-D9ITDxzq.js → sequence-io-Fw-cLyDs.js} +4 -4
- package/server/{sequencer-agent-m7gmaakW.js → sequencer-agent-BcpGMt5x.js} +15 -10
- package/server/server.js +1258 -438
- package/server/{service-BzFG0Us_.js → service-BFFkGsG4.js} +58 -58
- package/server/{session-fork-KBq4HIHF.js → session-fork-D0V-3e5P.js} +2 -2
- package/server/{session-history-C_EMhIIF.js → session-history-Bta5l9jY.js} +5 -5
- package/server/{settings-DejgzzLs.js → settings-Ce8B1daF.js} +2 -2
- package/server/{settings-BLbcDqUp.js → settings-E3FnEIUx.js} +3 -3
- package/server/settings-eOOJpxi_.js +2 -0
- package/server/{shadow-engineering-D8R9I8Yl.js → shadow-engineering-Mt9nJO4i.js} +3 -3
- package/server/{shadow-state-C0Af4clN.js → shadow-state-Bzj_AZCV.js} +1 -1
- package/server/{shadow-state-fzIqIMDD.js → shadow-state-DrkhoVSx.js} +2 -2
- package/server/{shadow-utils-Ugca_9ND.js → shadow-utils-H1GfqP06.js} +2 -2
- package/server/{ship-log-VAv-lHrF.js → ship-log-CFUIo4PR.js} +1 -1
- package/server/{smart-compaction-BcYY_Suf.js → smart-compaction-DSTq-Wua.js} +1 -1
- package/server/{smart-compaction-B2Xu5XEb.js → smart-compaction-Hzp3KCJX.js} +7 -7
- package/server/{spawn-planning-session-Dsv-350T.js → spawn-planning-session-C0uSA2SL.js} +2 -2
- package/server/{spawn-planning-session-DhCoBPct.js → spawn-planning-session-DN4son31.js} +23 -21
- package/server/{specialist-completion-z6v3ZqJE.js → specialist-completion-Cf6tpIh1.js} +1 -1
- package/server/{specialist-context-CrA5azkJ.js → specialist-context-DEUEkjIQ.js} +5 -5
- package/server/{specialist-handoff-logger-CmpZYJMB.js → specialist-handoff-logger-D_LmQDj3.js} +2 -2
- package/server/{specialist-logs-BorrIu0x.js → specialist-logs-7Ynue0R7.js} +3 -3
- package/server/{specialists-ZdrifiKx.js → specialists-CQwBEGlD.js} +1 -1
- package/server/{specialists-2yLmqph9.js → specialists-DAjPgYs_.js} +504 -238
- package/server/{specialists-Dfx9_Wzb.js → specialists-Hr6iW9fU.js} +18 -18
- package/server/{specialists-CH6ah6D-.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-Dm_NV7f6.js → src-DQnkPN2i.js} +3 -3
- package/server/{src-B2e5rGu2.js → src-DhfDV0o4.js} +6 -6
- package/server/{stack-health-Bf2WdG4E.js → stack-health-D_iKwNRg.js} +107 -16
- package/server/stack-health-deVSdDwn.js +3 -0
- package/server/{stale-task-claims-D1Ll8fI5.js → stale-task-claims-BYJGqhLI.js} +5 -5
- package/server/{staleness-CuED1Psm.js → staleness-CopBDKnA.js} +1 -1
- package/server/{staleness-45qZ_a60.js → staleness-D8WeMUHd.js} +1 -1
- package/server/{state-home-B4EWfIxF.js → state-home-DjN8qduI.js} +24 -3
- package/server/{state-mapping-BEONzr8P.js → state-mapping-DlM7OYRW.js} +1 -1
- package/server/{state-migrate-Cd8BH33U.js → state-migrate-a2p1gtD7.js} +4 -4
- package/server/state-mirror-Cv_XgvT5.js +121 -0
- package/server/{stuck-remediation-ChcooZuk.js → stuck-remediation-CXJX_kki.js} +1 -1
- package/server/{stuck-remediation-DmY5UJLg.js → stuck-remediation-CbCRSz1v.js} +31 -732
- package/server/{substrate-bug-weights-service-BvTWrFUz.js → substrate-bug-weights-service-DxpopNd9.js} +3 -3
- package/server/{summary-fork--Jr8duYh.js → summary-fork-B61fjRJn.js} +2 -2
- package/server/{summary-fork-Ct514_Jl.js → summary-fork-B9pszUJN.js} +91 -10
- package/server/supervisor/{injection-budget-B3UyEONL.js → injection-budget-Ar7hgyJq.js} +1 -1
- package/server/supervisor/pty-supervisor.js +12 -3
- package/server/supervisor/{pty-token-CWRffcCa.js → pty-token-CXCFU0Z8.js} +1 -1
- package/server/{supervisor-B7BHGcNA.js → supervisor-BvnxbuuF.js} +6 -4
- package/server/supervisor-C69kpqvd.js +2 -0
- package/server/{swarm-readiness-MNE5O8hn.js → swarm-readiness-vTw1kqGa.js} +3 -3
- package/server/{system-prerequisites-Cin9ZgDx.js → system-prerequisites-LLzTEqsK.js} +3 -3
- package/server/{teardown-workspace-CvBpvc85.js → teardown-workspace-CqKKVJr1.js} +15 -15
- package/server/{test-agent-queue-DmSIqays.js → test-agent-queue-CWMq7oyG.js} +8 -7
- package/server/{test-verdict-BieVDAV1.js → test-verdict-NdtgRBuA.js} +1 -1
- package/server/{test-verdict-Cy2jJGTe.js → test-verdict-diIWE6hz.js} +15 -3
- package/server/{tldr-daemon-Ca0eovh3.js → tldr-daemon-B1Jhrtc8.js} +1 -1
- package/server/{tldr-daemon-IOssGwg7.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-B10VFNOD.js → token-Bgpjo3tE.js} +2 -2
- package/server/token-util-BsjFll-k.js +3 -0
- package/server/{token-util-CZ8WPtdk.js → token-util-BymbpkJp.js} +1 -1
- package/server/{tracker-config-CHbrjg6m.js → tracker-config-4DaKVTfc.js} +2 -2
- package/server/{tracker-utils-DZZq_C0R.js → tracker-utils-BDeAXC-q.js} +2 -2
- package/server/{traefik-connect-GHomyBaD.js → traefik-connect-CC5FyxYj.js} +1 -1
- package/server/{tunnel-Dz7y434T.js → tunnel-CDWkeceJ.js} +1 -1
- package/server/{tunnel-Bdyb-sNq.js → tunnel-CPf5M-Pc.js} +3 -3
- package/server/{typed-errors-Bn_2WRU7.js → typed-errors-9K7Dq_Vn.js} +1 -1
- package/server/{typed-errors-BR_RmPS_.js → typed-errors-DrS5fb5z.js} +1 -1
- package/server/{types-D2ETIB8T.js → types-DzlUKiuf.js} +4 -3
- package/server/{types-Dh6RI5Vj.js → types-kI9ik8XO.js} +1 -1
- package/server/{uat-promote-verification-DyvQXvIn.js → uat-promote-verification-c_pxoxEc.js} +5 -5
- package/server/{uat-train-Dv0Bxer7.js → uat-train-CWGxBdJO.js} +0 -0
- package/server/{uat-train-diX_7shd.js → uat-train-CfCYd2ve.js} +1 -1
- package/server/{validate-606KcYZC.js → validate-f3ItVCfm.js} +3 -3
- package/server/{validation-Cf7aaV5A.js → validation-5G_wQtea.js} +1 -1
- package/server/{validation-CnrDul1x.js → validation-7tSiCM82.js} +4 -4
- package/server/{verification-artifact-GOaj8u2s.js → verification-artifact-9h9dH8uX.js} +1 -1
- package/server/{verification-artifact-D4b-bio9.js → verification-artifact-C_4WJnf6.js} +1 -1
- package/server/{verification-runner-DiPaUP-C.js → verification-runner-BV5F6wrA.js} +1 -1
- package/server/{verification-runner-B5MVxDvU.js → verification-runner-D58KmBhK.js} +18 -38
- package/server/{vtt-parser-CMU5EZ5R.js → vtt-parser-2iT9OHa9.js} +1 -1
- package/server/{work-agent-prompt-Csb3fbVR.js → work-agent-prompt-D03s4DD1.js} +9 -9
- package/server/{workflows-D87ajwV6.js → workflows-BMBwLYPV.js} +281 -98
- package/server/workflows-BOmWGpIh.js +2 -0
- package/server/{workspace-iD8oULqu.js → workspace-BgflNCH0.js} +3 -3
- package/server/{workspace-AIOM7n00.js → workspace-Cn9ywfSW.js} +1 -1
- package/server/{workspace-anchor-drift-19cJ1bH5.js → workspace-anchor-drift-C8Fy3shi.js} +1 -1
- package/server/{workspace-anchor-drift-C3mK5wNI.js → workspace-anchor-drift-CMiNncwq.js} +5 -8
- package/server/{workspace-config-CJ7RqQiP.js → workspace-config-aUc2nIz6.js} +1 -1
- package/server/{workspace-manager-CXfrw4rR.js → workspace-manager-Bem7ZBs9.js} +521 -292
- package/server/workspace-manager-C0CpNh3t.js +3 -0
- package/server/{workspace-metadata-BuMRco5P.js → workspace-metadata-C5iSlPRo.js} +1 -1
- package/server/{workspace-metadata-eHSj_NsP.js → workspace-metadata-UKmTYmDQ.js} +2 -2
- package/server/{workspaces-DbtMX2TM.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-DyZJia9f.js +0 -3
- package/server/agents-Dnn4XgdB.js +0 -3
- package/server/archive-planning-BHCd_eL5.js +0 -2
- package/server/cli-D6mRfUE6.js +0 -3
- package/server/deacon-swarm-BkKR7SXu.js +0 -2
- package/server/delivery-C2M73sBg.js +0 -3
- package/server/dist-qcf9gAP0.js +0 -3
- package/server/event-store-5UKzh9Jf.js +0 -3
- package/server/forge-D647IMNa.js +0 -3
- package/server/fts-db-wROfFfje.js +0 -146
- package/server/hume-DtWN8oV5.js +0 -3
- package/server/inspect-agent-CPqXI81t.js +0 -2
- package/server/merge-ops-7QqziXAh.js +0 -2
- package/server/merge-rebase-B4pgzvQJ.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-BgW4lcIa.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-x6ztTQo4.js +0 -3
- package/server/record-BTwWhtBb.js +0 -3
- package/server/record-update-DaOKS7Wb.js +0 -277
- package/server/recovery-trip-D-wM9EfB.js +0 -44
- package/server/resume-DXIIfJNk.js +0 -3
- package/server/rollup-DxCjJaAM.js +0 -3
- package/server/settings-9jSGHBPY.js +0 -2
- package/server/specs-DKV3jIEs.js +0 -3
- package/server/stack-health-CoWAhA99.js +0 -3
- package/server/supervisor-CyR_mW5B.js +0 -2
- package/server/tmux-Ctk6RV5l.js +0 -3
- package/server/token-util-CrfQ2FKf.js +0 -3
- package/server/workflows-DN6NyVGd.js +0 -2
- package/server/workspace-manager-B38rFWA1.js +0 -3
|
@@ -1,20 +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 { r as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
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";
|
|
14
16
|
import { basename, dirname, join } from "node:path";
|
|
15
17
|
import { Data, Effect } from "effect";
|
|
16
18
|
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
17
|
-
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";
|
|
18
20
|
import { homedir } from "os";
|
|
19
21
|
import { hostname } from "node:os";
|
|
20
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";
|
|
@@ -48,6 +50,7 @@ function overdeckRowToAgentState(row) {
|
|
|
48
50
|
id: row.id,
|
|
49
51
|
issueId: row.issue_id,
|
|
50
52
|
workspace: row.workspace,
|
|
53
|
+
workspaceId: row.workspace_id ?? void 0,
|
|
51
54
|
role: row.role,
|
|
52
55
|
model: row.model ?? "",
|
|
53
56
|
status: row.status,
|
|
@@ -105,6 +108,7 @@ function stateToOverdeckParamsForDb(state, updatedAt) {
|
|
|
105
108
|
state.role,
|
|
106
109
|
state.status,
|
|
107
110
|
state.workspace,
|
|
111
|
+
state.workspaceId ?? getWorkspaceForIssue(state.issueId)?.id ?? null,
|
|
108
112
|
state.sessionId ?? null,
|
|
109
113
|
state.harness ?? "",
|
|
110
114
|
state.model ?? "",
|
|
@@ -167,6 +171,7 @@ function saveOverdeckAgentStateSync(state) {
|
|
|
167
171
|
var AGENT_COLUMNS_FOR_DB, SELECT_AGENT_SQL;
|
|
168
172
|
var init_agent_state_sync = __esmMin((() => {
|
|
169
173
|
init_agent_state_source();
|
|
174
|
+
init_resolver();
|
|
170
175
|
init_infra();
|
|
171
176
|
AGENT_COLUMNS_FOR_DB = [
|
|
172
177
|
"id",
|
|
@@ -174,6 +179,7 @@ var init_agent_state_sync = __esmMin((() => {
|
|
|
174
179
|
"role",
|
|
175
180
|
"status",
|
|
176
181
|
"workspace",
|
|
182
|
+
"workspace_id",
|
|
177
183
|
"session_id",
|
|
178
184
|
"harness",
|
|
179
185
|
"model",
|
|
@@ -223,6 +229,164 @@ var init_agent_state_sync = __esmMin((() => {
|
|
|
223
229
|
registerFeedbackAgentStateReader(listOverdeckAgentStatesSync);
|
|
224
230
|
}));
|
|
225
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);
|
|
388
|
+
}));
|
|
389
|
+
//#endregion
|
|
226
390
|
//#region ../../lib/pan-dir/records.ts
|
|
227
391
|
/**
|
|
228
392
|
* PAN-1908 / PAN-1919: per-issue permanent-record builder.
|
|
@@ -247,6 +411,7 @@ function projectPipeline(issueId, status, existing) {
|
|
|
247
411
|
issueId,
|
|
248
412
|
reviewStatus: status?.reviewStatus ?? "pending",
|
|
249
413
|
testStatus: status?.testStatus ?? "pending",
|
|
414
|
+
uatStatus: status?.uatStatus,
|
|
250
415
|
verificationStatus: status?.verificationStatus,
|
|
251
416
|
inspectStatus: status?.inspectStatus,
|
|
252
417
|
mergeStatus: status?.mergeStatus,
|
|
@@ -263,6 +428,7 @@ function projectPipeline(issueId, status, existing) {
|
|
|
263
428
|
...base,
|
|
264
429
|
reviewNotes: status.reviewNotes,
|
|
265
430
|
testNotes: status.testNotes,
|
|
431
|
+
uatNotes: status.uatNotes,
|
|
266
432
|
verificationNotes: status.verificationNotes,
|
|
267
433
|
inspectNotes: status.inspectNotes,
|
|
268
434
|
mergeNotes: status.mergeNotes,
|
|
@@ -394,10 +560,15 @@ async function buildIssueRecord(project, issueId, opts = {}) {
|
|
|
394
560
|
* the status the rebuild projects — observed clobbering PAN-399's passed
|
|
395
561
|
* verdict back to a pre-verdict snapshot. Same newer-wins rule (ISO `updatedAt`
|
|
396
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.
|
|
397
569
|
*/
|
|
398
570
|
function pickNewerPipeline(rebuilt, fresh) {
|
|
399
|
-
|
|
400
|
-
return rebuilt.updatedAt < fresh.updatedAt ? fresh : rebuilt;
|
|
571
|
+
return mergePipelineVerdictAware(rebuilt, fresh);
|
|
401
572
|
}
|
|
402
573
|
/**
|
|
403
574
|
* PAN-1908 / PAN-1919: rebuild and queue the per-issue permanent record for a
|
|
@@ -441,19 +612,46 @@ var init_records = __esmMin((() => {
|
|
|
441
612
|
init_agent_state_sync();
|
|
442
613
|
init_record();
|
|
443
614
|
init_record_update();
|
|
615
|
+
init_pipeline_verdict_merge();
|
|
444
616
|
}));
|
|
445
617
|
//#endregion
|
|
446
618
|
//#region ../../lib/overdeck/review-status-record-sync.ts
|
|
447
|
-
function
|
|
448
|
-
const
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
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
|
+
}
|
|
454
652
|
writeWorkspaceVerdictFallbackSync(issueId, status);
|
|
455
653
|
scheduleVerdictFallbackDrain(issueId);
|
|
456
|
-
});
|
|
654
|
+
})();
|
|
457
655
|
pendingJournalWrites.add(write);
|
|
458
656
|
write.finally(() => pendingJournalWrites.delete(write));
|
|
459
657
|
}
|
|
@@ -494,6 +692,7 @@ function enrichReviewNotesFromRecordSync(issueId, status) {
|
|
|
494
692
|
...status,
|
|
495
693
|
reviewNotes: pipeline.reviewNotes ?? status.reviewNotes,
|
|
496
694
|
testNotes: pipeline.testNotes ?? status.testNotes,
|
|
695
|
+
uatNotes: pipeline.uatNotes ?? status.uatNotes,
|
|
497
696
|
mergeNotes: pipeline.mergeNotes ?? status.mergeNotes,
|
|
498
697
|
inspectNotes: pipeline.inspectNotes ?? status.inspectNotes,
|
|
499
698
|
verificationNotes: pipeline.verificationNotes ?? status.verificationNotes,
|
|
@@ -510,6 +709,8 @@ function durableSubset(p) {
|
|
|
510
709
|
return {
|
|
511
710
|
reviewStatus: p.reviewStatus,
|
|
512
711
|
testStatus: p.testStatus,
|
|
712
|
+
uatStatus: p.uatStatus ?? void 0,
|
|
713
|
+
uatNotes: p.uatNotes,
|
|
513
714
|
mergeStatus: p.mergeStatus ?? void 0,
|
|
514
715
|
mergeStep: p.mergeStep,
|
|
515
716
|
inspectStatus: p.inspectStatus ?? void 0,
|
|
@@ -711,6 +912,21 @@ async function readWorkspaceVerdictFallback(issueId) {
|
|
|
711
912
|
* write was in flight stays at the live path for its own drain schedule, and
|
|
712
913
|
* no step ever renames onto a path another process may have just created.
|
|
713
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
|
+
}
|
|
714
930
|
async function drainWorkspaceVerdictFallback(issueId) {
|
|
715
931
|
const claims = claimWorkspaceVerdictFallbackSync(issueId);
|
|
716
932
|
if (!claims) return true;
|
|
@@ -719,16 +935,19 @@ async function drainWorkspaceVerdictFallback(issueId) {
|
|
|
719
935
|
const losers = claims.filter((claim) => claim !== winner);
|
|
720
936
|
const { fallback } = winner;
|
|
721
937
|
const journal = readPipelineSync(issueId);
|
|
722
|
-
|
|
938
|
+
const journalAtLeastAsNew = !!journal?.updatedAt && !(journal.updatedAt < fallback.updatedAt);
|
|
939
|
+
if (journalAtLeastAsNew && pipelineCoversFallbackVerdicts(journal, fallback)) {
|
|
723
940
|
for (const claim of claims) rmSync$1(claim.claimPath, { force: true });
|
|
724
941
|
return true;
|
|
725
942
|
}
|
|
726
|
-
|
|
943
|
+
const conflicted = journalAtLeastAsNew && pipelineConflictsWithFallbackVerdicts(journal, fallback);
|
|
944
|
+
const status = {
|
|
727
945
|
issueId: fallback.issueId,
|
|
728
946
|
...fallback.pipeline,
|
|
729
947
|
updatedAt: fallback.updatedAt,
|
|
730
948
|
readyForMerge: false
|
|
731
|
-
}
|
|
949
|
+
};
|
|
950
|
+
if (conflicted ? false : await updateIssueRecordForIssue(issueId, status)) {
|
|
732
951
|
for (const claim of claims) rmSync$1(claim.claimPath, { force: true });
|
|
733
952
|
return true;
|
|
734
953
|
}
|
|
@@ -818,12 +1037,21 @@ async function readJournalStatus(issueId) {
|
|
|
818
1037
|
const [pipeline, fallback] = await Promise.all([readPipeline(issueId), readWorkspaceVerdictFallback(issueId)]);
|
|
819
1038
|
return projectJournalStatus(pipeline, fallback);
|
|
820
1039
|
}
|
|
821
|
-
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;
|
|
822
1041
|
var init_review_status_record_sync = __esmMin((() => {
|
|
823
1042
|
init_records();
|
|
824
1043
|
init_record();
|
|
1044
|
+
init_pipeline_verdict_merge();
|
|
825
1045
|
init_projects();
|
|
826
1046
|
pendingJournalWrites = /* @__PURE__ */ new Set();
|
|
1047
|
+
DEFAULT_VERDICT_BACKOFF_DELAYS_MS = [
|
|
1048
|
+
2e3,
|
|
1049
|
+
5e3,
|
|
1050
|
+
1e4,
|
|
1051
|
+
2e4,
|
|
1052
|
+
4e4,
|
|
1053
|
+
8e4
|
|
1054
|
+
];
|
|
827
1055
|
FALLBACK_CLEARABLE_FIELDS = [
|
|
828
1056
|
"strikeTransportRetryCount",
|
|
829
1057
|
"strikeNextAttemptAt",
|
|
@@ -1049,6 +1277,7 @@ var init_review_status_reconcile = __esmMin((() => {
|
|
|
1049
1277
|
init_review_status_sync();
|
|
1050
1278
|
init_review_convergence();
|
|
1051
1279
|
init_projects();
|
|
1280
|
+
init_review_status_limits();
|
|
1052
1281
|
}));
|
|
1053
1282
|
//#endregion
|
|
1054
1283
|
//#region ../../lib/review-dispatch-decision.ts
|
|
@@ -1119,7 +1348,7 @@ function createGetModuleFromFilename(basePath = process.argv[1] ? dirname$1(proc
|
|
|
1119
1348
|
return (filename) => {
|
|
1120
1349
|
if (!filename) return;
|
|
1121
1350
|
const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;
|
|
1122
|
-
let { dir, base: file, ext } = posix.parse(normalizedFilename);
|
|
1351
|
+
let { dir, base: file, ext } = posix$1.parse(normalizedFilename);
|
|
1123
1352
|
if (".js" === ext || ".mjs" === ext || ".cjs" === ext) file = file.slice(0, -1 * ext.length);
|
|
1124
1353
|
const decodedFile = decodeURIComponent(file);
|
|
1125
1354
|
if (!dir) dir = ".";
|
|
@@ -6859,9 +7088,9 @@ var init_service = __esmMin((() => {
|
|
|
6859
7088
|
//#region ../../lib/telemetry/pipeline.ts
|
|
6860
7089
|
async function readCanonicalPipelineMembership(issueId) {
|
|
6861
7090
|
const [membershipModule, gatherModule, recordModule] = await Promise.all([
|
|
6862
|
-
import("./pipeline-membership-
|
|
6863
|
-
import("./pipeline-membership-gather-
|
|
6864
|
-
import("./record-
|
|
7091
|
+
import("./pipeline-membership-2_okL5bm.js"),
|
|
7092
|
+
import("./pipeline-membership-gather-4F1-tXKI.js"),
|
|
7093
|
+
import("./record-aVzu-LGm.js")
|
|
6865
7094
|
]);
|
|
6866
7095
|
const project = recordModule.resolveProjectForIssue(issueId);
|
|
6867
7096
|
if (!project) return false;
|
|
@@ -6912,11 +7141,16 @@ var init_pipeline = __esmMin((() => {
|
|
|
6912
7141
|
"claude-code",
|
|
6913
7142
|
"ohmypi",
|
|
6914
7143
|
"codex",
|
|
6915
|
-
"acp"
|
|
7144
|
+
"acp",
|
|
7145
|
+
"kimi-code"
|
|
6916
7146
|
]);
|
|
6917
7147
|
}));
|
|
6918
7148
|
//#endregion
|
|
6919
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
|
+
}
|
|
6920
7154
|
/**
|
|
6921
7155
|
* Authoritative "allowed to merge" predicate (PAN-1759). The flywheel
|
|
6922
7156
|
* orchestrator's pipeline verb says it INTENDS to merge an issue; this record
|
|
@@ -7045,49 +7279,59 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
7045
7279
|
"failed",
|
|
7046
7280
|
"skipped"
|
|
7047
7281
|
].includes(update.reviewStatus ?? "") && merged.reviewRequestedAt && (!merged.reviewSpawnedAt || Date.parse(merged.reviewRequestedAt) <= new Date(merged.reviewSpawnedAt).getTime())) merged.reviewRequestedAt = void 0;
|
|
7048
|
-
const history = [...status.history || []];
|
|
7049
7282
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
7050
|
-
|
|
7283
|
+
const rawHistory = [...status.history || []];
|
|
7284
|
+
if (update.reviewStatus && update.reviewStatus !== status.reviewStatus) rawHistory.push({
|
|
7051
7285
|
type: "review",
|
|
7052
7286
|
status: update.reviewStatus,
|
|
7053
7287
|
timestamp: now,
|
|
7054
|
-
notes: update.reviewNotes
|
|
7288
|
+
...update.reviewNotes ? { notes: update.reviewNotes } : {}
|
|
7055
7289
|
});
|
|
7056
|
-
if (update.testStatus && update.testStatus !== status.testStatus)
|
|
7290
|
+
if (update.testStatus && update.testStatus !== status.testStatus) rawHistory.push({
|
|
7057
7291
|
type: "test",
|
|
7058
7292
|
status: update.testStatus,
|
|
7059
7293
|
timestamp: now,
|
|
7060
|
-
notes: update.testNotes
|
|
7294
|
+
...update.testNotes ? { notes: update.testNotes } : {}
|
|
7061
7295
|
});
|
|
7062
|
-
if (update.uatStatus && update.uatStatus !== status.uatStatus)
|
|
7296
|
+
if (update.uatStatus && update.uatStatus !== status.uatStatus) rawHistory.push({
|
|
7063
7297
|
type: "uat",
|
|
7064
7298
|
status: update.uatStatus,
|
|
7065
7299
|
timestamp: now,
|
|
7066
|
-
notes: update.uatNotes
|
|
7300
|
+
...update.uatNotes ? { notes: update.uatNotes } : {}
|
|
7067
7301
|
});
|
|
7068
|
-
if (update.mergeStatus && update.mergeStatus !== status.mergeStatus)
|
|
7302
|
+
if (update.mergeStatus && update.mergeStatus !== status.mergeStatus) rawHistory.push({
|
|
7069
7303
|
type: "merge",
|
|
7070
7304
|
status: update.mergeStatus,
|
|
7071
7305
|
timestamp: now
|
|
7072
7306
|
});
|
|
7073
|
-
if (update.releaseStatus && update.releaseStatus !== status.releaseStatus)
|
|
7307
|
+
if (update.releaseStatus && update.releaseStatus !== status.releaseStatus) rawHistory.push({
|
|
7074
7308
|
type: "release",
|
|
7075
7309
|
status: update.releaseStatus,
|
|
7076
7310
|
timestamp: now,
|
|
7077
|
-
notes: update.releaseNotes
|
|
7311
|
+
...update.releaseNotes ? { notes: update.releaseNotes } : {}
|
|
7078
7312
|
});
|
|
7079
|
-
while (history.length > 10) history.shift();
|
|
7080
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
|
+
});
|
|
7081
7325
|
const updated = normalizeReviewStatusSync({
|
|
7082
7326
|
...merged,
|
|
7083
7327
|
issueId,
|
|
7084
7328
|
updatedAt: now,
|
|
7085
7329
|
readyForMerge,
|
|
7086
|
-
history
|
|
7330
|
+
history: boundedHistory
|
|
7087
7331
|
});
|
|
7088
7332
|
if (readyForMerge && !status.readyForMerge && updated.prUrl) (async () => {
|
|
7089
7333
|
try {
|
|
7090
|
-
const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-
|
|
7334
|
+
const { isGitHubAppConfigured, reportCommitStatus } = await import("./github-app-CpQSDlv8.js");
|
|
7091
7335
|
if (!isGitHubAppConfigured()) return;
|
|
7092
7336
|
const prMatch = updated.prUrl.match(/github\.com\/([^/]+)\/([^/]+)\/pull/);
|
|
7093
7337
|
if (!prMatch) return;
|
|
@@ -7107,9 +7351,10 @@ function setReviewStatusSync(issueId, update, existing) {
|
|
|
7107
7351
|
console.warn(`[review-status] Failed to report commit status: ${err.message}`);
|
|
7108
7352
|
}
|
|
7109
7353
|
})();
|
|
7110
|
-
|
|
7354
|
+
const verdictWrite = carriesNewTerminalVerdict(status, update);
|
|
7355
|
+
updateIssueRecordForReviewStatusSync(issueId, updated, { verdictWrite });
|
|
7111
7356
|
try {
|
|
7112
|
-
upsertReviewStatusSync(
|
|
7357
|
+
upsertReviewStatusSync(dbStatus);
|
|
7113
7358
|
} catch (err) {
|
|
7114
7359
|
const msg = err instanceof Error ? err.message : String(err);
|
|
7115
7360
|
console.warn(`[review-status] DB cache write skipped for ${issueId} (${msg}); journal holds the verdict, host will reconcile on read.`);
|
|
@@ -7341,8 +7586,8 @@ function emitReactiveLifecycleEvent(type, issueId) {
|
|
|
7341
7586
|
}
|
|
7342
7587
|
async function deliverReviewVerdictFeedbackHostSide(issueId, status) {
|
|
7343
7588
|
try {
|
|
7344
|
-
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-
|
|
7345
|
-
const { getAgentStateSync } = await import("./agents-
|
|
7589
|
+
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-HRY9P4bN.js");
|
|
7590
|
+
const { getAgentStateSync } = await import("./agents-IPSa5kzn.js");
|
|
7346
7591
|
const runId = getAgentStateSync(`agent-${issueId.toLowerCase()}-review`)?.reviewRunId;
|
|
7347
7592
|
if ((await Effect.runPromise(deliverReviewVerdictFeedback({
|
|
7348
7593
|
issueId,
|
|
@@ -7385,7 +7630,7 @@ function maybeAutoDispatchReviewHostSide(issueId, status) {
|
|
|
7385
7630
|
}
|
|
7386
7631
|
async function dispatchReviewHostSide(issueId, prUrl) {
|
|
7387
7632
|
try {
|
|
7388
|
-
const { hasDurableReviewPipelineHandler, startDurableReviewPipelineHostSide } = await import("./durable-review-pipeline-
|
|
7633
|
+
const { hasDurableReviewPipelineHandler, startDurableReviewPipelineHostSide } = await import("./durable-review-pipeline-CStTgOAf.js");
|
|
7389
7634
|
if (!hasDurableReviewPipelineHandler()) {
|
|
7390
7635
|
if (!loggedMissingPipelineHandler) {
|
|
7391
7636
|
loggedMissingPipelineHandler = true;
|
|
@@ -7393,7 +7638,7 @@ async function dispatchReviewHostSide(issueId, prUrl) {
|
|
|
7393
7638
|
}
|
|
7394
7639
|
return;
|
|
7395
7640
|
}
|
|
7396
|
-
const { spawnReviewRoleForIssue } = await import("./review-agent-
|
|
7641
|
+
const { spawnReviewRoleForIssue } = await import("./review-agent-CD3RQ-tc.js");
|
|
7397
7642
|
if (!await startDurableReviewPipelineHostSide({
|
|
7398
7643
|
issueId,
|
|
7399
7644
|
...prUrl ? { prUrl } : {},
|
|
@@ -7415,13 +7660,13 @@ function maybeRecoverTestVerdictHostSide(issueId, status) {
|
|
|
7415
7660
|
}
|
|
7416
7661
|
async function recoverTestVerdictHostSide(issueId) {
|
|
7417
7662
|
try {
|
|
7418
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
7663
|
+
const { resolveProjectFromIssueSync } = await import("./projects-WqMWCdpa.js");
|
|
7419
7664
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
7420
7665
|
if (!resolved) return;
|
|
7421
7666
|
const { existsSync } = await import("fs");
|
|
7422
7667
|
const workspace = join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`);
|
|
7423
7668
|
if (!existsSync(workspace)) return;
|
|
7424
|
-
const { readTestVerdictArtifact } = await import("./test-verdict-
|
|
7669
|
+
const { readTestVerdictArtifact } = await import("./test-verdict-NdtgRBuA.js");
|
|
7425
7670
|
const artifact = readTestVerdictArtifact(workspace);
|
|
7426
7671
|
if (!artifact) return;
|
|
7427
7672
|
setReviewStatusSync(issueId, {
|
|
@@ -7468,13 +7713,13 @@ function resetPipelineVerdictsForWorkStartSync(issueId, options = {}) {
|
|
|
7468
7713
|
}
|
|
7469
7714
|
async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
|
|
7470
7715
|
try {
|
|
7471
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
7716
|
+
const { resolveProjectFromIssueSync } = await import("./projects-WqMWCdpa.js");
|
|
7472
7717
|
const resolved = resolveProjectFromIssueSync(issueId);
|
|
7473
7718
|
const workspace = resolved ? join$1(resolved.projectPath, "workspaces", `feature-${issueId.toLowerCase()}`) : void 0;
|
|
7474
7719
|
const notes = status.testNotes;
|
|
7475
7720
|
let feedbackPath;
|
|
7476
7721
|
try {
|
|
7477
|
-
const { writeFeedbackFile } = await import("./feedback-writer-
|
|
7722
|
+
const { writeFeedbackFile } = await import("./feedback-writer-CTSuA6lw.js");
|
|
7478
7723
|
const r = await Effect.runPromise(writeFeedbackFile({
|
|
7479
7724
|
issueId,
|
|
7480
7725
|
workspacePath: workspace,
|
|
@@ -7486,10 +7731,10 @@ async function deliverTestFailureToWorkAgentHostSide(issueId, status) {
|
|
|
7486
7731
|
if (r.success) feedbackPath = r.filePath;
|
|
7487
7732
|
} catch {}
|
|
7488
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.`;
|
|
7489
|
-
const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-
|
|
7734
|
+
const { resolveIssueFeedbackTarget, surfaceIssueFeedbackNeedsYou } = await import("./feedback-target-D9Tex35_.js");
|
|
7490
7735
|
const target = await resolveIssueFeedbackTarget(issueId);
|
|
7491
7736
|
if ("agentId" in target) {
|
|
7492
|
-
const { messageAgent } = await import("./agents-
|
|
7737
|
+
const { messageAgent } = await import("./agents-IPSa5kzn.js");
|
|
7493
7738
|
await messageAgent(target.agentId, message, "internal", { owesRework: true });
|
|
7494
7739
|
console.log(`[review-status] delivered test failure to ${target.agentId} for ${issueId} (host-side)`);
|
|
7495
7740
|
} else await surfaceIssueFeedbackNeedsYou(issueId, target.reason, {
|
|
@@ -7692,8 +7937,10 @@ var init_review_status = __esmMin((() => {
|
|
|
7692
7937
|
init_review_status_source();
|
|
7693
7938
|
init_review_status_normalize();
|
|
7694
7939
|
init_review_status_record_sync();
|
|
7940
|
+
init_pipeline_verdict_merge();
|
|
7695
7941
|
init_review_status_reconcile();
|
|
7696
7942
|
init_review_dispatch_decision();
|
|
7943
|
+
init_review_status_limits();
|
|
7697
7944
|
init_review_status_read();
|
|
7698
7945
|
init_pipeline();
|
|
7699
7946
|
registerReviewStatusMapReader(() => getAllReviewStatusesFromDb());
|
|
@@ -7735,6 +7982,6 @@ var init_review_status = __esmMin((() => {
|
|
|
7735
7982
|
});
|
|
7736
7983
|
}));
|
|
7737
7984
|
//#endregion
|
|
7738
|
-
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 };
|
|
7739
7986
|
|
|
7740
|
-
//# 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-DvyZAbGR.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
|