@iowarp/clio-coder 0.4.2 → 0.4.3
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/CHANGELOG.md +35 -0
- package/CONTRIBUTING.md +86 -19
- package/README.md +35 -6
- package/dist/{acp-TMDQZDIG.js → acp-H2NGRPWO.js} +11 -11
- package/dist/{agents-5N5NG3XG.js → agents-TL5LLUQP.js} +54 -53
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-Z5CCBXKQ.js → auth-E5SW4HMS.js} +19 -16
- package/dist/{builtins-K6TNDT24.js → builtins-IA7V7FUC.js} +9 -4
- package/dist/{chunk-ZW4HH5JJ.js → chunk-2APPQIER.js} +6 -6
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-UBRFI4HS.js → chunk-2UG5F4C5.js} +127 -47
- package/dist/{chunk-UH632ZYL.js → chunk-2UH2KFUP.js} +2 -2
- package/dist/{chunk-3F7VUY77.js → chunk-2VIKGWFZ.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-2X4RYJTJ.js → chunk-4UVU7BJ5.js} +2 -2
- package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-5KW52TEP.js → chunk-54CBCGIR.js} +5 -5
- package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-LJID3DYZ.js → chunk-64I3JVYM.js} +2 -2
- package/dist/{chunk-4JDLP6ZS.js → chunk-6PTFB5VS.js} +7 -7
- package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
- package/dist/{chunk-HLAFFSEK.js → chunk-7DRAWPTZ.js} +2 -2
- package/dist/chunk-7E7I3WLS.js +3762 -0
- package/dist/{chunk-YJISEZKC.js → chunk-7ZYNNDKC.js} +6 -6
- package/dist/{chunk-I66ZTYNP.js → chunk-AF4YM7Z4.js} +236 -101
- package/dist/{chunk-2HFQNRV3.js → chunk-AX2THNSA.js} +12 -12
- package/dist/{chunk-PGF63K6I.js → chunk-B4OAX3SI.js} +65 -3
- package/dist/{chunk-W6NIE6OW.js → chunk-B4VEBZKF.js} +3 -3
- package/dist/{chunk-JBCS7CRR.js → chunk-BEPZRGGU.js} +10 -10
- package/dist/{chunk-XGDPUNND.js → chunk-CE5AX47J.js} +2 -2
- package/dist/{chunk-I64IFBLB.js → chunk-DWUOQKRU.js} +17 -10
- package/dist/{chunk-DZAW46HP.js → chunk-E3TPLWFX.js} +3 -3
- package/dist/{chunk-HIICAHCJ.js → chunk-EKCHAPYA.js} +2 -2
- package/dist/{chunk-XE3PCIXH.js → chunk-F5JHEYZM.js} +7 -7
- package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
- package/dist/{chunk-ZNT2M6TG.js → chunk-G76U63X4.js} +17 -17
- package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
- package/dist/{chunk-2NHR3NAY.js → chunk-GI7YYQ3F.js} +40 -34
- package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/{chunk-W4YEMFBX.js → chunk-HEQY7ZFI.js} +2 -2
- package/dist/{chunk-IKOZFYBN.js → chunk-I7ZPNEJM.js} +145 -102
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
- package/dist/chunk-IJNZMHLA.js +101 -0
- package/dist/{chunk-JWJGP5DQ.js → chunk-INY6HTFL.js} +7 -7
- package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
- package/dist/{chunk-B74PXLU7.js → chunk-IWT4SF4R.js} +3 -3
- package/dist/{chunk-B7HM5Z7T.js → chunk-JDAY6FIL.js} +5 -5
- package/dist/{chunk-PJX3WQUQ.js → chunk-JEQ3XTHC.js} +2 -2
- package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
- package/dist/{chunk-X7IARSHT.js → chunk-JKKCYP3C.js} +9 -9
- package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
- package/dist/{chunk-SSEYRH53.js → chunk-KK4JZPBQ.js} +19 -140
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-Q4XWMHX6.js → chunk-L47TF46W.js} +2 -2
- package/dist/{chunk-O3YUNJZ2.js → chunk-LDJG7DW3.js} +81 -24
- package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
- package/dist/{chunk-F2I26BDK.js → chunk-MUW2BDDH.js} +4 -4
- package/dist/{chunk-HKMD33FO.js → chunk-MWUZBSAQ.js} +79 -76
- package/dist/{chunk-QQLGQY2A.js → chunk-N2Z7HLVY.js} +20 -20
- package/dist/{chunk-DZEK6CJN.js → chunk-NIQJ66N4.js} +19 -19
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
- package/dist/{chunk-TPEQIQIE.js → chunk-OML5D5V5.js} +8 -8
- package/dist/{chunk-IKSLQ4XV.js → chunk-PAJQJ7BS.js} +558 -216
- package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
- package/dist/{chunk-UH347SHR.js → chunk-QWGDJJYJ.js} +11 -11
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-CRFOIAX3.js → chunk-RRNP2ANY.js} +6 -6
- package/dist/{chunk-IDNA72AH.js → chunk-RSJ25QSL.js} +2 -2
- package/dist/chunk-SKHCAU7K.js +385 -0
- package/dist/{chunk-RLYRBIYQ.js → chunk-TM6LQDI3.js} +20 -12
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-P75RZCJW.js → chunk-UPZU6GE4.js} +3 -3
- package/dist/{chunk-MCMZMDAC.js → chunk-V2ANDPVT.js} +4 -4
- package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
- package/dist/{chunk-IMXMHHMQ.js → chunk-VW6DOEDG.js} +332 -57
- package/dist/{chunk-XOXV5GKE.js → chunk-W6RRQCPQ.js} +16 -7
- package/dist/{chunk-CYZW7JHJ.js → chunk-WBKFA554.js} +8 -8
- package/dist/{chunk-BO7Y52RY.js → chunk-WCXUNS7U.js} +7 -7
- package/dist/{chunk-ZGNYYXQ6.js → chunk-WRBAGUNF.js} +3 -3
- package/dist/{chunk-FVDGR2ZL.js → chunk-XIVNBFZS.js} +85 -30
- package/dist/{chunk-BYMNWQ7O.js → chunk-XPWWI35G.js} +299 -58
- package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
- package/dist/{chunk-AZ4WMN4W.js → chunk-Y3CBHOR6.js} +2 -2
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-54ODD65L.js → chunk-YQWYVTMC.js} +4 -4
- package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
- package/dist/{chunk-7BHIY2MW.js → chunk-ZDN3Y73Y.js} +6 -6
- package/dist/{chunk-E7GT7O5N.js → chunk-ZWPRK62N.js} +7 -4
- package/dist/cli/index.js +38 -37
- package/dist/{clio-7VB377CC.js → clio-CMMK4KRR.js} +7 -7
- package/dist/{code-nav-YVLCYA7V.js → code-nav-MDZNQS33.js} +7 -7
- package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
- package/dist/{config-4HVOS65E.js → config-SVM5P5YI.js} +76 -74
- package/dist/{configure-PIWO7B24.js → configure-LE3IK2TJ.js} +26 -24
- package/dist/{context-IYEHL3WQ.js → context-2OHRKS42.js} +66 -63
- package/dist/{context-N6ZE3LGJ.js → context-E3VC7RX5.js} +15 -11
- package/dist/{context-KQYIWPWT.js → context-VNCR7KAG.js} +60 -45
- package/dist/{context-clear-G4OGZJDS.js → context-clear-BW4O37TG.js} +61 -59
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-BWLF6LJP.js → context-working-set-VDS25HXZ.js} +17 -16
- package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-5AHT53RF.js} +85 -74
- package/dist/{doctor-LHBD36VU.js → doctor-WNNVO6FY.js} +37 -37
- package/dist/{eval-C45FYRJ6.js → eval-7G7SGAYO.js} +285 -114
- package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-6SHONYAF.js → evidence-VD6736FQ.js} +63 -62
- package/dist/{evolve-KRKMV72X.js → evolve-AL3NGVRL.js} +62 -61
- package/dist/{extensions-KPZ2UHBB.js → extensions-MOVJ32NM.js} +7 -7
- package/dist/{fleet-IVTCKDHT.js → fleet-QZHUMAGI.js} +110 -108
- package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-BAYT5FJZ.js} +10 -10
- package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-IREVMRU4.js} +7 -6
- package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-YCTT3HTI.js} +19 -18
- package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-QVJTDAVB.js} +55 -54
- package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-25QAFPK4.js} +4 -4
- package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-5O57AAJ7.js} +23 -22
- package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-CPH2W2T6.js} +56 -55
- package/dist/{fleet-view-TWHJKCN6.js → fleet-view-SWBR3VGQ.js} +55 -54
- package/dist/{init-T2QORQ3Y.js → init-J477LKZH.js} +78 -76
- package/dist/{interop-IN5I2A66.js → interop-3FCM6XLG.js} +11 -11
- package/dist/{library-LSCATDLZ.js → library-QUQEIUG6.js} +28 -27
- package/dist/{memory-HYOKAGGJ.js → memory-SGGSEP65.js} +64 -63
- package/dist/{models-2GPMFYCM.js → models-HEKUAXXK.js} +49 -43
- package/dist/{monitor-E4ASVUJH.js → monitor-HKU57TYQ.js} +61 -60
- package/dist/{orchestrator-DDMPR3PY.js → orchestrator-VDFAEFAI.js} +919 -546
- package/dist/{panes-E3RUXOW5.js → panes-DN2SSFOH.js} +3 -3
- package/dist/{panes-IXKLOKA2.js → panes-TALGNPZT.js} +8 -8
- package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
- package/dist/reset-EAJFFJVB.js +344 -0
- package/dist/{resources-OTRSN34L.js → resources-OVKSEFVE.js} +27 -20
- package/dist/{run-5DEYH5QK.js → run-7DP7ZF2J.js} +113 -109
- package/dist/{share-IHWTLO3M.js → share-WML67FT3.js} +26 -25
- package/dist/{skills-IYMXMKW4.js → skills-SG662R2K.js} +39 -31
- package/dist/{skills-eval-DROHSJAR.js → skills-eval-VVZEUU46.js} +74 -73
- package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-I2E23GET.js} +21 -20
- package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-S7MBJDQK.js} +35 -34
- package/dist/{steer-Z5DO23FJ.js → steer-2LQOMCPB.js} +3 -3
- package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
- package/dist/{targets-P2FUC4IL.js → targets-4QC3HIEW.js} +48 -45
- package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-TUHIJ6Y2.js} +2 -2
- package/dist/{tools-5B7RO6MV.js → tools-TFGJICCU.js} +8 -8
- package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
- package/dist/uninstall-5PEVOE5B.js +408 -0
- package/dist/upgrade-M4WXY6KN.js +303 -0
- package/dist/{usage-ME5MPXGX.js → usage-N7ZNVLEM.js} +147 -102
- package/dist/{verifiers-BVZ7IWOO.js → verifiers-DJTP4XX6.js} +15 -15
- package/dist/{verify-5K7ZKQFC.js → verify-RWE4PPEK.js} +9 -9
- package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-C7IQOXSP.js} +84 -82
- package/dist/{with-panes-BYOJCLAM.js → with-panes-4GCGSL7J.js} +9 -9
- package/dist/worker/entry.js +61 -60
- package/docs/architecture/artifact-placement.md +1 -0
- package/docs/architecture/artifact-versions.md +1 -1
- package/docs/architecture/context-engine.md +4 -0
- package/docs/architecture/middleware-and-components.md +1 -1
- package/docs/architecture/model-catalog.md +21 -10
- package/docs/architecture/observability.md +12 -1
- package/docs/architecture/prompt-envelope-and-tools.md +2 -0
- package/docs/architecture/provider-adapter-cookbook.md +63 -0
- package/docs/architecture/safety-model.md +15 -5
- package/docs/guide/built-in-agents.md +17 -3
- package/docs/guide/commands-and-modes.md +1 -1
- package/docs/guide/configuration-and-targets.md +97 -9
- package/docs/guide/configuration-reference.md +7 -2
- package/docs/guide/environment-variables.md +2 -0
- package/docs/guide/installation-and-lifecycle.md +37 -4
- package/docs/guide/proactive-memory.md +66 -55
- package/docs/guide/skills-marketplace.md +18 -0
- package/docs/process/development-pipeline.md +34 -1
- package/docs/process/eval-runner.md +67 -3
- package/evals/behavioral-model.yaml +3 -2
- package/package.json +2 -2
- package/skills/README.md +7 -5
- package/skills/coding/ast-grep/SKILL.md +101 -30
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +40 -5
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +87 -28
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +80 -53
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +43 -2
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +45 -15
- package/skills/context/context-prime/evals.md +45 -0
- package/skills/git/branch-closeout/SKILL.md +132 -0
- package/skills/git/branch-closeout/evals.md +133 -0
- package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
- package/skills/git/file-ticket/SKILL.md +77 -63
- package/skills/git/file-ticket/assets/issue-template.md +22 -0
- package/skills/git/file-ticket/evals.md +31 -26
- package/skills/git/file-ticket/references/issue-discovery.md +49 -0
- package/skills/git/fix-issue/SKILL.md +87 -64
- package/skills/git/fix-issue/evals.md +35 -31
- package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
- package/skills/git/resolve-merge-conflicts/evals.md +52 -25
- package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
- package/skills/git/ship/SKILL.md +103 -67
- package/skills/git/ship/assets/pr-template.md +21 -0
- package/skills/git/ship/evals.md +44 -28
- package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
- package/skills/git/worktree-create/SKILL.md +80 -50
- package/skills/git/worktree-create/evals.md +40 -33
- package/skills/git/worktree-create/references/worktree-setup.md +62 -66
- package/skills/git/worktree-merge/SKILL.md +112 -65
- package/skills/git/worktree-merge/evals.md +42 -34
- package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +61 -12
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +130 -14
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +46 -6
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +57 -2
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +53 -2
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +58 -50
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +76 -18
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +20 -1
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +23 -1
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +26 -1
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +63 -28
- package/skills/workflow/cut-it/SKILL.md +65 -5
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +117 -27
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +86 -10
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +76 -17
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/configure-interop.ts +105 -13
- package/src/cli/configure-oauth.ts +57 -0
- package/src/cli/configure-onboarding.ts +980 -0
- package/src/cli/configure-target.ts +594 -0
- package/src/cli/configure.ts +1082 -528
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- package/src/cli/index.ts +1 -0
- package/src/cli/lifecycle-presenter.ts +436 -0
- package/src/cli/models.ts +10 -2
- package/src/cli/modes/print.ts +5 -1
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +7 -2
- package/src/cli/select.ts +664 -0
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +3 -0
- package/src/cli/uninstall.ts +233 -165
- package/src/cli/upgrade.ts +204 -149
- package/src/cli/usage.ts +86 -27
- package/src/cli/validate-model.ts +3 -3
- package/src/core/config.ts +56 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +89 -2
- package/src/domains/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +1 -1
- package/src/domains/agents/result-contract.ts +70 -0
- package/src/domains/context/wiki/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/dispatch/admission.ts +29 -0
- package/src/domains/dispatch/agent-candidates.ts +10 -0
- package/src/domains/dispatch/budget-envelope.ts +86 -1
- package/src/domains/dispatch/capability-match.ts +1 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/contract.ts +11 -1
- package/src/domains/dispatch/extension.ts +134 -29
- package/src/domains/dispatch/types.ts +3 -0
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
- package/src/domains/eval/metrics/token-stream.ts +201 -31
- package/src/domains/eval/metrics/tracked.ts +40 -4
- package/src/domains/eval/runners/clio-run.ts +5 -2
- package/src/domains/eval/schema/suite.ts +28 -0
- package/src/domains/eval/schema/verdict.ts +2 -2
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- package/src/domains/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/index.ts +4 -0
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/index.ts +0 -1
- package/src/domains/middleware/marketplace-offer.ts +3 -35
- package/src/domains/middleware/memory-intervention.ts +127 -32
- package/src/domains/middleware/memory-step-endpoint.ts +3 -2
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/extension.ts +6 -1
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- package/src/domains/providers/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/model-capabilities.ts +9 -0
- package/src/domains/providers/model-discovery.ts +2 -0
- package/src/domains/providers/model-runtime-capabilities.ts +15 -5
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +32 -12
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
- package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
- package/src/domains/providers/support.ts +11 -5
- package/src/domains/providers/target-model-cache.ts +25 -2
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/runtime-descriptor.ts +20 -1
- package/src/domains/providers/types/target-descriptor.ts +19 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/install.ts +72 -7
- package/src/domains/resources/skills/loader.ts +7 -0
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/autonomy.ts +15 -0
- package/src/domains/safety/index.ts +1 -0
- package/src/domains/safety/path-policy.ts +1 -1
- package/src/domains/safety/policy-engine.ts +34 -11
- package/src/domains/safety/protected-artifacts.ts +191 -88
- package/src/domains/safety/run-effects.ts +2 -22
- package/src/domains/safety/skill-authority.ts +55 -0
- package/src/domains/session/compaction/compact.ts +72 -22
- package/src/domains/session/entries.ts +6 -0
- package/src/domains/session/usage.ts +3 -3
- package/src/engine/agent.ts +13 -3
- package/src/engine/ai.ts +26 -8
- package/src/engine/antigravity/subprocess-runtime.ts +386 -120
- package/src/engine/api-registry.ts +3 -0
- package/src/engine/apis/openai-completions.ts +117 -14
- package/src/engine/external-subprocess.ts +114 -6
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/orchestrator.ts +405 -216
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/chat-loop-messages.ts +13 -4
- package/src/interactive/chat-loop.ts +65 -2
- package/src/interactive/chat-renderer.ts +1 -0
- package/src/interactive/cost-overlay.ts +26 -2
- package/src/interactive/interactive-slash-runtime.ts +2 -1
- package/src/interactive/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-commands.ts +24 -6
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +9 -5
- package/src/interactive/turn-recovery.ts +8 -0
- package/src/interactive/turn-runtime.ts +27 -11
- package/src/interactive/turn-state.ts +7 -0
- package/src/interactive/worker-receipts.ts +1 -0
- package/src/interactive/worker-stream.ts +6 -1
- package/src/tools/context/index.ts +30 -9
- package/src/tools/dispatch-arguments.ts +1 -0
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +1 -0
- package/src/tools/dispatch-runner.ts +12 -0
- package/src/tools/registry.ts +11 -5
- package/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/chunk-2Z2IKEXI.js +0 -1554
- package/dist/reset-OAQP3W4O.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-PXK3S2YM.js +0 -325
|
@@ -3,29 +3,26 @@ import {
|
|
|
3
3
|
createSentinelStripper,
|
|
4
4
|
stripTokenizerSentinels
|
|
5
5
|
} from "./chunk-CFGTUFWB.js";
|
|
6
|
-
import {
|
|
7
|
-
credentialsPresent
|
|
8
|
-
} from "./chunk-72GZI5EV.js";
|
|
9
6
|
import {
|
|
10
7
|
ceilChars,
|
|
11
8
|
estimateAgentMessageTokens,
|
|
12
9
|
toolSchemaChars
|
|
13
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-NZMNUPZZ.js";
|
|
14
11
|
import {
|
|
15
|
-
|
|
16
|
-
} from "./chunk-
|
|
12
|
+
credentialsPresent
|
|
13
|
+
} from "./chunk-2JH2WHGE.js";
|
|
17
14
|
import {
|
|
18
15
|
readSettings
|
|
19
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-GHS5EBTQ.js";
|
|
20
17
|
import {
|
|
21
18
|
warnLegacyNaming
|
|
22
19
|
} from "./chunk-D7E7WCDF.js";
|
|
20
|
+
import {
|
|
21
|
+
getSharedBus
|
|
22
|
+
} from "./chunk-PMZVFWSR.js";
|
|
23
23
|
import {
|
|
24
24
|
BusChannels
|
|
25
25
|
} from "./chunk-F4EKGO4N.js";
|
|
26
|
-
import {
|
|
27
|
-
sleep
|
|
28
|
-
} from "./chunk-EBY63B7G.js";
|
|
29
26
|
import {
|
|
30
27
|
CLIO_CONTEXT_WINDOW_WARN_BELOW,
|
|
31
28
|
CLIO_MIN_CONTEXT_WINDOW,
|
|
@@ -42,31 +39,26 @@ import {
|
|
|
42
39
|
registerBuiltinRuntimes,
|
|
43
40
|
requestLmStudioJson,
|
|
44
41
|
resolveLmStudioInstance
|
|
45
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-VW6DOEDG.js";
|
|
43
|
+
import {
|
|
44
|
+
sleep
|
|
45
|
+
} from "./chunk-EBY63B7G.js";
|
|
46
46
|
import {
|
|
47
47
|
listKnownModelsForRuntime
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-LLDJM5XK.js";
|
|
49
49
|
import {
|
|
50
50
|
authNotRequiredStatus,
|
|
51
51
|
openAuthStorage,
|
|
52
52
|
registerClioOAuthProviders,
|
|
53
53
|
resolveAuthTarget,
|
|
54
54
|
targetRequiresAuth
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-ID64D7PE.js";
|
|
56
56
|
import {
|
|
57
57
|
withStateFileLock
|
|
58
58
|
} from "./chunk-IKCO5N3L.js";
|
|
59
59
|
import {
|
|
60
60
|
require_dist
|
|
61
61
|
} from "./chunk-APJ265NV.js";
|
|
62
|
-
import {
|
|
63
|
-
clioCacheDir,
|
|
64
|
-
clioConfigDir,
|
|
65
|
-
clioStateDir,
|
|
66
|
-
clioStatePath,
|
|
67
|
-
resolveClioDirs,
|
|
68
|
-
stateRootRemoved
|
|
69
|
-
} from "./chunk-BYP5D4HI.js";
|
|
70
62
|
import {
|
|
71
63
|
safeResourceWrite
|
|
72
64
|
} from "./chunk-WEPFGWHJ.js";
|
|
@@ -78,13 +70,21 @@ import {
|
|
|
78
70
|
getCatalogModelForRuntime,
|
|
79
71
|
mergeCapabilities,
|
|
80
72
|
resolveCostProvenance
|
|
81
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-5OIVVPHF.js";
|
|
82
74
|
import {
|
|
83
75
|
activateExternalPluginApiBridge,
|
|
84
76
|
calculateEngineCost,
|
|
85
77
|
ensurePiAiRegistered,
|
|
86
78
|
registerEngineApiProvider
|
|
87
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-YPC6ZR5L.js";
|
|
80
|
+
import {
|
|
81
|
+
clioCacheDir,
|
|
82
|
+
clioConfigDir,
|
|
83
|
+
clioStateDir,
|
|
84
|
+
clioStatePath,
|
|
85
|
+
resolveClioDirs,
|
|
86
|
+
stateRootRemoved
|
|
87
|
+
} from "./chunk-BYP5D4HI.js";
|
|
88
88
|
import {
|
|
89
89
|
__toESM,
|
|
90
90
|
init_esm_shims
|
|
@@ -797,6 +797,12 @@ function applyModelCapabilityPatch(model, caps) {
|
|
|
797
797
|
if (typeof caps.contextWindow === "number") model.contextWindow = caps.contextWindow;
|
|
798
798
|
if (typeof caps.maxTokens === "number") model.maxTokens = caps.maxTokens;
|
|
799
799
|
if (typeof caps.reasoning === "boolean") model.reasoning = caps.reasoning;
|
|
800
|
+
if (model.clioCoder || caps.thinkingControlRuntime !== void 0) {
|
|
801
|
+
const metadata2 = { ...model.clioCoder };
|
|
802
|
+
delete metadata2.thinkingControlRuntime;
|
|
803
|
+
if (caps.thinkingControlRuntime !== void 0) metadata2.thinkingControlRuntime = caps.thinkingControlRuntime;
|
|
804
|
+
model.clioCoder = metadata2;
|
|
805
|
+
}
|
|
800
806
|
return model;
|
|
801
807
|
}
|
|
802
808
|
function applyReasoningResolution(caps, kbHit, detectedReasoning) {
|
|
@@ -1068,7 +1074,8 @@ function effectiveThinkingLevel(configured, available) {
|
|
|
1068
1074
|
const fallback = available[0] ?? "off";
|
|
1069
1075
|
if (!configured) return fallback;
|
|
1070
1076
|
if (available.includes(configured)) return configured;
|
|
1071
|
-
if (configured === "max" && available.includes("
|
|
1077
|
+
if ((configured === "max" || configured === "high" && !available.includes("high")) && available.includes("xhigh"))
|
|
1078
|
+
return "xhigh";
|
|
1072
1079
|
if ((configured === "high" || configured === "xhigh" || configured === "max") && available.includes("high")) {
|
|
1073
1080
|
return "high";
|
|
1074
1081
|
}
|
|
@@ -1263,7 +1270,12 @@ function resolveModelRuntimeCapabilities(input) {
|
|
|
1263
1270
|
family,
|
|
1264
1271
|
capabilities: input.capabilities,
|
|
1265
1272
|
thinking,
|
|
1266
|
-
request: resolveRequestCapability(
|
|
1273
|
+
request: resolveRequestCapability(
|
|
1274
|
+
thinking,
|
|
1275
|
+
parser,
|
|
1276
|
+
input.runtimeId === "litellm" ? input.capabilities.thinkingControlRuntime ?? input.runtimeId : input.runtimeId,
|
|
1277
|
+
quirks
|
|
1278
|
+
),
|
|
1267
1279
|
response: {
|
|
1268
1280
|
parser,
|
|
1269
1281
|
stripTokenizerSentinels: true
|
|
@@ -1329,6 +1341,7 @@ function thinkingFormatFromModelApi(api) {
|
|
|
1329
1341
|
}
|
|
1330
1342
|
function capabilitiesFromModel(model) {
|
|
1331
1343
|
const format = model.compat?.thinkingFormat ?? thinkingFormatFromModelApi(model.api);
|
|
1344
|
+
const controlRuntime = (model.clioCoder ?? model.clio)?.thinkingControlRuntime;
|
|
1332
1345
|
const caps = {
|
|
1333
1346
|
chat: true,
|
|
1334
1347
|
tools: true,
|
|
@@ -1339,7 +1352,8 @@ function capabilitiesFromModel(model) {
|
|
|
1339
1352
|
rerank: false,
|
|
1340
1353
|
fim: false,
|
|
1341
1354
|
contextWindow: model.contextWindow,
|
|
1342
|
-
maxTokens: model.maxTokens
|
|
1355
|
+
maxTokens: model.maxTokens,
|
|
1356
|
+
...controlRuntime ? { thinkingControlRuntime: controlRuntime } : {}
|
|
1343
1357
|
};
|
|
1344
1358
|
if (format === "qwen-chat-template" || format === "openrouter" || format === "zai" || format === "anthropic-extended" || format === "deepseek-r1" || format === "openai-codex" || format === "harmony") {
|
|
1345
1359
|
caps.thinkingFormat = format;
|
|
@@ -1411,6 +1425,21 @@ function normalizedModels(models) {
|
|
|
1411
1425
|
}
|
|
1412
1426
|
return out;
|
|
1413
1427
|
}
|
|
1428
|
+
function normalizedLabels(models, labels) {
|
|
1429
|
+
if (typeof labels !== "object" || labels === null || Array.isArray(labels)) return void 0;
|
|
1430
|
+
const source = labels;
|
|
1431
|
+
const out = {};
|
|
1432
|
+
for (const id of models) {
|
|
1433
|
+
const label = source[id];
|
|
1434
|
+
if (typeof label !== "string") continue;
|
|
1435
|
+
const trimmed = label.trim();
|
|
1436
|
+
if (trimmed.length === 0 || trimmed.length > TARGET_MODEL_CACHE_MAX_MODEL_ID_CHARS || /[\r\n\0]/u.test(trimmed)) {
|
|
1437
|
+
continue;
|
|
1438
|
+
}
|
|
1439
|
+
out[id] = trimmed;
|
|
1440
|
+
}
|
|
1441
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
1442
|
+
}
|
|
1414
1443
|
function parseSnapshot(value) {
|
|
1415
1444
|
if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
|
|
1416
1445
|
const row = value;
|
|
@@ -1422,7 +1451,7 @@ function parseSnapshot(value) {
|
|
|
1422
1451
|
if (typeof row.observedAt !== "string" || !Number.isFinite(Date.parse(row.observedAt))) return null;
|
|
1423
1452
|
const models = normalizedModels(row.models);
|
|
1424
1453
|
if (models.length !== row.models.length) return null;
|
|
1425
|
-
|
|
1454
|
+
const snapshot = {
|
|
1426
1455
|
version: TARGET_MODEL_CACHE_VERSION,
|
|
1427
1456
|
targetId: row.targetId,
|
|
1428
1457
|
runtimeId: row.runtimeId,
|
|
@@ -1430,6 +1459,9 @@ function parseSnapshot(value) {
|
|
|
1430
1459
|
models,
|
|
1431
1460
|
observedAt: row.observedAt
|
|
1432
1461
|
};
|
|
1462
|
+
const modelLabels = normalizedLabels(models, row.modelLabels);
|
|
1463
|
+
if (modelLabels !== void 0) snapshot.modelLabels = modelLabels;
|
|
1464
|
+
return snapshot;
|
|
1433
1465
|
}
|
|
1434
1466
|
function readTargetModelSnapshot(target, options = {}) {
|
|
1435
1467
|
const path = targetModelSnapshotPath(target.id, options.cacheDir);
|
|
@@ -1458,6 +1490,8 @@ function recordTargetModelSnapshot(target, models, options = {}) {
|
|
|
1458
1490
|
models: normalizedModels(models),
|
|
1459
1491
|
observedAt: new Date(options.nowMs ?? Date.now()).toISOString()
|
|
1460
1492
|
};
|
|
1493
|
+
const modelLabels = normalizedLabels(snapshot.models, options.modelLabels);
|
|
1494
|
+
if (modelLabels !== void 0) snapshot.modelLabels = modelLabels;
|
|
1461
1495
|
try {
|
|
1462
1496
|
safeResourceWrite(targetModelSnapshotPath(target.id, options.cacheDir), `${JSON.stringify(snapshot, null, 2)}
|
|
1463
1497
|
`, {
|
|
@@ -1531,6 +1565,7 @@ function modelCandidatesForStatus(status) {
|
|
|
1531
1565
|
const state = status.discoveredModelStates?.[trimmed];
|
|
1532
1566
|
out.push({
|
|
1533
1567
|
id: trimmed,
|
|
1568
|
+
...status.discoveredModelLabels?.[trimmed] ? { label: status.discoveredModelLabels[trimmed] } : {},
|
|
1534
1569
|
source,
|
|
1535
1570
|
...state ? { loadState: state.state } : {},
|
|
1536
1571
|
...state?.detail ? { loadStateDetail: state.detail } : {}
|
|
@@ -2796,6 +2831,115 @@ import {
|
|
|
2796
2831
|
} from "@earendil-works/pi-ai";
|
|
2797
2832
|
import { openAICompletionsApi } from "@earendil-works/pi-ai/api/openai-completions.lazy";
|
|
2798
2833
|
|
|
2834
|
+
// src/core/gateway-routing.ts
|
|
2835
|
+
init_esm_shims();
|
|
2836
|
+
function liteLLMRouteFailureMessage(errorMessage, targetId, modelId) {
|
|
2837
|
+
const providerMessage = errorMessage?.trim() || "LiteLLM request failed.";
|
|
2838
|
+
const advice = `LiteLLM route '${modelId}' on target '${targetId}' failed. Clio did not retry or substitute another model; select a different route with /model, then resend.`;
|
|
2839
|
+
return providerMessage.includes(advice) ? providerMessage : `${providerMessage}
|
|
2840
|
+
|
|
2841
|
+
${advice}`;
|
|
2842
|
+
}
|
|
2843
|
+
function nonEmptyString(value) {
|
|
2844
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
2845
|
+
}
|
|
2846
|
+
function nonnegativeNumber(value) {
|
|
2847
|
+
if (typeof value === "number" && Number.isFinite(value) && value >= 0) return value;
|
|
2848
|
+
if (typeof value !== "string" || value.trim().length === 0) return void 0;
|
|
2849
|
+
const parsed = Number(value);
|
|
2850
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : void 0;
|
|
2851
|
+
}
|
|
2852
|
+
function nonnegativeInteger(value) {
|
|
2853
|
+
const parsed = nonnegativeNumber(value);
|
|
2854
|
+
return parsed === void 0 ? void 0 : Math.floor(parsed);
|
|
2855
|
+
}
|
|
2856
|
+
function apiBaseHost(value) {
|
|
2857
|
+
const raw = nonEmptyString(value);
|
|
2858
|
+
if (raw === void 0) return void 0;
|
|
2859
|
+
try {
|
|
2860
|
+
return new URL(raw).host || void 0;
|
|
2861
|
+
} catch {
|
|
2862
|
+
return void 0;
|
|
2863
|
+
}
|
|
2864
|
+
}
|
|
2865
|
+
function storedApiBaseHost(value) {
|
|
2866
|
+
const raw = nonEmptyString(value);
|
|
2867
|
+
if (raw === void 0) return void 0;
|
|
2868
|
+
try {
|
|
2869
|
+
return new URL(raw.includes("://") ? raw : `http://${raw}`).host || void 0;
|
|
2870
|
+
} catch {
|
|
2871
|
+
return void 0;
|
|
2872
|
+
}
|
|
2873
|
+
}
|
|
2874
|
+
function liteLLMGatewayRoutingFromHeaders(headers) {
|
|
2875
|
+
const callId = nonEmptyString(headers.get("x-litellm-call-id"));
|
|
2876
|
+
const modelGroup = nonEmptyString(headers.get("x-litellm-model-group"));
|
|
2877
|
+
const modelName = nonEmptyString(headers.get("x-litellm-model-name"));
|
|
2878
|
+
const host = apiBaseHost(headers.get("x-litellm-model-api-base"));
|
|
2879
|
+
const deploymentId = nonEmptyString(headers.get("x-litellm-model-id"));
|
|
2880
|
+
const attemptedFallbacks = nonnegativeInteger(headers.get("x-litellm-attempted-fallbacks"));
|
|
2881
|
+
const attemptedRetries = nonnegativeInteger(headers.get("x-litellm-attempted-retries"));
|
|
2882
|
+
const overheadMs = nonnegativeNumber(headers.get("x-litellm-overhead-duration-ms"));
|
|
2883
|
+
const responseDurationMs = nonnegativeNumber(headers.get("x-litellm-response-duration-ms"));
|
|
2884
|
+
const version = nonEmptyString(headers.get("x-litellm-version"));
|
|
2885
|
+
const observation = {
|
|
2886
|
+
gateway: "litellm",
|
|
2887
|
+
...callId !== void 0 ? { callId } : {},
|
|
2888
|
+
...modelGroup !== void 0 ? { modelGroup } : {},
|
|
2889
|
+
...modelName !== void 0 ? { modelName } : {},
|
|
2890
|
+
...host !== void 0 ? { apiBaseHost: host } : {},
|
|
2891
|
+
...deploymentId !== void 0 ? { deploymentId } : {},
|
|
2892
|
+
...attemptedFallbacks !== void 0 ? { attemptedFallbacks } : {},
|
|
2893
|
+
...attemptedRetries !== void 0 ? { attemptedRetries } : {},
|
|
2894
|
+
...overheadMs !== void 0 ? { overheadMs } : {},
|
|
2895
|
+
...responseDurationMs !== void 0 ? { responseDurationMs } : {},
|
|
2896
|
+
...version !== void 0 ? { version } : {}
|
|
2897
|
+
};
|
|
2898
|
+
return Object.keys(observation).length > 1 ? observation : null;
|
|
2899
|
+
}
|
|
2900
|
+
function gatewayRoutingObservationFromRecord(record) {
|
|
2901
|
+
const value = record.gatewayRouting;
|
|
2902
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) return null;
|
|
2903
|
+
const raw = value;
|
|
2904
|
+
if (raw.gateway !== "litellm") return null;
|
|
2905
|
+
const callId = nonEmptyString(raw.callId);
|
|
2906
|
+
const modelGroup = nonEmptyString(raw.modelGroup);
|
|
2907
|
+
const modelName = nonEmptyString(raw.modelName);
|
|
2908
|
+
const host = storedApiBaseHost(raw.apiBaseHost);
|
|
2909
|
+
const deploymentId = nonEmptyString(raw.deploymentId);
|
|
2910
|
+
const attemptedFallbacks = nonnegativeInteger(raw.attemptedFallbacks);
|
|
2911
|
+
const attemptedRetries = nonnegativeInteger(raw.attemptedRetries);
|
|
2912
|
+
const overheadMs = nonnegativeNumber(raw.overheadMs);
|
|
2913
|
+
const responseDurationMs = nonnegativeNumber(raw.responseDurationMs);
|
|
2914
|
+
const version = nonEmptyString(raw.version);
|
|
2915
|
+
const observation = {
|
|
2916
|
+
gateway: "litellm",
|
|
2917
|
+
...callId !== void 0 ? { callId } : {},
|
|
2918
|
+
...modelGroup !== void 0 ? { modelGroup } : {},
|
|
2919
|
+
...modelName !== void 0 ? { modelName } : {},
|
|
2920
|
+
...host !== void 0 ? { apiBaseHost: host } : {},
|
|
2921
|
+
...deploymentId !== void 0 ? { deploymentId } : {},
|
|
2922
|
+
...attemptedFallbacks !== void 0 ? { attemptedFallbacks } : {},
|
|
2923
|
+
...attemptedRetries !== void 0 ? { attemptedRetries } : {},
|
|
2924
|
+
...overheadMs !== void 0 ? { overheadMs } : {},
|
|
2925
|
+
...responseDurationMs !== void 0 ? { responseDurationMs } : {},
|
|
2926
|
+
...version !== void 0 ? { version } : {}
|
|
2927
|
+
};
|
|
2928
|
+
return Object.keys(observation).length > 1 ? observation : null;
|
|
2929
|
+
}
|
|
2930
|
+
function gatewayRoutingObservationLabel(observation) {
|
|
2931
|
+
const route = [observation.modelGroup, observation.modelName].filter(Boolean).join("->");
|
|
2932
|
+
const destination = [route, observation.apiBaseHost ? `@${observation.apiBaseHost}` : ""].filter(Boolean).join("");
|
|
2933
|
+
const parts = [
|
|
2934
|
+
"gateway=litellm",
|
|
2935
|
+
...destination ? [`route=${destination}`] : [],
|
|
2936
|
+
...observation.attemptedFallbacks !== void 0 ? [`fallbacks=${observation.attemptedFallbacks}`] : [],
|
|
2937
|
+
...observation.attemptedRetries !== void 0 ? [`retries=${observation.attemptedRetries}`] : [],
|
|
2938
|
+
...observation.overheadMs !== void 0 ? [`overhead_ms=${observation.overheadMs}`] : []
|
|
2939
|
+
];
|
|
2940
|
+
return parts.join(" ");
|
|
2941
|
+
}
|
|
2942
|
+
|
|
2799
2943
|
// src/engine/harmony-response.ts
|
|
2800
2944
|
init_esm_shims();
|
|
2801
2945
|
var START = "<|start|>";
|
|
@@ -3443,7 +3587,10 @@ function observeResponseModelIdBytes(chunk, capture, flush = false) {
|
|
|
3443
3587
|
}
|
|
3444
3588
|
if (captureCanStopEarly(capture) || flush) capture.decoder = null;
|
|
3445
3589
|
}
|
|
3446
|
-
function captureResponseModelId(response, capture) {
|
|
3590
|
+
function captureResponseModelId(response, capture, model) {
|
|
3591
|
+
if (runtimeMetadata(model)?.runtimeId === "litellm") {
|
|
3592
|
+
capture.gatewayRouting = liteLLMGatewayRoutingFromHeaders(response.headers);
|
|
3593
|
+
}
|
|
3447
3594
|
if (!response.body || !response.headers.get("content-type")?.toLowerCase().includes("text/event-stream")) {
|
|
3448
3595
|
return response;
|
|
3449
3596
|
}
|
|
@@ -3473,13 +3620,14 @@ function withResponseModelIdCapture(model, options, sourceFactory) {
|
|
|
3473
3620
|
modelIdDone: false,
|
|
3474
3621
|
backendTimings: null,
|
|
3475
3622
|
backendTimingsSource: backendTimingsSourceForModel(model),
|
|
3623
|
+
gatewayRouting: null,
|
|
3476
3624
|
buffer: "",
|
|
3477
3625
|
decoder: new TextDecoder()
|
|
3478
3626
|
};
|
|
3479
3627
|
const fetchImpl = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
|
|
3480
3628
|
const capturedOptions = {
|
|
3481
3629
|
...options,
|
|
3482
|
-
fetch: async (input, init) => captureResponseModelId(await fetchImpl(input, init), capture)
|
|
3630
|
+
fetch: async (input, init) => captureResponseModelId(await fetchImpl(input, init), capture, model)
|
|
3483
3631
|
};
|
|
3484
3632
|
const source = sourceFactory(capturedOptions);
|
|
3485
3633
|
const annotated = createAssistantMessageEventStream3();
|
|
@@ -3489,9 +3637,11 @@ function withResponseModelIdCapture(model, options, sourceFactory) {
|
|
|
3489
3637
|
const observation = capture.observed ? capture.reportedModelId === null ? { state: "not-reported" } : { state: "reported", reportedModelId: capture.reportedModelId } : { state: "not-observed" };
|
|
3490
3638
|
if (event.type === "done") {
|
|
3491
3639
|
event.message.responseModelIdObservation = observation;
|
|
3640
|
+
if (capture.gatewayRouting !== null) event.message.gatewayRouting = capture.gatewayRouting;
|
|
3492
3641
|
if (capture.backendTimings !== null) event.message.backendTimings = capture.backendTimings;
|
|
3493
3642
|
} else if (event.type === "error") {
|
|
3494
3643
|
event.error.responseModelIdObservation = observation;
|
|
3644
|
+
if (capture.gatewayRouting !== null) event.error.gatewayRouting = capture.gatewayRouting;
|
|
3495
3645
|
if (capture.backendTimings !== null) event.error.backendTimings = capture.backendTimings;
|
|
3496
3646
|
}
|
|
3497
3647
|
annotated.push(event);
|
|
@@ -3504,6 +3654,26 @@ function withResponseModelIdCapture(model, options, sourceFactory) {
|
|
|
3504
3654
|
})();
|
|
3505
3655
|
return annotated;
|
|
3506
3656
|
}
|
|
3657
|
+
function withLiteLLMRouteFailureAdvice(model, source) {
|
|
3658
|
+
const metadata2 = runtimeMetadata(model);
|
|
3659
|
+
if (metadata2?.runtimeId !== "litellm") return source;
|
|
3660
|
+
const advised = createAssistantMessageEventStream3();
|
|
3661
|
+
(async () => {
|
|
3662
|
+
try {
|
|
3663
|
+
for await (const event of source) {
|
|
3664
|
+
if (event.type === "error") {
|
|
3665
|
+
event.error.errorMessage = liteLLMRouteFailureMessage(event.error.errorMessage, metadata2.targetId, model.id);
|
|
3666
|
+
}
|
|
3667
|
+
advised.push(event);
|
|
3668
|
+
}
|
|
3669
|
+
advised.end();
|
|
3670
|
+
} catch (err) {
|
|
3671
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
3672
|
+
throw new Error(liteLLMRouteFailureMessage(message, metadata2.targetId, model.id));
|
|
3673
|
+
}
|
|
3674
|
+
})();
|
|
3675
|
+
return advised;
|
|
3676
|
+
}
|
|
3507
3677
|
function samplingParamsFromProfile(profile) {
|
|
3508
3678
|
return {
|
|
3509
3679
|
...profile.topP !== void 0 ? { top_p: profile.topP } : {},
|
|
@@ -3591,6 +3761,10 @@ function applyThinkingPayload(payload, applied, resolved, model) {
|
|
|
3591
3761
|
if (resolved.request.reasoningEffort && (next.reasoning_effort === void 0 || resolved.response.parser === "harmony")) {
|
|
3592
3762
|
next.reasoning_effort = resolved.request.reasoningEffort;
|
|
3593
3763
|
}
|
|
3764
|
+
if (resolved.runtimeId === "litellm" && resolved.request.reasoningEffort && next.reasoning_effort === resolved.request.reasoningEffort) {
|
|
3765
|
+
const allowed = Array.isArray(next.allowed_openai_params) ? next.allowed_openai_params : [];
|
|
3766
|
+
next.allowed_openai_params = [.../* @__PURE__ */ new Set([...allowed, "reasoning_effort"])];
|
|
3767
|
+
}
|
|
3594
3768
|
if (resolved.request.chatTemplateKwargs && !chatTemplateKwargsUnsupported(model)) {
|
|
3595
3769
|
const existing = isPlainRecord(next.chat_template_kwargs) ? next.chat_template_kwargs : {};
|
|
3596
3770
|
next.chat_template_kwargs = { ...existing, ...resolved.request.chatTemplateKwargs };
|
|
@@ -3612,13 +3786,13 @@ function applyLmStudioPayload(payload, model, resolved) {
|
|
|
3612
3786
|
if (request?.ttlSeconds !== void 0) next.ttl = request.ttlSeconds;
|
|
3613
3787
|
if (request?.draftModel !== void 0) next.draft_model = request.draftModel;
|
|
3614
3788
|
if (resolved.thinking.mechanism === "none" || resolved.thinking.mechanism === "always-on") return next;
|
|
3615
|
-
const resolvedEffort =
|
|
3789
|
+
const resolvedEffort = runtimeMetadata(model)?.lmstudioReasoningOptions ? lmStudioReasoningEffort(resolved.thinking.effectiveLevel, runtimeMetadata(model)?.lmstudioReasoningOptions) : resolved.request.reasoningEffort ?? lmStudioReasoningEffort(resolved.thinking.effectiveLevel);
|
|
3616
3790
|
switch (request?.reasoning) {
|
|
3617
3791
|
case "off":
|
|
3618
|
-
next.reasoning_effort = "
|
|
3792
|
+
next.reasoning_effort = lmStudioReasoningEffort("off", runtimeMetadata(model)?.lmstudioReasoningOptions);
|
|
3619
3793
|
break;
|
|
3620
3794
|
case "on":
|
|
3621
|
-
next.reasoning_effort = "low";
|
|
3795
|
+
next.reasoning_effort = lmStudioReasoningEffort("low", runtimeMetadata(model)?.lmstudioReasoningOptions);
|
|
3622
3796
|
break;
|
|
3623
3797
|
case "low":
|
|
3624
3798
|
case "medium":
|
|
@@ -3722,6 +3896,36 @@ function withRemainingContextBudget(model, context, options) {
|
|
|
3722
3896
|
maxTokens: remainingContextMaxTokens(model, context, options)
|
|
3723
3897
|
};
|
|
3724
3898
|
}
|
|
3899
|
+
function hasHeader(headers, name) {
|
|
3900
|
+
if (!headers) return false;
|
|
3901
|
+
const wanted = name.toLowerCase();
|
|
3902
|
+
return Object.keys(headers).some((key) => key.toLowerCase() === wanted);
|
|
3903
|
+
}
|
|
3904
|
+
function withLiteLLMRequestOptions(model, options) {
|
|
3905
|
+
const metadata2 = runtimeMetadata(model);
|
|
3906
|
+
if (metadata2?.runtimeId !== "litellm") return options;
|
|
3907
|
+
const request = metadata2.litellm?.request;
|
|
3908
|
+
const modelHeaders = model.headers;
|
|
3909
|
+
const optionHeaders = options.headers;
|
|
3910
|
+
const headers = { ...options.headers ?? {} };
|
|
3911
|
+
const setDefault = (name, value) => {
|
|
3912
|
+
if (value === void 0 || hasHeader(modelHeaders, name) || hasHeader(optionHeaders, name)) return;
|
|
3913
|
+
headers[name] = value;
|
|
3914
|
+
};
|
|
3915
|
+
setDefault("x-litellm-tags", ["clio-coder", ...request?.tags ?? []].join(","));
|
|
3916
|
+
if (request?.sendSessionId !== false) setDefault("x-litellm-session-id", options.sessionId);
|
|
3917
|
+
setDefault("x-litellm-timeout", request?.timeoutSeconds?.toString());
|
|
3918
|
+
setDefault("x-litellm-stream-timeout", request?.streamTimeoutSeconds?.toString());
|
|
3919
|
+
setDefault("x-litellm-num-retries", request?.numRetries?.toString());
|
|
3920
|
+
return {
|
|
3921
|
+
...options,
|
|
3922
|
+
headers,
|
|
3923
|
+
// Never hide duplicate attempts inside the OpenAI SDK beneath Clio's
|
|
3924
|
+
// operator-visible failure. The gateway may still be configured to retry,
|
|
3925
|
+
// but physical-routing deployments should keep that policy at zero too.
|
|
3926
|
+
maxRetries: options.maxRetries ?? 0
|
|
3927
|
+
};
|
|
3928
|
+
}
|
|
3725
3929
|
function requiredToolArguments(tool) {
|
|
3726
3930
|
const schema = tool.parameters;
|
|
3727
3931
|
if (schema === null || typeof schema !== "object" || Array.isArray(schema)) return [];
|
|
@@ -3990,21 +4194,28 @@ var openAICompletionsApiProvider = {
|
|
|
3990
4194
|
const resolved = resolvedCapabilitiesForModel(model, defaultLevel);
|
|
3991
4195
|
const effectiveContext = stripsThinking(resolved) ? stripThinkingFromContext(context) : context;
|
|
3992
4196
|
const withSamplers = withSamplingOverrides(model, options, resolved);
|
|
4197
|
+
const withGatewayOptions = withLiteLLMRequestOptions(
|
|
4198
|
+
model,
|
|
4199
|
+
withRemainingContextBudget(model, effectiveContext, withSamplers)
|
|
4200
|
+
);
|
|
3993
4201
|
return guardMalformedToolCalls(
|
|
3994
4202
|
withReasoningTokenEstimate(
|
|
3995
4203
|
stripSentinelsFromStream(
|
|
3996
4204
|
stripNeverReasoningFromStream(
|
|
3997
4205
|
filterGemmaChannelStream(
|
|
3998
|
-
|
|
4206
|
+
withLiteLLMRouteFailureAdvice(
|
|
3999
4207
|
model,
|
|
4000
|
-
|
|
4001
|
-
(capturedOptions) => withLocalResidency(
|
|
4208
|
+
withResponseModelIdCapture(
|
|
4002
4209
|
model,
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4210
|
+
withGatewayOptions,
|
|
4211
|
+
(capturedOptions) => withLocalResidency(
|
|
4212
|
+
model,
|
|
4213
|
+
{
|
|
4214
|
+
...options?.apiKey !== void 0 ? { apiKey: options.apiKey } : {},
|
|
4215
|
+
...options?.signal !== void 0 ? { signal: options.signal } : {}
|
|
4216
|
+
},
|
|
4217
|
+
(requestModel) => piOpenAICompletions.stream(requestModel, effectiveContext, capturedOptions)
|
|
4218
|
+
)
|
|
4008
4219
|
)
|
|
4009
4220
|
),
|
|
4010
4221
|
usesGemmaChannelMarkers(resolved.modelId)
|
|
@@ -4022,21 +4233,28 @@ var openAICompletionsApiProvider = {
|
|
|
4022
4233
|
const resolved = resolvedCapabilitiesForModel(model, thinkingLevelFromSimple2(options));
|
|
4023
4234
|
const effectiveContext = stripsThinking(resolved) ? stripThinkingFromContext(context) : context;
|
|
4024
4235
|
const withSamplers = withSamplingOverrides(model, options, resolved);
|
|
4236
|
+
const withGatewayOptions = withLiteLLMRequestOptions(
|
|
4237
|
+
model,
|
|
4238
|
+
withRemainingContextBudget(model, effectiveContext, withSamplers)
|
|
4239
|
+
);
|
|
4025
4240
|
return guardMalformedToolCalls(
|
|
4026
4241
|
withReasoningTokenEstimate(
|
|
4027
4242
|
stripSentinelsFromStream(
|
|
4028
4243
|
stripNeverReasoningFromStream(
|
|
4029
4244
|
filterGemmaChannelStream(
|
|
4030
|
-
|
|
4245
|
+
withLiteLLMRouteFailureAdvice(
|
|
4031
4246
|
model,
|
|
4032
|
-
|
|
4033
|
-
(capturedOptions) => withLocalResidency(
|
|
4247
|
+
withResponseModelIdCapture(
|
|
4034
4248
|
model,
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4249
|
+
withGatewayOptions,
|
|
4250
|
+
(capturedOptions) => withLocalResidency(
|
|
4251
|
+
model,
|
|
4252
|
+
{
|
|
4253
|
+
...options?.apiKey !== void 0 ? { apiKey: options.apiKey } : {},
|
|
4254
|
+
...options?.signal !== void 0 ? { signal: options.signal } : {}
|
|
4255
|
+
},
|
|
4256
|
+
(requestModel) => piOpenAICompletions.streamSimple(requestModel, effectiveContext, capturedOptions)
|
|
4257
|
+
)
|
|
4040
4258
|
)
|
|
4041
4259
|
),
|
|
4042
4260
|
usesGemmaChannelMarkers(resolved.modelId)
|
|
@@ -4376,7 +4594,7 @@ function discoveredModelsSource(probe, preservePreviousProbe, previous, cachedMo
|
|
|
4376
4594
|
function sameProbeIdentity(previous, next) {
|
|
4377
4595
|
return previous.id === next.id && previous.runtime === next.runtime && (previous.url ?? "") === (next.url ?? "") && (previous.defaultModel ?? "") === (next.defaultModel ?? "");
|
|
4378
4596
|
}
|
|
4379
|
-
function mergeProbeResult(desc, target, probe, previous, cachedModels = []) {
|
|
4597
|
+
function mergeProbeResult(desc, target, probe, previous, cachedModels = [], cachedModelLabels = {}) {
|
|
4380
4598
|
const probeSucceeded = probe?.ok ?? false;
|
|
4381
4599
|
const preservePrevious = !probeSucceeded && previous !== void 0 && sameProbeIdentity(previous.target, target);
|
|
4382
4600
|
const probeCapabilities = probe?.discoveredCapabilities ?? (preservePrevious ? previous.probeCapabilities : null) ?? null;
|
|
@@ -4388,8 +4606,10 @@ function mergeProbeResult(desc, target, probe, previous, cachedModels = []) {
|
|
|
4388
4606
|
probe?.models ?? (preservePrevious ? previous.discoveredModels : void 0) ?? (cachedModels.length > 0 ? cachedModels : void 0) ?? desc.knownModels ?? []
|
|
4389
4607
|
);
|
|
4390
4608
|
const discoveredModelStates = probe?.modelStates ?? (preservePrevious ? previous.discoveredModelStates : null) ?? null;
|
|
4609
|
+
const discoveredModelLabels = probe?.modelLabels ?? (preservePrevious ? previous.discoveredModelLabels : void 0) ?? (cachedModels.length > 0 ? cachedModelLabels : void 0) ?? {};
|
|
4391
4610
|
const merge = {
|
|
4392
4611
|
discoveredModels,
|
|
4612
|
+
discoveredModelLabels,
|
|
4393
4613
|
discoveredModelsSource: discoveredModelsSource(probe, preservePrevious, previous, cachedModels, desc),
|
|
4394
4614
|
discoveredModelStates,
|
|
4395
4615
|
probeCapabilities,
|
|
@@ -4404,7 +4624,9 @@ function unservedDefaultModelReason(desc, target, merge) {
|
|
|
4404
4624
|
const model = target.defaultModel;
|
|
4405
4625
|
if (!model) return null;
|
|
4406
4626
|
if (merge.discoveredModelsSource !== "probe" || merge.discoveredModels.length === 0) return null;
|
|
4407
|
-
if (listKnownModelsForRuntime(desc.id).length > 0)
|
|
4627
|
+
if (listKnownModelsForRuntime(desc.id).length > 0 && desc.externalAgentLoop?.modelCatalog !== "live-authoritative") {
|
|
4628
|
+
return null;
|
|
4629
|
+
}
|
|
4408
4630
|
if (merge.discoveredModels.includes(model)) return null;
|
|
4409
4631
|
if (merge.discoveredModelStates && model in merge.discoveredModelStates) return null;
|
|
4410
4632
|
return `default model '${model}' is not advertised by the target`;
|
|
@@ -4424,14 +4646,18 @@ function createProvidersBundle(context) {
|
|
|
4424
4646
|
if (config) return config.get();
|
|
4425
4647
|
return readSettings();
|
|
4426
4648
|
}
|
|
4427
|
-
async function buildProbeContextForTarget(target, desc) {
|
|
4649
|
+
async function buildProbeContextForTarget(target, desc, signal) {
|
|
4428
4650
|
const probeCtx = {
|
|
4429
4651
|
credentialsPresent: credentialsPresent(),
|
|
4430
|
-
httpTimeoutMs: DEFAULT_PROBE_TIMEOUT_MS
|
|
4652
|
+
httpTimeoutMs: DEFAULT_PROBE_TIMEOUT_MS,
|
|
4653
|
+
...signal ? { signal } : {}
|
|
4431
4654
|
};
|
|
4432
4655
|
if (!targetRequiresAuth(target, desc)) return probeCtx;
|
|
4433
4656
|
try {
|
|
4434
|
-
const resolution = await authStore.resolveForTarget(resolveAuthTarget(target, desc), {
|
|
4657
|
+
const resolution = await authStore.resolveForTarget(resolveAuthTarget(target, desc), {
|
|
4658
|
+
includeFallback: false,
|
|
4659
|
+
...signal ? { signal } : {}
|
|
4660
|
+
});
|
|
4435
4661
|
if (resolution.apiKey) probeCtx.authToken = resolution.apiKey;
|
|
4436
4662
|
} catch {
|
|
4437
4663
|
}
|
|
@@ -4483,8 +4709,9 @@ function createProvidersBundle(context) {
|
|
|
4483
4709
|
return out2;
|
|
4484
4710
|
}
|
|
4485
4711
|
const availability = availabilityFor(desc, target, authStatusFor);
|
|
4486
|
-
const
|
|
4487
|
-
const
|
|
4712
|
+
const cachedSnapshot = readTargetModelSnapshot(target);
|
|
4713
|
+
const cachedModels = cachedSnapshot?.models ?? [];
|
|
4714
|
+
const merge = mergeProbeResult(desc, target, probe, previous, cachedModels, cachedSnapshot?.modelLabels ?? {});
|
|
4488
4715
|
const { capabilities, contextWindowProvenance } = capabilitiesFor(desc, target, merge, kb);
|
|
4489
4716
|
const healthy = probe !== null ? probe.ok : null;
|
|
4490
4717
|
const unservedDefault = probe?.ok ? unservedDefaultModelReason(desc, target, merge) : null;
|
|
@@ -4508,6 +4735,7 @@ function createProvidersBundle(context) {
|
|
|
4508
4735
|
probeModelCapabilities: merge.probeModelCapabilities,
|
|
4509
4736
|
probeModelId: merge.probeModelId,
|
|
4510
4737
|
discoveredModels: merge.discoveredModels,
|
|
4738
|
+
discoveredModelLabels: merge.discoveredModelLabels,
|
|
4511
4739
|
discoveredModelsSource: merge.discoveredModelsSource,
|
|
4512
4740
|
discoveredModelStates: merge.discoveredModelStates
|
|
4513
4741
|
};
|
|
@@ -4516,6 +4744,7 @@ function createProvidersBundle(context) {
|
|
|
4516
4744
|
return out;
|
|
4517
4745
|
}
|
|
4518
4746
|
async function probeTargetInternal(target, live, options) {
|
|
4747
|
+
options?.signal?.throwIfAborted();
|
|
4519
4748
|
const previous = statuses.get(target.id);
|
|
4520
4749
|
const desc = registry.get(target.runtime);
|
|
4521
4750
|
if (!desc) {
|
|
@@ -4529,13 +4758,15 @@ function createProvidersBundle(context) {
|
|
|
4529
4758
|
statuses.set(target.id, status2);
|
|
4530
4759
|
return status2;
|
|
4531
4760
|
}
|
|
4532
|
-
const probeCtx = await buildProbeContextForTarget(target, desc);
|
|
4761
|
+
const probeCtx = await buildProbeContextForTarget(target, desc, options?.signal);
|
|
4762
|
+
options?.signal?.throwIfAborted();
|
|
4533
4763
|
let probeResult;
|
|
4534
4764
|
try {
|
|
4535
4765
|
probeResult = await desc.probe(target, probeCtx);
|
|
4536
4766
|
} catch (err) {
|
|
4537
4767
|
probeResult = { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
4538
4768
|
}
|
|
4769
|
+
options?.signal?.throwIfAborted();
|
|
4539
4770
|
if (probeResult.ok && typeof desc.probeModels === "function" && !probeResult.models) {
|
|
4540
4771
|
try {
|
|
4541
4772
|
const ids = await desc.probeModels(target, probeCtx);
|
|
@@ -4543,6 +4774,7 @@ function createProvidersBundle(context) {
|
|
|
4543
4774
|
} catch {
|
|
4544
4775
|
}
|
|
4545
4776
|
}
|
|
4777
|
+
options?.signal?.throwIfAborted();
|
|
4546
4778
|
if (probeResult.ok && options?.reasoning !== false && typeof desc.probeReasoning === "function") {
|
|
4547
4779
|
const settings = readConfig();
|
|
4548
4780
|
const orchestratorTarget = settings.chat.target === target.id ? settings.chat.model : null;
|
|
@@ -4550,6 +4782,7 @@ function createProvidersBundle(context) {
|
|
|
4550
4782
|
if (candidateModelId) {
|
|
4551
4783
|
try {
|
|
4552
4784
|
const result = await desc.probeReasoning(target, candidateModelId, probeCtx);
|
|
4785
|
+
options?.signal?.throwIfAborted();
|
|
4553
4786
|
reasoningCache.set(reasoningCacheKey(target.id, candidateModelId), result.reasoning);
|
|
4554
4787
|
const capabilityModelId = probeResult.capabilityModelId ?? null;
|
|
4555
4788
|
if (capabilityModelId === null || capabilityModelId === candidateModelId) {
|
|
@@ -4570,10 +4803,15 @@ function createProvidersBundle(context) {
|
|
|
4570
4803
|
}
|
|
4571
4804
|
}
|
|
4572
4805
|
}
|
|
4806
|
+
options?.signal?.throwIfAborted();
|
|
4573
4807
|
const status = buildStatus(target, desc, probeResult, previous);
|
|
4574
4808
|
statuses.set(target.id, status);
|
|
4575
4809
|
if (probeResult.ok && probeResult.models !== void 0) {
|
|
4576
|
-
recordTargetModelSnapshot(
|
|
4810
|
+
recordTargetModelSnapshot(
|
|
4811
|
+
target,
|
|
4812
|
+
probeResult.models,
|
|
4813
|
+
probeResult.modelLabels ? { modelLabels: probeResult.modelLabels } : {}
|
|
4814
|
+
);
|
|
4577
4815
|
}
|
|
4578
4816
|
void recordEndpointSlotsFromStatus(status);
|
|
4579
4817
|
context.bus.emit(BusChannels.ProviderHealth, { id: target.id, status });
|
|
@@ -4759,6 +4997,8 @@ export {
|
|
|
4759
4997
|
setResidencyNoticeSink,
|
|
4760
4998
|
setProtectedModelsProvider,
|
|
4761
4999
|
withRunOverrides,
|
|
5000
|
+
gatewayRoutingObservationFromRecord,
|
|
5001
|
+
gatewayRoutingObservationLabel,
|
|
4762
5002
|
applyModelCapabilityPatch,
|
|
4763
5003
|
probeCapabilitiesForModel,
|
|
4764
5004
|
resolveModelCapabilities,
|
|
@@ -4776,6 +5016,7 @@ export {
|
|
|
4776
5016
|
isOrchestratorEligibleRuntime,
|
|
4777
5017
|
isDispatchEligibleRuntime,
|
|
4778
5018
|
modelResidencyForStatus,
|
|
5019
|
+
hasLiveModelCatalog,
|
|
4779
5020
|
modelCandidatesForStatus,
|
|
4780
5021
|
modelIdsForStatus,
|
|
4781
5022
|
canonicalizeWireModelId,
|
|
@@ -4790,4 +5031,4 @@ export {
|
|
|
4790
5031
|
resolveCostProvenance2 as resolveCostProvenance,
|
|
4791
5032
|
ProvidersDomainModule
|
|
4792
5033
|
};
|
|
4793
|
-
//# sourceMappingURL=chunk-
|
|
5034
|
+
//# sourceMappingURL=chunk-XPWWI35G.js.map
|