@overdeck/desktop 0.49.1 → 0.49.2
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-Crw-xSJ3.js → acceptance-criteria-CHtDkHEL.js} +2 -2
- package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-Byh6sP-q.js} +2 -2
- package/server/{activity-logger-BAVLrkR7.js → activity-logger-BWZhVphb.js} +22 -4
- package/server/activity-logger-Ck8qoluj.js +3 -0
- package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-65W4yUQi.js} +6 -6
- package/server/{agent-gc-5E0lgxI1.js → agent-gc-BNUudFnt.js} +10 -10
- package/server/agent-idle-ONBssBN_.js +745 -0
- package/server/{agent-state-Bb3UUxQm.js → agent-state-BJhGIJZe.js} +421 -135
- package/server/agent-state-CM8iVw5B.js +3 -0
- package/server/{agent-state-service-BFbttwRA.js → agent-state-service-CiIuwzIs.js} +5 -5
- package/server/{agent-state-service-keg-x1bT.js → agent-state-service-CzHfoqKQ.js} +1 -1
- package/server/agents-DpCuoF65.js +3 -0
- package/server/{agents-CqQJW75N.js → agents-jXgqpHca.js} +8 -8
- package/server/archive-planning-BW4MKNI7.js +2 -0
- package/server/{archive-planning-BwEhu9Oq.js → archive-planning-CGkU6UeL.js} +20 -135
- package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Ck4NRRkY.js} +3 -3
- package/server/{assemble-DyTp2gSB.js → assemble-CyvEBmmq.js} +28 -9
- package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-Dc4mtM-B.js} +8 -7
- package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-CCEpr4YT.js} +3 -3
- package/server/{behavior-Bitko0mD.js → behavior-BiCQzqyT.js} +3 -3
- package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-Ce8rNPym.js} +2 -2
- package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-e_OEYZEe.js} +2 -2
- package/server/{build-info-DTX8JwVP.js → build-info-BRw4QlYO.js} +3 -3
- package/server/build-info-Bj2vQEMh.js +2 -0
- package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-CKr42Usw.js} +1 -1
- package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-DOwRGFff.js} +26 -9
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-DRALkfDS.js → checkpoints-Cb6CWT4S.js} +1 -1
- package/server/{checkpoints-BGfl0cHM.js → checkpoints-Cszp_0Np.js} +2 -2
- package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-C5JHpxTS.js} +1 -1
- package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-Cer2eFfj.js} +2 -2
- package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-Bc5kjX1q.js} +2 -2
- package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-C7rWsnya.js} +1 -1
- package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-m-VVZej1.js} +2 -2
- package/server/cli-BRuzUT_I.js +2 -0
- package/server/{cli-Do8UpLoI.js → cli-BmczsfD6.js} +11 -11
- package/server/{cliproxy-CX6jHRDP.js → cliproxy-BpYpkogS.js} +52 -17
- package/server/cliproxy-_yUU0HRY.js +3 -0
- package/server/{close-issue-J0_eWYT1.js → close-issue-CxvRD0UI.js} +5 -5
- package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-nMLRi5de.js} +13 -12
- package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-omOcUDBl.js} +1 -1
- package/server/{codex-icapA4om.js → codex-DZhFfcWu.js} +1 -1
- package/server/{codex-OOea7lXs.js → codex-KaSKE-R3.js} +16 -10
- package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-Bjfi70G-.js} +3 -3
- package/server/{config-Cjleh3_U.js → config-CH1AqqIQ.js} +1 -1
- package/server/{config-DC75T4Mr.js → config-Doq_tF-f.js} +2 -2
- package/server/{config-tucKBCCc.js → config-ZGjvuR6J.js} +2 -2
- package/server/{config-yaml-BwOEANMr.js → config-yaml-D9nfpEx1.js} +33 -8
- package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-D4XCtrm2.js} +1 -1
- package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-DcUTY4Gb.js} +4 -4
- package/server/{context-layers-CSPGc2Hb.js → context-layers-BBTKP-Y4.js} +3 -3
- package/server/context-layers-BGj2Y9l3.js +4 -0
- package/server/{continue-U3Af0jUq.js → continue-i7Revg8D.js} +3 -3
- package/server/{control-settings-5k6ixdFW.js → control-settings-BMoDHY1G.js} +6 -6
- package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-D4VOmF7p.js} +8 -8
- package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzIjYMfg.js} +1 -1
- package/server/{conversation-service-BxrB5lUT.js → conversation-service-CzZUJFEx.js} +1 -1
- package/server/{conversation-service-BteE4ELK.js → conversation-service-tQCIbBVZ.js} +6 -6
- package/server/{conversations-DhwxsOru.js → conversations-C75EFFjf.js} +12 -7
- package/server/conversations-bFDaD5YN.js +3 -0
- package/server/{cost-Bnf9NUC5.js → cost-BCWEkvro.js} +3 -3
- package/server/{cost-CQKI6OCu.js → cost-CiIwxH1D.js} +2 -2
- package/server/{cost-sync-B-ADeXKY.js → cost-sync-DOkdE_yB.js} +3 -3
- package/server/{dag-DI9LaK_q.js → dag-BPc74hwj.js} +6 -19
- package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-By9iguTP.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-TPYssFYt.js → deacon-B24dNzr8.js} +1774 -171
- package/server/deacon-CzSZMtb-.js +4 -0
- package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-CkvxRPck.js} +3 -3
- package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BYIQBu0T.js} +1 -1
- package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-Do6Z2gKl.js} +2 -2
- package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-CzM9JA9t.js} +1 -1
- package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BObEdT-L.js} +3 -3
- package/server/deacon.js +11 -11
- package/server/dead-end-trip-6V_CwveT.js +2 -0
- package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-CnVmjnya.js} +3 -3
- package/server/delivery-gyce0vQ7.js +3 -0
- package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-CEwwEYDM.js} +8 -8
- package/server/deploy-queue-CjLErpgw.js +2 -0
- package/server/{deploy-queue-o7shYg1j.js → deploy-queue-r96ojDI3.js} +2 -2
- package/server/{deploy-window-CNT6fOff.js → deploy-window-D_3hhfxt.js} +4 -4
- package/server/{deploy-window-BMk5_oX6.js → deploy-window-DeJK8mTK.js} +1 -1
- package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-DZWwpENk.js} +2 -2
- package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-d-9dCV_2.js} +3 -3
- package/server/{dist-CPTO_zMR.js → dist-DsLAsFSh.js} +1 -1
- package/server/dist-fCA6y2bH.js +3 -0
- package/server/{docker-B7qUZptz.js → docker-B2mUBzGk.js} +3 -3
- package/server/{docker-KR3zSFKY.js → docker-CRPHBylA.js} +1 -1
- package/server/{dod-gK835UMf.js → dod-DWtilRLx.js} +1 -1
- package/server/{done-preflight-CksRvh49.js → done-preflight-BDVdWed5.js} +1 -1
- package/server/{done-preflight-Bk8aExAL.js → done-preflight-D4ukUf-S.js} +5 -5
- package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
- package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-B3OS2_He.js} +11 -2
- package/server/durable-review-pipeline-CaCbEJSt.js +3 -0
- package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-BUeBRjmm.js} +4 -4
- package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-rGSh0JHK.js} +1 -1
- package/server/{esm-shims-1htPASWs.js → esm-shims-oAaKIa-a.js} +1 -1
- package/server/{event-store-D7qcJXuZ.js → event-store-BCSgMubf.js} +5 -5
- package/server/{event-store-BgEjNsvk.js → event-store-Db4w4YIY.js} +1 -1
- package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-DlSQND3V.js} +1 -1
- package/server/{events-BIKGJZOT.js → events-B6zioJA_.js} +3 -3
- package/server/{dist-src-BM9eudEd.js → factory-BrdqXBeK.js} +714 -2
- package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-zh3ZXW6f.js} +3 -3
- package/server/{features-CGopJXdU.js → features-BGntOWdy.js} +2 -2
- package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-DpA5u1kt.js} +2 -2
- package/server/{feedback-target-Ci6N5p4G.js → feedback-target-D7GxdUYG.js} +10 -10
- package/server/{feedback-target-CkyLYohm.js → feedback-target-Ddqk93NF.js} +1 -1
- package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-C1gCLFmp.js} +5 -5
- package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-CH2846DP.js} +1 -1
- package/server/{flywheel-C7yek87O.js → flywheel-CjW2L7BS.js} +79 -29
- package/server/{flywheel-DXI_WITn.js → flywheel-HJt7QdWP.js} +1 -1
- package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-4fNRN2F2.js} +1 -1
- package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-D_yyAlND.js} +7 -7
- package/server/{flywheel-BwYPDlhK.js → flywheel-v1cCOBx-.js} +14 -14
- package/server/{forge-DYX9sKzG.js → forge-RVTCK_5X.js} +2 -2
- package/server/forge-bvak6vXJ.js +2 -0
- package/server/{from-DAdMxC29.js → from-BnLgKYvw.js} +1 -1
- package/server/{fs-lock-cw25uO_E.js → fs-lock-C7J-ugIf.js} +2 -2
- package/server/{fts-operations-D_rzLxX5.js → fts-operations-CU0B5WUx.js} +3 -3
- package/server/git-info-BSrI9owC.js +148 -0
- package/server/{git-utils-Y0zG25ez.js → git-utils-CsKV0Dis.js} +1 -1
- package/server/{git-utils-DV4B9TRl.js → git-utils-DW8-jIUJ.js} +4 -4
- package/server/{github-app-4UX8VIr8.js → github-app-7ywLhuZO.js} +2 -2
- package/server/{github-app-C33lDk9Z.js → github-app-Oi5hdn1n.js} +1 -1
- package/server/{github-client-nPj5ckZO.js → github-client-Cy0fSj1a.js} +1 -1
- package/server/{github-client-DkJVR908.js → github-client-DAbuXLuk.js} +3 -3
- package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-Dhh3ec1V.js} +2 -2
- package/server/{harness-binary-BgXYDo2Z.js → harness-binary-tMmgJfC1.js} +2 -2
- package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-DusNpVEe.js} +4 -4
- package/server/{health-events-jMfxrElt.js → health-events-BYDZ9n2i.js} +1 -1
- package/server/{health-events-DlX_FVAB.js → health-events-DNw9Mzw9.js} +2 -2
- package/server/{hooks-W3REcb3h.js → hooks-B4wj32l2.js} +1 -1
- package/server/{hooks-NQ19vvlB.js → hooks-BjBjxqNh.js} +2 -2
- package/server/{hume-BFkid2PO.js → hume-BP9YbxaE.js} +2 -2
- package/server/hume-TYTb6fDU.js +3 -0
- package/server/{identity-Bwh6VGeL.js → identity-C23uY8dZ.js} +3 -3
- package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-BSxb1bln.js} +4 -4
- package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-Bw0rU9GC.js} +1 -1
- package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-DuxabAHT.js} +1 -1
- package/server/{infra-KTp9KV9u.js → infra-CHIvOb9q.js} +30 -7
- package/server/{injection-67YyU6SC.js → injection-BYUt8ml1.js} +8 -8
- package/server/{injection-BxbZKPDh.js → injection-BviePcm3.js} +1 -1
- package/server/inspect-agent-JFEaYTRa.js +2 -0
- package/server/{inspect-agent-VHSihlb7.js → inspect-agent-sV_19NxZ.js} +12 -12
- package/server/{internal-token-B-z-sGBH.js → internal-token-BOtIRJU7.js} +1 -1
- package/server/{internal-token-zY75jrRJ.js → internal-token-DoVzb4b7.js} +2 -2
- package/server/{io-DfvO2xyh.js → io-DKrWd3gX.js} +5 -5
- package/server/{issue-closed-dvEWKO7Q.js → issue-closed-6RQsAjDX.js} +7 -7
- package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-D9nLErvS.js} +206 -29
- package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DOPVv7xz.js} +1 -1
- package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-B2xy-IS9.js} +124 -11
- package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-CvgNAWqK.js} +1 -1
- package/server/issue-title-fallback-DTSCQVu0.js +120 -0
- package/server/{issues-CkvUoAnq.js → issues-e_Ck1Ln2.js} +2 -2
- package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-DqxVCZ1k.js} +3 -3
- package/server/jsonl-resolver-07OS3qOr.js +324 -0
- package/server/{kimi-code-C26gmGxM.js → kimi-code-BjtAHIz1.js} +14 -12
- package/server/{kimi-code-DoMoGqIu.js → kimi-code-vtXl2DR5.js} +1 -1
- package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-B1lgy2Vt.js} +2 -2
- package/server/{label-cleanup-X2lWfghH.js → label-cleanup-D2zUMasf.js} +3 -3
- package/server/{lifecycle-Bg44O-9x.js → lifecycle-0NOEzomy.js} +2 -2
- package/server/{lifecycle-B0rL38D3.js → lifecycle-DaCovZwn.js} +6 -6
- package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-6WL46dsB.js} +5 -5
- package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-BBMTaP7S.js} +1 -1
- package/server/{linear-client-B0cIkTs4.js → linear-client-7fQThJTc.js} +3 -3
- package/server/{linear-client-6V2E-DSa.js → linear-client-BTGApNLo.js} +1 -1
- package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-B8pYRsiU.js} +1 -1
- package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-Nk5s3L9M.js} +5 -5
- package/server/memory-fts-worker.js +1 -1
- package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cqvbusr4.js} +14 -14
- package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-DPb8foam.js} +5 -5
- package/server/{merge-BGWcBxku.js → merge-BB_bjJ9a.js} +1 -1
- package/server/{merge-vz80RvSE.js → merge-FZ78_cEz.js} +3 -3
- package/server/{merge-agent-GWhmnxFk.js → merge-agent-B3jRrlS1.js} +37 -33
- package/server/{merge-agent-BRSz26Oh.js → merge-agent-BuoC_PRZ.js} +2 -2
- package/server/{merge-batch-CFMEtTxv.js → merge-batch-B8bVjFWS.js} +1 -1
- package/server/{merge-completeness-CP347umA.js → merge-completeness-DQt7Qa7i.js} +4 -4
- package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-DkdabVch.js} +1 -1
- package/server/merge-ops-DabXHp2i.js +2 -0
- package/server/merge-rebase-CXq0qsgR.js +2 -0
- package/server/{merge-rebase-C5htyEEH.js → merge-rebase-qq40s91P.js} +2 -2
- package/server/{merge-set-DsGW8fmc.js → merge-set-BTNYvxM3.js} +1 -1
- package/server/{merge-set-eiE2nC6C.js → merge-set-BmRRflt0.js} +4 -4
- package/server/{merge-sync-CM2-myXu.js → merge-sync-0m2Q087q.js} +1 -1
- package/server/{merge-sync-Ct0-cxMX.js → merge-sync-CJpOa0cZ.js} +2 -2
- package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-CH5Mr3vN.js} +4 -4
- package/server/{merge-train-BOu3fN7O.js → merge-train-iwKqjtCF.js} +4 -4
- package/server/{merge-verification-BRp08IzI.js → merge-verification-JJc5GC2t.js} +6 -6
- package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-BOqWA373.js} +4 -4
- package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-CrhTdxZV.js} +1 -1
- package/server/messaging-nuwStbdQ.js +3 -0
- package/server/{multipart-parser-OAuW7824.js → multipart-parser-DxuW_rZV.js} +2 -2
- package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-xuYLFhLw.js} +1 -1
- package/server/node_modules/.package-lock.json +11 -11
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +27 -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 +10 -9
- 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/dist/NodeSocketServer.js +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
- package/server/node_modules/ansi-regex/index.js +3 -2
- package/server/node_modules/ansi-regex/package.json +1 -1
- package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/package.json +3 -3
- package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-Dmk0kO_p.js} +24 -23
- package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-gf4TxfZb.js} +2 -2
- package/server/package-lock.json +12 -12
- package/server/package.json +1 -1
- package/server/{pan-dir-DDd91kMb.js → pan-dir-BMda7tQj.js} +5 -5
- package/server/{deacon-merge-BOGFEV8_.js → parked-residue-BiHb8cD7.js} +150 -35
- package/server/{paths-CRLnDgcI.js → paths-DEe9j-kw.js} +2 -2
- package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-J5uIIJPu.js} +2 -2
- package/server/{pickup-BjJsSX12.js → pickup-D1UbSDPd.js} +1 -1
- package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-D-6okryb.js} +5 -5
- package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-CCbgBzNC.js} +1 -1
- package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-PGX3Pe8V.js} +1 -1
- package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-BK4dzh0X.js} +17 -12
- package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-BRhU7XPx.js} +1 -1
- package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-BNAV9kpa.js} +2 -2
- package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-DvHLaXKb.js} +1 -1
- package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-DAWgzXQA.js} +3 -3
- package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DC2_0t12.js} +4 -4
- package/server/prd-locations-BbAvqQmT.js +124 -0
- package/server/{project-pipelines-CCkebHOu.js → project-pipelines-By_5WcT4.js} +2 -2
- package/server/{project-repos-B4MK48j4.js → project-repos--QeCg7yQ.js} +29 -3
- package/server/project-repos-3bI6t4fO.js +3 -0
- package/server/project-resource-refresh-queue-BaZC79S3.js +2 -0
- package/server/project-resource-refresh-queue-x-K9mvpP.js +865 -0
- package/server/{projects-DvPEAP18.js → projects-LftaVK99.js} +1 -1
- package/server/{prompts-BiS5I2tZ.js → prompts-BotGu-6W.js} +2 -2
- package/server/{providers-DrfK0Ip8.js → providers-BL1I66sM.js} +7 -7
- package/server/providers-Dqgz3MY5.js +3 -0
- package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-D5Fz5jND.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-Eux0gWFq.js} +1 -1
- package/server/public/assets/{dist-D0ryefak.js → dist-C3zShwhA.js} +1 -1
- package/server/public/assets/{dist-CSmUXazd.js → dist-D-JX_u7m.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-UH3aweia.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-ccIQ-WXS.js} +1 -1
- package/server/public/assets/index-2wV4ipy_.css +1 -0
- package/server/public/assets/index-BTVcdPve.js +860 -0
- package/server/public/assets/{linear-BPE7oswm.js → linear-Cnnu4YQy.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-BD8-Tye6.js} +1 -1
- package/server/public/assets/{prod-aKDYUrXQ.js → prod-Ca6aKMts.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BmSrVyFD.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-CEGy8Das.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-VnQ8iY8s.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-BcHIsFJv.js → pull-requests-Cp_FDT8-.js} +3 -3
- package/server/pull-requests-jVGcVq5G.js +2 -0
- package/server/rally-CxhVgIQ6.js +3 -0
- package/server/{rally-api-ShZ4kvn0.js → rally-api-CqAIJ8RX.js} +2 -2
- package/server/{rally-api-u_vkr5c_.js → rally-api-Ij1Zt0NI.js} +1 -1
- package/server/{rally-B1OMtzch.js → rally-bQpBzUNf.js} +3 -3
- package/server/{rally-client-DgZvUZqX.js → rally-client-CN5vh4Ac.js} +1 -1
- package/server/{rally-client-D6Feq1Ka.js → rally-client-qKbCNRVW.js} +5 -5
- package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
- package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
- package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-BNOMVh7C.js} +7 -7
- package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-DrMyA_mA.js} +2 -2
- package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-mxIYCnqs.js} +7 -7
- package/server/{record-By-wp6pg.js → record-Ug18Cp4V.js} +1 -1
- package/server/{record-update-ByGtIlUK.js → record-update-WyhsREoH.js} +1 -1
- package/server/{record-update-D23jPU6b.js → record-update-dBGxL9OC.js} +8 -6
- package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-BKLrL6NX.js} +43 -10
- package/server/{recovery-trip-qloOYOFz.js → recovery-trip-wFAixKsg.js} +1 -1
- package/server/{release-engine-Crc0Tjx-.js → release-engine-D9gaCBn9.js} +5 -5
- package/server/{release-set-DDXwbIK7.js → release-set-DPHHzEGx.js} +3 -3
- package/server/{remote-CBpLi4Yy.js → remote-BU6ONLpv.js} +3 -3
- package/server/{remote-oEMfXlwT.js → remote-BUEeUic6.js} +3 -3
- package/server/{remote-agents-DQVGZVQ9.js → remote-agents-BVtASiOF.js} +1 -1
- package/server/{remote-agents-Bgtc2nOO.js → remote-agents-CSaTLi3u.js} +6 -6
- package/server/{remote-completion-DxUJ5HKR.js → remote-completion-CBV3b9TI.js} +13 -13
- package/server/{resolver-C8rooxoz.js → resolver-DvSMXty7.js} +31 -8
- package/server/{resolver-CuAULbLs.js → resolver-gxv97jsQ.js} +2 -2
- package/server/resume-DvHuF-bm.js +3 -0
- package/server/review-agent-DgkUPRx0.js +3 -0
- package/server/{review-agent-7C2w5CzU.js → review-agent-esZ0QXdY.js} +43 -55
- package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DGGEobLp.js} +6 -6
- package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-DmO8dIBH.js} +20 -11
- package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-Ct0q7FkE.js} +3 -3
- package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DHiiw7d8.js} +1 -1
- package/server/{review-status-CUnjjOUu.js → review-status-C_kQeeX0.js} +1 -1
- package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-BZz1Y_22.js} +3 -3
- package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-BWH0XW_m.js} +3 -3
- package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
- package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
- package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-2C9lk85r.js} +2 -2
- package/server/{review-status-sync-YthpOH_q.js → review-status-sync-Bq00Loey.js} +1 -1
- package/server/{review-status-DBnR5t4z.js → review-status-yOGD2MuK.js} +86 -27
- package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-Brjaxoda.js} +1 -1
- package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-CE_tr2iQ.js} +8 -8
- package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-CD-4kDVx.js} +1 -1
- package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Ca2V7QSY.js} +7 -7
- package/server/{rollup-DZwH4CLs.js → rollup--g9ik1XQ.js} +1 -1
- package/server/{rollup-QCwYcBdP.js → rollup-B6g9Nr6L.js} +8 -8
- package/server/{scanner-2aHeLC3W.js → scanner-YxIv-fG1.js} +8 -8
- package/server/{search-DwHYaj66.js → search-DqMN4__-.js} +2 -2
- package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
- package/server/{sequence-io-POKWdusG.js → sequence-io--b3_PsWq.js} +4 -4
- package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-CqouKVZG.js} +6 -6
- package/server/server.js +1115 -1269
- package/server/{service-BLb_CyPL.js → service-CEp-3iow.js} +64 -63
- package/server/{session-fork-DcTzVwex.js → session-fork-GtoeCh2H.js} +2 -2
- package/server/{settings-Clw8UVNs.js → settings-CLQcdkoD.js} +2 -2
- package/server/{settings-B9-H2K_E.js → settings-Ch2pCVtt.js} +3 -3
- package/server/settings-DhtPDmmI.js +2 -0
- package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BxiFrIKv.js} +3 -3
- package/server/{shadow-state-CEGrrECe.js → shadow-state-CSA1vtxr.js} +2 -2
- package/server/{shadow-state-e7250VUx.js → shadow-state-nGhCNXT2.js} +1 -1
- package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-7q5QDmMj.js} +2 -2
- package/server/{ship-log-7BnQHuKU.js → ship-log-ie0A_SqV.js} +1 -1
- package/server/{ship-record-CwUX6Afo.js → ship-record-BM3oVvnL.js} +7 -7
- package/server/{ship-record-BgUPnpT0.js → ship-record-DHWH1hLz.js} +1 -1
- package/server/{ship-status-Ce3_3edi.js → ship-status-BEkddXMT.js} +2 -2
- package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-BkzjVpWL.js} +1 -1
- package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D0TE1lBD.js} +7 -7
- package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-CkGweSCC.js} +19 -19
- package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-s406rw1N.js} +2 -2
- package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-CTAjwH5j.js} +1 -1
- package/server/{specialist-context-cHwpcXSh.js → specialist-context-CKasRfYu.js} +5 -5
- package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-DrjrOmmn.js} +2 -2
- package/server/{specialist-logs-5OTnrV91.js → specialist-logs-Du6quZ0_.js} +3 -3
- package/server/{specialists-xXcJHAyg.js → specialists-B-4zyE4Y.js} +1 -1
- package/server/{specialists-8LcQi9Np.js → specialists-CuDWiNdB.js} +21 -272
- package/server/{specialists-DocAK-7A.js → specialists-b0dMMjWq.js} +148 -685
- package/server/specialists-registry-1y6Rt_F1.js +3 -0
- package/server/specialists-registry-BYjs04iK.js +277 -0
- package/server/specialists-x-kPMhrL.js +4 -0
- package/server/specs-IYsFlM-L.js +3 -0
- package/server/{src-DudQNYVw.js → src-CY2Wl8IX.js} +337 -6
- package/server/{src-C2TAxwki.js → src-CZsPs61V.js} +6 -6
- package/server/{src-DUVvEA8Q.js → src-DeQwpuh6.js} +3 -3
- package/server/{stack-health-DKT4ySnA.js → stack-health-BQFSJc0l.js} +3 -3
- package/server/{stack-health-CbyiYS9H.js → stack-health-ypIKtkbE.js} +1 -1
- package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-C2e1zdMT.js} +5 -5
- package/server/{staleness-BjOAq9-d.js → staleness-CRDK6LFG.js} +1 -1
- package/server/{staleness-D8UTEXV5.js → staleness-Fzx_3_Hr.js} +1 -1
- package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-QNk4h9m6.js} +8 -8
- package/server/{state-home-DhAZlk5k.js → state-home-DdG8erBI.js} +2 -2
- package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
- package/server/{state-migrate-CJKEwpB0.js → state-migrate-C6H3jfHE.js} +6 -6
- package/server/{state-mirror-Do7pag7W.js → state-mirror-DF4Lfxm0.js} +3 -3
- package/server/stuck-remediation-BDa_tXgB.js +774 -0
- package/server/stuck-remediation-BVNd9txd.js +2 -0
- package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-BbbCZEtJ.js} +3 -3
- package/server/{summary-fork-CZ88rhVx.js → summary-fork-BvcW6bq0.js} +113 -30
- package/server/{summary-fork-CvB7Oyq9.js → summary-fork-DIQmtOuV.js} +2 -2
- package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
- package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
- package/server/supervisor/pty-supervisor.js +3 -3
- package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
- package/server/{supervisor-D4v0WfiQ.js → supervisor-D3jC2c7A.js} +4 -4
- package/server/supervisor-v0cYN2Vp.js +2 -0
- package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-CMWAQuWM.js} +3 -3
- package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-C-pJOPsn.js} +1 -1
- package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-DVlrLF9A.js} +2 -2
- package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-QKtIYXI2.js} +2 -2
- package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-cJea1OLo.js} +16 -16
- package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-C5DI_gWX.js} +6 -6
- package/server/{test-verdict-BWm3hgDj.js → test-verdict-C7kmd2_Y.js} +1 -1
- package/server/{test-verdict-BWtRmdiR.js → test-verdict-DUbDHqeD.js} +2 -2
- package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-BNQHwblU.js} +1 -1
- package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-CO08YlfQ.js} +2 -2
- package/server/tmux-B8zsqD_6.js +4 -0
- package/server/{tmux-BqXzRuaH.js → tmux-DWEc4Ld9.js} +91 -19
- package/server/{token-CO3INKbh.js → token-Bez-qCB2.js} +2 -2
- package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
- package/server/token-util-DfUS3Lpp.js +3 -0
- package/server/{tracker-config-DVzhaUxO.js → tracker-config-CJzPhSHv.js} +2 -2
- package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-DJAOAuMN.js} +2 -2
- package/server/{traefik-connect-A5k54mCv.js → traefik-connect-D3H5I6b9.js} +1 -1
- package/server/{tunnel-DauSR-rs.js → tunnel-BSdKnW0U.js} +1 -1
- package/server/{tunnel-CwOnS-PB.js → tunnel-Cr3ctqxp.js} +3 -3
- package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
- package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
- package/server/{types-DjpLVpsj.js → types-fzBp9cYi.js} +1 -1
- package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
- package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-IZQ-J8jt.js} +5 -5
- package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-DXApKcc2.js} +5 -5
- package/server/{uat-train-COSy-vEX.js → uat-train-CycEzpbE.js} +1 -1
- package/server/{uat-train-DVUNW03P.js → uat-train-IIZlz7r3.js} +0 -0
- package/server/{validate-Dvv83iBx.js → validate-Ur4xH5bN.js} +3 -3
- package/server/{validation-BdCjzWLN.js → validation-CHovCoTT.js} +1 -1
- package/server/{validation-DlHafKzu.js → validation-Dr6V4PXx.js} +9 -6
- package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-D3viYe_t.js} +1 -1
- package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-k5Ftpg0c.js} +1 -1
- package/server/{verification-runner-C6wdZda2.js → verification-runner-BuqGwm2t.js} +1 -1
- package/server/{verification-runner-DwP2fUEF.js → verification-runner-Dl13mmsI.js} +53 -27
- package/server/{vtt-parser-luerJpYT.js → vtt-parser-BSnAB-Og.js} +1 -1
- package/server/work-agent-prompt-CJJ4tXci.js +3 -0
- package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CioeOuM4.js} +14 -14
- package/server/{work-agent-start-BNQO65W7.js → work-agent-start-B65Gqn9N.js} +2 -2
- package/server/{work-agent-start-DkzseQFl.js → work-agent-start-Ct1HVh6z.js} +1 -1
- package/server/{workflows-BYwR2aIN.js → workflows-AgFul1xc.js} +114 -41
- package/server/workflows-CfHm8lVd.js +2 -0
- package/server/{workspace-B-QJa3Ps.js → workspace-Cu3XlMXt.js} +1 -1
- package/server/{workspace-iTnTycOB.js → workspace-Cy4sDd3q.js} +3 -3
- package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-BI0Hz6zI.js} +1 -1
- package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-CMaqvizr.js} +4 -4
- package/server/{workspace-config-D0CavVtz.js → workspace-config-DRYDO7Zr.js} +1 -1
- package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CgovxDrO.js} +17 -17
- package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-jfkKAEuO.js} +1 -1
- package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BDqXzGGK.js} +1 -1
- package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-BNzODIv6.js} +2 -2
- package/server/{workspaces-BlpbOPZ7.js → workspaces-BJdPqx_J.js} +131 -127
- package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
- package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
- package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
- package/sync-sources/rules/pan-handoff-focus-limit.md +12 -5
- package/sync-sources/rules/ste-writing.md +17 -0
- package/sync-sources/rules/work-agents-via-pan.md +2 -1
- package/sync-sources/rules/writing-style.md +3 -2
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
- package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +182 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
- package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
- package/sync-sources/skills/pan-gauntlet-loop/references/lessons.md +60 -0
- package/sync-sources/skills/pan-handoff/SKILL.md +13 -6
- package/sync-sources/skills/pan-help/SKILL.md +1 -1
- package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
- package/sync-sources/skills/pan-restart/SKILL.md +6 -3
- package/sync-sources/skills/pan-start/SKILL.md +3 -0
- package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
- package/sync-sources/skills/pan-sync/SKILL.md +1 -1
- package/server/activity-logger-BejO16Am.js +0 -3
- package/server/agent-state-DH_-Jkua.js +0 -3
- package/server/agents-megfmQHM.js +0 -3
- package/server/archive-planning-C-H9cM_J.js +0 -2
- package/server/build-info-PQlh_Rhb.js +0 -2
- package/server/cli-TaZspPHS.js +0 -2
- package/server/cliproxy-36ncAXlu.js +0 -3
- package/server/context-layers-CF6zHws4.js +0 -4
- package/server/conversations-AnGJ5rtX.js +0 -3
- package/server/deacon-BEH-IY0v.js +0 -5
- package/server/deacon-swarm-BHX-kR1b.js +0 -2
- package/server/deacon-swarm-BiLfNm_v.js +0 -1522
- package/server/dead-end-trip-BWpDg1Qd.js +0 -2
- package/server/delivery-cJM6zRjJ.js +0 -3
- package/server/deploy-queue-CmVBZEja.js +0 -2
- package/server/dist-VKBfkdi7.js +0 -3
- package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
- package/server/factory-D4V2wd_V.js +0 -717
- package/server/forge-CrP1L3i6.js +0 -2
- package/server/hume-1ubD_6O7.js +0 -3
- package/server/inspect-agent-CfxERkNt.js +0 -2
- package/server/merge-ops-DtHx17Vd.js +0 -2
- package/server/merge-rebase-BvB4UuNS.js +0 -2
- package/server/project-repos-BJiShUsN.js +0 -3
- package/server/providers-CStNGwze.js +0 -3
- package/server/public/assets/index-BFEwfmqX.js +0 -860
- package/server/public/assets/index-_USwyTAT.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
- package/server/pull-requests-C1Cqp2yo.js +0 -2
- package/server/rally-CjayjUIl.js +0 -3
- package/server/resume-D7JuMCRQ.js +0 -3
- package/server/review-agent-BUNTVJK2.js +0 -2
- package/server/settings-DBWB1gsG.js +0 -2
- package/server/specialists-D8gsOCwh.js +0 -3
- package/server/specs-BqkrRnU9.js +0 -3
- package/server/stuck-remediation-Di5JYkoo.js +0 -1164
- package/server/stuck-remediation-TNM1VhZb.js +0 -2
- package/server/supervisor-DX8VsPnb.js +0 -2
- package/server/tmux-CqNapnrr.js +0 -4
- package/server/token-util-Bu8bPF9f.js +0 -3
- package/server/workflows-Cf4LAnhg.js +0 -2
|
@@ -1,48 +1,49 @@
|
|
|
1
1
|
import { n as __esmMin, o as __toESM } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { $t as findProjectByPathSync, Bi as
|
|
3
|
-
import { h as loadConfigSync$1, p as init_config } from "./config-
|
|
4
|
-
import {
|
|
5
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
6
|
-
import { n as init_fs_lock, s as withRecordFsLock } from "./fs-lock-
|
|
7
|
-
import { i as init_record_update, n as clearRecordPipelineClosedOut } from "./record-update-
|
|
8
|
-
import { B as
|
|
9
|
-
import { a as getWorkspaceForIssue, o as init_resolver } from "./resolver-
|
|
10
|
-
import { a as init_event_store, i as initEventStore } from "./event-store-
|
|
11
|
-
import { o as OHMYPI_BEHAVIOR, s as getHarnessBehavior } from "./src-
|
|
12
|
-
import { a as readVerdictPreservationStatus, d as getOverdeckAgentStateSync, f as init_agent_state_sync, i as init_work_start_verdicts, l as resetWorkStartPipelineVerdicts, m as saveOverdeckAgentStateSync, o as refreshWorkStartReviewedAnchor, p as listOverdeckAgentStatesSync, r as registerPipelineTelemetryAgentReader, t as init_pipeline_agent_reader } from "./pipeline-agent-reader-
|
|
13
|
-
import { a as countAgentsByStatus, c as init_agents$2, g as logAgentLifecycleSync, h as init_persistent_logger } from "./agents-
|
|
14
|
-
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-
|
|
15
|
-
import { o as getPricingSync, s as init_cost } from "./cost-
|
|
16
|
-
import { t as init_behavior } from "./behavior-
|
|
17
|
-
import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-
|
|
18
|
-
import {
|
|
19
|
-
import { a as init_feature_registry_population, i as resetPostMergeState, n as init_post_merge_state, o as recordFeatureRegistryLifecycle } from "./post-merge-state-
|
|
20
|
-
import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-
|
|
21
|
-
import {
|
|
22
|
-
import { n as readActiveDashboardBundleSync, t as init_active_dashboard_bundle } from "./active-dashboard-bundle-
|
|
23
|
-
import { a as readCavemanVariant, n as init_workspace } from "./workspace-
|
|
24
|
-
import { C as generateLauncherScriptSync, D as normalizeModelOverrideSync, E as init_model_validation, O as requireModelOverrideSync, S as normalizeFlywheelRunId, _ as init_tmux_dedup, b as init_provenance, f as completeKeyedSubmit, i as init_auto_spawn_consent, k as shellQuoteModelIdSync, s as withAutoSpawnConsentClaim, w as init_launcher_generator, x as isOperatorStartedBy, y as sendKeysDedup } from "./auto-spawn-consent-
|
|
25
|
-
import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-
|
|
26
|
-
import {
|
|
27
|
-
import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-
|
|
28
|
-
import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-
|
|
29
|
-
import { a as getFlywheelActiveRunIdSync, c as init_control_settings } from "./control-settings-
|
|
30
|
-
import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-
|
|
31
|
-
import { c as init_stack_health, o as getWorkspaceStackHealth } from "./stack-health-
|
|
32
|
-
import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal, s as resolveCanonicalReviewStatus } from "./review-status-source-
|
|
33
|
-
import { N as getProjectPanPaths, P as init_paths$1, h as readWorkspacePlanSync, s as init_io } from "./io-
|
|
34
|
-
import {
|
|
35
|
-
import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-
|
|
36
|
-
import { a as init_git_utils, l as renderWorkspaceGitShowPromise } from "./git-utils-
|
|
37
|
-
import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-
|
|
38
|
-
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-
|
|
39
|
-
import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-
|
|
40
|
-
import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-
|
|
41
|
-
import { a as init_state_home, c as isStateMigrated } from "./state-home-
|
|
42
|
-
import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-
|
|
43
|
-
import {
|
|
44
|
-
import { a as
|
|
45
|
-
import {
|
|
2
|
+
import { $t as findProjectByPathSync, Bi as isDevMode, C as DEFAULT_TIERED_EXECUTION_CONFIG, Dr as init_roles, Dt as queueAutoCommit, E as init_tier_table, Et as pushPendingStateCommits, Gt as shouldCommitLegacyWorkspaceArtifacts, Hi as resolveOhmypiExtensionPath, Hr as fmix32, Ht as init_state_read_home, Ir as resolveModelIdSync, Kn as extractPrefixSync, Li as getOverdeckHome, Lr as CLIPROXY_GPT56_CONTEXT_WINDOW, Nr as hasModelCapabilitySync, O as resolveTieredExecutionEnabled, Oi as claudeSessionTranscriptExists, On as resolveProjectFromIssueSync, Or as resolveModel, Ot as reconcileStatePlaneDrift, Pr as init_model_capabilities, Ri as init_paths, Rr as CLIPROXY_GPT56_LONG_CONTEXT_WINDOW, Tt as init_auto_commit, Ui as sessionFilePath, Ur as fnv1a32, Vi as packageRoot, Wr as init_percent, Wt as resolveStateReadHomeSync, Xn as resolveBareNumericIdSync, Y as init_record, Yr as ClaudeCredentialParseError, Zr as FsError, _r as setupCredentialFileAuthSync, ai as TmuxError, an as getProjectSwarmHotspots, at as writeAgentHarnessModelSync, br as init_openai_compatible_proxy, ci as init_errors, cr as clearCredentialFileAuthSync, d as isTldrEnabledSync, dr as getProviderEnvSync, er as require_dist, et as readIssueRecordForWorkspaceSync, fn as init_projects, fr as getProviderForModelSync, gr as resolveKimiCodeModelAlias, jr as getModelCapabilitySync, k as resolveTieredExecutionEnabledForIssue, ki as encodeClaudeProjectDir, li as AGENTS_DIR, lr as getBuiltInDefaultHarness, on as getProjectSync, p as loadConfigSync, pr as init_providers, qn as init_issue_id, rn as getIssuePrefix, rt as resolveProjectForIssue, t as init_config_yaml, tt as readIssueRecordSync, u as isClaudeCodeChannelsMcpEnabled, vr as ensureOpenAICompatibleProxyRunning, w as TIERED_EXECUTION_DIFFICULTIES, wt as flushAutoCommits, zr as GPT56_LONG_CONTEXT_VARIANTS } from "./config-yaml-D9nfpEx1.js";
|
|
3
|
+
import { h as loadConfigSync$1, p as init_config } from "./config-ZGjvuR6J.js";
|
|
4
|
+
import { l as init_activity_logger, o as emitActivityEntrySync, s as emitActivityTtsSync } from "./activity-logger-BWZhVphb.js";
|
|
5
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-CHIvOb9q.js";
|
|
6
|
+
import { n as init_fs_lock, s as withRecordFsLock } from "./fs-lock-C7J-ugIf.js";
|
|
7
|
+
import { i as init_record_update, n as clearRecordPipelineClosedOut } from "./record-update-dBGxL9OC.js";
|
|
8
|
+
import { $ as init_pane_choice_menu, B as sendKeys, C as init_tmux, D as killSessionSync, E as killSession, G as setOption, H as sendRawKeystroke, P as listSessionsSync, Q as buildChoiceKeystrokes, T as isPaneDead, U as sessionExists, W as sessionExistsSync, a as capturePaneText, c as createSessionSync, ct as BLANKED_PROVIDER_ENV, dt as init_child_env, et as paneChoiceMenuSignature, i as capturePaneSync, k as listPaneValues, nt as parsePaneChoiceMenu, p as exactPaneTarget, r as capturePane, s as createSession, v as getManagedTmuxSocketName, z as sendEscapeKeyAsync } from "./tmux-DWEc4Ld9.js";
|
|
9
|
+
import { a as getWorkspaceForIssue, o as init_resolver } from "./resolver-gxv97jsQ.js";
|
|
10
|
+
import { a as init_event_store, i as initEventStore } from "./event-store-BCSgMubf.js";
|
|
11
|
+
import { o as OHMYPI_BEHAVIOR, s as getHarnessBehavior } from "./src-CY2Wl8IX.js";
|
|
12
|
+
import { a as readVerdictPreservationStatus, d as getOverdeckAgentStateSync, f as init_agent_state_sync, i as init_work_start_verdicts, l as resetWorkStartPipelineVerdicts, m as saveOverdeckAgentStateSync, o as refreshWorkStartReviewedAnchor, p as listOverdeckAgentStatesSync, r as registerPipelineTelemetryAgentReader, t as init_pipeline_agent_reader } from "./pipeline-agent-reader-D-6okryb.js";
|
|
13
|
+
import { a as countAgentsByStatus, c as init_agents$2, g as logAgentLifecycleSync, h as init_persistent_logger } from "./agents-jXgqpHca.js";
|
|
14
|
+
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-e_OEYZEe.js";
|
|
15
|
+
import { o as getPricingSync, s as init_cost } from "./cost-CiIwxH1D.js";
|
|
16
|
+
import { t as init_behavior } from "./behavior-BiCQzqyT.js";
|
|
17
|
+
import { _ as init_tier_metrics, g as estimateFeedDeliveryTokens, v as recordTierFeedDelivery } from "./cost-sync-DOkdE_yB.js";
|
|
18
|
+
import { b as init_cliproxy, c as bridgeGeminiAuthToCliproxy, h as getCliproxyClientEnv, l as decodeJwtPayload$1, p as getCliproxyAuthDir, s as bridgeCodexAuthToCliproxySync, v as getCliproxyLogPath } from "./cliproxy-BpYpkogS.js";
|
|
19
|
+
import { a as init_feature_registry_population, i as resetPostMergeState, n as init_post_merge_state, o as recordFeatureRegistryLifecycle } from "./post-merge-state-DC2_0t12.js";
|
|
20
|
+
import { i as ensureInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-DoVzb4b7.js";
|
|
21
|
+
import { A as init_conversations, B as reactivateConversationForSpawn, C as getConversationByName, b as createConversation, z as normalizeHarness } from "./conversations-C75EFFjf.js";
|
|
22
|
+
import { n as readActiveDashboardBundleSync, t as init_active_dashboard_bundle } from "./active-dashboard-bundle-Byh6sP-q.js";
|
|
23
|
+
import { a as readCavemanVariant, n as init_workspace } from "./workspace-Cy4sDd3q.js";
|
|
24
|
+
import { C as generateLauncherScriptSync, D as normalizeModelOverrideSync, E as init_model_validation, O as requireModelOverrideSync, S as normalizeFlywheelRunId, _ as init_tmux_dedup, b as init_provenance, f as completeKeyedSubmit, i as init_auto_spawn_consent, k as shellQuoteModelIdSync, s as withAutoSpawnConsentClaim, w as init_launcher_generator, x as isOperatorStartedBy, y as sendKeysDedup } from "./auto-spawn-consent-Dc4mtM-B.js";
|
|
25
|
+
import { a as init_claude_permissions, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-Bc5kjX1q.js";
|
|
26
|
+
import { D as init_layers, F as resolveWorkspaceContextFile, L as workspaceContextFile, b as renderForHarness, d as renderProjectLayer, i as workspaceContextWithoutProjectLayer, l as init_render, r as init_assemble, u as renderGlobalLayer, y as init_harness } from "./assemble-CyvEBmmq.js";
|
|
27
|
+
import { a as extractThreadIdFromRollout, c as initCodexHome, l as init_codex, o as findLatestRollout } from "./codex-KaSKE-R3.js";
|
|
28
|
+
import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-tMmgJfC1.js";
|
|
29
|
+
import { a as getFlywheelActiveRunIdSync, c as init_control_settings } from "./control-settings-BMoDHY1G.js";
|
|
30
|
+
import { n as createTrackerFromConfig, r as init_factory, t as createTracker } from "./factory-BrdqXBeK.js";
|
|
31
|
+
import { c as init_stack_health, o as getWorkspaceStackHealth } from "./stack-health-BQFSJc0l.js";
|
|
32
|
+
import { i as readReviewStatusMap, n as init_review_status_source, r as isRoleTerminal, s as resolveCanonicalReviewStatus } from "./review-status-source-Jq0BXmn3.js";
|
|
33
|
+
import { N as getProjectPanPaths, P as init_paths$1, h as readWorkspacePlanSync, s as init_io } from "./io-DKrWd3gX.js";
|
|
34
|
+
import { a as getDispatchableItems, c as init_dag, o as groupItemsByWave, r as createActiveSlice } from "./dag-BPc74hwj.js";
|
|
35
|
+
import { c as generateFixedPointPromptSync, f as initHookSync, n as checkHookSync, p as init_hooks } from "./hooks-BjBjxqNh.js";
|
|
36
|
+
import { a as init_git_utils, l as renderWorkspaceGitShowPromise } from "./git-utils-DW8-jIUJ.js";
|
|
37
|
+
import { n as init_workspace_anchor_drift, t as evaluateWorkspaceAnchorDrift } from "./workspace-anchor-drift-CMaqvizr.js";
|
|
38
|
+
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-DusNpVEe.js";
|
|
39
|
+
import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-Doq_tF-f.js";
|
|
40
|
+
import { t as init_reap_terminal_sessions } from "./reap-terminal-sessions-BaDSNR-k.js";
|
|
41
|
+
import { a as init_state_home, c as isStateMigrated } from "./state-home-DdG8erBI.js";
|
|
42
|
+
import { n as provisionClaudeHooks, t as init_claude_hooks_provision } from "./claude-hooks-provision-Cer2eFfj.js";
|
|
43
|
+
import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos } from "./project-repos--QeCg7yQ.js";
|
|
44
|
+
import { a as init_lifecycle_io, t as appendContinueSessionEntryForIssue } from "./lifecycle-io-6WL46dsB.js";
|
|
45
|
+
import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-CJzPhSHv.js";
|
|
46
|
+
import { r as init_swarm_readiness, t as analyzeSwarmReadiness } from "./swarm-readiness-CMWAQuWM.js";
|
|
46
47
|
import { createRequire } from "node:module";
|
|
47
48
|
import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
48
49
|
import { Data, Duration, Effect, FileSystem } from "effect";
|
|
@@ -2049,12 +2050,12 @@ async function claudeSystemPromptFiles(workspace, harness) {
|
|
|
2049
2050
|
}
|
|
2050
2051
|
files.push(await ensureSessionContextBriefingFile());
|
|
2051
2052
|
if (behavior.contextLayerKind === "pi") {
|
|
2052
|
-
const { piGlobalContextFile } = await import("./context-layers-
|
|
2053
|
+
const { piGlobalContextFile } = await import("./context-layers-BGj2Y9l3.js");
|
|
2053
2054
|
const globalFile = piGlobalContextFile();
|
|
2054
2055
|
if (existsSync(globalFile)) files.unshift(globalFile);
|
|
2055
2056
|
}
|
|
2056
2057
|
if (behavior.contextLayerKind === "codex") {
|
|
2057
|
-
const { codexGlobalContextFile } = await import("./context-layers-
|
|
2058
|
+
const { codexGlobalContextFile } = await import("./context-layers-BGj2Y9l3.js");
|
|
2058
2059
|
const globalFile = codexGlobalContextFile();
|
|
2059
2060
|
if (existsSync(globalFile)) files.unshift(globalFile);
|
|
2060
2061
|
}
|
|
@@ -2383,7 +2384,7 @@ async function injectPiPromptTimeMemory(agentId, prompt) {
|
|
|
2383
2384
|
agentRole: agentState.role ?? "work",
|
|
2384
2385
|
agentHarness: agentState.harness ?? "claude-code"
|
|
2385
2386
|
};
|
|
2386
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
2387
|
+
const { injectPromptTimeMemory } = await import("./injection-BviePcm3.js");
|
|
2387
2388
|
const result = await injectPromptTimeMemory({
|
|
2388
2389
|
prompt,
|
|
2389
2390
|
identity,
|
|
@@ -2417,7 +2418,7 @@ async function injectPiConversationMemory(opts, prompt) {
|
|
|
2417
2418
|
agentRole: "work",
|
|
2418
2419
|
agentHarness: "ohmypi"
|
|
2419
2420
|
};
|
|
2420
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
2421
|
+
const { injectPromptTimeMemory } = await import("./injection-BviePcm3.js");
|
|
2421
2422
|
const result = await injectPromptTimeMemory({
|
|
2422
2423
|
prompt,
|
|
2423
2424
|
identity,
|
|
@@ -2828,7 +2829,7 @@ function resolveRegisteredSlotSpawn(issueId, baseWorkspace, options) {
|
|
|
2828
2829
|
const issueLower = issueId.toLowerCase();
|
|
2829
2830
|
return {
|
|
2830
2831
|
agentId: `agent-${issueLower}-slot-${slotIndex}`,
|
|
2831
|
-
branch: `feature/${issueLower}-slot-${slotIndex}`,
|
|
2832
|
+
branch: options.slotBranch ?? `feature/${issueLower}-slot-${slotIndex}`,
|
|
2832
2833
|
workspace: `${baseWorkspace}-slot-${slotIndex}`,
|
|
2833
2834
|
slotIndex,
|
|
2834
2835
|
slotItemId
|
|
@@ -2983,7 +2984,7 @@ async function transitionIssueToInReview(issueId, workspacePath) {
|
|
|
2983
2984
|
async function buildAgentLaunchConfig(opts) {
|
|
2984
2985
|
const model = requireModelOverrideSync(opts.model);
|
|
2985
2986
|
try {
|
|
2986
|
-
const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-
|
|
2987
|
+
const { injectOverdeckInfraDeny } = await import("./claude-settings-overlay-C7rWsnya.js");
|
|
2987
2988
|
await Effect.runPromise(injectOverdeckInfraDeny(opts.workspace));
|
|
2988
2989
|
} catch (err) {
|
|
2989
2990
|
console.warn(`[agents] injectOverdeckInfraDeny failed for ${opts.agentId} (non-fatal): ${err instanceof Error ? err.message : err}`);
|
|
@@ -3076,7 +3077,7 @@ async function retrieveSpawnTimeMemoryContext(input) {
|
|
|
3076
3077
|
agentRole: input.role,
|
|
3077
3078
|
agentHarness: input.harness
|
|
3078
3079
|
};
|
|
3079
|
-
const { injectPromptTimeMemory } = await import("./injection-
|
|
3080
|
+
const { injectPromptTimeMemory } = await import("./injection-BviePcm3.js");
|
|
3080
3081
|
return (await injectPromptTimeMemory({
|
|
3081
3082
|
prompt: input.prompt,
|
|
3082
3083
|
identity,
|
|
@@ -3176,7 +3177,7 @@ async function assertWorkspaceStackHealthyForSpawn(issueId, role, allowHost = fa
|
|
|
3176
3177
|
record.attempts += 1;
|
|
3177
3178
|
spawnStackRebuildState.set(normalizedIssue, record);
|
|
3178
3179
|
console.log(`[agents] Workspace stack for ${normalizedIssue} unhealthy (${details}) — rebuilding before spawn (attempt ${record.attempts}/${SPAWN_STACK_REBUILD_MAX_ATTEMPTS})`);
|
|
3179
|
-
const { rebuildWorkspaceStack } = await import("./rebuild-stack-
|
|
3180
|
+
const { rebuildWorkspaceStack } = await import("./rebuild-stack-DrMyA_mA.js");
|
|
3180
3181
|
const result = await Effect.runPromise(rebuildWorkspaceStack(issueId, { onProgress: (m) => console.log(`[agents] ${normalizedIssue} stack rebuild: ${m}`) })).catch((err) => ({
|
|
3181
3182
|
success: false,
|
|
3182
3183
|
error: err instanceof Error ? err.message : String(err)
|
|
@@ -4615,9 +4616,12 @@ function isTerminalSwarmSlotAgent(agent, readPlan = readWorkspacePlanSync, readR
|
|
|
4615
4616
|
const slotIndex = agent.slotIndex ?? (idMatch ? Number(idMatch[1]) : void 0);
|
|
4616
4617
|
if (!slotIndex) return false;
|
|
4617
4618
|
const baseWorkspace = agent.workspace.replace(/-slot-\d+$/, "");
|
|
4618
|
-
const
|
|
4619
|
+
const record = readRecord(baseWorkspace, agent.issueId);
|
|
4620
|
+
const assignment = record?.swarm?.slotAssignments?.find((candidate) => candidate.slotIndex === slotIndex);
|
|
4619
4621
|
const itemId = agent.slotItemId ?? assignment?.itemId;
|
|
4620
4622
|
if (!itemId) return false;
|
|
4623
|
+
const canonicalStatus = record?.statusOverrides?.[itemId];
|
|
4624
|
+
if (canonicalStatus === "completed" || canonicalStatus === "cancelled") return true;
|
|
4621
4625
|
const item = (readPlan(baseWorkspace) ?? readPlan(agent.workspace))?.plan.items.find((candidate) => candidate.id === itemId);
|
|
4622
4626
|
return item?.status === "completed" || item?.status === "cancelled";
|
|
4623
4627
|
}
|
|
@@ -5548,7 +5552,7 @@ var init_runtime_census = __esmMin((() => {
|
|
|
5548
5552
|
]);
|
|
5549
5553
|
runtimeCensusService = createRuntimeCensusService({
|
|
5550
5554
|
listPanes: async () => {
|
|
5551
|
-
const { listAllPaneRecords } = await import("./tmux-
|
|
5555
|
+
const { listAllPaneRecords } = await import("./tmux-B8zsqD_6.js");
|
|
5552
5556
|
return Effect.runPromise(listAllPaneRecords());
|
|
5553
5557
|
},
|
|
5554
5558
|
readProcesses: readRuntimeProcessTable
|
|
@@ -6150,13 +6154,48 @@ function buildRegisteredSlotPrompt(issueId, baseWorkspace, slot, extraPrompt) {
|
|
|
6150
6154
|
if (trimmedExtra) lines.push("", "## Additional Foreman Instructions", trimmedExtra);
|
|
6151
6155
|
return lines.join("\n");
|
|
6152
6156
|
}
|
|
6153
|
-
async function ensureRegisteredSlotWorktree(baseWorkspace, slot) {
|
|
6154
|
-
|
|
6157
|
+
async function ensureRegisteredSlotWorktree(issueId, baseWorkspace, slot) {
|
|
6158
|
+
const repoRoots = resolveWorkspaceRepoRootsSync(issueId, baseWorkspace);
|
|
6159
|
+
const polyrepoRoots = repoRoots.filter((root) => root.isPolyrepo);
|
|
6160
|
+
if (polyrepoRoots.length > 0) {
|
|
6161
|
+
const expected = polyrepoRoots.map((root) => ({
|
|
6162
|
+
...root,
|
|
6163
|
+
target: `${slot.workspace}/${root.dir.slice(baseWorkspace.length + 1).split("/")[0]}`
|
|
6164
|
+
}));
|
|
6165
|
+
if (existsSync$1(slot.workspace)) {
|
|
6166
|
+
if (expected.filter((root) => !existsSync$1(`${root.target}/.git`)).length === 0) {
|
|
6167
|
+
if ((await Promise.all(expected.map(async (root) => {
|
|
6168
|
+
try {
|
|
6169
|
+
return (await execAsync$4("git branch --show-current", { cwd: root.target })).stdout.trim();
|
|
6170
|
+
} catch {
|
|
6171
|
+
return "";
|
|
6172
|
+
}
|
|
6173
|
+
}))).every((branch) => branch === slot.branch)) return;
|
|
6174
|
+
}
|
|
6175
|
+
throw new Error(`Registered polyrepo slot workspace is incomplete at ${slot.workspace}; run pan swarm reset before dispatching it.`);
|
|
6176
|
+
}
|
|
6177
|
+
await mkdir(slot.workspace, { recursive: true });
|
|
6178
|
+
try {
|
|
6179
|
+
for (const root of expected) await execAsync$4(await gitBranchExists(root.dir, slot.branch) ? `git worktree add ${JSON.stringify(root.target)} ${JSON.stringify(slot.branch)}` : `git worktree add -b ${JSON.stringify(slot.branch)} ${JSON.stringify(root.target)} ${JSON.stringify(root.sourceBranch)}`, { cwd: root.dir });
|
|
6180
|
+
} catch (error) {
|
|
6181
|
+
throw new Error(`Could not create isolated polyrepo slot workspace ${slot.workspace}: ${error instanceof Error ? error.message : String(error)}`);
|
|
6182
|
+
}
|
|
6183
|
+
return;
|
|
6184
|
+
}
|
|
6185
|
+
if (existsSync$1(slot.workspace)) {
|
|
6186
|
+
let branch = "";
|
|
6187
|
+
try {
|
|
6188
|
+
branch = (await execAsync$4("git branch --show-current", { cwd: slot.workspace })).stdout.trim();
|
|
6189
|
+
} catch {}
|
|
6190
|
+
if (branch === slot.branch) return;
|
|
6191
|
+
throw new Error(`Registered slot workspace is incomplete at ${slot.workspace}; run pan swarm reset before dispatching it.`);
|
|
6192
|
+
}
|
|
6155
6193
|
await mkdir(dirname(slot.workspace), { recursive: true });
|
|
6156
6194
|
const branchExists = await gitBranchExists(baseWorkspace, slot.branch);
|
|
6195
|
+
if (branchExists && !await gitRefsEqual(baseWorkspace, slot.branch, repoRoots[0].sourceBranch)) throw new Error(`Registered slot branch ${slot.branch} is not at ${repoRoots[0].sourceBranch}; refusing to reuse stale work.`);
|
|
6157
6196
|
const target = JSON.stringify(slot.workspace);
|
|
6158
6197
|
const branch = JSON.stringify(slot.branch);
|
|
6159
|
-
await execAsync$4(branchExists ? `git worktree add ${target} ${branch}` : `git worktree add -b ${branch} ${target}
|
|
6198
|
+
await execAsync$4(branchExists ? `git worktree add ${target} ${branch}` : `git worktree add -b ${branch} ${target} ${JSON.stringify(repoRoots[0].sourceBranch)}`, { cwd: baseWorkspace });
|
|
6160
6199
|
}
|
|
6161
6200
|
async function gitBranchExists(workspace, branch) {
|
|
6162
6201
|
try {
|
|
@@ -6166,10 +6205,19 @@ async function gitBranchExists(workspace, branch) {
|
|
|
6166
6205
|
return false;
|
|
6167
6206
|
}
|
|
6168
6207
|
}
|
|
6208
|
+
async function gitRefsEqual(workspace, left, right) {
|
|
6209
|
+
try {
|
|
6210
|
+
const [leftResult, rightResult] = await Promise.all([execAsync$4(`git rev-parse ${JSON.stringify(left)}`, { cwd: workspace }), execAsync$4(`git rev-parse ${JSON.stringify(right)}`, { cwd: workspace })]);
|
|
6211
|
+
return leftResult.stdout.trim() === rightResult.stdout.trim();
|
|
6212
|
+
} catch {
|
|
6213
|
+
return false;
|
|
6214
|
+
}
|
|
6215
|
+
}
|
|
6169
6216
|
var execAsync$4;
|
|
6170
6217
|
var init_registered_slot_spawn = __esmMin((() => {
|
|
6171
6218
|
init_dag();
|
|
6172
6219
|
init_io();
|
|
6220
|
+
init_project_repos();
|
|
6173
6221
|
execAsync$4 = promisify(exec);
|
|
6174
6222
|
}));
|
|
6175
6223
|
//#endregion
|
|
@@ -6208,7 +6256,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6208
6256
|
});
|
|
6209
6257
|
slotHarness = tierParams.harness ?? options.harness;
|
|
6210
6258
|
}
|
|
6211
|
-
await ensureRegisteredSlotWorktree(workspace, slot);
|
|
6259
|
+
await ensureRegisteredSlotWorktree(issueId, workspace, slot);
|
|
6212
6260
|
}
|
|
6213
6261
|
const prompt = slot ? buildRegisteredSlotPrompt(issueId, workspace, slot, options.prompt) : options.prompt;
|
|
6214
6262
|
return spawnAgentWithoutConsentClaim({
|
|
@@ -6225,7 +6273,8 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6225
6273
|
autoSpawnConsentRequired: options.autoSpawnConsentRequired,
|
|
6226
6274
|
effort: options.effort,
|
|
6227
6275
|
slotIndex: slot?.slotIndex,
|
|
6228
|
-
slotItemId: slot?.slotItemId
|
|
6276
|
+
slotItemId: slot?.slotItemId,
|
|
6277
|
+
foreman: options.foreman
|
|
6229
6278
|
}, acceptConsent);
|
|
6230
6279
|
}
|
|
6231
6280
|
const flywheelEnv = resolveFlywheelSpawnEnv(role, options.flywheelRunId);
|
|
@@ -6235,7 +6284,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6235
6284
|
let reapWarmIdle = false;
|
|
6236
6285
|
const advancing = role === "review" || role === "test" || role === "ship";
|
|
6237
6286
|
try {
|
|
6238
|
-
const { isPaneDead } = await import("./tmux-
|
|
6287
|
+
const { isPaneDead } = await import("./tmux-B8zsqD_6.js");
|
|
6239
6288
|
if (await Effect.runPromise(isPaneDead(agentId))) reapWarmIdle = true;
|
|
6240
6289
|
else if (advancing) {
|
|
6241
6290
|
const { status } = resolveCanonicalReviewStatus(issueId);
|
|
@@ -6244,7 +6293,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6244
6293
|
} catch {}
|
|
6245
6294
|
if (!reapWarmIdle) throw new Error(`Role run ${agentId} already running. Use 'pan tell' to message it.`);
|
|
6246
6295
|
console.log(`[spawn] ${agentId} is warm-idle from the previous cycle — reaping it for the new ${role} dispatch (PAN-2579)`);
|
|
6247
|
-
const { killSession } = await import("./tmux-
|
|
6296
|
+
const { killSession } = await import("./tmux-B8zsqD_6.js");
|
|
6248
6297
|
await Effect.runPromise(killSession(agentId)).catch(() => {});
|
|
6249
6298
|
}
|
|
6250
6299
|
await prepareWorkspaceForAgentSpawn(issueId, role, options.allowHost, workspace);
|
|
@@ -6259,7 +6308,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6259
6308
|
assertCodexNativeAuthForSpawn(resolvedHarness, listAgentStates());
|
|
6260
6309
|
await ensureLifecycleHooksBeforeLaunch(agentId, resolvedHarness);
|
|
6261
6310
|
if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
|
|
6262
|
-
const { isCliproxyRunning } = await import("./cliproxy-
|
|
6311
|
+
const { isCliproxyRunning } = await import("./cliproxy-_yUU0HRY.js");
|
|
6263
6312
|
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.");
|
|
6264
6313
|
}
|
|
6265
6314
|
const state = {
|
|
@@ -6268,6 +6317,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6268
6317
|
workspace,
|
|
6269
6318
|
harness: resolvedHarness,
|
|
6270
6319
|
role,
|
|
6320
|
+
foreman: options.foreman || void 0,
|
|
6271
6321
|
model: selectedModel,
|
|
6272
6322
|
modelSpawnKey,
|
|
6273
6323
|
status: "starting",
|
|
@@ -6385,7 +6435,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6385
6435
|
const claudeCmd = `bash ${launcherScript}`;
|
|
6386
6436
|
console.log(`[claude-invoke] purpose=role-run | role=${role} | model=${state.model} | source=agents.ts:spawnRun | session=${agentId} | command="${claudeCmd}"`);
|
|
6387
6437
|
try {
|
|
6388
|
-
const { preTrustDirectory } = await import("./workspace-manager-
|
|
6438
|
+
const { preTrustDirectory } = await import("./workspace-manager-jfkKAEuO.js");
|
|
6389
6439
|
preTrustDirectory(workspace);
|
|
6390
6440
|
} catch {}
|
|
6391
6441
|
clearReadySignal(agentId);
|
|
@@ -6451,7 +6501,7 @@ async function spawnRunWithoutConsentClaim(issueId, role, options, acceptConsent
|
|
|
6451
6501
|
}
|
|
6452
6502
|
markAgentRunning(state);
|
|
6453
6503
|
try {
|
|
6454
|
-
const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-
|
|
6504
|
+
const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-CsKV0Dis.js");
|
|
6455
6505
|
const headAnchor = await snapshotWorkspaceHeadsPromise(issueId, workspace);
|
|
6456
6506
|
if (headAnchor) state.roleRunHead = headAnchor;
|
|
6457
6507
|
} catch {}
|
|
@@ -6493,7 +6543,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6493
6543
|
});
|
|
6494
6544
|
console.log(`[DEBUG] Selected model: ${selectedModel}`);
|
|
6495
6545
|
if (getProviderForModelSync(selectedModel).name === "openai" && await getProviderAuthMode(selectedModel) === "subscription") {
|
|
6496
|
-
const { isCliproxyRunning } = await import("./cliproxy-
|
|
6546
|
+
const { isCliproxyRunning } = await import("./cliproxy-_yUU0HRY.js");
|
|
6497
6547
|
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.");
|
|
6498
6548
|
}
|
|
6499
6549
|
const resolvedHarness = await resolveHarness({
|
|
@@ -6513,6 +6563,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6513
6563
|
workspace: options.workspace,
|
|
6514
6564
|
harness: resolvedHarness,
|
|
6515
6565
|
role,
|
|
6566
|
+
foreman: options.foreman || void 0,
|
|
6516
6567
|
model: selectedModel,
|
|
6517
6568
|
modelSpawnKey,
|
|
6518
6569
|
status: "starting",
|
|
@@ -6542,7 +6593,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6542
6593
|
});
|
|
6543
6594
|
}
|
|
6544
6595
|
if (role === "work") try {
|
|
6545
|
-
const { writeStoryFeatureContext } = await import("./work-agent-prompt
|
|
6596
|
+
const { writeStoryFeatureContext } = await import("./work-agent-prompt-CJJ4tXci.js");
|
|
6546
6597
|
await writeStoryFeatureContext(options.workspace, options.issueId);
|
|
6547
6598
|
} catch (ctxErr) {
|
|
6548
6599
|
console.warn(`[agents] Could not write story feature context for ${options.issueId}: ${ctxErr.message}`);
|
|
@@ -6589,7 +6640,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6589
6640
|
try {
|
|
6590
6641
|
const venvPath = join$1(options.workspace, ".venv");
|
|
6591
6642
|
if (isTldrEnabledSync() && existsSync(venvPath)) {
|
|
6592
|
-
const { getTldrDaemonServiceSync } = await import("./tldr-daemon-
|
|
6643
|
+
const { getTldrDaemonServiceSync } = await import("./tldr-daemon-BNQHwblU.js");
|
|
6593
6644
|
const tldrService = getTldrDaemonServiceSync(options.workspace, venvPath);
|
|
6594
6645
|
if (!(await tldrService.getStatus()).running) {
|
|
6595
6646
|
await tldrService.start(true);
|
|
@@ -6629,13 +6680,13 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6629
6680
|
const claudeCmd = `bash ${launcherScript}`;
|
|
6630
6681
|
console.log(`[claude-invoke] purpose=work-agent | model=${state.model} | source=agents.ts:spawnAgent | session=${agentId} | command="${claudeCmd}"`);
|
|
6631
6682
|
try {
|
|
6632
|
-
const { preTrustDirectory } = await import("./workspace-manager-
|
|
6683
|
+
const { preTrustDirectory } = await import("./workspace-manager-jfkKAEuO.js");
|
|
6633
6684
|
preTrustDirectory(options.workspace);
|
|
6634
6685
|
} catch {}
|
|
6635
6686
|
try {
|
|
6636
|
-
const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-
|
|
6687
|
+
const { isGitHubAppConfigured, generateInstallationToken, configureWorkspaceForBot } = await import("./github-app-Oi5hdn1n.js");
|
|
6637
6688
|
if (isGitHubAppConfigured()) {
|
|
6638
|
-
const { findProjectByPathSync } = await import("./projects-
|
|
6689
|
+
const { findProjectByPathSync } = await import("./projects-LftaVK99.js");
|
|
6639
6690
|
const ghRepo = findProjectByPathSync(resolve$1(options.workspace, "..", ".."))?.github_repo;
|
|
6640
6691
|
if (ghRepo) {
|
|
6641
6692
|
const [owner, repo] = ghRepo.split("/");
|
|
@@ -6651,7 +6702,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6651
6702
|
const launchAndCaptureKimiSession = async () => {
|
|
6652
6703
|
let kimiExistingSessionsBefore;
|
|
6653
6704
|
if (resolvedHarness === "kimi-code") try {
|
|
6654
|
-
const { kimiSessionsRoot } = await import("./kimi-code-
|
|
6705
|
+
const { kimiSessionsRoot } = await import("./kimi-code-vtXl2DR5.js");
|
|
6655
6706
|
kimiExistingSessionsBefore = new Set(await readdir$1(kimiSessionsRoot(join$1(homedir(), ".kimi-code"), options.workspace)));
|
|
6656
6707
|
} catch {
|
|
6657
6708
|
kimiExistingSessionsBefore = /* @__PURE__ */ new Set();
|
|
@@ -6669,14 +6720,14 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6669
6720
|
...providerEnv
|
|
6670
6721
|
} }));
|
|
6671
6722
|
if (kimiExistingSessionsBefore) {
|
|
6672
|
-
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-
|
|
6723
|
+
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-vtXl2DR5.js");
|
|
6673
6724
|
const sessionId = await waitForNewKimiSessionAsync(join$1(homedir(), ".kimi-code"), options.workspace, kimiExistingSessionsBefore);
|
|
6674
6725
|
if (sessionId) writeKimiSessionId(agentId, sessionId);
|
|
6675
6726
|
else throw new Error(`kimi-code session capture timed out for ${agentId} — no new session directory appeared under the workspace bucket`);
|
|
6676
6727
|
}
|
|
6677
6728
|
};
|
|
6678
6729
|
if (resolvedHarness === "kimi-code") {
|
|
6679
|
-
const { withKimiSessionCaptureLock } = await import("./kimi-code-
|
|
6730
|
+
const { withKimiSessionCaptureLock } = await import("./kimi-code-vtXl2DR5.js");
|
|
6680
6731
|
try {
|
|
6681
6732
|
await withKimiSessionCaptureLock(join$1(homedir(), ".kimi-code"), options.workspace, launchAndCaptureKimiSession);
|
|
6682
6733
|
} catch (err) {
|
|
@@ -6739,7 +6790,7 @@ async function spawnAgentWithoutConsentClaim(options, acceptConsent) {
|
|
|
6739
6790
|
const codexHomeForAgent = join$1(homedir(), ".overdeck", "agents", agentId, "codex-home");
|
|
6740
6791
|
(async () => {
|
|
6741
6792
|
try {
|
|
6742
|
-
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-
|
|
6793
|
+
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-DZhFfcWu.js");
|
|
6743
6794
|
const rollout = await waitForCodexRollout(codexHomeForAgent, 12e4);
|
|
6744
6795
|
if (rollout) {
|
|
6745
6796
|
const threadId = extractThreadIdFromRollout(rollout);
|
|
@@ -7136,10 +7187,10 @@ var init_ohmypi = __esmMin((() => {
|
|
|
7136
7187
|
return;
|
|
7137
7188
|
}
|
|
7138
7189
|
try {
|
|
7139
|
-
await execAsync$2(`tmux -L
|
|
7190
|
+
await execAsync$2(`tmux -L ${shellQuote(getManagedTmuxSocketName())} send-keys -t ${agentId} C-c 2>/dev/null || true`);
|
|
7140
7191
|
} catch {}
|
|
7141
7192
|
try {
|
|
7142
|
-
const { stdout } = await execAsync$2(`tmux -L
|
|
7193
|
+
const { stdout } = await execAsync$2(`tmux -L ${shellQuote(getManagedTmuxSocketName())} list-panes -t ${shellQuote(agentId)} -F '#{pane_pid}' 2>/dev/null`);
|
|
7143
7194
|
const pid = stdout.trim();
|
|
7144
7195
|
if (pid) await execAsync$2(`kill -TERM -- -${pid} 2>/dev/null || kill -TERM ${pid} 2>/dev/null || true`);
|
|
7145
7196
|
} catch {}
|
|
@@ -7677,13 +7728,27 @@ var init_monitor_transport = __esmMin((() => {
|
|
|
7677
7728
|
}));
|
|
7678
7729
|
//#endregion
|
|
7679
7730
|
//#region ../../lib/agents/messaging.ts
|
|
7680
|
-
|
|
7731
|
+
/** PAN-3736 — the one phrase for "the message went to the mail file because the
|
|
7732
|
+
* agent was busy". It states that the agent is alive, and names the file, so a
|
|
7733
|
+
* reader never mistakes a mid-turn agent for a dead one. Turn-end delivery is
|
|
7734
|
+
* real for `.pending.md` mail: the codex notify hook replays the oldest pending
|
|
7735
|
+
* file at every turn boundary. The phrase still stops short of promising it,
|
|
7736
|
+
* because the hook only runs for codex sessions. */
|
|
7737
|
+
function busyAgentQueuedReason(mailPath) {
|
|
7738
|
+
return `agent is alive and mid-turn; message queued to its mail file (${mailPath})`;
|
|
7739
|
+
}
|
|
7740
|
+
/** Writes the message to the agent's durable mail dir and returns the file path
|
|
7741
|
+
* it wrote, so callers can name it in operator-facing output (PAN-3736). */
|
|
7742
|
+
function queueAgentMail(agentId, message, kind = "queued", dedupKey, source) {
|
|
7681
7743
|
const mailDir = join$1(getAgentDir(agentId), "mail");
|
|
7682
7744
|
mkdirSync(mailDir, { recursive: true });
|
|
7683
7745
|
const now = /* @__PURE__ */ new Date();
|
|
7684
|
-
const
|
|
7746
|
+
const suffix = MAIL_FILENAME_SUFFIX[kind];
|
|
7747
|
+
const filename = dedupKey !== void 0 ? `dedup-${createHash("sha256").update(dedupKey).digest("hex").slice(0, 24)}${suffix}` : `${now.toISOString().replace(/[:.]/g, "-")}${suffix}`;
|
|
7685
7748
|
const content = source ? formatMailFileContent(message, source, now) : `# Message\n\n${message}\n`;
|
|
7686
|
-
|
|
7749
|
+
const mailPath = join$1(mailDir, filename);
|
|
7750
|
+
writeFileSync(mailPath, content);
|
|
7751
|
+
return mailPath;
|
|
7687
7752
|
}
|
|
7688
7753
|
function resolveAgentDeliveryMethod(state) {
|
|
7689
7754
|
if (state?.harness === "acp") return "auto";
|
|
@@ -7727,7 +7792,7 @@ function deliverWithOptionalKey(normalizedId, message, caller, deliveryMethod, d
|
|
|
7727
7792
|
* at-most-once across the whole replay window.
|
|
7728
7793
|
*/
|
|
7729
7794
|
async function resumeThenDeliverKeyed(normalizedId, message, caller, agentState, dedupKey) {
|
|
7730
|
-
const { resumeAgent } = await import("./agents-
|
|
7795
|
+
const { resumeAgent } = await import("./agents-DpCuoF65.js");
|
|
7731
7796
|
const result = await resumeAgent(normalizedId);
|
|
7732
7797
|
if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
|
|
7733
7798
|
const delivery = await deliverAgentMessage(normalizedId, message, `messageAgent:${caller}`, resolveAgentDeliveryMethod(agentState), { dedupKey });
|
|
@@ -7758,7 +7823,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7758
7823
|
};
|
|
7759
7824
|
if (agentState?.paused === true) {
|
|
7760
7825
|
const gateBlockReason = getAgentResumeGateBlockReason(agentState)?.reason ?? "agent is paused";
|
|
7761
|
-
queueAgentMail(normalizedId, message,
|
|
7826
|
+
queueAgentMail(normalizedId, message, "queued", opts.dedupKey);
|
|
7762
7827
|
logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
|
|
7763
7828
|
console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
|
|
7764
7829
|
return {
|
|
@@ -7771,7 +7836,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7771
7836
|
const suspendedGate = decideMessageGate();
|
|
7772
7837
|
if (suspendedGate.decision !== "proceed") {
|
|
7773
7838
|
const gateBlockReason = suspendedGate.reason ?? "agent is gated";
|
|
7774
|
-
queueAgentMail(normalizedId, message,
|
|
7839
|
+
queueAgentMail(normalizedId, message, "queued", opts.dedupKey);
|
|
7775
7840
|
logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
|
|
7776
7841
|
console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
|
|
7777
7842
|
return {
|
|
@@ -7782,7 +7847,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7782
7847
|
}
|
|
7783
7848
|
console.log(`[agents] Auto-resuming suspended agent ${normalizedId} to deliver message`);
|
|
7784
7849
|
if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
|
|
7785
|
-
const { resumeAgent } = await import("./agents-
|
|
7850
|
+
const { resumeAgent } = await import("./agents-DpCuoF65.js");
|
|
7786
7851
|
const result = await resumeAgent(normalizedId, message);
|
|
7787
7852
|
if (!result.success) throw new Error(`Failed to auto-resume agent: ${result.error}`);
|
|
7788
7853
|
if (result.messageDelivered === false) throw new Error(`Agent resumed but ready signal did not fire — message not delivered. Feedback is in the mail queue.`);
|
|
@@ -7796,7 +7861,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7796
7861
|
const stoppedGate = decideMessageGate();
|
|
7797
7862
|
if (stoppedGate.decision !== "proceed") {
|
|
7798
7863
|
const gateBlockReason = stoppedGate.reason ?? "agent is gated";
|
|
7799
|
-
queueAgentMail(normalizedId, message,
|
|
7864
|
+
queueAgentMail(normalizedId, message, "queued", opts.dedupKey);
|
|
7800
7865
|
logAgentLifecycleSync(normalizedId, `messageAgent queued mail without resume: ${gateBlockReason}`);
|
|
7801
7866
|
console.log(`[agents] Queued message for ${normalizedId}; ${gateBlockReason}`);
|
|
7802
7867
|
return {
|
|
@@ -7807,9 +7872,9 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7807
7872
|
}
|
|
7808
7873
|
console.log(`[agents] Auto-resuming stopped agent ${normalizedId} to deliver feedback (session exists: ${await Effect.runPromise(sessionExists(normalizedId))})`);
|
|
7809
7874
|
if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
|
|
7810
|
-
const { resumeAgent } = await import("./agents-
|
|
7875
|
+
const { resumeAgent } = await import("./agents-DpCuoF65.js");
|
|
7811
7876
|
const resumeResult = await resumeAgent(normalizedId, message);
|
|
7812
|
-
queueAgentMail(normalizedId, message
|
|
7877
|
+
queueAgentMail(normalizedId, message);
|
|
7813
7878
|
if (resumeResult.success && resumeResult.messageDelivered !== false) {
|
|
7814
7879
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
7815
7880
|
console.log(`[agents] Resumed ${normalizedId} and delivered feedback`);
|
|
@@ -7851,7 +7916,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7851
7916
|
const resumeModel = agentState.model || "claude-sonnet-4-6";
|
|
7852
7917
|
const fallbackHarness = agentState.harness ?? "claude-code";
|
|
7853
7918
|
const harnessLaunch = await prepareHarnessLaunch(fallbackHarness);
|
|
7854
|
-
const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-
|
|
7919
|
+
const { assertWorkspaceStackHealthyForSpawn } = await import("./agents-DpCuoF65.js");
|
|
7855
7920
|
await assertWorkspaceStackHealthyForSpawn(agentState.issueId || normalizedId.replace(/^agent-/, "").toUpperCase(), resumeRole, agentState.hostOverride === true, agentState.workspace);
|
|
7856
7921
|
const fallbackPiFields = fallbackHarness === "ohmypi" ? await getOhmypiLauncherFields(normalizedId, resumeModel) : {};
|
|
7857
7922
|
const fallbackCodexFields = fallbackHarness === "codex" ? getCodexLauncherFields(normalizedId, resumeModel, agentState.workspace, resumeRole) : {};
|
|
@@ -7934,14 +7999,14 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7934
7999
|
...reason ? { reason } : {}
|
|
7935
8000
|
};
|
|
7936
8001
|
}
|
|
7937
|
-
const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-
|
|
8002
|
+
const { loadRemoteAgentState, sendToRemoteAgent } = await import("./remote-agents-BVtASiOF.js");
|
|
7938
8003
|
const remoteState = loadRemoteAgentState(normalizedId);
|
|
7939
8004
|
if (remoteState && remoteState.vmName) {
|
|
7940
8005
|
console.log(`[agents] Sending message to remote agent ${normalizedId} on ${remoteState.vmName}`);
|
|
7941
8006
|
if (opts.dedupKey !== void 0) {
|
|
7942
|
-
const { sendToRemoteAgentKeyed } = await import("./remote-agents-
|
|
8007
|
+
const { sendToRemoteAgentKeyed } = await import("./remote-agents-BVtASiOF.js");
|
|
7943
8008
|
const remoteOutcome = await sendToRemoteAgentKeyed(normalizedId, remoteState.vmName, message, opts.dedupKey);
|
|
7944
|
-
queueAgentMail(normalizedId, message,
|
|
8009
|
+
queueAgentMail(normalizedId, message, "delivered", opts.dedupKey);
|
|
7945
8010
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
7946
8011
|
return {
|
|
7947
8012
|
delivered: true,
|
|
@@ -7953,7 +8018,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7953
8018
|
};
|
|
7954
8019
|
}
|
|
7955
8020
|
await sendToRemoteAgent(normalizedId, remoteState.vmName, message);
|
|
7956
|
-
queueAgentMail(normalizedId, message,
|
|
8021
|
+
queueAgentMail(normalizedId, message, "delivered");
|
|
7957
8022
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
7958
8023
|
return {
|
|
7959
8024
|
delivered: true,
|
|
@@ -7962,7 +8027,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7962
8027
|
}
|
|
7963
8028
|
const expectedHarness = agentState?.harness ?? "claude-code";
|
|
7964
8029
|
if (expectedHarness === "claude-code" && opts.dedupKey === void 0 && isMonitorLive(normalizedId)) {
|
|
7965
|
-
queueAgentMail(normalizedId, message,
|
|
8030
|
+
queueAgentMail(normalizedId, message, "queued", opts.dedupKey, caller);
|
|
7966
8031
|
logAgentLifecycleSync(normalizedId, `messageAgent delivered via monitor mail (caller: ${caller})`);
|
|
7967
8032
|
console.log(`[agents] Delivered message to ${normalizedId} via monitor inbox`);
|
|
7968
8033
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
@@ -7978,19 +8043,19 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
7978
8043
|
} catch {}
|
|
7979
8044
|
if (appServerState && appServerState !== "closed" && appServerState !== "error") {
|
|
7980
8045
|
if (!claimCodexIdleTurn(normalizedId)) {
|
|
7981
|
-
queueAgentMail(normalizedId, message,
|
|
7982
|
-
logAgentLifecycleSync(normalizedId,
|
|
7983
|
-
console.log(`[agents]
|
|
8046
|
+
const busyReason = busyAgentQueuedReason(queueAgentMail(normalizedId, message, "pending", opts.dedupKey));
|
|
8047
|
+
logAgentLifecycleSync(normalizedId, `messageAgent: ${busyReason}`);
|
|
8048
|
+
console.log(`[agents] ${normalizedId}: ${busyReason}`);
|
|
7984
8049
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
7985
8050
|
return {
|
|
7986
8051
|
delivered: true,
|
|
7987
8052
|
queuedToMail: true,
|
|
7988
|
-
reason:
|
|
8053
|
+
reason: busyReason
|
|
7989
8054
|
};
|
|
7990
8055
|
}
|
|
7991
8056
|
const deliveryMethod = resolveAgentDeliveryMethod(agentState);
|
|
7992
8057
|
const delivery = await deliverWithOptionalKey(normalizedId, message, `messageAgent:${caller}`, deliveryMethod, opts.dedupKey);
|
|
7993
|
-
queueAgentMail(normalizedId, message,
|
|
8058
|
+
queueAgentMail(normalizedId, message, "delivered", opts.dedupKey);
|
|
7994
8059
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
7995
8060
|
return {
|
|
7996
8061
|
delivered: delivery.ok,
|
|
@@ -8003,7 +8068,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
8003
8068
|
if (panePids.length > 0 && !await hasAgentRuntimeInSubtree(panePids[0], expectedHarness)) {
|
|
8004
8069
|
console.warn(`[agents] ${normalizedId} tmux session is a zombie (no ${expectedHarness} runtime) — attempting resume`);
|
|
8005
8070
|
if (opts.dedupKey !== void 0) return resumeThenDeliverKeyed(normalizedId, message, caller, agentState, opts.dedupKey);
|
|
8006
|
-
const { resumeAgent } = await import("./agents-
|
|
8071
|
+
const { resumeAgent } = await import("./agents-DpCuoF65.js");
|
|
8007
8072
|
const resumeResult = await resumeAgent(normalizedId, message);
|
|
8008
8073
|
if (resumeResult.success) {
|
|
8009
8074
|
const delivered = resumeResult.messageDelivered !== false;
|
|
@@ -8028,7 +8093,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
8028
8093
|
};
|
|
8029
8094
|
}
|
|
8030
8095
|
const delivery = await deliverWithOptionalKey(normalizedId, message, deliveryCaller, deliveryMethod, opts.dedupKey);
|
|
8031
|
-
if (opts.dedupKey === void 0) queueAgentMail(normalizedId, message,
|
|
8096
|
+
if (opts.dedupKey === void 0) queueAgentMail(normalizedId, message, "delivered");
|
|
8032
8097
|
await appendTellInterventionForUserSource(normalizedId, caller);
|
|
8033
8098
|
if (delivery.ok && transcriptWatch && agentState?.workspace) watchForEatenAgentMessage({
|
|
8034
8099
|
agentId: normalizedId,
|
|
@@ -8053,7 +8118,7 @@ async function messageAgent(agentId, message, caller = "internal", opts = {}) {
|
|
|
8053
8118
|
async function messageAgentWithOutcome(agentId, message, caller = "internal", opts = {}) {
|
|
8054
8119
|
return (await messageAgent(agentId, message, caller, opts)).delivered ? "delivered" : "queued";
|
|
8055
8120
|
}
|
|
8056
|
-
var USER_MESSAGE_INTERVENTION_SOURCES;
|
|
8121
|
+
var MAIL_FILENAME_SUFFIX, USER_MESSAGE_INTERVENTION_SOURCES;
|
|
8057
8122
|
var init_messaging = __esmMin((() => {
|
|
8058
8123
|
init_activity_logger();
|
|
8059
8124
|
init_child_env();
|
|
@@ -8076,6 +8141,11 @@ var init_messaging = __esmMin((() => {
|
|
|
8076
8141
|
init_runtime_command();
|
|
8077
8142
|
init_supervisor_channels();
|
|
8078
8143
|
init_provider_env();
|
|
8144
|
+
MAIL_FILENAME_SUFFIX = {
|
|
8145
|
+
queued: ".md",
|
|
8146
|
+
pending: ".pending.md",
|
|
8147
|
+
delivered: ".delivered.md"
|
|
8148
|
+
};
|
|
8079
8149
|
USER_MESSAGE_INTERVENTION_SOURCES = new Set(["pan-tell", "dashboard:user-message"]);
|
|
8080
8150
|
}));
|
|
8081
8151
|
//#endregion
|
|
@@ -8217,6 +8287,155 @@ var init_resume_spawn_plan = __esmMin((() => {
|
|
|
8217
8287
|
init_session_rotation();
|
|
8218
8288
|
}));
|
|
8219
8289
|
//#endregion
|
|
8290
|
+
//#region ../../lib/session-pane-choice.ts
|
|
8291
|
+
async function captureSessionPaneChoice(sessionName, capture = capturePaneText) {
|
|
8292
|
+
let pane;
|
|
8293
|
+
try {
|
|
8294
|
+
pane = await capture(sessionName, PANE_CAPTURE_LINES);
|
|
8295
|
+
} catch {
|
|
8296
|
+
return null;
|
|
8297
|
+
}
|
|
8298
|
+
const menu = parsePaneChoiceMenu(pane);
|
|
8299
|
+
if (!menu) return null;
|
|
8300
|
+
return {
|
|
8301
|
+
signature: paneChoiceMenuSignature(menu),
|
|
8302
|
+
title: menu.title,
|
|
8303
|
+
contextLines: menu.contextLines,
|
|
8304
|
+
options: menu.options.map((option) => ({
|
|
8305
|
+
number: option.number,
|
|
8306
|
+
label: option.label,
|
|
8307
|
+
recommended: option.recommended
|
|
8308
|
+
})),
|
|
8309
|
+
selectedIndex: menu.selectedIndex,
|
|
8310
|
+
footerHint: menu.footerHint,
|
|
8311
|
+
confidence: menu.confidence
|
|
8312
|
+
};
|
|
8313
|
+
}
|
|
8314
|
+
async function answerSessionPaneChoice(sessionName, body, deps = {}) {
|
|
8315
|
+
try {
|
|
8316
|
+
const selectedIndex = Number(body.selectedIndex);
|
|
8317
|
+
const signature = typeof body.signature === "string" ? body.signature : "";
|
|
8318
|
+
if (!Number.isInteger(selectedIndex) || selectedIndex < 0 || selectedIndex > 8) return {
|
|
8319
|
+
body: { error: "selectedIndex must be an integer 0-8" },
|
|
8320
|
+
status: 400
|
|
8321
|
+
};
|
|
8322
|
+
if (!signature) return {
|
|
8323
|
+
body: { error: "signature is required" },
|
|
8324
|
+
status: 400
|
|
8325
|
+
};
|
|
8326
|
+
if (!await (deps.sessionExists ?? ((name) => Effect.runPromise(sessionExists(name))))(sessionName)) return {
|
|
8327
|
+
body: { error: "Conversation session is not running" },
|
|
8328
|
+
status: 409
|
|
8329
|
+
};
|
|
8330
|
+
const capture = deps.capture ?? capturePaneText;
|
|
8331
|
+
const sendKey = deps.sendKey ?? ((name, key) => Effect.runPromise(sendRawKeystroke(name, key, "pane-choice")));
|
|
8332
|
+
const sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
8333
|
+
const menu = parsePaneChoiceMenu(await capture(sessionName, PANE_CAPTURE_LINES));
|
|
8334
|
+
if (!menu) return {
|
|
8335
|
+
body: {
|
|
8336
|
+
error: "The choice menu is no longer on screen",
|
|
8337
|
+
code: "menu-gone"
|
|
8338
|
+
},
|
|
8339
|
+
status: 409
|
|
8340
|
+
};
|
|
8341
|
+
if (paneChoiceMenuSignature(menu) !== signature) return {
|
|
8342
|
+
body: {
|
|
8343
|
+
error: "The choice menu changed since the card was rendered — refresh and re-answer",
|
|
8344
|
+
code: "menu-changed"
|
|
8345
|
+
},
|
|
8346
|
+
status: 409
|
|
8347
|
+
};
|
|
8348
|
+
if (selectedIndex >= menu.options.length) return {
|
|
8349
|
+
body: { error: `selectedIndex out of range (0-${menu.options.length - 1})` },
|
|
8350
|
+
status: 400
|
|
8351
|
+
};
|
|
8352
|
+
const keys = buildChoiceKeystrokes(menu, selectedIndex);
|
|
8353
|
+
for (const key of keys) {
|
|
8354
|
+
await sendKey(sessionName, key);
|
|
8355
|
+
await sleep(KEYSTROKE_GAP_MS);
|
|
8356
|
+
}
|
|
8357
|
+
await sleep(DELIVERY_CONFIRM_WAIT_MS);
|
|
8358
|
+
const after = parsePaneChoiceMenu(await capture(sessionName, PANE_CAPTURE_LINES));
|
|
8359
|
+
if (after && paneChoiceMenuSignature(after) === signature) return {
|
|
8360
|
+
body: {
|
|
8361
|
+
error: "Keystrokes were sent but the menu is still on screen — answer it from the terminal",
|
|
8362
|
+
code: "delivery-unconfirmed"
|
|
8363
|
+
},
|
|
8364
|
+
status: 409
|
|
8365
|
+
};
|
|
8366
|
+
return { body: {
|
|
8367
|
+
ok: true,
|
|
8368
|
+
answeredLabel: menu.options[selectedIndex].label
|
|
8369
|
+
} };
|
|
8370
|
+
} catch (error) {
|
|
8371
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
8372
|
+
console.error("[sessions] pane-choice answer failed:", message);
|
|
8373
|
+
return {
|
|
8374
|
+
body: { error: "Internal server error" },
|
|
8375
|
+
status: 500
|
|
8376
|
+
};
|
|
8377
|
+
}
|
|
8378
|
+
}
|
|
8379
|
+
var PANE_CAPTURE_LINES, KEYSTROKE_GAP_MS, DELIVERY_CONFIRM_WAIT_MS;
|
|
8380
|
+
var init_session_pane_choice = __esmMin((() => {
|
|
8381
|
+
init_pane_choice_menu();
|
|
8382
|
+
init_tmux();
|
|
8383
|
+
PANE_CAPTURE_LINES = 90;
|
|
8384
|
+
KEYSTROKE_GAP_MS = 60;
|
|
8385
|
+
DELIVERY_CONFIRM_WAIT_MS = 700;
|
|
8386
|
+
}));
|
|
8387
|
+
//#endregion
|
|
8388
|
+
//#region ../../lib/agents/resume-pane-choice.ts
|
|
8389
|
+
/**
|
|
8390
|
+
* Cross only Claude Code's known resume-summary gate before autonomous agent
|
|
8391
|
+
* continuation delivery. Every other pane choice remains untouched.
|
|
8392
|
+
*/
|
|
8393
|
+
async function prepareAutonomousAgentResumePane(agentId, role, deps = {}) {
|
|
8394
|
+
const choice = deps.capture ? await captureSessionPaneChoice(agentId, deps.capture) : await captureSessionPaneChoice(agentId);
|
|
8395
|
+
if (!choice) return {
|
|
8396
|
+
ready: true,
|
|
8397
|
+
action: "clear"
|
|
8398
|
+
};
|
|
8399
|
+
if (!AUTONOMOUS_RESUME_ROLES.has(role)) return {
|
|
8400
|
+
ready: false,
|
|
8401
|
+
reason: `pane is blocked on a choice menu that role=${role} may not answer automatically`
|
|
8402
|
+
};
|
|
8403
|
+
const labels = choice.options.map((option) => option.label);
|
|
8404
|
+
const summaryIndex = choice.options.findIndex((option) => option.label === RESUME_SUMMARY_LABEL && option.recommended);
|
|
8405
|
+
if (!(choice.options.length === RESUME_GATE_LABELS.length && RESUME_GATE_LABELS.every((label) => labels.includes(label)) && summaryIndex >= 0)) return {
|
|
8406
|
+
ready: false,
|
|
8407
|
+
reason: "pane is blocked on a choice menu other than the Claude resume-summary gate"
|
|
8408
|
+
};
|
|
8409
|
+
const result = await answerSessionPaneChoice(agentId, {
|
|
8410
|
+
selectedIndex: summaryIndex,
|
|
8411
|
+
signature: choice.signature
|
|
8412
|
+
}, deps);
|
|
8413
|
+
if (result.body.ok === true) return {
|
|
8414
|
+
ready: true,
|
|
8415
|
+
action: "resumed-from-summary"
|
|
8416
|
+
};
|
|
8417
|
+
return {
|
|
8418
|
+
ready: false,
|
|
8419
|
+
reason: `could not select Resume from summary: ${typeof result.body.error === "string" ? result.body.error : "unknown pane-choice failure"}`
|
|
8420
|
+
};
|
|
8421
|
+
}
|
|
8422
|
+
var AUTONOMOUS_RESUME_ROLES, RESUME_SUMMARY_LABEL, RESUME_GATE_LABELS;
|
|
8423
|
+
var init_resume_pane_choice = __esmMin((() => {
|
|
8424
|
+
init_session_pane_choice();
|
|
8425
|
+
AUTONOMOUS_RESUME_ROLES = new Set([
|
|
8426
|
+
"work",
|
|
8427
|
+
"review",
|
|
8428
|
+
"test",
|
|
8429
|
+
"strike"
|
|
8430
|
+
]);
|
|
8431
|
+
RESUME_SUMMARY_LABEL = "Resume from summary";
|
|
8432
|
+
RESUME_GATE_LABELS = [
|
|
8433
|
+
RESUME_SUMMARY_LABEL,
|
|
8434
|
+
"Resume full session as-is",
|
|
8435
|
+
"Don't ask me again"
|
|
8436
|
+
];
|
|
8437
|
+
}));
|
|
8438
|
+
//#endregion
|
|
8220
8439
|
//#region ../../lib/agents/resume.ts
|
|
8221
8440
|
/**
|
|
8222
8441
|
* Resume a suspended agent (PAN-80)
|
|
@@ -8249,7 +8468,7 @@ async function buildCompactRecoverySeed(agentId) {
|
|
|
8249
8468
|
if (agentState?.workspace && sessionId) {
|
|
8250
8469
|
const sessionFile = sessionFilePath(agentState.workspace, sessionId);
|
|
8251
8470
|
try {
|
|
8252
|
-
const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-
|
|
8471
|
+
const [{ getConversationCompactionSettings }, { generateSmartSummary }] = await Promise.all([import("./conversation-compaction-DzIjYMfg.js"), import("./smart-compaction-BkzjVpWL.js")]);
|
|
8253
8472
|
const settings = getConversationCompactionSettings();
|
|
8254
8473
|
summary = (await Effect.runPromise(generateSmartSummary({
|
|
8255
8474
|
jsonlPath: sessionFile,
|
|
@@ -8260,7 +8479,7 @@ async function buildCompactRecoverySeed(agentId) {
|
|
|
8260
8479
|
} catch (err) {
|
|
8261
8480
|
logAgentLifecycleSync(normalizedId, `compact-recovery smart summary failed (${err instanceof Error ? err.message : String(err)}); trying heuristic fallback`);
|
|
8262
8481
|
try {
|
|
8263
|
-
const { generateFallbackSummary } = await import("./summary-fork-
|
|
8482
|
+
const { generateFallbackSummary } = await import("./summary-fork-DIQmtOuV.js");
|
|
8264
8483
|
summary = await Effect.runPromise(generateFallbackSummary(sessionFile));
|
|
8265
8484
|
} catch (fallbackErr) {
|
|
8266
8485
|
logAgentLifecycleSync(normalizedId, `compact-recovery fallback summary failed (${fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr)}); seeding with reseed instructions only`);
|
|
@@ -8527,23 +8746,29 @@ async function resumeAgent(agentId, message, opts) {
|
|
|
8527
8746
|
const delivery = await deliverInitialPromptWithRetry(normalizedId, effectiveMessage, "resumeAgent:compact-seed", resilientDeliveryMethod(agentState.deliveryMethod));
|
|
8528
8747
|
messageDelivered = delivery.ok;
|
|
8529
8748
|
if (!delivery.ok) console.error(`[resumeAgent] Fresh-session continue prompt did not land: ${delivery.failure ?? "unknown failure"}`);
|
|
8530
|
-
} else if (await waitForReadySignal(normalizedId, 30))
|
|
8531
|
-
const
|
|
8532
|
-
|
|
8533
|
-
|
|
8534
|
-
|
|
8535
|
-
|
|
8536
|
-
|
|
8537
|
-
|
|
8538
|
-
|
|
8539
|
-
|
|
8540
|
-
|
|
8541
|
-
|
|
8542
|
-
|
|
8543
|
-
|
|
8544
|
-
|
|
8545
|
-
|
|
8546
|
-
|
|
8749
|
+
} else if (await waitForReadySignal(normalizedId, 30)) {
|
|
8750
|
+
const panePreparation = await prepareAutonomousAgentResumePane(normalizedId, agentState.role);
|
|
8751
|
+
if (!panePreparation.ready) console.error(`[resumeAgent] Auto-continue prompt not sent: ${panePreparation.reason}`);
|
|
8752
|
+
else {
|
|
8753
|
+
if (panePreparation.action === "resumed-from-summary") logAgentLifecycleSync(normalizedId, "resumeAgent: selected Claude Resume from summary before continuation delivery");
|
|
8754
|
+
try {
|
|
8755
|
+
const delivery = await deliverResumeMessageWithTranscriptConfirmation({
|
|
8756
|
+
agentId: normalizedId,
|
|
8757
|
+
workspace: agentState.workspace,
|
|
8758
|
+
sessionId,
|
|
8759
|
+
message: effectiveMessage,
|
|
8760
|
+
caller: "resumeAgent:auto-continue",
|
|
8761
|
+
deliveryMethod: supervisorLaunch.useSupervisor ? "supervisor" : resilientDeliveryMethod(agentState.deliveryMethod)
|
|
8762
|
+
});
|
|
8763
|
+
messageDelivered = delivery.delivered;
|
|
8764
|
+
if (delivery.delivered && resumeMessage.redeliveringKickoff) markKickoffRedelivered(agentState);
|
|
8765
|
+
if (!delivery.delivered) console.error(`[resumeAgent] Auto-continue prompt did not land after ${delivery.attempts} delivery attempts`);
|
|
8766
|
+
} catch (deliveryError) {
|
|
8767
|
+
messageDelivered = false;
|
|
8768
|
+
console.error(`[resumeAgent] Auto-continue delivery threw: ${deliveryError instanceof Error ? deliveryError.message : String(deliveryError)}`);
|
|
8769
|
+
}
|
|
8770
|
+
}
|
|
8771
|
+
} else console.error("Claude SessionStart hook did not fire during resume, continue prompt not sent");
|
|
8547
8772
|
if (!messageDelivered) {
|
|
8548
8773
|
await Effect.runPromise(killSession(normalizedId)).catch(() => void 0);
|
|
8549
8774
|
const error = `Resume continue prompt did not become a confirmed turn for ${normalizedId}`;
|
|
@@ -8650,6 +8875,7 @@ var init_resume = __esmMin((() => {
|
|
|
8650
8875
|
init_identity();
|
|
8651
8876
|
init_runtime_state();
|
|
8652
8877
|
init_resume_spawn_plan();
|
|
8878
|
+
init_resume_pane_choice();
|
|
8653
8879
|
init_runtime_command();
|
|
8654
8880
|
init_supervisor_channels();
|
|
8655
8881
|
init_spawn_prep();
|
|
@@ -9561,7 +9787,7 @@ async function restartAgent(agentId, opts = {}, deps = {}) {
|
|
|
9561
9787
|
unlinkSync(join$1(getAgentDir(normalizedId), "kimi-session-id"));
|
|
9562
9788
|
} catch {}
|
|
9563
9789
|
try {
|
|
9564
|
-
const { kimiSessionsRoot } = await import("./kimi-code-
|
|
9790
|
+
const { kimiSessionsRoot } = await import("./kimi-code-vtXl2DR5.js");
|
|
9565
9791
|
kimiExistingSessionsBefore = new Set(await readdir$1(kimiSessionsRoot(join$1(homedir(), ".kimi-code"), agentState.workspace)));
|
|
9566
9792
|
} catch {
|
|
9567
9793
|
kimiExistingSessionsBefore = /* @__PURE__ */ new Set();
|
|
@@ -9578,14 +9804,14 @@ async function restartAgent(agentId, opts = {}, deps = {}) {
|
|
|
9578
9804
|
...providerEnv
|
|
9579
9805
|
} }));
|
|
9580
9806
|
if (kimiExistingSessionsBefore) {
|
|
9581
|
-
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-
|
|
9807
|
+
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-vtXl2DR5.js");
|
|
9582
9808
|
const sessionId = await waitForNewKimiSessionAsync(join$1(homedir(), ".kimi-code"), agentState.workspace, kimiExistingSessionsBefore);
|
|
9583
9809
|
if (!sessionId) throw new Error(`kimi-code session capture timed out after fresh relaunch for ${normalizedId} — no new session directory appeared under the workspace bucket`);
|
|
9584
9810
|
writeKimiSessionId(normalizedId, sessionId);
|
|
9585
9811
|
}
|
|
9586
9812
|
};
|
|
9587
9813
|
if (effectiveHarness === "kimi-code") {
|
|
9588
|
-
const { withKimiSessionCaptureLock } = await import("./kimi-code-
|
|
9814
|
+
const { withKimiSessionCaptureLock } = await import("./kimi-code-vtXl2DR5.js");
|
|
9589
9815
|
await withKimiSessionCaptureLock(join$1(homedir(), ".kimi-code"), agentState.workspace, launchAndCaptureKimiSession);
|
|
9590
9816
|
} else await launchAndCaptureKimiSession();
|
|
9591
9817
|
const prompt = message || buildResumeContinueMessage(agentState);
|
|
@@ -9815,7 +10041,7 @@ async function recoverAgent(agentId, opts = {}) {
|
|
|
9815
10041
|
const launchAndCaptureKimiSession = async () => {
|
|
9816
10042
|
let kimiExistingSessionsBefore;
|
|
9817
10043
|
if (!resumeSessionId) try {
|
|
9818
|
-
const { kimiSessionsRoot } = await import("./kimi-code-
|
|
10044
|
+
const { kimiSessionsRoot } = await import("./kimi-code-vtXl2DR5.js");
|
|
9819
10045
|
kimiExistingSessionsBefore = new Set(await readdir$1(kimiSessionsRoot(join$1(homedir(), ".kimi-code"), state.workspace)));
|
|
9820
10046
|
} catch {
|
|
9821
10047
|
kimiExistingSessionsBefore = /* @__PURE__ */ new Set();
|
|
@@ -9829,13 +10055,13 @@ async function recoverAgent(agentId, opts = {}) {
|
|
|
9829
10055
|
...kimiProviderEnv
|
|
9830
10056
|
} }));
|
|
9831
10057
|
if (kimiExistingSessionsBefore) {
|
|
9832
|
-
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-
|
|
10058
|
+
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-vtXl2DR5.js");
|
|
9833
10059
|
const sessionId = await waitForNewKimiSessionAsync(join$1(homedir(), ".kimi-code"), state.workspace, kimiExistingSessionsBefore);
|
|
9834
10060
|
if (sessionId) writeKimiSessionId(normalizedId, sessionId);
|
|
9835
10061
|
else throw new Error(`kimi-code session capture timed out after fresh relaunch for ${normalizedId} — no new session directory appeared under the workspace bucket`);
|
|
9836
10062
|
}
|
|
9837
10063
|
};
|
|
9838
|
-
const { withKimiSessionCaptureLock } = await import("./kimi-code-
|
|
10064
|
+
const { withKimiSessionCaptureLock } = await import("./kimi-code-vtXl2DR5.js");
|
|
9839
10065
|
try {
|
|
9840
10066
|
await withKimiSessionCaptureLock(join$1(homedir(), ".kimi-code"), state.workspace, launchAndCaptureKimiSession);
|
|
9841
10067
|
} catch (err) {
|
|
@@ -9980,17 +10206,20 @@ async function reconcileSlotState(issueId, workspace, doc, options = {}) {
|
|
|
9980
10206
|
listBranches: listSlotBranches,
|
|
9981
10207
|
listAgents: listSlotAgents,
|
|
9982
10208
|
listSlotAssignments,
|
|
10209
|
+
listSlotCompletions,
|
|
9983
10210
|
...options.deps
|
|
9984
10211
|
};
|
|
9985
10212
|
const branches = await deps.listBranches(issueId, workspace);
|
|
9986
10213
|
const agents = deps.listAgents(issueId);
|
|
9987
10214
|
const assignments = deps.listSlotAssignments(issueId, workspace);
|
|
10215
|
+
const completions = deps.listSlotCompletions(issueId, workspace);
|
|
10216
|
+
const releasedSlotIndexes = new Set(Object.keys(readIssueRecordForWorkspaceSync(workspace, issueId.toUpperCase())?.swarm?.releasedBlockedSlots ?? {}).map(Number));
|
|
9988
10217
|
const branchesBySlot = new Map(branches.map((branch) => [branch.slotIndex, branch]));
|
|
9989
10218
|
const agentsBySlot = new Map(agents.map((agent) => [agent.slotIndex, agent]));
|
|
9990
10219
|
const hotspots = getProjectSwarmHotspots(findProjectByPathSync(workspace));
|
|
9991
10220
|
const slotEligibleItemIds = new Set(analyzeSwarmReadiness(doc, { hotspots }).items.filter((item) => item.slotEligible).map((item) => item.id));
|
|
9992
10221
|
const itemStatuses = new Map(doc.plan.items.map((item) => [item.id, item.status]));
|
|
9993
|
-
const slotItems = resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents);
|
|
10222
|
+
const slotItems = resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents, releasedSlotIndexes);
|
|
9994
10223
|
const result = {
|
|
9995
10224
|
issueId,
|
|
9996
10225
|
merged: [],
|
|
@@ -10004,13 +10233,14 @@ async function reconcileSlotState(issueId, workspace, doc, options = {}) {
|
|
|
10004
10233
|
const branch = branchesBySlot.get(slotItem.slotIndex);
|
|
10005
10234
|
const agent = agentsBySlot.get(slotItem.slotIndex);
|
|
10006
10235
|
const completed = options.statusOverrides?.[slotItem.itemId] === "completed" || itemStatuses.get(slotItem.itemId) === "completed";
|
|
10007
|
-
const
|
|
10236
|
+
const awaitingMerge = completions[String(slotItem.slotIndex)]?.itemId === slotItem.itemId;
|
|
10237
|
+
const merged = completed && !awaitingMerge;
|
|
10008
10238
|
const entry = {
|
|
10009
10239
|
...slotItem,
|
|
10010
10240
|
status: merged ? "merged" : agent || branch ? "in_flight" : "pending",
|
|
10011
10241
|
branch: branch?.branch,
|
|
10012
10242
|
agentId: agent?.agentId,
|
|
10013
|
-
...merged ? { mergedVia:
|
|
10243
|
+
...merged ? { mergedVia: "completed-status" } : {}
|
|
10014
10244
|
};
|
|
10015
10245
|
if (entry.status === "merged") result.merged.push(entry);
|
|
10016
10246
|
else if (entry.status === "in_flight") result.inFlight.push(entry);
|
|
@@ -10053,6 +10283,9 @@ function listSlotAssignments(issueId, workspace) {
|
|
|
10053
10283
|
branch: assignment.branch
|
|
10054
10284
|
})).sort((a, b) => a.slotIndex - b.slotIndex);
|
|
10055
10285
|
}
|
|
10286
|
+
function listSlotCompletions(issueId, workspace) {
|
|
10287
|
+
return readIssueRecordForWorkspaceSync(workspace, issueId.toUpperCase())?.swarm?.slotCompletions ?? {};
|
|
10288
|
+
}
|
|
10056
10289
|
function listSlotOwnership(issueId, workspace) {
|
|
10057
10290
|
const byItemId = /* @__PURE__ */ new Map();
|
|
10058
10291
|
for (const assignment of listSlotAssignments(issueId, workspace)) byItemId.set(assignment.itemId, assignment);
|
|
@@ -10070,13 +10303,14 @@ async function gitBranchNames(workspace, pattern, merged) {
|
|
|
10070
10303
|
const { stdout } = await execAsync(`git branch ${merged ? "--merged HEAD " : ""}--list ${JSON.stringify(pattern)}`, { cwd: workspace });
|
|
10071
10304
|
return stdout.split("\n").map((line) => line.replace(/^[*+\s]+/, "").trim()).filter(Boolean);
|
|
10072
10305
|
}
|
|
10073
|
-
function resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents) {
|
|
10306
|
+
function resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents, releasedSlotIndexes) {
|
|
10074
10307
|
const ownership = /* @__PURE__ */ new Map();
|
|
10075
10308
|
for (const assignment of assignments) {
|
|
10076
10309
|
if (!slotEligibleItemIds.has(assignment.itemId)) continue;
|
|
10077
10310
|
ownership.set(assignment.itemId, assignment.slotIndex);
|
|
10078
10311
|
}
|
|
10079
10312
|
for (const agent of agents) {
|
|
10313
|
+
if (agent.status === "stopped" && releasedSlotIndexes.has(agent.slotIndex)) continue;
|
|
10080
10314
|
if (!agent.slotItemId || !slotEligibleItemIds.has(agent.slotItemId) || ownership.has(agent.slotItemId)) continue;
|
|
10081
10315
|
ownership.set(agent.slotItemId, agent.slotIndex);
|
|
10082
10316
|
}
|
|
@@ -10086,7 +10320,7 @@ function resolveSlotItemOwnership(slotEligibleItemIds, assignments, agents) {
|
|
|
10086
10320
|
})).sort((a, b) => a.slotIndex - b.slotIndex);
|
|
10087
10321
|
}
|
|
10088
10322
|
function slotIndexFromBranch(issueLower, branch) {
|
|
10089
|
-
const match = new RegExp(`^feature/${escapeRegExp(issueLower)}-slot-(\\d+)
|
|
10323
|
+
const match = new RegExp(`^feature/${escapeRegExp(issueLower)}-slot-(\\d+)(?:-attempt-\\d+)?$`).exec(branch);
|
|
10090
10324
|
if (!match) return null;
|
|
10091
10325
|
return Number(match[1]);
|
|
10092
10326
|
}
|
|
@@ -10432,8 +10666,8 @@ async function spawnTierSupervisor(issueId, supervisor, options = {}) {
|
|
|
10432
10666
|
function buildSupervisorPrompt(issueId, subscribe) {
|
|
10433
10667
|
const policyLine = {
|
|
10434
10668
|
all: "You are subscribed to EVERY commit in this issue.",
|
|
10435
|
-
flagged: "You are subscribed only to commits for
|
|
10436
|
-
sampled: "You are subscribed to a deterministic sample of the
|
|
10669
|
+
flagged: "You are subscribed only to commits for items flagged requiresInspection=true.",
|
|
10670
|
+
sampled: "You are subscribed to a deterministic sample of the items in this issue."
|
|
10437
10671
|
}[subscribe];
|
|
10438
10672
|
return [
|
|
10439
10673
|
`# Standing Supervisor: ${issueId}`,
|
|
@@ -11283,7 +11517,11 @@ function recordAgentActivitySync(agentId, activity) {
|
|
|
11283
11517
|
if (!state) return false;
|
|
11284
11518
|
state.lastActivity = activity.at ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
11285
11519
|
if (activity.costSoFar !== void 0 && Number.isFinite(activity.costSoFar)) state.costSoFar = activity.costSoFar;
|
|
11286
|
-
|
|
11520
|
+
try {
|
|
11521
|
+
saveOverdeckAgentStateSync(state);
|
|
11522
|
+
} catch (err) {
|
|
11523
|
+
console.warn(`[agents] activity DB write failed for ${agentId} (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
11524
|
+
}
|
|
11287
11525
|
writeAgentStateJsonSync(state);
|
|
11288
11526
|
return true;
|
|
11289
11527
|
}
|
|
@@ -11404,6 +11642,54 @@ function clearAgentTroubledSync(agentId) {
|
|
|
11404
11642
|
saveAgentStateSync(state);
|
|
11405
11643
|
return true;
|
|
11406
11644
|
}
|
|
11645
|
+
/**
|
|
11646
|
+
* Clear operator-gate residue (stoppedByUser, paused, troubled) on STOPPED
|
|
11647
|
+
* agent rows whose issueId is in `issueIds` — used by close-out and the
|
|
11648
|
+
* terminal-issue residue patrol so a terminal issue's preserved agent rows
|
|
11649
|
+
* stop reappearing in the operator-gate parked orbit (PAN-3727). Running/
|
|
11650
|
+
* starting agents and scheduler yields are never touched: a yield is a live
|
|
11651
|
+
* scheduling decision, not operator residue, and a live agent's gates are not
|
|
11652
|
+
* this issue's to clear.
|
|
11653
|
+
*
|
|
11654
|
+
* Batched (one `listOverdeckAgentStatesSync()` scan for every issueId in the
|
|
11655
|
+
* set) so the recurring residue patrol does not perform one full agent-table
|
|
11656
|
+
* scan per terminal issue (review finding, PAN-3727) — cost scales with the
|
|
11657
|
+
* agent table once per patrol run, not with the number of terminal issues.
|
|
11658
|
+
*/
|
|
11659
|
+
function clearAgentOperatorGatesForIssuesSync(issueIds) {
|
|
11660
|
+
const mutated = /* @__PURE__ */ new Map();
|
|
11661
|
+
if (issueIds.size === 0) return mutated;
|
|
11662
|
+
for (const state of listOverdeckAgentStatesSync()) {
|
|
11663
|
+
if (state.status !== "stopped") continue;
|
|
11664
|
+
const normalized = state.issueId?.toUpperCase();
|
|
11665
|
+
if (!normalized || !issueIds.has(normalized)) continue;
|
|
11666
|
+
let changed = false;
|
|
11667
|
+
if (state.stoppedByUser) {
|
|
11668
|
+
delete state.stoppedByUser;
|
|
11669
|
+
changed = true;
|
|
11670
|
+
}
|
|
11671
|
+
if (state.paused === true && state.yieldedByScheduler !== true) {
|
|
11672
|
+
applyAgentUnpaused(state);
|
|
11673
|
+
changed = true;
|
|
11674
|
+
}
|
|
11675
|
+
if (state.troubled === true) {
|
|
11676
|
+
applyAgentUntroubled(state);
|
|
11677
|
+
changed = true;
|
|
11678
|
+
}
|
|
11679
|
+
if (changed) {
|
|
11680
|
+
saveAgentStateSync(state);
|
|
11681
|
+
const ids = mutated.get(normalized) ?? [];
|
|
11682
|
+
ids.push(state.id);
|
|
11683
|
+
mutated.set(normalized, ids);
|
|
11684
|
+
}
|
|
11685
|
+
}
|
|
11686
|
+
return mutated;
|
|
11687
|
+
}
|
|
11688
|
+
/** Single-issue convenience wrapper over {@link clearAgentOperatorGatesForIssuesSync}. */
|
|
11689
|
+
function clearAgentOperatorGatesForIssueSync(issueId) {
|
|
11690
|
+
const normalized = issueId.toUpperCase();
|
|
11691
|
+
return clearAgentOperatorGatesForIssuesSync(new Set([normalized])).get(normalized) ?? [];
|
|
11692
|
+
}
|
|
11407
11693
|
function applyAgentFailure(state, reason) {
|
|
11408
11694
|
const config = resolveAutoResumeConfigForIssue(state.issueId);
|
|
11409
11695
|
const nowMs = Date.now();
|
|
@@ -11699,6 +11985,6 @@ var init_agent_state = __esmMin((() => {
|
|
|
11699
11985
|
};
|
|
11700
11986
|
}));
|
|
11701
11987
|
//#endregion
|
|
11702
|
-
export {
|
|
11988
|
+
export { deliverCommitForReview as $, isTerminalSwarmSlotAgent as $n, piFifoPaths as $r, init_activity as $t, saveAgentStateSync as A, getAgentRuntimeSnapshot as Ai, init_runtime_census as An, transitionIssueToInReview as Ar, init_agent_input_detection as At, resolveAgentTargetSync as B, markAgentStateServiceInProcess as Bi, countRunningAgents as Bn, getAgentRuntimeBaseCommand as Br, isContextOverflowError as Bt, markAgentTroubled as C, writeChannelsBridgeMcpConfig as Ci, init_state_dir_removal as Cn, paneShowsCodexAuthBurn as Cr, getAgentWorkspace as Ct, recordStartupSessionExit as D, writePtyToken as Di, descendantPidsForSession as Dn, init_spawn_prep as Dr, scanPendingInputsPromise as Dt, recordAgentFailureSync as E, init_pty_token as Ei, removeAgentStateDir as En, defaultRunWorkspace as Er, isInteractiveRoleAgent as Et, writeAgentStateJsonSync as F, init_agents$1 as Fi, init_collector as Fn, init_resolve_tier as Fr, resumeAgent as Ft, init_runtime_state as G, init_concurrency as Gn, getRoleRuntimeBaseCommand as Gr, resolveAgentDeliveryMethod as Gt, waitForReadySignal as H, init_ohmypi_parser as Hi, describeRunningAgents as Hn, getKimiCodeLauncherFields as Hr, init_messaging as Ht, isRole as I, init_agent_record_sync as Ii, LINUX_MEMORY_PRESSURE_DEFAULTS as In, resolveTier as Ir, answerSessionPaneChoice as It, compactAtTierRunBoundary as J, resetPatrolDispatchBudget as Jn, injectPiConversationMemory as Jr, appendActivity as Jt, saveAgentRuntimeState as K, releaseAdvancingSlot as Kn, hasAgentRuntimeInSubtree as Kr, init_operator_interventions as Kt, clearReadySignal as L, readAgentHarnessModelRecordSync as Li, init_linux as Ln, OHMYPI_AGENT_READY_TIMEOUT_SECONDS as Lr, captureSessionPaneChoice as Lt, setAgentPausedSync as M, appendAgentPlaneLifecycle as Mi, refreshRuntimeCensus as Mn, resolveImplicitStaffing as Mr, parseCodexApprovalPrompt as Mt, setAgentYieldedSync as N, appendAgentPlaneSession as Ni, runtimeCensusHasHarnessProcess as Nn, resolveIssueWorkModel as Nr, buildCompactRecoverySeed as Nt, resetAgentFailureCount as O, init_pty_supervisor_locate as Oi, getRuntimeCensus as On, retrieveSpawnTimeMemoryContext as Or, detectAwaitingInputForAgent as Ot, wipeAgentStateDirs as P, flushAgentPlaneWrites as Pi, createHostHealthCollector as Pn, resolveStaffing as Pr, init_resume as Pt, shouldReplayCompactAtTierRunBoundary as Q, init_swarm_slot_lifecycle as Qn, init_pi_fifo as Qr, getSessionId as Qt, isQualifiedAgentId as R, getRuntimeSnapshot as Ri, DARWIN_MEMORY_PRESSURE_DEFAULTS as Rn, describeOhmypiSpawnFailure as Rr, init_session_pane_choice as Rt, markAgentStoppedState as S, init_supervisor_channels as Si, hasRetainedTranscriptsMarker as Sn, isCodexAuthRouted as Sr, getAgentPendingQuestions as St, recordAgentFailure as T, init_resume_contract as Ti, markRetainedTranscripts as Tn, buildAgentLaunchConfig as Tr, isBlockedOnPendingInput as Tt, getAgentRuntimeState as U, parseOhmypiSessionCostResultSync as Ui, emergencyBrake as Un, getOhmypiLauncherFields as Ur, messageAgent as Ut, waitForAgentIdle as V, setAgentRuntimeMirror as Vi, countRunningSwarmSlotsForIssue as Vn, getCodexLauncherFields as Vr, isContextOverflowTail as Vt, getAgentRuntimeStateSync as W, getConcurrencyLimits as Wn, getProviderAuthMode as Wr, messageAgentWithOutcome as Wt, replayCrashedStandingAgent as X, tryReserveSwarmSlot as Xn, waitForAcpHostReady as Xr, getLatestSessionId as Xt, contextWindowForModel as Y, tryReserveAdvancingSlot as Yn, roleAgentDefinitionPath as Yr, getActivity as Yt, replayStandingAgent as Z, workResumeSlotsAvailable as Zn, waitForPromptReady as Zr, getLatestSessionIdSync as Zt, init_agent_state as _, buildResumeContinueMessage as _i, listAgentStates as _n, init_bridge_token as _r, init_pending_decision_gate as _t, clearAgentOperatorGatesForIssuesSync as a, init_claude_auth as ai, init_spawn as an, deliverAgentMessage as ar, broadcastCommit as at, markAgentRunning as b, dismissDevChannelsDialog as bi, warnOnBareNumericIssueIds as bn, checkCodexAuthStatus as br, getAgentJsonlMtime as bt, clearAgentTroubled as c, determineModel as ci, ensureRegisteredSlotWorktree as cn, deliverResumeMessageWithTranscriptConfirmation as cr, init_tier_escalation as ct, decideResumeGate as d, getProviderTmuxFlags as di, init_session_history as dn, resilientDeliveryMethod as dr, reconcileSlotState as dt, init_ohmypi_fifo as ei, resolveLatestSessionIdSync as en, getCachedMemoryVerdict as er, init_tier_supervisor as et, getAgentDir as f, init_provider_health as fi, init_termination as fn, setAgentDeliveryMethod as fr, autoRecoverAgents as ft, getAgentStateSync as g, buildDefaultResumeContinueMessage as gi, init_queries as gn, BRIDGE_TOKEN_HEADER as gr, detectPendingOperatorDecision as gt, getAgentStateFilePath as h, init_openai_auth as hi, dropLegacyAgentStatesMissingRoleAsync as hn, probeTranscriptSince as hr, restartAgent as ht, clearAgentOperatorGatesForIssueSync as i, getClaudeAuthStatus as ii, init_ohmypi as in, SocketPostStatusError as ir, supervisorAgentId as it, setAgentPaused as j, init_agent_runtime as ji, panePidsForSession as jn, init_staffing as jr, normalizeAwaitingInputPrompt as jt, saveAgentState as k, resolvePtySupervisorScriptPath as ki, getRuntimeCensusSnapshot as kn, transitionIssueToInProgress as kr, detectAwaitingInputFromPaneSync as kt, clearAgentTroubledSync as l, getProviderEnvForModel as li, init_registered_slot_spawn as ln, init_delivery as lr, init_slot_reconcile as lt, getAgentState as m, getOpenAIAuthStatus as mi, stopAgentSync as mn, init_transcript_landing as mr, recoverAgent as mt, SESSION_EXITED_BEFORE_KICKOFF as n, init_context as ni, init_event_reads as nn, setCachedMemoryVerdict as nr, shouldSupervise as nt, clearAgentPaused as o, buildCavemanExports as oi, spawnAgent as on, deliverAgentPermissionDecision as or, init_tier_feed as ot, getAgentResumeGateBlockReason as p, validateProviderHealth as pi, stopAgent as pn, captureTranscriptUserRecordSnapshot as pr, detectCrashedAgents as pt, init_agents as q, releaseSwarmSlot as qn, init_runtime_command as qr, operatorInterventionEvent as qt, __testInternals as r, materializeAcpContextFile as ri, createOhmypiRuntimeSync as rn, AmbiguousKeyedDeliveryError as rr, spawnTierSupervisor as rt, clearAgentPausedSync as s, buildSpawnEnvForModel as si, spawnRun as sn, deliverInitialPromptWithRetry as sr, decideEscalation as st, GOVERNOR_SLOT_PAUSE_REASON_PREFIX as t, ohmypiFifoPaths as ti, saveSessionId as tn, init_memory_verdict_cache as tr, loadPrdDraft as tt, clearYieldForResumeSync as u, getProviderExportsForModel as ui, appendSessionIdToHistory as un, keyedSupervisorFailureKind as ur, listSlotAssignments as ut, isAgentPaused as v, decideChannelsForWorkAgent as vi, listRunningAgents as vn, writeBridgeTokenSync as vr, computeAgentEnrichment as vt, recordAgentActivitySync as w, buildResumeContract as wi, listAgentStateFilesForRemoval as wn, assertWorkspaceStackHealthyForSpawn as wr, init_agent_enrichment as wt, markAgentRunningState as x, hasCompletionMarkerForAgent as xi, RETAINED_TRANSCRIPTS_MARKER as xn, init_codex_auth as xr, getAgentJsonlPath as xt, isAgentTroubled as y, decideSupervisorForWorkAgent as yi, listRunningAgentsSync as yn, applyCodexAuthBurnFlag as yr, countPendingAskUserQuestionsForAgent as yt, normalizeAgentId as z, init_agent_runtime_mirror as zi, init_darwin as zn, getAcpLauncherFields as zr, init_context_overflow as zt };
|
|
11703
11989
|
|
|
11704
|
-
//# sourceMappingURL=agent-state-
|
|
11990
|
+
//# sourceMappingURL=agent-state-BJhGIJZe.js.map
|