@overdeck/desktop 0.45.23 → 0.45.24
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 +2 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-DOA0KgXx.js → acceptance-criteria-DDCnXF58.js} +2 -2
- package/server/{advancing-selfheal-BBu6DSNm.js → advancing-selfheal-BVwW4qRn.js} +6 -6
- package/server/{agent-gc-BV1q_2EV.js → agent-gc-CHcnvonI.js} +4 -4
- package/server/agent-state-Bc3tzUC8.js +3 -0
- package/server/{agent-state-service-HoK8U4jW.js → agent-state-service-BsgWxZuB.js} +5 -5
- package/server/{agent-state-service-CnzFKSAQ.js → agent-state-service-D5UGKIJL.js} +1 -1
- package/server/{agents-B4Bjbkfv.js → agents-EbI0zCJl.js} +4 -4
- package/server/agents-wi9NWzs2.js +3 -0
- package/server/{archive-planning-zkJb3BeM.js → archive-planning-BZDgzoEj.js} +1 -1
- package/server/{archive-planning-DYrYojxl.js → archive-planning-Du25Jtst.js} +4 -4
- package/server/{artifact-index-jobs-C-xy7Z5v.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
- package/server/assemble-J2ZZ2C15.js +339 -0
- package/server/{backlog-auto-trigger-GtG71X8H.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
- package/server/{behavior-B_-4EKF3.js → behavior-B3exJ42O.js} +2 -2
- package/server/{briefing-freshness-DWdW7vUm.js → briefing-freshness-D1wzUIWv.js} +2 -2
- package/server/{build-info-DgTqZkL5.js → build-info-CZk_TITh.js} +1 -1
- package/server/{build-info-BT096lEl.js → build-info-Ie_D0_BT.js} +3 -3
- package/server/{checkpoint-manager-DDqcGyu8.js → checkpoint-manager-BI1Wxoku.js} +2 -2
- package/server/{checkpoint-manager-B7Bt29J0.js → checkpoint-manager-DwbQoqrC.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-CpgCjAlN.js → checkpoints-BJIs5QIA.js} +1 -1
- package/server/{checkpoints-C-AXLfYT.js → checkpoints-CQB1h765.js} +2 -2
- package/server/{claude-hooks-provision-C8wdRnN1.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
- package/server/{claude-hooks-provision-but-_qGY.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
- package/server/{claude-permissions-H_5wHQZQ.js → claude-permissions-DNWEVV6z.js} +2 -2
- package/server/{claude-settings-overlay-CbSz0Dvb.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
- package/server/{claude-settings-overlay-BTENVmYf.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
- package/server/cli-B86rejVV.js +3 -0
- package/server/{cli-vBeXbPrq.js → cli-RoOx5DUf.js} +9 -9
- package/server/{cliproxy-Bgb2XCqi.js → cliproxy-C8a1vtTU.js} +2 -2
- package/server/{cliproxy-DW0V86F8.js → cliproxy-fHfIeiGd.js} +1 -1
- package/server/{close-issue-Dn_4c4G8.js → close-issue-DoOifFIK.js} +5 -5
- package/server/{closed-issue-reaper-hANY_ehE.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
- package/server/{closed-issue-reaper-CWpY2uBw.js → closed-issue-reaper-CktPXo8m.js} +1 -1
- package/server/{codex-TmSi-yTv.js → codex-BZXGhUVB.js} +7 -7
- package/server/{codex-Dg7Is5yb.js → codex-GcHuUF-k.js} +1 -1
- package/server/{codex-parser-C4gSH-IR.js → codex-parser-CFZ1_1Jl.js} +2 -2
- package/server/{config-CCvjQf27.js → config-BZ0sHTju.js} +2 -2
- package/server/{config-DjLOdbgT.js → config-CKxYiCmX.js} +2 -2
- package/server/{config-DUIhMN_T.js → config-DzV30TOm.js} +1 -1
- package/server/{config-yaml-DvyMuOle.js → config-yaml-DySPNmKN.js} +23 -9
- package/server/{conflict-gate-CmrYpa47.js → conflict-gate-BaCVrH-N.js} +3 -3
- package/server/{conflict-gate-BSJkNTdp.js → conflict-gate-BhAY7TUd.js} +1 -1
- package/server/context-layers-BrPmE__h.js +4 -0
- package/server/context-layers-igZ4FI4_.js +37 -0
- package/server/{control-settings-aP1ANIlI.js → control-settings-BQp7_4uD.js} +4 -4
- package/server/{conversation-compaction-CNbTLB86.js → conversation-compaction-CgrR8YYp.js} +8 -8
- package/server/{conversation-compaction-DiG5zWQq.js → conversation-compaction-eQB5CkOe.js} +1 -1
- package/server/{conversation-service-Up7FEzIC.js → conversation-service-BLd3MYsG.js} +1 -1
- package/server/{conversation-service-Du-MTNpJ.js → conversation-service-DPJ71F33.js} +329 -19
- package/server/{conversations-DbOs1e9Q.js → conversations-6AfUfbwc.js} +5 -5
- package/server/{conversations-6mPANqvL.js → conversations-CAsJF9kh.js} +1 -1
- package/server/{cost-Ca0YTWDw.js → cost-B2ddP6wq.js} +2 -2
- package/server/{cost-CW4WSe72.js → cost-R-m6Yi-W.js} +3 -3
- package/server/{cost-sync-C0VdGme1.js → cost-sync-BsN6ER0n.js} +3 -3
- package/server/{dag-CdOjJVDT.js → dag-B1ucnjDU.js} +2 -2
- package/server/{dangerous-git-ops-CT-IypG3.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-pRnyD5w9.js → deacon-CU_cAYSR.js} +254 -144
- package/server/{deacon-DYSEJb48.js → deacon-kiQrb4ZT.js} +3 -3
- package/server/{deacon-nudge-log-Bjg8U4Y9.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
- package/server/{deacon-swarm-DftYRDo8.js → deacon-swarm-BXZZ1Z2-.js} +13 -13
- package/server/deacon-swarm-C-GwfjJy.js +2 -0
- package/server/deacon.js +8 -8
- package/server/{deploy-patrol-Bjsho_ha.js → deploy-patrol-AiFoP8dw.js} +6 -6
- package/server/{deploy-window-DeP_OIRk.js → deploy-window-C3F-tihF.js} +6 -6
- package/server/{deploy-window-CM6W1-c6.js → deploy-window-DkZraDyj.js} +1 -1
- package/server/{dev-supervisor-BpMoHlkR.js → dev-supervisor-bcOWqdQE.js} +2 -2
- package/server/{devcontainer-renderer-CtUgrVKW.js → devcontainer-renderer-_d6XhyND.js} +3 -3
- package/server/dist-Bzy0y69j.js +3 -0
- package/server/{dist-DyRx4cI7.js → dist-Cb_0uvpS.js} +1 -1
- package/server/{docker-BK7HIcBj.js → docker-DcMTFTUC.js} +2 -2
- package/server/{dod-BrSfUHm0.js → dod-C6n9RV3G.js} +1 -1
- package/server/{ensure-devcontainer-DRqaAkBR.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
- package/server/{ensure-devcontainer-DseivYEy.js → ensure-devcontainer-DNi-ono3.js} +4 -4
- package/server/{esm-shims-CbI3BVkl.js → esm-shims-OSHAYaS1.js} +1 -1
- package/server/{event-store-tdiY5eDZ.js → event-store-CQL6NeqB.js} +3 -3
- package/server/{event-store-Cr5PQwFC.js → event-store-EV2cMiXj.js} +1 -1
- package/server/{events-CvvGK6LT.js → events-BTdrdEq8.js} +1 -1
- package/server/{events-CC1dgUpx.js → events-DTfAe4My.js} +3 -3
- package/server/{factory-CynerjXO.js → factory-CFibJuaw.js} +4 -4
- package/server/{feature-registry-population-B0pmAz0a.js → feature-registry-population-DKZFMbFt.js} +4 -4
- package/server/{feature-registry-storage-_wUBRD3J.js → feature-registry-storage-BdPuLcBX.js} +2 -2
- package/server/{features-Dhxz-wLc.js → features-ez2271oH.js} +2 -2
- package/server/{feedback-target-CPS15Vte.js → feedback-target-7mqqwrX6.js} +7 -7
- package/server/{feedback-target-iygZwmMc.js → feedback-target-CoFDHiM8.js} +1 -1
- package/server/{feedback-writer-C9b6ccN1.js → feedback-writer-CY5L1lB7.js} +5 -5
- package/server/{feedback-writer-qmiMbqTZ.js → feedback-writer-D3a22RCd.js} +1 -1
- package/server/flywheel-DHrgCphM.js +1084 -0
- package/server/flywheel-DzGtWnJ1.js +477 -0
- package/server/flywheel-SVF02Jpq.js +2 -0
- package/server/{flywheel-merge-order-DxbQKE1d.js → flywheel-merge-order-UU0tiUld.js} +9 -8
- package/server/{flywheel-merge-order-C-6zRLvM.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
- package/server/{forge-Ch9gCFod.js → forge-CNFnyqps.js} +2 -2
- package/server/forge-DXnS_YFH.js +2 -0
- package/server/{from-CJ_aH5jD.js → from-kNxT0bZC.js} +1 -1
- package/server/{fts-db-CKgg0VKg.js → fts-db-CE46vDkZ.js} +2 -2
- package/server/{fts-operations-BrL_VTRr.js → fts-operations-CqY6zl-i.js} +2 -2
- package/server/{git-utils-BVa07a4a.js → git-utils-CRw2zLPC.js} +68 -3
- package/server/git-utils-D0_yhCgF.js +3 -0
- package/server/{github-app-CMBdIFBQ.js → github-app-C3QrAUd0.js} +18 -7
- package/server/{github-app-CPfoFAdV.js → github-app-ClZ2lk8D.js} +1 -1
- package/server/{github-client--XVlDpwM.js → github-client-BnIsSrEN.js} +2 -2
- package/server/{github-client-B4QsdE-X.js → github-client-DfQYVUaw.js} +1 -1
- package/server/{github-pr-lookup-BRbDW-qk.js → github-pr-lookup-D16NGsSO.js} +2 -2
- package/server/{harness-binary-CVio2m-u.js → harness-binary-DPUi-Pv8.js} +32 -6
- package/server/{harness-resolve-qHJBhy3Z.js → harness-resolve-3lNZkyT4.js} +18 -9
- package/server/{health-events-C9B8y1Hm.js → health-events-BBcTYQKU.js} +2 -2
- package/server/{health-events-CpfvuVmm.js → health-events-BDOHby5Q.js} +1 -1
- package/server/{hooks-DUXw8A0-.js → hooks-CKZgXlJb.js} +2 -2
- package/server/{hooks-ltecuFqZ.js → hooks-DPVX1rwQ.js} +1 -1
- package/server/{hume-BEq0bUDg.js → hume-Cz8igP9E.js} +2 -2
- package/server/hume-ccTf4wTX.js +3 -0
- package/server/{idle-stack-reaper-D7w9t3fE.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
- package/server/{idle-stack-reaper-w1ISSlhs.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
- package/server/{in-flight-guard-aQ1IxeI3.js → in-flight-guard-CAAkqPLu.js} +2 -2
- package/server/{infra-CzaSOgul.js → infra-BEqFxlJc.js} +14 -4
- package/server/{injection-DZ0PfYa4.js → injection-C8aiVJrF.js} +191 -183
- package/server/{injection-oNZeoDhL.js → injection-CPUIqNhI.js} +1 -1
- package/server/{inspect-agent-DJKLWcVT.js → inspect-agent-BLuJ1AkT.js} +135 -79
- package/server/inspect-agent-Brtz0URj.js +2 -0
- package/server/{internal-token-DXdfprGr.js → internal-token-BrcU6qfe.js} +1 -1
- package/server/{internal-token-Bb4XeV2x.js → internal-token-s0-oKybJ.js} +2 -2
- package/server/{io-B3_AHDfr.js → io-C9kF1wtJ.js} +3 -3
- package/server/{issue-closed-zhdvQicO.js → issue-closed-CDJk4pIp.js} +7 -7
- package/server/{issue-lifecycle-Dy4vd0Oa.js → issue-lifecycle-B8sZHVHh.js} +1 -1
- package/server/{issue-lifecycle-CreaCkjW.js → issue-lifecycle-ojZAzDBP.js} +21 -21
- package/server/{issue-service-singleton-DabvBWUp.js → issue-service-singleton-BvJ09SaR.js} +1 -1
- package/server/{issue-service-singleton-B5ushCvE.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
- package/server/{issues-B6ToV6x1.js → issues-BMmP_77e.js} +2 -2
- package/server/{jsonl-parser-Dhflo1SH.js → jsonl-parser-BXSlHwEh.js} +3 -3
- package/server/{label-cleanup-BKPJm4Hv.js → label-cleanup-B0UJwnv5.js} +3 -3
- package/server/{label-reconciler-DdWbHEBu.js → label-reconciler-B4iOAjlC.js} +4 -4
- package/server/{launcher-generator-CHVm7bGT.js → launcher-generator-BBWG_SiS.js} +101 -7
- package/server/{lifecycle-io-D8iNBcux.js → lifecycle-io-BREGpnLk.js} +5 -5
- package/server/{lifecycle-io-Bsnr2K4F.js → lifecycle-io-DPo7x11I.js} +1 -1
- package/server/{lifecycle-sycO16hj.js → lifecycle-xmBfK2GJ.js} +6 -6
- package/server/{lifecycle-DfeyBDwA.js → lifecycle-yPd___5E.js} +2 -2
- package/server/{linear-client-D4zqMnX7.js → linear-client-BsuUvkdA.js} +2 -2
- package/server/{linear-client-DqhDQO9k.js → linear-client-CTskEeT_.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-DK23JEdS.js → merge-B1DiziGU.js} +1 -1
- package/server/{merge-C_ZEhbqI.js → merge-CefQNAnq.js} +3 -3
- package/server/{merge-agent-XrB80vfT.js → merge-agent-4WOWlSYA.js} +28 -28
- package/server/{merge-agent-BQM3a8z5.js → merge-agent-CKkgIBPB.js} +1 -1
- package/server/{merge-batch-Bwoyr8Je.js → merge-batch-ClFn2T-y.js} +1 -1
- package/server/merge-ops-CR44oU9-.js +2 -0
- package/server/{merge-rebase-C1KIVr0s.js → merge-rebase-BfaTyXsw.js} +2 -2
- package/server/merge-set-DJ8-UErs.js +83 -0
- package/server/{merge-set-DnSYdBEp.js → merge-set-bUqbm3yc.js} +1 -1
- package/server/{merge-sync-SSv3E-pl.js → merge-sync-BJYeOODr.js} +1 -1
- package/server/{merge-sync-DZ9dojJn.js → merge-sync-VPV28g0g.js} +2 -2
- package/server/{merge-train-DxDfBTjr.js → merge-train-CHopycP0.js} +3 -3
- package/server/{merge-train-deps-CyYQUksx.js → merge-train-deps-D1cOZzy2.js} +4 -4
- package/server/{merge-verification-CSizH3HY.js → merge-verification-BkaOqPsw.js} +4 -4
- package/server/{multipart-parser-Dt8YPN5S.js → multipart-parser-duPAfSBw.js} +2 -2
- package/server/{no-resume-mode-Cx3K0hHi.js → no-resume-mode-Nw29vaFb.js} +1 -1
- package/server/node_modules/.package-lock.json +8 -8
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
- package/server/node_modules/undici/README.md +5 -0
- package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
- package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
- package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
- package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
- package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
- package/server/node_modules/undici/docs/docs/index.md +5 -0
- package/server/node_modules/undici/lib/core/request.js +1 -1
- package/server/node_modules/undici/lib/core/util.js +6 -1
- package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
- package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
- package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
- package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
- package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
- package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
- package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
- package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
- package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
- package/server/node_modules/undici/lib/util/cache.js +49 -7
- package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
- package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/server/node_modules/undici/package.json +2 -2
- package/server/node_modules/undici/types/client.d.ts +2 -2
- package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
- package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-BvKkWMJQ.js} +12 -12
- package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
- package/server/package-lock.json +9 -9
- package/server/package.json +1 -1
- package/server/{pan-dir-DeVUgwA7.js → pan-dir-B0c3w0Ya.js} +3 -3
- package/server/{paths-_zEts6wc.js → paths-D-xWGHdh.js} +2 -2
- package/server/{pickup-Dd0Znxxy.js → pickup-DUCLWrJY.js} +17 -16
- package/server/{pipeline-membership-0HaEGDlH.js → pipeline-membership-mY3GprlK.js} +7 -7
- package/server/{pipeline-notifier-6iCJplFZ.js → pipeline-notifier-BJr8gQX6.js} +1 -1
- package/server/{pipeline-notifier-D0ykk59O.js → pipeline-notifier-BXkJzDC4.js} +2 -2
- package/server/{project-pipelines-2sK1apsO.js → project-pipelines-C0MWUeCU.js} +2 -2
- package/server/project-repos-B6GycDh9.js +94 -0
- package/server/project-repos-DXKQsc_m.js +3 -0
- package/server/{projects-9SkRpES9.js → projects-vjjcmiN8.js} +1 -1
- package/server/{prompts-Dp4Tpk39.js → prompts-DxzFXuLl.js} +2 -2
- package/server/{providers-DV7ec8l7.js → providers-qQAwGQDW.js} +7 -7
- package/server/{providers-DKkBXhxU.js → providers-u4Ga0jOr.js} +1 -1
- package/server/public/assets/{chunk-BO2N2NFS-CltymLRg.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-D2f6pjgA.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
- package/server/public/assets/{dist-DEmlBBNQ.js → dist-ByIuzMQW.js} +3 -3
- package/server/public/assets/{dist-BWR4qFiV.js → dist-D7zYSEA6.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-DnfiViPK.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-B8Wrmj9H.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
- package/server/public/assets/{index-CsSuZQBI.js → index-CWeMerGO.js} +146 -144
- package/server/public/assets/{index-CUr1xv8w.css → index-CenuJ3Cw.css} +1 -1
- package/server/public/assets/{linear-C9zFQpkX.js → linear-BBbArIcK.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-lR8H7Yjd.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
- package/server/public/assets/{prod-B1jCQihw.js → prod-B8vYiu52.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-CVQ2guem.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-eD1RB4gm.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-ChEC6dQn.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests--Ib2jTgy.js → pull-requests-7N8WKseP.js} +1 -1
- package/server/{pull-requests-CXIhdCYD.js → pull-requests-_lHueOHW.js} +3 -3
- package/server/{queries-6d7Cdtm7.js → queries-CjNIf-Ub.js} +576 -166
- package/server/{rally-B708-nZn.js → rally-CyWT_lNO.js} +3 -3
- package/server/{rally-api-nY0ZANw3.js → rally-api-C8e_1JRi.js} +2 -2
- package/server/{rally-api-yjQ0TfHd.js → rally-api-ClOSd-Tt.js} +1 -1
- package/server/{rally-client-B1EJhfV0.js → rally-client-lc-nokqr.js} +4 -4
- package/server/{rally-client-CULK2XAY.js → rally-client-sgtVqzNU.js} +1 -1
- package/server/rally-zhhtXuDP.js +3 -0
- package/server/{reap-terminal-sessions-MWnqdLCJ.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
- package/server/{reap-terminal-sessions-N3BTkmX_.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
- package/server/rebuild-stack-CFvcBHsS.js +4 -0
- package/server/{rebuild-stack-Dp4eLkt4.js → rebuild-stack-lwtsW0GO.js} +26 -35
- package/server/{reconstruct-cache-uWbZfjms.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
- package/server/{record-t6V-3Dcj.js → record-CN0pj4_5.js} +1 -1
- package/server/{record-update-DACtKh6_.js → record-update-bLJxAXH4.js} +1 -1
- package/server/{record-update-Dq0t2uBG.js → record-update-dE1Aw83j.js} +2 -2
- package/server/{recovery-trip-BJtIQuag.js → recovery-trip-BvRWfUXM.js} +2 -2
- package/server/{release-engine-DZpmGGzb.js → release-engine-Cx48W7z8.js} +5 -5
- package/server/{release-set-hnXd_kga.js → release-set-CQfuN9-v.js} +3 -3
- package/server/{remote-Br-ZWVIP.js → remote-C_2hasl7.js} +3 -3
- package/server/{remote-4tiENDaI.js → remote-ChgimyYa.js} +3 -3
- package/server/{remote-agents-nmty1mLu.js → remote-agents-By1ige5O.js} +6 -6
- package/server/{remote-agents-CRCg1L4H.js → remote-agents-CA3Ihlxj.js} +1 -1
- package/server/{remote-completion-BbWNd10K.js → remote-completion-fVe9e_3u.js} +12 -12
- package/server/resume-BFv1PGpA.js +3 -0
- package/server/{review-agent-sKkE1FEL.js → review-agent-CIGOQYBD.js} +29 -25
- package/server/{review-agent-DJRO8EG8.js → review-agent-DNboMyW4.js} +1 -1
- package/server/{review-artifacts-BLbSC4ke.js → review-artifacts-nRDPuMxd.js} +5 -5
- package/server/{review-context-BgX3lcCx.js → review-context-2uj-YQ8J.js} +69 -25
- package/server/{review-status-C6n6-9f_.js → review-status-btEYlaxA.js} +1 -1
- package/server/{review-status-enrichment-tbOn_A_u.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
- package/server/{review-status-A7quS5KJ.js → review-status-kZj_KyCk.js} +42 -26
- package/server/{review-status-sync-BhSQ0d0l.js → review-status-sync-BTOpxtTC.js} +10 -5
- package/server/{review-status-sync-To3-iS-N.js → review-status-sync-DSDK3OMy.js} +1 -1
- package/server/{review-verdict-feedback-CTRNtzXO.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
- package/server/{review-verdict-feedback-C1Kg8n7t.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
- package/server/{rollup-B53Y81xK.js → rollup-BKQC7jp4.js} +1 -1
- package/server/{rollup-WA0VD-Rr.js → rollup-FGsKki9R.js} +8 -8
- package/server/{scanner-D2743cp8.js → scanner-CnqEZeDy.js} +41 -14
- package/server/{sequence-io-Cg0zYj_E.js → sequence-io-D909zgeH.js} +4 -4
- package/server/{sequencer-agent-BGY8gjg-.js → sequencer-agent-CzkcK6P5.js} +5 -5
- package/server/server.js +2194 -341
- package/server/{service-DCpB_SGd.js → service-CLeAoU6G.js} +51 -50
- package/server/{session-fork-BQ8_6H32.js → session-fork-CHI1XvL9.js} +2 -2
- package/server/{session-history-CVZDpS3c.js → session-history-BT3IvqhC.js} +4 -4
- package/server/settings-66A6uvIA.js +2 -0
- package/server/{settings-BZ5m1UCl.js → settings-BTMvpNFU.js} +3 -3
- package/server/{settings-ylxwqwQG.js → settings-C0zgxOGf.js} +2 -2
- package/server/{shadow-engineering-BlxG6Xye.js → shadow-engineering-BJfgm-hX.js} +2 -2
- package/server/{shadow-state-Dh-HzF2J.js → shadow-state-7a-524T8.js} +2 -2
- package/server/{shadow-state-C2_epgx2.js → shadow-state-DnDyjujH.js} +1 -1
- package/server/{shadow-utils-4bvjn9b3.js → shadow-utils-Db3oroFG.js} +2 -2
- package/server/{ship-log-ClSMIzZX.js → ship-log-D9MlVzYU.js} +1 -1
- package/server/{smart-compaction-CHIxLr_d.js → smart-compaction-CV2ukKND.js} +1 -1
- package/server/{smart-compaction-r4pHQBIr.js → smart-compaction-KCYScAU1.js} +7 -7
- package/server/{spawn-planning-session-DWAorh2B.js → spawn-planning-session-DKpdFyOC.js} +30 -23
- package/server/{spawn-planning-session-KC_UduxD.js → spawn-planning-session-qUC2VWu3.js} +1 -1
- package/server/{specialist-completion-BXhav38U.js → specialist-completion-Ky9wCDpb.js} +1 -1
- package/server/{specialist-context-DtrYvGJ-.js → specialist-context-Bn3dCGS2.js} +5 -5
- package/server/{specialist-handoff-logger-C45ouoZ6.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
- package/server/{specialist-logs-DJ3RzKxW.js → specialist-logs-C5p8G7tx.js} +3 -3
- package/server/{specialists-JVO00bs7.js → specialists-CC4r-c2s.js} +776 -347
- package/server/{specialists-D5fRZXmN.js → specialists-CShuVGWT.js} +1 -1
- package/server/{specialists-DVj0hvaL.js → specialists-DM6bWjsi.js} +1 -1
- package/server/{specialists-DyFeedjn.js → specialists-jiuuyVkp.js} +21 -19
- package/server/specs-C8Wsn2XO.js +3 -0
- package/server/{src-CG9mCkP6.js → src-CXmtj0im.js} +6 -6
- package/server/{src-CMTQGyCK.js → src-CdmnTM2m.js} +5 -5
- package/server/{src-U7_kTPEE.js → src-DtcUOZCq.js} +111 -18
- package/server/stack-health-Bn3o8FBX.js +3 -0
- package/server/{stack-health-puygdaMd.js → stack-health-DxSdG9cW.js} +63 -9
- package/server/{stale-task-claims-BbFwCTb0.js → stale-task-claims-KJKxxiiQ.js} +4 -4
- package/server/{staleness-Cbl_w4Bw.js → staleness-CT34nwr9.js} +1 -1
- package/server/{staleness-Bpy41ngS.js → staleness-DPm7ClwA.js} +1 -1
- package/server/{state-home-CIGjwNfJ.js → state-home-Cn_Qu8IX.js} +2 -2
- package/server/{state-migrate-Dkzaxvny.js → state-migrate-BGg2ZaOt.js} +4 -4
- package/server/{stuck-remediation-CzEov_fq.js → stuck-remediation-DYuPRYYw.js} +300 -23
- package/server/{stuck-remediation-sY_MHHgQ.js → stuck-remediation-s9_2qfi6.js} +1 -1
- package/server/{substrate-bug-weights-service-BH66lhm7.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
- package/server/{summary-fork-DHhJIsAL.js → summary-fork-D1RAk9rJ.js} +78 -12
- package/server/{summary-fork-D8bXjCr7.js → summary-fork-DpcxN9tf.js} +2 -2
- package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
- package/server/supervisor/pty-supervisor.js +2 -1
- package/server/supervisor/pty-token-x-ea28Us.js +43 -0
- package/server/supervisor-FTJAIsAK.js +2 -0
- package/server/{supervisor-BO-Zk_h-.js → supervisor-wM4ooB5O.js} +3 -3
- package/server/{swarm-readiness-CQ_fwUWF.js → swarm-readiness-DlP_UjHq.js} +3 -3
- package/server/{system-prerequisites-Bza0ffAh.js → system-prerequisites-DUDj1YHf.js} +56 -29
- package/server/{teardown-workspace-CEgauF4U.js → teardown-workspace-DeTTImn-.js} +15 -15
- package/server/{test-agent-queue-DXDt0Xa-.js → test-agent-queue-MbxX5vqq.js} +6 -6
- package/server/{test-verdict-CmUBK5cT.js → test-verdict-bWYBtqBg.js} +1 -1
- package/server/{test-verdict-DFjjIHR5.js → test-verdict-gscuksPv.js} +1 -1
- package/server/{tldr-daemon-DL566HbH.js → tldr-daemon-BYFkts95.js} +1 -1
- package/server/{tldr-daemon-BDtLOIlO.js → tldr-daemon-C-69c3OI.js} +2 -2
- package/server/{tmux-DoThH6aj.js → tmux-B6z7h_vZ.js} +1 -1
- package/server/{tmux-ftABRAmc.js → tmux-R7N7y-Mh.js} +2 -2
- package/server/{token-CsOhvw42.js → token-BK6t8BIT.js} +2 -2
- package/server/token-util-DuPuNriz.js +3 -0
- package/server/{token-util-CTmczIfW.js → token-util-DxXu-vd1.js} +1 -1
- package/server/{tracker-config-B4itFzDo.js → tracker-config-G6latr8C.js} +2 -2
- package/server/{tracker-utils-BePq_oj-.js → tracker-utils-B4ylXZQK.js} +1 -1
- package/server/{tracker-utils-tnxxqROg.js → tracker-utils-DHv5pSDT.js} +2 -2
- package/server/{traefik-connect-m73vGebA.js → traefik-connect-Df2uXPsQ.js} +1 -1
- package/server/{tunnel-B2vxjx_b.js → tunnel-CDVKJpRv.js} +3 -3
- package/server/{tunnel-Cgj-IGIl.js → tunnel-DGdUkGoZ.js} +1 -1
- package/server/{types-BBNjPcqU.js → types-5M0lupud.js} +1 -1
- package/server/{uat-train-cKfM-_WW.js → uat-train-B05BWkp-.js} +1 -1
- package/server/{uat-train-CuEn0t9M.js → uat-train-DDSrSoV1.js} +25 -25
- package/server/validate-IfDGkaVR.js +177 -0
- package/server/{validation-CIi6pnI2.js → validation-CC9OPqJZ.js} +1 -1
- package/server/{validation-B5JxoPUS.js → validation-Dw1pzDzr.js} +4 -4
- package/server/{verification-artifact-C-lIHfUa.js → verification-artifact-B3itKTxu.js} +1 -1
- package/server/{verification-artifact-BcnIbigL.js → verification-artifact-TVFSz_q1.js} +1 -1
- package/server/{verification-runner-CDj4lD4t.js → verification-runner-BW4HOKAz.js} +1 -1
- package/server/{verification-runner-Br0S_Ous.js → verification-runner-CkgX6EtI.js} +91 -106
- package/server/{vtt-parser-DKpNNW5i.js → vtt-parser-DYPbKcIJ.js} +1 -1
- package/server/{work-agent-prompt-Yb2bd3Fq.js → work-agent-prompt-Du8Vh2aJ.js} +9 -9
- package/server/workflows-BQu4RFQ-.js +2 -0
- package/server/{workflows-C9WmILql.js → workflows-mbQzh6mQ.js} +18 -18
- package/server/{workspace-DuUdndHe.js → workspace--8tnhDI0.js} +1 -1
- package/server/{workspace-BVl4rihN.js → workspace-BPUws1-_.js} +3 -3
- package/server/{workspace-config-cEGcO6UT.js → workspace-config-CIVWZOQr.js} +1 -1
- package/server/{workspace-manager-hLUv3ADC.js → workspace-manager-CBhNdzE4.js} +66 -15
- package/server/workspace-manager-CWT55qeI.js +3 -0
- package/server/{workspace-metadata-DNpMixRq.js → workspace-metadata-BzHnwwX4.js} +1 -1
- package/server/{workspace-metadata-CskwzzhL.js → workspace-metadata-_WygnyoX.js} +2 -2
- package/server/{workspaces-hWvy9eKs.js → workspaces-Do_9J0LQ.js} +130 -111
- package/sync-sources/hooks/record-cost-event.js +6 -4
- package/sync-sources/skills/okf/README.md +11 -3
- package/sync-sources/skills/okf/SKILL.md +12 -1
- package/sync-sources/skills/okf/docs/USAGE.md +15 -0
- package/sync-sources/skills/okf/references/overdeck.md +28 -0
- package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
- package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
- package/sync-sources/skills/pan-orders/SKILL.md +33 -0
- package/sync-sources/skills/pan-start/SKILL.md +4 -0
- package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
- package/server/agent-state-Bg0lhqwj.js +0 -3
- package/server/agents-FlIgQ3ql.js +0 -3
- package/server/cli-BsVIHwzC.js +0 -3
- package/server/context-layers-B3Nt58jl.js +0 -4
- package/server/context-layers-ZYFcWiyc.js +0 -165
- package/server/deacon-swarm-9jRLS5Ke.js +0 -2
- package/server/dist-Bd3vn0Hw.js +0 -3
- package/server/flywheel-DMCUzDWg.js +0 -2
- package/server/flywheel-DSSpWmqF.js +0 -522
- package/server/flywheel-DcBkQvgE.js +0 -207
- package/server/forge-B-ZWyTRm.js +0 -2
- package/server/git-utils-Dry_Ka_D.js +0 -3
- package/server/hume-B_DbflNM.js +0 -3
- package/server/inspect-agent-ch-F-5Ci.js +0 -2
- package/server/layers-DzxSTGNA.js +0 -93
- package/server/merge-blockers-BsFjGrQ8.js +0 -41
- package/server/merge-ops-DlB1IM0Y.js +0 -2
- package/server/merge-set-DLz0MkGT.js +0 -139
- package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +0 -1
- package/server/rally-njs_mJrt.js +0 -3
- package/server/rebuild-stack-kA7XngID.js +0 -3
- package/server/resume-CcKqnTvE.js +0 -3
- package/server/settings-D0OSwos5.js +0 -2
- package/server/specs-nN45DG2X.js +0 -3
- package/server/stack-health-Df0YEZKa.js +0 -3
- package/server/supervisor-BPy-o1A8.js +0 -2
- package/server/token-util-DrHg8abn.js +0 -3
- package/server/workflows-D90rMOya.js +0 -2
- package/server/workspace-manager-ZTdJAy9M.js +0 -3
|
@@ -26,6 +26,10 @@ const NOT_UNDERSTOOD_STATUS_CODES = [
|
|
|
26
26
|
|
|
27
27
|
const MAX_RESPONSE_AGE = 2147483647000
|
|
28
28
|
|
|
29
|
+
// Retention for revalidation-only entries (zero freshness lifetime but a
|
|
30
|
+
// validator present); each successful revalidation re-stores the entry.
|
|
31
|
+
const REVALIDATION_ONLY_RETENTION = 86400000 // 24 hours
|
|
32
|
+
|
|
29
33
|
/**
|
|
30
34
|
* @typedef {import('../../types/dispatcher.d.ts').default.DispatchHandler} DispatchHandler
|
|
31
35
|
*
|
|
@@ -118,6 +122,7 @@ class CacheHandler {
|
|
|
118
122
|
} catch {
|
|
119
123
|
// Fail silently
|
|
120
124
|
}
|
|
125
|
+
this.#deleteLocationHeaderEntries(resHeaders)
|
|
121
126
|
return downstreamOnHeaders()
|
|
122
127
|
}
|
|
123
128
|
|
|
@@ -150,8 +155,12 @@ class CacheHandler {
|
|
|
150
155
|
? parseHttpDate(resHeaders.date)
|
|
151
156
|
: undefined
|
|
152
157
|
|
|
158
|
+
const hasValidator =
|
|
159
|
+
(typeof resHeaders.etag === 'string' && isEtagUsable(resHeaders.etag)) ||
|
|
160
|
+
typeof resHeaders['last-modified'] === 'string'
|
|
161
|
+
|
|
153
162
|
const staleAt =
|
|
154
|
-
determineStaleAt(this.#cacheType, now, resAge, resHeaders, resDate, cacheControlDirectives) ??
|
|
163
|
+
determineStaleAt(this.#cacheType, now, resAge, resHeaders, resDate, cacheControlDirectives, hasValidator) ??
|
|
155
164
|
this.#cacheByDefault
|
|
156
165
|
if (staleAt === undefined || (resAge && resAge > staleAt)) {
|
|
157
166
|
return downstreamOnHeaders()
|
|
@@ -159,7 +168,11 @@ class CacheHandler {
|
|
|
159
168
|
|
|
160
169
|
const baseTime = resDate ? resDate.getTime() : now
|
|
161
170
|
const absoluteStaleAt = staleAt + baseTime
|
|
162
|
-
|
|
171
|
+
// Zero freshness lifetime but a validator: stale from the start, yet still
|
|
172
|
+
// storable since each reuse is preceded by a revalidation request.
|
|
173
|
+
// https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.4
|
|
174
|
+
const revalidationOnly = staleAt === 0 && hasValidator
|
|
175
|
+
if (now >= absoluteStaleAt && !revalidationOnly) {
|
|
163
176
|
// Response is already stale
|
|
164
177
|
return downstreamOnHeaders()
|
|
165
178
|
}
|
|
@@ -314,6 +327,58 @@ class CacheHandler {
|
|
|
314
327
|
}
|
|
315
328
|
}
|
|
316
329
|
|
|
330
|
+
/**
|
|
331
|
+
* Deletes the cache entries for the URIs in the response's Location and
|
|
332
|
+
* Content-Location headers when they share the request URI's origin
|
|
333
|
+
* https://www.rfc-editor.org/rfc/rfc9111.html#section-4.4
|
|
334
|
+
*
|
|
335
|
+
* @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders
|
|
336
|
+
*/
|
|
337
|
+
#deleteLocationHeaderEntries (resHeaders) {
|
|
338
|
+
let requestUrl
|
|
339
|
+
try {
|
|
340
|
+
requestUrl = new URL(this.#cacheKey.path, this.#cacheKey.origin)
|
|
341
|
+
} catch {
|
|
342
|
+
// Can't resolve the request URI, don't invalidate anything else
|
|
343
|
+
return
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
const invalidatedPaths = new Set([this.#cacheKey.path])
|
|
347
|
+
|
|
348
|
+
for (const headerName of ['location', 'content-location']) {
|
|
349
|
+
const header = resHeaders[headerName]
|
|
350
|
+
const value = Array.isArray(header) ? header[0] : header
|
|
351
|
+
if (typeof value !== 'string' || value === '') {
|
|
352
|
+
continue
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
let url
|
|
356
|
+
try {
|
|
357
|
+
url = new URL(value, requestUrl)
|
|
358
|
+
} catch {
|
|
359
|
+
continue
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (url.origin !== requestUrl.origin) {
|
|
363
|
+
// Only invalidate URIs sharing the request URI's origin, invalidating
|
|
364
|
+
// cross-origin URIs could be used for cache poisoning
|
|
365
|
+
continue
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
const path = `${url.pathname}${url.search}`
|
|
369
|
+
if (invalidatedPaths.has(path)) {
|
|
370
|
+
continue
|
|
371
|
+
}
|
|
372
|
+
invalidatedPaths.add(path)
|
|
373
|
+
|
|
374
|
+
try {
|
|
375
|
+
this.#store.delete({ ...this.#cacheKey, path })?.catch?.(noop)
|
|
376
|
+
} catch {
|
|
377
|
+
// Fail silently
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
317
382
|
onResponseData (controller, chunk) {
|
|
318
383
|
if (this.#writeStream?.write(chunk) === false) {
|
|
319
384
|
controller.pause()
|
|
@@ -422,23 +487,35 @@ function getAge (ageHeader) {
|
|
|
422
487
|
* @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders
|
|
423
488
|
* @param {Date | undefined} responseDate
|
|
424
489
|
* @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives} cacheControlDirectives
|
|
490
|
+
* @param {boolean} hasValidator whether the response has a validator (etag or
|
|
491
|
+
* last-modified) that revalidation requests can be made with
|
|
425
492
|
*
|
|
426
493
|
* @returns {number | undefined} time that the value is stale at in seconds or undefined if it shouldn't be cached
|
|
427
494
|
*/
|
|
428
|
-
function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheControlDirectives) {
|
|
495
|
+
function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheControlDirectives, hasValidator) {
|
|
429
496
|
if (cacheType === 'shared') {
|
|
430
497
|
// Prioritize s-maxage since we're a shared cache
|
|
431
498
|
// s-maxage > max-age > Expire
|
|
432
499
|
// https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.10-3
|
|
433
500
|
const sMaxAge = cacheControlDirectives['s-maxage']
|
|
434
501
|
if (sMaxAge !== undefined) {
|
|
435
|
-
|
|
502
|
+
if (sMaxAge > 0) {
|
|
503
|
+
return sMaxAge * 1000
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// Immediately stale, but storable if we can revalidate it before reuse.
|
|
507
|
+
return sMaxAge === 0 && hasValidator ? 0 : undefined
|
|
436
508
|
}
|
|
437
509
|
}
|
|
438
510
|
|
|
439
511
|
const maxAge = cacheControlDirectives['max-age']
|
|
440
512
|
if (maxAge !== undefined) {
|
|
441
|
-
|
|
513
|
+
if (maxAge > 0) {
|
|
514
|
+
return maxAge * 1000
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
// Immediately stale, but storable if we can revalidate it before reuse.
|
|
518
|
+
return maxAge === 0 && hasValidator ? 0 : undefined
|
|
442
519
|
}
|
|
443
520
|
|
|
444
521
|
if (typeof resHeaders.expires === 'string') {
|
|
@@ -482,6 +559,12 @@ function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheC
|
|
|
482
559
|
return 31536000000
|
|
483
560
|
}
|
|
484
561
|
|
|
562
|
+
if (cacheControlDirectives['no-cache'] === true && hasValidator) {
|
|
563
|
+
// No freshness source, but a validator lets us revalidate before reuse.
|
|
564
|
+
// https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.4
|
|
565
|
+
return 0
|
|
566
|
+
}
|
|
567
|
+
|
|
485
568
|
return undefined
|
|
486
569
|
}
|
|
487
570
|
|
|
@@ -518,6 +601,11 @@ function determineDeleteAt (baseTime, cachedAt, cacheControlDirectives, staleAt)
|
|
|
518
601
|
// revalidated.
|
|
519
602
|
if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity && immutable === -Infinity) {
|
|
520
603
|
const freshnessLifetime = staleAt - baseTime
|
|
604
|
+
if (freshnessLifetime <= 0) {
|
|
605
|
+
// Revalidation-only entry: no freshness lifetime to size the buffer on,
|
|
606
|
+
// so retain it for a bounded window instead.
|
|
607
|
+
return cachedAt + REVALIDATION_ONLY_RETENTION
|
|
608
|
+
}
|
|
521
609
|
const datePrecisionPadding = Math.min(Math.max(cachedAt - baseTime, 0), 1000)
|
|
522
610
|
return staleAt + freshnessLifetime + datePrecisionPadding
|
|
523
611
|
}
|
|
@@ -109,6 +109,16 @@ class CacheRevalidationHandler {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
if (this.#callback) {
|
|
112
|
+
// Serve the stale cached response on a connection error, per stale-if-error:
|
|
113
|
+
// RFC 5861 counts an unreachable origin (a would-be 5xx) as an error.
|
|
114
|
+
// https://datatracker.ietf.org/doc/html/rfc5861#section-4
|
|
115
|
+
if (this.#allowErrorStatusCodes) {
|
|
116
|
+
this.#successful = true
|
|
117
|
+
this.#callback(true, this.#context)
|
|
118
|
+
this.#callback = null
|
|
119
|
+
return
|
|
120
|
+
}
|
|
121
|
+
|
|
112
122
|
this.#callback(false)
|
|
113
123
|
this.#callback = null
|
|
114
124
|
}
|
|
@@ -52,6 +52,8 @@ class RedirectHandler {
|
|
|
52
52
|
throw new Error('max redirects')
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
let removeContentHeaders = statusCode === 303
|
|
56
|
+
|
|
55
57
|
// https://tools.ietf.org/html/rfc7231#section-6.4.2
|
|
56
58
|
// https://fetch.spec.whatwg.org/#http-redirect-fetch
|
|
57
59
|
// In case of HTTP 301 or 302 with POST, change the method to GET
|
|
@@ -62,6 +64,7 @@ class RedirectHandler {
|
|
|
62
64
|
util.destroy(this.opts.body.on('error', noop))
|
|
63
65
|
}
|
|
64
66
|
this.opts.body = null
|
|
67
|
+
removeContentHeaders = true
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
// https://tools.ietf.org/html/rfc7231#section-6.4.4
|
|
@@ -101,9 +104,9 @@ class RedirectHandler {
|
|
|
101
104
|
}
|
|
102
105
|
|
|
103
106
|
// Remove headers referring to the original URL.
|
|
104
|
-
// By default it is Host only
|
|
107
|
+
// By default it is Host only. A 303 or a 301/302 POST-to-GET redirect also removes all Content-* headers.
|
|
105
108
|
// https://tools.ietf.org/html/rfc7231#section-6.4
|
|
106
|
-
this.opts.headers = cleanRequestHeaders(this.opts.headers,
|
|
109
|
+
this.opts.headers = cleanRequestHeaders(this.opts.headers, removeContentHeaders, this.opts.origin !== origin, this.stripHeadersOnRedirect, this.stripHeadersOnCrossOriginRedirect)
|
|
107
110
|
this.opts.path = path
|
|
108
111
|
this.opts.origin = origin
|
|
109
112
|
this.opts.query = null
|
|
@@ -11,7 +11,7 @@ const {
|
|
|
11
11
|
|
|
12
12
|
function calculateRetryAfterHeader (retryAfter) {
|
|
13
13
|
const retryTime = new Date(retryAfter).getTime()
|
|
14
|
-
return isNaN(retryTime) ?
|
|
14
|
+
return isNaN(retryTime) ? null : retryTime - Date.now()
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// A stable controller handed to the downstream handler for the lifetime of the
|
|
@@ -211,9 +211,11 @@ class RetryHandler {
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
const retryTimeout =
|
|
214
|
-
retryAfterHeader
|
|
215
|
-
?
|
|
216
|
-
:
|
|
214
|
+
retryAfterHeader === 0
|
|
215
|
+
? 0
|
|
216
|
+
: retryAfterHeader > 0
|
|
217
|
+
? Math.min(retryAfterHeader, maxTimeout)
|
|
218
|
+
: Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout)
|
|
217
219
|
|
|
218
220
|
setTimeout(() => cb(null), retryTimeout)
|
|
219
221
|
}
|
|
@@ -57,16 +57,33 @@ function needsRevalidation (result, cacheControlDirectives, { headers = {} }) {
|
|
|
57
57
|
return false
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/**
|
|
61
|
+
* must-revalidate (proxy-revalidate for shared caches) forbids serving a stale
|
|
62
|
+
* response without successful validation, overriding max-stale and stale-if-error.
|
|
63
|
+
* https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.2
|
|
64
|
+
* https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.8
|
|
65
|
+
* @param {import('../../types/cache-interceptor.d.ts').default.GetResult} result
|
|
66
|
+
* @param {'shared' | 'private'} cacheType
|
|
67
|
+
* @returns {boolean}
|
|
68
|
+
*/
|
|
69
|
+
function forbidsServingStale (result, cacheType) {
|
|
70
|
+
return Boolean(
|
|
71
|
+
result.cacheControlDirectives?.['must-revalidate'] ||
|
|
72
|
+
(cacheType === 'shared' && result.cacheControlDirectives?.['proxy-revalidate'])
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
60
76
|
/**
|
|
61
77
|
* @param {import('../../types/cache-interceptor.d.ts').default.GetResult} result
|
|
62
78
|
* @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives | undefined} cacheControlDirectives
|
|
79
|
+
* @param {'shared' | 'private'} cacheType
|
|
63
80
|
* @returns {boolean}
|
|
64
81
|
*/
|
|
65
|
-
function isStale (result, cacheControlDirectives) {
|
|
82
|
+
function isStale (result, cacheControlDirectives, cacheType) {
|
|
66
83
|
const now = Date.now()
|
|
67
84
|
if (now > result.staleAt) {
|
|
68
85
|
// Response is stale
|
|
69
|
-
if (cacheControlDirectives?.['max-stale']) {
|
|
86
|
+
if (cacheControlDirectives?.['max-stale'] && !forbidsServingStale(result, cacheType)) {
|
|
70
87
|
// There's a threshold where we can serve stale responses, let's see if
|
|
71
88
|
// we're in it
|
|
72
89
|
// https://www.rfc-editor.org/rfc/rfc9111.html#name-max-stale
|
|
@@ -286,7 +303,7 @@ function handleResult (
|
|
|
286
303
|
return dispatch(opts, handler)
|
|
287
304
|
}
|
|
288
305
|
|
|
289
|
-
const stale = isStale(result, reqCacheControl)
|
|
306
|
+
const stale = isStale(result, reqCacheControl, globalOpts.type)
|
|
290
307
|
const revalidate = needsRevalidation(result, reqCacheControl, opts)
|
|
291
308
|
|
|
292
309
|
// Check if the response is stale
|
|
@@ -345,7 +362,7 @@ function handleResult (
|
|
|
345
362
|
|
|
346
363
|
let withinStaleIfErrorThreshold = false
|
|
347
364
|
const staleIfErrorExpiry = result.cacheControlDirectives['stale-if-error'] ?? reqCacheControl?.['stale-if-error']
|
|
348
|
-
if (staleIfErrorExpiry) {
|
|
365
|
+
if (staleIfErrorExpiry && !forbidsServingStale(result, globalOpts.type)) {
|
|
349
366
|
withinStaleIfErrorThreshold = now < (result.staleAt + (staleIfErrorExpiry * 1000))
|
|
350
367
|
}
|
|
351
368
|
|
|
@@ -276,6 +276,10 @@ function createDecompressInterceptor (options = {}) {
|
|
|
276
276
|
|
|
277
277
|
return (dispatch) => {
|
|
278
278
|
return (opts, handler) => {
|
|
279
|
+
if (opts.method === 'HEAD') {
|
|
280
|
+
return dispatch(opts, handler)
|
|
281
|
+
}
|
|
282
|
+
|
|
279
283
|
const decompressHandler = new DecompressHandler(handler, options)
|
|
280
284
|
return dispatch(opts, decompressHandler)
|
|
281
285
|
}
|
|
@@ -12,6 +12,11 @@ const {
|
|
|
12
12
|
} = require('./mock-symbols')
|
|
13
13
|
const { InvalidArgumentError } = require('../core/errors')
|
|
14
14
|
const { serializePathWithQuery } = require('../core/util')
|
|
15
|
+
const {
|
|
16
|
+
types: {
|
|
17
|
+
isPromise
|
|
18
|
+
}
|
|
19
|
+
} = require('node:util')
|
|
15
20
|
|
|
16
21
|
/**
|
|
17
22
|
* Defines the scope API for an interceptor reply
|
|
@@ -117,13 +122,9 @@ class MockInterceptor {
|
|
|
117
122
|
// Values of reply aren't available right now as they
|
|
118
123
|
// can only be available when the reply callback is invoked.
|
|
119
124
|
if (typeof replyOptionsCallbackOrStatusCode === 'function') {
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
const wrappedDefaultsCallback = (opts) => {
|
|
124
|
-
// Our reply options callback contains the parameter for statusCode, data and options.
|
|
125
|
-
const resolvedData = replyOptionsCallbackOrStatusCode(opts)
|
|
126
|
-
|
|
125
|
+
// Resolves the data returned by a reply options callback into
|
|
126
|
+
// dispatch data, validating its format along the way.
|
|
127
|
+
const resolveReplyCallbackData = (resolvedData) => {
|
|
127
128
|
// Check if it is in the right format
|
|
128
129
|
if (typeof resolvedData !== 'object' || resolvedData === null) {
|
|
129
130
|
throw new InvalidArgumentError('reply options callback must return an object')
|
|
@@ -138,6 +139,23 @@ class MockInterceptor {
|
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
141
|
|
|
142
|
+
// We'll first wrap the provided callback in another function,
|
|
143
|
+
// this function will properly resolve the data from the callback
|
|
144
|
+
// when invoked.
|
|
145
|
+
const wrappedDefaultsCallback = (opts) => {
|
|
146
|
+
// Our reply options callback contains the parameter for statusCode, data and options.
|
|
147
|
+
const resolvedData = replyOptionsCallbackOrStatusCode(opts)
|
|
148
|
+
|
|
149
|
+
// An asynchronous reply options callback resolves to the reply
|
|
150
|
+
// parameters, so the dispatch data can only be resolved once the
|
|
151
|
+
// returned promise settles.
|
|
152
|
+
if (isPromise(resolvedData)) {
|
|
153
|
+
return resolvedData.then(resolveReplyCallbackData)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return resolveReplyCallbackData(resolvedData)
|
|
157
|
+
}
|
|
158
|
+
|
|
141
159
|
// Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.
|
|
142
160
|
const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback, { ignoreTrailingSlash: this[kIgnoreTrailingSlash] })
|
|
143
161
|
return new MockScope(newMockDispatch)
|
|
@@ -292,25 +292,54 @@ function mockDispatch (opts, handler) {
|
|
|
292
292
|
// Get mock dispatch from built key
|
|
293
293
|
const key = buildKey(opts)
|
|
294
294
|
const mockDispatch = getMockDispatch(this[kDispatches], key)
|
|
295
|
+
const mockDispatches = this[kDispatches]
|
|
295
296
|
|
|
296
297
|
mockDispatch.timesInvoked++
|
|
297
298
|
|
|
299
|
+
const { timesInvoked, times } = mockDispatch
|
|
300
|
+
|
|
301
|
+
// If it's used up and not persistent, mark as consumed
|
|
302
|
+
mockDispatch.consumed = !mockDispatch.persist && timesInvoked >= times
|
|
303
|
+
mockDispatch.pending = timesInvoked < times
|
|
304
|
+
|
|
298
305
|
// Here's where we resolve a callback if a callback is present for the dispatch data.
|
|
299
306
|
if (mockDispatch.data.callback) {
|
|
300
|
-
|
|
307
|
+
const callbackResult = mockDispatch.data.callback(opts)
|
|
308
|
+
|
|
309
|
+
// An asynchronous reply options callback resolves to the reply data, so
|
|
310
|
+
// the dispatch can only continue once the returned promise settles.
|
|
311
|
+
// A rejection cannot be thrown synchronously from the dispatch at that
|
|
312
|
+
// point, so it is surfaced as a response error instead.
|
|
313
|
+
if (isPromise(callbackResult)) {
|
|
314
|
+
callbackResult.then(
|
|
315
|
+
(resolvedData) => {
|
|
316
|
+
mockDispatch.data = { ...mockDispatch.data, ...resolvedData }
|
|
317
|
+
dispatchMockReply(mockDispatches, mockDispatch, key, opts, handler)
|
|
318
|
+
},
|
|
319
|
+
(error) => {
|
|
320
|
+
deleteMockDispatch(mockDispatches, key)
|
|
321
|
+
handler.onResponseError(null, error)
|
|
322
|
+
}
|
|
323
|
+
)
|
|
324
|
+
return true
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
mockDispatch.data = { ...mockDispatch.data, ...callbackResult }
|
|
301
328
|
}
|
|
302
329
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
const { timesInvoked, times } = mockDispatch
|
|
330
|
+
return dispatchMockReply(mockDispatches, mockDispatch, key, opts, handler)
|
|
331
|
+
}
|
|
306
332
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
333
|
+
/**
|
|
334
|
+
* Replies to a request once the mock dispatch data is fully resolved
|
|
335
|
+
*/
|
|
336
|
+
function dispatchMockReply (mockDispatches, mockDispatch, key, opts, handler) {
|
|
337
|
+
// Parse mockDispatch data
|
|
338
|
+
const { data: { statusCode, data, headers, trailers, error }, delay } = mockDispatch
|
|
310
339
|
|
|
311
340
|
// If specified, trigger dispatch error
|
|
312
341
|
if (error !== null) {
|
|
313
|
-
deleteMockDispatch(
|
|
342
|
+
deleteMockDispatch(mockDispatches, key)
|
|
314
343
|
handler.onResponseError(null, error)
|
|
315
344
|
return true
|
|
316
345
|
}
|
|
@@ -353,10 +382,10 @@ function mockDispatch (opts, handler) {
|
|
|
353
382
|
if (typeof delay === 'number' && delay > 0) {
|
|
354
383
|
timer = setTimeout(() => {
|
|
355
384
|
timer = null
|
|
356
|
-
handleReply(
|
|
385
|
+
handleReply(mockDispatches)
|
|
357
386
|
}, delay)
|
|
358
387
|
} else {
|
|
359
|
-
handleReply(
|
|
388
|
+
handleReply(mockDispatches)
|
|
360
389
|
}
|
|
361
390
|
|
|
362
391
|
function handleReply (mockDispatches, _data = data) {
|
|
@@ -42,15 +42,57 @@ function normalizeHeaders (opts) {
|
|
|
42
42
|
headers = {}
|
|
43
43
|
|
|
44
44
|
if (hasSafeIterator(opts.headers)) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
if (Array.isArray(opts.headers)) {
|
|
46
|
+
// Array format: could be flat alternating [k, v, k, v, ...]
|
|
47
|
+
// or array-of-pairs [[k, v], ...]
|
|
48
|
+
const first = opts.headers[0]
|
|
49
|
+
if (Array.isArray(first)) {
|
|
50
|
+
for (const x of opts.headers) {
|
|
51
|
+
if (!Array.isArray(x)) {
|
|
52
|
+
throw new Error('opts.headers is not a valid header map')
|
|
53
|
+
}
|
|
54
|
+
const [key, val] = x
|
|
55
|
+
if (typeof key !== 'string' || typeof val !== 'string') {
|
|
56
|
+
throw new Error('opts.headers is not a valid header map')
|
|
57
|
+
}
|
|
58
|
+
headers[key.toLowerCase()] = val
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
// Flat alternating array [k, v, k, v, ...]
|
|
62
|
+
const len = opts.headers.length
|
|
63
|
+
if (len % 2 !== 0) {
|
|
64
|
+
throw new Error('opts.headers is not a valid header map')
|
|
65
|
+
}
|
|
66
|
+
for (let i = 0; i < len; i += 2) {
|
|
67
|
+
const key = opts.headers[i]
|
|
68
|
+
const val = opts.headers[i + 1]
|
|
69
|
+
if (typeof key !== 'string' || (typeof val !== 'string' && !Array.isArray(val))) {
|
|
70
|
+
throw new Error('opts.headers is not a valid header map')
|
|
71
|
+
}
|
|
72
|
+
if (typeof val === 'string') {
|
|
73
|
+
headers[key.toLowerCase()] = val
|
|
74
|
+
} else {
|
|
75
|
+
const mapped = []
|
|
76
|
+
for (let j = 0; j < val.length; j++) {
|
|
77
|
+
const v = val[j]
|
|
78
|
+
mapped.push(typeof v === 'string' ? v : v.toString('latin1'))
|
|
79
|
+
}
|
|
80
|
+
headers[key.toLowerCase()] = mapped
|
|
81
|
+
}
|
|
82
|
+
}
|
|
48
83
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
84
|
+
} else {
|
|
85
|
+
// Non-array iterable (e.g. Map) — use original iteration logic
|
|
86
|
+
for (const x of opts.headers) {
|
|
87
|
+
if (!Array.isArray(x)) {
|
|
88
|
+
throw new Error('opts.headers is not a valid header map')
|
|
89
|
+
}
|
|
90
|
+
const [key, val] = x
|
|
91
|
+
if (typeof key !== 'string' || typeof val !== 'string') {
|
|
92
|
+
throw new Error('opts.headers is not a valid header map')
|
|
93
|
+
}
|
|
94
|
+
headers[key.toLowerCase()] = val
|
|
52
95
|
}
|
|
53
|
-
headers[key.toLowerCase()] = val
|
|
54
96
|
}
|
|
55
97
|
} else {
|
|
56
98
|
for (const key of Object.keys(opts.headers)) {
|
|
@@ -16,6 +16,7 @@ const { serializeAMimeType } = require('./data-url')
|
|
|
16
16
|
const { multipartFormDataParser } = require('./formdata-parser')
|
|
17
17
|
const { parseJSONFromBytes } = require('../infra')
|
|
18
18
|
const { utf8DecodeBytes } = require('../../encoding')
|
|
19
|
+
const { ReadableStreamTee } = require('node:stream/web')
|
|
19
20
|
|
|
20
21
|
const textEncoder = new TextEncoder()
|
|
21
22
|
function noop () {}
|
|
@@ -279,7 +280,7 @@ function cloneBody (body) {
|
|
|
279
280
|
// https://fetch.spec.whatwg.org/#concept-body-clone
|
|
280
281
|
|
|
281
282
|
// 1. Let « out1, out2 » be the result of teeing body’s stream.
|
|
282
|
-
const { 0: out1, 1: out2 } = body.stream.tee()
|
|
283
|
+
const { 0: out1, 1: out2 } = ReadableStreamTee?.(body.stream, true) ?? body.stream.tee()
|
|
283
284
|
|
|
284
285
|
// 2. Set body’s stream to out1.
|
|
285
286
|
body.stream = out1
|
|
@@ -45,9 +45,7 @@ class Response {
|
|
|
45
45
|
static json (data, init = undefined) {
|
|
46
46
|
webidl.argumentLengthCheck(arguments, 1, 'Response.json')
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
init = webidl.converters.ResponseInit(init)
|
|
50
|
-
}
|
|
48
|
+
init = webidl.converters.ResponseInit(init)
|
|
51
49
|
|
|
52
50
|
// 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.
|
|
53
51
|
const bytes = textEncoder.encode(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "undici",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.8.0",
|
|
4
4
|
"description": "An HTTP/1.1 client, written from scratch for Node.js",
|
|
5
5
|
"homepage": "https://undici.nodejs.org",
|
|
6
6
|
"bugs": {
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"@types/node": "^22.0.0",
|
|
117
117
|
"abort-controller": "^3.0.0",
|
|
118
118
|
"borp": "^1.0.0",
|
|
119
|
-
"c8": "^
|
|
119
|
+
"c8": "^12.0.0",
|
|
120
120
|
"cross-env": "^10.0.0",
|
|
121
121
|
"dns-packet": "^5.4.0",
|
|
122
122
|
"esbuild": "^0.28.0",
|
|
@@ -33,7 +33,7 @@ export declare namespace Client {
|
|
|
33
33
|
export interface Options {
|
|
34
34
|
/** The maximum length of request headers in bytes. Default: Node.js' `--max-http-header-size` or `16384` (16KiB). */
|
|
35
35
|
maxHeaderSize?: number;
|
|
36
|
-
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). */
|
|
36
|
+
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). HTTP/1.1 parser timeouts are not guaranteed to fire with exact millisecond precision: delays up to 1000ms use native timers, while larger delays use lower-overhead fast timers with a target resolution around 500ms. */
|
|
37
37
|
headersTimeout?: number;
|
|
38
38
|
/** @deprecated unsupported socketTimeout, use headersTimeout & bodyTimeout instead */
|
|
39
39
|
socketTimeout?: never;
|
|
@@ -41,7 +41,7 @@ export declare namespace Client {
|
|
|
41
41
|
requestTimeout?: never;
|
|
42
42
|
/** The timeout for establishing a socket connection, in milliseconds. Use `0` to disable it entirely. Default: `10e3` milliseconds (10s). */
|
|
43
43
|
connectTimeout?: number;
|
|
44
|
-
/** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). */
|
|
44
|
+
/** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). HTTP/1.1 parser timeouts are not guaranteed to fire with exact millisecond precision: delays up to 1000ms use native timers, while larger delays use lower-overhead fast timers with a target resolution around 500ms. */
|
|
45
45
|
bodyTimeout?: number;
|
|
46
46
|
/** @deprecated unsupported idleTimeout, use keepAliveTimeout instead */
|
|
47
47
|
idleTimeout?: never;
|
|
@@ -111,13 +111,13 @@ declare namespace Dispatcher {
|
|
|
111
111
|
idempotent?: boolean;
|
|
112
112
|
/** Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received. Defaults to `method !== 'HEAD'`. */
|
|
113
113
|
blocking?: boolean;
|
|
114
|
-
/** The IP Type of Service (ToS) value for the request socket. Must be an integer between 0 and 255.
|
|
114
|
+
/** The IP Type of Service (ToS) value for the request socket. Must be an integer between 0 and 255. */
|
|
115
115
|
typeOfService?: number | null;
|
|
116
116
|
/** Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. Default: `method === 'CONNECT' || null`. */
|
|
117
117
|
upgrade?: boolean | string | null;
|
|
118
|
-
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers. Defaults to 300 seconds. */
|
|
118
|
+
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers. Defaults to 300 seconds. HTTP/1.1 parser timeouts are not guaranteed to fire with exact millisecond precision: delays up to 1000ms use native timers, while larger delays use lower-overhead fast timers with a target resolution around 500ms. */
|
|
119
119
|
headersTimeout?: number | null;
|
|
120
|
-
/** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use 0 to disable it entirely. Defaults to 300 seconds. */
|
|
120
|
+
/** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use 0 to disable it entirely. Defaults to 300 seconds. HTTP/1.1 parser timeouts are not guaranteed to fire with exact millisecond precision: delays up to 1000ms use native timers, while larger delays use lower-overhead fast timers with a target resolution around 500ms. */
|
|
121
121
|
bodyTimeout?: number | null;
|
|
122
122
|
/** Whether the request should stablish a keep-alive or not. Default `false` */
|
|
123
123
|
reset?: boolean;
|
|
@@ -75,9 +75,13 @@ declare namespace MockInterceptor {
|
|
|
75
75
|
opts: MockResponseCallbackOptions
|
|
76
76
|
) => TData | Buffer | string
|
|
77
77
|
|
|
78
|
+
export type MockReplyOptions<TData extends object = object> = {
|
|
79
|
+
statusCode: number, data?: TData | Buffer | string, responseOptions?: MockResponseOptions
|
|
80
|
+
}
|
|
81
|
+
|
|
78
82
|
export type MockReplyOptionsCallback<TData extends object = object> = (
|
|
79
83
|
opts: MockResponseCallbackOptions
|
|
80
|
-
) =>
|
|
84
|
+
) => MockReplyOptions<TData> | Promise<MockReplyOptions<TData>>
|
|
81
85
|
}
|
|
82
86
|
|
|
83
87
|
interface Interceptable extends Dispatcher {
|
package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-BvKkWMJQ.js}
RENAMED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { On as listProjects, Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-
|
|
1
|
+
import { On as listProjects, Tn as init_projects, zn as resolveProjectFromIssueSync } from "./config-yaml-DySPNmKN.js";
|
|
2
2
|
import { a as init_activity_logger, n as emitActivityEntrySync } from "./activity-logger-DDlOIAML.js";
|
|
3
|
-
import { M as listSessionNames, w as init_tmux } from "./tmux-
|
|
4
|
-
import { c as getReviewStatusSync, l as init_review_status } from "./review-status-
|
|
5
|
-
import {
|
|
6
|
-
import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-
|
|
7
|
-
import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-
|
|
8
|
-
import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-
|
|
9
|
-
import { d as readPlanSync, i as findPlanSync, o as init_io } from "./io-
|
|
10
|
-
import { i as loadCloisterConfig, r as init_config } from "./config-
|
|
11
|
-
import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-
|
|
12
|
-
import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-
|
|
3
|
+
import { M as listSessionNames, w as init_tmux } from "./tmux-R7N7y-Mh.js";
|
|
4
|
+
import { c as getReviewStatusSync, l as init_review_status } from "./review-status-kZj_KyCk.js";
|
|
5
|
+
import { b as init_agents, qn as getAgentState } from "./queries-CjNIf-Ub.js";
|
|
6
|
+
import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-DHv5pSDT.js";
|
|
7
|
+
import { o as getInternalTokenSync, s as init_internal_token, t as INTERNAL_TOKEN_HEADER } from "./internal-token-s0-oKybJ.js";
|
|
8
|
+
import { o as init_lifecycle, s as isXBriefFilename } from "./lifecycle-yPd___5E.js";
|
|
9
|
+
import { d as readPlanSync, i as findPlanSync, o as init_io } from "./io-C9kF1wtJ.js";
|
|
10
|
+
import { i as loadCloisterConfig, r as init_config } from "./config-CKxYiCmX.js";
|
|
11
|
+
import { f as init_github_app, p as isGitHubAppConfigured, v as listPullRequestsForHead } from "./github-app-C3QrAUd0.js";
|
|
12
|
+
import { n as init_issue_closed, r as isIssueClosed } from "./issue-closed-CDJk4pIp.js";
|
|
13
13
|
import { Effect } from "effect";
|
|
14
14
|
import { existsSync, readdirSync } from "fs";
|
|
15
15
|
import { join } from "path";
|
|
@@ -482,4 +482,4 @@ async function reconcileOrphanProposedSpecs(options = {}) {
|
|
|
482
482
|
//#endregion
|
|
483
483
|
export { spawnWorkAgentThroughAgentsEndpoint as a, reconcileOrphanProposedSpecs as i, handleOrphanProposedSpec as n, triggerRebuildAndStart as o, hasReviewPipelinePresence as r, findOrphanProposedSpecsForReconciler as t };
|
|
484
484
|
|
|
485
|
-
//# sourceMappingURL=orphan-proposed-reconciler-
|
|
485
|
+
//# sourceMappingURL=orphan-proposed-reconciler-BvKkWMJQ.js.map
|
package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CTSGcK8p.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-
|
|
1
|
+
import { n as handleOrphanProposedSpec } from "./orphan-proposed-reconciler-BvKkWMJQ.js";
|
|
2
2
|
export { handleOrphanProposedSpec };
|