@overdeck/desktop 0.49.1 → 0.49.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-CHtDkHEL.js} +2 -2
- package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-Byh6sP-q.js} +2 -2
- package/server/{activity-logger-BAVLrkR7.js → activity-logger-BWZhVphb.js} +22 -4
- package/server/activity-logger-Ck8qoluj.js +3 -0
- package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-65W4yUQi.js} +6 -6
- package/server/{agent-gc-5E0lgxI1.js → agent-gc-BNUudFnt.js} +10 -10
- package/server/agent-idle-ONBssBN_.js +745 -0
- package/server/{agent-state-Bb3UUxQm.js → agent-state-BJhGIJZe.js} +421 -135
- package/server/agent-state-CM8iVw5B.js +3 -0
- package/server/{agent-state-service-BFbttwRA.js → agent-state-service-CiIuwzIs.js} +5 -5
- package/server/{agent-state-service-keg-x1bT.js → agent-state-service-CzHfoqKQ.js} +1 -1
- package/server/agents-DpCuoF65.js +3 -0
- package/server/{agents-CqQJW75N.js → agents-jXgqpHca.js} +8 -8
- package/server/archive-planning-BW4MKNI7.js +2 -0
- package/server/{archive-planning-BwEhu9Oq.js → archive-planning-CGkU6UeL.js} +20 -135
- package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Ck4NRRkY.js} +3 -3
- package/server/{assemble-DyTp2gSB.js → assemble-CyvEBmmq.js} +28 -9
- package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-Dc4mtM-B.js} +8 -7
- package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-CCEpr4YT.js} +3 -3
- package/server/{behavior-Bitko0mD.js → behavior-BiCQzqyT.js} +3 -3
- package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-Ce8rNPym.js} +2 -2
- package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-e_OEYZEe.js} +2 -2
- package/server/{build-info-DTX8JwVP.js → build-info-BRw4QlYO.js} +3 -3
- package/server/build-info-Bj2vQEMh.js +2 -0
- package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-CKr42Usw.js} +1 -1
- package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-DOwRGFff.js} +26 -9
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-DRALkfDS.js → checkpoints-Cb6CWT4S.js} +1 -1
- package/server/{checkpoints-BGfl0cHM.js → checkpoints-Cszp_0Np.js} +2 -2
- package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-C5JHpxTS.js} +1 -1
- package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-Cer2eFfj.js} +2 -2
- package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-Bc5kjX1q.js} +2 -2
- package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-C7rWsnya.js} +1 -1
- package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-m-VVZej1.js} +2 -2
- package/server/cli-BRuzUT_I.js +2 -0
- package/server/{cli-Do8UpLoI.js → cli-BmczsfD6.js} +11 -11
- package/server/{cliproxy-CX6jHRDP.js → cliproxy-BpYpkogS.js} +52 -17
- package/server/cliproxy-_yUU0HRY.js +3 -0
- package/server/{close-issue-J0_eWYT1.js → close-issue-CxvRD0UI.js} +5 -5
- package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-nMLRi5de.js} +13 -12
- package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-omOcUDBl.js} +1 -1
- package/server/{codex-icapA4om.js → codex-DZhFfcWu.js} +1 -1
- package/server/{codex-OOea7lXs.js → codex-KaSKE-R3.js} +16 -10
- package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-Bjfi70G-.js} +3 -3
- package/server/{config-Cjleh3_U.js → config-CH1AqqIQ.js} +1 -1
- package/server/{config-DC75T4Mr.js → config-Doq_tF-f.js} +2 -2
- package/server/{config-tucKBCCc.js → config-ZGjvuR6J.js} +2 -2
- package/server/{config-yaml-BwOEANMr.js → config-yaml-D9nfpEx1.js} +33 -8
- package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-D4XCtrm2.js} +1 -1
- package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-DcUTY4Gb.js} +4 -4
- package/server/{context-layers-CSPGc2Hb.js → context-layers-BBTKP-Y4.js} +3 -3
- package/server/context-layers-BGj2Y9l3.js +4 -0
- package/server/{continue-U3Af0jUq.js → continue-i7Revg8D.js} +3 -3
- package/server/{control-settings-5k6ixdFW.js → control-settings-BMoDHY1G.js} +6 -6
- package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-D4VOmF7p.js} +8 -8
- package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzIjYMfg.js} +1 -1
- package/server/{conversation-service-BxrB5lUT.js → conversation-service-CzZUJFEx.js} +1 -1
- package/server/{conversation-service-BteE4ELK.js → conversation-service-tQCIbBVZ.js} +6 -6
- package/server/{conversations-DhwxsOru.js → conversations-C75EFFjf.js} +12 -7
- package/server/conversations-bFDaD5YN.js +3 -0
- package/server/{cost-Bnf9NUC5.js → cost-BCWEkvro.js} +3 -3
- package/server/{cost-CQKI6OCu.js → cost-CiIwxH1D.js} +2 -2
- package/server/{cost-sync-B-ADeXKY.js → cost-sync-DOkdE_yB.js} +3 -3
- package/server/{dag-DI9LaK_q.js → dag-BPc74hwj.js} +6 -19
- package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-By9iguTP.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-TPYssFYt.js → deacon-B24dNzr8.js} +1774 -171
- package/server/deacon-CzSZMtb-.js +4 -0
- package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-CkvxRPck.js} +3 -3
- package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BYIQBu0T.js} +1 -1
- package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-Do6Z2gKl.js} +2 -2
- package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-CzM9JA9t.js} +1 -1
- package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BObEdT-L.js} +3 -3
- package/server/deacon.js +11 -11
- package/server/dead-end-trip-6V_CwveT.js +2 -0
- package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-CnVmjnya.js} +3 -3
- package/server/delivery-gyce0vQ7.js +3 -0
- package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-CEwwEYDM.js} +8 -8
- package/server/deploy-queue-CjLErpgw.js +2 -0
- package/server/{deploy-queue-o7shYg1j.js → deploy-queue-r96ojDI3.js} +2 -2
- package/server/{deploy-window-CNT6fOff.js → deploy-window-D_3hhfxt.js} +4 -4
- package/server/{deploy-window-BMk5_oX6.js → deploy-window-DeJK8mTK.js} +1 -1
- package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-DZWwpENk.js} +2 -2
- package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-d-9dCV_2.js} +3 -3
- package/server/{dist-CPTO_zMR.js → dist-DsLAsFSh.js} +1 -1
- package/server/dist-fCA6y2bH.js +3 -0
- package/server/{docker-B7qUZptz.js → docker-B2mUBzGk.js} +3 -3
- package/server/{docker-KR3zSFKY.js → docker-CRPHBylA.js} +1 -1
- package/server/{dod-gK835UMf.js → dod-DWtilRLx.js} +1 -1
- package/server/{done-preflight-CksRvh49.js → done-preflight-BDVdWed5.js} +1 -1
- package/server/{done-preflight-Bk8aExAL.js → done-preflight-D4ukUf-S.js} +5 -5
- package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
- package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-B3OS2_He.js} +11 -2
- package/server/durable-review-pipeline-CaCbEJSt.js +3 -0
- package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-BUeBRjmm.js} +4 -4
- package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-rGSh0JHK.js} +1 -1
- package/server/{esm-shims-1htPASWs.js → esm-shims-oAaKIa-a.js} +1 -1
- package/server/{event-store-D7qcJXuZ.js → event-store-BCSgMubf.js} +5 -5
- package/server/{event-store-BgEjNsvk.js → event-store-Db4w4YIY.js} +1 -1
- package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-DlSQND3V.js} +1 -1
- package/server/{events-BIKGJZOT.js → events-B6zioJA_.js} +3 -3
- package/server/{dist-src-BM9eudEd.js → factory-BrdqXBeK.js} +714 -2
- package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-zh3ZXW6f.js} +3 -3
- package/server/{features-CGopJXdU.js → features-BGntOWdy.js} +2 -2
- package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-DpA5u1kt.js} +2 -2
- package/server/{feedback-target-Ci6N5p4G.js → feedback-target-D7GxdUYG.js} +10 -10
- package/server/{feedback-target-CkyLYohm.js → feedback-target-Ddqk93NF.js} +1 -1
- package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-C1gCLFmp.js} +5 -5
- package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-CH2846DP.js} +1 -1
- package/server/{flywheel-C7yek87O.js → flywheel-CjW2L7BS.js} +79 -29
- package/server/{flywheel-DXI_WITn.js → flywheel-HJt7QdWP.js} +1 -1
- package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-4fNRN2F2.js} +1 -1
- package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-D_yyAlND.js} +7 -7
- package/server/{flywheel-BwYPDlhK.js → flywheel-v1cCOBx-.js} +14 -14
- package/server/{forge-DYX9sKzG.js → forge-RVTCK_5X.js} +2 -2
- package/server/forge-bvak6vXJ.js +2 -0
- package/server/{from-DAdMxC29.js → from-BnLgKYvw.js} +1 -1
- package/server/{fs-lock-cw25uO_E.js → fs-lock-C7J-ugIf.js} +2 -2
- package/server/{fts-operations-D_rzLxX5.js → fts-operations-CU0B5WUx.js} +3 -3
- package/server/git-info-BSrI9owC.js +148 -0
- package/server/{git-utils-Y0zG25ez.js → git-utils-CsKV0Dis.js} +1 -1
- package/server/{git-utils-DV4B9TRl.js → git-utils-DW8-jIUJ.js} +4 -4
- package/server/{github-app-4UX8VIr8.js → github-app-7ywLhuZO.js} +2 -2
- package/server/{github-app-C33lDk9Z.js → github-app-Oi5hdn1n.js} +1 -1
- package/server/{github-client-nPj5ckZO.js → github-client-Cy0fSj1a.js} +1 -1
- package/server/{github-client-DkJVR908.js → github-client-DAbuXLuk.js} +3 -3
- package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-Dhh3ec1V.js} +2 -2
- package/server/{harness-binary-BgXYDo2Z.js → harness-binary-tMmgJfC1.js} +2 -2
- package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-DusNpVEe.js} +4 -4
- package/server/{health-events-jMfxrElt.js → health-events-BYDZ9n2i.js} +1 -1
- package/server/{health-events-DlX_FVAB.js → health-events-DNw9Mzw9.js} +2 -2
- package/server/{hooks-W3REcb3h.js → hooks-B4wj32l2.js} +1 -1
- package/server/{hooks-NQ19vvlB.js → hooks-BjBjxqNh.js} +2 -2
- package/server/{hume-BFkid2PO.js → hume-BP9YbxaE.js} +2 -2
- package/server/hume-TYTb6fDU.js +3 -0
- package/server/{identity-Bwh6VGeL.js → identity-C23uY8dZ.js} +3 -3
- package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-BSxb1bln.js} +4 -4
- package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-Bw0rU9GC.js} +1 -1
- package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-DuxabAHT.js} +1 -1
- package/server/{infra-KTp9KV9u.js → infra-CHIvOb9q.js} +30 -7
- package/server/{injection-67YyU6SC.js → injection-BYUt8ml1.js} +8 -8
- package/server/{injection-BxbZKPDh.js → injection-BviePcm3.js} +1 -1
- package/server/inspect-agent-JFEaYTRa.js +2 -0
- package/server/{inspect-agent-VHSihlb7.js → inspect-agent-sV_19NxZ.js} +12 -12
- package/server/{internal-token-B-z-sGBH.js → internal-token-BOtIRJU7.js} +1 -1
- package/server/{internal-token-zY75jrRJ.js → internal-token-DoVzb4b7.js} +2 -2
- package/server/{io-DfvO2xyh.js → io-DKrWd3gX.js} +5 -5
- package/server/{issue-closed-dvEWKO7Q.js → issue-closed-6RQsAjDX.js} +7 -7
- package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-D9nLErvS.js} +206 -29
- package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DOPVv7xz.js} +1 -1
- package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-B2xy-IS9.js} +124 -11
- package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-CvgNAWqK.js} +1 -1
- package/server/issue-title-fallback-DTSCQVu0.js +120 -0
- package/server/{issues-CkvUoAnq.js → issues-e_Ck1Ln2.js} +2 -2
- package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-DqxVCZ1k.js} +3 -3
- package/server/jsonl-resolver-07OS3qOr.js +324 -0
- package/server/{kimi-code-C26gmGxM.js → kimi-code-BjtAHIz1.js} +14 -12
- package/server/{kimi-code-DoMoGqIu.js → kimi-code-vtXl2DR5.js} +1 -1
- package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-B1lgy2Vt.js} +2 -2
- package/server/{label-cleanup-X2lWfghH.js → label-cleanup-D2zUMasf.js} +3 -3
- package/server/{lifecycle-Bg44O-9x.js → lifecycle-0NOEzomy.js} +2 -2
- package/server/{lifecycle-B0rL38D3.js → lifecycle-DaCovZwn.js} +6 -6
- package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-6WL46dsB.js} +5 -5
- package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-BBMTaP7S.js} +1 -1
- package/server/{linear-client-B0cIkTs4.js → linear-client-7fQThJTc.js} +3 -3
- package/server/{linear-client-6V2E-DSa.js → linear-client-BTGApNLo.js} +1 -1
- package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-B8pYRsiU.js} +1 -1
- package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-Nk5s3L9M.js} +5 -5
- package/server/memory-fts-worker.js +1 -1
- package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cqvbusr4.js} +14 -14
- package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-DPb8foam.js} +5 -5
- package/server/{merge-BGWcBxku.js → merge-BB_bjJ9a.js} +1 -1
- package/server/{merge-vz80RvSE.js → merge-FZ78_cEz.js} +3 -3
- package/server/{merge-agent-GWhmnxFk.js → merge-agent-B3jRrlS1.js} +37 -33
- package/server/{merge-agent-BRSz26Oh.js → merge-agent-BuoC_PRZ.js} +2 -2
- package/server/{merge-batch-CFMEtTxv.js → merge-batch-B8bVjFWS.js} +1 -1
- package/server/{merge-completeness-CP347umA.js → merge-completeness-DQt7Qa7i.js} +4 -4
- package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-DkdabVch.js} +1 -1
- package/server/merge-ops-DabXHp2i.js +2 -0
- package/server/merge-rebase-CXq0qsgR.js +2 -0
- package/server/{merge-rebase-C5htyEEH.js → merge-rebase-qq40s91P.js} +2 -2
- package/server/{merge-set-DsGW8fmc.js → merge-set-BTNYvxM3.js} +1 -1
- package/server/{merge-set-eiE2nC6C.js → merge-set-BmRRflt0.js} +4 -4
- package/server/{merge-sync-CM2-myXu.js → merge-sync-0m2Q087q.js} +1 -1
- package/server/{merge-sync-Ct0-cxMX.js → merge-sync-CJpOa0cZ.js} +2 -2
- package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-CH5Mr3vN.js} +4 -4
- package/server/{merge-train-BOu3fN7O.js → merge-train-iwKqjtCF.js} +4 -4
- package/server/{merge-verification-BRp08IzI.js → merge-verification-JJc5GC2t.js} +6 -6
- package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-BOqWA373.js} +4 -4
- package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-CrhTdxZV.js} +1 -1
- package/server/messaging-nuwStbdQ.js +3 -0
- package/server/{multipart-parser-OAuW7824.js → multipart-parser-DxuW_rZV.js} +2 -2
- package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-xuYLFhLw.js} +1 -1
- package/server/node_modules/.package-lock.json +11 -11
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +27 -3
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
- package/server/node_modules/ansi-regex/index.js +3 -2
- package/server/node_modules/ansi-regex/package.json +1 -1
- package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/package.json +3 -3
- package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-Dmk0kO_p.js} +24 -23
- package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-gf4TxfZb.js} +2 -2
- package/server/package-lock.json +12 -12
- package/server/package.json +1 -1
- package/server/{pan-dir-DDd91kMb.js → pan-dir-BMda7tQj.js} +5 -5
- package/server/{deacon-merge-BOGFEV8_.js → parked-residue-BiHb8cD7.js} +150 -35
- package/server/{paths-CRLnDgcI.js → paths-DEe9j-kw.js} +2 -2
- package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-J5uIIJPu.js} +2 -2
- package/server/{pickup-BjJsSX12.js → pickup-D1UbSDPd.js} +1 -1
- package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-D-6okryb.js} +5 -5
- package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-CCbgBzNC.js} +1 -1
- package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-PGX3Pe8V.js} +1 -1
- package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-BK4dzh0X.js} +17 -12
- package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-BRhU7XPx.js} +1 -1
- package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-BNAV9kpa.js} +2 -2
- package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-DvHLaXKb.js} +1 -1
- package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-DAWgzXQA.js} +3 -3
- package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DC2_0t12.js} +4 -4
- package/server/prd-locations-BbAvqQmT.js +124 -0
- package/server/{project-pipelines-CCkebHOu.js → project-pipelines-By_5WcT4.js} +2 -2
- package/server/{project-repos-B4MK48j4.js → project-repos--QeCg7yQ.js} +29 -3
- package/server/project-repos-3bI6t4fO.js +3 -0
- package/server/project-resource-refresh-queue-BaZC79S3.js +2 -0
- package/server/project-resource-refresh-queue-x-K9mvpP.js +865 -0
- package/server/{projects-DvPEAP18.js → projects-LftaVK99.js} +1 -1
- package/server/{prompts-BiS5I2tZ.js → prompts-BotGu-6W.js} +2 -2
- package/server/{providers-DrfK0Ip8.js → providers-BL1I66sM.js} +7 -7
- package/server/providers-Dqgz3MY5.js +3 -0
- package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-D5Fz5jND.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-Eux0gWFq.js} +1 -1
- package/server/public/assets/{dist-D0ryefak.js → dist-C3zShwhA.js} +1 -1
- package/server/public/assets/{dist-CSmUXazd.js → dist-D-JX_u7m.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-UH3aweia.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-ccIQ-WXS.js} +1 -1
- package/server/public/assets/index-2wV4ipy_.css +1 -0
- package/server/public/assets/index-BTVcdPve.js +860 -0
- package/server/public/assets/{linear-BPE7oswm.js → linear-Cnnu4YQy.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-BD8-Tye6.js} +1 -1
- package/server/public/assets/{prod-aKDYUrXQ.js → prod-Ca6aKMts.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BmSrVyFD.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-CEGy8Das.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-VnQ8iY8s.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-BcHIsFJv.js → pull-requests-Cp_FDT8-.js} +3 -3
- package/server/pull-requests-jVGcVq5G.js +2 -0
- package/server/rally-CxhVgIQ6.js +3 -0
- package/server/{rally-api-ShZ4kvn0.js → rally-api-CqAIJ8RX.js} +2 -2
- package/server/{rally-api-u_vkr5c_.js → rally-api-Ij1Zt0NI.js} +1 -1
- package/server/{rally-B1OMtzch.js → rally-bQpBzUNf.js} +3 -3
- package/server/{rally-client-DgZvUZqX.js → rally-client-CN5vh4Ac.js} +1 -1
- package/server/{rally-client-D6Feq1Ka.js → rally-client-qKbCNRVW.js} +5 -5
- package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
- package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
- package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-BNOMVh7C.js} +7 -7
- package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-DrMyA_mA.js} +2 -2
- package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-mxIYCnqs.js} +7 -7
- package/server/{record-By-wp6pg.js → record-Ug18Cp4V.js} +1 -1
- package/server/{record-update-ByGtIlUK.js → record-update-WyhsREoH.js} +1 -1
- package/server/{record-update-D23jPU6b.js → record-update-dBGxL9OC.js} +8 -6
- package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-BKLrL6NX.js} +43 -10
- package/server/{recovery-trip-qloOYOFz.js → recovery-trip-wFAixKsg.js} +1 -1
- package/server/{release-engine-Crc0Tjx-.js → release-engine-D9gaCBn9.js} +5 -5
- package/server/{release-set-DDXwbIK7.js → release-set-DPHHzEGx.js} +3 -3
- package/server/{remote-CBpLi4Yy.js → remote-BU6ONLpv.js} +3 -3
- package/server/{remote-oEMfXlwT.js → remote-BUEeUic6.js} +3 -3
- package/server/{remote-agents-DQVGZVQ9.js → remote-agents-BVtASiOF.js} +1 -1
- package/server/{remote-agents-Bgtc2nOO.js → remote-agents-CSaTLi3u.js} +6 -6
- package/server/{remote-completion-DxUJ5HKR.js → remote-completion-CBV3b9TI.js} +13 -13
- package/server/{resolver-C8rooxoz.js → resolver-DvSMXty7.js} +31 -8
- package/server/{resolver-CuAULbLs.js → resolver-gxv97jsQ.js} +2 -2
- package/server/resume-DvHuF-bm.js +3 -0
- package/server/review-agent-DgkUPRx0.js +3 -0
- package/server/{review-agent-7C2w5CzU.js → review-agent-esZ0QXdY.js} +43 -55
- package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DGGEobLp.js} +6 -6
- package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-DmO8dIBH.js} +20 -11
- package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-Ct0q7FkE.js} +3 -3
- package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DHiiw7d8.js} +1 -1
- package/server/{review-status-CUnjjOUu.js → review-status-C_kQeeX0.js} +1 -1
- package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-BZz1Y_22.js} +3 -3
- package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-BWH0XW_m.js} +3 -3
- package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
- package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
- package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-2C9lk85r.js} +2 -2
- package/server/{review-status-sync-YthpOH_q.js → review-status-sync-Bq00Loey.js} +1 -1
- package/server/{review-status-DBnR5t4z.js → review-status-yOGD2MuK.js} +86 -27
- package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-Brjaxoda.js} +1 -1
- package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-CE_tr2iQ.js} +8 -8
- package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-CD-4kDVx.js} +1 -1
- package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Ca2V7QSY.js} +7 -7
- package/server/{rollup-DZwH4CLs.js → rollup--g9ik1XQ.js} +1 -1
- package/server/{rollup-QCwYcBdP.js → rollup-B6g9Nr6L.js} +8 -8
- package/server/{scanner-2aHeLC3W.js → scanner-YxIv-fG1.js} +8 -8
- package/server/{search-DwHYaj66.js → search-DqMN4__-.js} +2 -2
- package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
- package/server/{sequence-io-POKWdusG.js → sequence-io--b3_PsWq.js} +4 -4
- package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-CqouKVZG.js} +6 -6
- package/server/server.js +1115 -1269
- package/server/{service-BLb_CyPL.js → service-CEp-3iow.js} +64 -63
- package/server/{session-fork-DcTzVwex.js → session-fork-GtoeCh2H.js} +2 -2
- package/server/{settings-Clw8UVNs.js → settings-CLQcdkoD.js} +2 -2
- package/server/{settings-B9-H2K_E.js → settings-Ch2pCVtt.js} +3 -3
- package/server/settings-DhtPDmmI.js +2 -0
- package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BxiFrIKv.js} +3 -3
- package/server/{shadow-state-CEGrrECe.js → shadow-state-CSA1vtxr.js} +2 -2
- package/server/{shadow-state-e7250VUx.js → shadow-state-nGhCNXT2.js} +1 -1
- package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-7q5QDmMj.js} +2 -2
- package/server/{ship-log-7BnQHuKU.js → ship-log-ie0A_SqV.js} +1 -1
- package/server/{ship-record-CwUX6Afo.js → ship-record-BM3oVvnL.js} +7 -7
- package/server/{ship-record-BgUPnpT0.js → ship-record-DHWH1hLz.js} +1 -1
- package/server/{ship-status-Ce3_3edi.js → ship-status-BEkddXMT.js} +2 -2
- package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-BkzjVpWL.js} +1 -1
- package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D0TE1lBD.js} +7 -7
- package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-CkGweSCC.js} +19 -19
- package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-s406rw1N.js} +2 -2
- package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-CTAjwH5j.js} +1 -1
- package/server/{specialist-context-cHwpcXSh.js → specialist-context-CKasRfYu.js} +5 -5
- package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-DrjrOmmn.js} +2 -2
- package/server/{specialist-logs-5OTnrV91.js → specialist-logs-Du6quZ0_.js} +3 -3
- package/server/{specialists-xXcJHAyg.js → specialists-B-4zyE4Y.js} +1 -1
- package/server/{specialists-8LcQi9Np.js → specialists-CuDWiNdB.js} +21 -272
- package/server/{specialists-DocAK-7A.js → specialists-b0dMMjWq.js} +148 -685
- package/server/specialists-registry-1y6Rt_F1.js +3 -0
- package/server/specialists-registry-BYjs04iK.js +277 -0
- package/server/specialists-x-kPMhrL.js +4 -0
- package/server/specs-IYsFlM-L.js +3 -0
- package/server/{src-DudQNYVw.js → src-CY2Wl8IX.js} +337 -6
- package/server/{src-C2TAxwki.js → src-CZsPs61V.js} +6 -6
- package/server/{src-DUVvEA8Q.js → src-DeQwpuh6.js} +3 -3
- package/server/{stack-health-DKT4ySnA.js → stack-health-BQFSJc0l.js} +3 -3
- package/server/{stack-health-CbyiYS9H.js → stack-health-ypIKtkbE.js} +1 -1
- package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-C2e1zdMT.js} +5 -5
- package/server/{staleness-BjOAq9-d.js → staleness-CRDK6LFG.js} +1 -1
- package/server/{staleness-D8UTEXV5.js → staleness-Fzx_3_Hr.js} +1 -1
- package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-QNk4h9m6.js} +8 -8
- package/server/{state-home-DhAZlk5k.js → state-home-DdG8erBI.js} +2 -2
- package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
- package/server/{state-migrate-CJKEwpB0.js → state-migrate-C6H3jfHE.js} +6 -6
- package/server/{state-mirror-Do7pag7W.js → state-mirror-DF4Lfxm0.js} +3 -3
- package/server/stuck-remediation-BDa_tXgB.js +774 -0
- package/server/stuck-remediation-BVNd9txd.js +2 -0
- package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-BbbCZEtJ.js} +3 -3
- package/server/{summary-fork-CZ88rhVx.js → summary-fork-BvcW6bq0.js} +113 -30
- package/server/{summary-fork-CvB7Oyq9.js → summary-fork-DIQmtOuV.js} +2 -2
- package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
- package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
- package/server/supervisor/pty-supervisor.js +3 -3
- package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
- package/server/{supervisor-D4v0WfiQ.js → supervisor-D3jC2c7A.js} +4 -4
- package/server/supervisor-v0cYN2Vp.js +2 -0
- package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-CMWAQuWM.js} +3 -3
- package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-C-pJOPsn.js} +1 -1
- package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-DVlrLF9A.js} +2 -2
- package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-QKtIYXI2.js} +2 -2
- package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-cJea1OLo.js} +16 -16
- package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-C5DI_gWX.js} +6 -6
- package/server/{test-verdict-BWm3hgDj.js → test-verdict-C7kmd2_Y.js} +1 -1
- package/server/{test-verdict-BWtRmdiR.js → test-verdict-DUbDHqeD.js} +2 -2
- package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-BNQHwblU.js} +1 -1
- package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-CO08YlfQ.js} +2 -2
- package/server/tmux-B8zsqD_6.js +4 -0
- package/server/{tmux-BqXzRuaH.js → tmux-DWEc4Ld9.js} +91 -19
- package/server/{token-CO3INKbh.js → token-Bez-qCB2.js} +2 -2
- package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
- package/server/token-util-DfUS3Lpp.js +3 -0
- package/server/{tracker-config-DVzhaUxO.js → tracker-config-CJzPhSHv.js} +2 -2
- package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-DJAOAuMN.js} +2 -2
- package/server/{traefik-connect-A5k54mCv.js → traefik-connect-D3H5I6b9.js} +1 -1
- package/server/{tunnel-DauSR-rs.js → tunnel-BSdKnW0U.js} +1 -1
- package/server/{tunnel-CwOnS-PB.js → tunnel-Cr3ctqxp.js} +3 -3
- package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
- package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
- package/server/{types-DjpLVpsj.js → types-fzBp9cYi.js} +1 -1
- package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
- package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-IZQ-J8jt.js} +5 -5
- package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-DXApKcc2.js} +5 -5
- package/server/{uat-train-COSy-vEX.js → uat-train-CycEzpbE.js} +1 -1
- package/server/{uat-train-DVUNW03P.js → uat-train-IIZlz7r3.js} +0 -0
- package/server/{validate-Dvv83iBx.js → validate-Ur4xH5bN.js} +3 -3
- package/server/{validation-BdCjzWLN.js → validation-CHovCoTT.js} +1 -1
- package/server/{validation-DlHafKzu.js → validation-Dr6V4PXx.js} +9 -6
- package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-D3viYe_t.js} +1 -1
- package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-k5Ftpg0c.js} +1 -1
- package/server/{verification-runner-C6wdZda2.js → verification-runner-BuqGwm2t.js} +1 -1
- package/server/{verification-runner-DwP2fUEF.js → verification-runner-Dl13mmsI.js} +53 -27
- package/server/{vtt-parser-luerJpYT.js → vtt-parser-BSnAB-Og.js} +1 -1
- package/server/work-agent-prompt-CJJ4tXci.js +3 -0
- package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CioeOuM4.js} +14 -14
- package/server/{work-agent-start-BNQO65W7.js → work-agent-start-B65Gqn9N.js} +2 -2
- package/server/{work-agent-start-DkzseQFl.js → work-agent-start-Ct1HVh6z.js} +1 -1
- package/server/{workflows-BYwR2aIN.js → workflows-AgFul1xc.js} +114 -41
- package/server/workflows-CfHm8lVd.js +2 -0
- package/server/{workspace-B-QJa3Ps.js → workspace-Cu3XlMXt.js} +1 -1
- package/server/{workspace-iTnTycOB.js → workspace-Cy4sDd3q.js} +3 -3
- package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-BI0Hz6zI.js} +1 -1
- package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-CMaqvizr.js} +4 -4
- package/server/{workspace-config-D0CavVtz.js → workspace-config-DRYDO7Zr.js} +1 -1
- package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CgovxDrO.js} +17 -17
- package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-jfkKAEuO.js} +1 -1
- package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BDqXzGGK.js} +1 -1
- package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-BNzODIv6.js} +2 -2
- package/server/{workspaces-BlpbOPZ7.js → workspaces-BJdPqx_J.js} +131 -127
- package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
- package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
- package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
- package/sync-sources/rules/pan-handoff-focus-limit.md +12 -5
- package/sync-sources/rules/ste-writing.md +17 -0
- package/sync-sources/rules/work-agents-via-pan.md +2 -1
- package/sync-sources/rules/writing-style.md +3 -2
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
- package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +182 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
- package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
- package/sync-sources/skills/pan-gauntlet-loop/references/lessons.md +60 -0
- package/sync-sources/skills/pan-handoff/SKILL.md +13 -6
- package/sync-sources/skills/pan-help/SKILL.md +1 -1
- package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
- package/sync-sources/skills/pan-restart/SKILL.md +6 -3
- package/sync-sources/skills/pan-start/SKILL.md +3 -0
- package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
- package/sync-sources/skills/pan-sync/SKILL.md +1 -1
- package/server/activity-logger-BejO16Am.js +0 -3
- package/server/agent-state-DH_-Jkua.js +0 -3
- package/server/agents-megfmQHM.js +0 -3
- package/server/archive-planning-C-H9cM_J.js +0 -2
- package/server/build-info-PQlh_Rhb.js +0 -2
- package/server/cli-TaZspPHS.js +0 -2
- package/server/cliproxy-36ncAXlu.js +0 -3
- package/server/context-layers-CF6zHws4.js +0 -4
- package/server/conversations-AnGJ5rtX.js +0 -3
- package/server/deacon-BEH-IY0v.js +0 -5
- package/server/deacon-swarm-BHX-kR1b.js +0 -2
- package/server/deacon-swarm-BiLfNm_v.js +0 -1522
- package/server/dead-end-trip-BWpDg1Qd.js +0 -2
- package/server/delivery-cJM6zRjJ.js +0 -3
- package/server/deploy-queue-CmVBZEja.js +0 -2
- package/server/dist-VKBfkdi7.js +0 -3
- package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
- package/server/factory-D4V2wd_V.js +0 -717
- package/server/forge-CrP1L3i6.js +0 -2
- package/server/hume-1ubD_6O7.js +0 -3
- package/server/inspect-agent-CfxERkNt.js +0 -2
- package/server/merge-ops-DtHx17Vd.js +0 -2
- package/server/merge-rebase-BvB4UuNS.js +0 -2
- package/server/project-repos-BJiShUsN.js +0 -3
- package/server/providers-CStNGwze.js +0 -3
- package/server/public/assets/index-BFEwfmqX.js +0 -860
- package/server/public/assets/index-_USwyTAT.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
- package/server/pull-requests-C1Cqp2yo.js +0 -2
- package/server/rally-CjayjUIl.js +0 -3
- package/server/resume-D7JuMCRQ.js +0 -3
- package/server/review-agent-BUNTVJK2.js +0 -2
- package/server/settings-DBWB1gsG.js +0 -2
- package/server/specialists-D8gsOCwh.js +0 -3
- package/server/specs-BqkrRnU9.js +0 -3
- package/server/stuck-remediation-Di5JYkoo.js +0 -1164
- package/server/stuck-remediation-TNM1VhZb.js +0 -2
- package/server/supervisor-DX8VsPnb.js +0 -2
- package/server/tmux-CqNapnrr.js +0 -4
- package/server/token-util-Bu8bPF9f.js +0 -3
- package/server/workflows-Cf4LAnhg.js +0 -2
|
@@ -1,26 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { fn as init_projects, vn as listProjectsSync } from "./config-yaml-D9nfpEx1.js";
|
|
2
|
+
import { l as init_activity_logger, n as emitActivityDetailedSync, t as appendDomainEventAsync } from "./activity-logger-BWZhVphb.js";
|
|
3
|
+
import { f as resolveWorkspaceForCwd, o as init_resolver } from "./resolver-gxv97jsQ.js";
|
|
4
|
+
import { a as init_event_store, i as initEventStore } from "./event-store-BCSgMubf.js";
|
|
5
|
+
import { _ as isTerminalTurnDiffSummaryStatus, g as getMaxTurnDiffSummariesPerAgent, h as applyEvent, m as INITIAL_READ_MODEL_STATE, t as init_src, v as trimTurnDiffSummaries } from "./src-CY2Wl8IX.js";
|
|
6
|
+
import { f as init_agent_state_sync, p as listOverdeckAgentStatesSync } from "./pipeline-agent-reader-D-6okryb.js";
|
|
7
|
+
import { c as init_agents, t as AgentsResolver } from "./agents-jXgqpHca.js";
|
|
7
8
|
import { t as emitBootReconciledStopEvents } from "./boot-reconciled-stop-events-fbtwLQEZ.js";
|
|
8
|
-
import { f as resolveStatusFile, i as init_paths } from "./paths-
|
|
9
|
-
import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-
|
|
10
|
-
import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-
|
|
11
|
-
import {
|
|
12
|
-
import { r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-
|
|
13
|
-
import { r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-
|
|
14
|
-
import { r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-
|
|
15
|
-
import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-
|
|
16
|
-
import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-
|
|
9
|
+
import { f as resolveStatusFile, i as init_paths } from "./paths-DEe9j-kw.js";
|
|
10
|
+
import { a as resolveSessionContextBriefingPath, r as init_briefing_freshness } from "./briefing-freshness-e_OEYZEe.js";
|
|
11
|
+
import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-zh3ZXW6f.js";
|
|
12
|
+
import { h as listCheckpoints, m as isCheckpointTargetDisabled, s as diffCheckpointFiles, t as captureCheckpoint } from "./checkpoint-manager-DOwRGFff.js";
|
|
13
|
+
import { r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-7fQThJTc.js";
|
|
14
|
+
import { r as GitHubClientOptionalLive, t as GitHubClient } from "./github-client-DAbuXLuk.js";
|
|
15
|
+
import { r as RallyClientOptionalLive, t as RallyClient } from "./rally-client-qKbCNRVW.js";
|
|
16
|
+
import { n as resolveGitHubIssueSync, r as resolveTrackerTypeSync, t as init_tracker_utils } from "./tracker-utils-DJAOAuMN.js";
|
|
17
|
+
import { n as init_issue_service_singleton, t as getSharedIssueService } from "./issue-service-singleton-B2xy-IS9.js";
|
|
17
18
|
import { dirname } from "node:path";
|
|
18
19
|
import { Context, Effect, Layer, Option, Queue, Stream } from "effect";
|
|
19
20
|
import { basename as basename$1, dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
|
|
20
21
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
21
22
|
import { randomUUID } from "crypto";
|
|
22
23
|
import { readFile as readFile$1, stat as stat$1 } from "fs/promises";
|
|
24
|
+
import { execFile } from "node:child_process";
|
|
25
|
+
import { promisify } from "node:util";
|
|
23
26
|
//#region ../../lib/queue-position.ts
|
|
27
|
+
init_projects();
|
|
24
28
|
init_activity_logger();
|
|
25
29
|
init_resolver();
|
|
26
30
|
init_event_store();
|
|
@@ -431,6 +435,8 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
431
435
|
enrichStats: state.enrichStats,
|
|
432
436
|
enrichProgressBySessionId: state.enrichProgressBySessionId,
|
|
433
437
|
embedProgressBySessionId: state.embedProgressBySessionId,
|
|
438
|
+
ciByProjectKey: state.ciByProjectKey,
|
|
439
|
+
restartGate: state.restartGate ?? void 0,
|
|
434
440
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
435
441
|
};
|
|
436
442
|
}
|
|
@@ -439,7 +445,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
439
445
|
};
|
|
440
446
|
const getSnapshot = Effect.gen(function* () {
|
|
441
447
|
try {
|
|
442
|
-
const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-
|
|
448
|
+
const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CvgNAWqK.js"));
|
|
443
449
|
const currentIssues = cleanIssues(getSharedIssueService().getIssues());
|
|
444
450
|
if (currentIssues.length > 0 || state.issuesRaw.length === 0) state = {
|
|
445
451
|
...state,
|
|
@@ -472,12 +478,12 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
472
478
|
const getAgentIdBySessionId = (sessionId) => Effect.sync(() => state.agentIdBySessionId[sessionId] ?? null);
|
|
473
479
|
const agentsResolver = yield* AgentsResolver;
|
|
474
480
|
yield* Effect.gen(function* () {
|
|
475
|
-
const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-
|
|
481
|
+
const { reconstructCacheAuto } = yield* Effect.promise(() => import("./reconstruct-cache-mxIYCnqs.js"));
|
|
476
482
|
const result = yield* Effect.promise(() => reconstructCacheAuto());
|
|
477
483
|
const overdeckAgents = yield* agentsResolver.list({});
|
|
478
484
|
let dbOnlyReviewStatusByIssueId = {};
|
|
479
485
|
try {
|
|
480
|
-
const { getAllReviewStatusesFromDb } = yield* Effect.promise(() => import("./review-status-sync-
|
|
486
|
+
const { getAllReviewStatusesFromDb } = yield* Effect.promise(() => import("./review-status-sync-Bq00Loey.js"));
|
|
481
487
|
dbOnlyReviewStatusByIssueId = mergeDbOnlyReviewStatuses(result.reviewStatusByIssueId, getAllReviewStatusesFromDb());
|
|
482
488
|
} catch (err) {
|
|
483
489
|
console.error("[ReadModel] Failed to layer in DB-only review statuses:", err);
|
|
@@ -486,7 +492,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
486
492
|
let sequence = 0;
|
|
487
493
|
let recentActivity = [];
|
|
488
494
|
try {
|
|
489
|
-
const { getEventStore } = yield* Effect.promise(() => import("./event-store-
|
|
495
|
+
const { getEventStore } = yield* Effect.promise(() => import("./event-store-Db4w4YIY.js"));
|
|
490
496
|
const eventStore = getEventStore();
|
|
491
497
|
yield* Effect.promise(() => emitBootReconciledStopEvents(eventStore, result.markedStoppedIds, result.agentsById, "[ReadModel] Failed to emit boot-reconciled stop events:"));
|
|
492
498
|
sequence = eventStore.getLatestSequence();
|
|
@@ -508,7 +514,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
508
514
|
console.log(`[ReadModel] Bootstrapped from local database: ${Object.keys(agentsById).length} agents, ${Object.keys(result.reviewStatusByIssueId).length} review statuses, ${result.issuesEnumerated} in-flight issue(s), seq=${sequence}`);
|
|
509
515
|
(async () => {
|
|
510
516
|
try {
|
|
511
|
-
const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-
|
|
517
|
+
const { listCheckpoints, diffCheckpointFiles, getCheckpointTimestamp, deleteLegacyCheckpointRefs } = await import("./checkpoint-manager-CKr42Usw.js");
|
|
512
518
|
const agents = Object.values(state.agentsById);
|
|
513
519
|
const firstAgentWithWorkspace = agents.find((a) => a.workspace);
|
|
514
520
|
if (firstAgentWithWorkspace?.workspace) {
|
|
@@ -565,7 +571,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
565
571
|
}
|
|
566
572
|
})();
|
|
567
573
|
try {
|
|
568
|
-
const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-
|
|
574
|
+
const { getSharedIssueService } = yield* Effect.promise(() => import("./issue-service-singleton-CvgNAWqK.js"));
|
|
569
575
|
const issueService = getSharedIssueService();
|
|
570
576
|
const mergeT0 = performance.now();
|
|
571
577
|
const currentIssues = cleanIssues(issueService.getIssues());
|
|
@@ -589,7 +595,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
589
595
|
issuesRaw: cleaned
|
|
590
596
|
};
|
|
591
597
|
try {
|
|
592
|
-
if (!_cachedEventStore) import("./event-store-
|
|
598
|
+
if (!_cachedEventStore) import("./event-store-Db4w4YIY.js").then(({ getEventStore }) => {
|
|
593
599
|
_cachedEventStore = getEventStore();
|
|
594
600
|
try {
|
|
595
601
|
_cachedEventStore.emitOnly({
|
|
@@ -605,7 +611,7 @@ const ReadModelServiceLive = Layer.effect(ReadModelService, Effect.gen(function*
|
|
|
605
611
|
payload: { issues: cleaned }
|
|
606
612
|
});
|
|
607
613
|
} catch {}
|
|
608
|
-
import("./backlog-auto-trigger-
|
|
614
|
+
import("./backlog-auto-trigger-CCEpr4YT.js").then(({ triggerDebouncedIncrementalPass }) => {
|
|
609
615
|
triggerDebouncedIncrementalPass(process.cwd());
|
|
610
616
|
}).catch(() => {});
|
|
611
617
|
});
|
|
@@ -647,7 +653,7 @@ async function assembleLiveBriefingMarkdown(input = {}) {
|
|
|
647
653
|
"",
|
|
648
654
|
"- Persistent memory across sessions through observations, status updates, and rollups.",
|
|
649
655
|
"- Situational awareness from the live dashboard read model.",
|
|
650
|
-
"- Issue-scoped workspaces,
|
|
656
|
+
"- Issue-scoped workspaces, xBRIEF plans, and role handoffs for autonomous work.",
|
|
651
657
|
"- Cross-workspace reach through `pan memory search --all-workspaces` when sibling context is relevant.",
|
|
652
658
|
"- Searchable feature ownership through the Knowledge Registry.",
|
|
653
659
|
"",
|
|
@@ -867,6 +873,158 @@ async function readRegistryEntries(listRegistryEntries, logger) {
|
|
|
867
873
|
}
|
|
868
874
|
}
|
|
869
875
|
//#endregion
|
|
876
|
+
//#region ../../lib/ci/project-ci-github.ts
|
|
877
|
+
const execFileAsync = promisify(execFile);
|
|
878
|
+
const projectCiGhApi = async (path) => {
|
|
879
|
+
const { stdout } = await execFileAsync("gh", [
|
|
880
|
+
"api",
|
|
881
|
+
path,
|
|
882
|
+
"-H",
|
|
883
|
+
"Accept: application/vnd.github+json"
|
|
884
|
+
], {
|
|
885
|
+
encoding: "utf-8",
|
|
886
|
+
timeout: 15e3,
|
|
887
|
+
maxBuffer: 8 * 1024 * 1024
|
|
888
|
+
});
|
|
889
|
+
return JSON.parse(stdout);
|
|
890
|
+
};
|
|
891
|
+
async function resolveDefaultBranchHead(repo, branch, ghApi = projectCiGhApi) {
|
|
892
|
+
return (await ghApi(`repos/${repo}/branches/${encodeURIComponent(branch)}`)).commit?.sha ?? null;
|
|
893
|
+
}
|
|
894
|
+
//#endregion
|
|
895
|
+
//#region ../../lib/overdeck/project-ci-fill.ts
|
|
896
|
+
function createProjectCiFillState() {
|
|
897
|
+
return { fingerprints: /* @__PURE__ */ new Map() };
|
|
898
|
+
}
|
|
899
|
+
function projectionFingerprint(observation) {
|
|
900
|
+
const suites = Object.entries(observation.suites).sort(([left], [right]) => left.localeCompare(right)).map(([suiteId, suite]) => [
|
|
901
|
+
suiteId,
|
|
902
|
+
suite.status,
|
|
903
|
+
suite.conclusion,
|
|
904
|
+
suite.htmlUrl ?? null
|
|
905
|
+
]);
|
|
906
|
+
return JSON.stringify([
|
|
907
|
+
observation.repo,
|
|
908
|
+
observation.branch,
|
|
909
|
+
observation.headSha,
|
|
910
|
+
suites
|
|
911
|
+
]);
|
|
912
|
+
}
|
|
913
|
+
/** Fetch a complete Actions projection for the independently-resolved default
|
|
914
|
+
* branch head. The second branch lookup prevents publishing a projection when
|
|
915
|
+
* the branch advances while workflow pages are being collected. */
|
|
916
|
+
async function fillProjectCiObservation(project, deps = {}) {
|
|
917
|
+
const repo = project.config.github_repo;
|
|
918
|
+
if (!repo) return null;
|
|
919
|
+
const branch = project.config.workspace?.default_branch ?? "main";
|
|
920
|
+
const ghApi = deps.ghApi ?? projectCiGhApi;
|
|
921
|
+
try {
|
|
922
|
+
const headSha = await resolveDefaultBranchHead(repo, branch, ghApi);
|
|
923
|
+
if (!headSha) return null;
|
|
924
|
+
const runs = [];
|
|
925
|
+
for (let page = 1;; page += 1) {
|
|
926
|
+
const pageRuns = (await ghApi(`repos/${repo}/actions/runs?branch=${encodeURIComponent(branch)}&head_sha=${encodeURIComponent(headSha)}&per_page=100&page=${page}`)).workflow_runs ?? [];
|
|
927
|
+
runs.push(...pageRuns);
|
|
928
|
+
if (pageRuns.length < 100) break;
|
|
929
|
+
}
|
|
930
|
+
if (await resolveDefaultBranchHead(repo, branch, ghApi) !== headSha) return null;
|
|
931
|
+
const observedAt = deps.now?.() ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
932
|
+
const suites = {};
|
|
933
|
+
for (const run of runs) {
|
|
934
|
+
if (run.head_sha !== headSha || run.check_suite_id == null) continue;
|
|
935
|
+
const suiteId = String(run.check_suite_id);
|
|
936
|
+
const suiteObservedAt = run.updated_at ?? observedAt;
|
|
937
|
+
const existing = suites[suiteId];
|
|
938
|
+
if (existing?.observedAt && existing.observedAt > suiteObservedAt) continue;
|
|
939
|
+
suites[suiteId] = {
|
|
940
|
+
status: run.status ?? "queued",
|
|
941
|
+
conclusion: run.conclusion ?? null,
|
|
942
|
+
htmlUrl: run.html_url,
|
|
943
|
+
observedAt: suiteObservedAt
|
|
944
|
+
};
|
|
945
|
+
}
|
|
946
|
+
return {
|
|
947
|
+
projectKey: project.key,
|
|
948
|
+
repo,
|
|
949
|
+
branch,
|
|
950
|
+
headSha,
|
|
951
|
+
suites,
|
|
952
|
+
observedAt
|
|
953
|
+
};
|
|
954
|
+
} catch {
|
|
955
|
+
return null;
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
/** Fill every project through one complete, idempotent projection event. */
|
|
959
|
+
async function fillAllProjectCi(deps = {}) {
|
|
960
|
+
const append = deps.append ?? appendDomainEventAsync;
|
|
961
|
+
const projects = deps.projects ?? listProjectsSync();
|
|
962
|
+
const state = deps.state ?? createProjectCiFillState();
|
|
963
|
+
let appended = 0;
|
|
964
|
+
for (const project of projects) {
|
|
965
|
+
if (!project.config.github_repo) continue;
|
|
966
|
+
const observation = await fillProjectCiObservation(project, {
|
|
967
|
+
ghApi: deps.ghApi,
|
|
968
|
+
now: deps.now
|
|
969
|
+
});
|
|
970
|
+
if (!observation) continue;
|
|
971
|
+
const fingerprint = projectionFingerprint(observation);
|
|
972
|
+
if (state.fingerprints.get(project.key) === fingerprint) continue;
|
|
973
|
+
if (await append({
|
|
974
|
+
type: "project.ci_head_observed",
|
|
975
|
+
timestamp: observation.observedAt,
|
|
976
|
+
payload: observation
|
|
977
|
+
})) {
|
|
978
|
+
state.fingerprints.set(project.key, fingerprint);
|
|
979
|
+
appended += 1;
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
return appended;
|
|
983
|
+
}
|
|
984
|
+
function startProjectCiRefill(intervalMs, deps = {}) {
|
|
985
|
+
const state = createProjectCiFillState();
|
|
986
|
+
const fill = deps.fill ?? (() => fillAllProjectCi({ state }));
|
|
987
|
+
const warn = deps.warn ?? ((message) => console.warn(message));
|
|
988
|
+
let running = false;
|
|
989
|
+
const run = () => {
|
|
990
|
+
if (running) return;
|
|
991
|
+
running = true;
|
|
992
|
+
fill().catch((err) => {
|
|
993
|
+
warn(`[overdeck] Project CI fill failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
994
|
+
}).finally(() => {
|
|
995
|
+
running = false;
|
|
996
|
+
});
|
|
997
|
+
};
|
|
998
|
+
run();
|
|
999
|
+
const timer = (deps.setIntervalFn ?? setInterval)(run, intervalMs);
|
|
1000
|
+
timer.unref();
|
|
1001
|
+
return timer;
|
|
1002
|
+
}
|
|
1003
|
+
//#endregion
|
|
1004
|
+
//#region services/project-ci-refill-startup.ts
|
|
1005
|
+
let resolveProjectionReady;
|
|
1006
|
+
let projectionReady = false;
|
|
1007
|
+
let projectionReadyPromise = createProjectionReadyPromise();
|
|
1008
|
+
function createProjectionReadyPromise() {
|
|
1009
|
+
return new Promise((resolve) => {
|
|
1010
|
+
resolveProjectionReady = resolve;
|
|
1011
|
+
});
|
|
1012
|
+
}
|
|
1013
|
+
/** Mark the event-store → read-model subscription as installed. */
|
|
1014
|
+
function markEventStoreProjectionReady() {
|
|
1015
|
+
if (projectionReady) return;
|
|
1016
|
+
projectionReady = true;
|
|
1017
|
+
resolveProjectionReady();
|
|
1018
|
+
}
|
|
1019
|
+
/** Wait until events appended by background services can reach the read model. */
|
|
1020
|
+
function whenEventStoreProjectionReady() {
|
|
1021
|
+
return projectionReadyPromise;
|
|
1022
|
+
}
|
|
1023
|
+
async function startProjectCiRefillAfterProjectionReady(intervalMs, deps = {}) {
|
|
1024
|
+
await (deps.whenReady ?? whenEventStoreProjectionReady)();
|
|
1025
|
+
return (deps.start ?? startProjectCiRefill)(intervalMs);
|
|
1026
|
+
}
|
|
1027
|
+
//#endregion
|
|
870
1028
|
//#region services/domain-services.ts
|
|
871
1029
|
/**
|
|
872
1030
|
* Domain service wrappers — Effect services over existing lib modules (PAN-428 B5, PAN-433)
|
|
@@ -878,11 +1036,30 @@ async function readRegistryEntries(listRegistryEntries, logger) {
|
|
|
878
1036
|
* appended event is pushed to ReadModelService.applyEvent() so the in-memory
|
|
879
1037
|
* projection stays current.
|
|
880
1038
|
*/
|
|
1039
|
+
init_activity_logger();
|
|
1040
|
+
init_src();
|
|
881
1041
|
var EventStoreService = class extends Context.Service()("overdeck/dashboard/EventStoreService") {};
|
|
882
1042
|
/** Map a domain event to a detailed activity log entry. Returns null for uninteresting events. */
|
|
883
1043
|
function shouldRefreshSessionContext(type) {
|
|
884
1044
|
return type === "issues.snapshot" || type.startsWith("agent.") || type.startsWith("review.") || type.startsWith("pipeline.") || type.startsWith("planning.") || type.startsWith("plan.") || type.startsWith("workspace.") || type.startsWith("issue.") || type.startsWith("memory.") || type.startsWith("cost.") || type.startsWith("merge.") || type.startsWith("system.health_");
|
|
885
1045
|
}
|
|
1046
|
+
/**
|
|
1047
|
+
* Resolve the workspace a checkpoint may be captured in, or null when capture
|
|
1048
|
+
* must be skipped (PAN-3725).
|
|
1049
|
+
*
|
|
1050
|
+
* Skipped when the agent has no workspace, when the agent has reached a
|
|
1051
|
+
* terminal status (a stopped/done/archived/closed agent produces no new turns,
|
|
1052
|
+
* so capturing is pure waste — same rule the read model's checkpoint
|
|
1053
|
+
* reconciliation uses), or when the workspace was already found not to be a git
|
|
1054
|
+
* repository.
|
|
1055
|
+
*/
|
|
1056
|
+
function checkpointCaptureTarget(agent) {
|
|
1057
|
+
const workspace = typeof agent?.workspace === "string" ? agent.workspace : "";
|
|
1058
|
+
if (!workspace) return null;
|
|
1059
|
+
if (isTerminalTurnDiffSummaryStatus(agent?.status)) return null;
|
|
1060
|
+
if (isCheckpointTargetDisabled(workspace)) return null;
|
|
1061
|
+
return workspace;
|
|
1062
|
+
}
|
|
886
1063
|
function mapDomainEventToDetailed(event) {
|
|
887
1064
|
const p = event.payload ?? {};
|
|
888
1065
|
const issueId = p["issueId"] ?? void 0;
|
|
@@ -1157,6 +1334,7 @@ const EventStoreServiceLive = Layer.effect(EventStoreService, Effect.gen(functio
|
|
|
1157
1334
|
payload: event.payload
|
|
1158
1335
|
});
|
|
1159
1336
|
});
|
|
1337
|
+
markEventStoreProjectionReady();
|
|
1160
1338
|
startSessionContextWriter({
|
|
1161
1339
|
readSnapshot: () => Effect.runPromise(readModel.getSnapshot),
|
|
1162
1340
|
subscribe: (listener) => store.subscribe((event) => {
|
|
@@ -1178,9 +1356,8 @@ const EventStoreServiceLive = Layer.effect(EventStoreService, Effect.gen(functio
|
|
|
1178
1356
|
checkpointCooldown.set(agentId, Date.now());
|
|
1179
1357
|
(async () => {
|
|
1180
1358
|
try {
|
|
1181
|
-
const
|
|
1182
|
-
if (!
|
|
1183
|
-
const workspace = agent.workspace;
|
|
1359
|
+
const workspace = checkpointCaptureTarget((await Effect.runPromise(readModel.getSnapshot)).agents.find((a) => a.id === agentId));
|
|
1360
|
+
if (!workspace) return;
|
|
1184
1361
|
const turnId = `turn-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
1185
1362
|
await Effect.runPromise(captureCheckpoint(workspace, agentId, turnId));
|
|
1186
1363
|
const checkpoints = await Effect.runPromise(listCheckpoints(workspace, agentId));
|
|
@@ -1538,6 +1715,6 @@ const IssueLifecycleLive = Layer.effect(IssueLifecycle, Effect.gen(function* ()
|
|
|
1538
1715
|
*/
|
|
1539
1716
|
const IssueLifecycleWithClientLive = IssueLifecycleLive.pipe(Layer.provide(LinearClientOptionalLive), Layer.provide(GitHubClientOptionalLive), Layer.provide(RallyClientOptionalLive));
|
|
1540
1717
|
//#endregion
|
|
1541
|
-
export { EventStoreServiceLive as a,
|
|
1718
|
+
export { EventStoreServiceLive as a, ReadModelService as c, getClosedIssueIdsForReadSource as d, toAgentResolution as f, findPositionInQueueSync as g, computeQueuePositionFromStatusSync as h, EventStoreService as i, ReadModelServiceLive as l, toRole as m, IssueLifecycleLive as n, startProjectCiRefillAfterProjectionReady as o, toAgentStatus as p, IssueLifecycleWithClientLive as r, resolveDefaultBranchHead as s, IssueLifecycle as t, activityEntriesFromStoredEvents as u };
|
|
1542
1719
|
|
|
1543
|
-
//# sourceMappingURL=issue-lifecycle-
|
|
1720
|
+
//# sourceMappingURL=issue-lifecycle-D9nLErvS.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-
|
|
1
|
+
import { n as IssueLifecycleLive, r as IssueLifecycleWithClientLive, t as IssueLifecycle } from "./issue-lifecycle-D9nLErvS.js";
|
|
2
2
|
export { IssueLifecycle, IssueLifecycleLive, IssueLifecycleWithClientLive };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { n as __esmMin, r as __exportAll } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { On as resolveProjectFromIssueSync, fn as init_projects, p as loadConfigSync, t as init_config_yaml } from "./config-yaml-
|
|
3
|
-
import { n as openDatabase, t as init_driver } from "./driver-
|
|
4
|
-
import {
|
|
5
|
-
import { m as readWorkspacePlan, r as findPlan, s as init_io } from "./io-
|
|
6
|
-
import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-
|
|
7
|
-
import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-
|
|
8
|
-
import {
|
|
2
|
+
import { On as resolveProjectFromIssueSync, fn as init_projects, p as loadConfigSync, t as init_config_yaml } from "./config-yaml-D9nfpEx1.js";
|
|
3
|
+
import { n as openDatabase, t as init_driver } from "./driver-BtcFz-qu.js";
|
|
4
|
+
import { a as init_dist_src, i as Octokit } from "./factory-BrdqXBeK.js";
|
|
5
|
+
import { m as readWorkspacePlan, r as findPlan, s as init_io } from "./io-DKrWd3gX.js";
|
|
6
|
+
import { a as init_tracker_config, n as getLinearApiKey, o as validateRallyConfig, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-CJzPhSHv.js";
|
|
7
|
+
import { n as mapGitHubStateToCanonical, t as init_state_mapping } from "./state-mapping-D2yC81Vy.js";
|
|
8
|
+
import { n as resolveMissingIssue, t as init_issue_title_fallback } from "./issue-title-fallback-DTSCQVu0.js";
|
|
9
|
+
import { g as loadReviewStatusesForIssues, p as init_review_status } from "./review-status-yOGD2MuK.js";
|
|
9
10
|
import { Effect } from "effect";
|
|
10
11
|
import { existsSync } from "fs";
|
|
11
12
|
import { join } from "path";
|
|
@@ -351,6 +352,13 @@ function shouldRefreshPlanningStateForIssue(issue) {
|
|
|
351
352
|
return canonical !== "done" && canonical !== "canceled";
|
|
352
353
|
}
|
|
353
354
|
/**
|
|
355
|
+
* Display status for a canonical state — the same mapping the GitHub/Linear
|
|
356
|
+
* fetch formatters apply inline, extracted for the PAN-3659 backfill adapter.
|
|
357
|
+
*/
|
|
358
|
+
function displayStatusForCanonical(canonical) {
|
|
359
|
+
return canonical === "todo" ? "Todo" : canonical === "in_progress" ? "In Progress" : canonical === "in_review" ? "In Review" : canonical === "verifying_on_main" ? "Verifying" : canonical === "done" ? "Done" : canonical === "canceled" ? "Canceled" : canonical === "backlog" ? "Backlog" : "Todo";
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
354
362
|
* Cheap change detection for issue arrays.
|
|
355
363
|
* Compares length + the most recent updatedAt timestamp instead of
|
|
356
364
|
* serializing the entire array with JSON.stringify (which caused
|
|
@@ -489,6 +497,7 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
489
497
|
init_dist_src();
|
|
490
498
|
init_state_mapping();
|
|
491
499
|
init_cache_service();
|
|
500
|
+
init_issue_title_fallback();
|
|
492
501
|
init_tracker_config();
|
|
493
502
|
init_review_status();
|
|
494
503
|
init_projects();
|
|
@@ -543,6 +552,11 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
543
552
|
reviewStatusRefreshQueued = false;
|
|
544
553
|
reviewStatusRefreshIssueIds = /* @__PURE__ */ new Set();
|
|
545
554
|
getIssuesCache = /* @__PURE__ */ new Map();
|
|
555
|
+
/** Issues resolved on demand after aging out of the tracker sync window
|
|
556
|
+
* (PAN-3659). Keyed by uppercase identifier; merged into computeIssues and
|
|
557
|
+
* pruned when the windowed poll covers the issue again. */
|
|
558
|
+
backfilledIssues = /* @__PURE__ */ new Map();
|
|
559
|
+
backfillInFlight = /* @__PURE__ */ new Map();
|
|
546
560
|
/** Register a callback invoked whenever issue data changes (PAN-433). */
|
|
547
561
|
onIssuesChanged(fn) {
|
|
548
562
|
this._onIssuesChanged = fn;
|
|
@@ -672,6 +686,10 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
672
686
|
...this.trackers.linear.lastFetchedIssues,
|
|
673
687
|
...this.trackers.rally.lastFetchedIssues
|
|
674
688
|
];
|
|
689
|
+
if (this.backfilledIssues.size > 0) {
|
|
690
|
+
const fetchedKeys = new Set(allIssues.map((issue) => issue?.identifier?.toLowerCase()).filter(Boolean));
|
|
691
|
+
for (const row of this.backfilledIssues.values()) if (!fetchedKeys.has(row.identifier.toLowerCase())) allIssues.push(row);
|
|
692
|
+
}
|
|
675
693
|
try {
|
|
676
694
|
allIssues = allIssues.map((issue) => {
|
|
677
695
|
const shadowState = this.shadowStatesCache.get(issue.identifier.toLowerCase());
|
|
@@ -865,7 +883,7 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
865
883
|
async ensureShadowStateLoaded() {
|
|
866
884
|
if (this.shadowStateModule) return;
|
|
867
885
|
try {
|
|
868
|
-
this.shadowStateModule = await import("./shadow-state-
|
|
886
|
+
this.shadowStateModule = await import("./shadow-state-nGhCNXT2.js");
|
|
869
887
|
await this.refreshShadowStatesCache();
|
|
870
888
|
} catch {}
|
|
871
889
|
}
|
|
@@ -939,11 +957,106 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
939
957
|
}
|
|
940
958
|
pushUpdated() {
|
|
941
959
|
this.invalidateGetIssuesCache();
|
|
960
|
+
this.pruneBackfilledIssues();
|
|
942
961
|
const cachedIssues = this.getCachedTrackerIssues();
|
|
943
962
|
this.schedulePlanningRefreshForIssues(cachedIssues);
|
|
944
963
|
this.scheduleReviewStatusRefreshForIssues(cachedIssues);
|
|
945
964
|
this._onIssuesChanged?.(this.getIssues());
|
|
946
965
|
}
|
|
966
|
+
/**
|
|
967
|
+
* PAN-3659: ensure an issue that aged out of the tracker sync window still
|
|
968
|
+
* appears in getIssues(). The GitHub poll only fetches closed issues
|
|
969
|
+
* updated within `closedWindowDays`, so an issue closed longer ago vanishes
|
|
970
|
+
* from the read model and the issue view falls back to "Issue details"
|
|
971
|
+
* instead of the title. This resolves the issue once through the tracker's
|
|
972
|
+
* getIssue door (memoized in issue-title-fallback), adapts it to the
|
|
973
|
+
* dashboard shape, and holds it in a bucket that survives windowed polls
|
|
974
|
+
* until the poll covers the issue again. Fire-and-forget safe: concurrent
|
|
975
|
+
* and repeat calls share one in-flight resolution.
|
|
976
|
+
*/
|
|
977
|
+
async backfillIssue(issueId) {
|
|
978
|
+
const key = issueId.trim().toUpperCase();
|
|
979
|
+
if (!key) return;
|
|
980
|
+
if (this.hasIssueByIdentifier(key)) return;
|
|
981
|
+
let pending = this.backfillInFlight.get(key);
|
|
982
|
+
if (!pending) {
|
|
983
|
+
pending = (async () => {
|
|
984
|
+
const issue = await resolveMissingIssue(key);
|
|
985
|
+
if (!issue || this.hasIssueByIdentifier(key)) return;
|
|
986
|
+
this.backfilledIssues.set(key, this.formatBackfilledIssue(issue, key));
|
|
987
|
+
this.pushUpdated();
|
|
988
|
+
})().catch(() => {}).finally(() => this.backfillInFlight.delete(key));
|
|
989
|
+
this.backfillInFlight.set(key, pending);
|
|
990
|
+
}
|
|
991
|
+
return pending;
|
|
992
|
+
}
|
|
993
|
+
hasIssueByIdentifier(uppercaseIdentifier) {
|
|
994
|
+
const lower = uppercaseIdentifier.toLowerCase();
|
|
995
|
+
for (const tracker of [
|
|
996
|
+
"github",
|
|
997
|
+
"linear",
|
|
998
|
+
"rally"
|
|
999
|
+
]) if (this.trackers[tracker]?.lastFetchedIssues.some((issue) => issue?.identifier?.toLowerCase() === lower)) return true;
|
|
1000
|
+
return this.backfilledIssues.has(uppercaseIdentifier);
|
|
1001
|
+
}
|
|
1002
|
+
/** Drop backfilled rows the windowed poll now covers again. */
|
|
1003
|
+
pruneBackfilledIssues() {
|
|
1004
|
+
if (this.backfilledIssues.size === 0) return;
|
|
1005
|
+
const fetched = /* @__PURE__ */ new Set();
|
|
1006
|
+
for (const tracker of [
|
|
1007
|
+
"github",
|
|
1008
|
+
"linear",
|
|
1009
|
+
"rally"
|
|
1010
|
+
]) for (const issue of this.trackers[tracker]?.lastFetchedIssues ?? []) {
|
|
1011
|
+
const identifier = issue?.identifier?.toLowerCase();
|
|
1012
|
+
if (identifier) fetched.add(identifier);
|
|
1013
|
+
}
|
|
1014
|
+
for (const key of [...this.backfilledIssues.keys()]) if (fetched.has(key.toLowerCase())) this.backfilledIssues.delete(key);
|
|
1015
|
+
}
|
|
1016
|
+
/**
|
|
1017
|
+
* Adapt a tracker-door Issue to the dashboard issue shape used by the
|
|
1018
|
+
* windowed fetch formatters. Owner/repo/number come from the issue URL,
|
|
1019
|
+
* not from config, so this stays hermetic under test.
|
|
1020
|
+
*/
|
|
1021
|
+
formatBackfilledIssue(issue, identifier) {
|
|
1022
|
+
const canonicalStatus = issue.tracker === "github" ? mapGitHubStateToCanonical(issue.state, issue.labels ?? []) : issue.state === "closed" ? "done" : issue.state === "in_review" ? "in_review" : issue.state === "in_progress" ? "in_progress" : "todo";
|
|
1023
|
+
const [, ghOwner, ghRepo, ghNumber] = (issue.tracker === "github" ? issue.url?.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/) : null) ?? [];
|
|
1024
|
+
const sourceRepo = ghOwner && ghRepo ? `${ghOwner}/${ghRepo}` : void 0;
|
|
1025
|
+
const labelNames = issue.labels ?? [];
|
|
1026
|
+
return {
|
|
1027
|
+
id: sourceRepo ? `github-${ghOwner}-${ghRepo}-${ghNumber}` : `backfill-${issue.tracker}-${identifier.toLowerCase()}`,
|
|
1028
|
+
identifier,
|
|
1029
|
+
title: issue.title,
|
|
1030
|
+
description: issue.description ?? "",
|
|
1031
|
+
author: issue.author ?? "",
|
|
1032
|
+
status: displayStatusForCanonical(canonicalStatus),
|
|
1033
|
+
canonicalStatus,
|
|
1034
|
+
state: canonicalStatus,
|
|
1035
|
+
priority: issue.priority ?? (labelNames.some((l) => l.includes("priority") && l.includes("high")) ? 2 : labelNames.some((l) => l.includes("priority") && l.includes("urgent")) ? 1 : labelNames.some((l) => l.includes("priority") && l.includes("low")) ? 4 : 3),
|
|
1036
|
+
assignee: issue.assignee ? {
|
|
1037
|
+
name: issue.assignee,
|
|
1038
|
+
email: `${issue.assignee}@${issue.tracker}`
|
|
1039
|
+
} : void 0,
|
|
1040
|
+
labels: labelNames,
|
|
1041
|
+
url: issue.url,
|
|
1042
|
+
createdAt: issue.createdAt,
|
|
1043
|
+
updatedAt: issue.updatedAt,
|
|
1044
|
+
completedAt: issue.state === "closed" ? issue.updatedAt : void 0,
|
|
1045
|
+
project: sourceRepo ? {
|
|
1046
|
+
id: `github-${ghOwner}-${ghRepo}`,
|
|
1047
|
+
name: sourceRepo,
|
|
1048
|
+
color: "#333",
|
|
1049
|
+
icon: "github"
|
|
1050
|
+
} : {
|
|
1051
|
+
id: `backfill-${issue.tracker}`,
|
|
1052
|
+
name: issue.tracker,
|
|
1053
|
+
color: "#333",
|
|
1054
|
+
icon: issue.tracker
|
|
1055
|
+
},
|
|
1056
|
+
source: issue.tracker,
|
|
1057
|
+
sourceRepo
|
|
1058
|
+
};
|
|
1059
|
+
}
|
|
947
1060
|
getCachedTrackerIssues() {
|
|
948
1061
|
return [
|
|
949
1062
|
...this.trackers.github.lastFetchedIssues,
|
|
@@ -1408,8 +1521,8 @@ var init_issue_data_service = __esmMin((() => {
|
|
|
1408
1521
|
}
|
|
1409
1522
|
if (!this.cache.isStale("rally", "issues") && this.trackers.rally.lastFetchedIssues.length > 0) return;
|
|
1410
1523
|
try {
|
|
1411
|
-
const { RallyTracker } = await import("./rally-
|
|
1412
|
-
const { findProjectsByRallyProject } = await import("./projects-
|
|
1524
|
+
const { RallyTracker } = await import("./rally-CxhVgIQ6.js");
|
|
1525
|
+
const { findProjectsByRallyProject } = await import("./projects-LftaVK99.js");
|
|
1413
1526
|
const rallyProjects = findProjectsByRallyProject();
|
|
1414
1527
|
let allFormatted = [];
|
|
1415
1528
|
if (rallyProjects.length > 0) {
|
|
@@ -1508,4 +1621,4 @@ var init_issue_service_singleton = __esmMin((() => {
|
|
|
1508
1621
|
//#endregion
|
|
1509
1622
|
export { startSharedIssueService as a, parseIntegerHeader as c, issue_service_singleton_exports as i, init_issue_service_singleton as n, CacheService as o, isSharedIssueServiceStarted as r, init_cache_service as s, getSharedIssueService as t };
|
|
1510
1623
|
|
|
1511
|
-
//# sourceMappingURL=issue-service-singleton-
|
|
1624
|
+
//# sourceMappingURL=issue-service-singleton-B2xy-IS9.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as startSharedIssueService, n as init_issue_service_singleton, r as isSharedIssueServiceStarted, t as getSharedIssueService } from "./issue-service-singleton-
|
|
1
|
+
import { a as startSharedIssueService, n as init_issue_service_singleton, r as isSharedIssueServiceStarted, t as getSharedIssueService } from "./issue-service-singleton-B2xy-IS9.js";
|
|
2
2
|
init_issue_service_singleton();
|
|
3
3
|
export { getSharedIssueService, isSharedIssueServiceStarted, startSharedIssueService };
|