@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
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
+
import { a as runMemoryFtsTransactionSync, i as runMemoryFtsStatementSync, n as getMemoryFtsDatabaseSync, r as init_fts_operations, t as closeMemoryFtsDatabasesInProcess } from "./fts-operations-DP9R-8Q3.js";
|
|
3
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
4
|
+
import { constants } from "node:fs";
|
|
5
|
+
import { open, realpath } from "node:fs/promises";
|
|
6
|
+
import { Worker } from "node:worker_threads";
|
|
7
|
+
//#region ../../lib/memory/pin-path.ts
|
|
8
|
+
/**
|
|
9
|
+
* Lexically resolve a pinned-doc path against the project root, returning
|
|
10
|
+
* the project-relative path when it stays inside it. Returns null when the
|
|
11
|
+
* resolved target escapes the root via an absolute path elsewhere on disk or
|
|
12
|
+
* a `../` traversal.
|
|
13
|
+
*
|
|
14
|
+
* This check alone is NOT sufficient to gate storing or reading a pin: it
|
|
15
|
+
* only inspects the path string, so an in-project symlink (e.g.
|
|
16
|
+
* `docs/private -> ~/.ssh`) passes lexically while actually pointing outside
|
|
17
|
+
* the project. Use `verifyPinPathContainment` for that — this function
|
|
18
|
+
* remains exported for unpin, which only needs to compute the stored lookup
|
|
19
|
+
* key and must keep working even if the underlying file no longer exists.
|
|
20
|
+
*/
|
|
21
|
+
function resolveContainedPinPath(projectRoot, docPath) {
|
|
22
|
+
const absoluteRoot = resolve(projectRoot);
|
|
23
|
+
const rel = relative(absoluteRoot, isAbsolute(docPath) ? resolve(docPath) : resolve(absoluteRoot, docPath));
|
|
24
|
+
if (rel === "" || rel.startsWith("..") || isAbsolute(rel)) return null;
|
|
25
|
+
return rel;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Symlink-safe containment check AND read, combined into a single verified
|
|
29
|
+
* file descriptor. verifyPinPathContainment (path-in, path-out) still leaves
|
|
30
|
+
* a time-of-check/time-of-use gap for a caller that separately re-opens the
|
|
31
|
+
* path afterward — a concurrent local process could retarget a symlink in
|
|
32
|
+
* between (review fix, cycle 3 non-blocking). This opens the realpath-
|
|
33
|
+
* resolved (symlink-free) target once, verifies it's a regular file via
|
|
34
|
+
* `fstat` on that SAME open handle, and reads from that SAME handle — no
|
|
35
|
+
* second path-based lookup exists for anything to race. Returns null on any
|
|
36
|
+
* escape, missing path, or non-regular-file target, exactly like
|
|
37
|
+
* verifyPinPathContainment.
|
|
38
|
+
*
|
|
39
|
+
* Review fix (cycle 4 non-blocking): `realTarget` is still a pathname, and a
|
|
40
|
+
* concurrent local writer could replace its final component with a symlink
|
|
41
|
+
* between the `realpath()` call and this `open()` call. O_NOFOLLOW makes
|
|
42
|
+
* that race fail closed instead of silently following the swapped-in
|
|
43
|
+
* symlink — `open` errors (caught below, returns null) rather than
|
|
44
|
+
* succeeding on an attacker-controlled target. This does not protect
|
|
45
|
+
* replaceable PARENT directory components (a full openat-style walk would),
|
|
46
|
+
* which is why this remains a narrowed, not eliminated, advisory.
|
|
47
|
+
*/
|
|
48
|
+
async function readVerifiedPinFile(projectRoot, docPath) {
|
|
49
|
+
const relativePath = resolveContainedPinPath(projectRoot, docPath);
|
|
50
|
+
if (relativePath === null) return null;
|
|
51
|
+
let realRoot;
|
|
52
|
+
let realTarget;
|
|
53
|
+
try {
|
|
54
|
+
realRoot = await realpath(resolve(projectRoot));
|
|
55
|
+
realTarget = await realpath(resolve(projectRoot, relativePath));
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const relFromRealRoot = relative(realRoot, realTarget);
|
|
60
|
+
if (relFromRealRoot === "" || relFromRealRoot.startsWith("..") || isAbsolute(relFromRealRoot)) return null;
|
|
61
|
+
let handle;
|
|
62
|
+
try {
|
|
63
|
+
handle = await open(realTarget, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
64
|
+
if (!(await handle.stat()).isFile()) return null;
|
|
65
|
+
return await handle.readFile("utf8");
|
|
66
|
+
} catch {
|
|
67
|
+
return null;
|
|
68
|
+
} finally {
|
|
69
|
+
await handle?.close().catch(() => {});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
var init_pin_path = __esmMin((() => {}));
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region ../../lib/memory/fts-db.ts
|
|
75
|
+
async function getMemoryFtsDatabase(projectId) {
|
|
76
|
+
const cached = clients.get(projectId);
|
|
77
|
+
if (cached) return cached;
|
|
78
|
+
await postMemoryFtsRequest("initialize", projectId);
|
|
79
|
+
const client = createClient(projectId);
|
|
80
|
+
clients.set(projectId, client);
|
|
81
|
+
return client;
|
|
82
|
+
}
|
|
83
|
+
async function withMemoryFtsDatabase(projectId, operation) {
|
|
84
|
+
return operation(await getMemoryFtsDatabase(projectId));
|
|
85
|
+
}
|
|
86
|
+
function runMemoryFtsStatement(projectId, statement) {
|
|
87
|
+
return postMemoryFtsRequest("statement", projectId, { statement });
|
|
88
|
+
}
|
|
89
|
+
function runMemoryFtsTransaction(projectId, statements) {
|
|
90
|
+
return postMemoryFtsRequest("transaction", projectId, { statements });
|
|
91
|
+
}
|
|
92
|
+
function closeMemoryFtsDatabases() {
|
|
93
|
+
clients.clear();
|
|
94
|
+
closeMemoryFtsDatabasesInProcess();
|
|
95
|
+
if (!worker) return;
|
|
96
|
+
const closing = worker;
|
|
97
|
+
worker = null;
|
|
98
|
+
pendingRequests.forEach((request) => request.reject(/* @__PURE__ */ new Error("Memory FTS worker closed")));
|
|
99
|
+
pendingRequests.clear();
|
|
100
|
+
closing.postMessage({
|
|
101
|
+
id: nextRequestId++,
|
|
102
|
+
operation: "close"
|
|
103
|
+
});
|
|
104
|
+
closing.terminate();
|
|
105
|
+
}
|
|
106
|
+
function createClient(projectId) {
|
|
107
|
+
return {
|
|
108
|
+
exec: async (sql) => {
|
|
109
|
+
await runMemoryFtsStatement(projectId, {
|
|
110
|
+
sql,
|
|
111
|
+
method: "exec"
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
prepare: (sql) => ({
|
|
115
|
+
run: (...params) => runMemoryFtsStatement(projectId, {
|
|
116
|
+
sql,
|
|
117
|
+
params,
|
|
118
|
+
method: "run"
|
|
119
|
+
}),
|
|
120
|
+
get: (...params) => runMemoryFtsStatement(projectId, {
|
|
121
|
+
sql,
|
|
122
|
+
params,
|
|
123
|
+
method: "get"
|
|
124
|
+
}),
|
|
125
|
+
all: (...params) => runMemoryFtsStatement(projectId, {
|
|
126
|
+
sql,
|
|
127
|
+
params,
|
|
128
|
+
method: "all"
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function postMemoryFtsRequest(operation, projectId, payload = {}) {
|
|
134
|
+
if (shouldRunInline()) return Promise.resolve().then(() => runInline(operation, projectId, payload));
|
|
135
|
+
const id = nextRequestId++;
|
|
136
|
+
return new Promise((resolve, reject) => {
|
|
137
|
+
pendingRequests.set(id, {
|
|
138
|
+
resolve,
|
|
139
|
+
reject
|
|
140
|
+
});
|
|
141
|
+
const currentWorker = getMemoryFtsWorker();
|
|
142
|
+
currentWorker.ref();
|
|
143
|
+
currentWorker.postMessage({
|
|
144
|
+
id,
|
|
145
|
+
operation,
|
|
146
|
+
projectId,
|
|
147
|
+
...payload
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function runInline(operation, projectId, payload = {}) {
|
|
152
|
+
switch (operation) {
|
|
153
|
+
case "initialize":
|
|
154
|
+
getMemoryFtsDatabaseSync(requireProjectId(projectId));
|
|
155
|
+
return null;
|
|
156
|
+
case "statement": return runMemoryFtsStatementSync(requireProjectId(projectId), payload.statement);
|
|
157
|
+
case "transaction": return runMemoryFtsTransactionSync(requireProjectId(projectId), payload.statements);
|
|
158
|
+
case "close":
|
|
159
|
+
closeMemoryFtsDatabasesInProcess();
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function shouldRunInline() {
|
|
164
|
+
return import.meta.url.endsWith(".ts");
|
|
165
|
+
}
|
|
166
|
+
function requireProjectId(projectId) {
|
|
167
|
+
if (!projectId) throw new Error("Memory FTS request missing projectId");
|
|
168
|
+
return projectId;
|
|
169
|
+
}
|
|
170
|
+
function getMemoryFtsWorker() {
|
|
171
|
+
if (worker) return worker;
|
|
172
|
+
const nextWorker = new Worker(memoryFtsWorkerUrl(), {
|
|
173
|
+
type: "module",
|
|
174
|
+
execArgv: process.execArgv.filter((arg) => !arg.startsWith("--inspect"))
|
|
175
|
+
});
|
|
176
|
+
nextWorker.on("message", (message) => {
|
|
177
|
+
const request = pendingRequests.get(message.id);
|
|
178
|
+
if (!request) return;
|
|
179
|
+
pendingRequests.delete(message.id);
|
|
180
|
+
if (message.ok) request.resolve(message.result);
|
|
181
|
+
else request.reject(new Error(message.error ?? "Memory FTS worker failed"));
|
|
182
|
+
if (pendingRequests.size === 0) nextWorker.unref();
|
|
183
|
+
});
|
|
184
|
+
nextWorker.on("error", (err) => {
|
|
185
|
+
failPendingRequests(err);
|
|
186
|
+
if (worker === nextWorker) worker = null;
|
|
187
|
+
});
|
|
188
|
+
nextWorker.on("exit", (code) => {
|
|
189
|
+
if (worker === nextWorker) worker = null;
|
|
190
|
+
if (code !== 0) failPendingRequests(/* @__PURE__ */ new Error(`Memory FTS worker exited with code ${code}`));
|
|
191
|
+
});
|
|
192
|
+
worker = nextWorker;
|
|
193
|
+
return worker;
|
|
194
|
+
}
|
|
195
|
+
function failPendingRequests(error) {
|
|
196
|
+
pendingRequests.forEach((request) => request.reject(error));
|
|
197
|
+
pendingRequests.clear();
|
|
198
|
+
}
|
|
199
|
+
function memoryFtsWorkerUrl() {
|
|
200
|
+
if (import.meta.url.endsWith("/dist/cli/index.js")) return new URL("../lib/memory/fts-worker.js", import.meta.url);
|
|
201
|
+
if (import.meta.url.endsWith("/dist/index.js") || /\/dist\/fts-db-[^/]+\.js$/.test(import.meta.url)) return new URL("./lib/memory/fts-worker.js", import.meta.url);
|
|
202
|
+
if (import.meta.url.endsWith("/dist/dashboard/server.js") || /\/dist\/dashboard\/fts-db-[^/]+\.js$/.test(import.meta.url)) return new URL("./memory-fts-worker.js", import.meta.url);
|
|
203
|
+
return import.meta.url.endsWith(".ts") ? new URL("./fts-worker.ts", import.meta.url) : new URL("./fts-worker.js", import.meta.url);
|
|
204
|
+
}
|
|
205
|
+
var worker, nextRequestId, pendingRequests, clients;
|
|
206
|
+
var init_fts_db = __esmMin((() => {
|
|
207
|
+
init_fts_operations();
|
|
208
|
+
worker = null;
|
|
209
|
+
nextRequestId = 1;
|
|
210
|
+
pendingRequests = /* @__PURE__ */ new Map();
|
|
211
|
+
clients = /* @__PURE__ */ new Map();
|
|
212
|
+
}));
|
|
213
|
+
//#endregion
|
|
214
|
+
//#region ../../lib/memory/search.ts
|
|
215
|
+
async function searchMemory(input) {
|
|
216
|
+
const matchQuery = buildMatchQuery(input.query);
|
|
217
|
+
if (!matchQuery) return [];
|
|
218
|
+
const limit = normalizeLimit(input.limit);
|
|
219
|
+
const identityPredicate = buildIdentityPredicate(input);
|
|
220
|
+
if (!identityPredicate) return [];
|
|
221
|
+
const rows = await runMemoryFtsStatement(input.projectId, {
|
|
222
|
+
method: "all",
|
|
223
|
+
sql: `
|
|
224
|
+
SELECT
|
|
225
|
+
rowid,
|
|
226
|
+
content,
|
|
227
|
+
display_content,
|
|
228
|
+
source,
|
|
229
|
+
branch,
|
|
230
|
+
entry_date,
|
|
231
|
+
entry_time,
|
|
232
|
+
entry_type,
|
|
233
|
+
files,
|
|
234
|
+
tags,
|
|
235
|
+
doc_type,
|
|
236
|
+
scope,
|
|
237
|
+
project_id,
|
|
238
|
+
workspace_id,
|
|
239
|
+
issue_id,
|
|
240
|
+
run_id,
|
|
241
|
+
session_id,
|
|
242
|
+
agent_role,
|
|
243
|
+
agent_harness,
|
|
244
|
+
bm25(memory_fts) AS bm25
|
|
245
|
+
FROM memory_fts
|
|
246
|
+
WHERE memory_fts MATCH ?
|
|
247
|
+
AND project_id = ?
|
|
248
|
+
${identityPredicate.sql}
|
|
249
|
+
${input.docType ? "AND doc_type = ?" : ""}
|
|
250
|
+
AND (? = 1 OR (entry_date || 'T' || entry_time) > COALESCE((
|
|
251
|
+
SELECT MAX(from_timestamp)
|
|
252
|
+
FROM reset_markers
|
|
253
|
+
WHERE (scope = 'project' AND scope_id = memory_fts.project_id)
|
|
254
|
+
OR (scope = 'workspace' AND scope_id = memory_fts.workspace_id)
|
|
255
|
+
OR (scope = 'issue' AND scope_id = memory_fts.issue_id)
|
|
256
|
+
OR (scope = 'session' AND scope_id = memory_fts.session_id)
|
|
257
|
+
), ''))
|
|
258
|
+
ORDER BY bm25(memory_fts) ASC
|
|
259
|
+
LIMIT ?
|
|
260
|
+
`,
|
|
261
|
+
params: [
|
|
262
|
+
matchQuery,
|
|
263
|
+
input.projectId,
|
|
264
|
+
...identityPredicate.params,
|
|
265
|
+
...input.docType ? [input.docType] : [],
|
|
266
|
+
input.includeArchived ? 1 : 0,
|
|
267
|
+
limit * OVERFETCH_RATIO
|
|
268
|
+
]
|
|
269
|
+
});
|
|
270
|
+
const tokenBudget = input.sibling || input.crossWorkspace ? normalizeSiblingTokenBudget(input.siblingTokenBudget) : null;
|
|
271
|
+
const queryTerms = extractQueryTerms(input.query);
|
|
272
|
+
const now = input.now ?? /* @__PURE__ */ new Date();
|
|
273
|
+
return rows.map((row) => rowToHit(row, tokenBudget, rankHit(row, queryTerms, now))).filter((hit) => matchesTags(hit, input.tags)).sort((a, b) => b.rankScore - a.rankScore || b.entryDate.localeCompare(a.entryDate) || b.entryTime.localeCompare(a.entryTime)).slice(0, limit);
|
|
274
|
+
}
|
|
275
|
+
function buildMatchQuery(query) {
|
|
276
|
+
return extractQueryTerms(query).map((term) => `"${term.replaceAll("\"", "\"\"")}"`).join(" ");
|
|
277
|
+
}
|
|
278
|
+
function extractQueryTerms(query) {
|
|
279
|
+
return query.match(/[\p{L}\p{N}_-]+/gu) ?? [];
|
|
280
|
+
}
|
|
281
|
+
function buildIdentityPredicate(input) {
|
|
282
|
+
if (input.sibling) {
|
|
283
|
+
if (!input.workspaceId || !input.issueId) return null;
|
|
284
|
+
return {
|
|
285
|
+
sql: "AND workspace_id != ? AND issue_id != ?",
|
|
286
|
+
params: [input.workspaceId, input.issueId]
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
if (input.crossWorkspace) {
|
|
290
|
+
if (!input.excludeWorkspaceId) return null;
|
|
291
|
+
return {
|
|
292
|
+
sql: "AND workspace_id != ?",
|
|
293
|
+
params: [input.excludeWorkspaceId]
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
const clauses = [];
|
|
297
|
+
const params = [];
|
|
298
|
+
if (input.workspaceId) {
|
|
299
|
+
clauses.push("AND workspace_id = ?");
|
|
300
|
+
params.push(input.workspaceId);
|
|
301
|
+
}
|
|
302
|
+
if (input.issueId) {
|
|
303
|
+
clauses.push("AND issue_id = ?");
|
|
304
|
+
params.push(input.issueId);
|
|
305
|
+
}
|
|
306
|
+
return {
|
|
307
|
+
sql: clauses.join("\n "),
|
|
308
|
+
params
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
function normalizeLimit(limit) {
|
|
312
|
+
if (limit === void 0) return DEFAULT_LIMIT;
|
|
313
|
+
if (!Number.isInteger(limit) || limit <= 0) return DEFAULT_LIMIT;
|
|
314
|
+
return limit;
|
|
315
|
+
}
|
|
316
|
+
function normalizeSiblingTokenBudget(tokenBudget) {
|
|
317
|
+
if (tokenBudget === void 0) return DEFAULT_SIBLING_TOKEN_BUDGET;
|
|
318
|
+
if (!Number.isInteger(tokenBudget) || tokenBudget <= 0) return DEFAULT_SIBLING_TOKEN_BUDGET;
|
|
319
|
+
return tokenBudget;
|
|
320
|
+
}
|
|
321
|
+
function rankHit(row, queryTerms, now) {
|
|
322
|
+
const tags = splitList(row.tags).map((tag) => tag.toLowerCase());
|
|
323
|
+
const tagSet = new Set(tags);
|
|
324
|
+
const matchingTagCount = new Set(queryTerms.map((term) => term.toLowerCase()).filter((term) => tagSet.has(term))).size;
|
|
325
|
+
const ageDays = ageInDays(`${row.entry_date}T${row.entry_time}`, now);
|
|
326
|
+
const boostedScore = Math.abs(row.bm25) * Math.exp(-RECENCY_DECAY_RATE * ageDays) + TAG_BOOST * matchingTagCount;
|
|
327
|
+
if (ageDays < HIGH_SIGNAL_WINDOW_HOURS / 24 && tags.some((tag) => HIGH_SIGNAL_TAGS.has(tag))) return Math.max(boostedScore, HIGH_SIGNAL_SCORE_FLOOR);
|
|
328
|
+
return boostedScore;
|
|
329
|
+
}
|
|
330
|
+
function ageInDays(timestamp, now) {
|
|
331
|
+
const parsed = Date.parse(timestamp);
|
|
332
|
+
if (Number.isNaN(parsed)) return 0;
|
|
333
|
+
return Math.max(0, (now.getTime() - parsed) / 864e5);
|
|
334
|
+
}
|
|
335
|
+
function rowToHit(row, tokenBudget, rankScore) {
|
|
336
|
+
return {
|
|
337
|
+
rowid: row.rowid,
|
|
338
|
+
content: row.content,
|
|
339
|
+
displayContent: row.display_content,
|
|
340
|
+
source: row.source,
|
|
341
|
+
branch: row.branch,
|
|
342
|
+
entryDate: row.entry_date,
|
|
343
|
+
entryTime: row.entry_time,
|
|
344
|
+
entryType: row.entry_type,
|
|
345
|
+
files: splitList(row.files),
|
|
346
|
+
tags: splitList(row.tags),
|
|
347
|
+
docType: row.doc_type,
|
|
348
|
+
scope: row.scope,
|
|
349
|
+
projectId: row.project_id,
|
|
350
|
+
workspaceId: row.workspace_id,
|
|
351
|
+
issueId: row.issue_id,
|
|
352
|
+
runId: row.run_id,
|
|
353
|
+
sessionId: row.session_id,
|
|
354
|
+
agentRole: row.agent_role,
|
|
355
|
+
agentHarness: row.agent_harness,
|
|
356
|
+
bm25: row.bm25,
|
|
357
|
+
rankScore,
|
|
358
|
+
provenance: `${row.workspace_id}:${row.issue_id}`,
|
|
359
|
+
tokenBudget
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
function splitList(value) {
|
|
363
|
+
return value.split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
364
|
+
}
|
|
365
|
+
function matchesTags(hit, tags) {
|
|
366
|
+
if (!tags || tags.length === 0) return true;
|
|
367
|
+
return tags.every((tag) => hit.tags.includes(tag));
|
|
368
|
+
}
|
|
369
|
+
var DEFAULT_LIMIT, OVERFETCH_RATIO, DEFAULT_SIBLING_TOKEN_BUDGET, RECENCY_DECAY_RATE, TAG_BOOST, HIGH_SIGNAL_SCORE_FLOOR, HIGH_SIGNAL_WINDOW_HOURS, HIGH_SIGNAL_TAGS;
|
|
370
|
+
var init_search = __esmMin((() => {
|
|
371
|
+
init_fts_db();
|
|
372
|
+
DEFAULT_LIMIT = 20;
|
|
373
|
+
OVERFETCH_RATIO = 3;
|
|
374
|
+
DEFAULT_SIBLING_TOKEN_BUDGET = 1500;
|
|
375
|
+
RECENCY_DECAY_RATE = .02;
|
|
376
|
+
TAG_BOOST = .3;
|
|
377
|
+
HIGH_SIGNAL_SCORE_FLOOR = 1;
|
|
378
|
+
HIGH_SIGNAL_WINDOW_HOURS = 72;
|
|
379
|
+
HIGH_SIGNAL_TAGS = new Set([
|
|
380
|
+
"error",
|
|
381
|
+
"decision",
|
|
382
|
+
"blocker",
|
|
383
|
+
"shipped",
|
|
384
|
+
"architecture",
|
|
385
|
+
"review-blocker",
|
|
386
|
+
"test-failure",
|
|
387
|
+
"merge-risk",
|
|
388
|
+
"architecture-decision",
|
|
389
|
+
"regression"
|
|
390
|
+
]);
|
|
391
|
+
}));
|
|
392
|
+
//#endregion
|
|
393
|
+
export { init_fts_db as a, withMemoryFtsDatabase as c, closeMemoryFtsDatabases as i, init_pin_path as l, init_search as n, runMemoryFtsStatement as o, searchMemory as r, runMemoryFtsTransaction as s, buildMatchQuery as t, readVerifiedPinFile as u };
|
|
394
|
+
|
|
395
|
+
//# sourceMappingURL=search-DdtIjAiu.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
3
|
-
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-
|
|
4
|
-
import {
|
|
2
|
+
import { St as init_auto_commit, wt as queueAutoCommit } from "./config-yaml-BSCqwmX0.js";
|
|
3
|
+
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-CKLk5aZ-.js";
|
|
4
|
+
import { C as init_specs, N as getProjectPanPaths } from "./io-mxOWMZ7I.js";
|
|
5
5
|
import { dirname, join } from "node:path";
|
|
6
6
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
7
7
|
//#region ../../lib/backlog/types.ts
|
|
@@ -275,4 +275,4 @@ var init_sequence_io = __esmMin((() => {
|
|
|
275
275
|
//#endregion
|
|
276
276
|
export { parseSequenceMd as n, writeSequenceMd as r, init_sequence_io as t };
|
|
277
277
|
|
|
278
|
-
//# sourceMappingURL=sequence-io-
|
|
278
|
+
//# sourceMappingURL=sequence-io-Fw-cLyDs.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { a as __toCommonJS, n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-
|
|
3
|
-
import {
|
|
4
|
-
import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-
|
|
5
|
-
import {
|
|
2
|
+
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-CKLk5aZ-.js";
|
|
3
|
+
import { Et as spawnRun, Gn as determineModel, Ot as stopAgent, a as listRunningAgentsSync, b as init_agents, br as getAgentStateSync, ti as getAgentRuntimeStateSync } from "./queries-DVpl1vsU.js";
|
|
4
|
+
import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-BPNEXczv.js";
|
|
5
|
+
import { N as getProjectPanPaths, P as init_paths } from "./io-mxOWMZ7I.js";
|
|
6
|
+
import { n as parseSequenceMd, t as init_sequence_io } from "./sequence-io-Fw-cLyDs.js";
|
|
6
7
|
import { dirname, join } from "node:path";
|
|
7
8
|
import { Effect } from "effect";
|
|
8
9
|
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
@@ -98,7 +99,8 @@ function detectPartOf(childRef, body) {
|
|
|
98
99
|
async function collectOpenBacklog(projectRoot, issues, opts) {
|
|
99
100
|
const now = Date.now();
|
|
100
101
|
const openIssues = issues.filter((issue) => !CLOSED_STATES.has(issue.state));
|
|
101
|
-
const
|
|
102
|
+
const paths = getProjectPanPaths(projectRoot);
|
|
103
|
+
const specsDir = paths.specsDir;
|
|
102
104
|
const workspacesDir = join(projectRoot, "workspaces");
|
|
103
105
|
const issuesWithSpecs = /* @__PURE__ */ new Set();
|
|
104
106
|
if (!opts?.hasSpecFn) {
|
|
@@ -110,7 +112,7 @@ async function collectOpenBacklog(projectRoot, issues, opts) {
|
|
|
110
112
|
const manifest = openIssues.map((issue) => {
|
|
111
113
|
const reviewStatus = getReviewStatusSync(issue.ref);
|
|
112
114
|
const inPipeline = reviewStatus !== null && reviewStatus.reviewStatus !== "pending" || existsSync(join(workspacesDir, `feature-${issue.ref.toLowerCase()}`));
|
|
113
|
-
const hasPrd = opts?.hasPrdFn ? opts.hasPrdFn(issue.ref) : existsSync(join(
|
|
115
|
+
const hasPrd = opts?.hasPrdFn ? opts.hasPrdFn(issue.ref) : existsSync(join(paths.draftsDir, `${issue.ref.toLowerCase()}.md`)) || existsSync(join(paths.draftsDir, `${issue.ref.toUpperCase()}.md`));
|
|
114
116
|
const ready = opts?.hasSpecFn ? opts.hasSpecFn(issue.ref) : issuesWithSpecs.has(issue.ref.toUpperCase());
|
|
115
117
|
const createdMs = issue.createdAt ? new Date(issue.createdAt).getTime() : now;
|
|
116
118
|
return {
|
|
@@ -151,6 +153,7 @@ async function collectOpenBacklog(projectRoot, issues, opts) {
|
|
|
151
153
|
}
|
|
152
154
|
var SEQUENCE_MD_PATH, CLOSED_STATES, EPIC_TITLE_RE;
|
|
153
155
|
var init_backlog_input = __esmMin((() => {
|
|
156
|
+
init_paths();
|
|
154
157
|
init_review_status();
|
|
155
158
|
init_sequence_io();
|
|
156
159
|
SEQUENCE_MD_PATH = ".pan/backlog/sequence.md";
|
|
@@ -187,16 +190,18 @@ async function spawnSequencerAgent(pass, opts = {}) {
|
|
|
187
190
|
const projectRoot = opts.projectRoot ?? process.cwd();
|
|
188
191
|
const projectKey = opts.projectKey ?? "overdeck";
|
|
189
192
|
const batchSize = opts.batchSize ?? 20;
|
|
190
|
-
const
|
|
191
|
-
const resolvedPass = pass
|
|
193
|
+
const hasPriorSequence = existsSync(join(projectRoot, ".pan", "backlog", "sequence.md"));
|
|
194
|
+
const resolvedPass = pass === "auto" ? hasPriorSequence ? "incremental" : "creation" : pass === "incremental" && !hasPriorSequence ? "creation" : pass;
|
|
192
195
|
let rawIssues = opts.issues;
|
|
193
196
|
if (!rawIssues) try {
|
|
194
197
|
const { getSharedIssueService } = (init_issue_service_singleton(), __toCommonJS(issue_service_singleton_exports));
|
|
195
198
|
rawIssues = getSharedIssueService().getIssues();
|
|
196
|
-
} catch {
|
|
199
|
+
} catch (err) {
|
|
200
|
+
console.warn("[sequencer] issue read model unavailable, falling back to empty issue list:", err);
|
|
197
201
|
rawIssues = [];
|
|
198
202
|
}
|
|
199
203
|
const input = await collectOpenBacklog(projectRoot, normalizeBacklogIssues(rawIssues).filter((issue) => issue.ref.toUpperCase().startsWith("PAN-")));
|
|
204
|
+
if (input.manifest.length === 0) throw new Error(`Sequencer refusing to spawn: backlog manifest is empty (0 open ${projectKey} issues from ${rawIssues.length} raw read-model issues). An empty manifest usually means the issue read model was unavailable or empty at spawn time, not an empty backlog.`);
|
|
200
205
|
const manifestPath = join(projectRoot, ".pan", "backlog", "manifest.json");
|
|
201
206
|
await mkdir(dirname(manifestPath), { recursive: true });
|
|
202
207
|
await writeFile(manifestPath, JSON.stringify(input.manifest, null, 2), "utf-8");
|
|
@@ -325,4 +330,4 @@ var init_sequencer_agent = __esmMin((() => {
|
|
|
325
330
|
//#endregion
|
|
326
331
|
export { spawnSequencerAgent as a, init_sequencer_agent as i, clearFinishedSequencerRun as n, getSequencerRunStatus as r, SEQUENCER_AGENT_ID as t };
|
|
327
332
|
|
|
328
|
-
//# sourceMappingURL=sequencer-agent-
|
|
333
|
+
//# sourceMappingURL=sequencer-agent-BcpGMt5x.js.map
|