@overdeck/desktop 0.49.2 → 0.50.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-CHtDkHEL.js → acceptance-criteria-DFyrgxW5.js} +2 -2
- package/server/{active-dashboard-bundle-Byh6sP-q.js → active-dashboard-bundle-DbfgP8TS.js} +2 -2
- package/server/{activity-logger-Ck8qoluj.js → activity-logger-DtdKxzPh.js} +1 -1
- package/server/{activity-logger-BWZhVphb.js → activity-logger-ru8ggv-d.js} +3 -3
- package/server/{advancing-selfheal-65W4yUQi.js → advancing-selfheal-BdZ1iFJf.js} +11 -6
- package/server/{agent-gc-BNUudFnt.js → agent-gc-DBMg1vIc.js} +11 -11
- package/server/{agent-idle-ONBssBN_.js → agent-idle-CQlwmcRR.js} +11 -11
- package/server/{agent-state-CM8iVw5B.js → agent-state-B0v3fvGI.js} +1 -1
- package/server/{agent-state-BJhGIJZe.js → agent-state-BnyNoDWQ.js} +345 -402
- package/server/{agent-state-service-CiIuwzIs.js → agent-state-service-D95wBjA3.js} +5 -5
- package/server/{agent-state-service-CzHfoqKQ.js → agent-state-service-GK2Uy8zc.js} +1 -1
- package/server/{agents-DpCuoF65.js → agents-BdkVgjxC.js} +1 -1
- package/server/{agents-jXgqpHca.js → agents-DMs1aLRU.js} +4 -4
- package/server/{archive-planning-CGkU6UeL.js → archive-planning-CFf5FVHQ.js} +5 -5
- package/server/archive-planning-CNSWQPvz.js +2 -0
- package/server/{artifact-index-jobs-Ck4NRRkY.js → artifact-index-jobs-BdeB5RIY.js} +2 -2
- package/server/{assemble-CyvEBmmq.js → assemble-D88iFkP-.js} +2 -2
- package/server/{auto-spawn-consent-Dc4mtM-B.js → auto-spawn-consent-C1avLtkk.js} +7 -7
- package/server/{backlog-auto-trigger-CCEpr4YT.js → backlog-auto-trigger-oKIGNBzZ.js} +3 -3
- package/server/{behavior-BiCQzqyT.js → behavior-CPX0E2Fj.js} +49 -7
- package/server/{bridge-pool-patrol-Ce8rNPym.js → bridge-pool-patrol-DstxbANA.js} +2 -2
- package/server/{briefing-freshness-e_OEYZEe.js → briefing-freshness-FF0WLPMc.js} +2 -2
- package/server/build-info-Df2tkRrB.js +2 -0
- package/server/{build-info-BRw4QlYO.js → build-info-DiA6h4T6.js} +3 -3
- package/server/{checkpoint-manager-DOwRGFff.js → checkpoint-manager-CkXA-F6Z.js} +2 -2
- package/server/{checkpoint-manager-CKr42Usw.js → checkpoint-manager-D74ueYZp.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-Cszp_0Np.js → checkpoints-Ds83fUb1.js} +2 -2
- package/server/{checkpoints-Cb6CWT4S.js → checkpoints-JIKy0UFv.js} +1 -1
- package/server/{claude-hooks-provision-C5JHpxTS.js → claude-hooks-provision-BJ8LNIAe.js} +1 -1
- package/server/{claude-hooks-provision-Cer2eFfj.js → claude-hooks-provision-D7Z8kANm.js} +2 -2
- package/server/{claude-permissions-Bc5kjX1q.js → claude-permissions-Bn53HCXr.js} +18 -3
- package/server/{claude-settings-overlay-m-VVZej1.js → claude-settings-overlay-CqJZjFqv.js} +2 -2
- package/server/{claude-settings-overlay-C7rWsnya.js → claude-settings-overlay-QByq1SQa.js} +1 -1
- package/server/{cli-BmczsfD6.js → cli-BXmAb7vN.js} +11 -11
- package/server/cli-BjznnCC3.js +2 -0
- package/server/{cliproxy-BpYpkogS.js → cliproxy-L_2OxNJf.js} +2 -2
- package/server/{cliproxy-_yUU0HRY.js → cliproxy-ltFu5xfR.js} +1 -1
- package/server/{close-issue-CxvRD0UI.js → close-issue-BZAf0Ii-.js} +5 -5
- package/server/{closed-issue-reaper-nMLRi5de.js → closed-issue-reaper-BJa8SbvQ.js} +13 -13
- package/server/{closed-issue-reaper-omOcUDBl.js → closed-issue-reaper-DVtyOI4C.js} +1 -1
- package/server/{codex-DZhFfcWu.js → codex-BqLZKVNm.js} +1 -1
- package/server/{codex-KaSKE-R3.js → codex-DSs-3aOm.js} +6 -6
- package/server/{compaction-continuation-Bjfi70G-.js → compaction-continuation-TG0HYkOq.js} +3 -3
- package/server/{config-ZGjvuR6J.js → config-Cx3N6gWz.js} +2 -2
- package/server/{config-Doq_tF-f.js → config-DP0VV7rX.js} +2 -2
- package/server/{config-CH1AqqIQ.js → config-DURnId0k.js} +1 -1
- package/server/{config-yaml-D9nfpEx1.js → config-yaml-OoH-ZpTb.js} +48 -9
- package/server/{conflict-gate-DcUTY4Gb.js → conflict-gate-SgOELW84.js} +5 -5
- package/server/{conflict-gate-D4XCtrm2.js → conflict-gate-pMfhBEVB.js} +1 -1
- package/server/{context-layers-BGj2Y9l3.js → context-layers-D0QBOPJJ.js} +2 -2
- package/server/{context-layers-BBTKP-Y4.js → context-layers-LY5zt0da.js} +3 -3
- package/server/{continue-i7Revg8D.js → continue-Cmzd6leL.js} +2 -2
- package/server/{control-settings-BMoDHY1G.js → control-settings-Bdud_B1j.js} +308 -5
- package/server/{conversation-compaction-DzIjYMfg.js → conversation-compaction-BX9UR8nl.js} +1 -1
- package/server/{conversation-compaction-D4VOmF7p.js → conversation-compaction-dFx_2wpa.js} +8 -8
- package/server/{conversation-service-CzZUJFEx.js → conversation-service-B3h1erHm.js} +1 -1
- package/server/{conversation-service-tQCIbBVZ.js → conversation-service-zgLM2g2D.js} +37 -13
- package/server/{conversations-bFDaD5YN.js → conversations-Ch7UGi0F.js} +1 -1
- package/server/{conversations-C75EFFjf.js → conversations-JyrMSeOh.js} +5 -5
- package/server/{cost-CiIwxH1D.js → cost-CxXv7ei-.js} +10 -2
- package/server/cost-DR57uJFP.js +838 -0
- package/server/{cost-BCWEkvro.js → cost-MZ7EZFDc.js} +3 -3
- package/server/{cost-sync-DOkdE_yB.js → cost-sync-Bq_dyq9k.js} +3 -3
- package/server/{dag-BPc74hwj.js → dag-CKUsr8wB.js} +2 -2
- package/server/{dangerous-git-ops-By9iguTP.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
- package/server/dashboard-db-worker.js +61 -11
- package/server/{deacon-CzSZMtb-.js → deacon-BUOpTnmQ.js} +3 -3
- package/server/{deacon-B24dNzr8.js → deacon-C7qZxRuW.js} +125 -165
- package/server/{deacon-canonical-state-CkvxRPck.js → deacon-canonical-state-hcaZgjoT.js} +2 -2
- package/server/{deacon-event-client-Do6Z2gKl.js → deacon-event-client-Coiopt4u.js} +2 -2
- package/server/{deacon-event-client-BYIQBu0T.js → deacon-event-client-DJ71Tifg.js} +1 -1
- package/server/{deacon-nudge-log-CzM9JA9t.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
- package/server/{deacon-pending-lifecycle-BObEdT-L.js → deacon-pending-lifecycle-Dv0-8bZG.js} +3 -3
- package/server/deacon.js +11 -11
- package/server/dead-end-trip-B91w2PGV.js +2 -0
- package/server/{dead-end-trip-CnVmjnya.js → dead-end-trip-DH_hA7yS.js} +3 -3
- package/server/{delivery-gyce0vQ7.js → delivery-zJM4aIkf.js} +1 -1
- package/server/{deploy-patrol-CEwwEYDM.js → deploy-patrol-Cv96N0s6.js} +8 -8
- package/server/deploy-queue-2cN86Lg4.js +2 -0
- package/server/{deploy-queue-r96ojDI3.js → deploy-queue-EcksuKE2.js} +2 -2
- package/server/{deploy-window-D_3hhfxt.js → deploy-window-BXbzS0zN.js} +4 -4
- package/server/{deploy-window-DeJK8mTK.js → deploy-window-CHgL_TTN.js} +1 -1
- package/server/{dev-supervisor-DZWwpENk.js → dev-supervisor-lNaYB136.js} +2 -2
- package/server/{devcontainer-renderer-d-9dCV_2.js → devcontainer-renderer-q8q9aXRd.js} +3 -3
- package/server/{dist-DsLAsFSh.js → dist-CoR2sivG.js} +1 -1
- package/server/dist-FHv1s5ez.js +3 -0
- package/server/{docker-CRPHBylA.js → docker-BNd0tMdS.js} +1 -1
- package/server/{docker-B2mUBzGk.js → docker-Dk-shfga.js} +3 -3
- package/server/{dod-DWtilRLx.js → dod-BAk5arLF.js} +1 -1
- package/server/{done-preflight-BDVdWed5.js → done-preflight-AiXnYYAy.js} +1 -1
- package/server/{done-preflight-D4ukUf-S.js → done-preflight-CukR3Br8.js} +5 -5
- package/server/{durable-review-pipeline-CaCbEJSt.js → durable-review-pipeline-BOEZ0chh.js} +1 -1
- package/server/{durable-review-pipeline-B3OS2_He.js → durable-review-pipeline-Djx_lvFd.js} +1 -1
- package/server/{ensure-devcontainer-rGSh0JHK.js → ensure-devcontainer-BjMV_gdX.js} +1 -1
- package/server/{ensure-devcontainer-BUeBRjmm.js → ensure-devcontainer-YXncXZ5Q.js} +4 -4
- package/server/{esm-shims-oAaKIa-a.js → esm-shims-deFq5Hhl.js} +1 -1
- package/server/{event-store-Db4w4YIY.js → event-store-CFnLP8w-.js} +1 -1
- package/server/{event-store-BCSgMubf.js → event-store-DbjldlXW.js} +5 -5
- package/server/{event-store-provider-DlSQND3V.js → event-store-provider-Bu1Qrg6v.js} +1 -1
- package/server/{events-B6zioJA_.js → events-Bb2x5ijT.js} +3 -3
- package/server/{factory-BrdqXBeK.js → factory-DfIQG-qW.js} +4 -4
- package/server/{feature-registry-storage-zh3ZXW6f.js → feature-registry-storage-BzAGS4DA.js} +2 -2
- package/server/{features-BGntOWdy.js → features-KxOILHX8.js} +2 -2
- package/server/{feedback-stuck-retirement-DpA5u1kt.js → feedback-stuck-retirement-BqTHm-1Z.js} +2 -2
- package/server/{feedback-target-D7GxdUYG.js → feedback-target-BjLidX0M.js} +10 -10
- package/server/{feedback-target-Ddqk93NF.js → feedback-target-D2CIZFwc.js} +1 -1
- package/server/{feedback-writer-CH2846DP.js → feedback-writer-BrSQ4fC-.js} +1 -1
- package/server/{feedback-writer-C1gCLFmp.js → feedback-writer-Dgrma-L1.js} +5 -5
- package/server/{flywheel-CjW2L7BS.js → flywheel-D5FchYg4.js} +16 -16
- package/server/{flywheel-HJt7QdWP.js → flywheel-Ds0eOd1P.js} +1 -1
- package/server/{flywheel-v1cCOBx-.js → flywheel-X6kvGnf2.js} +15 -15
- package/server/{flywheel-merge-order-D_yyAlND.js → flywheel-merge-order-BTY73Efv.js} +17 -15
- package/server/{flywheel-merge-order-4fNRN2F2.js → flywheel-merge-order-PTHnouQS.js} +1 -1
- package/server/{forge-RVTCK_5X.js → forge-B08cRXEb.js} +2 -2
- package/server/forge-egNLsjVi.js +2 -0
- package/server/{from-BnLgKYvw.js → from-C3dzmjSO.js} +1 -1
- package/server/{fs-lock-C7J-ugIf.js → fs-lock-DfiYlr5u.js} +2 -2
- package/server/{fts-operations-CU0B5WUx.js → fts-operations-Do1SP0w4.js} +2 -2
- package/server/{git-info-BSrI9owC.js → git-info-DMOSfJ9I.js} +1 -1
- package/server/{git-utils-DW8-jIUJ.js → git-utils-DfpFkvwk.js} +4 -4
- package/server/{git-utils-CsKV0Dis.js → git-utils-fcK3ZRNj.js} +1 -1
- package/server/{github-app-7ywLhuZO.js → github-app-Co8ZhyUJ.js} +2 -2
- package/server/{github-app-Oi5hdn1n.js → github-app-HAqQZZRD.js} +1 -1
- package/server/{github-client-Cy0fSj1a.js → github-client-C7MUxFzX.js} +1 -1
- package/server/{github-client-DAbuXLuk.js → github-client-wqbDCmlL.js} +2 -2
- package/server/{github-pr-lookup-Dhh3ec1V.js → github-pr-lookup-DdLCDdu9.js} +2 -2
- package/server/{harness-binary-tMmgJfC1.js → harness-binary-BuakhXkB.js} +2 -2
- package/server/{harness-resolve-DusNpVEe.js → harness-resolve-CISjc9FR.js} +4 -4
- package/server/{health-events-BYDZ9n2i.js → health-events-9RhRGZK1.js} +1 -1
- package/server/{health-events-DNw9Mzw9.js → health-events-CIE7gy34.js} +2 -2
- package/server/{hooks-B4wj32l2.js → hooks-CmL3TXla.js} +1 -1
- package/server/{hooks-BjBjxqNh.js → hooks-D55VTdQS.js} +2 -2
- package/server/{hume-BP9YbxaE.js → hume-1FJmNDTq.js} +2 -2
- package/server/hume-gXLmRhmN.js +3 -0
- package/server/{identity-C23uY8dZ.js → identity-CZbJ0xpl.js} +3 -3
- package/server/{idle-stack-reaper-BSxb1bln.js → idle-stack-reaper-CjovDCet.js} +4 -4
- package/server/{idle-stack-reaper-Bw0rU9GC.js → idle-stack-reaper-DhbFdkWv.js} +1 -1
- package/server/{in-flight-guard-DuxabAHT.js → in-flight-guard-B7khcBdQ.js} +1 -1
- package/server/{infra-CHIvOb9q.js → infra-BbSWNOpH.js} +10 -4
- package/server/{injection-BYUt8ml1.js → injection-BSnn_10a.js} +8 -8
- package/server/{injection-BviePcm3.js → injection-DsQDBSEi.js} +1 -1
- package/server/inspect-agent-BuSYgRQs.js +2 -0
- package/server/{inspect-agent-sV_19NxZ.js → inspect-agent-DS8j2v6U.js} +12 -12
- package/server/{internal-token-DoVzb4b7.js → internal-token-CUKcTWSG.js} +2 -2
- package/server/{internal-token-BOtIRJU7.js → internal-token-CkrMLCLU.js} +1 -1
- package/server/{io-DKrWd3gX.js → io-BgzG56av.js} +4 -4
- package/server/{issue-closed-6RQsAjDX.js → issue-closed-DZEwD3ol.js} +7 -7
- package/server/{issue-lifecycle-DOPVv7xz.js → issue-lifecycle-Bnfbpkmk.js} +1 -1
- package/server/{issue-lifecycle-D9nLErvS.js → issue-lifecycle-LgYeE1o2.js} +25 -25
- package/server/{issue-service-singleton-B2xy-IS9.js → issue-service-singleton-Bsb0GaY8.js} +10 -10
- package/server/{issue-service-singleton-CvgNAWqK.js → issue-service-singleton-COEqWNKE.js} +1 -1
- package/server/{issue-title-fallback-DTSCQVu0.js → issue-title-fallback-D4_b2XwP.js} +3 -3
- package/server/{issues-e_Ck1Ln2.js → issues-DYAEUW45.js} +2 -2
- package/server/{jsonl-parser-DqxVCZ1k.js → jsonl-parser-1IqHI9Yb.js} +3 -3
- package/server/{jsonl-resolver-07OS3qOr.js → jsonl-resolver-BJ8Hg-yD.js} +8 -8
- package/server/{kimi-code-vtXl2DR5.js → kimi-code-Cdkk9vRU.js} +1 -1
- package/server/{kimi-code-BjtAHIz1.js → kimi-code-DwqLCWFw.js} +11 -11
- package/server/{kimi-parser-B1lgy2Vt.js → kimi-parser-DFsZQArz.js} +2 -2
- package/server/{label-cleanup-D2zUMasf.js → label-cleanup-Bej6xDZK.js} +3 -3
- package/server/{lifecycle-0NOEzomy.js → lifecycle-BibLMHBH.js} +2 -2
- package/server/{lifecycle-DaCovZwn.js → lifecycle-CMpSB9sn.js} +6 -6
- package/server/{lifecycle-io-6WL46dsB.js → lifecycle-io-CCCAMefe.js} +5 -5
- package/server/{lifecycle-io-BBMTaP7S.js → lifecycle-io-CLWwYZaR.js} +1 -1
- package/server/{linear-client-BTGApNLo.js → linear-client-BtYl16Cy.js} +1 -1
- package/server/{linear-client-7fQThJTc.js → linear-client-fpL-qJEa.js} +2 -2
- package/server/{linear-mcp-auth-B8pYRsiU.js → linear-mcp-auth-CQ7ROT1X.js} +1 -1
- package/server/{linear-mcp-auth-Nk5s3L9M.js → linear-mcp-auth-nAYWoUbH.js} +5 -5
- package/server/memory-fts-worker.js +1 -1
- package/server/{memory-governor-Cqvbusr4.js → memory-governor-Mi5zF5zw.js} +87 -21
- package/server/{memory-pressure-patrol-DPb8foam.js → memory-pressure-patrol-CDeDh46A.js} +38 -14
- package/server/{merge-BB_bjJ9a.js → merge-DCuDLiy9.js} +1 -1
- package/server/{merge-FZ78_cEz.js → merge-_XIivhkq.js} +3 -3
- package/server/{merge-agent-BuoC_PRZ.js → merge-agent-svBDRWB6.js} +2 -2
- package/server/{merge-agent-B3jRrlS1.js → merge-agent-zF9vqWqY.js} +31 -31
- package/server/{merge-batch-B8bVjFWS.js → merge-batch-BJjzUUL7.js} +1 -1
- package/server/{merge-completeness-DQt7Qa7i.js → merge-completeness-CQPqu-pI.js} +4 -4
- package/server/{merge-completeness-DkdabVch.js → merge-completeness-CeQheehh.js} +1 -1
- package/server/merge-eligibility-CJrBhQQe.js +3 -0
- package/server/merge-eligibility-DhxVE8qU.js +51 -0
- package/server/merge-ops-CUzpOPtO.js +2 -0
- package/server/{merge-rebase-qq40s91P.js → merge-rebase-Bjo45m3k.js} +2 -2
- package/server/merge-rebase-DkfcUT60.js +2 -0
- package/server/{merge-set-BmRRflt0.js → merge-set-COZvz2nx.js} +4 -4
- package/server/{merge-set-BTNYvxM3.js → merge-set-ChxZgjBB.js} +1 -1
- package/server/{merge-sync-CJpOa0cZ.js → merge-sync-CCi1Esdx.js} +2 -2
- package/server/{merge-sync-0m2Q087q.js → merge-sync-DuJ6Vkl3.js} +1 -1
- package/server/{merge-train-iwKqjtCF.js → merge-train-DTJXF8ph.js} +4 -4
- package/server/{merge-train-deps-CH5Mr3vN.js → merge-train-deps-C0P0qGKe.js} +4 -4
- package/server/{merge-verification-JJc5GC2t.js → merge-verification-C5FexOBZ.js} +6 -6
- package/server/{merged-docker-cleanup-worker-CrhTdxZV.js → merged-docker-cleanup-worker-0SEDG3Ao.js} +1 -1
- package/server/{merged-docker-cleanup-worker-BOqWA373.js → merged-docker-cleanup-worker-C-kSp_jw.js} +3 -3
- package/server/{messaging-nuwStbdQ.js → messaging-DQi-WEFB.js} +1 -1
- package/server/{multipart-parser-DxuW_rZV.js → multipart-parser-BYwfKOVU.js} +2 -2
- package/server/{no-resume-mode-xuYLFhLw.js → no-resume-mode-DjMQRkId.js} +1 -1
- package/server/node_modules/.package-lock.json +28 -28
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +4 -2
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +6 -6
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
- package/server/node_modules/@types/node/README.md +1 -1
- package/server/node_modules/@types/node/buffer.buffer.d.ts +10 -5
- package/server/node_modules/@types/node/buffer.d.ts +1 -0
- package/server/node_modules/@types/node/crypto.d.ts +2 -4
- package/server/node_modules/@types/node/dgram.d.ts +119 -4
- package/server/node_modules/@types/node/diagnostics_channel.d.ts +4 -4
- package/server/node_modules/@types/node/ffi.d.ts +1 -1
- package/server/node_modules/@types/node/fs/promises.d.ts +61 -65
- package/server/node_modules/@types/node/fs.d.ts +86 -76
- package/server/node_modules/@types/node/http.d.ts +18 -2
- package/server/node_modules/@types/node/http2.d.ts +12 -4
- package/server/node_modules/@types/node/index.d.ts +1 -0
- package/server/node_modules/@types/node/inspector.d.ts +2 -1
- package/server/node_modules/@types/node/net.d.ts +108 -16
- package/server/node_modules/@types/node/package.json +3 -3
- package/server/node_modules/@types/node/perf_hooks.d.ts +31 -19
- package/server/node_modules/@types/node/process.d.ts +52 -0
- package/server/node_modules/@types/node/quic.d.ts +252 -42
- package/server/node_modules/@types/node/sqlite.d.ts +6 -2
- package/server/node_modules/@types/node/stream/iter.d.ts +4 -4
- package/server/node_modules/@types/node/stream/web.d.ts +20 -0
- package/server/node_modules/@types/node/test.d.ts +36 -0
- package/server/node_modules/@types/node/tls.d.ts +50 -15
- package/server/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +5 -0
- package/server/node_modules/@types/node/ts5.6/index.d.ts +1 -0
- package/server/node_modules/@types/node/ts5.7/index.d.ts +1 -0
- package/server/node_modules/@types/node/tty.d.ts +4 -3
- package/server/node_modules/@types/node/vfs.d.ts +211 -0
- package/server/node_modules/@types/node/vm.d.ts +1 -1
- package/server/node_modules/@types/node/zlib.d.ts +17 -0
- package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
- package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
- package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
- package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
- package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
- package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
- package/server/node_modules/msgpackr/README.md +1 -0
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs +13 -7
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.js +13 -7
- package/server/node_modules/msgpackr/dist/index.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/node.cjs +13 -7
- package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/test.js +63 -7
- package/server/node_modules/msgpackr/dist/test.js.map +1 -1
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/index.d.cts +1 -0
- package/server/node_modules/msgpackr/index.d.ts +1 -0
- package/server/node_modules/msgpackr/pack.js +2 -2
- package/server/node_modules/msgpackr/package.json +1 -1
- package/server/node_modules/msgpackr/unpack.js +11 -5
- package/server/node_modules/picomatch/lib/parse.js +10 -1
- package/server/node_modules/picomatch/lib/scan.js +30 -18
- package/server/node_modules/picomatch/package.json +1 -1
- package/server/node_modules/protobufjs/dist/light/protobuf.js +59 -6
- package/server/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
- package/server/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
- package/server/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
- package/server/node_modules/protobufjs/dist/minimal/protobuf.js +22 -2
- package/server/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
- package/server/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
- package/server/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
- package/server/node_modules/protobufjs/dist/protobuf.js +59 -6
- package/server/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/server/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/server/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/server/node_modules/protobufjs/package.json +1 -1
- package/server/node_modules/protobufjs/src/decoder.js +32 -3
- package/server/node_modules/protobufjs/src/reader.js +20 -0
- package/server/node_modules/protobufjs/src/wrappers.js +5 -1
- package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
- package/server/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +3 -2
- package/server/node_modules/undici/docs/docs/api/EventSource.md +4 -0
- package/server/node_modules/undici/docs/docs/api/Interceptors.md +7 -3
- package/server/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +7 -1
- package/server/node_modules/undici/lib/cache/memory-cache-store.js +2 -2
- package/server/node_modules/undici/lib/core/symbols.js +2 -0
- package/server/node_modules/undici/lib/dispatcher/agent.js +7 -2
- package/server/node_modules/undici/lib/dispatcher/balanced-pool.js +7 -4
- package/server/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
- package/server/node_modules/undici/lib/dispatcher/client-h2.js +43 -3
- package/server/node_modules/undici/lib/dispatcher/client.js +3 -2
- package/server/node_modules/undici/lib/dispatcher/dispatcher-base.js +13 -1
- package/server/node_modules/undici/lib/dispatcher/dispatcher.js +15 -1
- package/server/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -0
- package/server/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +10 -3
- package/server/node_modules/undici/lib/dispatcher/proxy-agent.js +18 -1
- package/server/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
- package/server/node_modules/undici/lib/dispatcher/round-robin-pool.js +1 -1
- package/server/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +91 -21
- package/server/node_modules/undici/lib/handler/cache-handler.js +29 -5
- package/server/node_modules/undici/lib/handler/decorator-handler.js +7 -1
- package/server/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/server/node_modules/undici/lib/handler/redirect-handler.js +21 -4
- package/server/node_modules/undici/lib/handler/retry-handler.js +148 -30
- package/server/node_modules/undici/lib/interceptor/cache.js +65 -12
- package/server/node_modules/undici/lib/interceptor/decompress.js +115 -13
- package/server/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
- package/server/node_modules/undici/lib/interceptor/dns.js +7 -0
- package/server/node_modules/undici/lib/interceptor/dump.js +10 -23
- package/server/node_modules/undici/lib/mock/mock-agent.js +13 -1
- package/server/node_modules/undici/lib/mock/mock-utils.js +11 -10
- package/server/node_modules/undici/lib/util/cache.js +45 -3
- package/server/node_modules/undici/lib/web/cookies/parse.js +150 -147
- package/server/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/server/node_modules/undici/lib/web/eventsource/eventsource.js +13 -3
- package/server/node_modules/undici/lib/web/fetch/index.js +6 -0
- package/server/node_modules/undici/lib/web/fetch/request.js +2 -3
- package/server/node_modules/undici/lib/web/fetch/util.js +6 -1
- package/server/node_modules/undici/lib/web/webidl/index.js +3 -3
- package/server/node_modules/undici/lib/web/websocket/connection.js +1 -1
- package/server/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
- package/server/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
- package/server/node_modules/undici/package.json +3 -3
- package/server/node_modules/undici/types/client.d.ts +10 -0
- package/server/node_modules/undici/types/interceptors.d.ts +2 -0
- package/server/node_modules/undici/types/mock-agent.d.ts +11 -10
- package/server/node_modules/undici/types/socks5-proxy-agent.d.ts +2 -0
- package/server/node_modules/undici-types/client.d.ts +8 -3
- package/server/node_modules/undici-types/connector.d.ts +1 -0
- package/server/node_modules/undici-types/cookies.d.ts +1 -1
- package/server/node_modules/undici-types/dispatcher.d.ts +3 -3
- package/server/node_modules/undici-types/errors.d.ts +10 -0
- package/server/node_modules/undici-types/fetch.d.ts +5 -1
- package/server/node_modules/undici-types/handlers.d.ts +2 -0
- package/server/node_modules/undici-types/interceptors.d.ts +1 -1
- package/server/node_modules/undici-types/mock-interceptor.d.ts +5 -1
- package/server/node_modules/undici-types/package.json +1 -1
- package/server/node_modules/undici-types/proxy-agent.d.ts +7 -0
- package/server/{orphan-proposed-reconciler-gf4TxfZb.js → orphan-proposed-reconciler--V8GIzmY.js} +2 -2
- package/server/{orphan-proposed-reconciler-Dmk0kO_p.js → orphan-proposed-reconciler-BSsKWmsB.js} +21 -21
- package/server/package-lock.json +29 -29
- package/server/package.json +1 -1
- package/server/{pan-dir-BMda7tQj.js → pan-dir-COaYhZel.js} +4 -4
- package/server/{parked-residue-BiHb8cD7.js → parked-residue-Dvr4W9P6.js} +68 -64
- package/server/{paths-DEe9j-kw.js → paths-Cm1Q7Old.js} +2 -2
- package/server/{pending-lifecycle-claim-J5uIIJPu.js → pending-lifecycle-claim-yAwDuGS4.js} +1 -1
- package/server/{pickup-D1UbSDPd.js → pickup-Dle6k9Xt.js} +1 -1
- package/server/{pipeline-agent-reader-D-6okryb.js → pipeline-agent-reader-DCCwbUj8.js} +3 -3
- package/server/{pipeline-membership-PGX3Pe8V.js → pipeline-membership-BV4hdkHm.js} +1 -1
- package/server/{pipeline-membership-CCbgBzNC.js → pipeline-membership-C9ykcjsn.js} +1 -1
- package/server/{pipeline-membership-gather-BRhU7XPx.js → pipeline-membership-gather-DGoDOfKO.js} +1 -1
- package/server/{pipeline-membership-gather-BK4dzh0X.js → pipeline-membership-gather-UN7kHpCD.js} +10 -10
- package/server/{pipeline-notifier-BNAV9kpa.js → pipeline-notifier-DfH2i_zP.js} +2 -2
- package/server/{pipeline-notifier-DvHLaXKb.js → pipeline-notifier-DsCfxoSU.js} +1 -1
- package/server/{post-merge-lifecycle-worker-DAWgzXQA.js → post-merge-lifecycle-worker-V51p8tSm.js} +2 -2
- package/server/{post-merge-state-DC2_0t12.js → post-merge-state-Cym5NVlB.js} +4 -4
- package/server/{prd-locations-BbAvqQmT.js → prd-locations-CPuMD55x.js} +3 -3
- package/server/{project-pipelines-By_5WcT4.js → project-pipelines-DdDKdXrG.js} +2 -2
- package/server/{project-repos-3bI6t4fO.js → project-repos-CNrLxJDg.js} +1 -1
- package/server/{project-repos--QeCg7yQ.js → project-repos-DqAT7YV6.js} +2 -2
- package/server/{project-resource-refresh-queue-BaZC79S3.js → project-resource-refresh-queue-C-umDazS.js} +1 -1
- package/server/{project-resource-refresh-queue-x-K9mvpP.js → project-resource-refresh-queue-Dh8k2SB7.js} +17 -17
- package/server/{projects-LftaVK99.js → projects-Crur9uCa.js} +1 -1
- package/server/{prompts-BotGu-6W.js → prompts-CvtVJUpG.js} +2 -2
- package/server/{providers-BL1I66sM.js → providers-1BlEh5x1.js} +7 -7
- package/server/{providers-Dqgz3MY5.js → providers-Bun8zer5.js} +1 -1
- package/server/public/assets/{chunk-BO2N2NFS-D5Fz5jND.js → chunk-BO2N2NFS-DzUNVdeo.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-Eux0gWFq.js → diagram-OG6HWLK6-D5iThVwA.js} +1 -1
- package/server/public/assets/{dist-D-JX_u7m.js → dist-BLq-IR2D.js} +3 -3
- package/server/public/assets/{dist-C3zShwhA.js → dist-RyrOs5EF.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-UH3aweia.js → ganttDiagram-6RSMTGT7-n8bUPXAS.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-ccIQ-WXS.js → highlighted-body-OFNGDK62-1npo3yiG.js} +1 -1
- package/server/public/assets/{index-BTVcdPve.js → index-BvN8bWpz.js} +149 -149
- package/server/public/assets/index-DgoS288w.css +1 -0
- package/server/public/assets/{linear-Cnnu4YQy.js → linear-Dd96gky1.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-fP93Za-W.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BD8-Tye6.js → pieDiagram-4H26LBE5-CynZvpYP.js} +1 -1
- package/server/public/assets/{prod-Ca6aKMts.js → prod-DBuCX9g-.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-BmSrVyFD.js → quadrantDiagram-W4KKPZXB-BNlEKLKN.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-CEGy8Das.js → sankeyDiagram-5OEKKPKP-Cq0AMnkD.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-VnQ8iY8s.js → xychartDiagram-2RQKCTM6-D7GXcBy2.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/pull-requests-DV_rJ-1u.js +2 -0
- package/server/{pull-requests-Cp_FDT8-.js → pull-requests-DrhWU9MW.js} +3 -3
- package/server/{rally-bQpBzUNf.js → rally-D5QkIZeb.js} +3 -3
- package/server/rally-DlXjOIAG.js +3 -0
- package/server/{rally-api-Ij1Zt0NI.js → rally-api-BdNfpNGk.js} +1 -1
- package/server/{rally-api-CqAIJ8RX.js → rally-api-CNlcoTFM.js} +2 -2
- package/server/{rally-client-CN5vh4Ac.js → rally-client-BCU7mVWE.js} +1 -1
- package/server/{rally-client-qKbCNRVW.js → rally-client-C3eB9TM-.js} +4 -4
- package/server/{rebuild-stack-DrMyA_mA.js → rebuild-stack-BupKggo5.js} +2 -2
- package/server/{rebuild-stack-BNOMVh7C.js → rebuild-stack-CNknXJHL.js} +6 -6
- package/server/reconciler-ComAOr_F.js +657 -0
- package/server/{reconstruct-cache-mxIYCnqs.js → reconstruct-cache-DbjgwKRi.js} +7 -7
- package/server/{record-Ug18Cp4V.js → record-C4JJCL2f.js} +1 -1
- package/server/{record-update-WyhsREoH.js → record-update-CWwZsp9Y.js} +1 -1
- package/server/{record-update-dBGxL9OC.js → record-update-Cl56NqoQ.js} +5 -5
- package/server/{recovery-trip-BKLrL6NX.js → recovery-trip-DA7tCXbp.js} +3 -3
- package/server/{recovery-trip-wFAixKsg.js → recovery-trip-DFtSA8h5.js} +1 -1
- package/server/{release-engine-D9gaCBn9.js → release-engine-Dk99C48O.js} +5 -5
- package/server/{release-set-DPHHzEGx.js → release-set-x8KH3nrE.js} +3 -3
- package/server/{remote-BUEeUic6.js → remote-BMZmJC5E.js} +3 -3
- package/server/{remote-BU6ONLpv.js → remote-DyZIg94K.js} +3 -3
- package/server/{remote-agents-CSaTLi3u.js → remote-agents-Blb0vO_M.js} +6 -6
- package/server/{remote-agents-BVtASiOF.js → remote-agents-MbWzm5Fh.js} +1 -1
- package/server/{remote-completion-CBV3b9TI.js → remote-completion-Bcd13o-J.js} +12 -12
- package/server/{resolver-DvSMXty7.js → resolver-CZVWKCx0.js} +7 -7
- package/server/{resolver-gxv97jsQ.js → resolver-tJeEkPK5.js} +2 -2
- package/server/{resume-DvHuF-bm.js → resume-DmF2andq.js} +1 -1
- package/server/{review-agent-esZ0QXdY.js → review-agent-CmJeQc0K.js} +30 -30
- package/server/{review-agent-DgkUPRx0.js → review-agent-DM9S22BL.js} +2 -2
- package/server/{review-artifacts-DGGEobLp.js → review-artifacts-DCiaejJK.js} +6 -6
- package/server/{review-convoy-liveness-DmO8dIBH.js → review-convoy-liveness-C9F1Q1LN.js} +8 -8
- package/server/{review-run-recovery-Ct0q7FkE.js → review-run-recovery-C5TEICtx.js} +2 -2
- package/server/{review-run-recovery-DHiiw7d8.js → review-run-recovery-CRGBh7xs.js} +1 -1
- package/server/{review-status-yOGD2MuK.js → review-status-C3PJkfjv.js} +55 -45
- package/server/{review-status-C_kQeeX0.js → review-status-CDs0jQV6.js} +1 -1
- package/server/{review-status-emit-BZz1Y_22.js → review-status-emit-De6PF3ZH.js} +3 -3
- package/server/{review-status-enrichment-BWH0XW_m.js → review-status-enrichment-CclcG8jk.js} +3 -3
- package/server/{review-status-sync-Bq00Loey.js → review-status-sync-B3GKewT_.js} +1 -1
- package/server/{review-status-sync-2C9lk85r.js → review-status-sync-wvgdR1yZ.js} +11 -8
- package/server/{review-verdict-feedback-CE_tr2iQ.js → review-verdict-feedback-20s9pG0w.js} +7 -7
- package/server/{review-verdict-feedback-Brjaxoda.js → review-verdict-feedback-DkMx_cKj.js} +1 -1
- package/server/{review-verdict-writer-Ca2V7QSY.js → review-verdict-writer-BcG5RBWF.js} +7 -7
- package/server/{review-verdict-writer-CD-4kDVx.js → review-verdict-writer-CaJPCD-q.js} +1 -1
- package/server/{rollup-B6g9Nr6L.js → rollup-C-GXHbTG.js} +8 -8
- package/server/{rollup--g9ik1XQ.js → rollup-DR250WyW.js} +1 -1
- package/server/{scanner-YxIv-fG1.js → scanner-BEAzmMNs.js} +18 -11
- package/server/{search-DqMN4__-.js → search-BN0MYpZW.js} +2 -2
- package/server/{sequence-io--b3_PsWq.js → sequence-io-BmVO0K-_.js} +4 -4
- package/server/{sequencer-agent-CqouKVZG.js → sequencer-agent-CuA9PA_R.js} +6 -6
- package/server/server.js +599 -290
- package/server/{service-CEp-3iow.js → service-D1SZCxH8.js} +77 -772
- package/server/{session-fork-GtoeCh2H.js → session-fork--SMYFKVu.js} +2 -2
- package/server/{settings-Ch2pCVtt.js → settings-CETdzCl6.js} +3 -3
- package/server/{settings-CLQcdkoD.js → settings-CFi7CdJo.js} +2 -2
- package/server/settings-EGNbGKpP.js +2 -0
- package/server/{shadow-engineering-BxiFrIKv.js → shadow-engineering-CNTXaC9O.js} +2 -2
- package/server/{shadow-state-nGhCNXT2.js → shadow-state-6jSyeXQ7.js} +1 -1
- package/server/{shadow-state-CSA1vtxr.js → shadow-state-CtYJGNXt.js} +2 -2
- package/server/{shadow-utils-7q5QDmMj.js → shadow-utils-Cq5eMfwI.js} +2 -2
- package/server/{ship-log-ie0A_SqV.js → ship-log-D-CphNZx.js} +1 -1
- package/server/{ship-record-BM3oVvnL.js → ship-record-STA0P11l.js} +5 -5
- package/server/{ship-record-DHWH1hLz.js → ship-record-neN0oUI9.js} +1 -1
- package/server/{ship-status-BEkddXMT.js → ship-status-DzDpufmj.js} +2 -2
- package/server/{smart-compaction-BkzjVpWL.js → smart-compaction-CdtKIcDk.js} +1 -1
- package/server/{smart-compaction-D0TE1lBD.js → smart-compaction-tndAhwoc.js} +7 -7
- package/server/{spawn-planning-session-s406rw1N.js → spawn-planning-session-1XLgDLjR.js} +2 -2
- package/server/{spawn-planning-session-CkGweSCC.js → spawn-planning-session-CAncCBLX.js} +17 -17
- package/server/{specialist-completion-CTAjwH5j.js → specialist-completion-BMv3K54P.js} +1 -1
- package/server/{specialist-context-CKasRfYu.js → specialist-context-B054OP_a.js} +5 -5
- package/server/{specialist-handoff-logger-DrjrOmmn.js → specialist-handoff-logger-B7jzypoX.js} +2 -2
- package/server/{specialist-logs-Du6quZ0_.js → specialist-logs-DVhOLpwy.js} +3 -3
- package/server/{specialists-x-kPMhrL.js → specialists-8Pc--yZI.js} +2 -2
- package/server/{specialists-B-4zyE4Y.js → specialists-BVBIMc4L.js} +1 -1
- package/server/{specialists-b0dMMjWq.js → specialists-CC_Mnc47.js} +333 -118
- package/server/{specialists-CuDWiNdB.js → specialists-ChvCD2a-.js} +19 -19
- package/server/{specialists-registry-BYjs04iK.js → specialists-registry-Cim1fPcM.js} +2 -2
- package/server/{specialists-registry-1y6Rt_F1.js → specialists-registry-CoPNlhud.js} +1 -1
- package/server/specs-Dvq4sOy6.js +3 -0
- package/server/{src-CZsPs61V.js → src-C7gGe4KU.js} +6 -6
- package/server/{src-CY2Wl8IX.js → src-CdwN6WY6.js} +8 -2
- package/server/{src-DeQwpuh6.js → src-DMosbuSJ.js} +3 -3
- package/server/{stack-health-ypIKtkbE.js → stack-health-CvdnSVBV.js} +1 -1
- package/server/{stack-health-BQFSJc0l.js → stack-health-DPXaoAus.js} +3 -3
- package/server/{stale-task-claims-C2e1zdMT.js → stale-task-claims-UoNLemTn.js} +5 -5
- package/server/{staleness-Fzx_3_Hr.js → staleness-CxZaIhrn.js} +1 -1
- package/server/{staleness-CRDK6LFG.js → staleness-r_dkMyMG.js} +1 -1
- package/server/{stall-sweeper-QNk4h9m6.js → stall-sweeper-C9S8FYKz.js} +8 -8
- package/server/{state-home-DdG8erBI.js → state-home-BhI8O5lU.js} +2 -2
- package/server/{state-migrate-C6H3jfHE.js → state-migrate-DtFHcOVZ.js} +6 -6
- package/server/{state-mirror-DF4Lfxm0.js → state-mirror-CpuHFxHb.js} +3 -3
- package/server/{stuck-remediation-BDa_tXgB.js → stuck-remediation-B4nKm7B2.js} +13 -13
- package/server/{stuck-remediation-BVNd9txd.js → stuck-remediation-hSOOYB9B.js} +1 -1
- package/server/{substrate-bug-weights-service-BbbCZEtJ.js → substrate-bug-weights-service-B9f0063E.js} +3 -3
- package/server/{summary-fork-BvcW6bq0.js → summary-fork-CUyEqFyc.js} +14 -15
- package/server/{summary-fork-DIQmtOuV.js → summary-fork-DZcsOvDD.js} +2 -2
- package/server/{supervisor-D3jC2c7A.js → supervisor-CGtOs9Em.js} +4 -4
- package/server/supervisor-DoJpD33i.js +2 -0
- package/server/{swarm-readiness-CMWAQuWM.js → swarm-readiness-0N2p9d2C.js} +3 -3
- package/server/{synthesis-verdict-C-pJOPsn.js → synthesis-verdict-CJdseCuz.js} +1 -1
- package/server/{synthesis-verdict-DVlrLF9A.js → synthesis-verdict-CQdLbK1-.js} +2 -2
- package/server/{system-prerequisites-QKtIYXI2.js → system-prerequisites-DkDOEjQP.js} +2 -2
- package/server/{teardown-workspace-cJea1OLo.js → teardown-workspace-BxFMcWu7.js} +16 -16
- package/server/{test-agent-queue-C5DI_gWX.js → test-agent-queue-Dxeae55k.js} +6 -6
- package/server/{test-verdict-C7kmd2_Y.js → test-verdict-CJ-to_Hc.js} +1 -1
- package/server/{test-verdict-DUbDHqeD.js → test-verdict-hW5kILg7.js} +2 -2
- package/server/{tldr-daemon-BNQHwblU.js → tldr-daemon-DKCumqHU.js} +1 -1
- package/server/{tldr-daemon-CO08YlfQ.js → tldr-daemon-caxXegkF.js} +2 -2
- package/server/{tmux-B8zsqD_6.js → tmux-C-hxv71f.js} +2 -2
- package/server/{tmux-DWEc4Ld9.js → tmux-CvAEO9yo.js} +2 -2
- package/server/{token-Bez-qCB2.js → token-BdfZLRg1.js} +1 -1
- package/server/{tracker-config-CJzPhSHv.js → tracker-config-BjqwtkcT.js} +2 -2
- package/server/{tracker-utils-DJAOAuMN.js → tracker-utils-0cDe6yil.js} +2 -2
- package/server/{traefik-connect-D3H5I6b9.js → traefik-connect-DoQvQ6oJ.js} +1 -1
- package/server/{tunnel-BSdKnW0U.js → tunnel-BEM7-jgE.js} +1 -1
- package/server/{tunnel-Cr3ctqxp.js → tunnel-SgALz_Pi.js} +3 -3
- package/server/{types-fzBp9cYi.js → types-PW4zkxCM.js} +1 -1
- package/server/{uat-failure-feedback-IZQ-J8jt.js → uat-failure-feedback-BQzpUFQ6.js} +5 -5
- package/server/{uat-promote-verification-DXApKcc2.js → uat-promote-verification-BUltWC-b.js} +5 -5
- package/server/{uat-train-CycEzpbE.js → uat-train-B71QG16n.js} +1 -1
- package/server/{uat-train-IIZlz7r3.js → uat-train-BLJ0AAIc.js} +0 -0
- package/server/{validate-Ur4xH5bN.js → validate-DqEp2Yb9.js} +3 -3
- package/server/{validation-Dr6V4PXx.js → validation-DHEsL3RP.js} +4 -4
- package/server/{validation-CHovCoTT.js → validation-k4EpMHm0.js} +1 -1
- package/server/{verification-artifact-D3viYe_t.js → verification-artifact-Cmhgq4b_.js} +1 -1
- package/server/{verification-artifact-k5Ftpg0c.js → verification-artifact-DglwaHke.js} +1 -1
- package/server/{verification-runner-Dl13mmsI.js → verification-runner-BC_zNOq5.js} +16 -16
- package/server/{verification-runner-BuqGwm2t.js → verification-runner-Bbc-8BbR.js} +1 -1
- package/server/{vtt-parser-BSnAB-Og.js → vtt-parser-Va--tv27.js} +1 -1
- package/server/{work-agent-prompt-CJJ4tXci.js → work-agent-prompt-CQWlmw_y.js} +1 -1
- package/server/{work-agent-prompt-CioeOuM4.js → work-agent-prompt-DM3uza0_.js} +10 -10
- package/server/{work-agent-start-Ct1HVh6z.js → work-agent-start-BColr1oI.js} +1 -1
- package/server/{work-agent-start-B65Gqn9N.js → work-agent-start-cKf7rly8.js} +2 -2
- package/server/workflows-CLrEiTds.js +2 -0
- package/server/{workflows-AgFul1xc.js → workflows-DrC85n8j.js} +28 -28
- package/server/{workspace-Cy4sDd3q.js → workspace-ChRFy_F9.js} +3 -3
- package/server/{workspace-Cu3XlMXt.js → workspace-G3Cus8e9.js} +1 -1
- package/server/{workspace-anchor-drift-BI0Hz6zI.js → workspace-anchor-drift-DBbyK_Mf.js} +1 -1
- package/server/{workspace-anchor-drift-CMaqvizr.js → workspace-anchor-drift-z7TjOORC.js} +4 -4
- package/server/{workspace-config-DRYDO7Zr.js → workspace-config-D-bNq2CF.js} +1 -1
- package/server/{workspace-manager-CgovxDrO.js → workspace-manager-Db3pCmr7.js} +16 -16
- package/server/{workspace-manager-jfkKAEuO.js → workspace-manager-gz9Amovn.js} +1 -1
- package/server/{workspace-metadata-BNzODIv6.js → workspace-metadata-C5Ie2FMZ.js} +2 -2
- package/server/{workspace-metadata-BDqXzGGK.js → workspace-metadata-Do-L6GFP.js} +1 -1
- package/server/{workspaces-BJdPqx_J.js → workspaces-D0MWw7Mx.js} +123 -696
- package/sync-sources/rules/agent-message-delivery.md +21 -14
- package/sync-sources/rules/pan-handoff-focus-limit.md +3 -1
- package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +94 -46
- package/sync-sources/skills/pan-handoff/SKILL.md +13 -2
- package/server/archive-planning-BW4MKNI7.js +0 -2
- package/server/build-info-Bj2vQEMh.js +0 -2
- package/server/cli-BRuzUT_I.js +0 -2
- package/server/dead-end-trip-6V_CwveT.js +0 -2
- package/server/deploy-queue-CjLErpgw.js +0 -2
- package/server/dist-fCA6y2bH.js +0 -3
- package/server/forge-bvak6vXJ.js +0 -2
- package/server/hume-TYTb6fDU.js +0 -3
- package/server/inspect-agent-JFEaYTRa.js +0 -2
- package/server/merge-ops-DabXHp2i.js +0 -2
- package/server/merge-rebase-CXq0qsgR.js +0 -2
- package/server/public/assets/index-2wV4ipy_.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +0 -1
- package/server/pull-requests-jVGcVq5G.js +0 -2
- package/server/rally-CxhVgIQ6.js +0 -3
- package/server/settings-DhtPDmmI.js +0 -2
- package/server/specs-IYsFlM-L.js +0 -3
- package/server/supervisor-v0cYN2Vp.js +0 -2
- package/server/workflows-CfHm8lVd.js +0 -2
- package/sync-sources/skills/pan-gauntlet-loop/references/lessons.md +0 -60
|
@@ -1,60 +1,60 @@
|
|
|
1
1
|
import { a as __toCommonJS } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { $t as findProjectByPathSync, E as init_tier_table, Ft as isOverdeckWorkspaceRuntimePath, Gt as shouldCommitLegacyWorkspaceArtifacts, Hi as
|
|
3
|
-
import { c as getDashboardLoopbackApiUrlSync, p as init_config } from "./config-
|
|
4
|
-
import { l as init_activity_logger, o as emitActivityEntrySync, r as emitActivityEntryDurable } from "./activity-logger-
|
|
5
|
-
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-
|
|
6
|
-
import { $ as init_pane_choice_menu, C as init_tmux, E as killSession, G as setOption, H as sendRawKeystroke, N as listSessions, U as sessionExists, V as sendKeysAsync, W as sessionExistsSync, a as capturePaneText, ct as BLANKED_PROVIDER_ENV, dt as init_child_env, h as findManagedServerPidSync, j as listSessionNames, p as exactPaneTarget, r as capturePane, s as createSession, tt as paneHasBlockingChoiceMenu, ut as buildChildEnvWithoutTmuxSync, w as isHarnessProcessAlive } from "./tmux-
|
|
7
|
-
import { a as getWorkspaceForIssue, o as init_resolver } from "./resolver-
|
|
8
|
-
import { a as init_event_store, n as getEventStore } from "./event-store-
|
|
9
|
-
import { N as normalizeChannelReplyPayload, T as DomainEvent, n as COMPOSER_COMMAND_MANIFEST, s as getHarnessBehavior, t as init_src } from "./src-
|
|
10
|
-
import { f as init_agent_state_sync, h as stateToOverdeckParamsForDb, u as AGENT_COLUMNS_FOR_DB } from "./pipeline-agent-reader-
|
|
11
|
-
import { c as ReadModelService, d as getClosedIssueIdsForReadSource, i as EventStoreService, t as IssueLifecycle } from "./issue-lifecycle-
|
|
12
|
-
import { c as init_agents, g as logAgentLifecycleSync, h as init_persistent_logger, m as isTerminalIssueStage, p as getIssueStageSync } from "./agents-
|
|
13
|
-
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-
|
|
14
|
-
import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import { c as init_stack_health, o as getWorkspaceStackHealth } from "./stack-health-BQFSJc0l.js";
|
|
2
|
+
import { $t as findProjectByPathSync, Ai as encodeClaudeProjectDir, E as init_tier_table, Ft as isOverdeckWorkspaceRuntimePath, Gt as shouldCommitLegacyWorkspaceArtifacts, Hi as packageRoot, Ht as init_state_read_home, Kn as extractPrefixSync, Mt as init_state_plane, Nt as isGeneratedGitHookPath, O as resolveTieredExecutionEnabled, On as resolveProjectFromIssueSync, Or as resolveModel, Ri as getOverdeckHome, Rt as parsePorcelainStatusPaths, Ui as resolveOhmypiExtensionPath, Wt as resolveStateReadHomeSync, Yn as parseIssueIdSync, _n as listProjectsAsync, fn as init_projects, fr as getProviderForModelSync, g as jsYaml, h as init_js_yaml, k as resolveTieredExecutionEnabledForIssue, ki as claudeSessionTranscriptExists, l as isClaudeCodeChannelsEnabled, mr as piProviderForModel, on as getProjectSync, p as loadConfigSync, pr as init_providers, qn as init_issue_id, rr as init_harness_policy, sr as UnknownModelError, t as init_config_yaml, tr as canUseHarnessSync, zi as init_paths } from "./config-yaml-OoH-ZpTb.js";
|
|
3
|
+
import { c as getDashboardLoopbackApiUrlSync, p as init_config } from "./config-Cx3N6gWz.js";
|
|
4
|
+
import { l as init_activity_logger, o as emitActivityEntrySync, r as emitActivityEntryDurable } from "./activity-logger-ru8ggv-d.js";
|
|
5
|
+
import { d as getOverdeckDatabaseSync, f as init_infra } from "./infra-BbSWNOpH.js";
|
|
6
|
+
import { $ as init_pane_choice_menu, C as init_tmux, E as killSession, G as setOption, H as sendRawKeystroke, K as tmuxExecAsync, N as listSessions, U as sessionExists, V as sendKeysAsync, W as sessionExistsSync, a as capturePaneText, ct as BLANKED_PROVIDER_ENV, dt as init_child_env, h as findManagedServerPidSync, j as listSessionNames, p as exactPaneTarget, r as capturePane, s as createSession, tt as paneHasBlockingChoiceMenu, ut as buildChildEnvWithoutTmuxSync, w as isHarnessProcessAlive } from "./tmux-CvAEO9yo.js";
|
|
7
|
+
import { a as getWorkspaceForIssue, o as init_resolver } from "./resolver-tJeEkPK5.js";
|
|
8
|
+
import { a as init_event_store, n as getEventStore } from "./event-store-DbjldlXW.js";
|
|
9
|
+
import { N as normalizeChannelReplyPayload, T as DomainEvent, n as COMPOSER_COMMAND_MANIFEST, s as getHarnessBehavior, t as init_src } from "./src-CdwN6WY6.js";
|
|
10
|
+
import { f as init_agent_state_sync, h as stateToOverdeckParamsForDb, u as AGENT_COLUMNS_FOR_DB } from "./pipeline-agent-reader-DCCwbUj8.js";
|
|
11
|
+
import { c as ReadModelService, d as getClosedIssueIdsForReadSource, i as EventStoreService, t as IssueLifecycle } from "./issue-lifecycle-LgYeE1o2.js";
|
|
12
|
+
import { c as init_agents, g as logAgentLifecycleSync, h as init_persistent_logger, m as isTerminalIssueStage, p as getIssueStageSync } from "./agents-DMs1aLRU.js";
|
|
13
|
+
import { n as ensureSessionContextBriefingFile, r as init_briefing_freshness } from "./briefing-freshness-FF0WLPMc.js";
|
|
14
|
+
import { o as getPricingSync, s as init_cost, t as calculateCostSync } from "./cost-CxXv7ei-.js";
|
|
15
|
+
import { t as init_behavior } from "./behavior-CPX0E2Fj.js";
|
|
16
|
+
import { $r as piFifoPaths, A as saveAgentStateSync, At as init_agent_input_detection, Br as getAgentRuntimeBaseCommand, Ci as writeChannelsBridgeMcpConfig, Ct as getAgentWorkspace$1, Di as writePtyToken, Dr as init_spawn_prep, Dt as scanPendingInputsPromise, Ei as init_pty_token, F as writeAgentStateJsonSync, Ft as resumeAgent, H as waitForReadySignal, It as answerSessionPaneChoice, K as saveAgentRuntimeState, Kt as init_operator_interventions, L as clearReadySignal, Lt as captureSessionPaneChoice, Mt as parseCodexApprovalPrompt, Nr as resolveIssueWorkModel, Oi as init_pty_supervisor_locate, Ot as detectAwaitingInputForAgent, P as wipeAgentStateDirs, Pr as resolveStaffing, Qr as init_pi_fifo, Qt as getSessionId, Rt as init_session_pane_choice, S as markAgentStoppedState, Si as init_supervisor_channels, St as getAgentPendingQuestions$1, Ti as init_resume_contract, Tt as isBlockedOnPendingInput, U as getAgentRuntimeState, Ut as messageAgent, W as getAgentRuntimeStateSync, Wr as getProviderAuthMode, Xr as waitForAcpHostReady, Xt as getLatestSessionId, Yt as getActivity, Zr as waitForPromptReady, Zt as getLatestSessionIdSync, _n as listAgentStates, _r as init_bridge_token, _t as init_pending_decision_gate, ar as deliverAgentMessage, bi as dismissDevChannelsDialog, br as checkCodexAuthStatus, c as clearAgentTroubled, ci as determineModel, ct as init_tier_escalation, ei as init_ohmypi_fifo, f as getAgentDir, fi as init_provider_health, fr as setAgentDeliveryMethod, g as getAgentStateSync, gr as BRIDGE_TOKEN_HEADER, gt as detectPendingOperatorDecision, ht as restartAgent, j as setAgentPaused, jr as init_staffing, jt as normalizeAwaitingInputPrompt, k as saveAgentState, ki as resolvePtySupervisorScriptPath, kr as transitionIssueToInProgress, m as getAgentState, mt as recoverAgent, o as clearAgentPaused, or as deliverAgentPermissionDecision, pi as validateProviderHealth, pn as stopAgent, q as init_agents$1, qr as init_runtime_command, qt as operatorInterventionEvent, st as decideEscalation, ti as ohmypiFifoPaths, tn as saveSessionId, ui as getProviderExportsForModel, vn as listRunningAgents, vr as writeBridgeTokenSync, vt as computeAgentEnrichment, wi as buildResumeContract, wr as assertWorkspaceStackHealthyForSpawn, wt as init_agent_enrichment, xi as hasCompletionMarkerForAgent, xr as init_codex_auth, xt as getAgentJsonlPath$1, z as normalizeAgentId, zr as getAcpLauncherFields } from "./agent-state-BnyNoDWQ.js";
|
|
17
|
+
import { a as init_feature_registry_population, o as recordFeatureRegistryLifecycle } from "./post-merge-state-Cym5NVlB.js";
|
|
18
|
+
import { o as getInternalTokenSync, s as init_internal_token } from "./internal-token-CUKcTWSG.js";
|
|
19
|
+
import { A as init_conversations, C as getConversationByName, D as hasOtherActiveConversationOnTmuxSession, H as removeFavorite, I as markConversationActive, J as setConversationModel, K as setConversationEffort, L as markConversationEnded, P as listConversations, S as getConversationById, at as updateLastAttached, b as createConversation, g as backfillConversationModel, h as archiveConversation, ot as updateSpawnError, q as setConversationHarness, tt as updateConversationDeliveryMethod, y as clearConversationFailureState } from "./conversations-JyrMSeOh.js";
|
|
20
|
+
import { C as generateLauncherScriptSync, D as normalizeModelOverrideSync, E as init_model_validation, O as requireModelOverrideSync, S as normalizeFlywheelRunId, T as MODEL_ID_PATTERN, b as init_provenance, w as init_launcher_generator } from "./auto-spawn-consent-C1avLtkk.js";
|
|
21
|
+
import { a as init_claude_permissions, n as ensureClaudePermissionFlagSync, r as getClaudePermissionFlagsStringSync } from "./claude-permissions-Bn53HCXr.js";
|
|
22
|
+
import { A as piGlobalContextFile, D as init_layers, L as workspaceContextFile } from "./assemble-D88iFkP-.js";
|
|
23
|
+
import { i as prepareHarnessLaunch, r as init_harness_binary } from "./harness-binary-BuakhXkB.js";
|
|
24
|
+
import { c as init_stack_health, o as getWorkspaceStackHealth } from "./stack-health-DPXaoAus.js";
|
|
26
25
|
import { a as PAN_DIRNAME, i as PAN_CONTINUE_FILENAME, m as init_types } from "./types-pLpbsNto.js";
|
|
27
|
-
import { a as generateXBriefFilename, o as init_lifecycle } from "./lifecycle-
|
|
28
|
-
import { C as init_specs, O as writeSpecForIssue, d as readPlan, g as recordTierPromotion, h as readWorkspacePlanSync, p as readTierOverrides, r as findPlan, s as init_io } from "./io-
|
|
29
|
-
import { a as getDispatchableItems, c as init_dag } from "./dag-
|
|
30
|
-
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-
|
|
31
|
-
import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-
|
|
32
|
-
import { a as init_state_home, c as isStateMigrated } from "./state-home-
|
|
33
|
-
import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos, s as resolvePrimaryWorkspaceRepoDirSync } from "./project-repos
|
|
34
|
-
import { a as init_lifecycle_io, c as updatePlanStatus, s as transitionXBriefOnMain } from "./lifecycle-io-
|
|
35
|
-
import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-
|
|
36
|
-
import { i as issue_service_singleton_exports, n as init_issue_service_singleton } from "./issue-service-singleton-
|
|
37
|
-
import { d as getReviewStatusSync, h as loadReviewStatuses, o as clearWorkspaceStuck, p as init_review_status, w as setReviewStatusSync } from "./review-status-
|
|
38
|
-
import { S as parseAcpConversationMessages, b as parseCodexConversationMessages, c as parseEntireConversation, g as init_ohmypi_conversation_parser, h as parsePiConversationMessages, p as init_pi_conversation_parser, t as init_conversation_service, v as parseOhmypiConversationMessages, x as init_acp_conversation_parser, y as init_codex_conversation_parser } from "./conversation-service-
|
|
39
|
-
import { i as resolveAgentHarness, l as resolvePiSessionPath, n as readLauncherPinnedSessionId, o as resolveCodexRolloutPath, r as resolveAcpTranscriptPath, t as init_jsonl_resolver } from "./jsonl-resolver-
|
|
40
|
-
import { G as liveOrderIssueLookup, H as getBook, T as resolveLiveFlywheelRunId, w as readFlywheelLaunchMetadata, y as getFlywheelRunDir, z as computeBookProgress } from "./flywheel-
|
|
41
|
-
import { t as resolveAgentGitInfo } from "./git-info-
|
|
42
|
-
import {
|
|
43
|
-
import { o as stopWorkspaceDocker, r as init_workspace_manager } from "./workspace-manager-
|
|
44
|
-
import "./deacon-
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
26
|
+
import { a as generateXBriefFilename, o as init_lifecycle } from "./lifecycle-BibLMHBH.js";
|
|
27
|
+
import { C as init_specs, O as writeSpecForIssue, d as readPlan, g as recordTierPromotion, h as readWorkspacePlanSync, p as readTierOverrides, r as findPlan, s as init_io } from "./io-BgzG56av.js";
|
|
28
|
+
import { a as getDispatchableItems, c as init_dag } from "./dag-CKUsr8wB.js";
|
|
29
|
+
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-CISjc9FR.js";
|
|
30
|
+
import { a as loadCloisterConfigSync, r as init_config$1 } from "./config-DP0VV7rX.js";
|
|
31
|
+
import { a as init_state_home, c as isStateMigrated } from "./state-home-BhI8O5lU.js";
|
|
32
|
+
import { d as resolveWorkspaceRepoRootsSync, i as init_project_repos, s as resolvePrimaryWorkspaceRepoDirSync } from "./project-repos-DqAT7YV6.js";
|
|
33
|
+
import { a as init_lifecycle_io, c as updatePlanStatus, s as transitionXBriefOnMain } from "./lifecycle-io-CCCAMefe.js";
|
|
34
|
+
import { a as init_tracker_config, t as getGitHubConfig } from "./tracker-config-BjqwtkcT.js";
|
|
35
|
+
import { i as issue_service_singleton_exports, n as init_issue_service_singleton } from "./issue-service-singleton-Bsb0GaY8.js";
|
|
36
|
+
import { d as getReviewStatusSync, h as loadReviewStatuses, o as clearWorkspaceStuck, p as init_review_status, w as setReviewStatusSync } from "./review-status-C3PJkfjv.js";
|
|
37
|
+
import { S as parseAcpConversationMessages, b as parseCodexConversationMessages, c as parseEntireConversation, g as init_ohmypi_conversation_parser, h as parsePiConversationMessages, p as init_pi_conversation_parser, t as init_conversation_service, v as parseOhmypiConversationMessages, x as init_acp_conversation_parser, y as init_codex_conversation_parser } from "./conversation-service-zgLM2g2D.js";
|
|
38
|
+
import { i as resolveAgentHarness, l as resolvePiSessionPath, n as readLauncherPinnedSessionId, o as resolveCodexRolloutPath, r as resolveAcpTranscriptPath, t as init_jsonl_resolver } from "./jsonl-resolver-BJ8Hg-yD.js";
|
|
39
|
+
import { G as liveOrderIssueLookup, H as getBook, T as resolveLiveFlywheelRunId, w as readFlywheelLaunchMetadata, y as getFlywheelRunDir, z as computeBookProgress } from "./flywheel-D5FchYg4.js";
|
|
40
|
+
import { t as resolveAgentGitInfo } from "./git-info-DMOSfJ9I.js";
|
|
41
|
+
import { f as getResourceConfig, m as getSystemHealthSnapshot, n as classifyMemoryPressure } from "./memory-governor-Mi5zF5zw.js";
|
|
42
|
+
import { o as stopWorkspaceDocker, r as init_workspace_manager } from "./workspace-manager-Db3pCmr7.js";
|
|
43
|
+
import "./deacon-C7qZxRuW.js";
|
|
44
|
+
import { i as performHandoff, o as getAgentHealth, r as checkAllTriggers, t as getCloisterService } from "./service-D1SZCxH8.js";
|
|
45
|
+
import { a as init_jsonl_parser, o as normalizeModelName } from "./jsonl-parser-1IqHI9Yb.js";
|
|
46
|
+
import { i as getRuntimeForAgent } from "./agent-idle-CQlwmcRR.js";
|
|
47
|
+
import { t as recordReviewVerdict } from "./review-verdict-writer-BcG5RBWF.js";
|
|
48
|
+
import { r as REVIEW_SUB_ROLES } from "./review-convoy-liveness-C9F1Q1LN.js";
|
|
49
|
+
import { t as createInFlightGuard } from "./in-flight-guard-B7khcBdQ.js";
|
|
50
|
+
import { a as loadWorkspaceMetadataSync } from "./workspace-metadata-C5Ie2FMZ.js";
|
|
51
|
+
import { t as resolveReviewParentRunState } from "./review-run-recovery-C5TEICtx.js";
|
|
52
52
|
import { basename, delimiter, dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
53
53
|
import { Cause, Data, Effect, Layer, Option, Schema, Stream } from "effect";
|
|
54
|
-
import { homedir, networkInterfaces } from "node:os";
|
|
54
|
+
import { homedir, networkInterfaces, tmpdir } from "node:os";
|
|
55
55
|
import { createReadStream, existsSync, mkdirSync, readFileSync, realpathSync, renameSync, writeFileSync } from "node:fs";
|
|
56
56
|
import { HttpRouter, HttpServerRequest, HttpServerResponse } from "effect/unstable/http";
|
|
57
|
-
import { access, appendFile, chmod, lstat, mkdir, open, readFile, readdir, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
57
|
+
import { access, appendFile, chmod, lstat, mkdir, open, readFile, readdir, realpath, rename, rm, stat, unlink, writeFile } from "node:fs/promises";
|
|
58
58
|
import { randomUUID } from "crypto";
|
|
59
59
|
import { createHash as createHash$1, createHmac, randomBytes, randomUUID as randomUUID$1, timingSafeEqual } from "node:crypto";
|
|
60
60
|
import { exec, execFile, spawn } from "node:child_process";
|
|
@@ -1893,7 +1893,7 @@ const getAgentOutputRoute = HttpRouter.add("GET", "/api/agents/:id/output", http
|
|
|
1893
1893
|
} catch {}
|
|
1894
1894
|
let stdout;
|
|
1895
1895
|
if (isRemote && vmName) {
|
|
1896
|
-
const { getRemoteAgentOutput } = await import("./remote-agents-
|
|
1896
|
+
const { getRemoteAgentOutput } = await import("./remote-agents-MbWzm5Fh.js");
|
|
1897
1897
|
stdout = await getRemoteAgentOutput(id, vmName, parseInt(String(lines), 10) || 100);
|
|
1898
1898
|
} else stdout = await Effect.runPromise(capturePane(id, parseInt(String(lines), 10) || 100));
|
|
1899
1899
|
if (!stdout || stdout.trim() === "" || stdout.trim() === "Session not found") {
|
|
@@ -2724,7 +2724,7 @@ async function cleanupConversationAttachments(name) {
|
|
|
2724
2724
|
* sessions that the lifecycle poller missed. */
|
|
2725
2725
|
async function cleanupOrphanedConversationAttachments() {
|
|
2726
2726
|
try {
|
|
2727
|
-
const { listConversations } = await import("./conversations-
|
|
2727
|
+
const { listConversations } = await import("./conversations-Ch7UGi0F.js");
|
|
2728
2728
|
const convNames = new Set(listConversations().map((c) => c.name));
|
|
2729
2729
|
const root = getConversationAttachmentsRoot();
|
|
2730
2730
|
await runInBatches((await readdir(root, { withFileTypes: true })).filter((entry) => entry.isDirectory() && !convNames.has(entry.name)).map((entry) => join(root, entry.name)), 10, (path) => rm(path, {
|
|
@@ -3071,12 +3071,16 @@ async function waitForClaudeReady(tmuxSession) {
|
|
|
3071
3071
|
console.warn(`[conversations] Timed out waiting for Claude Code prompt in ${tmuxSession}`);
|
|
3072
3072
|
}
|
|
3073
3073
|
function isPiTuiInputReady(snapshot) {
|
|
3074
|
-
return /^\s*[❯›>]\s/m.test(snapshot) || /(?:^|\s)0(?:\.\d+)?%\s+context\s+used\b/i.test(snapshot)
|
|
3074
|
+
return /^\s*[❯›>]\s/m.test(snapshot) || /(?:^|\s)0(?:\.\d+)?%\s+context\s+used\b/i.test(snapshot);
|
|
3075
3075
|
}
|
|
3076
3076
|
async function waitForPiTuiReady(tmuxSession, timeoutMs = 6e4) {
|
|
3077
3077
|
const deadline = Date.now() + timeoutMs;
|
|
3078
|
+
let stableV17FooterPolls = 0;
|
|
3078
3079
|
while (Date.now() < deadline) {
|
|
3079
|
-
|
|
3080
|
+
const snapshot = await Effect.runPromise(capturePane(tmuxSession, 40).pipe(Effect.catch(() => Effect.succeed(""))));
|
|
3081
|
+
const mcpConnecting = /Connecting to MCP servers/i.test(snapshot) && !/MCP finished/i.test(snapshot);
|
|
3082
|
+
stableV17FooterPolls = /⬢[^\n]*[◕◉]/.test(snapshot) && !mcpConnecting ? stableV17FooterPolls + 1 : 0;
|
|
3083
|
+
if (isPiTuiInputReady(snapshot) || stableV17FooterPolls >= 21) {
|
|
3080
3084
|
console.log(`[conversations] Pi TUI ready for ${tmuxSession}`);
|
|
3081
3085
|
return true;
|
|
3082
3086
|
}
|
|
@@ -3329,8 +3333,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
|
|
|
3329
3333
|
} else if (model) {
|
|
3330
3334
|
if (!SAFE_MODEL_PATTERN.test(model)) throw new Error("Invalid model name");
|
|
3331
3335
|
runtimeCommand = await getAgentRuntimeBaseCommand(model, void 0, void 0, harness);
|
|
3332
|
-
|
|
3333
|
-
if (!runtimeCommand.includes("--permission-mode")) runtimeCommand = `${runtimeCommand} --permission-mode ${mode === "auto" ? "auto" : BYPASS_PERMISSION_MODE}`;
|
|
3336
|
+
runtimeCommand = ensureClaudePermissionFlagSync(runtimeCommand);
|
|
3334
3337
|
providerExportsStr = (await getProviderExportsForModel(model, harness)).trim();
|
|
3335
3338
|
if (behavior.transcriptKind === "ohmypi-jsonl") {
|
|
3336
3339
|
if (getProviderForModelSync(model).name === "openai") {
|
|
@@ -3363,7 +3366,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
|
|
|
3363
3366
|
const codexApprovalPolicy = codexPermMode === "full-access" ? "never" : "on-request";
|
|
3364
3367
|
const codexSandboxMode = codexPermMode === "full-access" ? "danger-full-access" : codexPermMode === "read-only" ? "read-only" : "workspace-write";
|
|
3365
3368
|
const codexApprovalsReviewer = codexPermMode === "auto-review" ? "auto_review" : void 0;
|
|
3366
|
-
const { initCodexHome, extractThreadIdFromRollout } = await import("./codex-
|
|
3369
|
+
const { initCodexHome, extractThreadIdFromRollout } = await import("./codex-BqLZKVNm.js");
|
|
3367
3370
|
initCodexHome(codexHome, {
|
|
3368
3371
|
trustedDir: cwd,
|
|
3369
3372
|
approvalPolicy: codexApprovalPolicy,
|
|
@@ -3383,7 +3386,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
|
|
|
3383
3386
|
if (resume) {
|
|
3384
3387
|
const pinnedId = await readFile(join(getOverdeckHome(), "agents", tmuxSession, "kimi-session-id"), "utf-8").then((value) => value.trim() || void 0).catch(() => void 0);
|
|
3385
3388
|
if (pinnedId) {
|
|
3386
|
-
const { kimiSessionsRoot } = await import("./kimi-code-
|
|
3389
|
+
const { kimiSessionsRoot } = await import("./kimi-code-Cdkk9vRU.js");
|
|
3387
3390
|
if (await stat(join(kimiSessionsRoot(join(homedir(), ".kimi-code"), cwd), pinnedId, "agents", "main", "wire.jsonl")).then(() => true, () => false)) kimiResumeSessionId = pinnedId;
|
|
3388
3391
|
}
|
|
3389
3392
|
}
|
|
@@ -3416,7 +3419,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
|
|
|
3416
3419
|
const launchTmuxAndCaptureSession = async () => {
|
|
3417
3420
|
let kimiExistingSessionsBefore;
|
|
3418
3421
|
if (kimiCodeFields && !kimiCodeFields.resumeSessionId) try {
|
|
3419
|
-
const { kimiSessionsRoot } = await import("./kimi-code-
|
|
3422
|
+
const { kimiSessionsRoot } = await import("./kimi-code-Cdkk9vRU.js");
|
|
3420
3423
|
kimiExistingSessionsBefore = new Set(await readdir(kimiSessionsRoot(join(homedir(), ".kimi-code"), cwd)));
|
|
3421
3424
|
} catch {
|
|
3422
3425
|
kimiExistingSessionsBefore = /* @__PURE__ */ new Set();
|
|
@@ -3455,7 +3458,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
|
|
|
3455
3458
|
} catch {}
|
|
3456
3459
|
console.log(`[claude-invoke] purpose=conversation-session | model=${model || "default"} | source=conversations.ts:spawnConversationSession | session=${tmuxSession} | resume=${resume} | command="${runtimeCommand}"`);
|
|
3457
3460
|
try {
|
|
3458
|
-
const { preTrustDirectory } = await import("./workspace-manager-
|
|
3461
|
+
const { preTrustDirectory } = await import("./workspace-manager-gz9Amovn.js");
|
|
3459
3462
|
preTrustDirectory(cwd);
|
|
3460
3463
|
} catch {}
|
|
3461
3464
|
try {
|
|
@@ -3472,7 +3475,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
|
|
|
3472
3475
|
const codexHomeDir = codexFields.codexHome;
|
|
3473
3476
|
(async () => {
|
|
3474
3477
|
try {
|
|
3475
|
-
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-
|
|
3478
|
+
const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-BqLZKVNm.js");
|
|
3476
3479
|
const rollout = await waitForCodexRollout(codexHomeDir, 12e4);
|
|
3477
3480
|
if (rollout) {
|
|
3478
3481
|
const threadId = extractThreadIdFromRollout(rollout);
|
|
@@ -3482,14 +3485,14 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
|
|
|
3482
3485
|
})();
|
|
3483
3486
|
}
|
|
3484
3487
|
if (kimiCodeFields && kimiExistingSessionsBefore) {
|
|
3485
|
-
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-
|
|
3488
|
+
const { waitForNewKimiSessionAsync, writeKimiSessionId } = await import("./kimi-code-Cdkk9vRU.js");
|
|
3486
3489
|
const sessionId = await waitForNewKimiSessionAsync(join(homedir(), ".kimi-code"), cwd, kimiExistingSessionsBefore);
|
|
3487
3490
|
if (!sessionId) throw new Error(`kimi-code session capture timed out for ${tmuxSession} — no new session directory appeared under the workspace bucket`);
|
|
3488
3491
|
writeKimiSessionId(tmuxSession, sessionId);
|
|
3489
3492
|
}
|
|
3490
3493
|
};
|
|
3491
3494
|
if (kimiCodeFields) {
|
|
3492
|
-
const { withKimiSessionCaptureLock } = await import("./kimi-code-
|
|
3495
|
+
const { withKimiSessionCaptureLock } = await import("./kimi-code-Cdkk9vRU.js");
|
|
3493
3496
|
await withKimiSessionCaptureLock(join(homedir(), ".kimi-code"), cwd, launchTmuxAndCaptureSession);
|
|
3494
3497
|
} else await launchTmuxAndCaptureSession();
|
|
3495
3498
|
if (channelsBridgeMcpConfig) dismissDevChannelsDialog(tmuxSession).catch((err) => {
|
|
@@ -3759,6 +3762,184 @@ async function handleConversationRestartAll(deps) {
|
|
|
3759
3762
|
}
|
|
3760
3763
|
}
|
|
3761
3764
|
//#endregion
|
|
3765
|
+
//#region ../../lib/pi-ask-modal.ts
|
|
3766
|
+
/**
|
|
3767
|
+
* PAN-3766 follow-up — answer an ohmypi `ask` modal from the dashboard.
|
|
3768
|
+
*
|
|
3769
|
+
* The conversation message route cannot answer a pi ask: the control channel's
|
|
3770
|
+
* steer/prompt lands in pi's input queue, but the modal holds the UI, so the
|
|
3771
|
+
* answer is swallowed and the agent stays parked. The only way through is to
|
|
3772
|
+
* drive the modal itself with keystrokes, exactly like the codex-approval and
|
|
3773
|
+
* pane-choice paths do for their native menus.
|
|
3774
|
+
*
|
|
3775
|
+
* Safety model mirrors answerSessionPaneChoice: re-verify the live state before
|
|
3776
|
+
* touching the session (pending ask in the transcript, modal footer and
|
|
3777
|
+
* question text on screen, cursor position parsed from the pane), then confirm
|
|
3778
|
+
* the modal is gone afterwards. Any drift returns 409 and the operator answers
|
|
3779
|
+
* in the terminal instead.
|
|
3780
|
+
*/
|
|
3781
|
+
init_agent_enrichment();
|
|
3782
|
+
init_jsonl_resolver();
|
|
3783
|
+
init_tmux();
|
|
3784
|
+
const PANE_CAPTURE_LINES = 90;
|
|
3785
|
+
const KEYSTROKE_GAP_MS = 60;
|
|
3786
|
+
const DELIVERY_CONFIRM_WAIT_MS = 700;
|
|
3787
|
+
/** The modal footer hint — the same signature the pane detector keys on. */
|
|
3788
|
+
const PI_ASK_FOOTER_RE = /Enter\s+select\b.*Esc\s+cancel/i;
|
|
3789
|
+
/** Cursor on a numbered option: "❯ ○ 1 · Label" (boxed) or "❯ 1 - Label". */
|
|
3790
|
+
const PI_ASK_CURSOR_NUMBERED_RE = /❯\s*○?\s*(\d+)\s*[·.\-]/;
|
|
3791
|
+
const PI_ASK_CURSOR_OTHER_RE = /❯\s*○?\s*Other\b/i;
|
|
3792
|
+
/** Strip box-drawing chrome and collapse whitespace so wrapped pane lines compare cleanly. */
|
|
3793
|
+
function normalizePaneText(text) {
|
|
3794
|
+
return text.replace(/[╭╮╰╯│├┤┌┐└┘─┬┴┼]/g, " ").replace(/\s+/g, " ").trim();
|
|
3795
|
+
}
|
|
3796
|
+
/** Paste text into the modal's Other input — no Enter; the caller sends that separately. */
|
|
3797
|
+
async function pasteTextIntoSession(sessionName, text) {
|
|
3798
|
+
const sendId = randomUUID$1();
|
|
3799
|
+
const tmpFile = join(tmpdir(), `pan-pi-ask-${sendId}.txt`);
|
|
3800
|
+
const bufferName = `pan-pi-ask-${sendId}`;
|
|
3801
|
+
try {
|
|
3802
|
+
await writeFile(tmpFile, text, "utf-8");
|
|
3803
|
+
await tmuxExecAsync([
|
|
3804
|
+
"load-buffer",
|
|
3805
|
+
"-b",
|
|
3806
|
+
bufferName,
|
|
3807
|
+
tmpFile
|
|
3808
|
+
], { encoding: "utf-8" });
|
|
3809
|
+
await tmuxExecAsync([
|
|
3810
|
+
"paste-buffer",
|
|
3811
|
+
"-b",
|
|
3812
|
+
bufferName,
|
|
3813
|
+
"-p",
|
|
3814
|
+
"-t",
|
|
3815
|
+
exactPaneTarget(sessionName)
|
|
3816
|
+
], { encoding: "utf-8" });
|
|
3817
|
+
} finally {
|
|
3818
|
+
await unlink(tmpFile).catch(() => {});
|
|
3819
|
+
}
|
|
3820
|
+
}
|
|
3821
|
+
/**
|
|
3822
|
+
* The cursor's current item position (0-based): numbered options come first,
|
|
3823
|
+
* then "Other (type your own)" as the final item. Null when unparseable.
|
|
3824
|
+
*/
|
|
3825
|
+
function piAskCursorPosition(pane, optionCount) {
|
|
3826
|
+
const lines = pane.split("\n");
|
|
3827
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
3828
|
+
const line = lines[i];
|
|
3829
|
+
const numbered = PI_ASK_CURSOR_NUMBERED_RE.exec(line);
|
|
3830
|
+
if (numbered) {
|
|
3831
|
+
const n = Number(numbered[1]);
|
|
3832
|
+
if (n >= 1 && n <= optionCount) return n - 1;
|
|
3833
|
+
return null;
|
|
3834
|
+
}
|
|
3835
|
+
if (PI_ASK_CURSOR_OTHER_RE.test(line)) return optionCount;
|
|
3836
|
+
}
|
|
3837
|
+
return null;
|
|
3838
|
+
}
|
|
3839
|
+
async function answerPiAskModal(sessionName, body, deps = {}) {
|
|
3840
|
+
try {
|
|
3841
|
+
const toolUseId = typeof body["toolUseId"] === "string" ? body["toolUseId"] : "";
|
|
3842
|
+
if (!toolUseId) return {
|
|
3843
|
+
body: { error: "toolUseId is required" },
|
|
3844
|
+
status: 400
|
|
3845
|
+
};
|
|
3846
|
+
const answers = body["answers"];
|
|
3847
|
+
if (!Array.isArray(answers) || answers.length !== 1 || typeof answers[0] !== "string" || !answers[0].trim()) return {
|
|
3848
|
+
body: { error: "answers must contain exactly one non-empty string" },
|
|
3849
|
+
status: 400
|
|
3850
|
+
};
|
|
3851
|
+
const answer = answers[0].trim();
|
|
3852
|
+
if (!await (deps.sessionExists ?? ((name) => Effect.runPromise(sessionExists(name))))(sessionName)) return {
|
|
3853
|
+
body: { error: "Conversation session is not running" },
|
|
3854
|
+
status: 409
|
|
3855
|
+
};
|
|
3856
|
+
const resolveTranscript = deps.resolveTranscript ?? ((name) => resolvePiSessionPath(name));
|
|
3857
|
+
const scanTranscript = deps.scanTranscript ?? scanPendingInputsPromise;
|
|
3858
|
+
const transcript = await resolveTranscript(sessionName);
|
|
3859
|
+
const pending = (transcript ? await scanTranscript(transcript) : null)?.askUserQuestions.find((q) => q.toolId === toolUseId);
|
|
3860
|
+
if (!pending) return {
|
|
3861
|
+
body: {
|
|
3862
|
+
error: "The question is no longer pending — it was answered or superseded",
|
|
3863
|
+
code: "ask-gone"
|
|
3864
|
+
},
|
|
3865
|
+
status: 409
|
|
3866
|
+
};
|
|
3867
|
+
if (pending.questions.length !== 1) return {
|
|
3868
|
+
body: {
|
|
3869
|
+
error: "This ask has multiple questions; answer it in the terminal",
|
|
3870
|
+
code: "multi-question-unsupported"
|
|
3871
|
+
},
|
|
3872
|
+
status: 409
|
|
3873
|
+
};
|
|
3874
|
+
const question = pending.questions[0];
|
|
3875
|
+
const capture = deps.capture ?? capturePaneText;
|
|
3876
|
+
const sendKey = deps.sendKey ?? ((name, key) => Effect.runPromise(sendRawKeystroke(name, key, "pi-ask-answer")));
|
|
3877
|
+
const sendText = deps.sendText ?? pasteTextIntoSession;
|
|
3878
|
+
const sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
3879
|
+
const pane = await capture(sessionName, PANE_CAPTURE_LINES);
|
|
3880
|
+
if (!PI_ASK_FOOTER_RE.test(pane)) return {
|
|
3881
|
+
body: {
|
|
3882
|
+
error: "The ask modal is no longer on screen",
|
|
3883
|
+
code: "modal-gone"
|
|
3884
|
+
},
|
|
3885
|
+
status: 409
|
|
3886
|
+
};
|
|
3887
|
+
const paneNorm = normalizePaneText(pane);
|
|
3888
|
+
const questionNorm = normalizePaneText(question.question).slice(0, 40);
|
|
3889
|
+
if (questionNorm.length >= 12 && !paneNorm.includes(questionNorm)) return {
|
|
3890
|
+
body: {
|
|
3891
|
+
error: "The ask modal changed since the dialog was rendered — refresh and re-answer",
|
|
3892
|
+
code: "modal-changed"
|
|
3893
|
+
},
|
|
3894
|
+
status: 409
|
|
3895
|
+
};
|
|
3896
|
+
const optionIndex = question.options.findIndex((o) => o.label.trim() === answer);
|
|
3897
|
+
const isCustomText = optionIndex < 0;
|
|
3898
|
+
const targetPosition = isCustomText ? question.options.length : optionIndex;
|
|
3899
|
+
const cursor = piAskCursorPosition(pane, question.options.length);
|
|
3900
|
+
if (cursor === null) return {
|
|
3901
|
+
body: {
|
|
3902
|
+
error: "Could not read the modal cursor — answer it from the terminal",
|
|
3903
|
+
code: "cursor-unknown"
|
|
3904
|
+
},
|
|
3905
|
+
status: 409
|
|
3906
|
+
};
|
|
3907
|
+
const delta = targetPosition - cursor;
|
|
3908
|
+
const navKey = delta > 0 ? "Down" : "Up";
|
|
3909
|
+
for (let i = 0; i < Math.abs(delta); i++) {
|
|
3910
|
+
await sendKey(sessionName, navKey);
|
|
3911
|
+
await sleep(KEYSTROKE_GAP_MS);
|
|
3912
|
+
}
|
|
3913
|
+
await sendKey(sessionName, "Enter");
|
|
3914
|
+
if (isCustomText) {
|
|
3915
|
+
await sleep(KEYSTROKE_GAP_MS * 3);
|
|
3916
|
+
await sendText(sessionName, answer);
|
|
3917
|
+
await sleep(KEYSTROKE_GAP_MS);
|
|
3918
|
+
await sendKey(sessionName, "Enter");
|
|
3919
|
+
}
|
|
3920
|
+
await sleep(DELIVERY_CONFIRM_WAIT_MS);
|
|
3921
|
+
const after = await capture(sessionName, PANE_CAPTURE_LINES);
|
|
3922
|
+
if (PI_ASK_FOOTER_RE.test(after)) return {
|
|
3923
|
+
body: {
|
|
3924
|
+
error: "Keystrokes were sent but the modal is still on screen — answer it from the terminal",
|
|
3925
|
+
code: "delivery-unconfirmed"
|
|
3926
|
+
},
|
|
3927
|
+
status: 409
|
|
3928
|
+
};
|
|
3929
|
+
return { body: {
|
|
3930
|
+
ok: true,
|
|
3931
|
+
answeredLabel: isCustomText ? answer : question.options[optionIndex].label
|
|
3932
|
+
} };
|
|
3933
|
+
} catch (error) {
|
|
3934
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
3935
|
+
console.error("[sessions] pi-ask answer failed:", message);
|
|
3936
|
+
return {
|
|
3937
|
+
body: { error: "Internal server error" },
|
|
3938
|
+
status: 500
|
|
3939
|
+
};
|
|
3940
|
+
}
|
|
3941
|
+
}
|
|
3942
|
+
//#endregion
|
|
3762
3943
|
//#region ../../lib/overdeck/conversation-delivery.ts
|
|
3763
3944
|
init_agent_input_detection();
|
|
3764
3945
|
init_conversations();
|
|
@@ -3972,6 +4153,40 @@ async function deliverConversationViaControlChannel(conv, message, options) {
|
|
|
3972
4153
|
source: options.source
|
|
3973
4154
|
});
|
|
3974
4155
|
}
|
|
4156
|
+
/**
|
|
4157
|
+
* PAN-3766 follow-up — answer a pi conversation's `ask` modal. The control
|
|
4158
|
+
* channel cannot do it: a steer queues behind the modal and is never seen.
|
|
4159
|
+
* The answer must drive the modal with keystrokes (see pi-ask-modal.ts).
|
|
4160
|
+
*/
|
|
4161
|
+
async function handleConversationPiAskAnswer(rawId, body, deps = {}) {
|
|
4162
|
+
try {
|
|
4163
|
+
const numericId = Number(rawId);
|
|
4164
|
+
const conv = !Number.isNaN(numericId) && /^\d+$/.test(rawId) ? getConversationById(numericId) : getConversationByName(rawId);
|
|
4165
|
+
if (!conv) return {
|
|
4166
|
+
body: { error: "Conversation not found" },
|
|
4167
|
+
status: 404
|
|
4168
|
+
};
|
|
4169
|
+
if (!isPiControlChannelHarness(conv.harness ?? "claude-code")) return {
|
|
4170
|
+
body: { error: "Not a Pi conversation" },
|
|
4171
|
+
status: 400
|
|
4172
|
+
};
|
|
4173
|
+
if (conv.status === "ended") return {
|
|
4174
|
+
body: { error: "Session has ended — start a new run to interact" },
|
|
4175
|
+
status: 422
|
|
4176
|
+
};
|
|
4177
|
+
return await answerPiAskModal(conv.tmuxSession, body, {
|
|
4178
|
+
...deps,
|
|
4179
|
+
sessionExists: deps.sessionExists ?? tmuxSessionExists
|
|
4180
|
+
});
|
|
4181
|
+
} catch (error) {
|
|
4182
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
4183
|
+
console.error("[conversations] pi ask answer failed:", msg);
|
|
4184
|
+
return {
|
|
4185
|
+
body: { error: "Internal server error" },
|
|
4186
|
+
status: 500
|
|
4187
|
+
};
|
|
4188
|
+
}
|
|
4189
|
+
}
|
|
3975
4190
|
async function handleConversationThinkingLevel(name, body) {
|
|
3976
4191
|
const conv = getConversationByName(name);
|
|
3977
4192
|
if (!conv) return jsonResponse({ error: "Conversation not found" }, { status: 404 });
|
|
@@ -4447,7 +4662,7 @@ const postInternalAgentPermissionRequestRoute = HttpRouter.add("POST", "/api/int
|
|
|
4447
4662
|
error: "missing agent id"
|
|
4448
4663
|
}, { status: 400 });
|
|
4449
4664
|
const request = yield* HttpServerRequest.HttpServerRequest;
|
|
4450
|
-
const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-
|
|
4665
|
+
const { INTERNAL_TOKEN_HEADER, getInternalTokenSync } = yield* Effect.promise(() => import("./internal-token-CkrMLCLU.js"));
|
|
4451
4666
|
const expected = getInternalTokenSync();
|
|
4452
4667
|
if (!expected) return jsonResponse({
|
|
4453
4668
|
ok: false,
|
|
@@ -4744,7 +4959,7 @@ const getAgentHealthHistoryRoute = HttpRouter.add("GET", "/api/agents/:id/health
|
|
|
4744
4959
|
const request = yield* HttpServerRequest.HttpServerRequest;
|
|
4745
4960
|
const urlOpt = HttpServerRequest.toURL(request);
|
|
4746
4961
|
const hours = Option.isSome(urlOpt) ? urlOpt.value.searchParams.get("hours") ?? "24" : "24";
|
|
4747
|
-
const { getHealthHistory } = yield* Effect.promise(() => import("./health-events-
|
|
4962
|
+
const { getHealthHistory } = yield* Effect.promise(() => import("./health-events-9RhRGZK1.js"));
|
|
4748
4963
|
const endTime = /* @__PURE__ */ new Date();
|
|
4749
4964
|
const startTime = /* @__PURE__ */ new Date(endTime.getTime() - parseInt(hours) * 60 * 60 * 1e3);
|
|
4750
4965
|
const events = getHealthHistory(id, startTime.toISOString(), endTime.toISOString());
|
|
@@ -4759,7 +4974,7 @@ function emitAgentRuntimeEvent(id, body, timestamp) {
|
|
|
4759
4974
|
return Effect.gen(function* () {
|
|
4760
4975
|
let eventBody = body;
|
|
4761
4976
|
if (body["kind"] === "linear_mcp_auth_required" || body["kind"] === "linear_mcp_auth_healthy") {
|
|
4762
|
-
const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-
|
|
4977
|
+
const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-GK2Uy8zc.js"));
|
|
4763
4978
|
const snapshot = yield* (yield* AgentStateService).get(id);
|
|
4764
4979
|
eventBody = {
|
|
4765
4980
|
...body,
|
|
@@ -4794,7 +5009,7 @@ function emitAgentRuntimeEvent(id, body, timestamp) {
|
|
|
4794
5009
|
detail: String(decoded.failure)
|
|
4795
5010
|
}, { status: 400 })
|
|
4796
5011
|
};
|
|
4797
|
-
const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-
|
|
5012
|
+
const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-GK2Uy8zc.js"));
|
|
4798
5013
|
yield* (yield* AgentStateService).emit(decoded.success);
|
|
4799
5014
|
return {
|
|
4800
5015
|
ok: true,
|
|
@@ -4875,13 +5090,13 @@ const postAgentPlanChecklistRoute = HttpRouter.add("POST", "/api/agents/:id/plan
|
|
|
4875
5090
|
const auth = yield* Effect.promise(() => validateAgentRuntimeEventAuth(request));
|
|
4876
5091
|
if (!auth.ok) return auth.response;
|
|
4877
5092
|
const id = (yield* HttpRouter.params)["id"] ?? "";
|
|
4878
|
-
const { getAgentState } = yield* Effect.promise(() => import("./agents-
|
|
5093
|
+
const { getAgentState } = yield* Effect.promise(() => import("./agents-BdkVgjxC.js"));
|
|
4879
5094
|
const state = yield* getAgentState(id);
|
|
4880
5095
|
if (!state?.workspace || !state.issueId) return jsonResponse({
|
|
4881
5096
|
success: false,
|
|
4882
5097
|
error: "agent has no resolvable workspace or issue id"
|
|
4883
5098
|
}, { status: 422 });
|
|
4884
|
-
const { checkIncompletePlanItemsPromise } = yield* Effect.promise(() => import("./done-preflight-
|
|
5099
|
+
const { checkIncompletePlanItemsPromise } = yield* Effect.promise(() => import("./done-preflight-AiXnYYAy.js"));
|
|
4885
5100
|
const incomplete = yield* Effect.promise(() => checkIncompletePlanItemsPromise(state.workspace, state.issueId));
|
|
4886
5101
|
return jsonResponse({
|
|
4887
5102
|
success: true,
|
|
@@ -4895,7 +5110,7 @@ const getAgentRuntimeRoute = HttpRouter.add("GET", "/api/agents/:id/runtime", ht
|
|
|
4895
5110
|
success: false,
|
|
4896
5111
|
error: "missing agent id"
|
|
4897
5112
|
}, { status: 400 });
|
|
4898
|
-
const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-
|
|
5113
|
+
const { AgentStateService } = yield* Effect.promise(() => import("./agent-state-service-GK2Uy8zc.js"));
|
|
4899
5114
|
const snapshot = yield* (yield* AgentStateService).get(id);
|
|
4900
5115
|
if (!snapshot) return jsonResponse({
|
|
4901
5116
|
success: false,
|
|
@@ -5086,8 +5301,8 @@ function createAgentStopHandler(lifecycleEvent) {
|
|
|
5086
5301
|
yield* stopAgent(id, "operator");
|
|
5087
5302
|
if (stateBeforeStop?.issueId) yield* Effect.promise(async () => {
|
|
5088
5303
|
try {
|
|
5089
|
-
const { resolveProjectFromIssueSync } = await import("./projects-
|
|
5090
|
-
const { findWorkspacePath } = await import("./archive-planning-
|
|
5304
|
+
const { resolveProjectFromIssueSync } = await import("./projects-Crur9uCa.js");
|
|
5305
|
+
const { findWorkspacePath } = await import("./archive-planning-CNSWQPvz.js");
|
|
5091
5306
|
const issueLower = stateBeforeStop.issueId.toLowerCase();
|
|
5092
5307
|
const workspacePath = findWorkspacePath(resolveProjectFromIssueSync(stateBeforeStop.issueId)?.projectPath ?? process.cwd(), issueLower);
|
|
5093
5308
|
if (workspacePath) {
|
|
@@ -5227,7 +5442,7 @@ const postAgentUnpauseRoute = HttpRouter.add("POST", "/api/agents/:id/unpause",
|
|
|
5227
5442
|
if ((yield* getWorkAgentLifecycleState(id)).canResumeSession && updatedState.troubled !== true) {
|
|
5228
5443
|
resumeTriggered = true;
|
|
5229
5444
|
yield* Effect.promise(() => appendAgentLifecycleLog(id, "agent.unpause_immediate_resume_triggered"));
|
|
5230
|
-
import("./resume-
|
|
5445
|
+
import("./resume-DmF2andq.js").then(({ resumeAgent }) => resumeAgent(id)).then((result) => {
|
|
5231
5446
|
if (!result.success) console.warn(`[agents] immediate resume after unpause failed for ${id}: ${result.error}`);
|
|
5232
5447
|
}).catch((err) => console.warn(`[agents] immediate resume after unpause errored for ${id}:`, err));
|
|
5233
5448
|
}
|
|
@@ -6640,15 +6855,15 @@ async function requestWorkStartAfterContainers(input) {
|
|
|
6640
6855
|
function handleRemoteAgentSpawn(input) {
|
|
6641
6856
|
return Effect.gen(function* () {
|
|
6642
6857
|
const { issueId, workspacePath, workspaceMetadata, spawnModel, startedBy, autoSpawnConsentRequired, projectPath, spawnGuardrails, lifecycle } = input;
|
|
6643
|
-
const { spawnRemoteAgent, checkRemoteSpendCap } = yield* Effect.promise(() => import("./remote-agents-
|
|
6644
|
-
const { createFlyProviderFromConfig } = yield* Effect.promise(() => import("./remote-
|
|
6645
|
-
const { loadConfigSync: loadPanConfig } = yield* Effect.promise(() => import("./config-
|
|
6858
|
+
const { spawnRemoteAgent, checkRemoteSpendCap } = yield* Effect.promise(() => import("./remote-agents-MbWzm5Fh.js"));
|
|
6859
|
+
const { createFlyProviderFromConfig } = yield* Effect.promise(() => import("./remote-BMZmJC5E.js"));
|
|
6860
|
+
const { loadConfigSync: loadPanConfig } = yield* Effect.promise(() => import("./config-DURnId0k.js"));
|
|
6646
6861
|
const panConfig = loadPanConfig();
|
|
6647
6862
|
const spendCap = checkRemoteSpendCap(panConfig);
|
|
6648
6863
|
if (!spendCap.allowed) return jsonResponse({ error: spendCap.message }, { status: 429 });
|
|
6649
6864
|
const fly = createFlyProviderFromConfig(panConfig.remote);
|
|
6650
6865
|
yield* Effect.promise(() => fly.syncAllCredentials(workspaceMetadata.vmName));
|
|
6651
|
-
const { buildWorkAgentPrompt, getTrackerContext } = yield* Effect.promise(() => import("./work-agent-prompt-
|
|
6866
|
+
const { buildWorkAgentPrompt, getTrackerContext } = yield* Effect.promise(() => import("./work-agent-prompt-CQWlmw_y.js"));
|
|
6652
6867
|
const trackerContext = yield* Effect.promise(() => getTrackerContext(issueId, workspacePath));
|
|
6653
6868
|
const agentPrompt = yield* Effect.promise(() => buildWorkAgentPrompt({
|
|
6654
6869
|
issueId,
|
|
@@ -7382,7 +7597,7 @@ const postAgentsRoute = HttpRouter.add("POST", "/api/agents", httpHandler(Effect
|
|
|
7382
7597
|
console.warn(`[start-agent] Failed to set plan.status=running (non-fatal): ${planStatusErr?.message ?? planStatusErr}`);
|
|
7383
7598
|
}
|
|
7384
7599
|
try {
|
|
7385
|
-
const { appendSessionEntry, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-
|
|
7600
|
+
const { appendSessionEntry, getProjectConfigFromWorkspacePath, resolveProjectForIssue } = await import("./record-C4JJCL2f.js");
|
|
7386
7601
|
await appendSessionEntry(resolveProjectForIssue(issueId) ?? getProjectConfigFromWorkspacePath(workspacePath), issueId, {
|
|
7387
7602
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
7388
7603
|
reason: "start",
|
|
@@ -7830,14 +8045,14 @@ function firePostMergeLifecycle(issueId, options) {
|
|
|
7830
8045
|
const normalizedIssueId = parsedIssueId.normalized.toUpperCase();
|
|
7831
8046
|
const started = postMergeGuard.run(normalizedIssueId, async () => {
|
|
7832
8047
|
const projectPath = getProjectPathForIssue(parsedIssueId.prefix);
|
|
7833
|
-
const { postMergeLifecycle } = await import("./merge-agent-
|
|
8048
|
+
const { postMergeLifecycle } = await import("./merge-agent-svBDRWB6.js");
|
|
7834
8049
|
const lifecycleOptions = {
|
|
7835
8050
|
...options?.verifiedMergedRef ? { verifiedMergedRef: options.verifiedMergedRef } : {},
|
|
7836
8051
|
...options?.verifiedMergedRepos?.length ? { verifiedMergedRepos: options.verifiedMergedRepos } : {}
|
|
7837
8052
|
};
|
|
7838
8053
|
await postMergeLifecycle(normalizedIssueId, projectPath, options?.sourceBranch, Object.keys(lifecycleOptions).length > 0 ? lifecycleOptions : void 0);
|
|
7839
8054
|
console.log(`[merge] post-merge lifecycle completed for ${normalizedIssueId}`);
|
|
7840
|
-
const { runMergeTrainReconcile } = await import("./merge-train-
|
|
8055
|
+
const { runMergeTrainReconcile } = await import("./merge-train-DTJXF8ph.js");
|
|
7841
8056
|
const outcomes = await runMergeTrainReconcile(normalizedIssueId);
|
|
7842
8057
|
if (outcomes.length > 0) console.log(`[merge-train] reconciled ${outcomes.length} sibling(s) after ${normalizedIssueId}: ` + outcomes.map((o) => `${o.issueId}=${o.result}`).join(", "));
|
|
7843
8058
|
}, (err) => console.error(`[merge] post-merge lifecycle failed for ${normalizedIssueId}:`, err));
|
|
@@ -7857,15 +8072,15 @@ init_review_status();
|
|
|
7857
8072
|
init_io();
|
|
7858
8073
|
init_tmux();
|
|
7859
8074
|
const getSpecialistsRoute = HttpRouter.add("GET", "/api/specialists", httpHandler(Effect.gen(function* () {
|
|
7860
|
-
const { getAllSpecialistStatus, getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-
|
|
8075
|
+
const { getAllSpecialistStatus, getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
7861
8076
|
return jsonResponse({
|
|
7862
8077
|
specialists: yield* Effect.promise(() => getAllSpecialistStatus()),
|
|
7863
8078
|
projects: yield* Effect.promise(() => getAllProjectSpecialistStatuses())
|
|
7864
8079
|
});
|
|
7865
8080
|
})));
|
|
7866
8081
|
const postSpecialistsResetAllRoute = HttpRouter.add("POST", "/api/specialists/reset-all", httpHandler(Effect.gen(function* () {
|
|
7867
|
-
const { getAllSpecialists, isRunning, getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-
|
|
7868
|
-
const { clearHookSync } = yield* Effect.promise(() => import("./hooks-
|
|
8082
|
+
const { getAllSpecialists, isRunning, getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8083
|
+
const { clearHookSync } = yield* Effect.promise(() => import("./hooks-CmL3TXla.js"));
|
|
7869
8084
|
const specialists = getAllSpecialists();
|
|
7870
8085
|
const results = [];
|
|
7871
8086
|
for (const specialist of specialists) {
|
|
@@ -7924,7 +8139,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
7924
8139
|
}
|
|
7925
8140
|
console.log(`[specialists/done] ${specialist} signaling ${status} for ${normalizedIssueId}`);
|
|
7926
8141
|
if (specialist === "merge") {
|
|
7927
|
-
const { reportSpecialistCompletion } = yield* Effect.promise(() => import("./specialist-completion-
|
|
8142
|
+
const { reportSpecialistCompletion } = yield* Effect.promise(() => import("./specialist-completion-BMv3K54P.js"));
|
|
7928
8143
|
if (yield* reportSpecialistCompletion(normalizedIssueId, {
|
|
7929
8144
|
status,
|
|
7930
8145
|
notes
|
|
@@ -7951,7 +8166,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
7951
8166
|
if (project) {
|
|
7952
8167
|
const workspacePath = join(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`);
|
|
7953
8168
|
if (existsSync(workspacePath)) {
|
|
7954
|
-
const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-
|
|
8169
|
+
const { snapshotWorkspaceHeadsPromise } = await import("./git-utils-fcK3ZRNj.js");
|
|
7955
8170
|
reviewEvidenceHead = await snapshotWorkspaceHeadsPromise(normalizedIssueId, workspacePath);
|
|
7956
8171
|
}
|
|
7957
8172
|
}
|
|
@@ -8000,7 +8215,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8000
8215
|
if (project && failedItemId) {
|
|
8001
8216
|
const workspacePath = join(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`);
|
|
8002
8217
|
if (existsSync(workspacePath)) {
|
|
8003
|
-
const { onInspectComplete } = await import("./inspect-agent-
|
|
8218
|
+
const { onInspectComplete } = await import("./inspect-agent-BuSYgRQs.js");
|
|
8004
8219
|
await Effect.runPromise(onInspectComplete(project.projectKey, normalizedIssueId, failedItemId, "failed", workspacePath, notes));
|
|
8005
8220
|
}
|
|
8006
8221
|
}
|
|
@@ -8011,7 +8226,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8011
8226
|
}
|
|
8012
8227
|
yield* Effect.promise(async () => {
|
|
8013
8228
|
try {
|
|
8014
|
-
const { getTmuxSessionName, updateRunMetadata, makeSpecialistRegistryKey } = await import("./specialists-
|
|
8229
|
+
const { getTmuxSessionName, updateRunMetadata, makeSpecialistRegistryKey } = await import("./specialists-8Pc--yZI.js");
|
|
8015
8230
|
const projectKey = resolveProjectFromIssueSync(normalizedIssueId)?.projectKey;
|
|
8016
8231
|
const tmuxSession = projectKey ? getTmuxSessionName(`${specialist}-agent`, projectKey, normalizedIssueId) : getTmuxSessionName(`${specialist}-agent`);
|
|
8017
8232
|
saveAgentRuntimeState(tmuxSession, {
|
|
@@ -8030,7 +8245,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8030
8245
|
});
|
|
8031
8246
|
console.log(`[specialists/done] Cleared registry lock for ${registryKey} (${projectKey})`);
|
|
8032
8247
|
}
|
|
8033
|
-
const { updateSpecialistHandoffStatus } = await import("./specialist-handoff-logger-
|
|
8248
|
+
const { updateSpecialistHandoffStatus } = await import("./specialist-handoff-logger-B7jzypoX.js");
|
|
8034
8249
|
if (await Effect.runPromise(updateSpecialistHandoffStatus(normalizedIssueId, `${specialist}-agent`, status === "passed" ? "completed" : "failed", status === "passed" ? "success" : "failure"))) console.log(`[specialists/done] Updated handoff log: ${specialist}-agent ${normalizedIssueId} → ${status}`);
|
|
8035
8250
|
} catch (err) {
|
|
8036
8251
|
console.error(`[specialists/done] Error managing specialist state:`, err);
|
|
@@ -8042,7 +8257,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8042
8257
|
if (project) {
|
|
8043
8258
|
const workspacePath = join(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`);
|
|
8044
8259
|
if (existsSync(workspacePath)) {
|
|
8045
|
-
const { formatAnchorShort, snapshotWorkspaceHeadsPromise } = await import("./git-utils-
|
|
8260
|
+
const { formatAnchorShort, snapshotWorkspaceHeadsPromise } = await import("./git-utils-fcK3ZRNj.js");
|
|
8046
8261
|
const headAnchor = await snapshotWorkspaceHeadsPromise(normalizedIssueId, workspacePath);
|
|
8047
8262
|
if (headAnchor) {
|
|
8048
8263
|
setReviewStatusSync(normalizedIssueId, { reviewedAtCommit: headAnchor });
|
|
@@ -8056,7 +8271,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8056
8271
|
});
|
|
8057
8272
|
if (specialist === "inspect" && status === "passed") yield* Effect.promise(async () => {
|
|
8058
8273
|
try {
|
|
8059
|
-
const { onInspectComplete } = await import("./inspect-agent-
|
|
8274
|
+
const { onInspectComplete } = await import("./inspect-agent-BuSYgRQs.js");
|
|
8060
8275
|
const project = resolveProjectFromIssueSync(normalizedIssueId);
|
|
8061
8276
|
if (project) {
|
|
8062
8277
|
const workspacePath = join(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`);
|
|
@@ -8072,7 +8287,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8072
8287
|
if (project) {
|
|
8073
8288
|
if (existsSync(join(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`))) {
|
|
8074
8289
|
setReviewStatusSync(normalizedIssueId, { testStatus: "passed" });
|
|
8075
|
-
const { initEventStore } = await import("./event-store-
|
|
8290
|
+
const { initEventStore } = await import("./event-store-CFnLP8w-.js");
|
|
8076
8291
|
await (await initEventStore()).appendAsync({
|
|
8077
8292
|
type: "test.passed",
|
|
8078
8293
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -8125,8 +8340,8 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8125
8340
|
if (notes?.toLowerCase().includes("conflict")) yield* Effect.promise(async () => {
|
|
8126
8341
|
try {
|
|
8127
8342
|
const workAgentId = `agent-${normalizedIssueId.toLowerCase()}`;
|
|
8128
|
-
const { sessionExists } = await import("./tmux-
|
|
8129
|
-
const { messageAgent, spawnAgent, getAgentStateSync } = await import("./agents-
|
|
8343
|
+
const { sessionExists } = await import("./tmux-C-hxv71f.js");
|
|
8344
|
+
const { messageAgent, spawnAgent, getAgentStateSync } = await import("./agents-BdkVgjxC.js");
|
|
8130
8345
|
if (await Effect.runPromise(sessionExists(workAgentId))) {
|
|
8131
8346
|
await messageAgent(workAgentId, `MERGE CONFLICT: The merge-agent could not rebase your branch onto main due to conflicts. Please fix this now:\n\n1. git fetch origin main\n2. git rebase origin/main\n3. Resolve any conflicts (git add <file> && git rebase --continue)\n4. git push --force-with-lease\n5. Resubmit: curl -s -X POST http://localhost:3011/api/review/${normalizedIssueId}/request -H "Content-Type: application/json" -d "{}"\n\nConflict details: ${notes}`);
|
|
8132
8347
|
console.log(`[specialists/done] Sent rebase instructions to ${workAgentId}`);
|
|
@@ -8140,7 +8355,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8140
8355
|
try {
|
|
8141
8356
|
const project = resolveProjectFromIssueSync(normalizedIssueId);
|
|
8142
8357
|
const workspacePath = project ? join(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`) : void 0;
|
|
8143
|
-
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-
|
|
8358
|
+
const { deliverReviewVerdictFeedback } = await import("./review-verdict-feedback-DkMx_cKj.js");
|
|
8144
8359
|
const result = await Effect.runPromise(deliverReviewVerdictFeedback({
|
|
8145
8360
|
issueId: normalizedIssueId,
|
|
8146
8361
|
verdict: status === "failed" ? "failed" : "blocked",
|
|
@@ -8160,7 +8375,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8160
8375
|
if (project) {
|
|
8161
8376
|
const workspacePath = join(project.projectPath, "workspaces", `feature-${normalizedIssueId.toLowerCase()}`);
|
|
8162
8377
|
if (existsSync(workspacePath)) {
|
|
8163
|
-
const { formatAnchorShort, snapshotWorkspaceHeadsPromise } = await import("./git-utils-
|
|
8378
|
+
const { formatAnchorShort, snapshotWorkspaceHeadsPromise } = await import("./git-utils-fcK3ZRNj.js");
|
|
8164
8379
|
const reviewedAtCommit = await snapshotWorkspaceHeadsPromise(normalizedIssueId, workspacePath);
|
|
8165
8380
|
if (reviewedAtCommit) {
|
|
8166
8381
|
setReviewStatusSync(normalizedIssueId, { reviewedAtCommit });
|
|
@@ -8200,7 +8415,7 @@ const postSpecialistsDoneRoute = HttpRouter.add("POST", "/api/specialists/done",
|
|
|
8200
8415
|
});
|
|
8201
8416
|
})));
|
|
8202
8417
|
const postSpecialistsLogsCleanupAllRoute = HttpRouter.add("POST", "/api/specialists/logs/cleanup-all", httpHandler(Effect.gen(function* () {
|
|
8203
|
-
const { cleanupAllLogsSync } = yield* Effect.promise(() => import("./specialist-logs-
|
|
8418
|
+
const { cleanupAllLogsSync } = yield* Effect.promise(() => import("./specialist-logs-DVhOLpwy.js"));
|
|
8204
8419
|
const results = cleanupAllLogsSync();
|
|
8205
8420
|
return jsonResponse({
|
|
8206
8421
|
success: true,
|
|
@@ -8210,7 +8425,7 @@ const postSpecialistsLogsCleanupAllRoute = HttpRouter.add("POST", "/api/speciali
|
|
|
8210
8425
|
});
|
|
8211
8426
|
})));
|
|
8212
8427
|
const getSpecialistsProjectsRoute = HttpRouter.add("GET", "/api/specialists/projects", httpHandler(Effect.gen(function* () {
|
|
8213
|
-
const { getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-
|
|
8428
|
+
const { getAllProjectSpecialistStatuses } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8214
8429
|
return jsonResponse(yield* Effect.promise(() => getAllProjectSpecialistStatuses()));
|
|
8215
8430
|
})));
|
|
8216
8431
|
const postSpecialistWakeRoute = HttpRouter.add("POST", "/api/specialists/:name/wake", httpHandler(Effect.gen(function* () {
|
|
@@ -8254,7 +8469,7 @@ const postSpecialistReportStatusRoute = HttpRouter.add("POST", "/api/specialists
|
|
|
8254
8469
|
"blocked",
|
|
8255
8470
|
"failed"
|
|
8256
8471
|
].includes(status)) {
|
|
8257
|
-
const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-
|
|
8472
|
+
const { getTmuxSessionName } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8258
8473
|
saveAgentRuntimeState(getTmuxSessionName(name), {
|
|
8259
8474
|
state: "idle",
|
|
8260
8475
|
lastActivity: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -8376,7 +8591,7 @@ const postProjectSpecialistKillRoute = HttpRouter.add("POST", "/api/specialists/
|
|
|
8376
8591
|
const issueId = params["issueId"];
|
|
8377
8592
|
const type = params["type"];
|
|
8378
8593
|
if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
|
|
8379
|
-
const { getTmuxSessionName, makeSpecialistRegistryKey, getRunMetadata } = yield* Effect.promise(() => import("./specialists-
|
|
8594
|
+
const { getTmuxSessionName, makeSpecialistRegistryKey, getRunMetadata } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8380
8595
|
const tmuxSession = getRunMetadata(project, makeSpecialistRegistryKey(type, issueId)).tmuxSession ?? getTmuxSessionName(type, project, issueId);
|
|
8381
8596
|
yield* Effect.promise(() => Effect.runPromise(killSession(tmuxSession)).catch(() => {}));
|
|
8382
8597
|
saveAgentRuntimeState(tmuxSession, {
|
|
@@ -8403,7 +8618,7 @@ const getProjectSpecialistRunsRoute = HttpRouter.add("GET", "/api/specialists/:p
|
|
|
8403
8618
|
if (limitParam) limit = parseInt(limitParam, 10);
|
|
8404
8619
|
if (offsetParam) offset = parseInt(offsetParam, 10);
|
|
8405
8620
|
}
|
|
8406
|
-
const { listRunLogsSync } = yield* Effect.promise(() => import("./specialist-logs-
|
|
8621
|
+
const { listRunLogsSync } = yield* Effect.promise(() => import("./specialist-logs-DVhOLpwy.js"));
|
|
8407
8622
|
return jsonResponse(listRunLogsSync(project, type, {
|
|
8408
8623
|
limit,
|
|
8409
8624
|
offset
|
|
@@ -8414,7 +8629,7 @@ const getProjectSpecialistRunStreamRoute = HttpRouter.add("GET", "/api/specialis
|
|
|
8414
8629
|
const project = params["project"];
|
|
8415
8630
|
const type = params["type"];
|
|
8416
8631
|
const runId = params["runId"];
|
|
8417
|
-
const { getRunLogPath, isRunLogActive } = yield* Effect.promise(() => import("./specialist-logs-
|
|
8632
|
+
const { getRunLogPath, isRunLogActive } = yield* Effect.promise(() => import("./specialist-logs-DVhOLpwy.js"));
|
|
8418
8633
|
const logPath = getRunLogPath(project, type, runId);
|
|
8419
8634
|
if (!existsSync(logPath)) return jsonResponse({ error: "Run log not found" }, { status: 404 });
|
|
8420
8635
|
const encoder = new TextEncoder();
|
|
@@ -8473,7 +8688,7 @@ const getProjectSpecialistRunRoute = HttpRouter.add("GET", "/api/specialists/:pr
|
|
|
8473
8688
|
const project = params["project"];
|
|
8474
8689
|
const type = params["type"];
|
|
8475
8690
|
const runId = params["runId"];
|
|
8476
|
-
const { getRunLogSync, parseLogMetadata } = yield* Effect.promise(() => import("./specialist-logs-
|
|
8691
|
+
const { getRunLogSync, parseLogMetadata } = yield* Effect.promise(() => import("./specialist-logs-DVhOLpwy.js"));
|
|
8477
8692
|
const content = getRunLogSync(project, type, runId);
|
|
8478
8693
|
if (!content) return jsonResponse({ error: "Run log not found" }, { status: 404 });
|
|
8479
8694
|
return jsonResponse({
|
|
@@ -8487,7 +8702,7 @@ const postProjectSpecialistRunTerminateRoute = HttpRouter.add("POST", "/api/spec
|
|
|
8487
8702
|
const project = params["project"];
|
|
8488
8703
|
const type = params["type"];
|
|
8489
8704
|
if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
|
|
8490
|
-
const { terminateSpecialist } = yield* Effect.promise(() => import("./specialists-
|
|
8705
|
+
const { terminateSpecialist } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8491
8706
|
yield* Effect.promise(() => terminateSpecialist(project, type));
|
|
8492
8707
|
return jsonResponse({
|
|
8493
8708
|
success: true,
|
|
@@ -8499,7 +8714,7 @@ const postProjectSpecialistGracePauseRoute = HttpRouter.add("POST", "/api/specia
|
|
|
8499
8714
|
const project = params["project"];
|
|
8500
8715
|
const type = params["type"];
|
|
8501
8716
|
if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
|
|
8502
|
-
const { pauseGracePeriod } = yield* Effect.promise(() => import("./specialists-
|
|
8717
|
+
const { pauseGracePeriod } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8503
8718
|
if (pauseGracePeriod(project, type)) return jsonResponse({
|
|
8504
8719
|
success: true,
|
|
8505
8720
|
message: "Grace period paused"
|
|
@@ -8511,7 +8726,7 @@ const postProjectSpecialistGraceResumeRoute = HttpRouter.add("POST", "/api/speci
|
|
|
8511
8726
|
const project = params["project"];
|
|
8512
8727
|
const type = params["type"];
|
|
8513
8728
|
if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
|
|
8514
|
-
const { resumeGracePeriod } = yield* Effect.promise(() => import("./specialists-
|
|
8729
|
+
const { resumeGracePeriod } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8515
8730
|
if (resumeGracePeriod(project, type)) return jsonResponse({
|
|
8516
8731
|
success: true,
|
|
8517
8732
|
message: "Grace period resumed"
|
|
@@ -8523,7 +8738,7 @@ const postProjectSpecialistGraceExitRoute = HttpRouter.add("POST", "/api/special
|
|
|
8523
8738
|
const project = params["project"];
|
|
8524
8739
|
const type = params["type"];
|
|
8525
8740
|
if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
|
|
8526
|
-
const { exitGracePeriod } = yield* Effect.promise(() => import("./specialists-
|
|
8741
|
+
const { exitGracePeriod } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8527
8742
|
exitGracePeriod(project, type);
|
|
8528
8743
|
return jsonResponse({
|
|
8529
8744
|
success: true,
|
|
@@ -8535,7 +8750,7 @@ const getProjectSpecialistGraceRoute = HttpRouter.add("GET", "/api/specialists/:
|
|
|
8535
8750
|
const project = params["project"];
|
|
8536
8751
|
const type = params["type"];
|
|
8537
8752
|
if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
|
|
8538
|
-
const { getGracePeriodState } = yield* Effect.promise(() => import("./specialists-
|
|
8753
|
+
const { getGracePeriodState } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8539
8754
|
const state = getGracePeriodState(project, type);
|
|
8540
8755
|
if (state) return jsonResponse(state);
|
|
8541
8756
|
else return jsonResponse({ error: "No active grace period" }, { status: 404 });
|
|
@@ -8544,7 +8759,7 @@ const getProjectSpecialistContextRoute = HttpRouter.add("GET", "/api/specialists
|
|
|
8544
8759
|
const params = yield* HttpRouter.params;
|
|
8545
8760
|
const project = params["project"];
|
|
8546
8761
|
const type = params["type"];
|
|
8547
|
-
const { loadContextDigest } = yield* Effect.promise(() => import("./specialist-context-
|
|
8762
|
+
const { loadContextDigest } = yield* Effect.promise(() => import("./specialist-context-B054OP_a.js"));
|
|
8548
8763
|
const digest = loadContextDigest(project, type);
|
|
8549
8764
|
if (digest) return jsonResponse({ digest });
|
|
8550
8765
|
else return jsonResponse({ error: "No context digest found" }, { status: 404 });
|
|
@@ -8553,7 +8768,7 @@ const postProjectSpecialistContextRegenerateRoute = HttpRouter.add("POST", "/api
|
|
|
8553
8768
|
const params = yield* HttpRouter.params;
|
|
8554
8769
|
const project = params["project"];
|
|
8555
8770
|
const type = params["type"];
|
|
8556
|
-
const { regenerateContextDigest } = yield* Effect.promise(() => import("./specialist-context-
|
|
8771
|
+
const { regenerateContextDigest } = yield* Effect.promise(() => import("./specialist-context-B054OP_a.js"));
|
|
8557
8772
|
const digest = yield* regenerateContextDigest(project, type);
|
|
8558
8773
|
if (digest) return jsonResponse({
|
|
8559
8774
|
digest,
|
|
@@ -8572,7 +8787,7 @@ const postProjectSpecialistCompleteRoute = HttpRouter.add("POST", "/api/speciali
|
|
|
8572
8787
|
"blocked"
|
|
8573
8788
|
].includes(status)) return jsonResponse({ error: "Valid status (passed/failed/blocked) is required" }, { status: 400 });
|
|
8574
8789
|
if (!validateSpecialistAgentName(type)) return jsonResponse({ error: "Invalid specialist type. Must be review-agent, test-agent, or merge-agent" }, { status: 400 });
|
|
8575
|
-
const { signalSpecialistCompletion } = yield* Effect.promise(() => import("./specialists-
|
|
8790
|
+
const { signalSpecialistCompletion } = yield* Effect.promise(() => import("./specialists-8Pc--yZI.js"));
|
|
8576
8791
|
signalSpecialistCompletion(project, type, {
|
|
8577
8792
|
status,
|
|
8578
8793
|
notes
|
|
@@ -8606,8 +8821,8 @@ const postProjectSpecialistLogsCleanupRoute = HttpRouter.add("POST", "/api/speci
|
|
|
8606
8821
|
const params = yield* HttpRouter.params;
|
|
8607
8822
|
const project = params["project"];
|
|
8608
8823
|
const type = params["type"];
|
|
8609
|
-
const { cleanupOldLogsSync } = yield* Effect.promise(() => import("./specialist-logs-
|
|
8610
|
-
const { getSpecialistRetention } = yield* Effect.promise(() => import("./projects-
|
|
8824
|
+
const { cleanupOldLogsSync } = yield* Effect.promise(() => import("./specialist-logs-DVhOLpwy.js"));
|
|
8825
|
+
const { getSpecialistRetention } = yield* Effect.promise(() => import("./projects-Crur9uCa.js"));
|
|
8611
8826
|
const retention = getSpecialistRetention(project);
|
|
8612
8827
|
const deleted = cleanupOldLogsSync(project, type, {
|
|
8613
8828
|
maxDays: retention.max_days,
|
|
@@ -8628,7 +8843,7 @@ const postProjectReviewRestartRoute = HttpRouter.add("POST", "/api/specialists/:
|
|
|
8628
8843
|
const project = params["project"];
|
|
8629
8844
|
const issueId = params["issueId"];
|
|
8630
8845
|
const { model, harness } = yield* readJsonBody;
|
|
8631
|
-
const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-
|
|
8846
|
+
const { killAllReviewerSessions } = yield* Effect.promise(() => import("./review-agent-DM9S22BL.js"));
|
|
8632
8847
|
const killResult = yield* killAllReviewerSessions(project, issueId);
|
|
8633
8848
|
const projectConfig = resolveProjectFromIssueSync(issueId);
|
|
8634
8849
|
if (!projectConfig) return jsonResponse({ error: `Cannot resolve project for ${issueId}` }, { status: 404 });
|
|
@@ -8644,7 +8859,7 @@ const postProjectReviewRestartRoute = HttpRouter.add("POST", "/api/specialists/:
|
|
|
8644
8859
|
}));
|
|
8645
8860
|
branch = stdout.trim() || primaryRepo.sourceBranch;
|
|
8646
8861
|
} catch {}
|
|
8647
|
-
const { spawnReviewRoleForIssue } = yield* Effect.promise(() => import("./review-agent-
|
|
8862
|
+
const { spawnReviewRoleForIssue } = yield* Effect.promise(() => import("./review-agent-DM9S22BL.js"));
|
|
8648
8863
|
const prUrl = getReviewStatusSync(issueId)?.prUrl;
|
|
8649
8864
|
const result = yield* spawnReviewRoleForIssue({
|
|
8650
8865
|
issueId,
|
|
@@ -8688,7 +8903,7 @@ const postProjectReviewerRoleRestartRoute = HttpRouter.add("POST", "/api/special
|
|
|
8688
8903
|
const { model } = yield* readJsonBody;
|
|
8689
8904
|
const reviewer = getAgentStateSync(reviewerId);
|
|
8690
8905
|
yield* Effect.promise(() => Effect.runPromise(killSession(reviewerId)).catch(() => void 0));
|
|
8691
|
-
const { spawnReviewSubRoleForIssue } = yield* Effect.promise(() => import("./review-agent-
|
|
8906
|
+
const { spawnReviewSubRoleForIssue } = yield* Effect.promise(() => import("./review-agent-DM9S22BL.js"));
|
|
8692
8907
|
const result = yield* spawnReviewSubRoleForIssue({
|
|
8693
8908
|
issueId,
|
|
8694
8909
|
workspace: parent.workspace,
|
|
@@ -8816,6 +9031,6 @@ const specialistsProjectRouteLayer = Layer.mergeAll(getProjectSpecialistStatusRo
|
|
|
8816
9031
|
*/
|
|
8817
9032
|
const specialistsRouteLayer = Layer.mergeAll(specialistsLegacyRouteLayer, specialistsProjectRouteLayer);
|
|
8818
9033
|
//#endregion
|
|
8819
|
-
export {
|
|
9034
|
+
export { resolvePolicy as $, handleConversationSwitchModel as A, waitForTmuxSession as B, conversationSessionAliveFromState as C, getDefaultCwd as Ct, handleConversationRestartAll as D, handleConversationDelete as E, spawnConversationSession as F, extractConversationAttachmentPaths as G, cleanupOrphanedConversationAttachments as H, startConversationModelBackfill as I, isManagedConversationAttachmentPath as J, getConversationAttachmentsRoot as K, stopConversationRuntime as L, resolveAllowedHarness as M, resolveRegisteredProject as N, handleConversationResume as O, shouldReportUnresolvedLiveSession as P, handleComposerCommandMessage as Q, tmuxSessionExists as R, conversationNeedsRunningRepair as S, httpHandler as St, handleConversationCreate as T, jsonStringResponse as Tt, cleanupUnreferencedConversationAttachments as U, cleanupConversationAttachments as V, ensureConversationAttachmentDir as W, runInBatches as X, removeConversationAttachment as Y, composerCommandResultHttpStatus as Z, handleConversationThinkingLevel as _, waitForSessionRespawn as _t, agentsRouteLayer as a, isInternalAgentRequest as at, resolveConversationDeliveryMethod as b, validateOrigin as bt, codexConversationPendingInput as c, panCliInvocation as ct, handleConversationCodexApproval as d, dashboardSessionCookieHeader as dt, ComposerCommandParseError as et, handleConversationCompact as f, hasDashboardInternalToken as ft, handleConversationPlanAction as g, isRespawnPending as gt, handleConversationPiAskAnswer as h, rejectUnsafeDashboardMutationRequest as ht, validateSpecialistAutoCompleteMetadata as i, invalidateAgentsCache as it, isInsideGitWorkTree as j, handleConversationStop as k, deliverConversationViaControlChannel as l, spawnPanCli as lt, handleConversationDeliveryMethod as m, rejectUnauthorizedDashboardSessionMintRequest as mt, _serverManagedMerges as n, composerCommandConfirmationFromBody as nt, saveAgentStateAndEmitEvent as o, resolveRequestedStartedBy as ot, handleConversationControlAck as p, rejectUnauthorizedDashboardRequest as pt, hasConversationAttachment as q, firePostMergeLifecycle as r, evaluateSpawnGuardrails as rt, saveAgentStateAndEmitEventProgram as s, getWorkAgentLifecycleStateSync as st, specialistsRouteLayer as t, ComposerCommandConfirmationError as tt, handleConversationAbort as u, dashboardCsrfToken as ut, isPiControlChannelHarness as v, getHeaderFromMap as vt, handleConversationClearForkState as w, jsonResponse as wt, validateConversationControlAckOrigin as x, validateOriginHeaders as xt, pickDeliverAs as y, isTrustedOriginForHost as yt, waitForPiTuiReady as z };
|
|
8820
9035
|
|
|
8821
|
-
//# sourceMappingURL=specialists-
|
|
9036
|
+
//# sourceMappingURL=specialists-CC_Mnc47.js.map
|