@iowarp/clio-coder 0.4.1 → 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 +127 -0
- package/CONTRIBUTING.md +142 -52
- package/README.md +434 -473
- package/SECURITY.md +2 -1
- package/dist/{acp-ZILU3AUO.js → acp-H2NGRPWO.js} +12 -12
- package/dist/{agents-HYWGBGQR.js → agents-TL5LLUQP.js} +56 -55
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-N3QT7CBO.js → auth-E5SW4HMS.js} +23 -21
- package/dist/builtins-IA7V7FUC.js +22 -0
- package/dist/{chunk-7RY5VZPH.js → chunk-2APPQIER.js} +8 -8
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-JA5QWE4Z.js → chunk-2UG5F4C5.js} +1973 -1664
- package/dist/{chunk-5YHDIDBP.js → chunk-2UH2KFUP.js} +2 -2
- package/dist/{chunk-CTJ4RNAA.js → chunk-2VIKGWFZ.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
- package/dist/chunk-3EBYEESD.js +314 -0
- package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
- package/dist/chunk-4UVU7BJ5.js +39 -0
- package/dist/{chunk-VKRH2TCS.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-BBTJOK6Y.js → chunk-54CBCGIR.js} +5 -5
- package/dist/{chunk-AP73CFDC.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/chunk-5MEZN6CB.js +1334 -0
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-ABLSQ6JX.js → chunk-64I3JVYM.js} +8 -2
- package/dist/{chunk-AFKWHWXF.js → chunk-6PTFB5VS.js} +39 -22
- package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
- package/dist/chunk-7DRAWPTZ.js +360 -0
- package/dist/chunk-7E7I3WLS.js +3762 -0
- package/dist/{chunk-BJGUKIG4.js → chunk-7ZYNNDKC.js} +7 -7
- package/dist/{chunk-XKA2ICR3.js → chunk-AF4YM7Z4.js} +652 -252
- package/dist/{chunk-GVQJ5CCZ.js → chunk-AX2THNSA.js} +12 -12
- package/dist/{chunk-IG7BCQBA.js → chunk-B4OAX3SI.js} +65 -3
- package/dist/{chunk-TD3PGPQA.js → chunk-B4VEBZKF.js} +3 -3
- package/dist/{chunk-74YWRRU5.js → chunk-BEPZRGGU.js} +10 -10
- package/dist/{chunk-FEFIFZTL.js → chunk-CE5AX47J.js} +2 -2
- package/dist/{chunk-UAPGZHYC.js → chunk-DWUOQKRU.js} +25 -11
- package/dist/{chunk-THYWACCR.js → chunk-E3TPLWFX.js} +3 -3
- package/dist/{chunk-7EPLI7VL.js → chunk-EKCHAPYA.js} +2 -2
- package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
- package/dist/{chunk-PJJ6MY27.js → chunk-F5JHEYZM.js} +7 -7
- package/dist/{chunk-6CCS4G3W.js → chunk-FTMGRKEF.js} +3 -3
- package/dist/{chunk-SINK3QR6.js → chunk-G76U63X4.js} +17 -17
- package/dist/{chunk-EIMVLWB3.js → chunk-GHS5EBTQ.js} +64 -9
- package/dist/{chunk-QMXC4JB7.js → chunk-GI7YYQ3F.js} +187 -1419
- package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
- package/dist/{chunk-6HMJX2VU.js → chunk-GWZNEVM2.js} +44 -12
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/{chunk-UXN6JT4W.js → chunk-HEQY7ZFI.js} +3 -3
- package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
- package/dist/{chunk-GCSMB2KY.js → chunk-I7ZPNEJM.js} +145 -102
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-QTFGO774.js → chunk-IGLP3ODT.js} +29 -16
- package/dist/chunk-IJNZMHLA.js +101 -0
- package/dist/{chunk-BDPT6GTK.js → chunk-INY6HTFL.js} +7 -7
- package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
- package/dist/{chunk-6NJQITNH.js → chunk-IWT4SF4R.js} +6 -3
- package/dist/{chunk-R23Z6K6I.js → chunk-JDAY6FIL.js} +19 -19
- package/dist/chunk-JEQ3XTHC.js +42 -0
- package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
- package/dist/{chunk-TVH4ONAM.js → chunk-JKKCYP3C.js} +10 -10
- package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
- package/dist/{chunk-C537JADH.js → chunk-KK4JZPBQ.js} +19 -141
- package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-6DWBAZ5U.js → chunk-L47TF46W.js} +5 -7
- package/dist/{chunk-HUAS7ITX.js → chunk-LDJG7DW3.js} +91 -42
- package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
- package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
- package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
- package/dist/{chunk-VKFQTNDV.js → chunk-MUW2BDDH.js} +4 -4
- package/dist/{chunk-E67WX76H.js → chunk-MWUZBSAQ.js} +104 -152
- package/dist/{chunk-OJTRZGR3.js → chunk-N2Z7HLVY.js} +21 -21
- package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
- package/dist/{chunk-FYUN5KZ3.js → chunk-NIQJ66N4.js} +21 -21
- package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-VEGN6WIQ.js → chunk-O5CVSAG5.js} +3 -3
- package/dist/{chunk-MOPSG2X7.js → chunk-OML5D5V5.js} +8 -8
- package/dist/{chunk-2VG7KLYV.js → chunk-PAJQJ7BS.js} +5816 -3255
- package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
- package/dist/{chunk-BTGG6BG2.js → chunk-QWGDJJYJ.js} +158 -19
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-ZJLUDYFY.js → chunk-RRNP2ANY.js} +6 -6
- package/dist/{chunk-PVAMAVBB.js → chunk-RSJ25QSL.js} +102 -2
- package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
- package/dist/chunk-SKHCAU7K.js +385 -0
- package/dist/chunk-SZAA6XDG.js +30 -0
- package/dist/{chunk-J4HBWF6Y.js → chunk-TM6LQDI3.js} +131 -28
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-MA3H6DM5.js → chunk-UPZU6GE4.js} +25 -3
- package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
- package/dist/{chunk-N5UK64DP.js → chunk-V2ANDPVT.js} +4 -4
- package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
- package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
- package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
- package/dist/{chunk-QKIFBZKT.js → chunk-VW6DOEDG.js} +497 -81
- package/dist/{chunk-SCYB3HA4.js → chunk-W6RRQCPQ.js} +63 -19
- package/dist/{chunk-2NM363SV.js → chunk-WBKFA554.js} +10 -10
- package/dist/{chunk-R32CLGZ6.js → chunk-WCXUNS7U.js} +82 -21
- package/dist/{chunk-GPPB3JBE.js → chunk-WRBAGUNF.js} +3 -3
- package/dist/{chunk-IXJT6DCX.js → chunk-XIVNBFZS.js} +85 -30
- package/dist/{chunk-UEDMSP56.js → chunk-XPWWI35G.js} +417 -201
- package/dist/chunk-XRZT5WY5.js +47 -0
- package/dist/{chunk-3QSOM6PA.js → chunk-Y3CBHOR6.js} +2 -2
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-AKB4GYDL.js → chunk-YQWYVTMC.js} +5 -5
- package/dist/{chunk-6I5ILFOF.js → chunk-ZA4VCIGV.js} +3 -3
- package/dist/{chunk-7OBGU7UB.js → chunk-ZDN3Y73Y.js} +12 -18
- package/dist/{chunk-3I5NY75V.js → chunk-ZWPRK62N.js} +8 -5
- package/dist/cli/index.js +41 -39
- package/dist/{clio-IT3G3VQH.js → clio-CMMK4KRR.js} +9 -9
- package/dist/{code-nav-RK6S7F6E.js → code-nav-MDZNQS33.js} +89 -21
- package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
- package/dist/{config-3QZRWZJF.js → config-SVM5P5YI.js} +131 -84
- package/dist/{configure-FL7Y3KJF.js → configure-LE3IK2TJ.js} +28 -26
- package/dist/{context-5HE7ODYK.js → context-2OHRKS42.js} +69 -64
- package/dist/{context-KYQFRVDC.js → context-E3VC7RX5.js} +15 -11
- package/dist/{context-XNHL75JV.js → context-VNCR7KAG.js} +93 -65
- package/dist/{context-clear-N545L53A.js → context-clear-BW4O37TG.js} +64 -60
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-QHKXSV2F.js → context-working-set-VDS25HXZ.js} +19 -18
- package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-5AHT53RF.js} +93 -82
- package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
- package/dist/{doctor-ZGPEGHIP.js → doctor-WNNVO6FY.js} +48 -47
- package/dist/{eval-GXLL44RD.js → eval-7G7SGAYO.js} +287 -115
- package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-HWLBRH3Q.js → evidence-VD6736FQ.js} +67 -64
- package/dist/{evolve-FTZBMNVW.js → evolve-AL3NGVRL.js} +65 -62
- package/dist/{extensions-VHRBEID7.js → extensions-MOVJ32NM.js} +9 -7
- package/dist/{fleet-CKZHJWZJ.js → fleet-QZHUMAGI.js} +114 -111
- package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-BAYT5FJZ.js} +10 -10
- package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-IREVMRU4.js} +7 -6
- package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-YCTT3HTI.js} +22 -19
- package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-QVJTDAVB.js} +58 -55
- package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-25QAFPK4.js} +4 -4
- package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-5O57AAJ7.js} +26 -23
- package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-CPH2W2T6.js} +59 -56
- package/dist/{fleet-view-WAMJYNDT.js → fleet-view-SWBR3VGQ.js} +58 -55
- package/dist/{init-5XQRBOFV.js → init-J477LKZH.js} +82 -79
- package/dist/{interop-34TVO25M.js → interop-3FCM6XLG.js} +11 -11
- package/dist/{library-3QY6KF57.js → library-QUQEIUG6.js} +30 -27
- package/dist/{memory-L4UTIIIW.js → memory-SGGSEP65.js} +67 -64
- package/dist/{models-ZVX3QOWE.js → models-HEKUAXXK.js} +53 -46
- package/dist/{monitor-CEKVSYTS.js → monitor-HKU57TYQ.js} +63 -60
- package/dist/{orchestrator-77BAP6BC.js → orchestrator-VDFAEFAI.js} +1831 -1057
- package/dist/{panes-7STHOAUJ.js → panes-DN2SSFOH.js} +5 -5
- package/dist/{panes-SHAUIRXY.js → panes-TALGNPZT.js} +29 -14
- package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
- package/dist/reset-EAJFFJVB.js +344 -0
- package/dist/{resources-74GKTLSF.js → resources-OVKSEFVE.js} +29 -20
- package/dist/{run-HBAUJNNZ.js → run-7DP7ZF2J.js} +120 -115
- package/dist/{share-G3APVLVP.js → share-WML67FT3.js} +32 -27
- package/dist/{skills-35HHUKCR.js → skills-SG662R2K.js} +41 -31
- package/dist/{skills-eval-QN4HSHDC.js → skills-eval-VVZEUU46.js} +78 -77
- package/dist/{skills-inventory-J357J34F.js → skills-inventory-I2E23GET.js} +23 -20
- package/dist/{slash-commands-JZZCQA32.js → slash-commands-S7MBJDQK.js} +40 -36
- package/dist/{steer-XAVHJM22.js → steer-2LQOMCPB.js} +3 -3
- package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
- package/dist/{targets-DSM6CY3M.js → targets-4QC3HIEW.js} +54 -54
- package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-TUHIJ6Y2.js} +5 -5
- package/dist/{tools-MKNWVPBH.js → tools-TFGJICCU.js} +10 -10
- package/dist/{trace-ECQ7TIYZ.js → trace-FXMXUZUF.js} +55 -7
- package/dist/uninstall-5PEVOE5B.js +408 -0
- package/dist/upgrade-M4WXY6KN.js +303 -0
- package/dist/{usage-X52N3IDJ.js → usage-N7ZNVLEM.js} +151 -104
- package/dist/{verifiers-EJTVVSMA.js → verifiers-DJTP4XX6.js} +15 -15
- package/dist/{verify-YJL6XET2.js → verify-RWE4PPEK.js} +9 -9
- package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
- package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-C7IQOXSP.js} +89 -86
- package/dist/{with-panes-OBOBFIIR.js → with-panes-4GCGSL7J.js} +53 -257
- package/dist/worker/entry.js +90 -74
- package/docs/README.md +176 -81
- package/docs/{acp.md → architecture/acp.md} +36 -20
- package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
- package/docs/{architecture.md → architecture/architecture.md} +43 -22
- package/docs/{artifact-placement.md → architecture/artifact-placement.md} +27 -23
- package/docs/architecture/artifact-versions.md +90 -0
- package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
- package/docs/{context-engine.md → architecture/context-engine.md} +29 -25
- package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
- package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
- package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
- package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
- package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
- package/docs/{model-catalog.md → architecture/model-catalog.md} +61 -27
- package/docs/{observability.md → architecture/observability.md} +38 -14
- package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
- package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +57 -20
- package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +99 -25
- package/docs/{safety-model.md → architecture/safety-model.md} +35 -20
- package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
- package/docs/architecture/time-conventions.md +125 -0
- package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
- package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
- package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
- package/docs/{built-in-agents.md → guide/built-in-agents.md} +65 -35
- package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +66 -61
- package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -297
- package/docs/guide/configuration-reference.md +1163 -0
- package/docs/{environment-variables.md → guide/environment-variables.md} +33 -28
- package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
- package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
- package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
- package/docs/{glossary.md → guide/glossary.md} +14 -11
- package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +81 -17
- package/docs/guide/panes-and-files.md +290 -0
- package/docs/{proactive-memory.md → guide/proactive-memory.md} +131 -107
- package/docs/{resource-library.md → guide/resource-library.md} +13 -4
- package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +25 -3
- package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
- package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
- package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
- package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
- package/docs/process/development-pipeline.md +152 -0
- package/docs/process/documentation-coverage.md +100 -0
- package/docs/process/documentation-guide.md +187 -0
- package/docs/{eval-runner.md → process/eval-runner.md} +108 -53
- package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
- package/docs/{evolution.md → process/evolution.md} +2 -2
- package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
- package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
- package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
- package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
- package/evals/README.md +2 -2
- package/evals/behavioral-model.yaml +3 -2
- package/package.json +10 -8
- package/skills/README.md +52 -41
- package/skills/coding/ast-grep/SKILL.md +102 -31
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +41 -6
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +88 -29
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +81 -54
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +44 -3
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +46 -16
- 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 +78 -64
- 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 +88 -65
- 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 +101 -52
- 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/meta/clio-coder-dev/SKILL.md +9 -5
- package/skills/meta/clio-coder-dev/evals.md +3 -2
- package/skills/meta/clio-coder-test/SKILL.md +102 -95
- package/skills/meta/clio-coder-test/evals.md +9 -4
- package/skills/meta/clio-coder-test/references/harness.md +100 -124
- package/skills/meta/clio-coder-test/references/test-map.md +77 -50
- package/skills/meta/credentials/SKILL.md +2 -2
- package/skills/meta/find-skills/SKILL.md +2 -2
- package/skills/meta/herdr/SKILL.md +2 -2
- package/skills/meta/skill-craft/SKILL.md +22 -16
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +62 -13
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +131 -15
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +47 -7
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +58 -3
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +54 -3
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +70 -62
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +77 -19
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +21 -2
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +24 -2
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +27 -2
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +97 -62
- package/skills/workflow/cut-it/SKILL.md +66 -6
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +118 -28
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +87 -11
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +77 -18
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/args.ts +2 -2
- package/src/cli/bootstrap-generate.ts +1 -1
- package/src/cli/config-inspect.ts +65 -12
- 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 -532
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- package/src/cli/docs.ts +22 -14
- package/src/cli/doctor-naming.ts +5 -5
- package/src/cli/doctor-toolchain.ts +3 -3
- package/src/cli/eval.ts +1 -2
- package/src/cli/extensions.ts +2 -1
- package/src/cli/fleet.ts +1 -1
- package/src/cli/index.ts +3 -1
- package/src/cli/internal-dispatch.ts +3 -4
- 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/panes.ts +19 -5
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +9 -4
- package/src/cli/select.ts +664 -0
- package/src/cli/share.ts +5 -1
- package/src/cli/skills-eval.ts +3 -3
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +5 -6
- package/src/cli/trace.ts +55 -4
- 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/cli/wiki-generate.ts +1 -1
- package/src/core/artifact-paths.ts +1 -1
- package/src/core/bash-exec.ts +131 -86
- package/src/core/bus-events.ts +51 -6
- package/src/core/config.ts +61 -1
- package/src/core/defaults.ts +7 -4
- package/src/core/dispatch-outcome.ts +16 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/guardrails.ts +10 -49
- package/src/core/prompt-hint.ts +9 -0
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +89 -2
- package/src/domains/agents/builtins/architect.md +2 -3
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +2 -2
- package/src/domains/agents/builtins/documenter.md +2 -2
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/oracle.md +1 -1
- package/src/domains/agents/builtins/provenance.md +1 -1
- package/src/domains/agents/builtins/researcher.md +1 -1
- package/src/domains/agents/builtins/scout.md +1 -1
- package/src/domains/agents/builtins/tester.md +2 -2
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +13 -15
- package/src/domains/agents/contract.ts +2 -0
- package/src/domains/agents/extension.ts +23 -1
- package/src/domains/agents/result-contract.ts +70 -0
- package/src/domains/config/keybindings.ts +8 -0
- package/src/domains/context/extension.ts +0 -3
- package/src/domains/context/wiki/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/context/working-set/path-index.ts +1 -0
- 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 +11 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/contract.ts +11 -1
- package/src/domains/dispatch/extension.ts +237 -49
- package/src/domains/dispatch/host-verification.ts +435 -39
- package/src/domains/dispatch/intent-requirements.ts +10 -0
- package/src/domains/dispatch/intent.ts +18 -1
- package/src/domains/dispatch/path-scope.ts +235 -24
- package/src/domains/dispatch/run-event-journal.ts +4 -15
- package/src/domains/dispatch/state.ts +2 -3
- package/src/domains/dispatch/transport.ts +45 -21
- package/src/domains/dispatch/types.ts +58 -3
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/artifacts/store.ts +5 -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/store.ts +8 -1
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- package/src/domains/evidence/trust-status.ts +10 -1
- package/src/domains/extensions/contract.ts +15 -1
- package/src/domains/extensions/discovery.ts +238 -41
- package/src/domains/extensions/extension.ts +105 -6
- package/src/domains/extensions/index.ts +24 -0
- package/src/domains/extensions/integrity.ts +189 -0
- package/src/domains/extensions/manager.ts +17 -1
- package/src/domains/extensions/resource-path.ts +27 -0
- package/src/domains/extensions/resources.ts +18 -38
- package/src/domains/extensions/snapshot-store.ts +39 -0
- package/src/domains/extensions/snapshot.ts +180 -0
- package/src/domains/extensions/state.ts +385 -57
- package/src/domains/extensions/types.ts +118 -1
- package/src/domains/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
- package/src/domains/lifecycle/migrations/index.ts +6 -0
- package/src/domains/lifecycle/naming-resources.ts +19 -4
- package/src/domains/lifecycle/naming-yazi.ts +10 -5
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/contract.ts +26 -0
- package/src/domains/middleware/extension.ts +24 -24
- package/src/domains/middleware/hook-receipts.ts +27 -4
- package/src/domains/middleware/hooks-io.ts +65 -32
- package/src/domains/middleware/hooks.ts +64 -0
- package/src/domains/middleware/index.ts +28 -5
- 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/registrations.ts +326 -0
- package/src/domains/middleware/runtime.ts +28 -0
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/middleware/snapshot.ts +20 -7
- package/src/domains/mux/contract.ts +38 -0
- package/src/domains/mux/detect.ts +6 -13
- package/src/domains/mux/index.ts +1 -1
- package/src/domains/mux/operations.ts +44 -5
- package/src/domains/mux/yazi/assets/yazi.toml +2 -2
- package/src/domains/mux/yazi/session.ts +53 -4
- package/src/domains/mux/yazi/theme.ts +117 -17
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/contract.ts +10 -11
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/extension.ts +17 -4
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- package/src/domains/observability/projection.ts +14 -90
- package/src/domains/observability/trace-store.ts +43 -7
- package/src/domains/prompts/compiler.ts +73 -53
- package/src/domains/prompts/contract.ts +15 -3
- package/src/domains/prompts/extension.ts +97 -9
- package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
- package/src/domains/prompts/fragments/identity/clio.md +6 -12
- package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
- package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
- package/src/domains/prompts/fragments/operating/contract.md +7 -15
- package/src/domains/prompts/fragments/operating/delegation.md +32 -34
- package/src/domains/prompts/fragments/operating/skills.md +10 -24
- package/src/domains/prompts/fragments/operating/worker.md +1 -8
- package/src/domains/providers/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/index.ts +1 -1
- 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 +99 -25
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +699 -114
- package/src/domains/providers/runtime-resolution.ts +31 -0
- 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/common/probe-helpers.ts +7 -2
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
- 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/cost-provenance.ts +19 -0
- package/src/domains/providers/types/local-model-quirks.ts +85 -37
- 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 +23 -19
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/autonomy.ts +15 -0
- package/src/domains/safety/call-target.ts +1 -1
- package/src/domains/safety/index.ts +1 -0
- package/src/domains/safety/loop-detector.ts +7 -4
- 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/task-board.ts +10 -9
- package/src/domains/session/usage.ts +3 -3
- package/src/domains/share/archive.ts +164 -7
- package/src/engine/acp/server.ts +62 -9
- 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/llamacpp-residency.ts +3 -4
- package/src/engine/apis/lmstudio.ts +3 -3
- package/src/engine/apis/ollama-native.ts +6 -6
- package/src/engine/apis/openai-completions.ts +145 -39
- package/src/engine/apis/output-budget.ts +8 -18
- package/src/engine/apis/residency.ts +8 -27
- package/src/engine/external-subprocess.ts +114 -6
- package/src/engine/gemma-channel-filter.ts +19 -0
- package/src/engine/loop-guard.ts +92 -12
- package/src/engine/worker-runtime.ts +40 -11
- package/src/engine/worker-tools.ts +3 -1
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/extension-hook-sources.ts +28 -0
- package/src/entry/extension-reload.ts +309 -0
- package/src/entry/orchestrator.ts +464 -251
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/application-controller.ts +2 -1
- package/src/interactive/bus-notices.ts +8 -1
- package/src/interactive/chat-loop-messages.ts +16 -17
- package/src/interactive/chat-loop.ts +75 -3
- package/src/interactive/chat-panel.ts +36 -13
- package/src/interactive/chat-renderer.ts +72 -7
- package/src/interactive/cost-overlay.ts +26 -2
- package/src/interactive/dispatch-board.ts +6 -11
- package/src/interactive/footer/widgets.ts +13 -0
- package/src/interactive/interactive-application.ts +39 -4
- package/src/interactive/interactive-input-runtime.ts +4 -0
- package/src/interactive/interactive-presentation.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +4 -1
- package/src/interactive/overlays/extensions.ts +9 -1
- package/src/interactive/overlays/help-reference.ts +13 -0
- package/src/interactive/overlays/settings.ts +27 -16
- package/src/interactive/panes-runtime.ts +111 -35
- package/src/interactive/prompt-cache-identity.ts +88 -0
- package/src/interactive/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-commands.ts +153 -20
- package/src/interactive/stream-pacing-policy.ts +0 -23
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +39 -20
- 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/interactive/yazi-bridge.ts +60 -6
- package/src/tools/agent-tools.ts +30 -1
- package/src/tools/artifact.ts +2 -2
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +52 -22
- package/src/tools/codewiki/code-nav-surface.ts +6 -0
- package/src/tools/codewiki/code-nav.ts +99 -13
- package/src/tools/context/docs-engine.ts +20 -7
- package/src/tools/context/index.ts +59 -21
- package/src/tools/core-bootstrap.ts +28 -6
- package/src/tools/credential-present.ts +1 -2
- package/src/tools/dispatch-arguments.ts +6 -1
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +49 -4
- package/src/tools/dispatch-run-events.ts +1 -1
- package/src/tools/dispatch-runner.ts +12 -0
- package/src/tools/dispatch-schema.ts +338 -0
- package/src/tools/dispatch-types.ts +3 -0
- package/src/tools/dispatch.ts +9 -254
- package/src/tools/ledger.ts +3 -5
- package/src/tools/monitor-surface.ts +5 -13
- package/src/tools/observation.ts +4 -5
- package/src/tools/panes-surface.ts +4 -11
- package/src/tools/panes.ts +4 -2
- package/src/tools/policy.ts +15 -2
- package/src/tools/read.ts +5 -6
- package/src/tools/registry.ts +41 -12
- package/src/tools/result-shaping.ts +18 -14
- package/src/tools/steer-surface.ts +1 -1
- package/src/tools/tasks.ts +1 -1
- package/src/tools/truncate.ts +6 -5
- package/src/tools/verify/surface.ts +6 -12
- package/src/tools/web-fetch-surface.ts +1 -3
- package/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/builtins-UJLMOVOV.js +0 -17
- package/dist/chunk-5QIAJV2D.js +0 -48
- package/dist/chunk-JZWT5J3Y.js +0 -814
- package/dist/chunk-K7VKOLQQ.js +0 -15
- package/dist/chunk-PMZCIOCJ.js +0 -25
- package/dist/chunk-SUW5DORT.js +0 -819
- package/dist/chunk-UOV2BYIW.js +0 -107
- package/dist/chunk-WR6U3OVP.js +0 -45
- package/dist/chunk-Y45G3AXC.js +0 -1558
- package/dist/reset-EOLM7GVE.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-H7TOM7YL.js +0 -323
- package/docs/artifact-versions.md +0 -67
- package/docs/development-pipeline.md +0 -121
- package/docs/documentation-coverage.md +0 -46
- package/docs/documentation-guide.md +0 -167
- package/docs/time-conventions.md +0 -101
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
THINKING_LEVELS
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UXCU4E3T.js";
|
|
5
5
|
import {
|
|
6
|
+
runCommandVector
|
|
7
|
+
} from "./chunk-JSC3U7TI.js";
|
|
8
|
+
import {
|
|
9
|
+
catalogThinkingLevelsForRuntime,
|
|
6
10
|
listCatalogModelsForRuntime,
|
|
7
11
|
mergeCapabilities,
|
|
8
12
|
synthesizeCatalogBackedModel
|
|
9
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5OIVVPHF.js";
|
|
10
14
|
import {
|
|
11
15
|
init_esm_shims
|
|
12
16
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -16,47 +20,243 @@ init_esm_shims();
|
|
|
16
20
|
|
|
17
21
|
// src/domains/providers/runtimes/antigravity/antigravity-code.ts
|
|
18
22
|
init_esm_shims();
|
|
19
|
-
|
|
23
|
+
|
|
24
|
+
// src/core/external-diagnostic.ts
|
|
25
|
+
init_esm_shims();
|
|
26
|
+
var REDACTED = "[redacted]";
|
|
27
|
+
function redactExternalDiagnostic(input) {
|
|
28
|
+
return input.replace(/\b(?:authorization|proxy-authorization)\s*:\s*[^\r\n]+/giu, `Authorization: ${REDACTED}`).replace(/\b(?:set-cookie|cookie)\s*:\s*[^\r\n]+/giu, `Cookie: ${REDACTED}`).replace(/\bbearer\s+[A-Za-z0-9._~+/-]+=*/giu, `Bearer ${REDACTED}`).replace(
|
|
29
|
+
/\b(?:api[_-]?key|access[_-]?token|refresh[_-]?token|token|secret|password)\s*[:=]\s*[^\s,;]+/giu,
|
|
30
|
+
(match) => {
|
|
31
|
+
const separator = match.includes(":") ? ":" : "=";
|
|
32
|
+
return `${match.slice(0, match.indexOf(separator)).trim()}${separator}${REDACTED}`;
|
|
33
|
+
}
|
|
34
|
+
).replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/gu, REDACTED).replace(
|
|
35
|
+
/(?:~|\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*)\/\.(?:gemini\/antigravity-cli|antigravitycli)(?:\/[^\s]*)?/gu,
|
|
36
|
+
"[redacted credential path]"
|
|
37
|
+
).replace(/https?:\/\/[^\s"'<>]+/giu, (url2) => {
|
|
38
|
+
try {
|
|
39
|
+
const parsed = new URL(url2);
|
|
40
|
+
if (/(?:auth|oauth|login|signin|callback)/iu.test(parsed.pathname)) return "[redacted authorization URL]";
|
|
41
|
+
parsed.username = "";
|
|
42
|
+
parsed.password = "";
|
|
43
|
+
parsed.search = "";
|
|
44
|
+
parsed.hash = "";
|
|
45
|
+
return parsed.toString();
|
|
46
|
+
} catch {
|
|
47
|
+
return REDACTED;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function boundedExternalDiagnostic(input, maxBytes = 8192) {
|
|
52
|
+
const redacted = redactExternalDiagnostic(input).trim();
|
|
53
|
+
const bytes = Buffer.from(redacted, "utf8");
|
|
54
|
+
if (bytes.byteLength <= maxBytes) return redacted;
|
|
55
|
+
return `${bytes.subarray(0, Math.max(0, maxBytes - 32)).toString("utf8")}
|
|
56
|
+
[diagnostic truncated]`;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// src/domains/providers/runtimes/antigravity/antigravity-code.ts
|
|
60
|
+
var ANTIGRAVITY_AUTH_NOTICE = "Experimental local delegation through your installed Antigravity (`agy`) CLI. Clio neither signs in nor stores or inspects Antigravity credentials. Run `agy` yourself and complete sign-in before probing this target.";
|
|
20
61
|
var ANTIGRAVITY_MODELS = [
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"Claude Sonnet 4.6 (Thinking)",
|
|
27
|
-
"Claude Opus 4.6 (Thinking)",
|
|
28
|
-
"GPT-OSS 120B (Medium)"
|
|
62
|
+
"gemini-3.8-flash-high",
|
|
63
|
+
"gemini-3.8-flash-medium",
|
|
64
|
+
"gemini-3.8-flash-low",
|
|
65
|
+
"gemini-3.1-pro-high",
|
|
66
|
+
"gemini-3.1-pro-low"
|
|
29
67
|
];
|
|
30
68
|
var antigravityCapabilities = {
|
|
31
69
|
chat: true,
|
|
32
|
-
tools:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
vision: true,
|
|
70
|
+
tools: false,
|
|
71
|
+
reasoning: false,
|
|
72
|
+
vision: false,
|
|
36
73
|
audio: false,
|
|
37
74
|
embeddings: false,
|
|
38
75
|
rerank: false,
|
|
39
76
|
fim: false,
|
|
40
|
-
contextWindow:
|
|
41
|
-
maxTokens:
|
|
77
|
+
contextWindow: 0,
|
|
78
|
+
maxTokens: 0
|
|
79
|
+
};
|
|
80
|
+
var ANTIGRAVITY_MAX_CATALOG_BYTES = 1024 * 1024;
|
|
81
|
+
var ANTIGRAVITY_MAX_DISCOVERED_MODELS = 4096;
|
|
82
|
+
var MAX_MODEL_ID_CHARS = 1024;
|
|
83
|
+
var MAX_MODEL_LABEL_CHARS = 1024;
|
|
84
|
+
var AntigravityCatalogError = class extends Error {
|
|
85
|
+
kind;
|
|
86
|
+
constructor(kind, message) {
|
|
87
|
+
super(message);
|
|
88
|
+
this.name = "AntigravityCatalogError";
|
|
89
|
+
this.kind = kind;
|
|
90
|
+
}
|
|
42
91
|
};
|
|
92
|
+
function record(value) {
|
|
93
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
|
|
94
|
+
}
|
|
95
|
+
function parseAntigravityModelCatalogDetails(output) {
|
|
96
|
+
let decoded;
|
|
97
|
+
try {
|
|
98
|
+
decoded = JSON.parse(output);
|
|
99
|
+
} catch {
|
|
100
|
+
throw new AntigravityCatalogError(
|
|
101
|
+
"unsupported-feature",
|
|
102
|
+
"agy returned an unreadable model catalog; update the Antigravity CLI and retry"
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
const envelope = record(decoded);
|
|
106
|
+
const command = record(envelope?.command);
|
|
107
|
+
const data = record(command?.data);
|
|
108
|
+
if (envelope?.status !== "SUCCESS") {
|
|
109
|
+
const detail = boundedExternalDiagnostic(
|
|
110
|
+
typeof envelope?.error === "string" ? envelope.error : typeof command?.error === "string" ? command.error : "agy could not list models"
|
|
111
|
+
);
|
|
112
|
+
const kind = classifyAntigravityDiagnostic(detail);
|
|
113
|
+
throw new AntigravityCatalogError(kind, antigravityProbeMessage(kind, detail));
|
|
114
|
+
}
|
|
115
|
+
if (command?.name !== "models" || !Array.isArray(data?.models)) {
|
|
116
|
+
throw new AntigravityCatalogError(
|
|
117
|
+
"unsupported-feature",
|
|
118
|
+
"agy returned an unsupported model catalog; update the Antigravity CLI and retry"
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
if (data.models.length === 0) {
|
|
122
|
+
throw new AntigravityCatalogError(
|
|
123
|
+
"catalog-unavailable",
|
|
124
|
+
"agy returned no available models; run `agy` locally and verify the signed-in account has model access"
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
if (data.models.length > ANTIGRAVITY_MAX_DISCOVERED_MODELS) {
|
|
128
|
+
throw new AntigravityCatalogError(
|
|
129
|
+
"catalog-unavailable",
|
|
130
|
+
`agy returned more than ${ANTIGRAVITY_MAX_DISCOVERED_MODELS} models; the authoritative catalog was refused rather than truncated`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
const models = [];
|
|
134
|
+
const labels = {};
|
|
135
|
+
const seen = /* @__PURE__ */ new Set();
|
|
136
|
+
for (const value of data.models) {
|
|
137
|
+
const model = record(value);
|
|
138
|
+
const id = typeof model?.id === "string" ? model.id.trim() : "";
|
|
139
|
+
const label = typeof model?.label === "string" ? model.label.trim() : "";
|
|
140
|
+
if (id.length === 0 || id.length > MAX_MODEL_ID_CHARS || /[\r\n\0]/u.test(id)) {
|
|
141
|
+
throw new AntigravityCatalogError("catalog-unavailable", "agy returned an invalid model identifier");
|
|
142
|
+
}
|
|
143
|
+
if (label.length === 0 || label.length > MAX_MODEL_LABEL_CHARS || /[\r\n\0]/u.test(label)) {
|
|
144
|
+
throw new AntigravityCatalogError("catalog-unavailable", `agy returned an invalid label for model '${id}'`);
|
|
145
|
+
}
|
|
146
|
+
if (seen.has(id)) {
|
|
147
|
+
if (labels[id] !== label) {
|
|
148
|
+
throw new AntigravityCatalogError(
|
|
149
|
+
"catalog-unavailable",
|
|
150
|
+
`agy returned conflicting labels for duplicate model '${id}'`
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
seen.add(id);
|
|
156
|
+
models.push(id);
|
|
157
|
+
labels[id] = label;
|
|
158
|
+
}
|
|
159
|
+
return { models, labels };
|
|
160
|
+
}
|
|
161
|
+
function classifyAntigravityDiagnostic(detail) {
|
|
162
|
+
if (/(?:enoent|not found|cannot find|could not start|spawn .*agy)/iu.test(detail)) return "missing";
|
|
163
|
+
if (/(?:sign[ -]?in|log[ -]?in|unauthori[sz]ed|authenticat|credential|account.*required)/iu.test(detail)) {
|
|
164
|
+
return "authentication";
|
|
165
|
+
}
|
|
166
|
+
if (/(?:unknown|unsupported|unrecognized|invalid) (?:option|argument|command)|output-format|models command/iu.test(detail)) {
|
|
167
|
+
return "unsupported-feature";
|
|
168
|
+
}
|
|
169
|
+
return "generic";
|
|
170
|
+
}
|
|
171
|
+
function antigravityProbeMessage(kind, detail) {
|
|
172
|
+
const safeDetail = boundedExternalDiagnostic(detail || "no diagnostic was provided");
|
|
173
|
+
switch (kind) {
|
|
174
|
+
case "missing":
|
|
175
|
+
return "Antigravity CLI is not installed or `agy` is not on PATH";
|
|
176
|
+
case "authentication":
|
|
177
|
+
return `Antigravity sign-in is required; run \`agy\` yourself and complete sign-in (${safeDetail})`;
|
|
178
|
+
case "unsupported-feature":
|
|
179
|
+
return `the installed Antigravity CLI does not expose the required structured model catalog; update \`agy\` (${safeDetail})`;
|
|
180
|
+
case "catalog-unavailable":
|
|
181
|
+
return safeDetail;
|
|
182
|
+
case "cancelled":
|
|
183
|
+
return "Antigravity model discovery was cancelled";
|
|
184
|
+
default:
|
|
185
|
+
return `Antigravity model discovery failed: ${safeDetail}`;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function probeAntigravityModelCatalog(ctx, runner = runCommandVector) {
|
|
189
|
+
const result = await runner("agy", ["--output-format", "json", "models"], {
|
|
190
|
+
cwd: process.cwd(),
|
|
191
|
+
workspaceRoot: process.cwd(),
|
|
192
|
+
timeoutMs: Math.max(1, ctx.httpTimeoutMs),
|
|
193
|
+
maxOutputBytes: ANTIGRAVITY_MAX_CATALOG_BYTES,
|
|
194
|
+
...ctx.signal ? { signal: ctx.signal } : {}
|
|
195
|
+
});
|
|
196
|
+
if (result.aborted || result.timedOut) {
|
|
197
|
+
return {
|
|
198
|
+
ok: false,
|
|
199
|
+
latencyMs: result.durationMs,
|
|
200
|
+
failureKind: "cancelled",
|
|
201
|
+
error: antigravityProbeMessage("cancelled", "")
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
if (result.outputCapped) {
|
|
205
|
+
return {
|
|
206
|
+
ok: false,
|
|
207
|
+
latencyMs: result.durationMs,
|
|
208
|
+
failureKind: "catalog-unavailable",
|
|
209
|
+
error: `agy model catalog exceeded ${ANTIGRAVITY_MAX_CATALOG_BYTES} bytes`
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
if (result.exitCode !== 0) {
|
|
213
|
+
const detail = boundedExternalDiagnostic(result.stderr || result.stdout || `agy exited ${String(result.exitCode)}`);
|
|
214
|
+
const kind = classifyAntigravityDiagnostic(detail);
|
|
215
|
+
return { ok: false, latencyMs: result.durationMs, failureKind: kind, error: antigravityProbeMessage(kind, detail) };
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
const catalog = parseAntigravityModelCatalogDetails(result.stdout);
|
|
219
|
+
return {
|
|
220
|
+
ok: true,
|
|
221
|
+
latencyMs: result.durationMs,
|
|
222
|
+
models: catalog.models,
|
|
223
|
+
modelLabels: catalog.labels
|
|
224
|
+
};
|
|
225
|
+
} catch (cause) {
|
|
226
|
+
const kind = cause instanceof AntigravityCatalogError ? cause.kind : "generic";
|
|
227
|
+
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
228
|
+
return { ok: false, latencyMs: result.durationMs, failureKind: kind, error: boundedExternalDiagnostic(detail) };
|
|
229
|
+
}
|
|
230
|
+
}
|
|
43
231
|
var antigravityCodeRuntime = {
|
|
44
232
|
id: "antigravity-code",
|
|
45
|
-
displayName: "Antigravity CLI",
|
|
233
|
+
displayName: "Antigravity CLI \u2014 experimental local delegation",
|
|
46
234
|
kind: "subprocess",
|
|
47
235
|
tier: "subscription",
|
|
48
|
-
|
|
49
|
-
// to its own runner before any pi-ai inference, so this only needs to be a
|
|
50
|
-
// valid, google-backed family. The runner is selected by runtime id, and the
|
|
51
|
-
// plain-text parser is named by `outputParser`.
|
|
52
|
-
apiFamily: "google-generative-ai",
|
|
236
|
+
apiFamily: "external-agent-subprocess",
|
|
53
237
|
auth: "none",
|
|
54
238
|
authNotice: ANTIGRAVITY_AUTH_NOTICE,
|
|
55
239
|
knownModels: [...ANTIGRAVITY_MODELS],
|
|
56
240
|
binaryName: "agy",
|
|
57
|
-
headlessCommand: "agy --
|
|
58
|
-
outputParser: "antigravity-
|
|
241
|
+
headlessCommand: "agy --input-format stream-json --output-format stream-json",
|
|
242
|
+
outputParser: "antigravity-stream-json",
|
|
59
243
|
defaultCapabilities: antigravityCapabilities,
|
|
244
|
+
externalAgentLoop: {
|
|
245
|
+
tools: "externally-governed-unobserved",
|
|
246
|
+
network: "externally-governed-unobserved",
|
|
247
|
+
budget: "external-one-shot",
|
|
248
|
+
generatingRetry: "forbidden",
|
|
249
|
+
modelCatalog: "live-authoritative"
|
|
250
|
+
},
|
|
251
|
+
async probe(_target, ctx) {
|
|
252
|
+
try {
|
|
253
|
+
return await probeAntigravityModelCatalog(ctx);
|
|
254
|
+
} catch (cause) {
|
|
255
|
+
const detail = boundedExternalDiagnostic(cause instanceof Error ? cause.message : String(cause));
|
|
256
|
+
const kind = classifyAntigravityDiagnostic(detail);
|
|
257
|
+
return { ok: false, failureKind: kind, error: antigravityProbeMessage(kind, detail) };
|
|
258
|
+
}
|
|
259
|
+
},
|
|
60
260
|
synthesizeModel(target, wireModelId, kb) {
|
|
61
261
|
return synthesizeCatalogBackedModel({
|
|
62
262
|
target,
|
|
@@ -64,9 +264,9 @@ var antigravityCodeRuntime = {
|
|
|
64
264
|
kb,
|
|
65
265
|
defaultCapabilities: antigravityCapabilities,
|
|
66
266
|
runtimeId: "antigravity-code",
|
|
67
|
-
api: "
|
|
68
|
-
provider: "
|
|
69
|
-
defaultBaseUrl: "antigravity
|
|
267
|
+
api: "external-agent-subprocess",
|
|
268
|
+
provider: "antigravity",
|
|
269
|
+
defaultBaseUrl: "external-agent://antigravity/local"
|
|
70
270
|
});
|
|
71
271
|
}
|
|
72
272
|
};
|
|
@@ -257,15 +457,102 @@ init_esm_shims();
|
|
|
257
457
|
|
|
258
458
|
// src/domains/providers/types/local-model-quirks.ts
|
|
259
459
|
init_esm_shims();
|
|
260
|
-
|
|
460
|
+
|
|
461
|
+
// src/domains/providers/types/capability-flags.ts
|
|
462
|
+
init_esm_shims();
|
|
463
|
+
|
|
464
|
+
// src/domains/providers/model-family.ts
|
|
465
|
+
init_esm_shims();
|
|
466
|
+
function normalizeModelIdForFamily(modelId) {
|
|
467
|
+
return (modelId ?? "").trim().toLowerCase().replace(/_/g, "-");
|
|
468
|
+
}
|
|
469
|
+
function isHarmonyModelId(modelId) {
|
|
470
|
+
return normalizeModelIdForFamily(modelId).includes("gpt-oss");
|
|
471
|
+
}
|
|
472
|
+
function inferLocalModelFamily(modelId) {
|
|
473
|
+
const normalized = normalizeModelIdForFamily(modelId);
|
|
474
|
+
if (normalized.length === 0) return "unknown";
|
|
475
|
+
if (normalized.includes("gpt-oss")) return "openai-gpt-oss";
|
|
476
|
+
if (normalized.includes("nemotron-cascade-2") || normalized.includes("nemotron-cascade2")) {
|
|
477
|
+
return "nemotron-cascade-2";
|
|
478
|
+
}
|
|
479
|
+
if (normalized.includes("nemotron-3-nano-omni") || normalized.includes("nemotron-nano-omni")) {
|
|
480
|
+
return "nemotron-3-nano-omni";
|
|
481
|
+
}
|
|
482
|
+
if (normalized.includes("qwen3")) return "qwen3";
|
|
483
|
+
if (normalized.includes("gemma-4") || normalized.includes("gemma4") || normalized.includes("gemopus")) {
|
|
484
|
+
return "gemma-4";
|
|
485
|
+
}
|
|
486
|
+
return "unknown";
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
// src/domains/providers/types/capability-flags.ts
|
|
490
|
+
var EMPTY_CAPABILITIES = {
|
|
491
|
+
chat: false,
|
|
492
|
+
tools: false,
|
|
493
|
+
reasoning: false,
|
|
494
|
+
vision: false,
|
|
495
|
+
audio: false,
|
|
496
|
+
embeddings: false,
|
|
497
|
+
rerank: false,
|
|
498
|
+
fim: false,
|
|
499
|
+
contextWindow: 0,
|
|
500
|
+
maxTokens: 0
|
|
501
|
+
};
|
|
502
|
+
var VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
503
|
+
var THINKING_LEVELS_WITHOUT_XHIGH = ["off", "minimal", "low", "medium", "high"];
|
|
504
|
+
var THINKING_LEVELS_OPENAI_5_1_MINI = ["off", "minimal", "low", "medium", "high"];
|
|
505
|
+
var THINKING_LEVELS_OPENAI_5_2_PLUS = [
|
|
506
|
+
"off",
|
|
507
|
+
"minimal",
|
|
508
|
+
"low",
|
|
509
|
+
"medium",
|
|
510
|
+
"high",
|
|
511
|
+
"xhigh"
|
|
512
|
+
];
|
|
513
|
+
var THINKING_LEVELS_OPENAI_5_6 = [...THINKING_LEVELS_OPENAI_5_2_PLUS, "max"];
|
|
514
|
+
var THINKING_LEVELS_HARMONY = ["low", "medium", "high"];
|
|
515
|
+
function normalizeModelId(modelId) {
|
|
516
|
+
if (!modelId) return void 0;
|
|
517
|
+
const trimmed = modelId.trim();
|
|
518
|
+
if (trimmed.length === 0) return void 0;
|
|
519
|
+
return trimmed.includes("/") ? trimmed.split("/").pop() ?? trimmed : trimmed;
|
|
520
|
+
}
|
|
521
|
+
function availableOpenAICodexThinkingLevels(modelId) {
|
|
522
|
+
const normalized = normalizeModelId(modelId);
|
|
523
|
+
if (!normalized) return VALID_THINKING_LEVELS;
|
|
524
|
+
if (normalized === "gpt-5.1-codex-mini") return THINKING_LEVELS_OPENAI_5_1_MINI;
|
|
525
|
+
if (normalized.startsWith("gpt-5.2") || normalized.startsWith("gpt-5.3") || normalized.startsWith("gpt-5.4") || normalized.startsWith("gpt-5.5")) {
|
|
526
|
+
return THINKING_LEVELS_OPENAI_5_2_PLUS;
|
|
527
|
+
}
|
|
528
|
+
if (normalized.startsWith("gpt-5.6")) {
|
|
529
|
+
return THINKING_LEVELS_OPENAI_5_6;
|
|
530
|
+
}
|
|
531
|
+
return THINKING_LEVELS_WITHOUT_XHIGH;
|
|
532
|
+
}
|
|
533
|
+
function availableThinkingLevels(caps, options) {
|
|
534
|
+
if (!caps.reasoning) return ["off"];
|
|
535
|
+
if (caps.thinkingFormat === "harmony" || isHarmonyModelId(options?.modelId)) {
|
|
536
|
+
return THINKING_LEVELS_HARMONY;
|
|
537
|
+
}
|
|
538
|
+
const catalogLevels = options?.runtimeId && options.modelId ? catalogThinkingLevelsForRuntime(options.runtimeId, options.modelId) : void 0;
|
|
539
|
+
if (catalogLevels) {
|
|
540
|
+
if (!catalogLevels.includes("xhigh")) return catalogLevels.filter((level) => level !== "max");
|
|
541
|
+
return catalogLevels;
|
|
542
|
+
}
|
|
543
|
+
if (caps.thinkingFormat === "openai-codex" || options?.runtimeId === "openai-codex") {
|
|
544
|
+
return availableOpenAICodexThinkingLevels(options?.modelId);
|
|
545
|
+
}
|
|
546
|
+
if (caps.thinkingFormat === "anthropic-extended") {
|
|
547
|
+
return THINKING_LEVELS_WITHOUT_XHIGH;
|
|
548
|
+
}
|
|
549
|
+
return THINKING_LEVELS_WITHOUT_XHIGH;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// src/domains/providers/types/local-model-quirks.ts
|
|
261
553
|
function isRecord(value) {
|
|
262
554
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
263
555
|
}
|
|
264
|
-
function asKvCacheQuant(value) {
|
|
265
|
-
if (value === false) return false;
|
|
266
|
-
if (typeof value !== "string") return void 0;
|
|
267
|
-
return KV_CACHE_QUANTS.includes(value) ? value : void 0;
|
|
268
|
-
}
|
|
269
556
|
function asPositive(value) {
|
|
270
557
|
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : void 0;
|
|
271
558
|
}
|
|
@@ -276,16 +563,6 @@ function asInteger(value) {
|
|
|
276
563
|
function asPenalty(value) {
|
|
277
564
|
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
278
565
|
}
|
|
279
|
-
function extractKvCache(raw) {
|
|
280
|
-
if (!isRecord(raw)) return void 0;
|
|
281
|
-
const out = {};
|
|
282
|
-
const k = asKvCacheQuant(raw.kQuant);
|
|
283
|
-
if (k !== void 0) out.kQuant = k;
|
|
284
|
-
const v = asKvCacheQuant(raw.vQuant);
|
|
285
|
-
if (v !== void 0) out.vQuant = v;
|
|
286
|
-
if (typeof raw.useFp16 === "boolean") out.useFp16 = raw.useFp16;
|
|
287
|
-
return Object.keys(out).length > 0 ? out : void 0;
|
|
288
|
-
}
|
|
289
566
|
function extractSamplingProfile(raw) {
|
|
290
567
|
if (!isRecord(raw)) return void 0;
|
|
291
568
|
const out = {};
|
|
@@ -303,8 +580,6 @@ function extractSamplingProfile(raw) {
|
|
|
303
580
|
if (pp !== void 0) out.presencePenalty = pp;
|
|
304
581
|
const fp = asPenalty(raw.frequencyPenalty);
|
|
305
582
|
if (fp !== void 0) out.frequencyPenalty = fp;
|
|
306
|
-
const maxTokens = asInteger(raw.maxTokens);
|
|
307
|
-
if (maxTokens !== void 0) out.maxTokens = maxTokens;
|
|
308
583
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
309
584
|
}
|
|
310
585
|
function extractSampling(raw) {
|
|
@@ -353,6 +628,61 @@ function extractEffortByLevel(raw) {
|
|
|
353
628
|
if (typeof raw.xhigh === "string" && raw.xhigh.length > 0) out.xhigh = raw.xhigh;
|
|
354
629
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
355
630
|
}
|
|
631
|
+
function extractChatTemplateKwargs(raw) {
|
|
632
|
+
if (!isRecord(raw)) return void 0;
|
|
633
|
+
const out = {};
|
|
634
|
+
if (isRecord(raw.static)) {
|
|
635
|
+
const staticMap = {};
|
|
636
|
+
for (const [k, v] of Object.entries(raw.static)) {
|
|
637
|
+
if (typeof v === "boolean") {
|
|
638
|
+
staticMap[k] = v;
|
|
639
|
+
} else if (typeof v === "number" && Number.isFinite(v)) {
|
|
640
|
+
staticMap[k] = v;
|
|
641
|
+
} else if (typeof v === "string" && v.length > 0) {
|
|
642
|
+
staticMap[k] = v;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
if (Object.keys(staticMap).length > 0) out.static = staticMap;
|
|
646
|
+
}
|
|
647
|
+
if (isRecord(raw.byLevel)) {
|
|
648
|
+
const byLevelRaw = raw.byLevel;
|
|
649
|
+
if (typeof byLevelRaw.key === "string" && byLevelRaw.key.trim().length > 0 && isRecord(byLevelRaw.values)) {
|
|
650
|
+
const values = {};
|
|
651
|
+
for (const level of VALID_THINKING_LEVELS) {
|
|
652
|
+
const val = byLevelRaw.values[level];
|
|
653
|
+
if (typeof val === "string" && val.length > 0) {
|
|
654
|
+
values[level] = val;
|
|
655
|
+
} else if (typeof val === "number" && Number.isFinite(val)) {
|
|
656
|
+
values[level] = val;
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
if (Object.keys(values).length > 0) {
|
|
660
|
+
const byLevel = {
|
|
661
|
+
key: byLevelRaw.key.trim(),
|
|
662
|
+
values
|
|
663
|
+
};
|
|
664
|
+
if (typeof byLevelRaw.lmstudio === "string" && byLevelRaw.lmstudio.trim().length > 0) {
|
|
665
|
+
byLevel.lmstudio = byLevelRaw.lmstudio.trim();
|
|
666
|
+
}
|
|
667
|
+
out.byLevel = byLevel;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
if (typeof raw.lmstudio === "string" && raw.lmstudio.trim().length > 0) {
|
|
672
|
+
out.lmstudio = raw.lmstudio.trim();
|
|
673
|
+
} else if (isRecord(raw.lmstudio)) {
|
|
674
|
+
const lmstudioMap = {};
|
|
675
|
+
for (const [k, v] of Object.entries(raw.lmstudio)) {
|
|
676
|
+
if (typeof v === "string" && v.trim().length > 0) {
|
|
677
|
+
lmstudioMap[k] = v.trim();
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
if (Object.keys(lmstudioMap).length > 0) {
|
|
681
|
+
out.lmstudio = lmstudioMap;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
685
|
+
}
|
|
356
686
|
function extractThinkingQuirks(raw) {
|
|
357
687
|
if (!isRecord(raw)) return void 0;
|
|
358
688
|
const mechanism = asThinkingMechanism(raw.mechanism);
|
|
@@ -363,17 +693,19 @@ function extractThinkingQuirks(raw) {
|
|
|
363
693
|
const effortByLevel = extractEffortByLevel(raw.effortByLevel);
|
|
364
694
|
if (effortByLevel) out.effortByLevel = effortByLevel;
|
|
365
695
|
if (typeof raw.guidance === "string" && raw.guidance.length > 0) out.guidance = raw.guidance;
|
|
696
|
+
const chatTemplateKwargs = extractChatTemplateKwargs(raw.chatTemplateKwargs);
|
|
697
|
+
if (chatTemplateKwargs) out.chatTemplateKwargs = chatTemplateKwargs;
|
|
366
698
|
return out;
|
|
367
699
|
}
|
|
368
700
|
function extractLocalModelQuirks(raw) {
|
|
369
701
|
if (!isRecord(raw)) return void 0;
|
|
370
702
|
const out = {};
|
|
371
|
-
const kvCache = extractKvCache(raw.kvCache);
|
|
372
|
-
if (kvCache) out.kvCache = kvCache;
|
|
373
703
|
const sampling = extractSampling(raw.sampling);
|
|
374
704
|
if (sampling) out.sampling = sampling;
|
|
375
705
|
const thinking = extractThinkingQuirks(raw.thinking);
|
|
376
706
|
if (thinking) out.thinking = thinking;
|
|
707
|
+
const chatTemplateKwargs = extractChatTemplateKwargs(raw.chatTemplateKwargs) ?? extractChatTemplateKwargs(isRecord(raw.thinking) ? raw.thinking.chatTemplateKwargs : void 0) ?? extractChatTemplateKwargs(isRecord(raw.request) ? raw.request.chatTemplateKwargs : void 0);
|
|
708
|
+
if (chatTemplateKwargs) out.chatTemplateKwargs = chatTemplateKwargs;
|
|
377
709
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
378
710
|
}
|
|
379
711
|
|
|
@@ -444,7 +776,8 @@ function synthLocalModel(input) {
|
|
|
444
776
|
...target.gateway === true ? { gateway: true } : {},
|
|
445
777
|
...kb?.entry.family ? { family: kb.entry.family } : {},
|
|
446
778
|
...quirks ? { quirks } : {},
|
|
447
|
-
...target.lmstudio ? { lmstudio: target.lmstudio } : {}
|
|
779
|
+
...target.lmstudio ? { lmstudio: target.lmstudio } : {},
|
|
780
|
+
...target.litellm ? { litellm: target.litellm } : {}
|
|
448
781
|
}
|
|
449
782
|
};
|
|
450
783
|
if (headers) model.headers = headers;
|
|
@@ -617,41 +950,41 @@ function isRecord2(value) {
|
|
|
617
950
|
function positiveNumber(value) {
|
|
618
951
|
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
|
|
619
952
|
}
|
|
620
|
-
function firstPositiveNumber(
|
|
953
|
+
function firstPositiveNumber(record2, keys) {
|
|
621
954
|
for (const key of keys) {
|
|
622
|
-
const value = positiveNumber(
|
|
955
|
+
const value = positiveNumber(record2[key]);
|
|
623
956
|
if (value !== void 0) return value;
|
|
624
957
|
}
|
|
625
958
|
return void 0;
|
|
626
959
|
}
|
|
627
|
-
function capabilityListFlag(
|
|
628
|
-
const list =
|
|
960
|
+
function capabilityListFlag(record2, name) {
|
|
961
|
+
const list = record2.capabilities;
|
|
629
962
|
if (!Array.isArray(list)) return void 0;
|
|
630
963
|
return list.some((entry) => entry === name) ? true : void 0;
|
|
631
964
|
}
|
|
632
|
-
function booleanFromAny(
|
|
965
|
+
function booleanFromAny(record2, keys) {
|
|
633
966
|
for (const key of keys) {
|
|
634
|
-
const value =
|
|
967
|
+
const value = record2[key];
|
|
635
968
|
if (typeof value === "boolean") return value;
|
|
636
969
|
}
|
|
637
970
|
return void 0;
|
|
638
971
|
}
|
|
639
|
-
function nestedRecord(
|
|
640
|
-
const value =
|
|
972
|
+
function nestedRecord(record2, key) {
|
|
973
|
+
const value = record2[key];
|
|
641
974
|
return isRecord2(value) ? value : null;
|
|
642
975
|
}
|
|
643
|
-
function firstString(
|
|
644
|
-
if (!
|
|
976
|
+
function firstString(record2, keys) {
|
|
977
|
+
if (!record2) return void 0;
|
|
645
978
|
for (const key of keys) {
|
|
646
|
-
const value =
|
|
979
|
+
const value = record2[key];
|
|
647
980
|
if (typeof value === "string" && value.trim().length > 0) return value.trim();
|
|
648
981
|
}
|
|
649
982
|
return void 0;
|
|
650
983
|
}
|
|
651
|
-
function firstBoolean(
|
|
652
|
-
if (!
|
|
984
|
+
function firstBoolean(record2, keys) {
|
|
985
|
+
if (!record2) return void 0;
|
|
653
986
|
for (const key of keys) {
|
|
654
|
-
const value =
|
|
987
|
+
const value = record2[key];
|
|
655
988
|
if (typeof value === "boolean") return value;
|
|
656
989
|
}
|
|
657
990
|
return void 0;
|
|
@@ -855,8 +1188,10 @@ async function probeLlamaCppModelStatus(base, target, ctx) {
|
|
|
855
1188
|
const entries = await probeOpenAIModelEntries(base, ctx);
|
|
856
1189
|
const selected = selectedModelEntry(entries, target);
|
|
857
1190
|
if (!selected) return {};
|
|
1191
|
+
const loadState = modelStateFromOpenAIModelEntry({ id: selected.id, status: selected.status })?.state;
|
|
1192
|
+
const withState = (enrichment2) => loadState === void 0 ? enrichment2 : { ...enrichment2, loadState };
|
|
858
1193
|
const args = argsFromStatus(selected.status);
|
|
859
|
-
if (args.length === 0) return { notes: statusNotes(selected.id, selected.status) };
|
|
1194
|
+
if (args.length === 0) return withState({ notes: statusNotes(selected.id, selected.status) });
|
|
860
1195
|
const flags = parseLlamaCppServerFlags(args);
|
|
861
1196
|
const caps = {};
|
|
862
1197
|
const window = llamaCppRequestContextWindow(flags);
|
|
@@ -877,7 +1212,7 @@ async function probeLlamaCppModelStatus(base, target, ctx) {
|
|
|
877
1212
|
);
|
|
878
1213
|
}
|
|
879
1214
|
if (notes.length > 0) enrichment.notes = notes;
|
|
880
|
-
return enrichment;
|
|
1215
|
+
return withState(enrichment);
|
|
881
1216
|
}
|
|
882
1217
|
async function detectModelMismatch(base, target, ctx) {
|
|
883
1218
|
const expected = target.defaultModel?.trim();
|
|
@@ -1797,7 +2132,8 @@ var llamacppRuntime = {
|
|
|
1797
2132
|
const health = await (ctx.signal ? probeHttp({ ...healthOpts, signal: ctx.signal }) : probeHttp(healthOpts));
|
|
1798
2133
|
if (!health.ok) return health;
|
|
1799
2134
|
const status = await probeLlamaCppModelStatus(base, target, ctx);
|
|
1800
|
-
const
|
|
2135
|
+
const resident = status.loadState === void 0 || status.loadState === "loaded";
|
|
2136
|
+
const props = await probeLlamaCppProps(base, ctx, resident ? status.modelId ?? target.defaultModel : void 0);
|
|
1801
2137
|
const catalog = await probeOpenAIModelCatalog(base, ctx);
|
|
1802
2138
|
const result = { ok: true };
|
|
1803
2139
|
if (catalog.models.length > 0) result.models = catalog.models;
|
|
@@ -2542,8 +2878,8 @@ function lmStudioReasoningLevels(options) {
|
|
|
2542
2878
|
return [...new Set(levels)];
|
|
2543
2879
|
}
|
|
2544
2880
|
function lmStudioReasoningEffort(level, options) {
|
|
2881
|
+
if (options?.includes("on") && options.includes("off")) return level === "off" ? "none" : void 0;
|
|
2545
2882
|
if (level === "off") return "none";
|
|
2546
|
-
if (options?.includes("on") && !options.includes("medium") && !options.includes("high")) return "low";
|
|
2547
2883
|
if (level === "medium" && options?.includes("medium") !== false) return "medium";
|
|
2548
2884
|
if ((level === "high" || level === "xhigh" || level === "max") && options?.includes("high") !== false) return "high";
|
|
2549
2885
|
return "low";
|
|
@@ -2982,7 +3318,7 @@ var defaultCapabilities25 = {
|
|
|
2982
3318
|
embeddings: false,
|
|
2983
3319
|
rerank: false,
|
|
2984
3320
|
fim: false,
|
|
2985
|
-
structuredOutputs: "
|
|
3321
|
+
structuredOutputs: "none",
|
|
2986
3322
|
contextWindow: CLIO_MIN_CONTEXT_WINDOW,
|
|
2987
3323
|
maxTokens: CLIO_MIN_MAX_OUTPUT_TOKENS
|
|
2988
3324
|
};
|
|
@@ -3007,6 +3343,8 @@ function boolean(value) {
|
|
|
3007
3343
|
}
|
|
3008
3344
|
function capabilitiesFromLiteLLMModelInfo(info) {
|
|
3009
3345
|
const caps = {};
|
|
3346
|
+
if (info.runtime === "lm-studio") caps.thinkingControlRuntime = "lmstudio";
|
|
3347
|
+
else if (info.runtime === "llama.cpp") caps.thinkingControlRuntime = "llamacpp";
|
|
3010
3348
|
const contextWindow = positiveInteger(info.max_input_tokens) ?? positiveInteger(info.max_tokens);
|
|
3011
3349
|
if (contextWindow !== void 0) caps.contextWindow = contextWindow;
|
|
3012
3350
|
const maxTokens = positiveInteger(info.max_output_tokens);
|
|
@@ -3028,36 +3366,96 @@ function capabilitiesFromLiteLLMModelInfo(info) {
|
|
|
3028
3366
|
caps.rerank = true;
|
|
3029
3367
|
}
|
|
3030
3368
|
if (info.mode === "chat") caps.chat = true;
|
|
3031
|
-
|
|
3369
|
+
const responseSchema = boolean(info.supports_response_schema);
|
|
3370
|
+
if (responseSchema !== void 0) caps.structuredOutputs = responseSchema ? "json-schema" : "none";
|
|
3032
3371
|
return caps;
|
|
3033
3372
|
}
|
|
3034
|
-
var
|
|
3373
|
+
var BOOLEAN_CAPABILITIES = [
|
|
3374
|
+
"chat",
|
|
3375
|
+
"tools",
|
|
3376
|
+
"reasoning",
|
|
3377
|
+
"vision",
|
|
3378
|
+
"audio",
|
|
3379
|
+
"embeddings",
|
|
3380
|
+
"rerank",
|
|
3381
|
+
"fim"
|
|
3382
|
+
];
|
|
3383
|
+
function aggregateLiteLLMCapabilities(rows) {
|
|
3384
|
+
if (rows.length === 0) return {};
|
|
3385
|
+
const aggregate = {};
|
|
3386
|
+
for (const key of ["contextWindow", "maxTokens"]) {
|
|
3387
|
+
const values = rows.map((row) => row[key]);
|
|
3388
|
+
if (values.every((value) => typeof value === "number")) {
|
|
3389
|
+
aggregate[key] = Math.min(...values);
|
|
3390
|
+
}
|
|
3391
|
+
}
|
|
3392
|
+
for (const key of BOOLEAN_CAPABILITIES) {
|
|
3393
|
+
const values = rows.map((row) => row[key]);
|
|
3394
|
+
if (values.some((value) => value === false)) aggregate[key] = false;
|
|
3395
|
+
else if (values.every((value) => value === true)) aggregate[key] = true;
|
|
3396
|
+
}
|
|
3397
|
+
const controlRuntime = rows[0]?.thinkingControlRuntime;
|
|
3398
|
+
if (controlRuntime !== void 0 && rows.every((row) => row.thinkingControlRuntime === controlRuntime)) {
|
|
3399
|
+
aggregate.thinkingControlRuntime = controlRuntime;
|
|
3400
|
+
}
|
|
3401
|
+
const structuredOutputs = rows.map((row) => row.structuredOutputs);
|
|
3402
|
+
if (structuredOutputs.some((value) => value === "none")) aggregate.structuredOutputs = "none";
|
|
3403
|
+
else if (structuredOutputs.every((value) => value === "json-schema")) aggregate.structuredOutputs = "json-schema";
|
|
3404
|
+
return aggregate;
|
|
3405
|
+
}
|
|
3406
|
+
var EMPTY_CATALOG = {
|
|
3407
|
+
models: [],
|
|
3408
|
+
modelCapabilities: {},
|
|
3409
|
+
modelStates: {},
|
|
3410
|
+
deployments: {},
|
|
3411
|
+
authFailed: false
|
|
3412
|
+
};
|
|
3413
|
+
function isAuthError(leg) {
|
|
3414
|
+
return !leg.ok && /^HTTP 40[13]\b/u.test(leg.error ?? "");
|
|
3415
|
+
}
|
|
3035
3416
|
async function fetchCatalog(base, ctx, headers) {
|
|
3036
3417
|
const detailOpts = { url: `${base}/v1/model/info`, timeoutMs: ctx.httpTimeoutMs, headers };
|
|
3037
3418
|
const detail = await (ctx.signal ? probeJson({ ...detailOpts, signal: ctx.signal }) : probeJson(detailOpts));
|
|
3038
3419
|
if (detail.ok && Array.isArray(detail.data?.data)) {
|
|
3039
|
-
const catalog = {
|
|
3420
|
+
const catalog = {
|
|
3421
|
+
models: [],
|
|
3422
|
+
modelCapabilities: {},
|
|
3423
|
+
modelStates: {},
|
|
3424
|
+
deployments: {},
|
|
3425
|
+
authFailed: false
|
|
3426
|
+
};
|
|
3427
|
+
const capabilityRows = {};
|
|
3040
3428
|
for (const row of detail.data.data) {
|
|
3041
3429
|
if (typeof row?.model_name !== "string" || row.model_name.length === 0) continue;
|
|
3042
3430
|
const alias = row.model_name;
|
|
3043
|
-
if (catalog.deployments[alias]
|
|
3044
|
-
|
|
3431
|
+
if (catalog.deployments[alias] === void 0) {
|
|
3432
|
+
catalog.models.push(alias);
|
|
3433
|
+
catalog.deployments[alias] = [];
|
|
3434
|
+
capabilityRows[alias] = [];
|
|
3435
|
+
}
|
|
3045
3436
|
const caps = row.model_info ? capabilitiesFromLiteLLMModelInfo(row.model_info) : {};
|
|
3046
|
-
|
|
3437
|
+
capabilityRows[alias]?.push(caps);
|
|
3047
3438
|
const upstream = row.litellm_params?.model;
|
|
3048
3439
|
const apiBase = row.litellm_params?.api_base;
|
|
3049
|
-
catalog.deployments[alias]
|
|
3440
|
+
catalog.deployments[alias]?.push({
|
|
3050
3441
|
model: typeof upstream === "string" ? upstream : alias,
|
|
3051
3442
|
...typeof apiBase === "string" ? { apiBase } : {}
|
|
3052
|
-
};
|
|
3443
|
+
});
|
|
3444
|
+
}
|
|
3445
|
+
for (const alias of catalog.models) {
|
|
3446
|
+
const caps = aggregateLiteLLMCapabilities(capabilityRows[alias] ?? []);
|
|
3447
|
+
if (Object.keys(caps).length > 0) catalog.modelCapabilities[alias] = caps;
|
|
3053
3448
|
}
|
|
3054
3449
|
if (catalog.models.length > 0) return catalog;
|
|
3055
3450
|
}
|
|
3451
|
+
const detailAuthFailed = isAuthError(detail);
|
|
3056
3452
|
const listOpts = { url: `${base}/v1/models`, timeoutMs: ctx.httpTimeoutMs, headers };
|
|
3057
3453
|
const list = await (ctx.signal ? probeJson({ ...listOpts, signal: ctx.signal }) : probeJson(listOpts));
|
|
3058
|
-
if (!list.ok || !Array.isArray(list.data?.data))
|
|
3454
|
+
if (!list.ok || !Array.isArray(list.data?.data)) {
|
|
3455
|
+
return { ...EMPTY_CATALOG, authFailed: detailAuthFailed || isAuthError(list) };
|
|
3456
|
+
}
|
|
3059
3457
|
const models = list.data.data.map((row) => typeof row?.id === "string" ? row.id : null).filter((id) => id !== null && id.length > 0);
|
|
3060
|
-
return { models, modelCapabilities: {}, modelStates: {}, deployments: {} };
|
|
3458
|
+
return { models, modelCapabilities: {}, modelStates: {}, deployments: {}, authFailed: false };
|
|
3061
3459
|
}
|
|
3062
3460
|
var litellmRuntime = {
|
|
3063
3461
|
id: "litellm",
|
|
@@ -3078,8 +3476,9 @@ var litellmRuntime = {
|
|
|
3078
3476
|
if (catalog.models.length === 0) {
|
|
3079
3477
|
const result2 = {
|
|
3080
3478
|
ok: false,
|
|
3081
|
-
error: "gateway is live but served no model catalog; check the target's API key"
|
|
3479
|
+
error: catalog.authFailed ? "gateway rejected the key" : "gateway is live but served no model catalog; check the target's API key"
|
|
3082
3480
|
};
|
|
3481
|
+
if (catalog.authFailed) result2.authFailed = true;
|
|
3083
3482
|
if (live.latencyMs !== void 0) result2.latencyMs = live.latencyMs;
|
|
3084
3483
|
return result2;
|
|
3085
3484
|
}
|
|
@@ -3099,7 +3498,18 @@ var litellmRuntime = {
|
|
|
3099
3498
|
if (configured && !catalog.models.includes(configured)) {
|
|
3100
3499
|
notes.push(`configured model '${configured}' is not in the gateway catalog`);
|
|
3101
3500
|
}
|
|
3102
|
-
const
|
|
3501
|
+
const routeEntries = Object.entries(catalog.deployments);
|
|
3502
|
+
const physical = routeEntries.filter(([alias, deployments]) => {
|
|
3503
|
+
const slash = alias.indexOf("/");
|
|
3504
|
+
if (slash <= 0 || deployments.length !== 1) return false;
|
|
3505
|
+
const upstream = deployments[0]?.model.replace(/^openai\//u, "");
|
|
3506
|
+
return upstream === alias.slice(slash + 1);
|
|
3507
|
+
});
|
|
3508
|
+
if (physical.length > 0) notes.push(`physical routes: ${physical.length} node/model names map one-to-one`);
|
|
3509
|
+
const routed = routeEntries.filter(([alias]) => !physical.some(([physicalAlias]) => physicalAlias === alias)).map(([alias, deployments]) => {
|
|
3510
|
+
const models = [...new Set(deployments.map((deployment) => deployment.model))];
|
|
3511
|
+
return `${alias}=${models.join("|")}`;
|
|
3512
|
+
}).sort();
|
|
3103
3513
|
if (routed.length > 0) notes.push(`routes: ${routed.join(", ")}`);
|
|
3104
3514
|
if (notes.length > 0) result.notes = notes;
|
|
3105
3515
|
return result;
|
|
@@ -3167,9 +3577,14 @@ function registerBuiltinRuntimes(registry) {
|
|
|
3167
3577
|
}
|
|
3168
3578
|
|
|
3169
3579
|
export {
|
|
3580
|
+
isHarmonyModelId,
|
|
3581
|
+
inferLocalModelFamily,
|
|
3170
3582
|
CLIO_MIN_CONTEXT_WINDOW,
|
|
3171
3583
|
CLIO_MIN_MAX_OUTPUT_TOKENS,
|
|
3172
3584
|
CLIO_CONTEXT_WINDOW_WARN_BELOW,
|
|
3585
|
+
EMPTY_CAPABILITIES,
|
|
3586
|
+
VALID_THINKING_LEVELS,
|
|
3587
|
+
availableThinkingLevels,
|
|
3173
3588
|
extractLocalModelQuirks,
|
|
3174
3589
|
lmStudioRootUrl,
|
|
3175
3590
|
requestLmStudioJson,
|
|
@@ -3177,8 +3592,9 @@ export {
|
|
|
3177
3592
|
lmStudioReasoningEffort,
|
|
3178
3593
|
listLmStudioModels,
|
|
3179
3594
|
greetLmStudio,
|
|
3595
|
+
boundedExternalDiagnostic,
|
|
3180
3596
|
formatContextWindowSlots,
|
|
3181
3597
|
BUILTIN_RUNTIMES,
|
|
3182
3598
|
registerBuiltinRuntimes
|
|
3183
3599
|
};
|
|
3184
|
-
//# sourceMappingURL=chunk-
|
|
3600
|
+
//# sourceMappingURL=chunk-VW6DOEDG.js.map
|