@iowarp/clio-coder 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/CONTRIBUTING.md +86 -19
- package/README.md +35 -6
- package/dist/{acp-TMDQZDIG.js → acp-H2NGRPWO.js} +11 -11
- package/dist/{agents-5N5NG3XG.js → agents-TL5LLUQP.js} +54 -53
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-Z5CCBXKQ.js → auth-E5SW4HMS.js} +19 -16
- package/dist/{builtins-K6TNDT24.js → builtins-IA7V7FUC.js} +9 -4
- package/dist/{chunk-ZW4HH5JJ.js → chunk-2APPQIER.js} +6 -6
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-UBRFI4HS.js → chunk-2UG5F4C5.js} +127 -47
- package/dist/{chunk-UH632ZYL.js → chunk-2UH2KFUP.js} +2 -2
- package/dist/{chunk-3F7VUY77.js → chunk-2VIKGWFZ.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-2X4RYJTJ.js → chunk-4UVU7BJ5.js} +2 -2
- package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-5KW52TEP.js → chunk-54CBCGIR.js} +5 -5
- package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-LJID3DYZ.js → chunk-64I3JVYM.js} +2 -2
- package/dist/{chunk-4JDLP6ZS.js → chunk-6PTFB5VS.js} +7 -7
- package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
- package/dist/{chunk-HLAFFSEK.js → chunk-7DRAWPTZ.js} +2 -2
- package/dist/chunk-7E7I3WLS.js +3762 -0
- package/dist/{chunk-YJISEZKC.js → chunk-7ZYNNDKC.js} +6 -6
- package/dist/{chunk-I66ZTYNP.js → chunk-AF4YM7Z4.js} +236 -101
- package/dist/{chunk-2HFQNRV3.js → chunk-AX2THNSA.js} +12 -12
- package/dist/{chunk-PGF63K6I.js → chunk-B4OAX3SI.js} +65 -3
- package/dist/{chunk-W6NIE6OW.js → chunk-B4VEBZKF.js} +3 -3
- package/dist/{chunk-JBCS7CRR.js → chunk-BEPZRGGU.js} +10 -10
- package/dist/{chunk-XGDPUNND.js → chunk-CE5AX47J.js} +2 -2
- package/dist/{chunk-I64IFBLB.js → chunk-DWUOQKRU.js} +17 -10
- package/dist/{chunk-DZAW46HP.js → chunk-E3TPLWFX.js} +3 -3
- package/dist/{chunk-HIICAHCJ.js → chunk-EKCHAPYA.js} +2 -2
- package/dist/{chunk-XE3PCIXH.js → chunk-F5JHEYZM.js} +7 -7
- package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
- package/dist/{chunk-ZNT2M6TG.js → chunk-G76U63X4.js} +17 -17
- package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
- package/dist/{chunk-2NHR3NAY.js → chunk-GI7YYQ3F.js} +40 -34
- package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/{chunk-W4YEMFBX.js → chunk-HEQY7ZFI.js} +2 -2
- package/dist/{chunk-IKOZFYBN.js → chunk-I7ZPNEJM.js} +145 -102
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
- package/dist/chunk-IJNZMHLA.js +101 -0
- package/dist/{chunk-JWJGP5DQ.js → chunk-INY6HTFL.js} +7 -7
- package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
- package/dist/{chunk-B74PXLU7.js → chunk-IWT4SF4R.js} +3 -3
- package/dist/{chunk-B7HM5Z7T.js → chunk-JDAY6FIL.js} +5 -5
- package/dist/{chunk-PJX3WQUQ.js → chunk-JEQ3XTHC.js} +2 -2
- package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
- package/dist/{chunk-X7IARSHT.js → chunk-JKKCYP3C.js} +9 -9
- package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
- package/dist/{chunk-SSEYRH53.js → chunk-KK4JZPBQ.js} +19 -140
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-Q4XWMHX6.js → chunk-L47TF46W.js} +2 -2
- package/dist/{chunk-O3YUNJZ2.js → chunk-LDJG7DW3.js} +81 -24
- package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
- package/dist/{chunk-F2I26BDK.js → chunk-MUW2BDDH.js} +4 -4
- package/dist/{chunk-HKMD33FO.js → chunk-MWUZBSAQ.js} +79 -76
- package/dist/{chunk-QQLGQY2A.js → chunk-N2Z7HLVY.js} +20 -20
- package/dist/{chunk-DZEK6CJN.js → chunk-NIQJ66N4.js} +19 -19
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
- package/dist/{chunk-TPEQIQIE.js → chunk-OML5D5V5.js} +8 -8
- package/dist/{chunk-IKSLQ4XV.js → chunk-PAJQJ7BS.js} +558 -216
- package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
- package/dist/{chunk-UH347SHR.js → chunk-QWGDJJYJ.js} +11 -11
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-CRFOIAX3.js → chunk-RRNP2ANY.js} +6 -6
- package/dist/{chunk-IDNA72AH.js → chunk-RSJ25QSL.js} +2 -2
- package/dist/chunk-SKHCAU7K.js +385 -0
- package/dist/{chunk-RLYRBIYQ.js → chunk-TM6LQDI3.js} +20 -12
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-P75RZCJW.js → chunk-UPZU6GE4.js} +3 -3
- package/dist/{chunk-MCMZMDAC.js → chunk-V2ANDPVT.js} +4 -4
- package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
- package/dist/{chunk-IMXMHHMQ.js → chunk-VW6DOEDG.js} +332 -57
- package/dist/{chunk-XOXV5GKE.js → chunk-W6RRQCPQ.js} +16 -7
- package/dist/{chunk-CYZW7JHJ.js → chunk-WBKFA554.js} +8 -8
- package/dist/{chunk-BO7Y52RY.js → chunk-WCXUNS7U.js} +7 -7
- package/dist/{chunk-ZGNYYXQ6.js → chunk-WRBAGUNF.js} +3 -3
- package/dist/{chunk-FVDGR2ZL.js → chunk-XIVNBFZS.js} +85 -30
- package/dist/{chunk-BYMNWQ7O.js → chunk-XPWWI35G.js} +299 -58
- package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
- package/dist/{chunk-AZ4WMN4W.js → chunk-Y3CBHOR6.js} +2 -2
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-54ODD65L.js → chunk-YQWYVTMC.js} +4 -4
- package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
- package/dist/{chunk-7BHIY2MW.js → chunk-ZDN3Y73Y.js} +6 -6
- package/dist/{chunk-E7GT7O5N.js → chunk-ZWPRK62N.js} +7 -4
- package/dist/cli/index.js +38 -37
- package/dist/{clio-7VB377CC.js → clio-CMMK4KRR.js} +7 -7
- package/dist/{code-nav-YVLCYA7V.js → code-nav-MDZNQS33.js} +7 -7
- package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
- package/dist/{config-4HVOS65E.js → config-SVM5P5YI.js} +76 -74
- package/dist/{configure-PIWO7B24.js → configure-LE3IK2TJ.js} +26 -24
- package/dist/{context-IYEHL3WQ.js → context-2OHRKS42.js} +66 -63
- package/dist/{context-N6ZE3LGJ.js → context-E3VC7RX5.js} +15 -11
- package/dist/{context-KQYIWPWT.js → context-VNCR7KAG.js} +60 -45
- package/dist/{context-clear-G4OGZJDS.js → context-clear-BW4O37TG.js} +61 -59
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-BWLF6LJP.js → context-working-set-VDS25HXZ.js} +17 -16
- package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-5AHT53RF.js} +85 -74
- package/dist/{doctor-LHBD36VU.js → doctor-WNNVO6FY.js} +37 -37
- package/dist/{eval-C45FYRJ6.js → eval-7G7SGAYO.js} +285 -114
- package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-6SHONYAF.js → evidence-VD6736FQ.js} +63 -62
- package/dist/{evolve-KRKMV72X.js → evolve-AL3NGVRL.js} +62 -61
- package/dist/{extensions-KPZ2UHBB.js → extensions-MOVJ32NM.js} +7 -7
- package/dist/{fleet-IVTCKDHT.js → fleet-QZHUMAGI.js} +110 -108
- package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-BAYT5FJZ.js} +10 -10
- package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-IREVMRU4.js} +7 -6
- package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-YCTT3HTI.js} +19 -18
- package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-QVJTDAVB.js} +55 -54
- package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-25QAFPK4.js} +4 -4
- package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-5O57AAJ7.js} +23 -22
- package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-CPH2W2T6.js} +56 -55
- package/dist/{fleet-view-TWHJKCN6.js → fleet-view-SWBR3VGQ.js} +55 -54
- package/dist/{init-T2QORQ3Y.js → init-J477LKZH.js} +78 -76
- package/dist/{interop-IN5I2A66.js → interop-3FCM6XLG.js} +11 -11
- package/dist/{library-LSCATDLZ.js → library-QUQEIUG6.js} +28 -27
- package/dist/{memory-HYOKAGGJ.js → memory-SGGSEP65.js} +64 -63
- package/dist/{models-2GPMFYCM.js → models-HEKUAXXK.js} +49 -43
- package/dist/{monitor-E4ASVUJH.js → monitor-HKU57TYQ.js} +61 -60
- package/dist/{orchestrator-DDMPR3PY.js → orchestrator-VDFAEFAI.js} +919 -546
- package/dist/{panes-E3RUXOW5.js → panes-DN2SSFOH.js} +3 -3
- package/dist/{panes-IXKLOKA2.js → panes-TALGNPZT.js} +8 -8
- package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
- package/dist/reset-EAJFFJVB.js +344 -0
- package/dist/{resources-OTRSN34L.js → resources-OVKSEFVE.js} +27 -20
- package/dist/{run-5DEYH5QK.js → run-7DP7ZF2J.js} +113 -109
- package/dist/{share-IHWTLO3M.js → share-WML67FT3.js} +26 -25
- package/dist/{skills-IYMXMKW4.js → skills-SG662R2K.js} +39 -31
- package/dist/{skills-eval-DROHSJAR.js → skills-eval-VVZEUU46.js} +74 -73
- package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-I2E23GET.js} +21 -20
- package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-S7MBJDQK.js} +35 -34
- package/dist/{steer-Z5DO23FJ.js → steer-2LQOMCPB.js} +3 -3
- package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
- package/dist/{targets-P2FUC4IL.js → targets-4QC3HIEW.js} +48 -45
- package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-TUHIJ6Y2.js} +2 -2
- package/dist/{tools-5B7RO6MV.js → tools-TFGJICCU.js} +8 -8
- package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
- package/dist/uninstall-5PEVOE5B.js +408 -0
- package/dist/upgrade-M4WXY6KN.js +303 -0
- package/dist/{usage-ME5MPXGX.js → usage-N7ZNVLEM.js} +147 -102
- package/dist/{verifiers-BVZ7IWOO.js → verifiers-DJTP4XX6.js} +15 -15
- package/dist/{verify-5K7ZKQFC.js → verify-RWE4PPEK.js} +9 -9
- package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-C7IQOXSP.js} +84 -82
- package/dist/{with-panes-BYOJCLAM.js → with-panes-4GCGSL7J.js} +9 -9
- package/dist/worker/entry.js +61 -60
- package/docs/architecture/artifact-placement.md +1 -0
- package/docs/architecture/artifact-versions.md +1 -1
- package/docs/architecture/context-engine.md +4 -0
- package/docs/architecture/middleware-and-components.md +1 -1
- package/docs/architecture/model-catalog.md +21 -10
- package/docs/architecture/observability.md +12 -1
- package/docs/architecture/prompt-envelope-and-tools.md +2 -0
- package/docs/architecture/provider-adapter-cookbook.md +63 -0
- package/docs/architecture/safety-model.md +15 -5
- package/docs/guide/built-in-agents.md +17 -3
- package/docs/guide/commands-and-modes.md +1 -1
- package/docs/guide/configuration-and-targets.md +97 -9
- package/docs/guide/configuration-reference.md +7 -2
- package/docs/guide/environment-variables.md +2 -0
- package/docs/guide/installation-and-lifecycle.md +37 -4
- package/docs/guide/proactive-memory.md +66 -55
- package/docs/guide/skills-marketplace.md +18 -0
- package/docs/process/development-pipeline.md +34 -1
- package/docs/process/eval-runner.md +67 -3
- package/evals/behavioral-model.yaml +3 -2
- package/package.json +2 -2
- package/skills/README.md +7 -5
- package/skills/coding/ast-grep/SKILL.md +101 -30
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +40 -5
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +87 -28
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +80 -53
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +43 -2
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +45 -15
- package/skills/context/context-prime/evals.md +45 -0
- package/skills/git/branch-closeout/SKILL.md +132 -0
- package/skills/git/branch-closeout/evals.md +133 -0
- package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
- package/skills/git/file-ticket/SKILL.md +77 -63
- package/skills/git/file-ticket/assets/issue-template.md +22 -0
- package/skills/git/file-ticket/evals.md +31 -26
- package/skills/git/file-ticket/references/issue-discovery.md +49 -0
- package/skills/git/fix-issue/SKILL.md +87 -64
- package/skills/git/fix-issue/evals.md +35 -31
- package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
- package/skills/git/resolve-merge-conflicts/evals.md +52 -25
- package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
- package/skills/git/ship/SKILL.md +103 -67
- package/skills/git/ship/assets/pr-template.md +21 -0
- package/skills/git/ship/evals.md +44 -28
- package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
- package/skills/git/worktree-create/SKILL.md +80 -50
- package/skills/git/worktree-create/evals.md +40 -33
- package/skills/git/worktree-create/references/worktree-setup.md +62 -66
- package/skills/git/worktree-merge/SKILL.md +112 -65
- package/skills/git/worktree-merge/evals.md +42 -34
- package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +61 -12
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +130 -14
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +46 -6
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +57 -2
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +53 -2
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +58 -50
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +76 -18
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +20 -1
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +23 -1
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +26 -1
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +63 -28
- package/skills/workflow/cut-it/SKILL.md +65 -5
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +117 -27
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +86 -10
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +76 -17
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/configure-interop.ts +105 -13
- package/src/cli/configure-oauth.ts +57 -0
- package/src/cli/configure-onboarding.ts +980 -0
- package/src/cli/configure-target.ts +594 -0
- package/src/cli/configure.ts +1082 -528
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- package/src/cli/index.ts +1 -0
- package/src/cli/lifecycle-presenter.ts +436 -0
- package/src/cli/models.ts +10 -2
- package/src/cli/modes/print.ts +5 -1
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +7 -2
- package/src/cli/select.ts +664 -0
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +3 -0
- package/src/cli/uninstall.ts +233 -165
- package/src/cli/upgrade.ts +204 -149
- package/src/cli/usage.ts +86 -27
- package/src/cli/validate-model.ts +3 -3
- package/src/core/config.ts +56 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +89 -2
- package/src/domains/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +1 -1
- package/src/domains/agents/result-contract.ts +70 -0
- package/src/domains/context/wiki/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/dispatch/admission.ts +29 -0
- package/src/domains/dispatch/agent-candidates.ts +10 -0
- package/src/domains/dispatch/budget-envelope.ts +86 -1
- package/src/domains/dispatch/capability-match.ts +1 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/contract.ts +11 -1
- package/src/domains/dispatch/extension.ts +134 -29
- package/src/domains/dispatch/types.ts +3 -0
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
- package/src/domains/eval/metrics/token-stream.ts +201 -31
- package/src/domains/eval/metrics/tracked.ts +40 -4
- package/src/domains/eval/runners/clio-run.ts +5 -2
- package/src/domains/eval/schema/suite.ts +28 -0
- package/src/domains/eval/schema/verdict.ts +2 -2
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- package/src/domains/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/index.ts +4 -0
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/index.ts +0 -1
- package/src/domains/middleware/marketplace-offer.ts +3 -35
- package/src/domains/middleware/memory-intervention.ts +127 -32
- package/src/domains/middleware/memory-step-endpoint.ts +3 -2
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/extension.ts +6 -1
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- package/src/domains/providers/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/model-capabilities.ts +9 -0
- package/src/domains/providers/model-discovery.ts +2 -0
- package/src/domains/providers/model-runtime-capabilities.ts +15 -5
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +32 -12
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
- package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
- package/src/domains/providers/support.ts +11 -5
- package/src/domains/providers/target-model-cache.ts +25 -2
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/runtime-descriptor.ts +20 -1
- package/src/domains/providers/types/target-descriptor.ts +19 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/install.ts +72 -7
- package/src/domains/resources/skills/loader.ts +7 -0
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/autonomy.ts +15 -0
- package/src/domains/safety/index.ts +1 -0
- package/src/domains/safety/path-policy.ts +1 -1
- package/src/domains/safety/policy-engine.ts +34 -11
- package/src/domains/safety/protected-artifacts.ts +191 -88
- package/src/domains/safety/run-effects.ts +2 -22
- package/src/domains/safety/skill-authority.ts +55 -0
- package/src/domains/session/compaction/compact.ts +72 -22
- package/src/domains/session/entries.ts +6 -0
- package/src/domains/session/usage.ts +3 -3
- package/src/engine/agent.ts +13 -3
- package/src/engine/ai.ts +26 -8
- package/src/engine/antigravity/subprocess-runtime.ts +386 -120
- package/src/engine/api-registry.ts +3 -0
- package/src/engine/apis/openai-completions.ts +117 -14
- package/src/engine/external-subprocess.ts +114 -6
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/orchestrator.ts +405 -216
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/chat-loop-messages.ts +13 -4
- package/src/interactive/chat-loop.ts +65 -2
- package/src/interactive/chat-renderer.ts +1 -0
- package/src/interactive/cost-overlay.ts +26 -2
- package/src/interactive/interactive-slash-runtime.ts +2 -1
- package/src/interactive/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-commands.ts +24 -6
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +9 -5
- package/src/interactive/turn-recovery.ts +8 -0
- package/src/interactive/turn-runtime.ts +27 -11
- package/src/interactive/turn-state.ts +7 -0
- package/src/interactive/worker-receipts.ts +1 -0
- package/src/interactive/worker-stream.ts +6 -1
- package/src/tools/context/index.ts +30 -9
- package/src/tools/dispatch-arguments.ts +1 -0
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +1 -0
- package/src/tools/dispatch-runner.ts +12 -0
- package/src/tools/registry.ts +11 -5
- package/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/chunk-2Z2IKEXI.js +0 -1554
- package/dist/reset-OAQP3W4O.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-PXK3S2YM.js +0 -325
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
artifactDefaultPath
|
|
4
|
+
} from "./chunk-GYV6VZOC.js";
|
|
2
5
|
import {
|
|
3
6
|
isVerificationScriptName
|
|
4
7
|
} from "./chunk-UL3WSD3F.js";
|
|
@@ -12,26 +15,13 @@ import {
|
|
|
12
15
|
init_esm_shims
|
|
13
16
|
} from "./chunk-3R73A4XB.js";
|
|
14
17
|
|
|
15
|
-
// src/core/artifact-paths.ts
|
|
16
|
-
init_esm_shims();
|
|
17
|
-
var CLIO_PROJECT_DIR = ".clio-coder";
|
|
18
|
-
var CLIO_ARTIFACT_DIR = `${CLIO_PROJECT_DIR}/artifacts`;
|
|
19
|
-
var KIND_FILENAMES = {
|
|
20
|
-
plan: "PLAN.md",
|
|
21
|
-
review: "REVIEW.md",
|
|
22
|
-
report: "REPORT.md"
|
|
23
|
-
};
|
|
24
|
-
var DEFAULT_FILENAME = KIND_FILENAMES.plan;
|
|
25
|
-
function artifactDefaultPath(kind) {
|
|
26
|
-
const filename = typeof kind === "string" ? KIND_FILENAMES[kind] ?? DEFAULT_FILENAME : DEFAULT_FILENAME;
|
|
27
|
-
return `${CLIO_ARTIFACT_DIR}/${filename}`;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
18
|
// src/domains/safety/protected-artifacts.ts
|
|
31
19
|
init_esm_shims();
|
|
32
20
|
import path from "node:path";
|
|
33
|
-
var COMMAND_SEPARATORS = /* @__PURE__ */ new Set([";", "&&", "||", "|"]);
|
|
21
|
+
var COMMAND_SEPARATORS = /* @__PURE__ */ new Set([";", "&", "&&", "||", "|"]);
|
|
34
22
|
var SHELL_WRAPPERS = /* @__PURE__ */ new Set(["command", "builtin", "sudo", "doas"]);
|
|
23
|
+
var SHELL_REDIRECTIONS = /* @__PURE__ */ new Set([">", ">>", "<", "<<", "<<<", "<&", ">&", "<>", ">|", "&>", "&>>"]);
|
|
24
|
+
var SHELL_WRITE_REDIRECTIONS = /* @__PURE__ */ new Set([">", ">>", ">&", "<>", ">|", "&>", "&>>"]);
|
|
35
25
|
function toolMutationPaths(toolName, args) {
|
|
36
26
|
if (toolName === ToolNames.Artifact) {
|
|
37
27
|
return [mutationPathArg(args) ?? artifactDefaultPath(args?.kind)];
|
|
@@ -79,9 +69,9 @@ function isProtectedPath(state, artifactPath) {
|
|
|
79
69
|
function classifyDestructiveCommand(command, protectedArtifacts) {
|
|
80
70
|
const artifacts = normalizedArtifacts(protectedArtifacts);
|
|
81
71
|
if (artifacts.length === 0) return { kind: "benign", matches: [] };
|
|
82
|
-
const tokens
|
|
83
|
-
|
|
84
|
-
const redirect = classifyRedirect(
|
|
72
|
+
for (const tokens of splitSegments(scanShellLike(command))) {
|
|
73
|
+
const segment = shellCommandArguments(tokens);
|
|
74
|
+
const redirect = classifyRedirect(tokens, artifacts);
|
|
85
75
|
if (redirect.kind === "destructive") return redirect;
|
|
86
76
|
const commandIndex = commandTokenIndex(segment);
|
|
87
77
|
if (commandIndex === null) continue;
|
|
@@ -141,8 +131,8 @@ function classifyDestructiveCommand(command, protectedArtifacts) {
|
|
|
141
131
|
return { kind: "benign", matches: [] };
|
|
142
132
|
}
|
|
143
133
|
function detectValidationCommand(command, scope = "finish-contract") {
|
|
144
|
-
const tokens
|
|
145
|
-
|
|
134
|
+
for (const tokens of splitSegments(scanShellLike(command))) {
|
|
135
|
+
const segment = shellCommandArguments(tokens);
|
|
146
136
|
const commandIndex = commandTokenIndex(segment);
|
|
147
137
|
if (commandIndex === null) continue;
|
|
148
138
|
const executable = basenameToken(segment[commandIndex]);
|
|
@@ -154,10 +144,11 @@ function detectValidationCommand(command, scope = "finish-contract") {
|
|
|
154
144
|
}
|
|
155
145
|
function extractCommandWriteTargets(command) {
|
|
156
146
|
const targets = [];
|
|
157
|
-
for (const segment of
|
|
147
|
+
for (const segment of expandedShellSegments(command)) {
|
|
158
148
|
collectRedirectTargets(segment, targets);
|
|
159
|
-
|
|
160
|
-
|
|
149
|
+
const argv = shellCommandArguments(segment);
|
|
150
|
+
collectInvokedWriteTargets(argv, targets);
|
|
151
|
+
collectInPlaceEditTargets(argv, targets);
|
|
161
152
|
}
|
|
162
153
|
return targets.filter(isInterestingWriteTarget);
|
|
163
154
|
}
|
|
@@ -179,27 +170,28 @@ function segmentShellScript(segment) {
|
|
|
179
170
|
}
|
|
180
171
|
return null;
|
|
181
172
|
}
|
|
182
|
-
function
|
|
183
|
-
const segments = splitSegments(
|
|
173
|
+
function expandedShellSegments(command, depth = 0) {
|
|
174
|
+
const segments = splitSegments(scanShellLike(command));
|
|
184
175
|
if (depth >= INNER_SHELL_MAX_DEPTH) return segments;
|
|
185
176
|
const out = [];
|
|
186
177
|
for (const segment of segments) {
|
|
187
178
|
out.push(segment);
|
|
188
|
-
const script = segmentShellScript(segment);
|
|
189
|
-
if (script !== null) out.push(...
|
|
179
|
+
const script = segmentShellScript(shellCommandArguments(segment));
|
|
180
|
+
if (script !== null) out.push(...expandedShellSegments(script, depth + 1));
|
|
190
181
|
}
|
|
191
182
|
return out;
|
|
192
183
|
}
|
|
193
184
|
function inlineShellScript(command) {
|
|
194
|
-
const segments = splitSegments(
|
|
185
|
+
const segments = splitSegments(scanShellLike(command));
|
|
195
186
|
if (segments.length !== 1) return null;
|
|
196
187
|
const segment = segments[0];
|
|
197
188
|
if (segment === void 0) return null;
|
|
198
|
-
return segmentShellScript(segment);
|
|
189
|
+
return segmentShellScript(shellCommandArguments(segment));
|
|
199
190
|
}
|
|
200
191
|
function extractCommandCdTargets(command) {
|
|
201
192
|
const targets = [];
|
|
202
|
-
for (const
|
|
193
|
+
for (const tokens of expandedShellSegments(command)) {
|
|
194
|
+
const segment = shellCommandArguments(tokens);
|
|
203
195
|
const commandIndex = commandTokenIndex(segment);
|
|
204
196
|
if (commandIndex === null) continue;
|
|
205
197
|
const executable = basenameToken(segment[commandIndex]);
|
|
@@ -211,7 +203,8 @@ function extractCommandCdTargets(command) {
|
|
|
211
203
|
}
|
|
212
204
|
function extractCommandDeleteTargets(command) {
|
|
213
205
|
const targets = [];
|
|
214
|
-
for (const
|
|
206
|
+
for (const tokens of expandedShellSegments(command)) {
|
|
207
|
+
const segment = shellCommandArguments(tokens);
|
|
215
208
|
const commandIndex = commandTokenIndex(segment);
|
|
216
209
|
if (commandIndex === null) continue;
|
|
217
210
|
const executable = basenameToken(segment[commandIndex]);
|
|
@@ -230,15 +223,85 @@ function extractCommandDeleteTargets(command) {
|
|
|
230
223
|
}
|
|
231
224
|
return targets.filter(isInterestingWriteTarget);
|
|
232
225
|
}
|
|
226
|
+
function invokesClioSkillMutation(command) {
|
|
227
|
+
for (const segment of expandedShellSegments(command)) {
|
|
228
|
+
const argv = shellCommandArguments(segment);
|
|
229
|
+
const index = commandTokenIndex(argv);
|
|
230
|
+
if (index === null) continue;
|
|
231
|
+
let args = argv.slice(index);
|
|
232
|
+
const executable = basenameToken(args[0]);
|
|
233
|
+
if (executable === "npx" || executable === "npm" && args[1] === "exec") {
|
|
234
|
+
args = args.slice(executable === "npm" ? 2 : 1);
|
|
235
|
+
while (args[0]?.startsWith("-")) args = args.slice(1);
|
|
236
|
+
}
|
|
237
|
+
const program = args[0] ?? "";
|
|
238
|
+
if (basenameToken(program) === "node" || basenameToken(program) === "tsx") {
|
|
239
|
+
if (!/(?:^|\/)(?:src|dist)\/cli\/index\.(?:js|ts)$/.test(args[1] ?? "")) continue;
|
|
240
|
+
args = args.slice(2);
|
|
241
|
+
} else if (/^(?:@iowarp\/)?clio-coder(?:@[^/]+)?$/.test(program) || basenameToken(program) === "clio-coder") {
|
|
242
|
+
args = args.slice(1);
|
|
243
|
+
} else continue;
|
|
244
|
+
if (args.includes("--version") || args.includes("-v")) continue;
|
|
245
|
+
let rootHelp = false;
|
|
246
|
+
let firstRootFlag;
|
|
247
|
+
while (args[0]?.startsWith("-")) {
|
|
248
|
+
const flag = args[0];
|
|
249
|
+
if (flag === "--all" || flag === "--help" || flag === "-h") firstRootFlag ??= flag;
|
|
250
|
+
rootHelp = firstRootFlag === "--help" || firstRootFlag === "-h";
|
|
251
|
+
args = args.slice(flag === "--skill" || flag === "--api-key" ? 2 : 1);
|
|
252
|
+
}
|
|
253
|
+
if (rootHelp) continue;
|
|
254
|
+
if (args[0] !== "skills" && args[0] !== "library") continue;
|
|
255
|
+
if (resourceCliMutatesSkills(args[0], args.slice(1))) return true;
|
|
256
|
+
}
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
function shellCommandArguments(segment) {
|
|
260
|
+
const args = [];
|
|
261
|
+
for (let index = 0; index < segment.length; index += 1) {
|
|
262
|
+
const token = segment[index];
|
|
263
|
+
if (token === void 0) continue;
|
|
264
|
+
if (token.operator && SHELL_REDIRECTIONS.has(token.value)) {
|
|
265
|
+
const previous = args.at(-1);
|
|
266
|
+
if (previous && previous.end === token.start && !previous.quoted && /^\d+$/.test(previous.value)) args.pop();
|
|
267
|
+
if (segment[index + 1]?.operator === false) index += 1;
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
args.push(token);
|
|
271
|
+
}
|
|
272
|
+
return args.map((token) => token.value);
|
|
273
|
+
}
|
|
274
|
+
function resourceCliMutatesSkills(resource, args) {
|
|
275
|
+
const valueOptions = resource === "skills" ? ["--name", "--category", "--scenario", "--target", "--workspace", "--timeout"] : ["--kind", "--from"];
|
|
276
|
+
let verb;
|
|
277
|
+
let confirmed = false;
|
|
278
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
279
|
+
const arg = args[index];
|
|
280
|
+
if (arg === void 0) continue;
|
|
281
|
+
if (valueOptions.includes(arg)) {
|
|
282
|
+
index += 1;
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
if (arg === "--help" || arg === "-h") return false;
|
|
286
|
+
if (arg === "--yes") confirmed = true;
|
|
287
|
+
if (!arg.startsWith("-")) verb ??= arg;
|
|
288
|
+
}
|
|
289
|
+
if (resource === "skills") return verb === "install" || verb === "update" || verb === "sync";
|
|
290
|
+
return verb === "add" && confirmed;
|
|
291
|
+
}
|
|
233
292
|
var STANDARD_DEV_TARGETS = /* @__PURE__ */ new Set(["/dev/null", "/dev/stdout", "/dev/stderr", "/dev/tty", "/dev/zero"]);
|
|
234
293
|
function collectRedirectTargets(segment, out) {
|
|
235
294
|
for (let index = 0; index < segment.length - 1; index += 1) {
|
|
236
|
-
const
|
|
237
|
-
if (
|
|
238
|
-
const target = segment[index + 1];
|
|
239
|
-
if (target !== void 0) out.push(target);
|
|
295
|
+
const target = redirectWriteTarget(segment[index], segment[index + 1]);
|
|
296
|
+
if (target !== null) out.push(target);
|
|
240
297
|
}
|
|
241
298
|
}
|
|
299
|
+
function redirectWriteTarget(operator, target) {
|
|
300
|
+
if (!operator?.operator || target === void 0 || target.operator || !SHELL_WRITE_REDIRECTIONS.has(operator.value))
|
|
301
|
+
return null;
|
|
302
|
+
if (operator.value === ">&" && /^(?:\d+-?|-)$/u.test(target.value)) return null;
|
|
303
|
+
return target.value;
|
|
304
|
+
}
|
|
242
305
|
function collectInvokedWriteTargets(segment, out) {
|
|
243
306
|
const cmdIndex = commandTokenIndex(segment);
|
|
244
307
|
if (cmdIndex === null) return;
|
|
@@ -274,7 +337,6 @@ function hasSedInPlaceFlag(segment, cmdIndex) {
|
|
|
274
337
|
for (let index = cmdIndex + 1; index < segment.length; index += 1) {
|
|
275
338
|
const token = segment[index];
|
|
276
339
|
if (token === void 0) continue;
|
|
277
|
-
if (COMMAND_SEPARATORS.has(token)) break;
|
|
278
340
|
if (token === "--") break;
|
|
279
341
|
if (token === "--in-place" || token.startsWith("--in-place=")) return true;
|
|
280
342
|
if (token.startsWith("--")) continue;
|
|
@@ -289,7 +351,6 @@ function sedFileOperands(segment, cmdIndex) {
|
|
|
289
351
|
for (let index = cmdIndex + 1; index < segment.length; index += 1) {
|
|
290
352
|
const token = segment[index];
|
|
291
353
|
if (token === void 0) continue;
|
|
292
|
-
if (COMMAND_SEPARATORS.has(token)) break;
|
|
293
354
|
if (!endOfOptions && token === "--") {
|
|
294
355
|
endOfOptions = true;
|
|
295
356
|
continue;
|
|
@@ -322,16 +383,15 @@ function sedFileOperands(segment, cmdIndex) {
|
|
|
322
383
|
}
|
|
323
384
|
function isInterestingWriteTarget(target) {
|
|
324
385
|
if (target.length === 0) return false;
|
|
325
|
-
if (target.startsWith("&")) return false;
|
|
326
386
|
if (STANDARD_DEV_TARGETS.has(target)) return false;
|
|
327
387
|
if (target.startsWith("/dev/fd/")) return false;
|
|
328
388
|
return true;
|
|
329
389
|
}
|
|
330
390
|
function classifyRedirect(segment, artifacts) {
|
|
331
391
|
for (let index = 0; index < segment.length; index += 1) {
|
|
332
|
-
if (segment[index]
|
|
333
|
-
const target = segment[index + 1];
|
|
334
|
-
if (target ===
|
|
392
|
+
if (segment[index]?.value === ">>" || segment[index]?.value === "&>>") continue;
|
|
393
|
+
const target = redirectWriteTarget(segment[index], segment[index + 1]);
|
|
394
|
+
if (target === null) continue;
|
|
335
395
|
const matches = matchesForPaths([target], artifacts, "target", "redirect can overwrite protected artifacts");
|
|
336
396
|
if (matches.length > 0) {
|
|
337
397
|
return {
|
|
@@ -528,28 +588,30 @@ function pathArgs(segment, commandIndex) {
|
|
|
528
588
|
for (let index = commandIndex + 1; index < segment.length; index += 1) {
|
|
529
589
|
const token = segment[index];
|
|
530
590
|
if (token === void 0) continue;
|
|
531
|
-
if (COMMAND_SEPARATORS.has(token)) break;
|
|
532
591
|
if (!endOfOptions && token === "--") {
|
|
533
592
|
endOfOptions = true;
|
|
534
593
|
continue;
|
|
535
594
|
}
|
|
536
595
|
if (!endOfOptions && token.startsWith("-")) continue;
|
|
537
|
-
if (token === ">" || token === ">>" || token === "<" || token === "<<") {
|
|
538
|
-
index += 1;
|
|
539
|
-
continue;
|
|
540
|
-
}
|
|
541
596
|
args.push(token);
|
|
542
597
|
}
|
|
543
598
|
return args;
|
|
544
599
|
}
|
|
545
|
-
function
|
|
600
|
+
function commandArgumentSegments(command) {
|
|
601
|
+
return splitSegments(scanShellLike(command)).map(shellCommandArguments);
|
|
602
|
+
}
|
|
603
|
+
function scanShellLike(command) {
|
|
546
604
|
const tokens = [];
|
|
547
605
|
let current = "";
|
|
606
|
+
let wordStart = null;
|
|
607
|
+
let quoted = false;
|
|
548
608
|
let quote = null;
|
|
549
|
-
const pushCurrent = () => {
|
|
550
|
-
if (
|
|
551
|
-
tokens.push(current);
|
|
609
|
+
const pushCurrent = (end) => {
|
|
610
|
+
if (wordStart === null) return;
|
|
611
|
+
tokens.push({ value: current, operator: false, quoted, start: wordStart, end });
|
|
552
612
|
current = "";
|
|
613
|
+
wordStart = null;
|
|
614
|
+
quoted = false;
|
|
553
615
|
};
|
|
554
616
|
for (let index = 0; index < command.length; index += 1) {
|
|
555
617
|
const char = command[index];
|
|
@@ -560,78 +622,60 @@ function tokenizeShellLike(command) {
|
|
|
560
622
|
continue;
|
|
561
623
|
}
|
|
562
624
|
if (quote === '"' && char === "\\" && index + 1 < command.length) {
|
|
563
|
-
index
|
|
564
|
-
|
|
565
|
-
|
|
625
|
+
const next = command[index + 1] ?? "";
|
|
626
|
+
if (next === "\n" || '$`"\\'.includes(next)) {
|
|
627
|
+
index += 1;
|
|
628
|
+
if (next !== "\n") current += next;
|
|
629
|
+
continue;
|
|
630
|
+
}
|
|
566
631
|
}
|
|
567
632
|
current += char;
|
|
568
633
|
continue;
|
|
569
634
|
}
|
|
570
635
|
if (char === "'" || char === '"') {
|
|
636
|
+
wordStart ??= index;
|
|
637
|
+
quoted = true;
|
|
571
638
|
quote = char;
|
|
572
639
|
continue;
|
|
573
640
|
}
|
|
574
641
|
if (char === "\\" && index + 1 < command.length) {
|
|
575
|
-
index
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
pushCurrent();
|
|
581
|
-
if (char === "\n") tokens.push(";");
|
|
582
|
-
continue;
|
|
583
|
-
}
|
|
584
|
-
if (char === ";") {
|
|
585
|
-
pushCurrent();
|
|
586
|
-
tokens.push(";");
|
|
587
|
-
continue;
|
|
588
|
-
}
|
|
589
|
-
if (char === "&" && command[index + 1] === "&") {
|
|
590
|
-
pushCurrent();
|
|
591
|
-
tokens.push("&&");
|
|
642
|
+
if (command[index + 1] !== "\n") {
|
|
643
|
+
wordStart ??= index;
|
|
644
|
+
quoted = true;
|
|
645
|
+
current += command[index + 1] ?? "";
|
|
646
|
+
}
|
|
592
647
|
index += 1;
|
|
593
648
|
continue;
|
|
594
649
|
}
|
|
595
|
-
if (char === "
|
|
596
|
-
|
|
597
|
-
if (command[index + 1] === "|") {
|
|
598
|
-
tokens.push("||");
|
|
599
|
-
index += 1;
|
|
600
|
-
} else {
|
|
601
|
-
tokens.push("|");
|
|
602
|
-
}
|
|
650
|
+
if (char === "#" && wordStart === null) {
|
|
651
|
+
while (index + 1 < command.length && command[index + 1] !== "\n") index += 1;
|
|
603
652
|
continue;
|
|
604
653
|
}
|
|
605
|
-
if (char
|
|
606
|
-
pushCurrent();
|
|
607
|
-
if (
|
|
608
|
-
tokens.push(">>");
|
|
609
|
-
index += 1;
|
|
610
|
-
} else {
|
|
611
|
-
tokens.push(">");
|
|
612
|
-
}
|
|
654
|
+
if (/\s/.test(char)) {
|
|
655
|
+
pushCurrent(index);
|
|
656
|
+
if (char === "\n") tokens.push({ value: ";", operator: true, quoted: false, start: index, end: index + 1 });
|
|
613
657
|
continue;
|
|
614
658
|
}
|
|
615
|
-
if (
|
|
616
|
-
pushCurrent();
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
}
|
|
659
|
+
if (";&|><".includes(char)) {
|
|
660
|
+
pushCurrent(index);
|
|
661
|
+
const three = command.slice(index, index + 3);
|
|
662
|
+
const two = command.slice(index, index + 2);
|
|
663
|
+
const value = SHELL_REDIRECTIONS.has(three) || COMMAND_SEPARATORS.has(three) ? three : SHELL_REDIRECTIONS.has(two) || COMMAND_SEPARATORS.has(two) ? two : char;
|
|
664
|
+
tokens.push({ value, operator: true, quoted: false, start: index, end: index + value.length });
|
|
665
|
+
index += value.length - 1;
|
|
623
666
|
continue;
|
|
624
667
|
}
|
|
668
|
+
wordStart ??= index;
|
|
625
669
|
current += char;
|
|
626
670
|
}
|
|
627
|
-
pushCurrent();
|
|
671
|
+
pushCurrent(command.length);
|
|
628
672
|
return tokens;
|
|
629
673
|
}
|
|
630
674
|
function splitSegments(tokens) {
|
|
631
675
|
const segments = [];
|
|
632
676
|
let current = [];
|
|
633
677
|
for (const token of tokens) {
|
|
634
|
-
if (COMMAND_SEPARATORS.has(token)) {
|
|
678
|
+
if (token.operator && COMMAND_SEPARATORS.has(token.value)) {
|
|
635
679
|
if (current.length > 0) segments.push(current);
|
|
636
680
|
current = [];
|
|
637
681
|
continue;
|
|
@@ -748,9 +792,6 @@ function compareStrings(left, right) {
|
|
|
748
792
|
}
|
|
749
793
|
|
|
750
794
|
export {
|
|
751
|
-
CLIO_PROJECT_DIR,
|
|
752
|
-
CLIO_ARTIFACT_DIR,
|
|
753
|
-
artifactDefaultPath,
|
|
754
795
|
toolMutationPaths,
|
|
755
796
|
protectedArtifactMutationBlockReason,
|
|
756
797
|
protectArtifact,
|
|
@@ -759,6 +800,8 @@ export {
|
|
|
759
800
|
inlineShellScript,
|
|
760
801
|
extractCommandCdTargets,
|
|
761
802
|
extractCommandDeleteTargets,
|
|
762
|
-
|
|
803
|
+
invokesClioSkillMutation,
|
|
804
|
+
commandArgumentSegments,
|
|
805
|
+
scanShellLike
|
|
763
806
|
};
|
|
764
|
-
//# sourceMappingURL=chunk-
|
|
807
|
+
//# sourceMappingURL=chunk-I7ZPNEJM.js.map
|
|
@@ -9,9 +9,6 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
require_dist
|
|
11
11
|
} from "./chunk-APJ265NV.js";
|
|
12
|
-
import {
|
|
13
|
-
clioConfigDir
|
|
14
|
-
} from "./chunk-BYP5D4HI.js";
|
|
15
12
|
import {
|
|
16
13
|
safeResourceWrite
|
|
17
14
|
} from "./chunk-WEPFGWHJ.js";
|
|
@@ -19,6 +16,9 @@ import {
|
|
|
19
16
|
findEngineEnvKeys,
|
|
20
17
|
getEngineEnvApiKey
|
|
21
18
|
} from "./chunk-YXLYO42X.js";
|
|
19
|
+
import {
|
|
20
|
+
clioConfigDir
|
|
21
|
+
} from "./chunk-BYP5D4HI.js";
|
|
22
22
|
import {
|
|
23
23
|
__toESM,
|
|
24
24
|
init_esm_shims
|
|
@@ -959,4 +959,4 @@ export {
|
|
|
959
959
|
authNotRequiredStatus,
|
|
960
960
|
openAuthStorage
|
|
961
961
|
};
|
|
962
|
-
//# sourceMappingURL=chunk-
|
|
962
|
+
//# sourceMappingURL=chunk-ID64D7PE.js.map
|
|
@@ -8,36 +8,36 @@ import {
|
|
|
8
8
|
normalizedSkillHash,
|
|
9
9
|
stripProvenanceFrontmatter
|
|
10
10
|
} from "./chunk-NDDGJUXD.js";
|
|
11
|
+
import {
|
|
12
|
+
initializeClioHome
|
|
13
|
+
} from "./chunk-I7XBWTYH.js";
|
|
11
14
|
import {
|
|
12
15
|
resolveToolBinary
|
|
13
16
|
} from "./chunk-QSNYB6ZV.js";
|
|
14
17
|
import {
|
|
15
18
|
findPinnedTool
|
|
16
19
|
} from "./chunk-QDC3K2U3.js";
|
|
17
|
-
import {
|
|
18
|
-
initializeClioHome
|
|
19
|
-
} from "./chunk-I7XBWTYH.js";
|
|
20
20
|
import {
|
|
21
21
|
INTEROP_AGENT_KINDS
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-KXDSS5WJ.js";
|
|
23
23
|
import {
|
|
24
24
|
settingsPath,
|
|
25
25
|
withSettingsLock
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-GHS5EBTQ.js";
|
|
27
27
|
import {
|
|
28
28
|
resolvePackageRoot
|
|
29
29
|
} from "./chunk-IWHMRKLL.js";
|
|
30
30
|
import {
|
|
31
31
|
require_dist
|
|
32
32
|
} from "./chunk-APJ265NV.js";
|
|
33
|
-
import {
|
|
34
|
-
clioStatePath,
|
|
35
|
-
resolveClioDirs
|
|
36
|
-
} from "./chunk-BYP5D4HI.js";
|
|
37
33
|
import {
|
|
38
34
|
fsyncDirectory,
|
|
39
35
|
safeResourceWrite
|
|
40
36
|
} from "./chunk-WEPFGWHJ.js";
|
|
37
|
+
import {
|
|
38
|
+
clioStatePath,
|
|
39
|
+
resolveClioDirs
|
|
40
|
+
} from "./chunk-BYP5D4HI.js";
|
|
41
41
|
import {
|
|
42
42
|
__toESM,
|
|
43
43
|
init_esm_shims
|
|
@@ -654,4 +654,4 @@ export {
|
|
|
654
654
|
migrateNamingSettingsFile,
|
|
655
655
|
clio_coder_naming_default
|
|
656
656
|
};
|
|
657
|
-
//# sourceMappingURL=chunk-
|
|
657
|
+
//# sourceMappingURL=chunk-IGLP3ODT.js.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
appendOutOfTurnUsageRow
|
|
4
|
+
} from "./chunk-VA5FNYMT.js";
|
|
5
|
+
import {
|
|
6
|
+
extractReasoningTokens
|
|
7
|
+
} from "./chunk-NZMNUPZZ.js";
|
|
8
|
+
import {
|
|
9
|
+
init_esm_shims
|
|
10
|
+
} from "./chunk-3R73A4XB.js";
|
|
11
|
+
|
|
12
|
+
// src/domains/observability/compaction-usage.ts
|
|
13
|
+
init_esm_shims();
|
|
14
|
+
function observedUsage(call) {
|
|
15
|
+
const raw = isRecord(call.usage) ? call.usage : {};
|
|
16
|
+
const reading = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0 && (call.outcome === "success" || value > 0) ? value : null;
|
|
17
|
+
const cost = isRecord(raw.cost) ? reading(raw.cost.total) : null;
|
|
18
|
+
const costUsd = cost !== null && cost > 0 ? cost : null;
|
|
19
|
+
const reasoning = extractReasoningTokens({ ...raw, reasoningTokens: void 0 });
|
|
20
|
+
return {
|
|
21
|
+
input: reading(raw.input),
|
|
22
|
+
output: reading(raw.output),
|
|
23
|
+
cacheRead: reading(raw.cacheRead),
|
|
24
|
+
cacheWrite: reading(raw.cacheWrite),
|
|
25
|
+
reasoning: reasoning !== null && reasoning > 0 ? reasoning : null,
|
|
26
|
+
totalTokens: reading(raw.totalTokens),
|
|
27
|
+
costUsd,
|
|
28
|
+
costProvenance: costUsd === null ? "unknown" : "estimated"
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function recordFailedCompactionCalls(origin, calls, observability) {
|
|
32
|
+
for (const call of calls) {
|
|
33
|
+
const usage = observedUsage(call);
|
|
34
|
+
const row = {
|
|
35
|
+
label: "failed-compaction",
|
|
36
|
+
callOutcome: call.outcome,
|
|
37
|
+
sessionId: origin.sessionId,
|
|
38
|
+
repoIdentity: origin.repoIdentity,
|
|
39
|
+
timestamp: call.timestamp,
|
|
40
|
+
target: origin.target,
|
|
41
|
+
attributedModelId: origin.model,
|
|
42
|
+
usage,
|
|
43
|
+
timing: { durationMs: call.durationMs }
|
|
44
|
+
};
|
|
45
|
+
appendOutOfTurnUsageRow(origin.stateDir, row, { required: true });
|
|
46
|
+
if (!Object.values(usage).some((value) => typeof value === "number" && value > 0)) continue;
|
|
47
|
+
observability?.recordTokens(
|
|
48
|
+
origin.target,
|
|
49
|
+
origin.model,
|
|
50
|
+
usage.totalTokens ?? 0,
|
|
51
|
+
usage.costUsd ?? 0,
|
|
52
|
+
{
|
|
53
|
+
input: usage.input ?? 0,
|
|
54
|
+
output: usage.output ?? 0,
|
|
55
|
+
cacheRead: usage.cacheRead ?? 0,
|
|
56
|
+
cacheWrite: usage.cacheWrite ?? 0,
|
|
57
|
+
reasoningTokens: usage.reasoning ?? 0,
|
|
58
|
+
totalTokens: usage.totalTokens ?? 0,
|
|
59
|
+
apiCalls: 1
|
|
60
|
+
},
|
|
61
|
+
usage.costProvenance,
|
|
62
|
+
void 0,
|
|
63
|
+
"failed-compaction"
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function isRecord(value) {
|
|
68
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
69
|
+
}
|
|
70
|
+
var USAGE_FIELDS = ["input", "output", "cacheRead", "cacheWrite", "reasoning", "totalTokens", "costUsd"];
|
|
71
|
+
function summarizeFailedCompactionUsage(rows) {
|
|
72
|
+
const calls = rows.filter((row) => row.label === "failed-compaction");
|
|
73
|
+
const knownUsage = Object.fromEntries(USAGE_FIELDS.map((field) => [field, null]));
|
|
74
|
+
const erroredKnownUsage = { ...knownUsage };
|
|
75
|
+
const unobservedUsageCalls = Object.fromEntries(USAGE_FIELDS.map((field) => [field, 0]));
|
|
76
|
+
for (const row of calls) {
|
|
77
|
+
for (const field of USAGE_FIELDS) {
|
|
78
|
+
const value = row.usage[field];
|
|
79
|
+
if (value === null) unobservedUsageCalls[field] += 1;
|
|
80
|
+
else {
|
|
81
|
+
knownUsage[field] = (knownUsage[field] ?? 0) + value;
|
|
82
|
+
if (row.callOutcome === "error") erroredKnownUsage[field] = (erroredKnownUsage[field] ?? 0) + value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
calls: calls.length,
|
|
88
|
+
successfulCalls: calls.filter((row) => row.callOutcome === "success").length,
|
|
89
|
+
erroredCalls: calls.filter((row) => row.callOutcome === "error").length,
|
|
90
|
+
abortedCalls: calls.filter((row) => row.callOutcome === "aborted").length,
|
|
91
|
+
knownUsage,
|
|
92
|
+
erroredKnownUsage,
|
|
93
|
+
unobservedUsageCalls
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export {
|
|
98
|
+
recordFailedCompactionCalls,
|
|
99
|
+
summarizeFailedCompactionUsage
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=chunk-IJNZMHLA.js.map
|
|
@@ -2,26 +2,26 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
INTEROP_AGENT_KINDS,
|
|
4
4
|
interopAgentKind
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-KXDSS5WJ.js";
|
|
6
6
|
import {
|
|
7
7
|
readSettings,
|
|
8
8
|
updateSettings
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GHS5EBTQ.js";
|
|
10
10
|
import {
|
|
11
11
|
runCommandVector
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-JSC3U7TI.js";
|
|
13
13
|
import {
|
|
14
14
|
withStateFileLockSync
|
|
15
15
|
} from "./chunk-IKCO5N3L.js";
|
|
16
16
|
import {
|
|
17
17
|
require_dist
|
|
18
18
|
} from "./chunk-APJ265NV.js";
|
|
19
|
-
import {
|
|
20
|
-
clioStateDir
|
|
21
|
-
} from "./chunk-BYP5D4HI.js";
|
|
22
19
|
import {
|
|
23
20
|
safeResourceWrite
|
|
24
21
|
} from "./chunk-WEPFGWHJ.js";
|
|
22
|
+
import {
|
|
23
|
+
clioStateDir
|
|
24
|
+
} from "./chunk-BYP5D4HI.js";
|
|
25
25
|
import {
|
|
26
26
|
__toESM,
|
|
27
27
|
init_esm_shims
|
|
@@ -430,4 +430,4 @@ export {
|
|
|
430
430
|
detectInteropAgents,
|
|
431
431
|
InteropDomainModule
|
|
432
432
|
};
|
|
433
|
-
//# sourceMappingURL=chunk-
|
|
433
|
+
//# sourceMappingURL=chunk-INY6HTFL.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-K6BSR66V.js";
|
|
8
8
|
import {
|
|
9
9
|
StringEnum
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-YPC6ZR5L.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esm_shims
|
|
13
13
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -32,4 +32,4 @@ var contextToolSurface = {
|
|
|
32
32
|
export {
|
|
33
33
|
contextToolSurface
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-IUE3Y34X.js.map
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
ROUTE_POLICY_VERSION,
|
|
4
4
|
isRouteDecisionAgentSelection,
|
|
5
5
|
isRoutingIntent
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EKCHAPYA.js";
|
|
7
7
|
import {
|
|
8
8
|
isExecutionRole
|
|
9
9
|
} from "./chunk-H7IXIC72.js";
|
|
10
10
|
import {
|
|
11
11
|
readSettings
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GHS5EBTQ.js";
|
|
13
13
|
import {
|
|
14
14
|
readClioVersion,
|
|
15
15
|
resolvePackageRoot
|
|
@@ -1412,4 +1412,4 @@ export {
|
|
|
1412
1412
|
loadEvalTaskFile,
|
|
1413
1413
|
EvalTaskFileError
|
|
1414
1414
|
};
|
|
1415
|
-
//# sourceMappingURL=chunk-
|
|
1415
|
+
//# sourceMappingURL=chunk-IWT4SF4R.js.map
|