@overdeck/desktop 0.45.21 → 0.45.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/{acceptance-criteria-CJIFA8Vg.js → acceptance-criteria-DOA0KgXx.js} +5 -5
- package/server/{advancing-selfheal-CPOBO5ZS.js → advancing-selfheal-BBu6DSNm.js} +6 -6
- package/server/{agent-gc-D6PUckBB.js → agent-gc-BV1q_2EV.js} +4 -4
- package/server/agent-state-Bg0lhqwj.js +3 -0
- package/server/{agent-state-service-DHwemt96.js → agent-state-service-CnzFKSAQ.js} +1 -1
- package/server/{agent-state-service-6MFQqnFy.js → agent-state-service-HoK8U4jW.js} +5 -5
- package/server/{agents-DbrHWunF.js → agents-B4Bjbkfv.js} +4 -4
- package/server/agents-FlIgQ3ql.js +3 -0
- package/server/{archive-planning-BOnwJq8M.js → archive-planning-DYrYojxl.js} +31 -7
- package/server/{archive-planning-MPpvQJL4.js → archive-planning-zkJb3BeM.js} +1 -1
- package/server/{artifact-index-jobs-BOoySTKD.js → artifact-index-jobs-C-xy7Z5v.js} +2 -2
- package/server/{backlog-auto-trigger-BUaFI44J.js → backlog-auto-trigger-GtG71X8H.js} +3 -3
- package/server/{behavior-Dg-D8eBG.js → behavior-B_-4EKF3.js} +2 -2
- package/server/{briefing-freshness-OouGbJ7d.js → briefing-freshness-DWdW7vUm.js} +2 -2
- package/server/{build-info-27NlbKhV.js → build-info-BT096lEl.js} +3 -3
- package/server/{build-info-Cv6CI7Gu.js → build-info-DgTqZkL5.js} +1 -1
- package/server/{checkpoint-manager-C7mFCY_E.js → checkpoint-manager-B7Bt29J0.js} +1 -1
- package/server/{checkpoint-manager-D64fCC4p.js → checkpoint-manager-DDqcGyu8.js} +2 -2
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-Vh-J15ge.js → checkpoints-C-AXLfYT.js} +2 -2
- package/server/{checkpoints-DwZqT2qQ.js → checkpoints-CpgCjAlN.js} +1 -1
- package/server/{claude-hooks-provision-CS5W_dhI.js → claude-hooks-provision-C8wdRnN1.js} +1 -1
- package/server/{claude-hooks-provision-BVLGfHrv.js → claude-hooks-provision-but-_qGY.js} +2 -2
- package/server/{claude-permissions-C2OrLYKL.js → claude-permissions-H_5wHQZQ.js} +2 -2
- package/server/{claude-settings-overlay-DWXjafJh.js → claude-settings-overlay-BTENVmYf.js} +1 -1
- package/server/{claude-settings-overlay-DX-fMFpC.js → claude-settings-overlay-CbSz0Dvb.js} +2 -2
- package/server/cli-BsVIHwzC.js +3 -0
- package/server/{cli-mvpEOb3w.js → cli-vBeXbPrq.js} +9 -9
- package/server/{cliproxy-Dvsr4ZkW.js → cliproxy-Bgb2XCqi.js} +2 -2
- package/server/{cliproxy-7g1nObvB.js → cliproxy-DW0V86F8.js} +1 -1
- package/server/{close-issue-8F6uawYj.js → close-issue-Dn_4c4G8.js} +5 -5
- package/server/{closed-issue-reaper-BhV-r-tC.js → closed-issue-reaper-CWpY2uBw.js} +1 -1
- package/server/{closed-issue-reaper-BaYQYF6w.js → closed-issue-reaper-hANY_ehE.js} +9 -9
- package/server/codex-Dg7Is5yb.js +3 -0
- package/server/{codex-D_UBEOwL.js → codex-TmSi-yTv.js} +30 -8
- package/server/{codex-parser-BTzlOZiV.js → codex-parser-C4gSH-IR.js} +2 -2
- package/server/{config-CrduXs4a.js → config-CCvjQf27.js} +2 -2
- package/server/{config-nAB_F-Gp.js → config-DUIhMN_T.js} +1 -1
- package/server/{config-G1TOMJZA.js → config-DjLOdbgT.js} +2 -2
- package/server/{config-yaml-Ciyp2mYe.js → config-yaml-DvyMuOle.js} +177 -211
- package/server/{conflict-gate-BKalpcjL.js → conflict-gate-BSJkNTdp.js} +1 -1
- package/server/{conflict-gate-BLUNMs1i.js → conflict-gate-CmrYpa47.js} +3 -3
- package/server/{context-layers-YNpf6Q_I.js → context-layers-B3Nt58jl.js} +2 -2
- package/server/{context-layers-Cg9ZgVfx.js → context-layers-ZYFcWiyc.js} +3 -3
- package/server/{control-settings-D_79A6gp.js → control-settings-aP1ANIlI.js} +4 -4
- package/server/{conversation-compaction-DiuZbIUB.js → conversation-compaction-CNbTLB86.js} +8 -8
- package/server/{conversation-compaction-CMIeWW4_.js → conversation-compaction-DiG5zWQq.js} +1 -1
- package/server/{conversation-service-DQybSPUK.js → conversation-service-Du-MTNpJ.js} +6 -6
- package/server/{conversation-service-CWk8mEym.js → conversation-service-Up7FEzIC.js} +1 -1
- package/server/{conversations-BJ-t3BRm.js → conversations-6mPANqvL.js} +1 -1
- package/server/{conversations-BUgGvqVL.js → conversations-DbOs1e9Q.js} +4 -4
- package/server/{cost-jJ2cgDcG.js → cost-CW4WSe72.js} +3 -3
- package/server/{cost-Drm7qeD5.js → cost-Ca0YTWDw.js} +18 -2
- package/server/{cost-sync-DzHP6zaR.js → cost-sync-C0VdGme1.js} +3 -3
- package/server/{dag-DIji6O2b.js → dag-CdOjJVDT.js} +9 -9
- package/server/{dangerous-git-ops-BebB-61h.js → dangerous-git-ops-CT-IypG3.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-pleYrvIm.js → deacon-DYSEJb48.js} +3 -3
- package/server/{deacon-nudge-log-C5VCKtyi.js → deacon-nudge-log-Bjg8U4Y9.js} +3 -3
- package/server/{deacon-1s7bM5zn.js → deacon-pRnyD5w9.js} +1133 -474
- package/server/deacon-swarm-9jRLS5Ke.js +2 -0
- package/server/{deacon-swarm-DmA3rJ7k.js → deacon-swarm-DftYRDo8.js} +17 -17
- package/server/deacon.js +8 -8
- package/server/{deploy-patrol-DmM6F-yw.js → deploy-patrol-Bjsho_ha.js} +136 -19
- package/server/{deploy-window-ClLq1RYf.js → deploy-window-CM6W1-c6.js} +1 -1
- package/server/{deploy-window-jw4S_Y-c.js → deploy-window-DeP_OIRk.js} +77 -10
- package/server/{dev-supervisor-Do2Stz49.js → dev-supervisor-BpMoHlkR.js} +2 -2
- package/server/{devcontainer-renderer-D8ylupco.js → devcontainer-renderer-CtUgrVKW.js} +3 -3
- package/server/dist-Bd3vn0Hw.js +3 -0
- package/server/{dist-yfR7G1BL.js → dist-DyRx4cI7.js} +1 -1
- package/server/{docker-ClwPQaba.js → docker-BK7HIcBj.js} +2 -2
- package/server/{dod-BLphkhjs.js → dod-BrSfUHm0.js} +1 -1
- package/server/{ensure-devcontainer-BA3bICoY.js → ensure-devcontainer-DRqaAkBR.js} +1 -1
- package/server/{ensure-devcontainer-CFpQatOc.js → ensure-devcontainer-DseivYEy.js} +4 -4
- package/server/{esm-shims-BZw-fTQ6.js → esm-shims-CbI3BVkl.js} +1 -1
- package/server/{event-store-DABarGNz.js → event-store-Cr5PQwFC.js} +1 -1
- package/server/{event-store-BVnON3vf.js → event-store-tdiY5eDZ.js} +3 -3
- package/server/{events-CmERlnwn.js → events-CC1dgUpx.js} +3 -3
- package/server/{events-LGeUehYW.js → events-CvvGK6LT.js} +1 -1
- package/server/{factory-CQNprtHe.js → factory-CynerjXO.js} +50 -13
- package/server/{feature-registry-population-D9Z3tYSa.js → feature-registry-population-B0pmAz0a.js} +4 -4
- package/server/{feature-registry-storage-BWymOgXE.js → feature-registry-storage-_wUBRD3J.js} +2 -2
- package/server/{features--fOza5g5.js → features-Dhxz-wLc.js} +2 -2
- package/server/{feedback-target-Dqik2WTe.js → feedback-target-CPS15Vte.js} +7 -7
- package/server/{feedback-target-Dn9vfPpz.js → feedback-target-iygZwmMc.js} +1 -1
- package/server/{feedback-writer-Wlq5-qgS.js → feedback-writer-C9b6ccN1.js} +6 -5
- package/server/{feedback-writer-DDQNV8uc.js → feedback-writer-qmiMbqTZ.js} +1 -1
- package/server/{flywheel-Q-38YhZG.js → flywheel-DMCUzDWg.js} +1 -1
- package/server/{flywheel-1Wd8WDlh.js → flywheel-DSSpWmqF.js} +13 -13
- package/server/{flywheel-DPUc8r3V.js → flywheel-DcBkQvgE.js} +14 -14
- package/server/{flywheel-merge-order-CeBuX0EJ.js → flywheel-merge-order-C-6zRLvM.js} +1 -1
- package/server/{flywheel-merge-order-4SqOXFAr.js → flywheel-merge-order-DxbQKE1d.js} +8 -8
- package/server/forge-B-ZWyTRm.js +2 -0
- package/server/{forge-DBbDpiYc.js → forge-Ch9gCFod.js} +2 -2
- package/server/{from-hh6vTBGl.js → from-CJ_aH5jD.js} +1 -1
- package/server/{fts-db-6ponMie2.js → fts-db-CKgg0VKg.js} +2 -2
- package/server/{fts-operations-KIRK165y.js → fts-operations-BrL_VTRr.js} +2 -2
- package/server/git-utils-BVa07a4a.js +198 -0
- package/server/{git-utils-DmF5xkj8.js → git-utils-Dry_Ka_D.js} +1 -1
- package/server/{github-app-B3yfECo8.js → github-app-CMBdIFBQ.js} +11 -3
- package/server/{github-app-CeSVFL6C.js → github-app-CPfoFAdV.js} +1 -1
- package/server/{github-client-Dslipypz.js → github-client--XVlDpwM.js} +2 -2
- package/server/{github-client-4A6FgA8O.js → github-client-B4QsdE-X.js} +1 -1
- package/server/{github-pr-lookup-DBP0YHMr.js → github-pr-lookup-BRbDW-qk.js} +2 -2
- package/server/harness-binary-CVio2m-u.js +106 -0
- package/server/{harness-resolve-BGpO-OVM.js → harness-resolve-qHJBhy3Z.js} +9 -15
- package/server/{health-events-CZGZ5I-A.js → health-events-C9B8y1Hm.js} +2 -2
- package/server/{health-events-CnwV_SSz.js → health-events-CpfvuVmm.js} +1 -1
- package/server/{hooks-CoNscX84.js → hooks-DUXw8A0-.js} +2 -2
- package/server/{hooks-DvX33gY_.js → hooks-ltecuFqZ.js} +1 -1
- package/server/{hume-DSJt5eA_.js → hume-BEq0bUDg.js} +2 -2
- package/server/hume-B_DbflNM.js +3 -0
- package/server/{idle-stack-reaper-5DVRoY6P.js → idle-stack-reaper-D7w9t3fE.js} +1 -1
- package/server/{idle-stack-reaper-BfL8HqYy.js → idle-stack-reaper-w1ISSlhs.js} +2 -2
- package/server/{in-flight-guard-tVGiI5ee.js → in-flight-guard-aQ1IxeI3.js} +2 -2
- package/server/{infra-DN2wSxle.js → infra-CzaSOgul.js} +4 -4
- package/server/{injection-DtlT8Akv.js → injection-DZ0PfYa4.js} +7 -7
- package/server/{injection-DK9zh_HL.js → injection-oNZeoDhL.js} +1 -1
- package/server/{inspect-agent-DKByUS_F.js → inspect-agent-DJKLWcVT.js} +15 -11
- package/server/inspect-agent-ch-F-5Ci.js +2 -0
- package/server/{internal-token-DhfFiwW7.js → internal-token-Bb4XeV2x.js} +2 -2
- package/server/{internal-token-7bYL5v6K.js → internal-token-DXdfprGr.js} +1 -1
- package/server/{io-BiM-7Zsx.js → io-B3_AHDfr.js} +160 -184
- package/server/{issue-closed-Dfw3QDyZ.js → issue-closed-zhdvQicO.js} +7 -7
- package/server/{issue-lifecycle-B7HZWnTA.js → issue-lifecycle-CreaCkjW.js} +22 -22
- package/server/{issue-lifecycle-ytsEdDlK.js → issue-lifecycle-Dy4vd0Oa.js} +1 -1
- package/server/{issue-service-singleton-CPESc4Or.js → issue-service-singleton-B5ushCvE.js} +8 -8
- package/server/{issue-service-singleton-D5EB5eYr.js → issue-service-singleton-DabvBWUp.js} +1 -1
- package/server/{issues-XYtFMxrH.js → issues-B6ToV6x1.js} +2 -2
- package/server/{jsonl-parser-DJV2eZUP.js → jsonl-parser-Dhflo1SH.js} +3 -3
- package/server/{label-cleanup-CJ4m8iRU.js → label-cleanup-BKPJm4Hv.js} +3 -3
- package/server/{label-reconciler-CNf3Ylm3.js → label-reconciler-DdWbHEBu.js} +4 -4
- package/server/{launcher-generator-5DJRiovn.js → launcher-generator-CHVm7bGT.js} +10 -9
- package/server/{layers-cZx7ibtV.js → layers-DzxSTGNA.js} +2 -2
- package/server/lifecycle-DfeyBDwA.js +121 -0
- package/server/lifecycle-io-Bsnr2K4F.js +3 -0
- package/server/{lifecycle-io-DMurK4oM.js → lifecycle-io-D8iNBcux.js} +37 -37
- package/server/{lifecycle-CE7619Xw.js → lifecycle-sycO16hj.js} +6 -6
- package/server/{linear-client-BLyN-NiP.js → linear-client-D4zqMnX7.js} +2 -2
- package/server/{linear-client-Bj1l4FOA.js → linear-client-DqhDQO9k.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-hSC2BENe.js → merge-C_ZEhbqI.js} +3 -3
- package/server/{merge-CwX2_AWm.js → merge-DK23JEdS.js} +1 -1
- package/server/{merge-agent-CnORPiri.js → merge-agent-BQM3a8z5.js} +1 -1
- package/server/{merge-agent-DnBsms_V.js → merge-agent-XrB80vfT.js} +369 -213
- package/server/{merge-batch-C2w2U2eK.js → merge-batch-Bwoyr8Je.js} +1 -1
- package/server/{merge-blockers-DhRgh76x.js → merge-blockers-BsFjGrQ8.js} +2 -2
- package/server/merge-ops-DlB1IM0Y.js +2 -0
- package/server/{merge-rebase-CE-ZyOMY.js → merge-rebase-C1KIVr0s.js} +2 -2
- package/server/{merge-set-D7YNU1ZB.js → merge-set-DLz0MkGT.js} +3 -3
- package/server/{merge-set-DHkzPCJU.js → merge-set-DnSYdBEp.js} +1 -1
- package/server/{merge-sync-De1FYva5.js → merge-sync-DZ9dojJn.js} +2 -2
- package/server/{merge-sync-CpGA9Kg7.js → merge-sync-SSv3E-pl.js} +1 -1
- package/server/{merge-train-SvkRJZ-k.js → merge-train-DxDfBTjr.js} +3 -3
- package/server/{merge-train-deps-CECJTElu.js → merge-train-deps-CyYQUksx.js} +4 -4
- package/server/{merge-verification-B3meGcXF.js → merge-verification-CSizH3HY.js} +4 -4
- package/server/{multipart-parser-ByTMgYV5.js → multipart-parser-Dt8YPN5S.js} +2 -2
- package/server/{no-resume-mode-BnInAFKs.js → no-resume-mode-Cx3K0hHi.js} +11 -8
- package/server/node_modules/.package-lock.json +5 -5
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +3 -3
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +2 -2
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +5 -5
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +6 -8
- package/server/{orphan-proposed-reconciler-CAfuWTA1.js → orphan-proposed-reconciler-BTkDrl4R.js} +1 -1
- package/server/{orphan-proposed-reconciler-AxAGUouN.js → orphan-proposed-reconciler-neK8dHQk.js} +23 -14
- package/server/package-lock.json +6 -6
- package/server/package.json +1 -1
- package/server/{pan-dir-Rw17YjT1.js → pan-dir-DeVUgwA7.js} +78 -58
- package/server/{paths-FP8v3lTz.js → paths-_zEts6wc.js} +2 -2
- package/server/{pickup-xi3KTLaJ.js → pickup-Dd0Znxxy.js} +2 -2
- package/server/{pipeline-membership-BtKMNY7v.js → pipeline-membership-0HaEGDlH.js} +190 -68
- package/server/{pipeline-notifier-dQ-U4NSb.js → pipeline-notifier-6iCJplFZ.js} +1 -1
- package/server/{pipeline-notifier-BM2HLF7B.js → pipeline-notifier-D0ykk59O.js} +2 -2
- package/server/{project-pipelines-B59NfN44.js → project-pipelines-2sK1apsO.js} +2 -2
- package/server/projects-9SkRpES9.js +3 -0
- package/server/{prompts-CbqaVjbe.js → prompts-Dp4Tpk39.js} +2 -2
- package/server/providers-DKkBXhxU.js +3 -0
- package/server/{providers-d3pwXGVE.js → providers-DV7ec8l7.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-BxYSL7J-.js → chunk-BO2N2NFS-CltymLRg.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-C_F9Q2as.js → diagram-OG6HWLK6-D2f6pjgA.js} +1 -1
- package/server/public/assets/{dist-DQNg4CiF.js → dist-BWR4qFiV.js} +1 -1
- package/server/public/assets/{dist-CLSlc6cV.js → dist-DEmlBBNQ.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-Cq0my-0C.js → ganttDiagram-6RSMTGT7-DnfiViPK.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-eZC03dGh.js → highlighted-body-OFNGDK62-B8Wrmj9H.js} +1 -1
- package/server/public/assets/index-CUr1xv8w.css +1 -0
- package/server/public/assets/{index-SLYGA8AQ.js → index-CsSuZQBI.js} +148 -145
- package/server/public/assets/{linear-6Fi3qnGg.js → linear-C9zFQpkX.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-Dpmc6xsv.js → pieDiagram-4H26LBE5-lR8H7Yjd.js} +1 -1
- package/server/public/assets/{prod-ojHllFvN.js → prod-B1jCQihw.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-Ulr9gON5.js → quadrantDiagram-W4KKPZXB-CVQ2guem.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-CwdHGXfL.js → sankeyDiagram-5OEKKPKP-eD1RB4gm.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-r-bEDzJh.js → xychartDiagram-2RQKCTM6-ChEC6dQn.js} +1 -1
- package/server/public/index.html +54 -10
- package/server/{pull-requests-D3N6HQzI.js → pull-requests--Ib2jTgy.js} +1 -1
- package/server/{pull-requests-CjjPj7v6.js → pull-requests-CXIhdCYD.js} +13 -11
- package/server/{queries-B5hl7lMQ.js → queries-6d7Cdtm7.js} +723 -110
- package/server/{rally-Dp0Gb1DN.js → rally-B708-nZn.js} +3 -3
- package/server/{rally-api-DGaFz5L5.js → rally-api-nY0ZANw3.js} +2 -2
- package/server/{rally-api-CKr0O4DJ.js → rally-api-yjQ0TfHd.js} +1 -1
- package/server/{rally-client-SVbjGvqj.js → rally-client-B1EJhfV0.js} +4 -4
- package/server/{rally-client-Cqf6EX_r.js → rally-client-CULK2XAY.js} +1 -1
- package/server/rally-njs_mJrt.js +3 -0
- package/server/reap-terminal-sessions-MWnqdLCJ.js +4 -0
- package/server/{reap-terminal-sessions-CjqRAGw7.js → reap-terminal-sessions-N3BTkmX_.js} +11 -28
- package/server/{rebuild-stack-DHqCLvLX.js → rebuild-stack-Dp4eLkt4.js} +6 -6
- package/server/{rebuild-stack-DjdpALr1.js → rebuild-stack-kA7XngID.js} +1 -1
- package/server/{reconstruct-cache-BqrCQt0o.js → reconstruct-cache-uWbZfjms.js} +6 -6
- package/server/record-t6V-3Dcj.js +3 -0
- package/server/{record-update-BlB8mpKO.js → record-update-DACtKh6_.js} +1 -1
- package/server/record-update-Dq0t2uBG.js +310 -0
- package/server/{recovery-trip-l1Hsi37x.js → recovery-trip-BJtIQuag.js} +2 -2
- package/server/{release-engine-CSI4K6Oj.js → release-engine-DZpmGGzb.js} +5 -5
- package/server/{release-set-BywwggrE.js → release-set-hnXd_kga.js} +3 -3
- package/server/{remote-DYziAkiZ.js → remote-4tiENDaI.js} +3 -3
- package/server/{remote-cnoeuDWn.js → remote-Br-ZWVIP.js} +3 -3
- package/server/{remote-agents-BNORDWAX.js → remote-agents-CRCg1L4H.js} +1 -1
- package/server/{remote-agents-CZ2rc8I0.js → remote-agents-nmty1mLu.js} +6 -6
- package/server/{remote-completion-W67FNQ-A.js → remote-completion-BbWNd10K.js} +13 -13
- package/server/resume-CcKqnTvE.js +3 -0
- package/server/{review-agent-CSswH985.js → review-agent-DJRO8EG8.js} +1 -1
- package/server/{review-agent-CqSqSHkU.js → review-agent-sKkE1FEL.js} +23 -23
- package/server/{review-artifacts-BBgnd5df.js → review-artifacts-BLbSC4ke.js} +5 -5
- package/server/{review-context-Ctp9BdNJ.js → review-context-BgX3lcCx.js} +9 -9
- package/server/{review-status-CCgPVK1h.js → review-status-A7quS5KJ.js} +56 -39
- package/server/review-status-C6n6-9f_.js +3 -0
- package/server/{review-status-enrichment-DtDRGpst.js → review-status-enrichment-tbOn_A_u.js} +3 -3
- package/server/review-status-source-CxuEjLGg.js +39 -0
- package/server/{review-status-sync-jnLgd04F.js → review-status-sync-BhSQ0d0l.js} +2 -2
- package/server/{review-status-sync-C792ksoJ.js → review-status-sync-To3-iS-N.js} +1 -1
- package/server/{review-verdict-feedback-D5lW0o3k.js → review-verdict-feedback-C1Kg8n7t.js} +1 -1
- package/server/{review-verdict-feedback-CMsIpTpy.js → review-verdict-feedback-CTRNtzXO.js} +7 -7
- package/server/{rollup-B3kQmNpl.js → rollup-B53Y81xK.js} +1 -1
- package/server/{rollup-CLj_AK9f.js → rollup-WA0VD-Rr.js} +8 -8
- package/server/{scanner-C4NeC4FE.js → scanner-D2743cp8.js} +11 -7
- package/server/{sequence-io-Ce-6grIY.js → sequence-io-Cg0zYj_E.js} +4 -4
- package/server/{sequencer-agent-Bpz0yGmG.js → sequencer-agent-BGY8gjg-.js} +5 -5
- package/server/server.js +1348 -963
- package/server/{service-CqAY8Kmk.js → service-DCpB_SGd.js} +154 -51
- package/server/{session-fork-uNo4rMRA.js → session-fork-BQ8_6H32.js} +2 -2
- package/server/{session-history-DUehL3KN.js → session-history-CVZDpS3c.js} +4 -4
- package/server/{settings-DP2OYLXL.js → settings-BZ5m1UCl.js} +3 -3
- package/server/settings-D0OSwos5.js +2 -0
- package/server/{settings-D9grjmaP.js → settings-ylxwqwQG.js} +2 -2
- package/server/{shadow-engineering-Bi_oIMtF.js → shadow-engineering-BlxG6Xye.js} +3 -3
- package/server/{shadow-state-CDxEuPlE.js → shadow-state-C2_epgx2.js} +1 -1
- package/server/{shadow-state-a_ztFBJe.js → shadow-state-Dh-HzF2J.js} +2 -2
- package/server/{shadow-utils-CyOg6_Xq.js → shadow-utils-4bvjn9b3.js} +2 -2
- package/server/{ship-log-DDcueaIR.js → ship-log-ClSMIzZX.js} +1 -1
- package/server/{smart-compaction-C1_VVLEd.js → smart-compaction-CHIxLr_d.js} +1 -1
- package/server/{smart-compaction--Oj65Uov.js → smart-compaction-r4pHQBIr.js} +7 -7
- package/server/{spawn-planning-session-AiUSsBnH.js → spawn-planning-session-DWAorh2B.js} +25 -20
- package/server/{spawn-planning-session-LFtK2QCE.js → spawn-planning-session-KC_UduxD.js} +1 -1
- package/server/{specialist-completion-qOgqdqXH.js → specialist-completion-BXhav38U.js} +1 -1
- package/server/{specialist-context-gjj8Z4Ii.js → specialist-context-DtrYvGJ-.js} +5 -5
- package/server/{specialist-handoff-logger-BsBNvVZv.js → specialist-handoff-logger-C45ouoZ6.js} +2 -2
- package/server/{specialist-logs-CSLtvPx6.js → specialist-logs-DJ3RzKxW.js} +3 -3
- package/server/{specialists-D0VBf8g_.js → specialists-D5fRZXmN.js} +1 -1
- package/server/specialists-DVj0hvaL.js +3 -0
- package/server/{specialists-CYRwELzc.js → specialists-DyFeedjn.js} +66 -76
- package/server/{specialists-DAegTvRt.js → specialists-JVO00bs7.js} +374 -220
- package/server/specs-nN45DG2X.js +3 -0
- package/server/{src-OLoJhUiJ.js → src-CG9mCkP6.js} +6 -6
- package/server/{src-BqTcrfO_.js → src-CMTQGyCK.js} +3 -3
- package/server/{src-Dpq1yFIl.js → src-U7_kTPEE.js} +338 -4
- package/server/{stack-health-I713ELld.js → stack-health-Df0YEZKa.js} +1 -1
- package/server/{stack-health-DV_f-lK0.js → stack-health-puygdaMd.js} +2 -2
- package/server/{stale-task-claims-CQSKZVq0.js → stale-task-claims-BbFwCTb0.js} +4 -4
- package/server/{staleness-BbsGxmF2.js → staleness-Bpy41ngS.js} +15 -3
- package/server/{staleness-zGp4P1hd.js → staleness-Cbl_w4Bw.js} +1 -1
- package/server/{state-home-DixkE-up.js → state-home-CIGjwNfJ.js} +119 -54
- package/server/state-migrate-Dkzaxvny.js +487 -0
- package/server/{stuck-remediation-BWkK_O7A.js → stuck-remediation-CzEov_fq.js} +27 -21
- package/server/{stuck-remediation-CTPRC2S5.js → stuck-remediation-sY_MHHgQ.js} +1 -1
- package/server/{substrate-bug-weights-service-DXd0ID83.js → substrate-bug-weights-service-BH66lhm7.js} +3 -3
- package/server/{summary-fork-CdLn8Chr.js → summary-fork-D8bXjCr7.js} +2 -2
- package/server/{summary-fork-f3DpgjXh.js → summary-fork-DHhJIsAL.js} +8 -8
- package/server/{supervisor-Ch8CDuoF.js → supervisor-BO-Zk_h-.js} +3 -3
- package/server/supervisor-BPy-o1A8.js +2 -0
- package/server/{swarm-readiness-C9P2iPap.js → swarm-readiness-CQ_fwUWF.js} +4 -4
- package/server/{system-prerequisites-DkoQBn1q.js → system-prerequisites-Bza0ffAh.js} +24 -44
- package/server/{teardown-workspace-D-5yMyit.js → teardown-workspace-CEgauF4U.js} +15 -15
- package/server/{test-agent-queue-BwpUpu-o.js → test-agent-queue-DXDt0Xa-.js} +7 -7
- package/server/{test-verdict-BRiSu7eW.js → test-verdict-CmUBK5cT.js} +1 -1
- package/server/{test-verdict-BQ1yx7d4.js → test-verdict-DFjjIHR5.js} +1 -1
- package/server/{tldr-daemon-DjxP5g6Y.js → tldr-daemon-BDtLOIlO.js} +2 -2
- package/server/{tldr-daemon-BJA7TkqS.js → tldr-daemon-DL566HbH.js} +1 -1
- package/server/tmux-DoThH6aj.js +3 -0
- package/server/{tmux-y1blSxks.js → tmux-ftABRAmc.js} +76 -44
- package/server/{token-LUrbM9sU.js → token-CsOhvw42.js} +2 -2
- package/server/{token-util-BZaDAQ8S.js → token-util-CTmczIfW.js} +1 -1
- package/server/token-util-DrHg8abn.js +3 -0
- package/server/{tracker-config-DSFZBdXP.js → tracker-config-B4itFzDo.js} +2 -2
- package/server/{tracker-utils-WtP_V-yn.js → tracker-utils-BePq_oj-.js} +1 -1
- package/server/{tracker-utils-DiceZN3a.js → tracker-utils-tnxxqROg.js} +2 -2
- package/server/{traefik-connect-BXqfOP4-.js → traefik-connect-m73vGebA.js} +1 -1
- package/server/{tunnel-DTng1rfQ.js → tunnel-B2vxjx_b.js} +3 -3
- package/server/{tunnel-WcJImbAC.js → tunnel-Cgj-IGIl.js} +1 -1
- package/server/{types-BjaZ1oqH.js → types-BBNjPcqU.js} +1 -1
- package/server/{types-DqeBMmJN.js → types-hraoaQIp.js} +1 -1
- package/server/{uat-train-BpLnp7Cx.js → uat-train-CuEn0t9M.js} +28 -28
- package/server/{uat-train-Wismge7h.js → uat-train-cKfM-_WW.js} +1 -1
- package/server/{validation-BA4e5EGm.js → validation-B5JxoPUS.js} +259 -9
- package/server/{validation-CUWamZ4X.js → validation-CIi6pnI2.js} +1 -1
- package/server/{verification-artifact-Dr_0g9nb.js → verification-artifact-BcnIbigL.js} +1 -1
- package/server/{verification-artifact-CrbI4tJE.js → verification-artifact-C-lIHfUa.js} +1 -1
- package/server/{verification-runner-gAzh3cVD.js → verification-runner-Br0S_Ous.js} +103 -37
- package/server/{verification-runner-Dcksl_P-.js → verification-runner-CDj4lD4t.js} +1 -1
- package/server/{vtt-parser-3VZKsmSm.js → vtt-parser-DKpNNW5i.js} +1 -1
- package/server/{work-agent-prompt-ULdcANl5.js → work-agent-prompt-Yb2bd3Fq.js} +16 -15
- package/server/{workflows-B8ROFlfw.js → workflows-C9WmILql.js} +39 -77
- package/server/workflows-D90rMOya.js +2 -0
- package/server/{workspace-DhTDA8nB.js → workspace-BVl4rihN.js} +3 -3
- package/server/{workspace-DSjUJaJN.js → workspace-DuUdndHe.js} +1 -1
- package/server/{workspace-config-BAAsAv-o.js → workspace-config-cEGcO6UT.js} +1 -1
- package/server/{workspace-manager-CcujONCR.js → workspace-manager-ZTdJAy9M.js} +1 -1
- package/server/{workspace-manager-DsN52IMG.js → workspace-manager-hLUv3ADC.js} +23 -16
- package/server/{workspace-metadata-DIL5_U4c.js → workspace-metadata-CskwzzhL.js} +2 -2
- package/server/{workspace-metadata-CftOpNLs.js → workspace-metadata-DNpMixRq.js} +1 -1
- package/server/{workspaces-Dmlh1YXm.js → workspaces-hWvy9eKs.js} +276 -110
- package/sync-sources/agents/pan-inspect-agent.md +1 -1
- package/sync-sources/agents/pan-merge-agent.md +1 -1
- package/sync-sources/agents/pan-planning-agent.md +4 -4
- package/sync-sources/agents/pan-work-agent.md +1 -1
- package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
- package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
- package/sync-sources/hooks/record-cost-event.js +363 -71
- package/sync-sources/hooks/session-start-hook +7 -0
- package/sync-sources/hooks/work-agent-stop-hook +1 -1
- package/sync-sources/rules/per-bead-durability.md +1 -1
- package/sync-sources/rules/prd-authoring.md +1 -1
- package/sync-sources/skills/feature-work/SKILL.md +1 -1
- package/sync-sources/skills/pan/SKILL.md +2 -2
- package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
- package/sync-sources/skills/pan-approve/SKILL.md +1 -1
- package/sync-sources/skills/pan-close/SKILL.md +1 -1
- package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
- package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
- package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
- package/sync-sources/skills/pan-plan/SKILL.md +6 -6
- package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
- package/sync-sources/skills/pan-recap/SKILL.md +2 -2
- package/sync-sources/skills/pan-review/SKILL.md +1 -1
- package/sync-sources/skills/pan-start/SKILL.md +26 -3
- package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
- package/sync-sources/skills/pan-sync/SKILL.md +1 -1
- package/sync-sources/skills/pan-task/SKILL.md +2 -2
- package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
- package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
- package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
- package/sync-sources/skills/plan/SKILL.md +11 -11
- package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
- package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
- package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
- package/server/agent-state-BV_6RHnO.js +0 -3
- package/server/agents-Czz6R57Z.js +0 -3
- package/server/cli-ChErG518.js +0 -3
- package/server/codex-BBeZ8c3s.js +0 -3
- package/server/deacon-swarm-uudlSCLM.js +0 -2
- package/server/dist-BEDL2alY.js +0 -3
- package/server/forge-DbhJyH6u.js +0 -2
- package/server/git-utils-Bkxzr1Xf.js +0 -129
- package/server/hume-BrA1tUuk.js +0 -3
- package/server/inspect-agent-CyXNo9fM.js +0 -2
- package/server/lifecycle-io-CUpsxG0p.js +0 -3
- package/server/merge-ops-BpTtuO8x.js +0 -2
- package/server/projects-IRHJIPYC.js +0 -3
- package/server/providers-BqCdTryq.js +0 -3
- package/server/public/assets/index-C6NLz_1S.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-BNwFoQsf.js +0 -1
- package/server/rally-DGimSRBQ.js +0 -3
- package/server/reap-terminal-sessions-C1mfzoZo.js +0 -3
- package/server/record-update-RviRDSNs.js +0 -168
- package/server/record-us0YECMO.js +0 -3
- package/server/resume-OyN3dEXE.js +0 -3
- package/server/review-status-DXeqFpk5.js +0 -3
- package/server/settings-BaPXXJsT.js +0 -2
- package/server/specialists-C6WkeKFK.js +0 -3
- package/server/specs-BsNcum0h.js +0 -3
- package/server/state-migrate-_zJJ6XKE.js +0 -362
- package/server/supervisor-Qy1QecAs.js +0 -2
- package/server/tmux-HQLgwo_C.js +0 -3
- package/server/token-util-Cg-QnowA.js +0 -3
- package/server/workflows-C5c-RPsY.js +0 -2
|
@@ -1,46 +1,48 @@
|
|
|
1
1
|
import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import {
|
|
2
|
+
import { B as getProviderEnvSync, Br as getOverdeckHome, C as TIERED_EXECUTION_DIFFICULTIES, D as resolveTieredExecutionEnabled, Ft as resolveProjectForIssue, G as setupCredentialFileAuthSync, Gr as sessionFilePath, H as init_providers, It as writeAgentHarnessModelSync, K as ensureOpenAICompatibleProxyRunning, L as clearCredentialFileAuthSync, Mt as readIssueRecordForWorkspaceSync, Nr as encodeClaudeProjectDir, Nt as readIssueRecordSync, O as resolveTieredExecutionEnabledForIssue, Ot as init_record, Qn as resolveBareNumericIdSync, R as getBuiltInDefaultHarness, S as DEFAULT_TIERED_EXECUTION_CONFIG, T as init_tier_table, Tn as init_projects, Ur as packageRoot, V as getProviderForModelSync, Vr as init_paths, Wr as resolveOhmypiExtensionPath, Yn as init_issue_id, dt as fnv1a32, er as require_dist, et as init_roles, f as loadConfigSync, fn as findProjectByPathSync, ft as init_percent, gn as getIssuePrefix, hr as AGENTS_DIR, in as shouldCommitLegacyWorkspaceArtifacts, ir as FsError, it as getModelCapabilitySync, l as isClaudeCodeChannelsMcpEnabled, lt as resolveModelIdSync, mr as init_errors, nn as init_state_read_home, nr as ClaudeCredentialParseError, ot as hasModelCapabilitySync, q as init_openai_compatible_proxy, st as init_model_capabilities, t as init_config_yaml, tt as resolveModel, u as isTldrEnabledSync, ut as fmix32, vn as getProjectSwarmHotspots, yn as getProjectSync, zn as resolveProjectFromIssueSync } from "./config-yaml-DvyMuOle.js";
|
|
3
3
|
import { a as init_activity_logger, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-DDlOIAML.js";
|
|
4
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
5
|
-
import {
|
|
6
|
-
import { a as init_event_store, i as initEventStore } from "./event-store-
|
|
7
|
-
import { a as
|
|
8
|
-
import {
|
|
9
|
-
import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-
|
|
10
|
-
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-
|
|
11
|
-
import { o as getPricingSync, s as init_cost } from "./cost-
|
|
12
|
-
import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-
|
|
13
|
-
import { a as persistCurrentSessionId, d as isAgentStateServiceInProcess, i as logLauncherSessionPinned, l as getRuntimeSnapshot, n as createFreshSessionIdentity, o as init_persistent_logger, r as init_session_history, s as logAgentLifecycleSync, u as init_agent_runtime_mirror } from "./session-history-
|
|
14
|
-
import { t as init_behavior } from "./behavior-
|
|
15
|
-
import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import { a as
|
|
22
|
-
import { a as
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import { a as
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
4
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CzaSOgul.js";
|
|
5
|
+
import { $ as init_child_env, A as listPaneValues, D as killSession, E as isPaneDead, H as sessionExists, O as killSessionSync, P as listSessionsSync, R as sendEscapeKeyAsync, U as sessionExistsSync, V as sendRawKeystroke, W as setOption, X as BLANKED_PROVIDER_ENV, a as capturePaneSync, c as createSessionSync, i as capturePane, m as exactPaneTarget, s as createSession, w as init_tmux, z as sendKeys } from "./tmux-ftABRAmc.js";
|
|
6
|
+
import { a as init_event_store, i as initEventStore } from "./event-store-tdiY5eDZ.js";
|
|
7
|
+
import { a as OHMYPI_BEHAVIOR, o as getHarnessBehavior } from "./src-U7_kTPEE.js";
|
|
8
|
+
import { D as listOverdeckAgentStatesSync, E as init_agent_state_sync, O as saveOverdeckAgentStateSync, T as getOverdeckAgentStateSync, h as resetPipelineVerdictsForWorkStartSync, l as init_review_status } from "./review-status-A7quS5KJ.js";
|
|
9
|
+
import { i as countAgentsByStatus, o as init_agents$1 } from "./agents-B4Bjbkfv.js";
|
|
10
|
+
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-DWdW7vUm.js";
|
|
11
|
+
import { o as getPricingSync, s as init_cost } from "./cost-Ca0YTWDw.js";
|
|
12
|
+
import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-C0VdGme1.js";
|
|
13
|
+
import { a as persistCurrentSessionId, d as isAgentStateServiceInProcess, i as logLauncherSessionPinned, l as getRuntimeSnapshot, n as createFreshSessionIdentity, o as init_persistent_logger, r as init_session_history, s as logAgentLifecycleSync, u as init_agent_runtime_mirror } from "./session-history-CVZDpS3c.js";
|
|
14
|
+
import { t as init_behavior } from "./behavior-B_-4EKF3.js";
|
|
15
|
+
import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-Bb4XeV2x.js";
|
|
16
|
+
import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal } from "./review-status-source-CxuEjLGg.js";
|
|
17
|
+
import { m as readWorkspacePlanSync, o as init_io } from "./io-B3_AHDfr.js";
|
|
18
|
+
import { c as bridgeGeminiAuthToCliproxy, d as getCliproxyAuthDir, g as getCliproxyLogPath, l as decodeJwtPayload$1, p as getCliproxyClientEnv, s as bridgeCodexAuthToCliproxySync, v as init_cliproxy } from "./cliproxy-Bgb2XCqi.js";
|
|
19
|
+
import { L as normalizeHarness, R as reactivateConversationForSpawn, S as getConversationByName, k as init_conversations, y as createConversation } from "./conversations-DbOs1e9Q.js";
|
|
20
|
+
import { n as recordFeatureRegistryLifecycle, t as init_feature_registry_population } from "./feature-registry-population-B0pmAz0a.js";
|
|
21
|
+
import { a as readCavemanVariant, n as init_workspace } from "./workspace-BVl4rihN.js";
|
|
22
|
+
import { a as requireModelOverrideSync, i as normalizeModelOverrideSync, n as init_launcher_generator, o as shellQuoteModelIdSync, r as init_model_validation, t as generateLauncherScriptSync } from "./launcher-generator-CHVm7bGT.js";
|
|
23
|
+
import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-H_5wHQZQ.js";
|
|
24
|
+
import { h as workspaceContextFile, o as init_layers } from "./layers-DzxSTGNA.js";
|
|
25
|
+
import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-TmSi-yTv.js";
|
|
26
|
+
import { n as init_harness_binary, r as prepareHarnessLaunch } from "./harness-binary-CVio2m-u.js";
|
|
27
|
+
import { f as init_config, m as loadConfigSync$1 } from "./config-CCvjQf27.js";
|
|
28
|
+
import { a as getFlywheelActiveRunIdSync, s as init_control_settings } from "./control-settings-aP1ANIlI.js";
|
|
29
|
+
import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-CynerjXO.js";
|
|
30
|
+
import { a as init_stack_health, i as getWorkspaceStackHealth } from "./stack-health-puygdaMd.js";
|
|
31
|
+
import { i as createActiveSlice, l as init_dag, o as getDispatchableItems, s as groupItemsByWave } from "./dag-CdOjJVDT.js";
|
|
32
|
+
import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-DUXw8A0-.js";
|
|
33
|
+
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-qHJBhy3Z.js";
|
|
34
|
+
import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-DjLOdbgT.js";
|
|
35
|
+
import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-N3BTkmX_.js";
|
|
36
|
+
import { c as isStateMigrated, o as init_state_home } from "./state-home-CIGjwNfJ.js";
|
|
37
|
+
import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-but-_qGY.js";
|
|
38
|
+
import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-D8iNBcux.js";
|
|
39
|
+
import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-CQ_fwUWF.js";
|
|
38
40
|
import { dirname, join, relative } from "node:path";
|
|
39
41
|
import { Data, Duration, Effect, FileSystem } from "effect";
|
|
40
42
|
import { appendFileSync, existsSync, mkdirSync, readFileSync, statSync, statfsSync, unlinkSync, writeFileSync } from "fs";
|
|
41
43
|
import { basename as basename$1, dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
|
|
42
44
|
import { homedir } from "os";
|
|
43
|
-
import "node:os";
|
|
45
|
+
import { cpus as cpus$1, loadavg as loadavg$1, platform as platform$1, totalmem as totalmem$1 } from "node:os";
|
|
44
46
|
import { chmodSync as chmodSync$1, closeSync as closeSync$1, constants, cpSync, createReadStream as createReadStream$1, existsSync as existsSync$1, mkdirSync as mkdirSync$1, openSync as openSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, renameSync as renameSync$1, rmSync as rmSync$1, statSync as statSync$1, unlinkSync as unlinkSync$1, writeFileSync as writeFileSync$1, writeSync } from "node:fs";
|
|
45
47
|
import { chmod, mkdir, readFile, stat as stat$1, writeFile } from "node:fs/promises";
|
|
46
48
|
import { randomUUID } from "crypto";
|
|
@@ -1297,7 +1299,7 @@ function getAgentStateFilePath(agentId) {
|
|
|
1297
1299
|
* PAN-1985: wipe agent state directories for an issue, optionally scoped to
|
|
1298
1300
|
* a role prefix. Used by the restart-fresh and review-restart paths to clean
|
|
1299
1301
|
* state before respawning — the new agent then reads `.pan/continue.json`,
|
|
1300
|
-
* the
|
|
1302
|
+
* the xBRIEF, the beads, and the branch to pick up where the prior run left
|
|
1301
1303
|
* off. Refuses to run against an empty or unsafe id.
|
|
1302
1304
|
*
|
|
1303
1305
|
* - `rolePrefix` omitted: wipes only the work agent dir (`agent-<id>`).
|
|
@@ -1710,7 +1712,7 @@ function markAgentRunning(state, options) {
|
|
|
1710
1712
|
assertAgentCanTransitionToRunning(state);
|
|
1711
1713
|
const oldStatus = state.status;
|
|
1712
1714
|
state.status = "running";
|
|
1713
|
-
state.lastActivity = (/* @__PURE__ */ new Date()).toISOString();
|
|
1715
|
+
if (state.harness !== "codex") state.lastActivity = (/* @__PURE__ */ new Date()).toISOString();
|
|
1714
1716
|
if (options?.preserveFailureTracking !== true) clearFailureTrackingFields(state);
|
|
1715
1717
|
delete state.stoppedAt;
|
|
1716
1718
|
delete state.stoppedByUser;
|
|
@@ -2413,18 +2415,28 @@ async function getProviderEnvForModel(model) {
|
|
|
2413
2415
|
}
|
|
2414
2416
|
throw new Error(`No API key configured for ${provider.displayName}. Configure it in Settings before using model "${model}".`);
|
|
2415
2417
|
}
|
|
2416
|
-
function
|
|
2417
|
-
if (getProviderForModelSync(model).name === "anthropic") return
|
|
2418
|
+
function getClaudeCodeContextPolicyForModel(model) {
|
|
2419
|
+
if (getProviderForModelSync(model).name === "anthropic") return {};
|
|
2418
2420
|
const resolvedModel = resolveModelIdSync(model);
|
|
2419
|
-
if (
|
|
2420
|
-
|
|
2421
|
+
if (GPT_56_MODELS.has(resolvedModel)) return {
|
|
2422
|
+
autoCompactWindow: GPT_56_CODEX_CLIENT_CONTEXT_WINDOW,
|
|
2423
|
+
maxContextTokens: GPT_56_CODEX_CLIENT_CONTEXT_WINDOW
|
|
2424
|
+
};
|
|
2425
|
+
if (!hasModelCapabilitySync(resolvedModel)) return {};
|
|
2426
|
+
const contextWindow = getModelCapabilitySync(resolvedModel).contextWindow;
|
|
2427
|
+
if (KIMI_K3_MODELS.has(resolvedModel)) return {
|
|
2428
|
+
autoCompactWindow: contextWindow,
|
|
2429
|
+
maxContextTokens: contextWindow
|
|
2430
|
+
};
|
|
2431
|
+
return { autoCompactWindow: contextWindow };
|
|
2421
2432
|
}
|
|
2422
2433
|
async function getProviderExportsForModel(model) {
|
|
2423
2434
|
const envVars = await getProviderEnvForModel(model);
|
|
2424
2435
|
const unsetLines = PROVIDER_ENV_KEYS.map((key) => `unset ${key}`);
|
|
2425
|
-
const
|
|
2436
|
+
const contextPolicy = getClaudeCodeContextPolicyForModel(model);
|
|
2426
2437
|
const exportLines = Object.entries(envVars).map(([k, v]) => `export ${k}="${v.replace(/"/g, "\\\"")}"`);
|
|
2427
|
-
if (
|
|
2438
|
+
if (contextPolicy.maxContextTokens !== void 0) exportLines.push(`export CLAUDE_CODE_MAX_CONTEXT_TOKENS="${contextPolicy.maxContextTokens}"`);
|
|
2439
|
+
if (contextPolicy.autoCompactWindow !== void 0) exportLines.push(`export CLAUDE_CODE_AUTO_COMPACT_WINDOW="${contextPolicy.autoCompactWindow}"`);
|
|
2428
2440
|
return [...unsetLines, ...exportLines].join("\n") + "\n";
|
|
2429
2441
|
}
|
|
2430
2442
|
/**
|
|
@@ -2446,11 +2458,12 @@ async function buildSpawnEnvForModel(model, baseEnv = process.env) {
|
|
|
2446
2458
|
sanitized[k] = v;
|
|
2447
2459
|
}
|
|
2448
2460
|
const providerEnv = await getProviderEnvForModel(model);
|
|
2449
|
-
const
|
|
2461
|
+
const contextPolicy = getClaudeCodeContextPolicyForModel(model);
|
|
2450
2462
|
return {
|
|
2451
2463
|
...sanitized,
|
|
2452
2464
|
...providerEnv,
|
|
2453
|
-
...
|
|
2465
|
+
...contextPolicy.maxContextTokens !== void 0 ? { CLAUDE_CODE_MAX_CONTEXT_TOKENS: String(contextPolicy.maxContextTokens) } : {},
|
|
2466
|
+
...contextPolicy.autoCompactWindow !== void 0 ? { CLAUDE_CODE_AUTO_COMPACT_WINDOW: String(contextPolicy.autoCompactWindow) } : {}
|
|
2454
2467
|
};
|
|
2455
2468
|
}
|
|
2456
2469
|
/**
|
|
@@ -2490,7 +2503,7 @@ function determineModel(options = {}) {
|
|
|
2490
2503
|
if ((options.role ?? "work") === "work" && !modelOverride && WORK_AGENT_BROKEN_MODELS.has(resolved)) throw new Error(`Resolved work model "${resolved}" is known-broken for work agents. Set roles.work.model to a working model in config.yaml, or pass an explicit --model override.`);
|
|
2491
2504
|
return resolved;
|
|
2492
2505
|
}
|
|
2493
|
-
var CLI_PROXY_MODEL_ALIASES, PROVIDER_ENV_KEYS, WORK_AGENT_BROKEN_MODELS;
|
|
2506
|
+
var CLI_PROXY_MODEL_ALIASES, PROVIDER_ENV_KEYS, GPT_56_CODEX_CLIENT_CONTEXT_WINDOW, GPT_56_MODELS, KIMI_K3_MODELS, WORK_AGENT_BROKEN_MODELS;
|
|
2494
2507
|
var init_provider_env = __esmMin((() => {
|
|
2495
2508
|
init_config_yaml();
|
|
2496
2509
|
init_workspace();
|
|
@@ -2515,6 +2528,7 @@ var init_provider_env = __esmMin((() => {
|
|
|
2515
2528
|
"ANTHROPIC_SMALL_FAST_MODEL",
|
|
2516
2529
|
"CLAUDE_CODE_SUBAGENT_MODEL",
|
|
2517
2530
|
"CLAUDE_CODE_AUTO_COMPACT_WINDOW",
|
|
2531
|
+
"CLAUDE_CODE_MAX_CONTEXT_TOKENS",
|
|
2518
2532
|
"OPENAI_API_KEY",
|
|
2519
2533
|
"GEMINI_API_KEY",
|
|
2520
2534
|
"API_TIMEOUT_MS",
|
|
@@ -2527,6 +2541,13 @@ var init_provider_env = __esmMin((() => {
|
|
|
2527
2541
|
"NOUS_API_KEY",
|
|
2528
2542
|
"DASHSCOPE_API_KEY"
|
|
2529
2543
|
];
|
|
2544
|
+
GPT_56_CODEX_CLIENT_CONTEXT_WINDOW = 372e3;
|
|
2545
|
+
GPT_56_MODELS = new Set([
|
|
2546
|
+
"gpt-5.6-sol",
|
|
2547
|
+
"gpt-5.6-terra",
|
|
2548
|
+
"gpt-5.6-luna"
|
|
2549
|
+
]);
|
|
2550
|
+
KIMI_K3_MODELS = new Set(["k3", "k3[1m]"]);
|
|
2530
2551
|
WORK_AGENT_BROKEN_MODELS = /* @__PURE__ */ new Set([]);
|
|
2531
2552
|
}));
|
|
2532
2553
|
//#endregion
|
|
@@ -2805,12 +2826,12 @@ async function claudeSystemPromptFiles(workspace, harness) {
|
|
|
2805
2826
|
files.push(await ensureSessionContextBriefingFile());
|
|
2806
2827
|
const behavior = getHarnessBehavior(harness);
|
|
2807
2828
|
if (behavior.contextLayerKind === "pi") {
|
|
2808
|
-
const { piGlobalContextFile } = await import("./context-layers-
|
|
2829
|
+
const { piGlobalContextFile } = await import("./context-layers-B3Nt58jl.js");
|
|
2809
2830
|
const globalFile = piGlobalContextFile();
|
|
2810
2831
|
if (existsSync(globalFile)) files.unshift(globalFile);
|
|
2811
2832
|
}
|
|
2812
2833
|
if (behavior.contextLayerKind === "codex") {
|
|
2813
|
-
const { codexGlobalContextFile } = await import("./context-layers-
|
|
2834
|
+
const { codexGlobalContextFile } = await import("./context-layers-B3Nt58jl.js");
|
|
2814
2835
|
const globalFile = codexGlobalContextFile();
|
|
2815
2836
|
if (existsSync(globalFile)) files.unshift(globalFile);
|
|
2816
2837
|
}
|
|
@@ -3060,7 +3081,7 @@ async function injectPiPromptTimeMemory(agentId, prompt) {
|
|
|
3060
3081
|
agentRole: agentState.role ?? "work",
|
|
3061
3082
|
agentHarness: agentState.harness ?? "claude-code"
|
|
3062
3083
|
};
|
|
3063
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
3084
|
+
const { injectPromptTimeMemory } = await import("./injection-oNZeoDhL.js");
|
|
3064
3085
|
const result = await injectPromptTimeMemory({
|
|
3065
3086
|
prompt,
|
|
3066
3087
|
identity,
|
|
@@ -3094,7 +3115,7 @@ async function injectPiConversationMemory(opts, prompt) {
|
|
|
3094
3115
|
agentRole: "work",
|
|
3095
3116
|
agentHarness: "ohmypi"
|
|
3096
3117
|
};
|
|
3097
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
3118
|
+
const { injectPromptTimeMemory } = await import("./injection-oNZeoDhL.js");
|
|
3098
3119
|
const result = await injectPromptTimeMemory({
|
|
3099
3120
|
prompt,
|
|
3100
3121
|
identity,
|
|
@@ -3515,7 +3536,7 @@ function resolveSlotTierSpawnParams(baseWorkspace, slotItemId, explicitModel, sp
|
|
|
3515
3536
|
/**
|
|
3516
3537
|
* Tiered-execution model resolution for the single work-agent path.
|
|
3517
3538
|
* Auto-start and non-swarm issues still run one foreground work agent, but
|
|
3518
|
-
* the first dispatchable
|
|
3539
|
+
* the first dispatchable xBRIEF item is the same scheduling unit the agent is
|
|
3519
3540
|
* about to execute. If tiered execution is enabled for the issue, route that
|
|
3520
3541
|
* agent through the item's resolved tier; otherwise leave role-default model
|
|
3521
3542
|
* resolution untouched.
|
|
@@ -3618,7 +3639,7 @@ async function transitionIssueToInReview(issueId, workspacePath) {
|
|
|
3618
3639
|
async function buildAgentLaunchConfig(opts) {
|
|
3619
3640
|
const model = requireModelOverrideSync(opts.model);
|
|
3620
3641
|
try {
|
|
3621
|
-
const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-
|
|
3642
|
+
const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-BTENVmYf.js");
|
|
3622
3643
|
await Effect.runPromise(injectOverdeckInfraDeny(opts.workspace));
|
|
3623
3644
|
} catch (err) {
|
|
3624
3645
|
console.warn(`[agents] injectOverdeckInfraDeny failed for ${opts.agentId} (non-fatal): ${err instanceof Error ? err.message : err}`);
|
|
@@ -3699,7 +3720,7 @@ async function retrieveSpawnTimeMemoryContext(input) {
|
|
|
3699
3720
|
agentRole: input.role,
|
|
3700
3721
|
agentHarness: input.harness
|
|
3701
3722
|
};
|
|
3702
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
3723
|
+
const { injectPromptTimeMemory } = await import("./injection-oNZeoDhL.js");
|
|
3703
3724
|
return (await injectPromptTimeMemory({
|
|
3704
3725
|
prompt: input.prompt,
|
|
3705
3726
|
identity,
|
|
@@ -3790,7 +3811,7 @@ async function assertWorkspaceStackHealthyForSpawn(issueId, role, allowHost = fa
|
|
|
3790
3811
|
record.attempts += 1;
|
|
3791
3812
|
spawnStackRebuildState.set(normalizedIssue, record);
|
|
3792
3813
|
console.log(`[agents] Workspace stack for ${normalizedIssue} unhealthy (${details}) — rebuilding before spawn (attempt ${record.attempts}/${SPAWN_STACK_REBUILD_MAX_ATTEMPTS})`);
|
|
3793
|
-
const { rebuildWorkspaceStack } = await import("./rebuild-stack-
|
|
3814
|
+
const { rebuildWorkspaceStack } = await import("./rebuild-stack-kA7XngID.js");
|
|
3794
3815
|
const result = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[agents] ${normalizedIssue} stack rebuild: ${m}`) })).catch((err) => ({
|
|
3795
3816
|
success: false,
|
|
3796
3817
|
error: err instanceof Error ? err.message : String(err)
|
|
@@ -5033,18 +5054,18 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5033
5054
|
let reapWarmIdle = false;
|
|
5034
5055
|
const advancing = role === "review" || role === "test" || role === "ship";
|
|
5035
5056
|
try {
|
|
5036
|
-
const { isPaneDead } = await import("./tmux-
|
|
5057
|
+
const { isPaneDead } = await import("./tmux-DoThH6aj.js");
|
|
5037
5058
|
if (await Effect.runPromise(isPaneDead(agentId))) reapWarmIdle = true;
|
|
5038
5059
|
else if (advancing) {
|
|
5039
|
-
const { getReviewStatusSync } = await import("./review-status-
|
|
5040
|
-
const { isRoleTerminal } = await import("./reap-terminal-sessions-
|
|
5060
|
+
const { getReviewStatusSync } = await import("./review-status-C6n6-9f_.js");
|
|
5061
|
+
const { isRoleTerminal } = await import("./reap-terminal-sessions-MWnqdLCJ.js");
|
|
5041
5062
|
const status = getReviewStatusSync(issueId);
|
|
5042
5063
|
reapWarmIdle = !!status && isRoleTerminal(role, status);
|
|
5043
5064
|
}
|
|
5044
5065
|
} catch {}
|
|
5045
5066
|
if (!reapWarmIdle) throw new Error(`Role run ${agentId} already running. Use 'pan tell' to message it.`);
|
|
5046
5067
|
console.log(`[spawn] ${agentId} is warm-idle from the previous cycle — reaping it for the new ${role} dispatch (PAN-2579)`);
|
|
5047
|
-
const { killSession } = await import("./tmux-
|
|
5068
|
+
const { killSession } = await import("./tmux-DoThH6aj.js");
|
|
5048
5069
|
await Effect.runPromise(killSession(agentId)).catch(() => {});
|
|
5049
5070
|
}
|
|
5050
5071
|
await assertWorkspaceStackHealthyForSpawn(issueId, role, options.allowHost, workspace);
|
|
@@ -5054,10 +5075,11 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5054
5075
|
role,
|
|
5055
5076
|
model: selectedModel
|
|
5056
5077
|
});
|
|
5078
|
+
const harnessLaunch = await prepareHarnessLaunch(resolvedHarness);
|
|
5057
5079
|
assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
|
|
5058
5080
|
await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
|
|
5059
5081
|
if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
|
|
5060
|
-
const { isCliproxyRunning } = await import("./cliproxy-
|
|
5082
|
+
const { isCliproxyRunning } = await import("./cliproxy-DW0V86F8.js");
|
|
5061
5083
|
if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription role runs route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT role run.");
|
|
5062
5084
|
}
|
|
5063
5085
|
const state = {
|
|
@@ -5070,7 +5092,7 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5070
5092
|
modelSpawnKey,
|
|
5071
5093
|
status: "starting",
|
|
5072
5094
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5073
|
-
costSoFar: 0,
|
|
5095
|
+
...resolvedHarness === "codex" ? {} : { costSoFar: 0 },
|
|
5074
5096
|
hostOverride: options.allowHost || void 0,
|
|
5075
5097
|
slotIndex: options.slotIndex,
|
|
5076
5098
|
slotItemId: options.slotItemId
|
|
@@ -5135,7 +5157,11 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5135
5157
|
}
|
|
5136
5158
|
if (options.reviewSynthesisAgentId) state.reviewSynthesisAgentId = options.reviewSynthesisAgentId;
|
|
5137
5159
|
if (options.reviewOutputPath) state.reviewOutputPath = options.reviewOutputPath;
|
|
5138
|
-
const extraEnvExports = [
|
|
5160
|
+
const extraEnvExports = [
|
|
5161
|
+
harnessLaunch.pathExport,
|
|
5162
|
+
...flywheelEnvExports(flywheelEnv),
|
|
5163
|
+
...options.extraEnvExports ?? []
|
|
5164
|
+
];
|
|
5139
5165
|
if (role === "knowledge" && !extraEnvExports.includes("export PATH=\"$HOME/.overdeck/bin:$PATH\"")) extraEnvExports.push("export PATH=\"$HOME/.overdeck/bin:$PATH\"");
|
|
5140
5166
|
const launcherContent = generateLauncherScriptSync({
|
|
5141
5167
|
role,
|
|
@@ -5165,7 +5191,7 @@ async function spawnRun(issueId, role, options = {}) {
|
|
|
5165
5191
|
const claudeCmd = `bash ${launcherScript}`;
|
|
5166
5192
|
console.log(`[claude-invoke] purpose=role-run | role=${role} | model=${state.model} | source=agents.ts:spawnRun | session=${agentId} | command="${claudeCmd}"`);
|
|
5167
5193
|
try {
|
|
5168
|
-
const { preTrustDirectory } = await import("./workspace-manager-
|
|
5194
|
+
const { preTrustDirectory } = await import("./workspace-manager-ZTdJAy9M.js");
|
|
5169
5195
|
preTrustDirectory(workspace);
|
|
5170
5196
|
} catch {}
|
|
5171
5197
|
clearReadySignal(agentId);
|
|
@@ -5235,7 +5261,7 @@ async function spawnAgent(options) {
|
|
|
5235
5261
|
if (await Effect.runPromise(sessionExists(agentId))) throw new Error(`Agent ${agentId} already running. Use 'pan tell' to message it.`);
|
|
5236
5262
|
await assertWorkspaceStackHealthyForSpawn(options.issueId, role, options.allowHost, options.workspace);
|
|
5237
5263
|
initHookSync(agentId);
|
|
5238
|
-
if (role !== "strike" && role !== "knowledge" && options.slotItemId === void 0 && !readWorkspacePlanSync(options.workspace)) throw new Error(`The required
|
|
5264
|
+
if (role !== "strike" && role !== "knowledge" && options.slotItemId === void 0 && !readWorkspacePlanSync(options.workspace)) throw new Error(`The required xBRIEF checklist for ${options.issueId} is missing or unreadable. Run planning before spawning a work agent.`);
|
|
5239
5265
|
const modelSpawnKey = `${role}:${options.issueId}`;
|
|
5240
5266
|
const singleTierParams = role === "work" && options.slotItemId === void 0 && options.slotIndex === void 0 ? resolveSingleWorkTierSpawnParams(options.workspace, options.model, modelSpawnKey) : {};
|
|
5241
5267
|
const selectedModel = determineModel({
|
|
@@ -5245,7 +5271,7 @@ async function spawnAgent(options) {
|
|
|
5245
5271
|
});
|
|
5246
5272
|
console.log(`[DEBUG] Selected model: ${selectedModel}`);
|
|
5247
5273
|
if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
|
|
5248
|
-
const { isCliproxyRunning } = await import("./cliproxy-
|
|
5274
|
+
const { isCliproxyRunning } = await import("./cliproxy-DW0V86F8.js");
|
|
5249
5275
|
if (!await Effect.runPromise(isCliproxyRunning())) throw new Error("CLIProxyAPI sidecar is not running. GPT subscription agents route through a local cliproxy process managed by `pan up`. Run `pan up` (or restart the dashboard) before spawning a GPT agent.");
|
|
5250
5276
|
}
|
|
5251
5277
|
const resolvedHarness = await resolveHarness({
|
|
@@ -5253,6 +5279,7 @@ async function spawnAgent(options) {
|
|
|
5253
5279
|
role,
|
|
5254
5280
|
model: selectedModel
|
|
5255
5281
|
});
|
|
5282
|
+
const harnessLaunch = await prepareHarnessLaunch(resolvedHarness);
|
|
5256
5283
|
assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
|
|
5257
5284
|
await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
|
|
5258
5285
|
const state = {
|
|
@@ -5265,7 +5292,7 @@ async function spawnAgent(options) {
|
|
|
5265
5292
|
modelSpawnKey,
|
|
5266
5293
|
status: "starting",
|
|
5267
5294
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5268
|
-
costSoFar: 0,
|
|
5295
|
+
...resolvedHarness === "codex" ? {} : { costSoFar: 0 },
|
|
5269
5296
|
hostOverride: options.allowHost || void 0,
|
|
5270
5297
|
sessionId: createFreshSessionIdentity(agentId, resolvedHarness)
|
|
5271
5298
|
};
|
|
@@ -5274,7 +5301,7 @@ async function spawnAgent(options) {
|
|
|
5274
5301
|
if (role === "work") {
|
|
5275
5302
|
try {
|
|
5276
5303
|
if (resetPipelineVerdictsForWorkStartSync(options.issueId)) {
|
|
5277
|
-
const { resetPostMergeState } = await import("./merge-agent-
|
|
5304
|
+
const { resetPostMergeState } = await import("./merge-agent-BQM3a8z5.js");
|
|
5278
5305
|
resetPostMergeState(options.issueId);
|
|
5279
5306
|
}
|
|
5280
5307
|
} catch (err) {
|
|
@@ -5285,7 +5312,7 @@ async function spawnAgent(options) {
|
|
|
5285
5312
|
});
|
|
5286
5313
|
}
|
|
5287
5314
|
if (role === "work") try {
|
|
5288
|
-
const { writeStoryFeatureContext } = await import("./work-agent-prompt-
|
|
5315
|
+
const { writeStoryFeatureContext } = await import("./work-agent-prompt-Yb2bd3Fq.js");
|
|
5289
5316
|
await writeStoryFeatureContext(options.workspace, options.issueId);
|
|
5290
5317
|
} catch (ctxErr) {
|
|
5291
5318
|
console.warn(`[agents] Could not write story feature context for ${options.issueId}: ${ctxErr.message}`);
|
|
@@ -5334,7 +5361,7 @@ async function spawnAgent(options) {
|
|
|
5334
5361
|
try {
|
|
5335
5362
|
const venvPath = join$1(options.workspace, ".venv");
|
|
5336
5363
|
if (isTldrEnabledSync() && existsSync(venvPath)) {
|
|
5337
|
-
const { getTldrDaemonServiceSync } = await import("./tldr-daemon-
|
|
5364
|
+
const { getTldrDaemonServiceSync } = await import("./tldr-daemon-DL566HbH.js");
|
|
5338
5365
|
const tldrService = getTldrDaemonServiceSync(options.workspace, venvPath);
|
|
5339
5366
|
if (!(await tldrService.getStatus()).running) {
|
|
5340
5367
|
await tldrService.start(true);
|
|
@@ -5365,7 +5392,7 @@ async function spawnAgent(options) {
|
|
|
5365
5392
|
supervisorScriptPath: supervisorLaunch.supervisorScriptPath,
|
|
5366
5393
|
harness: state.harness ?? "claude-code",
|
|
5367
5394
|
sessionId: state.sessionId,
|
|
5368
|
-
extraEnvExports: flywheelEnvExports(flywheelEnv),
|
|
5395
|
+
extraEnvExports: [harnessLaunch.pathExport, ...flywheelEnvExports(flywheelEnv)],
|
|
5369
5396
|
effort: options.effort
|
|
5370
5397
|
});
|
|
5371
5398
|
const launcherScript = join$1(getAgentDir(agentId), "launcher.sh");
|
|
@@ -5374,13 +5401,13 @@ async function spawnAgent(options) {
|
|
|
5374
5401
|
const claudeCmd = `bash ${launcherScript}`;
|
|
5375
5402
|
console.log(`[claude-invoke] purpose=work-agent | model=${state.model} | source=agents.ts:spawnAgent | session=${agentId} | command="${claudeCmd}"`);
|
|
5376
5403
|
try {
|
|
5377
|
-
const { preTrustDirectory } = await import("./workspace-manager-
|
|
5404
|
+
const { preTrustDirectory } = await import("./workspace-manager-ZTdJAy9M.js");
|
|
5378
5405
|
preTrustDirectory(options.workspace);
|
|
5379
5406
|
} catch {}
|
|
5380
5407
|
try {
|
|
5381
|
-
const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-
|
|
5408
|
+
const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-CPfoFAdV.js");
|
|
5382
5409
|
if (isGitHubAppConfigured()) {
|
|
5383
|
-
const { findProjectByPathSync } = await import("./projects-
|
|
5410
|
+
const { findProjectByPathSync } = await import("./projects-9SkRpES9.js");
|
|
5384
5411
|
const ghRepo = findProjectByPathSync(resolve$1(options.workspace, "..", ".."))?.github_repo;
|
|
5385
5412
|
if (ghRepo) {
|
|
5386
5413
|
const [owner, repo] = ghRepo.split("/");
|
|
@@ -5443,7 +5470,7 @@ async function spawnAgent(options) {
|
|
|
5443
5470
|
const codexHomeForAgent = join$1(homedir(), ".overdeck", "agents", agentId, "codex-home");
|
|
5444
5471
|
(async () => {
|
|
5445
5472
|
try {
|
|
5446
|
-
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-
|
|
5473
|
+
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-Dg7Is5yb.js");
|
|
5447
5474
|
const rollout = await waitForCodexRollout(codexHomeForAgent, 12e4);
|
|
5448
5475
|
if (rollout) {
|
|
5449
5476
|
const threadId = extractThreadIdFromRollout(rollout);
|
|
@@ -5480,7 +5507,7 @@ function assertRegisteredSlotCap(issueId, configuredCap) {
|
|
|
5480
5507
|
}
|
|
5481
5508
|
function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
|
|
5482
5509
|
const doc = readWorkspacePlanSync(baseWorkspace);
|
|
5483
|
-
if (!doc) throw new Error(`Registered slot spawn for ${issueId} requires a readable
|
|
5510
|
+
if (!doc) throw new Error(`Registered slot spawn for ${issueId} requires a readable xBRIEF plan in ${baseWorkspace}.`);
|
|
5484
5511
|
const slice = createActiveSlice(doc, {
|
|
5485
5512
|
issueId: issueId.toUpperCase(),
|
|
5486
5513
|
itemId: slot.slotItemId,
|
|
@@ -5495,7 +5522,7 @@ function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
|
|
|
5495
5522
|
`Branch: ${slot.branch}`,
|
|
5496
5523
|
`Workspace: ${slot.workspace}`,
|
|
5497
5524
|
"",
|
|
5498
|
-
"You are a registered slot work agent. Implement only the target
|
|
5525
|
+
"You are a registered slot work agent. Implement only the target xBRIEF item below, keep changes scoped to that item, and do not merge this slot branch yourself.",
|
|
5499
5526
|
"",
|
|
5500
5527
|
slice.prompt
|
|
5501
5528
|
];
|
|
@@ -5546,6 +5573,7 @@ var init_spawn = __esmMin((() => {
|
|
|
5546
5573
|
init_providers();
|
|
5547
5574
|
init_review_status();
|
|
5548
5575
|
init_harness_resolve();
|
|
5576
|
+
init_harness_binary();
|
|
5549
5577
|
init_codex_auth();
|
|
5550
5578
|
init_behavior();
|
|
5551
5579
|
init_bridge_token();
|
|
@@ -5750,6 +5778,7 @@ var init_ohmypi = __esmMin((() => {
|
|
|
5750
5778
|
init_behavior();
|
|
5751
5779
|
init_tmux();
|
|
5752
5780
|
init_ohmypi_parser();
|
|
5781
|
+
init_harness_binary();
|
|
5753
5782
|
init_launcher_generator();
|
|
5754
5783
|
init_ohmypi_fifo();
|
|
5755
5784
|
init_errors();
|
|
@@ -5893,6 +5922,7 @@ var init_ohmypi = __esmMin((() => {
|
|
|
5893
5922
|
async spawnAgent(config) {
|
|
5894
5923
|
const piExtensionPath = config.piExtensionPath;
|
|
5895
5924
|
if (!piExtensionPath) throw new Error("OhmypiRuntime.spawnAgent requires piExtensionPath in config");
|
|
5925
|
+
const harnessLaunch = await prepareHarnessLaunch("ohmypi");
|
|
5896
5926
|
const agentId = config.agentId;
|
|
5897
5927
|
const dir = agentDirFor(agentId);
|
|
5898
5928
|
const sessionDir = ohmypiSessionDirFor(agentId);
|
|
@@ -5921,6 +5951,7 @@ var init_ohmypi = __esmMin((() => {
|
|
|
5921
5951
|
resumeSessionId,
|
|
5922
5952
|
overdeckEnv: { agentId },
|
|
5923
5953
|
setTerminalEnv: true,
|
|
5954
|
+
extraEnvExports: [harnessLaunch.pathExport],
|
|
5924
5955
|
trapHup: true
|
|
5925
5956
|
});
|
|
5926
5957
|
const launcherPath = join(dir, "ohmypi-launcher.sh");
|
|
@@ -6225,7 +6256,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6225
6256
|
return;
|
|
6226
6257
|
}
|
|
6227
6258
|
console.log(`[agents] Auto-resuming suspended agent ${normalizedId} to deliver message`);
|
|
6228
|
-
const { resumeAgent } = await import("./agents-
|
|
6259
|
+
const { resumeAgent } = await import("./agents-FlIgQ3ql.js");
|
|
6229
6260
|
const result = await resumeAgent(normalizedId, message);
|
|
6230
6261
|
if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
|
|
6231
6262
|
if (result.messageDelivered === false) throw new Error(`Agent resumed but ready signal did not fire — message not delivered. Feedback is in the mail queue.`);
|
|
@@ -6242,7 +6273,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6242
6273
|
return;
|
|
6243
6274
|
}
|
|
6244
6275
|
console.log(`[agents] Auto-resuming stopped agent ${normalizedId} to deliver feedback (session exists: ${await Effect.runPromise(sessionExists(normalizedId))})`);
|
|
6245
|
-
const { resumeAgent } = await import("./agents-
|
|
6276
|
+
const { resumeAgent } = await import("./agents-FlIgQ3ql.js");
|
|
6246
6277
|
const resumeResult = await resumeAgent(normalizedId, message);
|
|
6247
6278
|
queueAgentMail(normalizedId, message);
|
|
6248
6279
|
if (resumeResult.success && resumeResult.messageDelivered !== false) {
|
|
@@ -6278,7 +6309,8 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6278
6309
|
const resumeRole = agentState.role ?? "work";
|
|
6279
6310
|
const resumeModel = agentState.model || "claude-sonnet-4-6";
|
|
6280
6311
|
const fallbackHarness = agentState.harness ?? "claude-code";
|
|
6281
|
-
const
|
|
6312
|
+
const harnessLaunch = await prepareHarnessLaunch(fallbackHarness);
|
|
6313
|
+
const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-FlIgQ3ql.js");
|
|
6282
6314
|
await assertWorkspaceStackHealthyForSpawn(agentState.issueId || normalizedId.replace(/^agent-/, "").toUpperCase(), resumeRole, agentState.hostOverride === true, agentState.workspace);
|
|
6283
6315
|
const fallbackPiFields = fallbackHarness === "ohmypi" ? await getOhmypiLauncherFields(normalizedId, resumeModel) : {};
|
|
6284
6316
|
const fallbackCodexFields = fallbackHarness === "codex" ? getCodexLauncherFields(normalizedId, resumeModel, agentState.workspace, resumeRole) : {};
|
|
@@ -6289,6 +6321,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6289
6321
|
changeDir: false,
|
|
6290
6322
|
setTerminalEnv: true,
|
|
6291
6323
|
providerExports,
|
|
6324
|
+
extraEnvExports: [harnessLaunch.pathExport],
|
|
6292
6325
|
baseCommand: await getRoleRuntimeBaseCommand(resumeModel, normalizedId, resumeRole, fallbackHarness),
|
|
6293
6326
|
appendSystemPromptFiles: await claudeSystemPromptFiles(agentState.workspace, fallbackHarness),
|
|
6294
6327
|
useSupervisor: fallbackSupervisorLaunch.useSupervisor,
|
|
@@ -6341,7 +6374,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6341
6374
|
} else console.warn(`[agents] Fallback-restarted ${normalizedId} but ready signal not detected — feedback in mail queue`);
|
|
6342
6375
|
return;
|
|
6343
6376
|
}
|
|
6344
|
-
const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-
|
|
6377
|
+
const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-CRCg1L4H.js");
|
|
6345
6378
|
const remoteState = loadRemoteAgentState(normalizedId);
|
|
6346
6379
|
if (remoteState && remoteState.vmName) {
|
|
6347
6380
|
console.log(`[agents] Sending message to remote agent ${normalizedId} on ${remoteState.vmName}`);
|
|
@@ -6373,7 +6406,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
6373
6406
|
const panePids = await Effect.runPromise(listPaneValues(normalizedId, "#{pane_pid}"));
|
|
6374
6407
|
if (panePids.length > 0 && !await hasAgentRuntimeInSubtree(panePids[0], expectedHarness)) {
|
|
6375
6408
|
console.warn(`[agents] ${normalizedId} tmux session is a zombie (no ${expectedHarness} runtime) — attempting resume`);
|
|
6376
|
-
const { resumeAgent } = await import("./agents-
|
|
6409
|
+
const { resumeAgent } = await import("./agents-FlIgQ3ql.js");
|
|
6377
6410
|
const resumeResult = await resumeAgent(normalizedId, message);
|
|
6378
6411
|
if (resumeResult.success) {
|
|
6379
6412
|
if (resumeResult.messageDelivered !== false) await appendTellInterventionForUserSource(normalizedId, caller);
|
|
@@ -6392,6 +6425,7 @@ var init_messaging = __esmMin((() => {
|
|
|
6392
6425
|
init_activity_logger();
|
|
6393
6426
|
init_child_env();
|
|
6394
6427
|
init_launcher_generator();
|
|
6428
|
+
init_harness_binary();
|
|
6395
6429
|
init_operator_interventions();
|
|
6396
6430
|
init_persistent_logger();
|
|
6397
6431
|
init_providers();
|
|
@@ -6485,7 +6519,7 @@ async function buildCompactRecoverySeed(agentId) {
|
|
|
6485
6519
|
if (agentState?.workspace && sessionId) {
|
|
6486
6520
|
const sessionFile = sessionFilePath(agentState.workspace, sessionId);
|
|
6487
6521
|
try {
|
|
6488
|
-
const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-
|
|
6522
|
+
const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-DiG5zWQq.js"), import("./smart-compaction-CHIxLr_d.js")]);
|
|
6489
6523
|
const settings = getConversationCompactionSettings();
|
|
6490
6524
|
summary = (await Effect.runPromise(generateSmartSummary({
|
|
6491
6525
|
jsonlPath: sessionFile,
|
|
@@ -6496,7 +6530,7 @@ async function buildCompactRecoverySeed(agentId) {
|
|
|
6496
6530
|
} catch (err) {
|
|
6497
6531
|
logAgentLifecycleSync(normalizedId, `compact-recovery smart summary failed (${err instanceof Error ? err.message : String(err)}); trying heuristic fallback`);
|
|
6498
6532
|
try {
|
|
6499
|
-
const { generateFallbackSummary } = await import("./summary-fork-
|
|
6533
|
+
const { generateFallbackSummary } = await import("./summary-fork-D8bXjCr7.js");
|
|
6500
6534
|
summary = await Effect.runPromise(generateFallbackSummary(sessionFile));
|
|
6501
6535
|
} catch (fallbackErr) {
|
|
6502
6536
|
logAgentLifecycleSync(normalizedId, `compact-recovery fallback summary failed (${fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr)}); seeding with reseed instructions only`);
|
|
@@ -6528,7 +6562,7 @@ async function resumeAgent(agentId, message, opts) {
|
|
|
6528
6562
|
if (gateDecision.decision === "proceed" && gateDecision.warning) logAgentLifecycleSync(normalizedId, `resumeAgent: ${gateDecision.warning}`);
|
|
6529
6563
|
if (bypassTroubledGate) logAgentLifecycleSync(normalizedId, `resumeAgent: bypassing troubled gate for explicit compact recovery (${gateBlock?.reason})`);
|
|
6530
6564
|
const hasWorkspace = !!agentState?.workspace && existsSync(agentState.workspace);
|
|
6531
|
-
const isPlaceholder = !!agentState &&
|
|
6565
|
+
const isPlaceholder = !!agentState && typeof agentState.model === "string" && agentState.model.startsWith("pending-");
|
|
6532
6566
|
const allowedRuntimeStates = ["suspended", "idle"];
|
|
6533
6567
|
const allowedAgentStatuses = ["stopped", "completed"];
|
|
6534
6568
|
const isRunningOrStarting = agentState?.status === "running" || agentState?.status === "starting";
|
|
@@ -6612,6 +6646,7 @@ async function resumeAgent(agentId, message, opts) {
|
|
|
6612
6646
|
role: agentState.role,
|
|
6613
6647
|
model
|
|
6614
6648
|
});
|
|
6649
|
+
const harnessLaunch = await prepareHarnessLaunch(effectiveHarness);
|
|
6615
6650
|
const legacyHarnessMigrated = !hasSessionOrigin && priorHarness !== void 0 && priorHarness !== effectiveHarness;
|
|
6616
6651
|
agentState.harness = effectiveHarness;
|
|
6617
6652
|
const supervisorLaunch = await prepareSupervisorForRelaunch(normalizedId, agentState, model, effectiveHarness);
|
|
@@ -6681,7 +6716,8 @@ async function resumeAgent(agentId, message, opts) {
|
|
|
6681
6716
|
sessionId: freshSessionId,
|
|
6682
6717
|
harness: effectiveHarness,
|
|
6683
6718
|
useSupervisor: supervisorLaunch.useSupervisor,
|
|
6684
|
-
supervisorScriptPath: supervisorLaunch.supervisorScriptPath
|
|
6719
|
+
supervisorScriptPath: supervisorLaunch.supervisorScriptPath,
|
|
6720
|
+
extraEnvExports: [harnessLaunch.pathExport]
|
|
6685
6721
|
});
|
|
6686
6722
|
const launcherScript = join$1(getAgentDir(normalizedId), "launcher.sh");
|
|
6687
6723
|
await writeLauncherScriptAtomic(launcherScript, launcherContent);
|
|
@@ -6802,6 +6838,7 @@ var init_resume = __esmMin((() => {
|
|
|
6802
6838
|
init_child_env();
|
|
6803
6839
|
init_context_overflow();
|
|
6804
6840
|
init_harness_resolve();
|
|
6841
|
+
init_harness_binary();
|
|
6805
6842
|
init_model_validation();
|
|
6806
6843
|
init_infra();
|
|
6807
6844
|
init_paths();
|
|
@@ -6884,14 +6921,15 @@ async function restartAgent(agentId, opts = {}) {
|
|
|
6884
6921
|
error: reason
|
|
6885
6922
|
};
|
|
6886
6923
|
}
|
|
6887
|
-
if (graceful && await Effect.runPromise(sessionExists(normalizedId))) await sendGracefulRestartWarning(normalizedId, agentState.harness, agentState.workspace);
|
|
6888
|
-
await Effect.runPromise(stopAgent(normalizedId));
|
|
6889
6924
|
const effectiveModel = newModel || requireModelOverrideSync(agentState.model || "claude-sonnet-4-6");
|
|
6890
6925
|
const effectiveHarness = await resolveHarness({
|
|
6891
6926
|
explicit: newHarness ?? agentState.harness,
|
|
6892
6927
|
role: agentState.role,
|
|
6893
6928
|
model: effectiveModel
|
|
6894
6929
|
});
|
|
6930
|
+
const harnessLaunch = await prepareHarnessLaunch(effectiveHarness);
|
|
6931
|
+
if (graceful && await Effect.runPromise(sessionExists(normalizedId))) await sendGracefulRestartWarning(normalizedId, agentState.harness, agentState.workspace);
|
|
6932
|
+
await Effect.runPromise(stopAgent(normalizedId));
|
|
6895
6933
|
if (newModel && newModel !== agentState.model) agentState.model = newModel;
|
|
6896
6934
|
agentState.harness = effectiveHarness;
|
|
6897
6935
|
agentState.status = "starting";
|
|
@@ -6908,7 +6946,8 @@ async function restartAgent(agentId, opts = {}) {
|
|
|
6908
6946
|
isPlanning: agentState.role === "plan",
|
|
6909
6947
|
harness: effectiveHarness,
|
|
6910
6948
|
useSupervisor: supervisorLaunch.useSupervisor,
|
|
6911
|
-
supervisorScriptPath: supervisorLaunch.supervisorScriptPath
|
|
6949
|
+
supervisorScriptPath: supervisorLaunch.supervisorScriptPath,
|
|
6950
|
+
extraEnvExports: [harnessLaunch.pathExport]
|
|
6912
6951
|
});
|
|
6913
6952
|
const launcherScript = join$1(getAgentDir(normalizedId), "launcher.sh");
|
|
6914
6953
|
await writeLauncherScriptAtomic(launcherScript, launcherContent);
|
|
@@ -7036,6 +7075,7 @@ async function recoverAgent(agentId, opts = {}) {
|
|
|
7036
7075
|
else clearCredentialFileAuthSync(state.workspace);
|
|
7037
7076
|
}
|
|
7038
7077
|
const recoveryHarness = normalizeHarness(state.harness ?? null) ?? "claude-code";
|
|
7078
|
+
const harnessLaunch = await prepareHarnessLaunch(recoveryHarness);
|
|
7039
7079
|
const recoverySupervisorLaunch = await prepareSupervisorForRelaunch(normalizedId, state, state.model, recoveryHarness);
|
|
7040
7080
|
saveAgentStateSync(state);
|
|
7041
7081
|
if (recoveryHarness === "ohmypi") {
|
|
@@ -7045,7 +7085,8 @@ async function recoverAgent(agentId, opts = {}) {
|
|
|
7045
7085
|
workspace: state.workspace,
|
|
7046
7086
|
role: recoveryRole,
|
|
7047
7087
|
isPlanning: recoveryRole === "plan",
|
|
7048
|
-
harness: "ohmypi"
|
|
7088
|
+
harness: "ohmypi",
|
|
7089
|
+
extraEnvExports: [harnessLaunch.pathExport]
|
|
7049
7090
|
});
|
|
7050
7091
|
const launcherScript = join$1(getAgentDir(normalizedId), "launcher.sh");
|
|
7051
7092
|
await writeLauncherScriptAtomic(launcherScript, launcherContent);
|
|
@@ -7075,6 +7116,7 @@ async function recoverAgent(agentId, opts = {}) {
|
|
|
7075
7116
|
changeDir: false,
|
|
7076
7117
|
setTerminalEnv: true,
|
|
7077
7118
|
providerExports: (await getProviderExportsForModel(state.model)).trimEnd(),
|
|
7119
|
+
extraEnvExports: [harnessLaunch.pathExport],
|
|
7078
7120
|
baseCommand: await getRoleRuntimeBaseCommand(state.model, normalizedId, recoveryRole, recoveryHarness),
|
|
7079
7121
|
appendSystemPromptFiles: await claudeSystemPromptFiles(state.workspace, recoveryHarness),
|
|
7080
7122
|
...recoveryHarness === "codex" ? {} : { promptInline: recoveryPrompt },
|
|
@@ -7118,7 +7160,7 @@ function generateRecoveryPrompt(state) {
|
|
|
7118
7160
|
`- Started: ${state.startedAt}`,
|
|
7119
7161
|
"",
|
|
7120
7162
|
"## Recovery Steps",
|
|
7121
|
-
"1. Check the
|
|
7163
|
+
"1. Check the xBRIEF task state: `pan task show " + state.issueId + " <item-id>`",
|
|
7122
7164
|
"2. Review recent git commits: `git log --oneline -10`",
|
|
7123
7165
|
"3. Check hook for pending work: `pan admin fpp check`",
|
|
7124
7166
|
"4. Resume from last known state",
|
|
@@ -7163,6 +7205,7 @@ var init_recovery = __esmMin((() => {
|
|
|
7163
7205
|
init_hooks();
|
|
7164
7206
|
init_launcher_generator();
|
|
7165
7207
|
init_harness_resolve();
|
|
7208
|
+
init_harness_binary();
|
|
7166
7209
|
init_model_validation();
|
|
7167
7210
|
init_persistent_logger();
|
|
7168
7211
|
init_providers();
|
|
@@ -7417,7 +7460,7 @@ var init_tier_escalation = __esmMin((() => {
|
|
|
7417
7460
|
* not to respond, so per-event output cost stays ~0 (NFR-1).
|
|
7418
7461
|
*/
|
|
7419
7462
|
async function runGitShow$1(workspace, sha, args = []) {
|
|
7420
|
-
const { stdout } = await execFileAsync$
|
|
7463
|
+
const { stdout } = await execFileAsync$5("git", [
|
|
7421
7464
|
"show",
|
|
7422
7465
|
sha,
|
|
7423
7466
|
...args
|
|
@@ -7531,12 +7574,12 @@ async function broadcastCommit(options) {
|
|
|
7531
7574
|
}
|
|
7532
7575
|
return deliveries;
|
|
7533
7576
|
}
|
|
7534
|
-
var execFileAsync$
|
|
7577
|
+
var execFileAsync$5, DEFAULT_FEED_CONFIG;
|
|
7535
7578
|
var init_tier_feed = __esmMin((() => {
|
|
7536
7579
|
init_delivery();
|
|
7537
7580
|
init_tier_metrics();
|
|
7538
7581
|
init_tier_table();
|
|
7539
|
-
execFileAsync$
|
|
7582
|
+
execFileAsync$5 = promisify(execFile);
|
|
7540
7583
|
DEFAULT_FEED_CONFIG = DEFAULT_TIERED_EXECUTION_CONFIG.feed;
|
|
7541
7584
|
}));
|
|
7542
7585
|
//#endregion
|
|
@@ -7656,7 +7699,7 @@ function childItems(item) {
|
|
|
7656
7699
|
return item.items ?? item.subItems ?? [];
|
|
7657
7700
|
}
|
|
7658
7701
|
/**
|
|
7659
|
-
* Pull the bead's acceptance-criterion titles from its
|
|
7702
|
+
* Pull the bead's acceptance-criterion titles from its xBRIEF child items
|
|
7660
7703
|
* (child metadata.kind === 'acceptance_criterion').
|
|
7661
7704
|
*/
|
|
7662
7705
|
function extractAcceptanceCriteria(item) {
|
|
@@ -7751,7 +7794,7 @@ Rules:
|
|
|
7751
7794
|
- Only review this commit against this bead's acceptance criteria — compile, lint, and tests are the verification gate's job, and code style is the review convoy's job.`;
|
|
7752
7795
|
}
|
|
7753
7796
|
async function getCommitDiff(workspacePath, sha) {
|
|
7754
|
-
const { stdout } = await execFileAsync$
|
|
7797
|
+
const { stdout } = await execFileAsync$4("git", ["show", sha], {
|
|
7755
7798
|
cwd: workspacePath,
|
|
7756
7799
|
encoding: "utf-8",
|
|
7757
7800
|
maxBuffer: 10 * 1024 * 1024
|
|
@@ -7760,7 +7803,7 @@ async function getCommitDiff(workspacePath, sha) {
|
|
|
7760
7803
|
}
|
|
7761
7804
|
/**
|
|
7762
7805
|
* Deliver one subscribed commit to the standing supervisor for review:
|
|
7763
|
-
* resolve the diff, pull the bead's acceptance criteria from its
|
|
7806
|
+
* resolve the diff, pull the bead's acceptance criteria from its xBRIEF item
|
|
7764
7807
|
* (plus traced FR text when metadata.traces is present and a PRD draft was
|
|
7765
7808
|
* provided), and send the composed review request via deliverAgentMessage.
|
|
7766
7809
|
*/
|
|
@@ -7781,13 +7824,13 @@ async function deliverCommitForReview(options) {
|
|
|
7781
7824
|
});
|
|
7782
7825
|
return deliver(options.supervisorAgentId, message, "tier-supervisor:verdict");
|
|
7783
7826
|
}
|
|
7784
|
-
var SUPERVISOR_SUB_ROLE, execFileAsync$
|
|
7827
|
+
var SUPERVISOR_SUB_ROLE, execFileAsync$4;
|
|
7785
7828
|
var init_tier_supervisor = __esmMin((() => {
|
|
7786
7829
|
init_delivery();
|
|
7787
7830
|
init_spawn_prep();
|
|
7788
7831
|
init_spawn();
|
|
7789
7832
|
SUPERVISOR_SUB_ROLE = "supervisor";
|
|
7790
|
-
execFileAsync$
|
|
7833
|
+
execFileAsync$4 = promisify(execFile);
|
|
7791
7834
|
}));
|
|
7792
7835
|
//#endregion
|
|
7793
7836
|
//#region ../../lib/agents/tier-replay.ts
|
|
@@ -7967,7 +8010,7 @@ async function loadReplayCommits(workspace, base, feedConfig, deps) {
|
|
|
7967
8010
|
return commits;
|
|
7968
8011
|
}
|
|
7969
8012
|
async function runGitLog(workspace, base) {
|
|
7970
|
-
const { stdout } = await execFileAsync("git", [
|
|
8013
|
+
const { stdout } = await execFileAsync$3("git", [
|
|
7971
8014
|
"log",
|
|
7972
8015
|
"--reverse",
|
|
7973
8016
|
"--format=%H%x00%s",
|
|
@@ -7986,7 +8029,7 @@ async function runGitLog(workspace, base) {
|
|
|
7986
8029
|
}).filter((entry) => entry.sha.trim().length > 0);
|
|
7987
8030
|
}
|
|
7988
8031
|
async function runGitShow(workspace, sha) {
|
|
7989
|
-
const { stdout } = await execFileAsync("git", ["show", sha], {
|
|
8032
|
+
const { stdout } = await execFileAsync$3("git", ["show", sha], {
|
|
7990
8033
|
cwd: workspace,
|
|
7991
8034
|
encoding: "utf-8",
|
|
7992
8035
|
maxBuffer: 16 * 1024 * 1024
|
|
@@ -8004,7 +8047,7 @@ function replayDeps(deps = {}) {
|
|
|
8004
8047
|
listSlotOwnership: deps.listSlotOwnership ?? listSlotOwnership
|
|
8005
8048
|
};
|
|
8006
8049
|
}
|
|
8007
|
-
var execFileAsync, DEFAULT_REPLAY_THRESHOLD;
|
|
8050
|
+
var execFileAsync$3, DEFAULT_REPLAY_THRESHOLD;
|
|
8008
8051
|
var init_tier_replay = __esmMin((() => {
|
|
8009
8052
|
init_model_capabilities();
|
|
8010
8053
|
init_delivery();
|
|
@@ -8016,7 +8059,7 @@ var init_tier_replay = __esmMin((() => {
|
|
|
8016
8059
|
init_tier_supervisor();
|
|
8017
8060
|
init_tier_table();
|
|
8018
8061
|
init_termination();
|
|
8019
|
-
execFileAsync = promisify(execFile);
|
|
8062
|
+
execFileAsync$3 = promisify(execFile);
|
|
8020
8063
|
DEFAULT_REPLAY_THRESHOLD = .5;
|
|
8021
8064
|
}));
|
|
8022
8065
|
//#endregion
|
|
@@ -8040,16 +8083,585 @@ var init_agents = __esmMin((() => {
|
|
|
8040
8083
|
init_tier_replay();
|
|
8041
8084
|
}));
|
|
8042
8085
|
//#endregion
|
|
8086
|
+
//#region ../../lib/system-health/types.ts
|
|
8087
|
+
function available(value) {
|
|
8088
|
+
return {
|
|
8089
|
+
status: "available",
|
|
8090
|
+
value
|
|
8091
|
+
};
|
|
8092
|
+
}
|
|
8093
|
+
function unavailable(reason) {
|
|
8094
|
+
return {
|
|
8095
|
+
status: "unavailable",
|
|
8096
|
+
reason
|
|
8097
|
+
};
|
|
8098
|
+
}
|
|
8099
|
+
var init_types = __esmMin((() => {}));
|
|
8100
|
+
//#endregion
|
|
8101
|
+
//#region ../../lib/system-health/darwin.ts
|
|
8102
|
+
function parseDarwinMemoryPressure(content) {
|
|
8103
|
+
for (const pattern of [/System-wide memory free percentage:\s*([\d.]+)\s*%/i, /System-wide memory free percentage\s*=\s*([\d.]+)\s*%?/i]) {
|
|
8104
|
+
const match = content.match(pattern);
|
|
8105
|
+
if (!match) continue;
|
|
8106
|
+
const value = Number(match[1]);
|
|
8107
|
+
if (Number.isFinite(value) && value >= 0 && value <= 100) return value;
|
|
8108
|
+
}
|
|
8109
|
+
return null;
|
|
8110
|
+
}
|
|
8111
|
+
function parseDarwinVmStat(content) {
|
|
8112
|
+
const pageSizeMatch = content.match(/page size of\s+(\d+)\s+bytes/i);
|
|
8113
|
+
if (!pageSizeMatch) return null;
|
|
8114
|
+
const pageSizeBytes = Number(pageSizeMatch[1]);
|
|
8115
|
+
if (!Number.isFinite(pageSizeBytes) || pageSizeBytes <= 0) return null;
|
|
8116
|
+
const pages = /* @__PURE__ */ new Map();
|
|
8117
|
+
for (const line of content.split("\n")) {
|
|
8118
|
+
const match = line.match(/^([^:]+):\s+(\d+)\.?$/);
|
|
8119
|
+
if (!match) continue;
|
|
8120
|
+
const value = Number(match[2]);
|
|
8121
|
+
if (Number.isFinite(value)) pages.set(match[1].trim(), value);
|
|
8122
|
+
}
|
|
8123
|
+
const availablePageNames = [
|
|
8124
|
+
"Pages free",
|
|
8125
|
+
"Pages inactive",
|
|
8126
|
+
"Pages speculative"
|
|
8127
|
+
];
|
|
8128
|
+
const availablePages = availablePageNames.every((name) => pages.has(name)) ? availablePageNames.reduce((sum, name) => sum + pages.get(name), 0) : void 0;
|
|
8129
|
+
const swapIn = pages.get("Swapins");
|
|
8130
|
+
const swapOut = pages.get("Swapouts");
|
|
8131
|
+
return {
|
|
8132
|
+
pageSizeBytes,
|
|
8133
|
+
availableMemoryBytes: availablePages == null ? void 0 : availablePages * pageSizeBytes,
|
|
8134
|
+
swap: swapIn == null || swapOut == null ? void 0 : {
|
|
8135
|
+
pagesIn: swapIn,
|
|
8136
|
+
pagesOut: swapOut
|
|
8137
|
+
}
|
|
8138
|
+
};
|
|
8139
|
+
}
|
|
8140
|
+
function unitBytes(value, unit) {
|
|
8141
|
+
const parsed = Number(value);
|
|
8142
|
+
if (!Number.isFinite(parsed) || parsed < 0) return null;
|
|
8143
|
+
const multiplier = unit.toUpperCase() === "G" ? 1024 ** 3 : unit.toUpperCase() === "K" ? 1024 : MIB;
|
|
8144
|
+
return Math.round(parsed * multiplier);
|
|
8145
|
+
}
|
|
8146
|
+
function parseDarwinSwapUsage(content) {
|
|
8147
|
+
const total = content.match(/total\s*=\s*([\d.]+)([KMG])/i);
|
|
8148
|
+
const used = content.match(/used\s*=\s*([\d.]+)([KMG])/i);
|
|
8149
|
+
const free = content.match(/free\s*=\s*([\d.]+)([KMG])/i);
|
|
8150
|
+
if (!total || !used || !free) return null;
|
|
8151
|
+
const totalBytes = unitBytes(total[1], total[2]);
|
|
8152
|
+
const usedBytes = unitBytes(used[1], used[2]);
|
|
8153
|
+
const freeBytes = unitBytes(free[1], free[2]);
|
|
8154
|
+
return totalBytes == null || usedBytes == null || freeBytes == null ? null : {
|
|
8155
|
+
totalBytes,
|
|
8156
|
+
usedBytes,
|
|
8157
|
+
freeBytes
|
|
8158
|
+
};
|
|
8159
|
+
}
|
|
8160
|
+
function aggregateDarwinCpuCounters(cpuInfo) {
|
|
8161
|
+
if (cpuInfo.length === 0) return null;
|
|
8162
|
+
let idle = 0;
|
|
8163
|
+
let total = 0;
|
|
8164
|
+
for (const cpu of cpuInfo) {
|
|
8165
|
+
const values = Object.values(cpu.times);
|
|
8166
|
+
if (values.some((value) => !Number.isFinite(value) || value < 0)) return null;
|
|
8167
|
+
idle += cpu.times.idle;
|
|
8168
|
+
total += values.reduce((sum, value) => sum + value, 0);
|
|
8169
|
+
}
|
|
8170
|
+
return {
|
|
8171
|
+
idle,
|
|
8172
|
+
total
|
|
8173
|
+
};
|
|
8174
|
+
}
|
|
8175
|
+
function computeCpuPercent$1(current, previous) {
|
|
8176
|
+
if (!previous) return unavailable("A previous CPU time sample is required.");
|
|
8177
|
+
const totalDelta = current.total - previous.total;
|
|
8178
|
+
const idleDelta = current.idle - previous.idle;
|
|
8179
|
+
if (totalDelta <= 0 || idleDelta < 0 || idleDelta > totalDelta) return unavailable("CPU times did not advance monotonically.");
|
|
8180
|
+
return available(Math.round((totalDelta - idleDelta) / totalDelta * 1e3) / 10);
|
|
8181
|
+
}
|
|
8182
|
+
function computeSwapActivity(current, previous, elapsedMs, pageSizeBytes) {
|
|
8183
|
+
if (!previous) return unavailable("A previous swap counter sample is required.");
|
|
8184
|
+
const pages = current.pagesIn - previous.pagesIn + current.pagesOut - previous.pagesOut;
|
|
8185
|
+
if (pages < 0 || elapsedMs <= 0) return unavailable("Swap counters or sample timing were invalid.");
|
|
8186
|
+
return available(Math.round(pages * pageSizeBytes * 6e4 / elapsedMs));
|
|
8187
|
+
}
|
|
8188
|
+
function percent$1(part, total) {
|
|
8189
|
+
if (total <= 0) return 0;
|
|
8190
|
+
return Math.round(part / total * 1e3) / 10;
|
|
8191
|
+
}
|
|
8192
|
+
async function command(adapters, executable, args) {
|
|
8193
|
+
try {
|
|
8194
|
+
return await adapters.execFile(executable, args, COMMAND_TIMEOUT_MS);
|
|
8195
|
+
} catch {
|
|
8196
|
+
return null;
|
|
8197
|
+
}
|
|
8198
|
+
}
|
|
8199
|
+
function createDarwinHostHealthCollector(adapters = defaultAdapters$1) {
|
|
8200
|
+
return {
|
|
8201
|
+
platform: "darwin",
|
|
8202
|
+
async sample(previous) {
|
|
8203
|
+
const sampledAtMs = adapters.now();
|
|
8204
|
+
const [pressureOutput, vmStatOutput, swapOutput] = await Promise.all([
|
|
8205
|
+
command(adapters, "memory_pressure", ["-Q"]),
|
|
8206
|
+
command(adapters, "vm_stat", []),
|
|
8207
|
+
command(adapters, "sysctl", ["-n", "vm.swapusage"])
|
|
8208
|
+
]);
|
|
8209
|
+
const pressureFreePercent = pressureOutput == null ? null : parseDarwinMemoryPressure(pressureOutput);
|
|
8210
|
+
const vmStat = vmStatOutput == null ? null : parseDarwinVmStat(vmStatOutput);
|
|
8211
|
+
const swapUsage = swapOutput == null ? null : parseDarwinSwapUsage(swapOutput);
|
|
8212
|
+
const cpuInfo = adapters.cpus();
|
|
8213
|
+
const cpuCounters = aggregateDarwinCpuCounters(cpuInfo);
|
|
8214
|
+
const totalMemoryBytes = adapters.totalMemoryBytes();
|
|
8215
|
+
const availableMemoryBytes = pressureFreePercent != null ? Math.round(totalMemoryBytes * pressureFreePercent / 100) : vmStat?.availableMemoryBytes ?? null;
|
|
8216
|
+
const usedMemoryBytes = Number.isFinite(totalMemoryBytes) && availableMemoryBytes != null ? Math.max(totalMemoryBytes - availableMemoryBytes, 0) : null;
|
|
8217
|
+
const loadAverage1m = adapters.loadAverage1m();
|
|
8218
|
+
const elapsedMs = previous ? sampledAtMs - previous.sampledAtMs : 0;
|
|
8219
|
+
return {
|
|
8220
|
+
platform: "darwin",
|
|
8221
|
+
sampledAtMs,
|
|
8222
|
+
cpuPercent: cpuCounters ? computeCpuPercent$1(cpuCounters, previous?.counters.cpu) : unavailable("macOS CPU times are unavailable."),
|
|
8223
|
+
loadAverage1m: Number.isFinite(loadAverage1m) && loadAverage1m >= 0 ? available(loadAverage1m) : unavailable("The one-minute load average is unavailable."),
|
|
8224
|
+
loadPerCore1m: Number.isFinite(loadAverage1m) && loadAverage1m >= 0 && cpuInfo.length > 0 ? available(Math.round(loadAverage1m / cpuInfo.length * 100) / 100) : unavailable("Load average or CPU core count is unavailable."),
|
|
8225
|
+
totalMemoryBytes: Number.isFinite(totalMemoryBytes) && totalMemoryBytes > 0 ? available(totalMemoryBytes) : unavailable("Total memory is unavailable."),
|
|
8226
|
+
usedMemoryBytes: usedMemoryBytes == null ? unavailable("Used memory cannot be derived.") : available(usedMemoryBytes),
|
|
8227
|
+
availableMemoryBytes: availableMemoryBytes == null ? unavailable("Available memory is unavailable.") : available(availableMemoryBytes),
|
|
8228
|
+
memoryUsedPercent: usedMemoryBytes == null ? unavailable("Memory utilization cannot be derived.") : available(percent$1(usedMemoryBytes, totalMemoryBytes)),
|
|
8229
|
+
memoryPressureSomeAvg10: unavailable("macOS does not expose Linux memory PSI."),
|
|
8230
|
+
memoryPressureFullAvg10: unavailable("macOS does not expose Linux memory PSI."),
|
|
8231
|
+
memoryPressureFreePercent: pressureFreePercent == null ? unavailable("memory_pressure did not report a recognized free percentage.") : available(pressureFreePercent),
|
|
8232
|
+
swapTotalBytes: swapUsage ? available(swapUsage.totalBytes) : unavailable("vm.swapusage is unavailable."),
|
|
8233
|
+
swapUsedBytes: swapUsage ? available(swapUsage.usedBytes) : unavailable("vm.swapusage is unavailable."),
|
|
8234
|
+
swapUsedPercent: swapUsage ? available(percent$1(swapUsage.usedBytes, swapUsage.totalBytes)) : unavailable("vm.swapusage is unavailable."),
|
|
8235
|
+
swapActivityBytesPerMinute: vmStat?.swap ? computeSwapActivity(vmStat.swap, previous?.counters.swap, elapsedMs, vmStat.pageSizeBytes) : unavailable("vm_stat swap activity counters are unavailable."),
|
|
8236
|
+
committedMemoryBytes: unavailable("macOS does not expose Linux Committed_AS."),
|
|
8237
|
+
commitLimitBytes: unavailable("macOS does not expose Linux CommitLimit."),
|
|
8238
|
+
virtualCommitmentPercent: unavailable("macOS virtual commitment is unavailable."),
|
|
8239
|
+
counters: {
|
|
8240
|
+
cpu: cpuCounters,
|
|
8241
|
+
swap: vmStat?.swap ?? null
|
|
8242
|
+
}
|
|
8243
|
+
};
|
|
8244
|
+
}
|
|
8245
|
+
};
|
|
8246
|
+
}
|
|
8247
|
+
var execFileAsync$2, COMMAND_TIMEOUT_MS, MIB, DARWIN_MEMORY_PRESSURE_DEFAULTS, defaultAdapters$1;
|
|
8248
|
+
var init_darwin = __esmMin((() => {
|
|
8249
|
+
init_types();
|
|
8250
|
+
execFileAsync$2 = promisify(execFile);
|
|
8251
|
+
COMMAND_TIMEOUT_MS = 5e3;
|
|
8252
|
+
MIB = 1024 ** 2;
|
|
8253
|
+
DARWIN_MEMORY_PRESSURE_DEFAULTS = Object.freeze({
|
|
8254
|
+
warningFreePercent: 10,
|
|
8255
|
+
criticalFreePercent: 5,
|
|
8256
|
+
swapActivityWarningBytesPerMinute: 64 * MIB,
|
|
8257
|
+
swapActivityCriticalBytesPerMinute: 256 * MIB
|
|
8258
|
+
});
|
|
8259
|
+
defaultAdapters$1 = {
|
|
8260
|
+
execFile: async (command, args, timeoutMs) => {
|
|
8261
|
+
const { stdout } = await execFileAsync$2(command, [...args], {
|
|
8262
|
+
encoding: "utf-8",
|
|
8263
|
+
timeout: timeoutMs
|
|
8264
|
+
});
|
|
8265
|
+
return stdout;
|
|
8266
|
+
},
|
|
8267
|
+
cpus: cpus$1,
|
|
8268
|
+
loadAverage1m: () => loadavg$1()[0] ?? 0,
|
|
8269
|
+
totalMemoryBytes: totalmem$1,
|
|
8270
|
+
now: () => Date.now()
|
|
8271
|
+
};
|
|
8272
|
+
}));
|
|
8273
|
+
//#endregion
|
|
8274
|
+
//#region ../../lib/system-health/linux.ts
|
|
8275
|
+
function parseMemInfo(content) {
|
|
8276
|
+
const values = /* @__PURE__ */ new Map();
|
|
8277
|
+
for (const line of content.split("\n")) {
|
|
8278
|
+
const match = line.match(/^(\w+):\s+(\d+)\s+kB$/);
|
|
8279
|
+
if (!match) continue;
|
|
8280
|
+
const value = Number(match[2]);
|
|
8281
|
+
if (Number.isFinite(value)) values.set(match[1], value * KB);
|
|
8282
|
+
}
|
|
8283
|
+
return {
|
|
8284
|
+
memTotalBytes: values.get("MemTotal"),
|
|
8285
|
+
memAvailableBytes: values.get("MemAvailable"),
|
|
8286
|
+
swapTotalBytes: values.get("SwapTotal"),
|
|
8287
|
+
swapFreeBytes: values.get("SwapFree"),
|
|
8288
|
+
committedMemoryBytes: values.get("Committed_AS"),
|
|
8289
|
+
commitLimitBytes: values.get("CommitLimit")
|
|
8290
|
+
};
|
|
8291
|
+
}
|
|
8292
|
+
function parseProcStat(content) {
|
|
8293
|
+
const lines = content.split("\n");
|
|
8294
|
+
const cpuLine = lines.find((line) => line.startsWith("cpu "));
|
|
8295
|
+
if (!cpuLine) return null;
|
|
8296
|
+
const values = cpuLine.trim().split(/\s+/).slice(1).map(Number);
|
|
8297
|
+
if (values.length < 4 || values.some((value) => !Number.isFinite(value))) return null;
|
|
8298
|
+
const idle = values[3] + (values[4] ?? 0);
|
|
8299
|
+
const total = values.reduce((sum, value) => sum + value, 0);
|
|
8300
|
+
const coreCount = lines.filter((line) => /^cpu\d+\s/.test(line)).length;
|
|
8301
|
+
if (total < 0 || idle < 0) return null;
|
|
8302
|
+
return {
|
|
8303
|
+
cpu: {
|
|
8304
|
+
idle,
|
|
8305
|
+
total
|
|
8306
|
+
},
|
|
8307
|
+
coreCount: Math.max(coreCount, 1)
|
|
8308
|
+
};
|
|
8309
|
+
}
|
|
8310
|
+
function parseMemoryPressure(content) {
|
|
8311
|
+
const result = {};
|
|
8312
|
+
for (const line of content.split("\n")) {
|
|
8313
|
+
const match = line.match(/^(some|full)\s+.*\bavg10=([^\s]+)/);
|
|
8314
|
+
if (!match) continue;
|
|
8315
|
+
const value = Number(match[2]);
|
|
8316
|
+
if (!Number.isFinite(value) || value < 0) continue;
|
|
8317
|
+
if (match[1] === "some") result.someAvg10 = value;
|
|
8318
|
+
if (match[1] === "full") result.fullAvg10 = value;
|
|
8319
|
+
}
|
|
8320
|
+
return result;
|
|
8321
|
+
}
|
|
8322
|
+
function parseVmstat(content) {
|
|
8323
|
+
let pagesIn = null;
|
|
8324
|
+
let pagesOut = null;
|
|
8325
|
+
for (const line of content.split("\n")) {
|
|
8326
|
+
const match = line.match(/^(pswpin|pswpout)\s+(\d+)$/);
|
|
8327
|
+
if (!match) continue;
|
|
8328
|
+
const value = Number(match[2]);
|
|
8329
|
+
if (!Number.isFinite(value)) continue;
|
|
8330
|
+
if (match[1] === "pswpin") pagesIn = value;
|
|
8331
|
+
if (match[1] === "pswpout") pagesOut = value;
|
|
8332
|
+
}
|
|
8333
|
+
return pagesIn == null || pagesOut == null ? null : {
|
|
8334
|
+
pagesIn,
|
|
8335
|
+
pagesOut
|
|
8336
|
+
};
|
|
8337
|
+
}
|
|
8338
|
+
function parseLoadAverage(content) {
|
|
8339
|
+
const value = Number(content.trim().split(/\s+/)[0]);
|
|
8340
|
+
return Number.isFinite(value) && value >= 0 ? value : null;
|
|
8341
|
+
}
|
|
8342
|
+
function computeCpuPercent(current, previous) {
|
|
8343
|
+
if (!previous) return unavailable("A previous CPU counter sample is required.");
|
|
8344
|
+
const totalDelta = current.total - previous.total;
|
|
8345
|
+
const idleDelta = current.idle - previous.idle;
|
|
8346
|
+
if (totalDelta <= 0 || idleDelta < 0 || idleDelta > totalDelta) return unavailable("CPU counters did not advance monotonically.");
|
|
8347
|
+
return available(Math.round((totalDelta - idleDelta) / totalDelta * 1e3) / 10);
|
|
8348
|
+
}
|
|
8349
|
+
function computeSwapActivityBytesPerMinute(current, previous, elapsedMs, pageSizeBytes) {
|
|
8350
|
+
if (!previous) return unavailable("A previous swap counter sample is required.");
|
|
8351
|
+
const pageDelta = current.pagesIn - previous.pagesIn + current.pagesOut - previous.pagesOut;
|
|
8352
|
+
if (pageDelta < 0 || elapsedMs <= 0 || !Number.isFinite(pageSizeBytes) || pageSizeBytes <= 0) return unavailable("Swap counters or sample timing were invalid.");
|
|
8353
|
+
return available(Math.round(pageDelta * pageSizeBytes * 6e4 / elapsedMs));
|
|
8354
|
+
}
|
|
8355
|
+
async function readParsed(adapters, path, parse) {
|
|
8356
|
+
try {
|
|
8357
|
+
return parse(await adapters.readFile(path));
|
|
8358
|
+
} catch {
|
|
8359
|
+
return null;
|
|
8360
|
+
}
|
|
8361
|
+
}
|
|
8362
|
+
function percent(part, total) {
|
|
8363
|
+
if (total <= 0) return 0;
|
|
8364
|
+
return Math.round(part / total * 1e3) / 10;
|
|
8365
|
+
}
|
|
8366
|
+
function createLinuxHostHealthCollector(adapters = defaultAdapters) {
|
|
8367
|
+
return {
|
|
8368
|
+
platform: "linux",
|
|
8369
|
+
async sample(previous) {
|
|
8370
|
+
const sampledAtMs = adapters.now();
|
|
8371
|
+
const [memInfo, procStat, pressure, vmstat, loadAverage, pageSizeBytes] = await Promise.all([
|
|
8372
|
+
readParsed(adapters, "/proc/meminfo", parseMemInfo),
|
|
8373
|
+
readParsed(adapters, "/proc/stat", parseProcStat),
|
|
8374
|
+
readParsed(adapters, "/proc/pressure/memory", parseMemoryPressure),
|
|
8375
|
+
readParsed(adapters, "/proc/vmstat", parseVmstat),
|
|
8376
|
+
readParsed(adapters, "/proc/loadavg", parseLoadAverage),
|
|
8377
|
+
adapters.readPageSizeBytes().catch(() => null)
|
|
8378
|
+
]);
|
|
8379
|
+
const totalMemoryBytes = memInfo?.memTotalBytes;
|
|
8380
|
+
const availableMemoryBytes = memInfo?.memAvailableBytes;
|
|
8381
|
+
const usedMemoryBytes = totalMemoryBytes != null && availableMemoryBytes != null ? Math.max(totalMemoryBytes - availableMemoryBytes, 0) : null;
|
|
8382
|
+
const swapTotalBytes = memInfo?.swapTotalBytes;
|
|
8383
|
+
const swapFreeBytes = memInfo?.swapFreeBytes;
|
|
8384
|
+
const swapUsedBytes = swapTotalBytes != null && swapFreeBytes != null ? Math.max(swapTotalBytes - swapFreeBytes, 0) : null;
|
|
8385
|
+
const committedMemoryBytes = memInfo?.committedMemoryBytes;
|
|
8386
|
+
const commitLimitBytes = memInfo?.commitLimitBytes;
|
|
8387
|
+
const cpuCounters = procStat?.cpu ?? null;
|
|
8388
|
+
const swapCounters = vmstat ?? null;
|
|
8389
|
+
const elapsedMs = previous ? sampledAtMs - previous.sampledAtMs : 0;
|
|
8390
|
+
return {
|
|
8391
|
+
platform: "linux",
|
|
8392
|
+
sampledAtMs,
|
|
8393
|
+
cpuPercent: cpuCounters ? computeCpuPercent(cpuCounters, previous?.counters.cpu) : unavailable("The aggregate CPU counters are unavailable."),
|
|
8394
|
+
loadAverage1m: loadAverage == null ? unavailable("The one-minute load average is unavailable.") : available(loadAverage),
|
|
8395
|
+
loadPerCore1m: loadAverage == null || !procStat ? unavailable("Load average or CPU core count is unavailable.") : available(Math.round(loadAverage / procStat.coreCount * 100) / 100),
|
|
8396
|
+
totalMemoryBytes: totalMemoryBytes == null ? unavailable("MemTotal is unavailable.") : available(totalMemoryBytes),
|
|
8397
|
+
usedMemoryBytes: usedMemoryBytes == null ? unavailable("Used memory cannot be derived without MemTotal and MemAvailable.") : available(usedMemoryBytes),
|
|
8398
|
+
availableMemoryBytes: availableMemoryBytes == null ? unavailable("MemAvailable is unavailable.") : available(availableMemoryBytes),
|
|
8399
|
+
memoryUsedPercent: usedMemoryBytes == null || totalMemoryBytes == null ? unavailable("Memory utilization cannot be derived.") : available(percent(usedMemoryBytes, totalMemoryBytes)),
|
|
8400
|
+
memoryPressureSomeAvg10: pressure?.someAvg10 == null ? unavailable("Linux memory PSI some.avg10 is unavailable.") : available(pressure.someAvg10),
|
|
8401
|
+
memoryPressureFullAvg10: pressure?.fullAvg10 == null ? unavailable("Linux memory PSI full.avg10 is unavailable.") : available(pressure.fullAvg10),
|
|
8402
|
+
memoryPressureFreePercent: unavailable("Linux reports memory pressure through PSI."),
|
|
8403
|
+
swapTotalBytes: swapTotalBytes == null ? unavailable("SwapTotal is unavailable.") : available(swapTotalBytes),
|
|
8404
|
+
swapUsedBytes: swapUsedBytes == null ? unavailable("Swap usage cannot be derived without SwapTotal and SwapFree.") : available(swapUsedBytes),
|
|
8405
|
+
swapUsedPercent: swapUsedBytes == null || swapTotalBytes == null ? unavailable("Swap utilization cannot be derived.") : available(percent(swapUsedBytes, swapTotalBytes)),
|
|
8406
|
+
swapActivityBytesPerMinute: swapCounters && pageSizeBytes != null ? computeSwapActivityBytesPerMinute(swapCounters, previous?.counters.swap, elapsedMs, pageSizeBytes) : unavailable("Linux swap activity counters are unavailable."),
|
|
8407
|
+
committedMemoryBytes: committedMemoryBytes == null ? unavailable("Committed_AS is unavailable.") : available(committedMemoryBytes),
|
|
8408
|
+
commitLimitBytes: commitLimitBytes == null ? unavailable("CommitLimit is unavailable.") : available(commitLimitBytes),
|
|
8409
|
+
virtualCommitmentPercent: committedMemoryBytes == null || commitLimitBytes == null ? unavailable("Virtual commitment cannot be derived.") : available(percent(committedMemoryBytes, commitLimitBytes)),
|
|
8410
|
+
counters: {
|
|
8411
|
+
cpu: cpuCounters,
|
|
8412
|
+
swap: swapCounters
|
|
8413
|
+
}
|
|
8414
|
+
};
|
|
8415
|
+
}
|
|
8416
|
+
};
|
|
8417
|
+
}
|
|
8418
|
+
var execFileAsync$1, KB, LINUX_MEMORY_PRESSURE_DEFAULTS, defaultAdapters;
|
|
8419
|
+
var init_linux = __esmMin((() => {
|
|
8420
|
+
init_types();
|
|
8421
|
+
execFileAsync$1 = promisify(execFile);
|
|
8422
|
+
KB = 1024;
|
|
8423
|
+
LINUX_MEMORY_PRESSURE_DEFAULTS = Object.freeze({
|
|
8424
|
+
someWarningAvg10: 5,
|
|
8425
|
+
fullCriticalAvg10: 1,
|
|
8426
|
+
swapActivityWarningBytesPerMinute: 64 * 1024 ** 2,
|
|
8427
|
+
swapActivityCriticalBytesPerMinute: 256 * 1024 ** 2
|
|
8428
|
+
});
|
|
8429
|
+
defaultAdapters = {
|
|
8430
|
+
readFile: (path) => readFile(path, "utf-8"),
|
|
8431
|
+
readPageSizeBytes: async () => {
|
|
8432
|
+
const { stdout } = await execFileAsync$1("getconf", ["PAGESIZE"], {
|
|
8433
|
+
encoding: "utf-8",
|
|
8434
|
+
timeout: 5e3
|
|
8435
|
+
});
|
|
8436
|
+
const value = Number(stdout.trim());
|
|
8437
|
+
if (!Number.isFinite(value) || value <= 0) throw new Error("getconf returned an invalid page size");
|
|
8438
|
+
return value;
|
|
8439
|
+
},
|
|
8440
|
+
now: () => Date.now()
|
|
8441
|
+
};
|
|
8442
|
+
}));
|
|
8443
|
+
//#endregion
|
|
8444
|
+
//#region ../../lib/system-health/collector.ts
|
|
8445
|
+
/**
|
|
8446
|
+
* Selects the platform host-health collector. Linux and macOS expose native
|
|
8447
|
+
* current-pressure signals; unsupported platforms return unavailable signals
|
|
8448
|
+
* so callers never mistake missing measurements for measured zeroes.
|
|
8449
|
+
*/
|
|
8450
|
+
function buildProcessTreeIndex(rows) {
|
|
8451
|
+
const childrenByParent = /* @__PURE__ */ new Map();
|
|
8452
|
+
for (const row of rows) {
|
|
8453
|
+
const children = childrenByParent.get(row.ppid);
|
|
8454
|
+
if (children) children.push(row.pid);
|
|
8455
|
+
else childrenByParent.set(row.ppid, [row.pid]);
|
|
8456
|
+
}
|
|
8457
|
+
return { childrenByParent };
|
|
8458
|
+
}
|
|
8459
|
+
function collectDescendantPids(rootPid, index) {
|
|
8460
|
+
const descendants = /* @__PURE__ */ new Set();
|
|
8461
|
+
const queue = [rootPid];
|
|
8462
|
+
while (queue.length > 0) {
|
|
8463
|
+
const pid = queue.shift();
|
|
8464
|
+
if (pid == null || descendants.has(pid)) continue;
|
|
8465
|
+
descendants.add(pid);
|
|
8466
|
+
queue.push(...index.childrenByParent.get(pid) ?? []);
|
|
8467
|
+
}
|
|
8468
|
+
return descendants;
|
|
8469
|
+
}
|
|
8470
|
+
function createUnsupportedCollector(platform = "unsupported") {
|
|
8471
|
+
const signal = () => unavailable("Host health collection is unsupported on this platform.");
|
|
8472
|
+
return {
|
|
8473
|
+
platform,
|
|
8474
|
+
async sample() {
|
|
8475
|
+
return {
|
|
8476
|
+
platform,
|
|
8477
|
+
sampledAtMs: Date.now(),
|
|
8478
|
+
cpuPercent: signal(),
|
|
8479
|
+
loadAverage1m: signal(),
|
|
8480
|
+
loadPerCore1m: signal(),
|
|
8481
|
+
totalMemoryBytes: signal(),
|
|
8482
|
+
usedMemoryBytes: signal(),
|
|
8483
|
+
availableMemoryBytes: signal(),
|
|
8484
|
+
memoryUsedPercent: signal(),
|
|
8485
|
+
memoryPressureSomeAvg10: signal(),
|
|
8486
|
+
memoryPressureFullAvg10: signal(),
|
|
8487
|
+
memoryPressureFreePercent: signal(),
|
|
8488
|
+
swapTotalBytes: signal(),
|
|
8489
|
+
swapUsedBytes: signal(),
|
|
8490
|
+
swapUsedPercent: signal(),
|
|
8491
|
+
swapActivityBytesPerMinute: signal(),
|
|
8492
|
+
committedMemoryBytes: signal(),
|
|
8493
|
+
commitLimitBytes: signal(),
|
|
8494
|
+
virtualCommitmentPercent: signal(),
|
|
8495
|
+
counters: {
|
|
8496
|
+
cpu: null,
|
|
8497
|
+
swap: null
|
|
8498
|
+
}
|
|
8499
|
+
};
|
|
8500
|
+
}
|
|
8501
|
+
};
|
|
8502
|
+
}
|
|
8503
|
+
function createHostHealthCollector(selection = {}) {
|
|
8504
|
+
const platform = selection.platform ?? platform$1();
|
|
8505
|
+
if (platform === "linux") return selection.linux ?? createLinuxHostHealthCollector();
|
|
8506
|
+
if (platform === "darwin") return selection.darwin ?? createDarwinHostHealthCollector();
|
|
8507
|
+
return createUnsupportedCollector();
|
|
8508
|
+
}
|
|
8509
|
+
var init_collector = __esmMin((() => {
|
|
8510
|
+
init_darwin();
|
|
8511
|
+
init_linux();
|
|
8512
|
+
init_types();
|
|
8513
|
+
}));
|
|
8514
|
+
//#endregion
|
|
8515
|
+
//#region ../../lib/runtime-census.ts
|
|
8516
|
+
function parseRuntimeProcessTable(output) {
|
|
8517
|
+
return output.split("\n").flatMap((line) => {
|
|
8518
|
+
const match = line.trim().match(/^(\d+)\s+(\d+)\s+([0-9.]+)\s+(\d+)\s+(\S+)(?:\s+(.*))?$/);
|
|
8519
|
+
if (!match) return [];
|
|
8520
|
+
const pid = Number(match[1]);
|
|
8521
|
+
const ppid = Number(match[2]);
|
|
8522
|
+
const cpuPercent = Number(match[3]);
|
|
8523
|
+
const rssKb = Number(match[4]);
|
|
8524
|
+
if (![
|
|
8525
|
+
pid,
|
|
8526
|
+
ppid,
|
|
8527
|
+
cpuPercent,
|
|
8528
|
+
rssKb
|
|
8529
|
+
].every(Number.isFinite)) return [];
|
|
8530
|
+
return [{
|
|
8531
|
+
pid,
|
|
8532
|
+
ppid,
|
|
8533
|
+
cpuPercent,
|
|
8534
|
+
rssBytes: rssKb * 1024,
|
|
8535
|
+
comm: match[5] ?? "",
|
|
8536
|
+
command: match[6] ?? match[5] ?? ""
|
|
8537
|
+
}];
|
|
8538
|
+
});
|
|
8539
|
+
}
|
|
8540
|
+
async function readRuntimeProcessTable() {
|
|
8541
|
+
const { stdout } = await execFileAsync("ps", ["-eo", "pid=,ppid=,pcpu=,rss=,comm=,args="], {
|
|
8542
|
+
encoding: "utf8",
|
|
8543
|
+
timeout: 1e4
|
|
8544
|
+
});
|
|
8545
|
+
return parseRuntimeProcessTable(String(stdout));
|
|
8546
|
+
}
|
|
8547
|
+
function buildRuntimeCensus(panes, processes, sampledAt, options) {
|
|
8548
|
+
const panesBySession = /* @__PURE__ */ new Map();
|
|
8549
|
+
for (const pane of panes) {
|
|
8550
|
+
const sessionPanes = panesBySession.get(pane.sessionName);
|
|
8551
|
+
if (sessionPanes) sessionPanes.push(pane);
|
|
8552
|
+
else panesBySession.set(pane.sessionName, [pane]);
|
|
8553
|
+
}
|
|
8554
|
+
const processesByPid = new Map(processes.map((process) => [process.pid, process]));
|
|
8555
|
+
return {
|
|
8556
|
+
sampledAt,
|
|
8557
|
+
available: options.tmuxAvailable,
|
|
8558
|
+
tmuxAvailable: options.tmuxAvailable,
|
|
8559
|
+
processAvailable: options.processAvailable,
|
|
8560
|
+
stale: options.stale ?? false,
|
|
8561
|
+
error: options.error ?? null,
|
|
8562
|
+
panes,
|
|
8563
|
+
sessionNames: new Set(panesBySession.keys()),
|
|
8564
|
+
panesBySession,
|
|
8565
|
+
processesByPid,
|
|
8566
|
+
processTree: buildProcessTreeIndex(processes)
|
|
8567
|
+
};
|
|
8568
|
+
}
|
|
8569
|
+
function createRuntimeCensusService(deps) {
|
|
8570
|
+
const now = deps.now ?? Date.now;
|
|
8571
|
+
const ttlMs = deps.ttlMs ?? 3e3;
|
|
8572
|
+
let snapshot = null;
|
|
8573
|
+
let inFlight = null;
|
|
8574
|
+
const refresh = () => {
|
|
8575
|
+
if (inFlight) return inFlight;
|
|
8576
|
+
inFlight = Promise.allSettled([deps.listPanes(), deps.readProcesses()]).then(([panesResult, processesResult]) => {
|
|
8577
|
+
const errors = [];
|
|
8578
|
+
if (panesResult.status === "rejected") errors.push(panesResult.reason instanceof Error ? panesResult.reason.message : String(panesResult.reason));
|
|
8579
|
+
if (processesResult.status === "rejected") errors.push(processesResult.reason instanceof Error ? processesResult.reason.message : String(processesResult.reason));
|
|
8580
|
+
snapshot = buildRuntimeCensus(panesResult.status === "fulfilled" ? panesResult.value : snapshot?.panes ?? [], processesResult.status === "fulfilled" ? processesResult.value : [...snapshot?.processesByPid.values() ?? []], now(), {
|
|
8581
|
+
tmuxAvailable: panesResult.status === "fulfilled",
|
|
8582
|
+
processAvailable: processesResult.status === "fulfilled",
|
|
8583
|
+
stale: errors.length > 0,
|
|
8584
|
+
error: errors.length > 0 ? errors.join("; ") : null
|
|
8585
|
+
});
|
|
8586
|
+
return snapshot;
|
|
8587
|
+
}).finally(() => {
|
|
8588
|
+
inFlight = null;
|
|
8589
|
+
});
|
|
8590
|
+
return inFlight;
|
|
8591
|
+
};
|
|
8592
|
+
return {
|
|
8593
|
+
get(options) {
|
|
8594
|
+
if (!options?.fresh && snapshot && now() - snapshot.sampledAt < ttlMs) return Promise.resolve(snapshot);
|
|
8595
|
+
return refresh();
|
|
8596
|
+
},
|
|
8597
|
+
peek() {
|
|
8598
|
+
return snapshot;
|
|
8599
|
+
},
|
|
8600
|
+
reset() {
|
|
8601
|
+
snapshot = null;
|
|
8602
|
+
inFlight = null;
|
|
8603
|
+
}
|
|
8604
|
+
};
|
|
8605
|
+
}
|
|
8606
|
+
function getRuntimeCensus(options) {
|
|
8607
|
+
return runtimeCensusService.get(options);
|
|
8608
|
+
}
|
|
8609
|
+
function refreshRuntimeCensus() {
|
|
8610
|
+
return runtimeCensusService.get({ fresh: true });
|
|
8611
|
+
}
|
|
8612
|
+
function getRuntimeCensusSnapshot() {
|
|
8613
|
+
return runtimeCensusService.peek();
|
|
8614
|
+
}
|
|
8615
|
+
function panePidsForSession(census, sessionName) {
|
|
8616
|
+
return (census.panesBySession.get(sessionName) ?? []).map((pane) => pane.panePid);
|
|
8617
|
+
}
|
|
8618
|
+
function descendantPidsForSession(census, sessionName) {
|
|
8619
|
+
const descendants = /* @__PURE__ */ new Set();
|
|
8620
|
+
for (const panePid of panePidsForSession(census, sessionName)) for (const pid of collectDescendantPids(panePid, census.processTree)) descendants.add(pid);
|
|
8621
|
+
return descendants;
|
|
8622
|
+
}
|
|
8623
|
+
function runtimeCensusHasHarnessProcess(census, sessionName) {
|
|
8624
|
+
if (!census.tmuxAvailable || !census.processAvailable) return true;
|
|
8625
|
+
const panePids = panePidsForSession(census, sessionName);
|
|
8626
|
+
if (panePids.length === 0) return false;
|
|
8627
|
+
for (const panePid of panePids) for (const pid of collectDescendantPids(panePid, census.processTree)) {
|
|
8628
|
+
const comm = census.processesByPid.get(pid)?.comm;
|
|
8629
|
+
if (comm && !KEEPALIVE_FOREGROUND_COMMANDS.has(comm)) return true;
|
|
8630
|
+
}
|
|
8631
|
+
return false;
|
|
8632
|
+
}
|
|
8633
|
+
var execFileAsync, KEEPALIVE_FOREGROUND_COMMANDS, runtimeCensusService;
|
|
8634
|
+
var init_runtime_census = __esmMin((() => {
|
|
8635
|
+
init_collector();
|
|
8636
|
+
execFileAsync = promisify(execFile);
|
|
8637
|
+
KEEPALIVE_FOREGROUND_COMMANDS = new Set([
|
|
8638
|
+
"sleep",
|
|
8639
|
+
"bash",
|
|
8640
|
+
"sh",
|
|
8641
|
+
"dash",
|
|
8642
|
+
"zsh",
|
|
8643
|
+
"ash"
|
|
8644
|
+
]);
|
|
8645
|
+
runtimeCensusService = createRuntimeCensusService({
|
|
8646
|
+
listPanes: async () => {
|
|
8647
|
+
const { listAllPaneRecords } = await import("./tmux-DoThH6aj.js");
|
|
8648
|
+
return Effect.runPromise(listAllPaneRecords());
|
|
8649
|
+
},
|
|
8650
|
+
readProcesses: readRuntimeProcessTable
|
|
8651
|
+
});
|
|
8652
|
+
}));
|
|
8653
|
+
//#endregion
|
|
8043
8654
|
//#region ../../lib/agents/queries.ts
|
|
8044
8655
|
function listRunningAgentsSync() {
|
|
8045
|
-
const
|
|
8046
|
-
const tmuxNames = new Set(
|
|
8656
|
+
const census = getRuntimeCensusSnapshot();
|
|
8657
|
+
const tmuxNames = census ? census.sessionNames : new Set(listSessionsSync().map((session) => session.name));
|
|
8658
|
+
const tmuxUnavailable = census?.tmuxAvailable === false;
|
|
8047
8659
|
return listOverdeckAgentStatesSync().map((state) => {
|
|
8048
8660
|
const normalizedId = normalizeAgentId(state.id);
|
|
8049
8661
|
return {
|
|
8050
8662
|
...state,
|
|
8051
8663
|
id: normalizedId,
|
|
8052
|
-
tmuxActive: tmuxNames.has(normalizedId)
|
|
8664
|
+
tmuxActive: tmuxUnavailable || tmuxNames.has(normalizedId)
|
|
8053
8665
|
};
|
|
8054
8666
|
});
|
|
8055
8667
|
}
|
|
@@ -8168,23 +8780,24 @@ var listRunningAgents;
|
|
|
8168
8780
|
var init_queries = __esmMin((() => {
|
|
8169
8781
|
init_agents();
|
|
8170
8782
|
init_tmux();
|
|
8783
|
+
init_runtime_census();
|
|
8171
8784
|
init_paths();
|
|
8172
8785
|
init_agent_rollback_state();
|
|
8173
8786
|
init_agent_state_sync();
|
|
8174
8787
|
listRunningAgents = () => Effect.gen(function* () {
|
|
8175
|
-
const
|
|
8176
|
-
const tmuxNames =
|
|
8788
|
+
const runtimeCensus = yield* Effect.promise(() => getRuntimeCensus());
|
|
8789
|
+
const tmuxNames = runtimeCensus.sessionNames;
|
|
8177
8790
|
return listOverdeckAgentStatesSync().map((state) => {
|
|
8178
8791
|
const normalizedId = normalizeAgentId(state.id);
|
|
8179
8792
|
return {
|
|
8180
8793
|
...state,
|
|
8181
8794
|
id: normalizedId,
|
|
8182
|
-
tmuxActive: tmuxNames.has(normalizedId)
|
|
8795
|
+
tmuxActive: !runtimeCensus.tmuxAvailable || tmuxNames.has(normalizedId)
|
|
8183
8796
|
};
|
|
8184
8797
|
});
|
|
8185
8798
|
});
|
|
8186
8799
|
}));
|
|
8187
8800
|
//#endregion
|
|
8188
|
-
export {
|
|
8801
|
+
export { appendActivity as $, recordAgentFailure as $n, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as $t, spawnTierSupervisor as A, writeChannelsBridgeMcpConfig as An, init_codex_auth as Ar, deliverAgentPermissionDecision as At, detectCrashedAgents as B, getAgentDir as Bn, assertWorkspaceStackHealthyForSpawn as Bt, replayCrashedStandingAgent as C, validateProviderHealth as Cn, getAgentRuntimeStateSync as Cr, tryReserveAdvancingSlot as Ct, init_tier_supervisor as D, decideChannelsForWorkAgent as Dn, init_agent_runtime as Dr, init_memory_verdict_cache as Dt, deliverCommitForReview as E, buildDefaultResumeContinueMessage as En, getAgentRuntimeSnapshot as Er, getCachedMemoryVerdict as Et, init_tier_escalation as F, clearAgentPausedSync as Fn, init_transcript_landing as Ft, resumeAgent as G, init_agent_state as Gn, transitionIssueToInProgress as Gt, restartAgent as H, getAgentState as Hn, defaultRunWorkspace as Ht, init_slot_reconcile as I, clearAgentTroubled as In, probeTranscriptSince as It, isContextOverflowTail as J, isRole as Jn, providerDefaultHarnessSync as Jt, init_context_overflow as K, isAgentPaused as Kn, transitionIssueToInReview as Kt, listSlotAssignments as L, clearAgentTroubledSync as Ln, BRIDGE_TOKEN_HEADER as Lt, broadcastCommit as M, SESSION_EXITED_BEFORE_KICKOFF as Mn, init_ohmypi_parser as Mr, deliverResumeMessageWithTranscriptConfirmation as Mt, init_tier_feed as N, __testInternals as Nn, parseOhmypiSessionCostResultSync as Nr, setAgentDeliveryMethod as Nt, loadPrdDraft as O, decideSupervisorForWorkAgent as On, applyCodexAuthBurnFlag as Or, setCachedMemoryVerdict as Ot, decideEscalation as P, clearAgentPaused as Pn, captureTranscriptUserRecordSnapshot as Pt, operatorInterventionEvent as Q, markAgentTroubled as Qn, resolveTier as Qt, reconcileSlotState as R, clearYieldForResumeSync as Rn, init_bridge_token as Rt, contextWindowForModel as S, init_provider_health as Sn, getAgentRuntimeState as Sr, resetPatrolDispatchBudget as St, shouldReplayCompactAtTierRunBoundary as T, init_openai_auth as Tn, saveAgentRuntimeState as Tr, workResumeSlotsAvailable as Tt, buildCompactRecoverySeed as U, getAgentStateFilePath as Un, init_spawn_prep as Ut, recoverAgent as V, getAgentResumeGateBlockReason as Vn, buildAgentLaunchConfig as Vt, init_resume as W, getAgentStateSync as Wn, retrieveSpawnTimeMemoryContext as Wt, messageAgent as X, markAgentRunningState as Xn, resolveStaffing as Xt, init_messaging as Y, markAgentRunning as Yn, resolveImplicitStaffing as Yt, init_operator_interventions as Z, markAgentStoppedState as Zn, init_resolve_tier as Zt, init_linux as _, buildSpawnEnvForModel as _n, isQualifiedAgentId as _r, emergencyBrake as _t, listRunningAgentsSync as a, getRoleRuntimeBaseCommand as an, setAgentPaused as ar, saveSessionId as at, init_agents as b, getProviderExportsForModel as bn, waitForAgentIdle as br, releaseAdvancingSlot as bt, getRuntimeCensus as c, roleAgentDefinitionPath as cn, wipeAgentStateDirs as cr, init_spawn as ct, panePidsForSession as d, piFifoPaths as dn, readAgentHarnessModelRecordSync as dr, init_termination as dt, describeOhmypiSpawnFailure as en, recordAgentFailureSync as er, getActivity as et, refreshRuntimeCensus as f, init_ohmypi_fifo as fn, init_pty_token as fr, stopAgent as ft, LINUX_MEMORY_PRESSURE_DEFAULTS as g, buildCavemanExports as gn, clearReadySignal as gr, describeRunningAgents as gt, init_collector as h, init_claude_auth as hn, resolvePtySupervisorScriptPath as hr, countRunningSwarmSlotsForIssue as ht, listRunningAgents as i, getProviderAuthMode as in, saveAgentStateSync as ir, init_activity as it, supervisorAgentId as j, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as jn, paneShowsCodexAuthBurn as jr, deliverInitialPromptWithRetry as jt, shouldSupervise as k, dismissDevChannelsDialog as kn, checkCodexAuthStatus as kr, deliverAgentMessage as kt, getRuntimeCensusSnapshot as l, waitForPromptReady as ln, writeAgentStateJsonSync as lr, spawnAgent as lt, createHostHealthCollector as m, getClaudeAuthStatus as mn, init_pty_supervisor_locate as mr, countRunningAgents as mt, init_queries as n, getCodexLauncherFields as nn, resetAgentFailureCount as nr, getLatestSessionIdSync as nt, warnOnBareNumericIssueIds as o, init_runtime_command as on, setAgentPausedSync as or, createOhmypiRuntimeSync as ot, runtimeCensusHasHarnessProcess as p, ohmypiFifoPaths as pn, writePtyToken as pr, stopAgentSync as pt, isContextOverflowError as q, isAgentTroubled as qn, init_staffing as qt, listAgentStates as r, getOhmypiLauncherFields as rn, saveAgentState as rr, getSessionId as rt, descendantPidsForSession as s, injectPiConversationMemory as sn, setAgentYieldedSync as sr, init_ohmypi as st, dropLegacyAgentStatesMissingRoleAsync as t, getAgentRuntimeBaseCommand as tn, recordStartupSessionExit as tr, getLatestSessionId as tt, init_runtime_census as u, init_pi_fifo as un, init_agent_record_sync as ur, spawnRun as ut, DARWIN_MEMORY_PRESSURE_DEFAULTS as v, determineModel as vn, normalizeAgentId as vr, getConcurrencyLimits as vt, replayStandingAgent as w, getOpenAIAuthStatus as wn, init_runtime_state as wr, tryReserveSwarmSlot as wt, compactAtTierRunBoundary as x, getProviderTmuxFlags as xn, waitForReadySignal as xr, releaseSwarmSlot as xt, init_darwin as y, getProviderEnvForModel as yn, resolveAgentTargetSync as yr, init_concurrency as yt, autoRecoverAgents as z, decideResumeGate as zn, writeBridgeTokenSync as zt };
|
|
8189
8802
|
|
|
8190
|
-
//# sourceMappingURL=queries-
|
|
8803
|
+
//# sourceMappingURL=queries-6d7Cdtm7.js.map
|