@overdeck/desktop 0.46.0 → 0.47.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 +4 -1
- package/package.json +1 -1
- package/server/{acceptance-criteria-CCwFGICj.js → acceptance-criteria-10Ur5Dne.js} +2 -2
- package/server/{advancing-selfheal-De1L-Sb4.js → advancing-selfheal-BNwqxseD.js} +6 -6
- package/server/{agent-gc-CBULruzm.js → agent-gc-C3h9Or3a.js} +5 -5
- package/server/{agent-state-VQk8fY9F.js → agent-state-CYXJVG72.js} +1 -1
- package/server/agent-state-service-C63p_ftq.js +2 -0
- package/server/{agent-state-service-BlnSkRFA.js → agent-state-service-Ds6OeFvo.js} +15 -9
- package/server/{agents-C5rWYhb6.js → agents-J5mEnekq.js} +23 -16
- package/server/{agents-BKKkxKgK.js → agents-ePFVoZbu.js} +1 -1
- package/server/archive-planning-B2XplFzT.js +2 -0
- package/server/{archive-planning-C0lAbNB_.js → archive-planning-BwhxeP7C.js} +10 -6
- package/server/{artifact-index-jobs-ug6ZxIP5.js → artifact-index-jobs-D1q_vR3V.js} +2 -2
- package/server/{assemble-DnffNpOo.js → assemble-Bgwqv-Ro.js} +2 -2
- package/server/{tmux-dedup-DbN6MGzM.js → auto-spawn-consent-CQ9Bi9q6.js} +262 -13
- package/server/{backlog-auto-trigger-Dh-i9PQf.js → backlog-auto-trigger-n1lzPgN4.js} +3 -3
- package/server/{behavior-CfIg6pKp.js → behavior-td6-xhQk.js} +2 -2
- package/server/boot-reconciled-stop-events-C7gGe3oB.js +44 -0
- package/server/{bridge-pool-patrol-CUFmjVDN.js → bridge-pool-patrol-CYH2OLb5.js} +1 -1
- package/server/{briefing-freshness-DHmCSLar.js → briefing-freshness-DRqZ8lAz.js} +2 -2
- package/server/{build-info-CuFfxZxp.js → build-info-7yiEpl6u.js} +3 -3
- package/server/{build-info-BP160gU7.js → build-info-CpG__c63.js} +1 -1
- package/server/{checkpoint-manager-Dxh0FYsv.js → checkpoint-manager-CkKmB0wZ.js} +1 -1
- package/server/{checkpoint-manager-DEWD82qK.js → checkpoint-manager-DBcyNR8w.js} +2 -2
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-CZvbtLnr.js → checkpoints-D95apurL.js} +2 -2
- package/server/{checkpoints-DMTgXuLG.js → checkpoints-Wm963lm8.js} +1 -1
- package/server/{claude-hooks-provision-CN-xo-do.js → claude-hooks-provision-4RPxNkE8.js} +1 -1
- package/server/{claude-hooks-provision-fvy4RD2b.js → claude-hooks-provision-Bjitl9aI.js} +2 -2
- package/server/{claude-permissions-CN0cSCPp.js → claude-permissions-CpbpvUQ2.js} +2 -2
- package/server/{claude-settings-overlay-Dabi9slj.js → claude-settings-overlay-BzkHYDwR.js} +1 -1
- package/server/{claude-settings-overlay-CJn35FHQ.js → claude-settings-overlay-_H9Yrzab.js} +2 -2
- package/server/cli-CjOCSnfj.js +3 -0
- package/server/{cli-oCWYA1pE.js → cli-Cte9ZFGn.js} +9 -9
- package/server/{cliproxy-C8mB3KuB.js → cliproxy-C5fMJ7rY.js} +2 -2
- package/server/{cliproxy-PGwTX_o8.js → cliproxy-DaAbWMjC.js} +1 -1
- package/server/{close-issue-D5MF5GqF.js → close-issue-BPh1ARCF.js} +5 -5
- package/server/{closed-issue-reaper-CJ24u0Zt.js → closed-issue-reaper-DHRfRMrp.js} +1 -1
- package/server/{closed-issue-reaper-Cltx86x5.js → closed-issue-reaper-DoOZqGFK.js} +62 -12
- package/server/{codex-Drlf5Xhf.js → codex-BzGDW_d3.js} +6 -6
- package/server/{codex-BdEsUFWh.js → codex-o8FJwzmy.js} +1 -1
- package/server/{codex-parser-DpB89Vqa.js → codex-parser-Dt-ycU8L.js} +2 -2
- package/server/{compaction-continuation-K2AxQX4H.js → compaction-continuation-CvXpbZ4w.js} +3 -3
- package/server/{config-B2IMcBxx.js → config-Bi3u1VK7.js} +2 -2
- package/server/{config-Dr3pW6w6.js → config-BvLe652W.js} +2 -2
- package/server/{config-DV-grfQc.js → config-CL3Gyvja.js} +1 -1
- package/server/{config-yaml-CmOPzmBb.js → config-yaml-CxdwhAIA.js} +10 -2
- package/server/conflict-gate-CX80JYYS.js +3 -0
- package/server/{conflict-gate-B9cN3SBi.js → conflict-gate-E4nt7ZeS.js} +59 -13
- package/server/{context-layers-dR5YxHYB.js → context-layers-C_IIysnm.js} +3 -3
- package/server/{context-layers-D6LZo3l1.js → context-layers-DAG83UZt.js} +2 -2
- package/server/{control-settings-C7DUehE1.js → control-settings-CiqGxXnc.js} +13 -6
- package/server/{conversation-compaction-Dj4FAKoZ.js → conversation-compaction-BE3CNtHF.js} +1 -1
- package/server/{conversation-compaction-BoqdDXWF.js → conversation-compaction-D6-yLtqt.js} +8 -8
- package/server/{conversation-service-5aCnq1zR.js → conversation-service-DBxoYMDl.js} +8 -7
- package/server/{conversation-service-BCxl4f8Z.js → conversation-service-D_TS2b1r.js} +1 -1
- package/server/{conversations-C34dyIb9.js → conversations-BKDVpB-3.js} +1 -1
- package/server/{conversations-BUpYsOZg.js → conversations-D0UEdLtk.js} +4 -4
- package/server/{cost-CvxRrucd.js → cost-DS1s0DbG.js} +3 -3
- package/server/{cost-Bgcub5kW.js → cost-DpgYmYqR.js} +2 -2
- package/server/{cost-sync-Dv3LUaNW.js → cost-sync-tOCCGnEt.js} +3 -3
- package/server/{dag-ombYYt4s.js → dag-BtkgLeqY.js} +2 -2
- package/server/{dangerous-git-ops-BcJPC5Rr.js → dangerous-git-ops-CFLykHWt.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-DrXqT9LQ.js → deacon-BIblC-WX.js} +3 -3
- package/server/{deacon-nudge-log-BNBebzeL.js → deacon-nudge-log-B08gF0mh.js} +3 -3
- package/server/{deacon-hi9KLPLT.js → deacon-pLRLbPvR.js} +548 -176
- package/server/{deacon-pending-lifecycle-Cpk0k7Hi.js → deacon-pending-lifecycle-B-Io84AP.js} +3 -3
- package/server/deacon-swarm-B1XkIvfr.js +2 -0
- package/server/{deacon-swarm-DBxUaO-A.js → deacon-swarm-v5PMun-m.js} +15 -14
- package/server/deacon.js +8 -8
- package/server/{dead-end-trip-CQcP70ND.js → dead-end-trip-D8A3msX9.js} +3 -3
- package/server/{delivery-Da0zEMY4.js → delivery-BX9HR4wQ.js} +1 -1
- package/server/{deploy-patrol-Df-Tmaq0.js → deploy-patrol-sYgOxLeb.js} +8 -8
- package/server/{deploy-queue-UjKGYsDe.js → deploy-queue-VfohaPN_.js} +2 -2
- package/server/{deploy-queue-9SrhZR63.js → deploy-queue-gHJBycaF.js} +1 -1
- package/server/{deploy-window-jOiPRHL0.js → deploy-window-CFRZ0-kt.js} +1 -1
- package/server/{deploy-window-rpqpWqHA.js → deploy-window-D4DQb8VP.js} +6 -6
- package/server/{dev-supervisor-CC46Ig8q.js → dev-supervisor-DiOBDM1c.js} +2 -2
- package/server/{devcontainer-renderer-68CSCRnu.js → devcontainer-renderer-BUOIlfgD.js} +3 -3
- package/server/dist-B3YPQa5A.js +3 -0
- package/server/{dist-CJy72uEg.js → dist-C3A8B8wM.js} +1 -1
- package/server/{dist-src-Bik83hFi.js → dist-src-C0adpegX.js} +1 -1
- package/server/{docker-Dam7mbIB.js → docker-BJzlkqYB.js} +2 -2
- package/server/{docker-BMVTSFL5.js → docker-Y3PElJb0.js} +1 -1
- package/server/{dod-Dar-yheg.js → dod-DlNtcH6n.js} +26 -5
- package/server/{durable-review-pipeline-CGZ5QBxh.js → durable-review-pipeline-Cibps-Rg.js} +5 -2
- package/server/durable-review-pipeline-DP6bIcOY.js +3 -0
- package/server/{ensure-devcontainer-B057YA81.js → ensure-devcontainer-BAofzBPv.js} +4 -4
- package/server/{ensure-devcontainer-C98V8yW-.js → ensure-devcontainer-DMAbWqtQ.js} +1 -1
- package/server/{esm-shims-Br9BPdkR.js → esm-shims-BeObUkaw.js} +1 -1
- package/server/{event-store-ELqkVOn0.js → event-store-5UKzh9Jf.js} +1 -1
- package/server/{event-store-zY5MJHgF.js → event-store-CrHcVC5_.js} +3 -3
- package/server/{events-D9PR1IC0.js → events-BNrvchBg.js} +3 -3
- package/server/{events-D6pyqhzM.js → events-CF8QDbuV.js} +1 -1
- package/server/{factory-CRoOpGsF.js → factory-Cmm9Hsho.js} +5 -5
- package/server/{feature-registry-population--YUXU999.js → feature-registry-population-B6HpNWRy.js} +4 -4
- package/server/{feature-registry-storage-BORBTo0y.js → feature-registry-storage-DJEFx1Pf.js} +2 -2
- package/server/{features--nFkJY8v.js → features-D5km80UI.js} +2 -2
- package/server/{feedback-target-C0ZzyHvU.js → feedback-target-BJ5ZADsu.js} +1 -1
- package/server/{feedback-target-Dt9BsapX.js → feedback-target-DSxEL6lP.js} +7 -7
- package/server/{feedback-writer-BG0RUZiu.js → feedback-writer-C27Hak8a.js} +5 -5
- package/server/{feedback-writer-D1fm-5Z8.js → feedback-writer-CoB9Z6aU.js} +1 -1
- package/server/{flywheel-BiT3odRb.js → flywheel-BHx8XuMr.js} +38 -19
- package/server/{flywheel-BekukH4i.js → flywheel-DZZdtiOL.js} +1 -1
- package/server/{flywheel-CLVB55Be.js → flywheel-f662Q-y2.js} +14 -14
- package/server/{flywheel-merge-order-BJv1DZz1.js → flywheel-merge-order-D_xLMbJU.js} +7 -7
- package/server/{flywheel-merge-order-BKw9o6ku.js → flywheel-merge-order-Dil0LmdN.js} +1 -1
- package/server/forge-B5o319qI.js +3 -0
- package/server/{forge-CZbSg6Ds.js → forge-BaKGCya6.js} +2 -2
- package/server/{from-D_4_dk7i.js → from-B3tZbB55.js} +1 -1
- package/server/fs-lock-Bre3sGoz.js +130 -0
- package/server/{fts-db-BeOomFa-.js → fts-db-IVc4_M3f.js} +2 -2
- package/server/{fts-operations-BdewJ_g9.js → fts-operations-B9jG8wa3.js} +2 -2
- package/server/{git-utils-ameCgDdy.js → git-utils-CsvYfJU3.js} +4 -4
- package/server/{git-utils-CI6cwyyC.js → git-utils-Xg4PFN45.js} +1 -1
- package/server/{github-app-DtAsvwzK.js → github-app-Bmg4R9mv.js} +1 -1
- package/server/{github-app-CQ1Lo6LA.js → github-app-CmNk0zLU.js} +2 -2
- package/server/{github-client-Cj0yl_07.js → github-client-B6KM9_wA.js} +1 -1
- package/server/{github-client-BfyDxuRN.js → github-client-qazkPrg0.js} +3 -3
- package/server/{github-pr-lookup-BDq6Wznz.js → github-pr-lookup-DAcVeRLK.js} +2 -2
- package/server/{harness-binary-DqkftwTb.js → harness-binary-BSpiXaLw.js} +2 -2
- package/server/{harness-resolve-CqMqM1Mb.js → harness-resolve-BAJu5MX8.js} +4 -4
- package/server/{health-events-_xfTaOUs.js → health-events-2Z6Wa9SM.js} +1 -1
- package/server/{health-events-CazRxJUS.js → health-events-BwX32k8d.js} +2 -2
- package/server/{hooks-BnJsxlSq.js → hooks-D1g1jKLI.js} +1 -1
- package/server/{hooks-BO3QT1sn.js → hooks-DbtbimEf.js} +2 -2
- package/server/{hume-CDYJxqx-.js → hume-DXNiu6nQ.js} +2 -2
- package/server/hume-VUCNbTgn.js +3 -0
- package/server/{idle-stack-reaper-BYqERdkE.js → idle-stack-reaper-CRA1e0jr.js} +1 -1
- package/server/{idle-stack-reaper-CnGx_PO_.js → idle-stack-reaper-Cy-dQzW4.js} +2 -2
- package/server/{in-flight-guard-Bq3epG58.js → in-flight-guard-D-sSkADM.js} +1 -1
- package/server/{infra-BjuxvjdS.js → infra-BDQDRopn.js} +15 -4
- package/server/{injection-UCf8EsjX.js → injection-6AGnXxlj.js} +7 -7
- package/server/{injection-DZxlV2al.js → injection-Bl8d_jHZ.js} +1 -1
- package/server/inspect-agent-CUwVmr2h.js +2 -0
- package/server/{inspect-agent-6kylZnrm.js → inspect-agent-nXdIptyh.js} +12 -12
- package/server/{internal-token-DvMTQSOS.js → internal-token-DzK385vD.js} +2 -2
- package/server/{internal-token-M9omeXM1.js → internal-token-Ias7N8Kg.js} +1 -1
- package/server/{io-VHvc0Ssp.js → io-B00PBNku.js} +4 -4
- package/server/{issue-closed-B6KJkmHZ.js → issue-closed-BehTG1be.js} +8 -8
- package/server/{issue-lifecycle-C4Zj0WmE.js → issue-lifecycle-Birk-ifu.js} +29 -23
- package/server/{issue-lifecycle-9gk3fnXN.js → issue-lifecycle-BqSuQvbn.js} +1 -1
- package/server/{issue-service-singleton-PMx8F1jr.js → issue-service-singleton-B2wXiIlw.js} +1 -1
- package/server/{issue-service-singleton-DmCh7EHj.js → issue-service-singleton-C6ZduvuY.js} +10 -10
- package/server/{issues-CgnQ1OGQ.js → issues-DQ5-LatB.js} +2 -2
- package/server/{jsonl-parser-DJOH_O-w.js → jsonl-parser-BDpnGFCl.js} +3 -3
- package/server/{label-cleanup-Dv7AV_R1.js → label-cleanup-Dwnky8FG.js} +3 -3
- package/server/{lifecycle-DDN8ApVY.js → lifecycle-B3s4sM1G.js} +6 -6
- package/server/{lifecycle-CTdOWYMi.js → lifecycle-B4Xdb4cY.js} +2 -2
- package/server/{lifecycle-io-D_zTLvP1.js → lifecycle-io-CzTHEooc.js} +1 -1
- package/server/{lifecycle-io-D-lGdzK3.js → lifecycle-io-DCo6s6ks.js} +5 -5
- package/server/{linear-client-BQU36QqE.js → linear-client-9uq7fhiV.js} +3 -3
- package/server/{linear-client-CY4O_Tu3.js → linear-client-CnbtHiic.js} +1 -1
- package/server/{linear-mcp-auth-BnU4TYfY.js → linear-mcp-auth-BxUOzswy.js} +5 -5
- package/server/{linear-mcp-auth-NYBq_oHZ.js → linear-mcp-auth-D46fBCLf.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-Bpx4jjht.js → merge-DiW9RdSB.js} +3 -3
- package/server/{merge-agent-DdMVSV2Y.js → merge-agent-BLUgRsz3.js} +31 -31
- package/server/{merge-agent-DrXa1CpW.js → merge-agent-DQTXZk8z.js} +1 -1
- package/server/{merge-batch-C5q1c1GX.js → merge-batch-Cp_j9BGk.js} +1 -1
- package/server/{merge-completeness-BMm8tMyZ.js → merge-completeness-B46KqhtY.js} +4 -4
- package/server/{merge-completeness-D0ljXbk3.js → merge-completeness-BLbB5-6n.js} +1 -1
- package/server/merge-ops-1abz6O_P.js +2 -0
- package/server/merge-rebase-CJJVAJuz.js +2 -0
- package/server/{merge-rebase-xLnMlw5h.js → merge-rebase-DIkBjgwq.js} +2 -2
- package/server/{merge-set-DH7ot3yz.js → merge-set-CBgHfwM0.js} +4 -4
- package/server/{merge-set-DzsOTBg5.js → merge-set-DeUxFsC3.js} +1 -1
- package/server/{merge-idOG--29.js → merge-sr8Nrnmi.js} +1 -1
- package/server/merge-sync-CpGmk6Ch.js +3 -0
- package/server/{merge-sync-CQ-LgZ1_.js → merge-sync-kr4vqyjM.js} +7 -4
- package/server/{merge-train-DTEMyIu4.js → merge-train-Dmrcus12.js} +4 -4
- package/server/{merge-train-deps-CNPJzepw.js → merge-train-deps-D_uGX91G.js} +21 -15
- package/server/{merge-verification-x3JO8Dtz.js → merge-verification-NvaAd8CZ.js} +6 -6
- package/server/{merged-docker-cleanup-worker-Cdi9apm-.js → merged-docker-cleanup-worker-DH_hrGPI.js} +1 -1
- package/server/{merged-docker-cleanup-worker-CTpC27Bs.js → merged-docker-cleanup-worker-Y1R06TEl.js} +3 -3
- package/server/{multipart-parser-IMSBfePV.js → multipart-parser-R-oC8dQg.js} +2 -2
- package/server/{no-resume-mode-C5ULAXwO.js → no-resume-mode-BgD0JUmM.js} +1 -1
- package/server/node_modules/.package-lock.json +4 -4
- package/server/node_modules/@types/node/README.md +1 -1
- package/server/node_modules/@types/node/crypto.d.ts +1 -1
- package/server/node_modules/@types/node/package.json +2 -2
- package/server/{orphan-proposed-reconciler-Dg6U4ADZ.js → orphan-proposed-reconciler-B6vJHxtX.js} +230 -31
- package/server/{orphan-proposed-reconciler-CWmOdM9-.js → orphan-proposed-reconciler-DcgTPPFY.js} +1 -1
- package/server/package-lock.json +5 -5
- package/server/package.json +1 -1
- package/server/{pan-dir-ubraCiUg.js → pan-dir-DMzF5wne.js} +4 -4
- package/server/{paths-cXmOwSbh.js → paths-sJBSb7Ul.js} +2 -2
- package/server/{pending-lifecycle-claim-DEteYdS9.js → pending-lifecycle-claim-DilzGfgk.js} +2 -2
- package/server/persistent-logger-H_VjuOu7.js +57 -0
- package/server/{pickup-D8xtG1J2.js → pickup-DWhqzliO.js} +4 -3
- package/server/{pipeline-membership-BGSvkT2M.js → pipeline-membership-C88VBnhJ.js} +1 -1
- package/server/{pipeline-membership-CrAPLYtf.js → pipeline-membership-D9SBvItj.js} +1 -1
- package/server/{pipeline-membership-gather-DTfcgxLl.js → pipeline-membership-gather-4eR-7Tqy.js} +1 -1
- package/server/{pipeline-membership-gather-CET40frr.js → pipeline-membership-gather-CeVGnNJ2.js} +114 -9
- package/server/{pipeline-notifier-BuQ0e4hF.js → pipeline-notifier-D0ALV6Nw.js} +2 -2
- package/server/{pipeline-notifier-ImNXknf0.js → pipeline-notifier-DT6xLFao.js} +1 -1
- package/server/{post-merge-lifecycle-worker-DbO10pum.js → post-merge-lifecycle-worker-8HIeS_J6.js} +3 -3
- package/server/{project-pipelines-Bim6bThI.js → project-pipelines-9SKt2bEc.js} +2 -2
- package/server/{project-repos-C0nuoBGv.js → project-repos-B5pIphKg.js} +2 -2
- package/server/{project-repos-CRE6Ykow.js → project-repos-DPjOdfPa.js} +1 -1
- package/server/{projects-B03Wr-xc.js → projects-_n3Zui6K.js} +1 -1
- package/server/{prompts-BEx08AIu.js → prompts-CgzMBvQF.js} +2 -2
- package/server/{providers-D7IluJe0.js → providers-BI1mOBQ4.js} +1 -1
- package/server/{providers-evXhiQeg.js → providers-BJQSnAAp.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-D1s4-Sqp.js → chunk-BO2N2NFS-D_pGACYN.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-1gdMoSF7.js → diagram-OG6HWLK6-BO6fe3hH.js} +1 -1
- package/server/public/assets/{dist-DqDRYW6P.js → dist-5zingMiA.js} +3 -3
- package/server/public/assets/{dist-CxAOHbil.js → dist-CVxhbI2E.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-BYex-Ec7.js → ganttDiagram-6RSMTGT7-Bgj4A7kp.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-DlVkiG0S.js → highlighted-body-OFNGDK62-DNPK7_cm.js} +1 -1
- package/server/public/assets/{index-K0hAYCgV.js → index-DEpY-D1O.js} +148 -148
- package/server/public/assets/index-Ddkcz3WT.css +1 -0
- package/server/public/assets/{linear-B4cuEFmO.js → linear-BB0jQT16.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-BzPfaQJ1.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-CBHNBIJQ.js → pieDiagram-4H26LBE5-DeGIzzpZ.js} +1 -1
- package/server/public/assets/{prod-CN2nHBvX.js → prod-XBLvikex.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bom87VOQ.js → quadrantDiagram-W4KKPZXB-BV9SLeWz.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-UrBeyLxk.js → sankeyDiagram-5OEKKPKP-Dwja0gj8.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-DhkbrIxR.js → xychartDiagram-2RQKCTM6-DCB4qvfw.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-DHWiKxo7.js → pull-requests-7BgLDsIo.js} +3 -3
- package/server/{pull-requests-Cv7LxzUN.js → pull-requests-Dq0y6IxE.js} +1 -1
- package/server/{queries-DHJm7bTd.js → queries-C-MUZaIy.js} +266 -155
- package/server/{rally-B71M9f4o.js → rally-CPysR4T_.js} +3 -3
- package/server/rally-D_VW4bJv.js +3 -0
- package/server/{rally-api-Dkqmok65.js → rally-api-8Ptlp2os.js} +2 -2
- package/server/{rally-api-D5uXN08-.js → rally-api-CgosKdKL.js} +1 -1
- package/server/{rally-client-CxsA6ExK.js → rally-client-CCX0hADj.js} +1 -1
- package/server/{rally-client-Bfqm6XI4.js → rally-client-iYMHWQD7.js} +5 -5
- package/server/{reap-terminal-sessions-BQ23nriz.js → reap-terminal-sessions-4Xg9NGA8.js} +2 -2
- package/server/{reap-terminal-sessions-CvmwaqKv.js → reap-terminal-sessions-Qf-9LVQc.js} +2 -2
- package/server/{rebuild-stack-0EEYReVZ.js → rebuild-stack-CMdgaylx.js} +7 -7
- package/server/{rebuild-stack-qeRqHZxH.js → rebuild-stack-DqcOVmJO.js} +2 -2
- package/server/{reconstruct-cache-BbYFsqLa.js → reconstruct-cache-CMZJ_Vjq.js} +9 -8
- package/server/{record-CtroO946.js → record-BTwWhtBb.js} +1 -1
- package/server/{record-update-Z0QCxmMp.js → record-update-DaOKS7Wb.js} +5 -128
- package/server/{record-update-DH6dLJID.js → record-update-DhI7eySG.js} +1 -1
- package/server/{recovery-trip-eJe26h-f.js → recovery-trip-DDH-02ng.js} +2 -2
- package/server/{release-engine-lPUp-MTd.js → release-engine-B2X9AfFC.js} +5 -5
- package/server/{release-set-BwGeyZKX.js → release-set-G4XKyQ8K.js} +3 -3
- package/server/{remote-BCd02Es1.js → remote-BXarMvqf.js} +3 -3
- package/server/{remote-CVGUhXMV.js → remote-CUhyqjXk.js} +3 -3
- package/server/{remote-agents-C_VxssLU.js → remote-agents-Bba-MgSA.js} +17 -8
- package/server/{remote-agents-C1bssi41.js → remote-agents-CLZB3Coc.js} +1 -1
- package/server/{remote-completion-DAB0P706.js → remote-completion-CwAp79EC.js} +13 -13
- package/server/resume-mOREjlYu.js +3 -0
- package/server/{review-agent-CHhI66UP.js → review-agent--pOptAEV.js} +31 -29
- package/server/{review-agent-CD4RCI0Y.js → review-agent-BTCNkq2h.js} +1 -1
- package/server/{review-artifacts-DSMRIfuJ.js → review-artifacts-BNmw8dWE.js} +5 -5
- package/server/{review-context-oFuBbiEE.js → review-context-DFxYOOJW.js} +9 -9
- package/server/{review-convoy-liveness-CpzrcJ5F.js → review-convoy-liveness-BgU_1jJf.js} +2 -2
- package/server/{review-status-yljtTd-q.js → review-status-CGvlA4o_.js} +326 -110
- package/server/review-status-Dma9SFaN.js +3 -0
- package/server/{review-status-emit-CUExtHd5.js → review-status-emit-DURrmGYX.js} +3 -3
- package/server/{review-status-enrichment-QV_hQkgS.js → review-status-enrichment-8NiNXi5W.js} +3 -3
- package/server/{review-status-source-ylw5QZUR.js → review-status-source-BLx_1siH.js} +1 -1
- package/server/{review-status-source-CpvJnvnQ.js → review-status-source-DIk1JSow.js} +1 -1
- package/server/{review-status-sync-483sujRo.js → review-status-sync-0GxOqeqF.js} +11 -6
- package/server/{review-status-sync-NaWvI9Xf.js → review-status-sync-muT-EBp2.js} +1 -1
- package/server/{review-verdict-feedback-BPDn4li_.js → review-verdict-feedback-HwF6ODFy.js} +1 -1
- package/server/{review-verdict-feedback-CELeUinh.js → review-verdict-feedback-xJNdqBnX.js} +23 -9
- package/server/{rollup-DTNvelz9.js → rollup-BQaol5TX.js} +8 -8
- package/server/{rollup-DYZfq1c4.js → rollup-BR4t_wck.js} +1 -1
- package/server/{scanner-CV35oSn4.js → scanner-C-D2cFdX.js} +7 -7
- package/server/{sequence-io-DF_8iuhV.js → sequence-io-Bmf1EZM5.js} +4 -4
- package/server/{sequencer-agent-B2WeCtGi.js → sequencer-agent-CigMyKh2.js} +7 -6
- package/server/server.js +435 -418
- package/server/{service-Br9rpBNA.js → service-CD0DvFvD.js} +88 -59
- package/server/{session-fork-D0LY152N.js → session-fork-B6cQ5eya.js} +2 -2
- package/server/{session-history-BUyK29eq.js → session-history-3ON_IJjm.js} +7 -55
- package/server/settings-CVmWiJ-r.js +2 -0
- package/server/{settings-CvVGqNEs.js → settings-PilbFZAM.js} +2 -2
- package/server/{settings-Bse1Pdcj.js → settings-VN0qOh4U.js} +3 -3
- package/server/{shadow-engineering-BWLa8ODz.js → shadow-engineering-DXvx77oE.js} +3 -3
- package/server/{shadow-state-B4fpKxOO.js → shadow-state-BBk_zacw.js} +2 -2
- package/server/{shadow-state-FV6PHfEW.js → shadow-state-CZBp7pwq.js} +1 -1
- package/server/{shadow-utils-D7asqxOZ.js → shadow-utils-DdZ05AJS.js} +2 -2
- package/server/{ship-log-xplJ8t75.js → ship-log-7kJfjUX2.js} +1 -1
- package/server/{smart-compaction-CPp2Ykf6.js → smart-compaction-8fA5k5XN.js} +1 -1
- package/server/{smart-compaction-D3U_79f-.js → smart-compaction-ByhL9cRS.js} +7 -7
- package/server/{spawn-planning-session-DGfZ5B8D.js → spawn-planning-session-pcF-YeFE.js} +38 -50
- package/server/spawn-planning-session-vLUJoFjy.js +3 -0
- package/server/{specialist-completion-Br48eiDP.js → specialist-completion-B07XjWD2.js} +1 -1
- package/server/{specialist-context-cVbGnTa3.js → specialist-context-DJ-zFyL3.js} +5 -5
- package/server/{specialist-handoff-logger-DK-GTz4s.js → specialist-handoff-logger-aKSxbIgD.js} +2 -2
- package/server/{specialist-logs-Cl5-hqT8.js → specialist-logs-Dae-n52_.js} +3 -3
- package/server/{specialists-CNfYO3G2.js → specialists-6PWdtWcg.js} +298 -180
- package/server/{specialists-Tdezg_6N.js → specialists-Bz-wFT7R.js} +1 -1
- package/server/{specialists-Cicieuzu.js → specialists-DUiExaxb.js} +18 -18
- package/server/{specialists-JHsdU3pA.js → specialists-KR3pKulN.js} +1 -1
- package/server/specs--enInima.js +3 -0
- package/server/{src-CRmCHlma.js → src-B948bGVR.js} +57 -13
- package/server/{src-Ck028hjO.js → src-rac0Mepv.js} +6 -6
- package/server/{src-UWcGe0Ix.js → src-vHy2-oCv.js} +3 -3
- package/server/{stack-health-CJLMrLBl.js → stack-health-BikqHSjn.js} +1 -1
- package/server/{stack-health-DqSqx0zv.js → stack-health-DqLTiEu4.js} +2 -2
- package/server/{stale-task-claims-CYFOUNlT.js → stale-task-claims-Cab_Fo_Z.js} +5 -4
- package/server/{staleness-D47CUJok.js → staleness-C-a5rBxF.js} +1 -1
- package/server/{staleness-BQ-0gMYK.js → staleness-CGTZyp6V.js} +1 -1
- package/server/{state-home-BYV7qZTW.js → state-home-722Dkx92.js} +2 -2
- package/server/{state-mapping-BVldLhBf.js → state-mapping-CybR81Uf.js} +1 -1
- package/server/{state-migrate-CvvBtS0Y.js → state-migrate-2u8wIpoL.js} +4 -4
- package/server/{stuck-remediation-mkLC6G_t.js → stuck-remediation-CC6q3eqQ.js} +24 -23
- package/server/{stuck-remediation-Wt0UVvu1.js → stuck-remediation-r1TJu68G.js} +1 -1
- package/server/{substrate-bug-weights-service-XfLAKnmK.js → substrate-bug-weights-service-CzIyyWFT.js} +3 -3
- package/server/{summary-fork-CD7GOts0.js → summary-fork-BqgmgPDt.js} +2 -2
- package/server/{summary-fork-xiXBnWG9.js → summary-fork-Df2WFijM.js} +8 -8
- package/server/supervisor/{injection-budget-B5SbvDx2.js → injection-budget-Cg_KIb3o.js} +1 -1
- package/server/supervisor/{paths-K3noE4N_.js → paths-BBOnCYlO.js} +10 -2
- package/server/supervisor/pty-supervisor.js +4 -4
- package/server/supervisor/{pty-token-B7lp0ElT.js → pty-token-BbjwEUUM.js} +3 -3
- package/server/supervisor-B4anCCSm.js +2 -0
- package/server/{supervisor-DL788vos.js → supervisor-BxqSpjcN.js} +3 -3
- package/server/{swarm-readiness-BV14DF5N.js → swarm-readiness-DfFxa9-n.js} +3 -3
- package/server/{system-prerequisites-pdWG6ZQs.js → system-prerequisites-ICLSkhhZ.js} +2 -2
- package/server/{teardown-workspace-l2F4_zim.js → teardown-workspace-DRdi_CPa.js} +15 -15
- package/server/{test-agent-queue-qakFIIGz.js → test-agent-queue-A_-p-i0I.js} +8 -7
- package/server/{test-verdict-Gw-btEfb.js → test-verdict-BHgTAwIG.js} +1 -1
- package/server/{test-verdict-BJYDggMm.js → test-verdict-C4i9aqEP.js} +1 -1
- package/server/{tldr-daemon-BKOYB616.js → tldr-daemon-CvWXBhX1.js} +1 -1
- package/server/{tldr-daemon-CBaWkV9k.js → tldr-daemon-wvsU6bKv.js} +2 -2
- package/server/{tmux-B1Wbxz5o.js → tmux-CfDHob9M.js} +174 -4
- package/server/{tmux-DQ6jB76i.js → tmux-Ctk6RV5l.js} +1 -1
- package/server/{token-Cxbk023d.js → token-DrxwytsZ.js} +2 -2
- package/server/{token-util-CLq2MmQt.js → token-util-B48BlCba.js} +1 -1
- package/server/token-util-D411CAq9.js +3 -0
- package/server/{tracker-config-DZ8Zn2nQ.js → tracker-config-BcPMElRB.js} +2 -2
- package/server/{tracker-utils-L0FKtjq2.js → tracker-utils-CJ6BHjcD.js} +2 -2
- package/server/{traefik-connect-bNX6jKkb.js → traefik-connect-DZ6nMYMj.js} +1 -1
- package/server/{tunnel-CjSnHdTc.js → tunnel-Bp-dRHZz.js} +1 -1
- package/server/{tunnel-BAm1XgjG.js → tunnel-DUbUPElU.js} +3 -3
- package/server/{typed-errors-BHhE85Ul.js → typed-errors-CKeoDdU3.js} +1 -1
- package/server/{typed-errors-2BTMxkZq.js → typed-errors-DyjseiB6.js} +1 -1
- package/server/{types-hraoaQIp.js → types-Cm5ASJbq.js} +1 -1
- package/server/{types-q67TYYg5.js → types-Di8wdakq.js} +1 -1
- package/server/{uat-promote-verification-CKB9ZrKC.js → uat-promote-verification-CoJuh7XO.js} +5 -5
- package/server/{uat-train-D5UjcyAa.js → uat-train-4Q0k06CQ.js} +0 -0
- package/server/{uat-train-Cu-4nvbf.js → uat-train-Dewoatps.js} +1 -1
- package/server/{validate-Cxsx5Uz1.js → validate-B0C8p66t.js} +3 -3
- package/server/{validation-VZgJxmqc.js → validation-B_kIRfNe.js} +4 -4
- package/server/{validation-DEaTZafj.js → validation-hVOwQk8T.js} +1 -1
- package/server/{verification-artifact-C85cRTc_.js → verification-artifact-BxlxTiYK.js} +1 -1
- package/server/{verification-artifact-g3yuxQDL.js → verification-artifact-D70AtckY.js} +1 -1
- package/server/{verification-runner-DlZI8yhw.js → verification-runner-Bc3cJvpC.js} +1 -1
- package/server/{verification-runner-KDZIsBj4.js → verification-runner-KZTz6u72.js} +19 -19
- package/server/{vtt-parser-Jr94BF3Y.js → vtt-parser-CE_i3Bcw.js} +1 -1
- package/server/{work-agent-prompt-C-vuP3_J.js → work-agent-prompt-ByrPAzOy.js} +9 -9
- package/server/{workflows-D0oip4eV.js → workflows-D0vP1WrK.js} +113 -43
- package/server/workflows-DtDX08ed.js +2 -0
- package/server/{workspace-BqFg__wH.js → workspace-COWvdibH.js} +1 -1
- package/server/{workspace-C0fH3aek.js → workspace-DQkRPLlQ.js} +3 -3
- package/server/{workspace-anchor-drift-CZKofakh.js → workspace-anchor-drift-DXYIAHzr.js} +4 -4
- package/server/{workspace-anchor-drift-B4gMRHl4.js → workspace-anchor-drift-pwz23TI1.js} +1 -1
- package/server/{workspace-config-B123aZl-.js → workspace-config-BdZM4PvZ.js} +1 -1
- package/server/{workspace-manager-CwO-Hek7.js → workspace-manager-BPgTrG66.js} +13 -13
- package/server/{workspace-manager-CDTKjjdU.js → workspace-manager-C1F3XsnS.js} +1 -1
- package/server/{workspace-metadata-D4M8BM4W.js → workspace-metadata-CdjzAP8x.js} +1 -1
- package/server/{workspace-metadata-CQv00QwK.js → workspace-metadata-DkO_iTLo.js} +2 -2
- package/server/{workspaces-j1e_6aAT.js → workspaces-CRBJikLp.js} +136 -113
- package/sync-sources/skills/pan-merge/SKILL.md +7 -5
- package/sync-sources/skills/pan-release/SKILL.md +57 -0
- package/server/agent-state-service-hZpxIw1E.js +0 -2
- package/server/archive-planning-0FJ6Xd3b.js +0 -2
- package/server/cli-DmXETsw-.js +0 -3
- package/server/conflict-gate-Dh754uyA.js +0 -3
- package/server/deacon-swarm-I2JfX5Tg.js +0 -2
- package/server/dist-DSlxIU1H.js +0 -3
- package/server/durable-review-pipeline-jpgCJZFp.js +0 -3
- package/server/forge-DK3blQb_.js +0 -3
- package/server/hume-Dq--7rOQ.js +0 -3
- package/server/inspect-agent-BVwDrVrz.js +0 -2
- package/server/label-reconciler--F85rufp.js +0 -113
- package/server/merge-ops-DdpTiEMt.js +0 -2
- package/server/merge-rebase-DGQpYJU3.js +0 -2
- package/server/merge-sync-Ca7F5JnQ.js +0 -3
- package/server/public/assets/index-Cc7cnFC4.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-DyDHFXHV.js +0 -1
- package/server/rally-YDjU513q.js +0 -3
- package/server/resume-u9byntrq.js +0 -3
- package/server/review-status-BZH8h-6W.js +0 -3
- package/server/settings-CdvIF84R.js +0 -2
- package/server/spawn-planning-session-1nFi3gfk.js +0 -2
- package/server/specs-Bt7WJDoC.js +0 -3
- package/server/supervisor-UWiQNK-y.js +0 -2
- package/server/token-util-zlz9U0ki.js +0 -3
- package/server/workflows-CHrx_hcW.js +0 -2
package/server/{orphan-proposed-reconciler-Dg6U4ADZ.js → orphan-proposed-reconciler-B6vJHxtX.js}
RENAMED
|
@@ -1,37 +1,193 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as __toCommonJS } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
+
import { Gn as init_projects, Jn as listProjects, ar as resolveProjectFromIssueSync } from "./config-yaml-CxdwhAIA.js";
|
|
2
3
|
import { o as init_activity_logger, r as emitActivityEntrySync } from "./activity-logger-CyteR4JO.js";
|
|
3
|
-
import { M as listSessionNames, w as init_tmux } from "./tmux-
|
|
4
|
-
import {
|
|
5
|
-
import { b as init_agents, tr as getAgentState } from "./queries-
|
|
6
|
-
import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-
|
|
7
|
-
import {
|
|
8
|
-
import { o as
|
|
9
|
-
import {
|
|
10
|
-
import { i as
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
4
|
+
import { M as listSessionNames, w as init_tmux } from "./tmux-CfDHob9M.js";
|
|
5
|
+
import { d as getReviewStatusSync, p as init_review_status } from "./review-status-CGvlA4o_.js";
|
|
6
|
+
import { b as init_agents, tr as getAgentState } from "./queries-C-MUZaIy.js";
|
|
7
|
+
import { n as resolveGitHubIssueSync, t as init_tracker_utils } from "./tracker-utils-CJ6BHjcD.js";
|
|
8
|
+
import { n as init_issue_service_singleton, r as issue_service_singleton_exports } from "./issue-service-singleton-C6ZduvuY.js";
|
|
9
|
+
import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DzK385vD.js";
|
|
10
|
+
import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-B4Xdb4cY.js";
|
|
11
|
+
import { S as init_specs, d as readPlanSync, i as findPlanSync, o as init_io, x as findSpecByIssue } from "./io-B00PBNku.js";
|
|
12
|
+
import { a as readAutoSpawnOnFinalizeFlagAsync } from "./auto-spawn-consent-CQ9Bi9q6.js";
|
|
13
|
+
import { c as init_control_settings, f as isFlywheelAutoPickupBacklog } from "./control-settings-CiqGxXnc.js";
|
|
14
|
+
import { i as loadCloisterConfig, r as init_config } from "./config-Bi3u1VK7.js";
|
|
15
|
+
import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-CmNk0zLU.js";
|
|
16
|
+
import { h as init_pickup, r as LEGACY_PARKED_LABELS } from "./pickup-DWhqzliO.js";
|
|
17
|
+
import { r as activeOrderBookIssues } from "./flywheel-BHx8XuMr.js";
|
|
18
|
+
import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-BehTG1be.js";
|
|
19
|
+
import { t as recordDeadEndNeedsYou } from "./dead-end-trip-D8A3msX9.js";
|
|
20
|
+
import "./spawn-planning-session-pcF-YeFE.js";
|
|
13
21
|
import { Effect } from "effect";
|
|
14
22
|
import { existsSync, readdirSync } from "fs";
|
|
15
23
|
import { join } from "path";
|
|
16
24
|
import { readFile, readdir } from "fs/promises";
|
|
17
25
|
import { exec } from "child_process";
|
|
18
26
|
import { promisify } from "util";
|
|
19
|
-
//#region ../../lib/cloister/
|
|
20
|
-
init_agents();
|
|
27
|
+
//#region ../../lib/cloister/autonomous-work-dispatch.ts
|
|
21
28
|
init_activity_logger();
|
|
29
|
+
init_tmux();
|
|
30
|
+
init_tracker_utils();
|
|
22
31
|
init_internal_token();
|
|
23
|
-
|
|
32
|
+
init_lifecycle();
|
|
24
33
|
init_review_status();
|
|
25
|
-
init_tmux();
|
|
26
34
|
init_io();
|
|
27
|
-
|
|
35
|
+
init_agents();
|
|
28
36
|
init_github_app();
|
|
29
|
-
|
|
37
|
+
init_pickup();
|
|
38
|
+
init_control_settings();
|
|
39
|
+
init_specs();
|
|
40
|
+
init_projects();
|
|
41
|
+
const RELEASE_CONTEXT_CACHE_MS = 5e3;
|
|
42
|
+
let autoPickupCache = null;
|
|
43
|
+
const activeBookCache = /* @__PURE__ */ new Map();
|
|
44
|
+
function getSharedIssues() {
|
|
45
|
+
const { getSharedIssueService } = (init_issue_service_singleton(), __toCommonJS(issue_service_singleton_exports));
|
|
46
|
+
return getSharedIssueService().getIssues();
|
|
47
|
+
}
|
|
48
|
+
async function defaultFindPlannedState(projectRoot, issueId) {
|
|
49
|
+
const entry = await Effect.runPromise(findSpecByIssue(projectRoot, issueId).pipe(Effect.catch(() => Effect.succeed(null))));
|
|
50
|
+
if (!entry) return null;
|
|
51
|
+
return {
|
|
52
|
+
status: entry.status,
|
|
53
|
+
itemCount: Array.isArray(entry.document.plan?.items) ? entry.document.plan.items.length : 0
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function isPlannedState(state) {
|
|
57
|
+
return state !== null && (state.status === "proposed" || state.status === "active") && state.itemCount > 0;
|
|
58
|
+
}
|
|
59
|
+
async function cachedAutoPickup(deps, now) {
|
|
60
|
+
if (deps.isAutoPickupBacklog) return deps.isAutoPickupBacklog();
|
|
61
|
+
if (autoPickupCache && autoPickupCache.expiresAt > now) return autoPickupCache.value;
|
|
62
|
+
const value = isFlywheelAutoPickupBacklog();
|
|
63
|
+
autoPickupCache = {
|
|
64
|
+
value,
|
|
65
|
+
expiresAt: now + RELEASE_CONTEXT_CACHE_MS
|
|
66
|
+
};
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
async function cachedActiveBookIssues(projectRoot, deps, now) {
|
|
70
|
+
if (deps.activeBookIssues) return deps.activeBookIssues(projectRoot);
|
|
71
|
+
const cached = activeBookCache.get(projectRoot);
|
|
72
|
+
if (cached && cached.expiresAt > now) return cached.value;
|
|
73
|
+
const value = await activeOrderBookIssues(projectRoot);
|
|
74
|
+
activeBookCache.set(projectRoot, {
|
|
75
|
+
value,
|
|
76
|
+
expiresAt: now + RELEASE_CONTEXT_CACHE_MS
|
|
77
|
+
});
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
function emptyInput(labels, planned = false) {
|
|
81
|
+
return {
|
|
82
|
+
labels,
|
|
83
|
+
planned,
|
|
84
|
+
autoPickupBacklog: false,
|
|
85
|
+
activeBookMember: false,
|
|
86
|
+
autoSpawnOnFinalizeConsent: false
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function gatherAutonomousWorkDispatchInput(issueId, deps = {}) {
|
|
90
|
+
const normalizedIssueId = issueId.trim().toUpperCase();
|
|
91
|
+
let labels = null;
|
|
92
|
+
try {
|
|
93
|
+
const issue = (deps.getIssues ?? getSharedIssues)().find((candidate) => typeof candidate["identifier"] === "string" && candidate["identifier"].toUpperCase() === normalizedIssueId);
|
|
94
|
+
if (issue) labels = (Array.isArray(issue["labels"]) ? issue["labels"] : []).map((label) => typeof label === "string" ? label : label?.name ?? "").filter((label) => Boolean(label));
|
|
95
|
+
} catch {}
|
|
96
|
+
const labelDecision = decideAutonomousWorkDispatch({ ...emptyInput(labels, true) });
|
|
97
|
+
if (!labelDecision.allow && labelDecision.code !== "not-released") return emptyInput(labels);
|
|
98
|
+
let project = null;
|
|
99
|
+
let planned = deps.knownPlanned === true;
|
|
100
|
+
if (!planned) try {
|
|
101
|
+
project = (deps.resolveProject ?? resolveProjectFromIssueSync)(normalizedIssueId);
|
|
102
|
+
planned = Boolean(project && isPlannedState(await (deps.findPlannedState ?? defaultFindPlannedState)(project.projectPath, normalizedIssueId)));
|
|
103
|
+
} catch {
|
|
104
|
+
planned = false;
|
|
105
|
+
}
|
|
106
|
+
if (!planned) return emptyInput(labels);
|
|
107
|
+
if (new Set(labels?.map((label) => label.toLowerCase())).has("released")) return emptyInput(labels, true);
|
|
108
|
+
if (!project) try {
|
|
109
|
+
project = (deps.resolveProject ?? resolveProjectFromIssueSync)(normalizedIssueId);
|
|
110
|
+
} catch {
|
|
111
|
+
project = null;
|
|
112
|
+
}
|
|
113
|
+
const now = (deps.now ?? Date.now)();
|
|
114
|
+
const [autoPickupBacklog, activeIssues, autoSpawnOnFinalizeConsent] = await Promise.all([
|
|
115
|
+
cachedAutoPickup(deps, now).catch(() => false),
|
|
116
|
+
project ? cachedActiveBookIssues(project.projectPath, deps, now).catch(() => /* @__PURE__ */ new Set()) : /* @__PURE__ */ new Set(),
|
|
117
|
+
Promise.resolve((deps.readAutoSpawnConsent ?? readAutoSpawnOnFinalizeFlagAsync)(normalizedIssueId)).catch(() => false)
|
|
118
|
+
]);
|
|
119
|
+
return {
|
|
120
|
+
labels,
|
|
121
|
+
planned: true,
|
|
122
|
+
autoPickupBacklog,
|
|
123
|
+
activeBookMember: activeIssues.has(normalizedIssueId),
|
|
124
|
+
autoSpawnOnFinalizeConsent
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function decideAutonomousWorkDispatch(input) {
|
|
128
|
+
if (input.labels === null) return {
|
|
129
|
+
allow: false,
|
|
130
|
+
code: "labels-unavailable",
|
|
131
|
+
reason: "Autonomous work dispatch was refused because tracker labels are unavailable, so ready, released, parked, vetoed, objection, and epic state cannot be verified. Restore label access or run pan start manually."
|
|
132
|
+
};
|
|
133
|
+
const labels = new Set(input.labels.map((label) => label.toLowerCase()));
|
|
134
|
+
const hasLabel = (label) => labels.has(label);
|
|
135
|
+
if (hasLabel("parked") || LEGACY_PARKED_LABELS.some(hasLabel)) return {
|
|
136
|
+
allow: false,
|
|
137
|
+
code: "parked",
|
|
138
|
+
reason: "Autonomous work dispatch was refused because the issue is parked. Remove the parked label before allowing autonomous work, or run pan start manually."
|
|
139
|
+
};
|
|
140
|
+
if (hasLabel("vetoed")) return {
|
|
141
|
+
allow: false,
|
|
142
|
+
code: "vetoed",
|
|
143
|
+
reason: "Autonomous work dispatch was refused because the issue is vetoed. Remove the veto before allowing autonomous work, or run pan start manually."
|
|
144
|
+
};
|
|
145
|
+
if (hasLabel("objection")) return {
|
|
146
|
+
allow: false,
|
|
147
|
+
code: "objection",
|
|
148
|
+
reason: "Autonomous work dispatch was refused because the issue has an open objection. Resolve the objection before allowing autonomous work, or run pan start manually."
|
|
149
|
+
};
|
|
150
|
+
if (hasLabel("epic")) return {
|
|
151
|
+
allow: false,
|
|
152
|
+
code: "epic",
|
|
153
|
+
reason: "Autonomous work dispatch was refused because the issue is an epic container. Start one of its child issues instead."
|
|
154
|
+
};
|
|
155
|
+
if (!hasLabel("ready")) return {
|
|
156
|
+
allow: false,
|
|
157
|
+
code: "not-ready",
|
|
158
|
+
reason: "Autonomous work dispatch was refused because the issue is not ready. Add the ready label before allowing autonomous work, or run pan start manually."
|
|
159
|
+
};
|
|
160
|
+
if (!input.planned) return {
|
|
161
|
+
allow: false,
|
|
162
|
+
code: "not-planned",
|
|
163
|
+
reason: "Autonomous work dispatch was refused because no active implementation plan with work items is available. Complete planning or run pan start manually."
|
|
164
|
+
};
|
|
165
|
+
const releaseSource = hasLabel("released") ? "released-label" : input.autoPickupBacklog ? "auto-pickup" : input.activeBookMember ? "active-order-book" : input.autoSpawnOnFinalizeConsent ? "planning-consent" : null;
|
|
166
|
+
if (!releaseSource) return {
|
|
167
|
+
allow: false,
|
|
168
|
+
code: "not-released",
|
|
169
|
+
reason: "Autonomous work dispatch was refused because the issue is not released and no release override applies. Add the released label, enable auto-pickup, include the issue in the active order book, or launch planning with auto-start; alternatively, run pan start manually."
|
|
170
|
+
};
|
|
171
|
+
return {
|
|
172
|
+
allow: true,
|
|
173
|
+
releaseSource
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//#endregion
|
|
177
|
+
//#region ../../lib/cloister/orphan-proposed-reconciler.ts
|
|
178
|
+
/**
|
|
179
|
+
* Reconciles proposed specs only after the shared autonomous-work pickup gate
|
|
180
|
+
* passes; explicit planning auto-start consent is a release source, not a bypass
|
|
181
|
+
* for readiness, tracker-label availability, or blocker labels.
|
|
182
|
+
*/
|
|
183
|
+
init_projects();
|
|
30
184
|
init_config();
|
|
31
185
|
init_issue_closed();
|
|
32
186
|
const DEFAULT_ATTEMPT_INTERVAL_MS = 300 * 1e3;
|
|
187
|
+
const MAX_PICKUP_REFUSAL_REASONS = 512;
|
|
33
188
|
const execAsync = promisify(exec);
|
|
34
189
|
const attemptCooldowns = /* @__PURE__ */ new Map();
|
|
190
|
+
const pickupRefusalReasons = /* @__PURE__ */ new Map();
|
|
35
191
|
const terminalClosedIssueIds = /* @__PURE__ */ new Set();
|
|
36
192
|
let scanInFlight = false;
|
|
37
193
|
function hasReviewPipelinePresence(status) {
|
|
@@ -175,7 +331,7 @@ function classifySpawnSkip(status, body) {
|
|
|
175
331
|
if (status === 422 && /already closed|closed issue|cannot start an agent for a closed issue/i.test(error)) return "closed-issue";
|
|
176
332
|
return "spawn-failed";
|
|
177
333
|
}
|
|
178
|
-
async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = internalDashboardOrigin()) {
|
|
334
|
+
async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = internalDashboardOrigin(), autoSpawnConsentRequired = false) {
|
|
179
335
|
const internalToken = getInternalTokenSync();
|
|
180
336
|
const response = await fetch(new URL("/api/agents", dashboardOrigin), {
|
|
181
337
|
method: "POST",
|
|
@@ -186,13 +342,16 @@ async function spawnWorkAgentThroughAgentsEndpoint(issueId, dashboardOrigin = in
|
|
|
186
342
|
},
|
|
187
343
|
body: JSON.stringify({
|
|
188
344
|
issueId,
|
|
189
|
-
role: "work"
|
|
345
|
+
role: "work",
|
|
346
|
+
startedBy: "orphan-proposed-reconciler",
|
|
347
|
+
autoSpawnConsentRequired
|
|
190
348
|
})
|
|
191
349
|
});
|
|
192
350
|
const body = await response.json().catch(() => ({}));
|
|
193
351
|
const agentId = typeof body["agentId"] === "string" ? body["agentId"] : `agent-${issueId.toLowerCase()}`;
|
|
194
352
|
if (response.ok && body["success"] !== false) return {
|
|
195
353
|
spawned: true,
|
|
354
|
+
...body["startingContainers"] === true ? { queued: true } : {},
|
|
196
355
|
agentId
|
|
197
356
|
};
|
|
198
357
|
return {
|
|
@@ -217,7 +376,8 @@ async function triggerRebuildAndStart(issueId, dashboardOrigin = internalDashboa
|
|
|
217
376
|
"content-type": "application/json",
|
|
218
377
|
origin: dashboardOrigin,
|
|
219
378
|
...internalToken ? { [INTERNAL_TOKEN_HEADER]: internalToken } : {}
|
|
220
|
-
}
|
|
379
|
+
},
|
|
380
|
+
body: JSON.stringify({ startedBy: "workspace-rebuild-recovery" })
|
|
221
381
|
});
|
|
222
382
|
const body = await response.json().catch(() => ({}));
|
|
223
383
|
if (response.ok && body["success"] !== false) return { triggered: true };
|
|
@@ -255,10 +415,30 @@ function emitReconcilerActivity(level, message, details = {}, issueId = "ALL") {
|
|
|
255
415
|
function logReconcilerDiagnostic(kind, info = {}) {
|
|
256
416
|
console.debug(`[orphan-proposed-reconciler] ${kind}`, info);
|
|
257
417
|
}
|
|
418
|
+
async function recordPickupRefusal(issueId, now, decision) {
|
|
419
|
+
const reason = `pickup-gate:${decision.code}`;
|
|
420
|
+
logReconcilerDiagnostic("spawn-skipped", {
|
|
421
|
+
issueId,
|
|
422
|
+
reason
|
|
423
|
+
});
|
|
424
|
+
attemptCooldowns.set(issueId, now);
|
|
425
|
+
if (pickupRefusalReasons.get(issueId) !== decision.reason) {
|
|
426
|
+
if (!pickupRefusalReasons.has(issueId) && pickupRefusalReasons.size >= MAX_PICKUP_REFUSAL_REASONS) {
|
|
427
|
+
const oldestIssueId = pickupRefusalReasons.keys().next().value;
|
|
428
|
+
if (oldestIssueId) pickupRefusalReasons.delete(oldestIssueId);
|
|
429
|
+
}
|
|
430
|
+
pickupRefusalReasons.set(issueId, decision.reason);
|
|
431
|
+
await recordDeadEndNeedsYou(issueId, "orphan-proposed-pickup-gate", "proposed", decision.reason);
|
|
432
|
+
}
|
|
433
|
+
return [`Skipped orphan proposed spec ${issueId}: ${reason}`];
|
|
434
|
+
}
|
|
435
|
+
async function defaultEvaluatePickupGate(issueId) {
|
|
436
|
+
return decideAutonomousWorkDispatch(await gatherAutonomousWorkDispatchInput(issueId, { knownPlanned: true }));
|
|
437
|
+
}
|
|
258
438
|
/**
|
|
259
|
-
* PAN-1908: reactive orphan-proposed handler. When a spec reaches `proposed
|
|
260
|
-
*
|
|
261
|
-
* without scanning all project specs.
|
|
439
|
+
* PAN-1908: reactive orphan-proposed handler. When a spec reaches `proposed`,
|
|
440
|
+
* the autonomous-work pickup gate allows it, and no work agent is
|
|
441
|
+
* running/starting, spawn a work agent without scanning all project specs.
|
|
262
442
|
*/
|
|
263
443
|
async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
264
444
|
const upperIssueId = issueId.trim().toUpperCase();
|
|
@@ -324,8 +504,20 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
|
324
504
|
});
|
|
325
505
|
return [];
|
|
326
506
|
}
|
|
507
|
+
let pickupGate;
|
|
508
|
+
try {
|
|
509
|
+
pickupGate = await (options.evaluatePickupGate ?? defaultEvaluatePickupGate)(upperIssueId);
|
|
510
|
+
} catch (error) {
|
|
511
|
+
pickupGate = {
|
|
512
|
+
allow: false,
|
|
513
|
+
code: "labels-unavailable",
|
|
514
|
+
reason: `Autonomous work dispatch was refused because pickup evaluation failed: ${error instanceof Error ? error.message : String(error)}`
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
if (!pickupGate.allow) return recordPickupRefusal(upperIssueId, now, pickupGate);
|
|
518
|
+
pickupRefusalReasons.delete(upperIssueId);
|
|
327
519
|
const agentId = `agent-${issueLower}`;
|
|
328
|
-
const agentState = await Effect.runPromise(getAgentState(agentId).pipe(Effect.catch(() => Effect.succeed(null))));
|
|
520
|
+
const agentState = options.getAgentStateForIssue ? await options.getAgentStateForIssue(agentId) : await Effect.runPromise(getAgentState(agentId).pipe(Effect.catch(() => Effect.succeed(null))));
|
|
329
521
|
if (agentState?.status === "starting" || agentState?.status === "running") {
|
|
330
522
|
logReconcilerDiagnostic("spawn-skipped", {
|
|
331
523
|
issueId: upperIssueId,
|
|
@@ -340,7 +532,7 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
|
340
532
|
});
|
|
341
533
|
return [];
|
|
342
534
|
}
|
|
343
|
-
if (hasIssueScopedSession(await Effect.runPromise(listSessionNames().pipe(Effect.catch(() => Effect.succeed([])))), agentId)) {
|
|
535
|
+
if (hasIssueScopedSession(options.tmuxSessionNames ?? await Effect.runPromise(listSessionNames().pipe(Effect.catch(() => Effect.succeed([])))), agentId)) {
|
|
344
536
|
logReconcilerDiagnostic("spawn-skipped", {
|
|
345
537
|
issueId: upperIssueId,
|
|
346
538
|
reason: "issue-scoped-session"
|
|
@@ -394,15 +586,17 @@ async function handleOrphanProposedSpec(issueId, options = {}) {
|
|
|
394
586
|
}
|
|
395
587
|
attemptCooldowns.set(upperIssueId, now);
|
|
396
588
|
try {
|
|
397
|
-
const
|
|
589
|
+
const autoSpawnConsentRequired = pickupGate.releaseSource === "planning-consent";
|
|
590
|
+
const spawn = await (options.spawnWorkAgent ?? ((id, required) => spawnWorkAgentThroughAgentsEndpoint(id, options.dashboardOrigin, required)))(upperIssueId, autoSpawnConsentRequired);
|
|
398
591
|
if (spawn.spawned) {
|
|
399
|
-
emitReconcilerActivity("success", `Started work agent for ${upperIssueId} — proposed spec had tasks but no running agent`, {
|
|
592
|
+
emitReconcilerActivity("success", spawn.queued ? `Queued container startup for ${upperIssueId} before work-agent spawn` : `Started work agent for ${upperIssueId} — proposed spec had tasks but no running agent`, {
|
|
400
593
|
issueId: upperIssueId,
|
|
401
594
|
agentId: spawn.agentId,
|
|
595
|
+
queued: spawn.queued === true,
|
|
402
596
|
projectKey,
|
|
403
597
|
projectPath
|
|
404
598
|
}, upperIssueId);
|
|
405
|
-
return [`Spawned work agent for orphan proposed spec ${upperIssueId}`];
|
|
599
|
+
return [spawn.queued ? `Queued container startup for orphan proposed spec ${upperIssueId}` : `Spawned work agent for orphan proposed spec ${upperIssueId}`];
|
|
406
600
|
}
|
|
407
601
|
const reason = spawn.skippedReason ?? "spawn-failed";
|
|
408
602
|
if (reason === "closed-issue") {
|
|
@@ -453,6 +647,8 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
453
647
|
try {
|
|
454
648
|
const actions = [];
|
|
455
649
|
const candidates = await findOrphanProposedSpecsForReconciler(options);
|
|
650
|
+
const liveCandidateIds = new Set(candidates.map((candidate) => candidate.issueId));
|
|
651
|
+
for (const issueId of pickupRefusalReasons.keys()) if (!liveCandidateIds.has(issueId)) pickupRefusalReasons.delete(issueId);
|
|
456
652
|
for (const candidate of candidates) {
|
|
457
653
|
let planDoc;
|
|
458
654
|
try {
|
|
@@ -467,6 +663,7 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
467
663
|
const result = await handleOrphanProposedSpec(candidate.issueId, {
|
|
468
664
|
spawnWorkAgent: options.spawnWorkAgent,
|
|
469
665
|
hasOpenPrForBranch: options.hasOpenPrForBranch,
|
|
666
|
+
evaluatePickupGate: options.evaluatePickupGate,
|
|
470
667
|
dashboardOrigin: options.dashboardOrigin,
|
|
471
668
|
config: {
|
|
472
669
|
enabled: true,
|
|
@@ -479,7 +676,9 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
479
676
|
spec: {
|
|
480
677
|
path: candidate.specPath,
|
|
481
678
|
doc: planDoc
|
|
482
|
-
}
|
|
679
|
+
},
|
|
680
|
+
tmuxSessionNames: options.tmuxSessionNames,
|
|
681
|
+
getAgentStateForIssue: options.getAgentStateForIssue
|
|
483
682
|
});
|
|
484
683
|
actions.push(...result);
|
|
485
684
|
}
|
|
@@ -489,6 +688,6 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
489
688
|
}
|
|
490
689
|
}
|
|
491
690
|
//#endregion
|
|
492
|
-
export { spawnWorkAgentThroughAgentsEndpoint as a, reconcileOrphanProposedSpecs as i, handleOrphanProposedSpec as n, triggerRebuildAndStart as o, hasReviewPipelinePresence as r, findOrphanProposedSpecsForReconciler as t };
|
|
691
|
+
export { spawnWorkAgentThroughAgentsEndpoint as a, gatherAutonomousWorkDispatchInput as c, reconcileOrphanProposedSpecs as i, handleOrphanProposedSpec as n, triggerRebuildAndStart as o, hasReviewPipelinePresence as r, decideAutonomousWorkDispatch as s, findOrphanProposedSpecsForReconciler as t };
|
|
493
692
|
|
|
494
|
-
//# sourceMappingURL=orphan-proposed-reconciler-
|
|
693
|
+
//# sourceMappingURL=orphan-proposed-reconciler-B6vJHxtX.js.map
|
package/server/{orphan-proposed-reconciler-CWmOdM9-.js → orphan-proposed-reconciler-DcgTPPFY.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-
|
|
1
|
+
import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-B6vJHxtX.js";
|
|
2
2
|
export { handleOrphanProposedSpec };
|
package/server/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@overdeck/desktop-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@overdeck/desktop-server",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.47.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@effect/platform-node": "4.0.0-beta.73",
|
|
12
12
|
"@google-cloud/speech": "7.3.1",
|
|
@@ -446,9 +446,9 @@
|
|
|
446
446
|
}
|
|
447
447
|
},
|
|
448
448
|
"node_modules/@types/node": {
|
|
449
|
-
"version": "26.1.
|
|
450
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.
|
|
451
|
-
"integrity": "sha512-
|
|
449
|
+
"version": "26.1.2",
|
|
450
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
|
|
451
|
+
"integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
|
|
452
452
|
"license": "MIT",
|
|
453
453
|
"dependencies": {
|
|
454
454
|
"undici-types": "~8.3.0"
|
package/server/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { Fr as init_errors, Tr as FsError, cn as flushAutoCommits, ln as init_auto_commit, un as queueAutoCommit } from "./config-yaml-
|
|
3
|
-
import { p as init_types } from "./types-
|
|
4
|
-
import { F as getReadableWorkspacePanPaths, I as getWorkspacePanPaths, L as init_continue, M as getProjectPanPaths, N as ensureWorkspacePanDir, P as getLegacyWorkspacePanPaths, S as init_specs, b as ensurePanDirs } from "./io-
|
|
2
|
+
import { Fr as init_errors, Tr as FsError, cn as flushAutoCommits, ln as init_auto_commit, un as queueAutoCommit } from "./config-yaml-CxdwhAIA.js";
|
|
3
|
+
import { p as init_types } from "./types-Cm5ASJbq.js";
|
|
4
|
+
import { F as getReadableWorkspacePanPaths, I as getWorkspacePanPaths, L as init_continue, M as getProjectPanPaths, N as ensureWorkspacePanDir, P as getLegacyWorkspacePanPaths, S as init_specs, b as ensurePanDirs } from "./io-B00PBNku.js";
|
|
5
5
|
import { Effect, FileSystem } from "effect";
|
|
6
6
|
import { join } from "path";
|
|
7
7
|
import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
@@ -291,4 +291,4 @@ var init_pan_dir = __esmMin((() => {
|
|
|
291
291
|
//#endregion
|
|
292
292
|
export { getDraftPath as a, clearFeedback as c, checkPrdGateSync as i, readFeedback as l, readWorkspaceContext as n, getIssueDraftPath as o, writeWorkspaceContext as r, promoteWorkspacePrdDraft as s, init_pan_dir as t, writeFeedback as u };
|
|
293
293
|
|
|
294
|
-
//# sourceMappingURL=pan-dir-
|
|
294
|
+
//# sourceMappingURL=pan-dir-DMzF5wne.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { ci as
|
|
2
|
+
import { ci as getOverdeckHome, li as init_paths$1 } from "./config-yaml-CxdwhAIA.js";
|
|
3
3
|
import { dirname, isAbsolute, join, relative, resolve } from "path";
|
|
4
4
|
import { mkdir } from "fs/promises";
|
|
5
5
|
//#region ../../lib/memory/paths.ts
|
|
@@ -62,4 +62,4 @@ var init_paths = __esmMin((() => {
|
|
|
62
62
|
//#endregion
|
|
63
63
|
export { resolveArchiveDir as a, resolveMemoryRoot as c, resolveRagRunsFile as d, resolveStatusFile as f, init_paths as i, resolveObservationsFile as l, ensureDir as n, resolveFtsDbPath as o, resolveSummariesDir as p, ensureParentDir as r, resolveIssueMemoryRoot as s, assertMemorySafeSegment as t, resolvePendingDir as u };
|
|
64
64
|
|
|
65
|
-
//# sourceMappingURL=paths-
|
|
65
|
+
//# sourceMappingURL=paths-sJBSb7Ul.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-
|
|
1
|
+
import { n as init_review_status_source, s as resolveCanonicalReviewStatus } from "./review-status-source-DIk1JSow.js";
|
|
2
2
|
import { basename, dirname, join } from "node:path";
|
|
3
3
|
import { readFile, readdir, rename, unlink } from "node:fs/promises";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
@@ -107,4 +107,4 @@ async function settlePendingLifecycleClaim(claim, issueId, succeeded) {
|
|
|
107
107
|
//#endregion
|
|
108
108
|
export { settlePendingLifecycleClaim as n, claimPendingLifecycleFile as t };
|
|
109
109
|
|
|
110
|
-
//# sourceMappingURL=pending-lifecycle-claim-
|
|
110
|
+
//# sourceMappingURL=pending-lifecycle-claim-DilzGfgk.js.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
+
import { ci as getOverdeckHome, li as init_paths } from "./config-yaml-CxdwhAIA.js";
|
|
3
|
+
import "effect";
|
|
4
|
+
import { appendFileSync, mkdirSync } from "fs";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
import "fs/promises";
|
|
7
|
+
//#region ../../lib/persistent-logger.ts
|
|
8
|
+
/**
|
|
9
|
+
* Append-only persistent logger for forensic audit trails.
|
|
10
|
+
*
|
|
11
|
+
* Complements the SQLite event store (activity-logger.ts) with flat-file logs
|
|
12
|
+
* that survive event-store resets and are greppable from the shell.
|
|
13
|
+
*
|
|
14
|
+
* Files:
|
|
15
|
+
* ~/.overdeck/logs/deacon.log — deacon startup recovery actions
|
|
16
|
+
* ~/.overdeck/agents/<id>/lifecycle.log — per-agent state transitions
|
|
17
|
+
*/
|
|
18
|
+
function logsDir() {
|
|
19
|
+
return join(getOverdeckHome(), "logs");
|
|
20
|
+
}
|
|
21
|
+
function agentDir(agentId) {
|
|
22
|
+
return join(getOverdeckHome(), "agents", agentId);
|
|
23
|
+
}
|
|
24
|
+
function ensureLogsDir() {
|
|
25
|
+
try {
|
|
26
|
+
mkdirSync(logsDir(), { recursive: true });
|
|
27
|
+
} catch {}
|
|
28
|
+
}
|
|
29
|
+
function ensureAgentDir(agentId) {
|
|
30
|
+
try {
|
|
31
|
+
mkdirSync(agentDir(agentId), { recursive: true });
|
|
32
|
+
} catch {}
|
|
33
|
+
}
|
|
34
|
+
function timestamp() {
|
|
35
|
+
return (/* @__PURE__ */ new Date()).toISOString();
|
|
36
|
+
}
|
|
37
|
+
/** Append a line to ~/.overdeck/logs/deacon.log */
|
|
38
|
+
function logDeaconEventSync(message) {
|
|
39
|
+
ensureLogsDir();
|
|
40
|
+
try {
|
|
41
|
+
appendFileSync(join(logsDir(), "deacon.log"), `[${timestamp()}] ${message}\n`);
|
|
42
|
+
} catch {}
|
|
43
|
+
}
|
|
44
|
+
/** Append a line to ~/.overdeck/agents/<agentId>/lifecycle.log */
|
|
45
|
+
function logAgentLifecycleSync(agentId, message) {
|
|
46
|
+
ensureAgentDir(agentId);
|
|
47
|
+
try {
|
|
48
|
+
appendFileSync(join(agentDir(agentId), "lifecycle.log"), `[${timestamp()}] ${message}\n`);
|
|
49
|
+
} catch {}
|
|
50
|
+
}
|
|
51
|
+
var init_persistent_logger = __esmMin((() => {
|
|
52
|
+
init_paths();
|
|
53
|
+
}));
|
|
54
|
+
//#endregion
|
|
55
|
+
export { logAgentLifecycleSync as n, logDeaconEventSync as r, init_persistent_logger as t };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=persistent-logger-H_VjuOu7.js.map
|
|
@@ -166,10 +166,11 @@ function computeEpicGroups(nodes, edges, lk) {
|
|
|
166
166
|
}))
|
|
167
167
|
};
|
|
168
168
|
}
|
|
169
|
-
var READY_LABEL, PARKED_LABEL, VETOED_LABEL, BLOCKS_MAIN_LABEL, RELEASED_LABEL, OBJECTION_LABEL, LEGACY_PARKED_LABELS, EFFORT_UNITS;
|
|
169
|
+
var READY_LABEL, PARKED_LABEL, EPIC_LABEL, VETOED_LABEL, BLOCKS_MAIN_LABEL, RELEASED_LABEL, OBJECTION_LABEL, LEGACY_PARKED_LABELS, EFFORT_UNITS;
|
|
170
170
|
var init_pickup = __esmMin((() => {
|
|
171
171
|
READY_LABEL = "ready";
|
|
172
172
|
PARKED_LABEL = "parked";
|
|
173
|
+
EPIC_LABEL = "epic";
|
|
173
174
|
VETOED_LABEL = "vetoed";
|
|
174
175
|
BLOCKS_MAIN_LABEL = "blocks-main";
|
|
175
176
|
RELEASED_LABEL = "released";
|
|
@@ -184,6 +185,6 @@ var init_pickup = __esmMin((() => {
|
|
|
184
185
|
};
|
|
185
186
|
}));
|
|
186
187
|
//#endregion
|
|
187
|
-
export {
|
|
188
|
+
export { normalizeGate as _, PARKED_LABEL as a, VETOED_LABEL as c, computeEpicGroups as d, computeLanes as f, isAutoPickable as g, init_pickup as h, OBJECTION_LABEL as i, classifyIssue as l, computeWaves as m, EPIC_LABEL as n, READY_LABEL as o, computeStats as p, LEGACY_PARKED_LABELS as r, RELEASED_LABEL as s, BLOCKS_MAIN_LABEL as t, computeCohort as u, selectNeedsPlanning as v };
|
|
188
189
|
|
|
189
|
-
//# sourceMappingURL=pickup-
|
|
190
|
+
//# sourceMappingURL=pickup-DWhqzliO.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as init_pipeline_membership, r as resolvePipelineMembership, t as PLANNED_BACKLOG_SPEC_ONLY_REASON } from "./pipeline-membership-
|
|
1
|
+
import { n as init_pipeline_membership, r as resolvePipelineMembership, t as PLANNED_BACKLOG_SPEC_ONLY_REASON } from "./pipeline-membership-D9SBvItj.js";
|
|
2
2
|
init_pipeline_membership();
|
|
3
3
|
export { PLANNED_BACKLOG_SPEC_ONLY_REASON, resolvePipelineMembership };
|
|
@@ -54,4 +54,4 @@ var init_pipeline_membership = __esmMin((() => {
|
|
|
54
54
|
//#endregion
|
|
55
55
|
export { init_pipeline_membership as n, resolvePipelineMembership as r, PLANNED_BACKLOG_SPEC_ONLY_REASON as t };
|
|
56
56
|
|
|
57
|
-
//# sourceMappingURL=pipeline-membership-
|
|
57
|
+
//# sourceMappingURL=pipeline-membership-D9SBvItj.js.map
|
package/server/{pipeline-membership-gather-DTfcgxLl.js → pipeline-membership-gather-4eR-7Tqy.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as gatherProjectLensSignals, c as listIssueStatesBatched, d as mapPipelineProjects, f as projectRepositories, i as gatherIssueBranchContainment, l as listMergedPullRequestHeadsBatched, m as snapshotBranchRefs, n as PipelineMembershipUnavailableError, o as gatherProjectLensSignalsForProjects, p as resolveRepositoryDefaultBranch, r as classifyBranchRefLine, s as init_pipeline_membership_gather, t as PIPELINE_PROJECT_CONCURRENCY, u as listOpenPullRequestsSnapshot } from "./pipeline-membership-gather-
|
|
1
|
+
import { a as gatherProjectLensSignals, c as listIssueStatesBatched, d as mapPipelineProjects, f as projectRepositories, i as gatherIssueBranchContainment, l as listMergedPullRequestHeadsBatched, m as snapshotBranchRefs, n as PipelineMembershipUnavailableError, o as gatherProjectLensSignalsForProjects, p as resolveRepositoryDefaultBranch, r as classifyBranchRefLine, s as init_pipeline_membership_gather, t as PIPELINE_PROJECT_CONCURRENCY, u as listOpenPullRequestsSnapshot } from "./pipeline-membership-gather-CeVGnNJ2.js";
|
|
2
2
|
init_pipeline_membership_gather();
|
|
3
3
|
export { PIPELINE_PROJECT_CONCURRENCY, PipelineMembershipUnavailableError, classifyBranchRefLine, gatherIssueBranchContainment, gatherProjectLensSignals, gatherProjectLensSignalsForProjects, listIssueStatesBatched, listMergedPullRequestHeadsBatched, listOpenPullRequestsSnapshot, mapPipelineProjects, projectRepositories, resolveRepositoryDefaultBranch, snapshotBranchRefs };
|