@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
|
@@ -273,6 +273,34 @@ function appendThinkingDiagnostics(
|
|
|
273
273
|
diagnostics.push(diagnostic(severity, `thinking-${thinking.noticeKind}`, thinking.notice));
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
+
const CHAT_TEMPLATE_KWARGS_UNDELIVERABLE = "chat-template-kwargs-undeliverable";
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* One warning when the family declares chat-template kwargs the runtime
|
|
280
|
+
* cannot carry (#268). LM Studio ignores `chat_template_kwargs` for every
|
|
281
|
+
* family measured, so a Nemotron 3.5 target on that runtime runs without the
|
|
282
|
+
* `force_nonempty_content` its card asks for; the operator sees that once per
|
|
283
|
+
* target and model rather than finding the key silently missing from the wire.
|
|
284
|
+
*/
|
|
285
|
+
function appendChatTemplateKwargsDiagnostics(
|
|
286
|
+
diagnostics: RuntimeResolutionDiagnostic[],
|
|
287
|
+
resolved: ResolvedModelRuntimeCapabilities,
|
|
288
|
+
): void {
|
|
289
|
+
const undeliverable = resolved.request.undeliverableChatTemplateKwargs;
|
|
290
|
+
if (!undeliverable || undeliverable.keys.length === 0) return;
|
|
291
|
+
const keys = undeliverable.keys.join(", ");
|
|
292
|
+
const declared = undeliverable.declaredUnsupported
|
|
293
|
+
? "its family entry marks them unsupported there"
|
|
294
|
+
: "its family entry does not say so";
|
|
295
|
+
diagnostics.push(
|
|
296
|
+
diagnostic(
|
|
297
|
+
"warning",
|
|
298
|
+
CHAT_TEMPLATE_KWARGS_UNDELIVERABLE,
|
|
299
|
+
`chat-template kwargs ${keys} cannot reach ${resolved.runtimeId}, which ignores chat_template_kwargs; ${resolved.modelId} runs without them and ${declared}`,
|
|
300
|
+
),
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
276
304
|
function nonNegativeFiniteNumber(value: unknown): number | undefined {
|
|
277
305
|
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
|
|
278
306
|
}
|
|
@@ -447,6 +475,7 @@ export function resolveRuntimeTarget(
|
|
|
447
475
|
const decisions = capabilityDecisions(runtime, capabilities);
|
|
448
476
|
appendCapabilityDiagnostics(diagnostics, input, capabilities, decisions, targetId);
|
|
449
477
|
appendThinkingDiagnostics(diagnostics, modelRuntime, requestedThinkingLevel);
|
|
478
|
+
appendChatTemplateKwargsDiagnostics(diagnostics, modelRuntime);
|
|
450
479
|
|
|
451
480
|
if (hasError(diagnostics)) return { ok: false, diagnostics };
|
|
452
481
|
|
|
@@ -493,6 +522,7 @@ function withoutStaleRuntimeDiagnostics(
|
|
|
493
522
|
): RuntimeResolutionDiagnostic[] {
|
|
494
523
|
return diagnostics.filter((entry) => {
|
|
495
524
|
if (entry.code.startsWith("thinking-")) return false;
|
|
525
|
+
if (entry.code === CHAT_TEMPLATE_KWARGS_UNDELIVERABLE) return false;
|
|
496
526
|
if (entry.code === "output-budget-unknown" && decisions.maxTokens > 0) return false;
|
|
497
527
|
if (entry.code === "tools-unsupported" && decisions.tools) return false;
|
|
498
528
|
return true;
|
|
@@ -545,6 +575,7 @@ export function refineRuntimeTargetWithModelHints(
|
|
|
545
575
|
const decisions = capabilityDecisions(target.runtime, capabilities);
|
|
546
576
|
const diagnostics = withoutStaleRuntimeDiagnostics(target.diagnostics, decisions);
|
|
547
577
|
appendThinkingDiagnostics(diagnostics, modelRuntime, target.requestedThinkingLevel);
|
|
578
|
+
appendChatTemplateKwargsDiagnostics(diagnostics, modelRuntime);
|
|
548
579
|
return {
|
|
549
580
|
...target,
|
|
550
581
|
capabilities,
|
|
@@ -1,78 +1,258 @@
|
|
|
1
|
+
import { boundedExternalDiagnostic } from "../../../../core/external-diagnostic.js";
|
|
2
|
+
import { runCommandVector, type SafeCommandResult } from "../../../../core/safe-exec.js";
|
|
1
3
|
import type { Api, Model } from "../../../../engine/types.js";
|
|
2
4
|
|
|
3
5
|
import { synthesizeCatalogBackedModel } from "../../catalog.js";
|
|
4
6
|
import type { CapabilityFlags } from "../../types/capability-flags.js";
|
|
5
7
|
import type { KnowledgeBaseHit } from "../../types/knowledge-base.js";
|
|
6
|
-
import type { RuntimeDescriptor } from "../../types/runtime-descriptor.js";
|
|
8
|
+
import type { ProbeContext, ProbeResult, RuntimeDescriptor } from "../../types/runtime-descriptor.js";
|
|
7
9
|
import type { TargetDescriptor } from "../../types/target-descriptor.js";
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
|
-
* Antigravity CLI (`agy`)
|
|
12
|
+
* Antigravity CLI (`agy`) external delegation runtime.
|
|
11
13
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* models, up to ~1M tokens of context) to the Clio worker fleet.
|
|
17
|
-
*
|
|
18
|
-
* `agy --print` prints plain text (there is no structured event stream), so the
|
|
19
|
-
* worker runner cannot mediate individual agy tool calls the way the Claude SDK
|
|
20
|
-
* runner does. Permission gating is coarse: `--mode plan --sandbox` for
|
|
21
|
-
* read-only runs and `--dangerously-skip-permissions` only under `full-auto`
|
|
22
|
-
* plus the explicit `CLIO_CODER_ALLOW_EXTERNAL_FULL_ACCESS=1` environment gate.
|
|
23
|
-
* agy's own `settings.json` still governs modes that Clio does not explicitly
|
|
24
|
-
* constrain.
|
|
14
|
+
* This is deliberately a dispatch-only subprocess, not a Gemini inference
|
|
15
|
+
* provider. The installed official CLI owns authentication, its agent loop,
|
|
16
|
+
* tools, network access, and model access. Clio supplies one bounded work order
|
|
17
|
+
* and translates the documented structured result into a worker result.
|
|
25
18
|
*/
|
|
26
19
|
|
|
27
20
|
export const ANTIGRAVITY_AUTH_NOTICE =
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"but cannot mediate individual agy tool calls.";
|
|
21
|
+
"Experimental local delegation through your installed Antigravity (`agy`) CLI. Clio neither signs in nor stores " +
|
|
22
|
+
"or inspects Antigravity credentials. Run `agy` yourself and complete sign-in before probing this target.";
|
|
31
23
|
|
|
32
|
-
//
|
|
33
|
-
//
|
|
24
|
+
// Hints only until an account returns a live catalog. They are never used to
|
|
25
|
+
// validate a model after a successful live probe.
|
|
34
26
|
export const ANTIGRAVITY_MODELS: ReadonlyArray<string> = [
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"Claude Sonnet 4.6 (Thinking)",
|
|
41
|
-
"Claude Opus 4.6 (Thinking)",
|
|
42
|
-
"GPT-OSS 120B (Medium)",
|
|
27
|
+
"gemini-3.8-flash-high",
|
|
28
|
+
"gemini-3.8-flash-medium",
|
|
29
|
+
"gemini-3.8-flash-low",
|
|
30
|
+
"gemini-3.1-pro-high",
|
|
31
|
+
"gemini-3.1-pro-low",
|
|
43
32
|
];
|
|
44
33
|
|
|
34
|
+
/** Typed Clio capabilities only. Antigravity's own opaque tools are declared separately. */
|
|
45
35
|
export const antigravityCapabilities: CapabilityFlags = {
|
|
46
36
|
chat: true,
|
|
47
|
-
tools:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
vision: true,
|
|
37
|
+
tools: false,
|
|
38
|
+
reasoning: false,
|
|
39
|
+
vision: false,
|
|
51
40
|
audio: false,
|
|
52
41
|
embeddings: false,
|
|
53
42
|
rerank: false,
|
|
54
43
|
fim: false,
|
|
55
|
-
contextWindow:
|
|
56
|
-
maxTokens:
|
|
44
|
+
contextWindow: 0,
|
|
45
|
+
maxTokens: 0,
|
|
57
46
|
};
|
|
58
47
|
|
|
48
|
+
export const ANTIGRAVITY_MAX_CATALOG_BYTES = 1024 * 1024;
|
|
49
|
+
export const ANTIGRAVITY_MAX_DISCOVERED_MODELS = 4096;
|
|
50
|
+
const MAX_MODEL_ID_CHARS = 1024;
|
|
51
|
+
const MAX_MODEL_LABEL_CHARS = 1024;
|
|
52
|
+
|
|
53
|
+
type AntigravityProbeFailureKind = NonNullable<ProbeResult["failureKind"]>;
|
|
54
|
+
|
|
55
|
+
class AntigravityCatalogError extends Error {
|
|
56
|
+
readonly kind: AntigravityProbeFailureKind;
|
|
57
|
+
|
|
58
|
+
constructor(kind: AntigravityProbeFailureKind, message: string) {
|
|
59
|
+
super(message);
|
|
60
|
+
this.name = "AntigravityCatalogError";
|
|
61
|
+
this.kind = kind;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function record(value: unknown): Record<string, unknown> | null {
|
|
66
|
+
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
67
|
+
? (value as Record<string, unknown>)
|
|
68
|
+
: null;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface AntigravityModelCatalog {
|
|
72
|
+
models: string[];
|
|
73
|
+
labels: Record<string, string>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Decode the machine-readable catalog emitted by `agy --output-format json models`. */
|
|
77
|
+
export function parseAntigravityModelCatalogDetails(output: string): AntigravityModelCatalog {
|
|
78
|
+
let decoded: unknown;
|
|
79
|
+
try {
|
|
80
|
+
decoded = JSON.parse(output);
|
|
81
|
+
} catch {
|
|
82
|
+
throw new AntigravityCatalogError(
|
|
83
|
+
"unsupported-feature",
|
|
84
|
+
"agy returned an unreadable model catalog; update the Antigravity CLI and retry",
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
const envelope = record(decoded);
|
|
88
|
+
const command = record(envelope?.command);
|
|
89
|
+
const data = record(command?.data);
|
|
90
|
+
if (envelope?.status !== "SUCCESS") {
|
|
91
|
+
const detail = boundedExternalDiagnostic(
|
|
92
|
+
typeof envelope?.error === "string"
|
|
93
|
+
? envelope.error
|
|
94
|
+
: typeof command?.error === "string"
|
|
95
|
+
? command.error
|
|
96
|
+
: "agy could not list models",
|
|
97
|
+
);
|
|
98
|
+
const kind = classifyAntigravityDiagnostic(detail);
|
|
99
|
+
throw new AntigravityCatalogError(kind, antigravityProbeMessage(kind, detail));
|
|
100
|
+
}
|
|
101
|
+
if (command?.name !== "models" || !Array.isArray(data?.models)) {
|
|
102
|
+
throw new AntigravityCatalogError(
|
|
103
|
+
"unsupported-feature",
|
|
104
|
+
"agy returned an unsupported model catalog; update the Antigravity CLI and retry",
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
if (data.models.length === 0) {
|
|
108
|
+
throw new AntigravityCatalogError(
|
|
109
|
+
"catalog-unavailable",
|
|
110
|
+
"agy returned no available models; run `agy` locally and verify the signed-in account has model access",
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
if (data.models.length > ANTIGRAVITY_MAX_DISCOVERED_MODELS) {
|
|
114
|
+
throw new AntigravityCatalogError(
|
|
115
|
+
"catalog-unavailable",
|
|
116
|
+
`agy returned more than ${ANTIGRAVITY_MAX_DISCOVERED_MODELS} models; the authoritative catalog was refused rather than truncated`,
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const models: string[] = [];
|
|
121
|
+
const labels: Record<string, string> = {};
|
|
122
|
+
const seen = new Set<string>();
|
|
123
|
+
for (const value of data.models) {
|
|
124
|
+
const model = record(value);
|
|
125
|
+
const id = typeof model?.id === "string" ? model.id.trim() : "";
|
|
126
|
+
const label = typeof model?.label === "string" ? model.label.trim() : "";
|
|
127
|
+
if (id.length === 0 || id.length > MAX_MODEL_ID_CHARS || /[\r\n\0]/u.test(id)) {
|
|
128
|
+
throw new AntigravityCatalogError("catalog-unavailable", "agy returned an invalid model identifier");
|
|
129
|
+
}
|
|
130
|
+
if (label.length === 0 || label.length > MAX_MODEL_LABEL_CHARS || /[\r\n\0]/u.test(label)) {
|
|
131
|
+
throw new AntigravityCatalogError("catalog-unavailable", `agy returned an invalid label for model '${id}'`);
|
|
132
|
+
}
|
|
133
|
+
if (seen.has(id)) {
|
|
134
|
+
if (labels[id] !== label) {
|
|
135
|
+
throw new AntigravityCatalogError(
|
|
136
|
+
"catalog-unavailable",
|
|
137
|
+
`agy returned conflicting labels for duplicate model '${id}'`,
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
seen.add(id);
|
|
143
|
+
models.push(id);
|
|
144
|
+
labels[id] = label;
|
|
145
|
+
}
|
|
146
|
+
return { models, labels };
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function classifyAntigravityDiagnostic(detail: string): AntigravityProbeFailureKind {
|
|
150
|
+
if (/(?:enoent|not found|cannot find|could not start|spawn .*agy)/iu.test(detail)) return "missing";
|
|
151
|
+
if (/(?:sign[ -]?in|log[ -]?in|unauthori[sz]ed|authenticat|credential|account.*required)/iu.test(detail)) {
|
|
152
|
+
return "authentication";
|
|
153
|
+
}
|
|
154
|
+
if (
|
|
155
|
+
/(?:unknown|unsupported|unrecognized|invalid) (?:option|argument|command)|output-format|models command/iu.test(detail)
|
|
156
|
+
) {
|
|
157
|
+
return "unsupported-feature";
|
|
158
|
+
}
|
|
159
|
+
return "generic";
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function antigravityProbeMessage(kind: AntigravityProbeFailureKind, detail: string): string {
|
|
163
|
+
const safeDetail = boundedExternalDiagnostic(detail || "no diagnostic was provided");
|
|
164
|
+
switch (kind) {
|
|
165
|
+
case "missing":
|
|
166
|
+
return "Antigravity CLI is not installed or `agy` is not on PATH";
|
|
167
|
+
case "authentication":
|
|
168
|
+
return `Antigravity sign-in is required; run \`agy\` yourself and complete sign-in (${safeDetail})`;
|
|
169
|
+
case "unsupported-feature":
|
|
170
|
+
return `the installed Antigravity CLI does not expose the required structured model catalog; update \`agy\` (${safeDetail})`;
|
|
171
|
+
case "catalog-unavailable":
|
|
172
|
+
return safeDetail;
|
|
173
|
+
case "cancelled":
|
|
174
|
+
return "Antigravity model discovery was cancelled";
|
|
175
|
+
default:
|
|
176
|
+
return `Antigravity model discovery failed: ${safeDetail}`;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export async function probeAntigravityModelCatalog(
|
|
181
|
+
ctx: ProbeContext,
|
|
182
|
+
runner: typeof runCommandVector = runCommandVector,
|
|
183
|
+
): Promise<ProbeResult> {
|
|
184
|
+
const result: SafeCommandResult = await runner("agy", ["--output-format", "json", "models"], {
|
|
185
|
+
cwd: process.cwd(),
|
|
186
|
+
workspaceRoot: process.cwd(),
|
|
187
|
+
timeoutMs: Math.max(1, ctx.httpTimeoutMs),
|
|
188
|
+
maxOutputBytes: ANTIGRAVITY_MAX_CATALOG_BYTES,
|
|
189
|
+
...(ctx.signal ? { signal: ctx.signal } : {}),
|
|
190
|
+
});
|
|
191
|
+
if (result.aborted || result.timedOut) {
|
|
192
|
+
return {
|
|
193
|
+
ok: false,
|
|
194
|
+
latencyMs: result.durationMs,
|
|
195
|
+
failureKind: "cancelled",
|
|
196
|
+
error: antigravityProbeMessage("cancelled", ""),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
if (result.outputCapped) {
|
|
200
|
+
return {
|
|
201
|
+
ok: false,
|
|
202
|
+
latencyMs: result.durationMs,
|
|
203
|
+
failureKind: "catalog-unavailable",
|
|
204
|
+
error: `agy model catalog exceeded ${ANTIGRAVITY_MAX_CATALOG_BYTES} bytes`,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
if (result.exitCode !== 0) {
|
|
208
|
+
const detail = boundedExternalDiagnostic(result.stderr || result.stdout || `agy exited ${String(result.exitCode)}`);
|
|
209
|
+
const kind = classifyAntigravityDiagnostic(detail);
|
|
210
|
+
return { ok: false, latencyMs: result.durationMs, failureKind: kind, error: antigravityProbeMessage(kind, detail) };
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
const catalog = parseAntigravityModelCatalogDetails(result.stdout);
|
|
214
|
+
return {
|
|
215
|
+
ok: true,
|
|
216
|
+
latencyMs: result.durationMs,
|
|
217
|
+
models: catalog.models,
|
|
218
|
+
modelLabels: catalog.labels,
|
|
219
|
+
};
|
|
220
|
+
} catch (cause) {
|
|
221
|
+
const kind = cause instanceof AntigravityCatalogError ? cause.kind : "generic";
|
|
222
|
+
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
223
|
+
return { ok: false, latencyMs: result.durationMs, failureKind: kind, error: boundedExternalDiagnostic(detail) };
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
59
227
|
const antigravityCodeRuntime: RuntimeDescriptor = {
|
|
60
228
|
id: "antigravity-code",
|
|
61
|
-
displayName: "Antigravity CLI",
|
|
229
|
+
displayName: "Antigravity CLI — experimental local delegation",
|
|
62
230
|
kind: "subprocess",
|
|
63
231
|
tier: "subscription",
|
|
64
|
-
|
|
65
|
-
// to its own runner before any pi-ai inference, so this only needs to be a
|
|
66
|
-
// valid, google-backed family. The runner is selected by runtime id, and the
|
|
67
|
-
// plain-text parser is named by `outputParser`.
|
|
68
|
-
apiFamily: "google-generative-ai",
|
|
232
|
+
apiFamily: "external-agent-subprocess",
|
|
69
233
|
auth: "none",
|
|
70
234
|
authNotice: ANTIGRAVITY_AUTH_NOTICE,
|
|
71
235
|
knownModels: [...ANTIGRAVITY_MODELS],
|
|
72
236
|
binaryName: "agy",
|
|
73
|
-
headlessCommand: "agy --
|
|
74
|
-
outputParser: "antigravity-
|
|
237
|
+
headlessCommand: "agy --input-format stream-json --output-format stream-json",
|
|
238
|
+
outputParser: "antigravity-stream-json",
|
|
75
239
|
defaultCapabilities: antigravityCapabilities,
|
|
240
|
+
externalAgentLoop: {
|
|
241
|
+
tools: "externally-governed-unobserved",
|
|
242
|
+
network: "externally-governed-unobserved",
|
|
243
|
+
budget: "external-one-shot",
|
|
244
|
+
generatingRetry: "forbidden",
|
|
245
|
+
modelCatalog: "live-authoritative",
|
|
246
|
+
},
|
|
247
|
+
async probe(_target: TargetDescriptor, ctx: ProbeContext) {
|
|
248
|
+
try {
|
|
249
|
+
return await probeAntigravityModelCatalog(ctx);
|
|
250
|
+
} catch (cause) {
|
|
251
|
+
const detail = boundedExternalDiagnostic(cause instanceof Error ? cause.message : String(cause));
|
|
252
|
+
const kind = classifyAntigravityDiagnostic(detail);
|
|
253
|
+
return { ok: false, failureKind: kind, error: antigravityProbeMessage(kind, detail) };
|
|
254
|
+
}
|
|
255
|
+
},
|
|
76
256
|
synthesizeModel(target: TargetDescriptor, wireModelId: string, kb: KnowledgeBaseHit | null): Model<Api> {
|
|
77
257
|
return synthesizeCatalogBackedModel({
|
|
78
258
|
target,
|
|
@@ -80,9 +260,9 @@ const antigravityCodeRuntime: RuntimeDescriptor = {
|
|
|
80
260
|
kb,
|
|
81
261
|
defaultCapabilities: antigravityCapabilities,
|
|
82
262
|
runtimeId: "antigravity-code",
|
|
83
|
-
api: "
|
|
84
|
-
provider: "
|
|
85
|
-
defaultBaseUrl: "antigravity
|
|
263
|
+
api: "external-agent-subprocess",
|
|
264
|
+
provider: "antigravity",
|
|
265
|
+
defaultBaseUrl: "external-agent://antigravity/local",
|
|
86
266
|
});
|
|
87
267
|
},
|
|
88
268
|
};
|
|
@@ -300,9 +300,13 @@ export function lmStudioReasoningLevels(options: ReadonlyArray<string> | undefin
|
|
|
300
300
|
export function lmStudioReasoningEffort(
|
|
301
301
|
level: ThinkingLevel,
|
|
302
302
|
options?: ReadonlyArray<string>,
|
|
303
|
-
): "none" | "low" | "medium" | "high" {
|
|
303
|
+
): "none" | "low" | "medium" | "high" | undefined {
|
|
304
|
+
// `allowed_options` describes the model's binary setting, but LM Studio's
|
|
305
|
+
// OpenAI-compatible request schema still accepts only effort-level values.
|
|
306
|
+
// Omit an active override for binary/default-on models; sending `low` works
|
|
307
|
+
// only through a warning and sending the advertised literal `on` is a 400.
|
|
308
|
+
if (options?.includes("on") && options.includes("off")) return level === "off" ? "none" : undefined;
|
|
304
309
|
if (level === "off") return "none";
|
|
305
|
-
if (options?.includes("on") && !options.includes("medium") && !options.includes("high")) return "low";
|
|
306
310
|
if (level === "medium" && options?.includes("medium") !== false) return "medium";
|
|
307
311
|
if ((level === "high" || level === "xhigh" || level === "max") && options?.includes("high") !== false) return "high";
|
|
308
312
|
return "low";
|
|
@@ -24,6 +24,7 @@ export interface ClioLocalModelMetadata {
|
|
|
24
24
|
quirks?: LocalModelQuirks;
|
|
25
25
|
chatTemplateKwargsUnsupported?: boolean;
|
|
26
26
|
lmstudio?: TargetDescriptor["lmstudio"];
|
|
27
|
+
litellm?: TargetDescriptor["litellm"];
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -109,6 +110,7 @@ export function synthLocalModel(input: LocalSynthesisInput): Model<Api> {
|
|
|
109
110
|
...(kb?.entry.family ? { family: kb.entry.family } : {}),
|
|
110
111
|
...(quirks ? { quirks } : {}),
|
|
111
112
|
...(target.lmstudio ? { lmstudio: target.lmstudio } : {}),
|
|
113
|
+
...(target.litellm ? { litellm: target.litellm } : {}),
|
|
112
114
|
},
|
|
113
115
|
};
|
|
114
116
|
if (headers) model.headers = headers;
|
|
@@ -374,6 +374,8 @@ export interface LlamaCppStatusEnrichment {
|
|
|
374
374
|
modelId?: string;
|
|
375
375
|
serverFlags?: LlamaCppServerFlags;
|
|
376
376
|
notes?: string[];
|
|
377
|
+
/** The router's own load state for the selected model, when it reports one. */
|
|
378
|
+
loadState?: ProbeModelStatus["state"];
|
|
377
379
|
}
|
|
378
380
|
|
|
379
381
|
function argsFromStatus(status: unknown): string[] {
|
|
@@ -490,8 +492,11 @@ export async function probeLlamaCppModelStatus(
|
|
|
490
492
|
const entries = await probeOpenAIModelEntries(base, ctx);
|
|
491
493
|
const selected = selectedModelEntry(entries, target);
|
|
492
494
|
if (!selected) return {};
|
|
495
|
+
const loadState = modelStateFromOpenAIModelEntry({ id: selected.id, status: selected.status })?.state;
|
|
496
|
+
const withState = (enrichment: LlamaCppStatusEnrichment): LlamaCppStatusEnrichment =>
|
|
497
|
+
loadState === undefined ? enrichment : { ...enrichment, loadState };
|
|
493
498
|
const args = argsFromStatus(selected.status);
|
|
494
|
-
if (args.length === 0) return { notes: statusNotes(selected.id, selected.status) };
|
|
499
|
+
if (args.length === 0) return withState({ notes: statusNotes(selected.id, selected.status) });
|
|
495
500
|
const flags = parseLlamaCppServerFlags(args);
|
|
496
501
|
const caps: Partial<CapabilityFlags> = {};
|
|
497
502
|
const window = llamaCppRequestContextWindow(flags);
|
|
@@ -512,7 +517,7 @@ export async function probeLlamaCppModelStatus(
|
|
|
512
517
|
);
|
|
513
518
|
}
|
|
514
519
|
if (notes.length > 0) enrichment.notes = notes;
|
|
515
|
-
return enrichment;
|
|
520
|
+
return withState(enrichment);
|
|
516
521
|
}
|
|
517
522
|
|
|
518
523
|
/**
|
|
@@ -56,7 +56,15 @@ const llamacppRuntime: RuntimeDescriptor = {
|
|
|
56
56
|
const health = await (ctx.signal ? probeHttp({ ...healthOpts, signal: ctx.signal }) : probeHttp(healthOpts));
|
|
57
57
|
if (!health.ok) return health;
|
|
58
58
|
const status = await probeLlamaCppModelStatus(base, target, ctx);
|
|
59
|
-
|
|
59
|
+
// A router answers /props?model=<id> by loading that model, and with
|
|
60
|
+
// --models-max 1 that evicts whatever is resident: every probe of a
|
|
61
|
+
// fleet target's default model unloaded the chat model, so the next turn
|
|
62
|
+
// prefilled from zero (11,601 tokens, cache_n 0, on the round-3 resume
|
|
63
|
+
// run on mini). The router's model list already carries the worker's
|
|
64
|
+
// flags (--parallel, --ctx-size) for an unloaded model, so the worker is
|
|
65
|
+
// asked only when it is resident.
|
|
66
|
+
const resident = status.loadState === undefined || status.loadState === "loaded";
|
|
67
|
+
const props = await probeLlamaCppProps(base, ctx, resident ? (status.modelId ?? target.defaultModel) : undefined);
|
|
60
68
|
const catalog = await probeOpenAIModelCatalog(base, ctx);
|
|
61
69
|
const result: ProbeResult = { ok: true };
|
|
62
70
|
if (catalog.models.length > 0) result.models = catalog.models;
|