@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
package/dist/reset-OAQP3W4O.js
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
removePath,
|
|
4
|
-
reportRemovalFailures
|
|
5
|
-
} from "./chunk-SVNXH4L2.js";
|
|
6
|
-
import {
|
|
7
|
-
initializeClioHome
|
|
8
|
-
} from "./chunk-I7XBWTYH.js";
|
|
9
|
-
import {
|
|
10
|
-
terminalColumns,
|
|
11
|
-
wrapPlain
|
|
12
|
-
} from "./chunk-2IR2NMPA.js";
|
|
13
|
-
import "./chunk-ZW55JB7N.js";
|
|
14
|
-
import {
|
|
15
|
-
printError,
|
|
16
|
-
printHeader,
|
|
17
|
-
printOk
|
|
18
|
-
} from "./chunk-VPKWYKEY.js";
|
|
19
|
-
import "./chunk-5TSRNF4G.js";
|
|
20
|
-
import "./chunk-IWHMRKLL.js";
|
|
21
|
-
import "./chunk-UXCU4E3T.js";
|
|
22
|
-
import "./chunk-LL4KHSZI.js";
|
|
23
|
-
import "./chunk-S66XZJOF.js";
|
|
24
|
-
import "./chunk-WNP7O5WZ.js";
|
|
25
|
-
import "./chunk-336NSSKI.js";
|
|
26
|
-
import "./chunk-IKCO5N3L.js";
|
|
27
|
-
import "./chunk-3I7MS7N2.js";
|
|
28
|
-
import "./chunk-APJ265NV.js";
|
|
29
|
-
import {
|
|
30
|
-
resetXdgCache,
|
|
31
|
-
resolveClioDirs
|
|
32
|
-
} from "./chunk-BYP5D4HI.js";
|
|
33
|
-
import "./chunk-WEPFGWHJ.js";
|
|
34
|
-
import "./chunk-YXLYO42X.js";
|
|
35
|
-
import {
|
|
36
|
-
init_esm_shims
|
|
37
|
-
} from "./chunk-3R73A4XB.js";
|
|
38
|
-
|
|
39
|
-
// src/cli/reset.ts
|
|
40
|
-
init_esm_shims();
|
|
41
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
42
|
-
import { join } from "node:path";
|
|
43
|
-
var HELP = `clio-coder reset [--state|--data|--cache|--auth|--config|--all] [--dry-run] [--force]
|
|
44
|
-
|
|
45
|
-
Recover or wipe Clio Coder state while keeping the clio binary installed.
|
|
46
|
-
Each level clears exactly the root (or file) it names and nothing else.
|
|
47
|
-
|
|
48
|
-
Levels (combinable except --all):
|
|
49
|
-
--state state root only (default). Holds every session transcript, so a
|
|
50
|
-
reset is the end of resume, /view, and the audit behind them.
|
|
51
|
-
--data data root only: memory, evidence, evals, vendored tools (durable products)
|
|
52
|
-
--cache cache root only
|
|
53
|
-
--auth credentials.yaml only
|
|
54
|
-
--config settings.yaml only
|
|
55
|
-
--all all four roots: config, data, state, and cache
|
|
56
|
-
|
|
57
|
-
Every run reads each selected root and lists what is inside it before removing
|
|
58
|
-
anything, so what a level covers is read off that listing rather than off this
|
|
59
|
-
text. --dry-run prints the same listing and changes nothing.
|
|
60
|
-
|
|
61
|
-
Safety:
|
|
62
|
-
--force required for destructive execution
|
|
63
|
-
--dry-run print what would be reset without changing anything
|
|
64
|
-
`;
|
|
65
|
-
var ROOT_NOTES = {
|
|
66
|
-
state: "the state root holds every session transcript and the audit trail beside it; resume and /view lose their history",
|
|
67
|
-
// Vendored tools are named because they are the one durable product a reset
|
|
68
|
-
// cannot regenerate from anything local: getting them back is a download.
|
|
69
|
-
data: "the data root holds durable products (memory, evidence, evals, and any vendored external tools, which a reinstall re-downloads)"
|
|
70
|
-
};
|
|
71
|
-
function parseResetArgs(argv) {
|
|
72
|
-
const parsed = {
|
|
73
|
-
state: false,
|
|
74
|
-
data: false,
|
|
75
|
-
cache: false,
|
|
76
|
-
auth: false,
|
|
77
|
-
config: false,
|
|
78
|
-
all: false,
|
|
79
|
-
force: false,
|
|
80
|
-
dryRun: false,
|
|
81
|
-
help: false
|
|
82
|
-
};
|
|
83
|
-
for (const arg of argv) {
|
|
84
|
-
switch (arg) {
|
|
85
|
-
case "--state":
|
|
86
|
-
parsed.state = true;
|
|
87
|
-
break;
|
|
88
|
-
case "--data":
|
|
89
|
-
parsed.data = true;
|
|
90
|
-
break;
|
|
91
|
-
case "--cache":
|
|
92
|
-
parsed.cache = true;
|
|
93
|
-
break;
|
|
94
|
-
case "--auth":
|
|
95
|
-
parsed.auth = true;
|
|
96
|
-
break;
|
|
97
|
-
case "--config":
|
|
98
|
-
parsed.config = true;
|
|
99
|
-
break;
|
|
100
|
-
case "--all":
|
|
101
|
-
parsed.all = true;
|
|
102
|
-
break;
|
|
103
|
-
case "--force":
|
|
104
|
-
case "-f":
|
|
105
|
-
parsed.force = true;
|
|
106
|
-
break;
|
|
107
|
-
case "--dry-run":
|
|
108
|
-
parsed.dryRun = true;
|
|
109
|
-
break;
|
|
110
|
-
case "--help":
|
|
111
|
-
case "-h":
|
|
112
|
-
parsed.help = true;
|
|
113
|
-
break;
|
|
114
|
-
default:
|
|
115
|
-
throw new Error(`unknown flag: ${arg}`);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
const levels = [parsed.state, parsed.data, parsed.cache, parsed.auth, parsed.config];
|
|
119
|
-
if (!parsed.help && parsed.all && levels.some(Boolean)) {
|
|
120
|
-
throw new Error("--all cannot be combined with --state, --data, --cache, --auth, or --config");
|
|
121
|
-
}
|
|
122
|
-
if (!parsed.help && !parsed.all && !levels.some(Boolean)) {
|
|
123
|
-
parsed.state = true;
|
|
124
|
-
}
|
|
125
|
-
return parsed;
|
|
126
|
-
}
|
|
127
|
-
function report(label, path) {
|
|
128
|
-
process.stdout.write(` ${label.padEnd(12)} ${path}${existsSync(path) ? "" : " (absent)"}
|
|
129
|
-
`);
|
|
130
|
-
}
|
|
131
|
-
function rootContents(path) {
|
|
132
|
-
let entries;
|
|
133
|
-
try {
|
|
134
|
-
entries = readdirSync(path, { withFileTypes: true });
|
|
135
|
-
} catch {
|
|
136
|
-
return [];
|
|
137
|
-
}
|
|
138
|
-
return entries.map((entry) => {
|
|
139
|
-
if (!entry.isDirectory()) return entry.name;
|
|
140
|
-
let count;
|
|
141
|
-
try {
|
|
142
|
-
count = readdirSync(join(path, entry.name)).length;
|
|
143
|
-
} catch {
|
|
144
|
-
return `${entry.name}/`;
|
|
145
|
-
}
|
|
146
|
-
return `${entry.name}/ (${count})`;
|
|
147
|
-
}).sort((left, right) => left.localeCompare(right));
|
|
148
|
-
}
|
|
149
|
-
function writeIndented(text, indent) {
|
|
150
|
-
const [first = "", ...rest] = wrapPlain(text, Math.max(20, terminalColumns() - indent), indent);
|
|
151
|
-
process.stdout.write(`${" ".repeat(indent)}${first}
|
|
152
|
-
`);
|
|
153
|
-
for (const line of rest) process.stdout.write(`${line}
|
|
154
|
-
`);
|
|
155
|
-
}
|
|
156
|
-
function resetInvocation(args) {
|
|
157
|
-
const levels = [
|
|
158
|
-
["all", args.all],
|
|
159
|
-
["config", args.config],
|
|
160
|
-
["auth", args.auth],
|
|
161
|
-
["data", args.data],
|
|
162
|
-
["state", args.state],
|
|
163
|
-
["cache", args.cache]
|
|
164
|
-
].filter(([, on]) => on).map(([name]) => `--${name}`);
|
|
165
|
-
return `clio-coder reset ${levels.join(" ")} --force`;
|
|
166
|
-
}
|
|
167
|
-
function runResetCommand(argv) {
|
|
168
|
-
let args;
|
|
169
|
-
try {
|
|
170
|
-
args = parseResetArgs(argv);
|
|
171
|
-
} catch (error) {
|
|
172
|
-
printError(error instanceof Error ? error.message : String(error));
|
|
173
|
-
process.stdout.write(HELP);
|
|
174
|
-
return 2;
|
|
175
|
-
}
|
|
176
|
-
if (args.help) {
|
|
177
|
-
process.stdout.write(HELP);
|
|
178
|
-
return 0;
|
|
179
|
-
}
|
|
180
|
-
if (!args.dryRun && !args.force) {
|
|
181
|
-
printError("`clio-coder reset` requires --force unless you are using --dry-run");
|
|
182
|
-
process.stdout.write(HELP);
|
|
183
|
-
return 2;
|
|
184
|
-
}
|
|
185
|
-
const dirs = resolveClioDirs();
|
|
186
|
-
const settingsPath = join(dirs.config, "settings.yaml");
|
|
187
|
-
const credentialsPath = join(dirs.config, "credentials.yaml");
|
|
188
|
-
printHeader("Clio Coder reset");
|
|
189
|
-
const selected = args.all ? [
|
|
190
|
-
{ label: "config", path: dirs.config },
|
|
191
|
-
{ label: "data", path: dirs.data },
|
|
192
|
-
{ label: "state", path: dirs.state },
|
|
193
|
-
{ label: "cache", path: dirs.cache }
|
|
194
|
-
] : [
|
|
195
|
-
...args.config ? [{ label: "settings", path: settingsPath }] : [],
|
|
196
|
-
...args.auth ? [{ label: "credentials", path: credentialsPath }] : [],
|
|
197
|
-
...args.data ? [{ label: "data", path: dirs.data }] : [],
|
|
198
|
-
...args.state ? [{ label: "state", path: dirs.state }] : [],
|
|
199
|
-
...args.cache ? [{ label: "cache", path: dirs.cache }] : []
|
|
200
|
-
];
|
|
201
|
-
for (const entry of selected) {
|
|
202
|
-
report(entry.label, entry.path);
|
|
203
|
-
const contents = rootContents(entry.path);
|
|
204
|
-
if (contents.length > 0) writeIndented(contents.join(", "), 4);
|
|
205
|
-
const note = ROOT_NOTES[entry.label];
|
|
206
|
-
if (note) writeIndented(`note: ${note}`, 2);
|
|
207
|
-
}
|
|
208
|
-
const failures = [];
|
|
209
|
-
for (const entry of selected) {
|
|
210
|
-
const failure = removePath(entry.label, entry.path, args.dryRun);
|
|
211
|
-
if (failure) failures.push(failure);
|
|
212
|
-
}
|
|
213
|
-
resetXdgCache();
|
|
214
|
-
if (!args.dryRun) initializeClioHome();
|
|
215
|
-
if (failures.length > 0) {
|
|
216
|
-
printError("reset did not remove everything");
|
|
217
|
-
reportRemovalFailures(resetInvocation(args), failures);
|
|
218
|
-
return 1;
|
|
219
|
-
}
|
|
220
|
-
if (args.dryRun) {
|
|
221
|
-
printOk(args.all ? "reset --all preview complete" : "reset preview complete");
|
|
222
|
-
} else {
|
|
223
|
-
printOk(args.all ? "reset config, data, state, and cache" : "reset complete");
|
|
224
|
-
}
|
|
225
|
-
return 0;
|
|
226
|
-
}
|
|
227
|
-
export {
|
|
228
|
-
runResetCommand
|
|
229
|
-
};
|
|
230
|
-
//# sourceMappingURL=reset-OAQP3W4O.js.map
|
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
removePath,
|
|
4
|
-
reportRemovalFailures
|
|
5
|
-
} from "./chunk-SVNXH4L2.js";
|
|
6
|
-
import "./chunk-ZW55JB7N.js";
|
|
7
|
-
import {
|
|
8
|
-
printError,
|
|
9
|
-
printHeader,
|
|
10
|
-
printOk
|
|
11
|
-
} from "./chunk-VPKWYKEY.js";
|
|
12
|
-
import "./chunk-5TSRNF4G.js";
|
|
13
|
-
import {
|
|
14
|
-
resolvePackageRoot
|
|
15
|
-
} from "./chunk-IWHMRKLL.js";
|
|
16
|
-
import "./chunk-WNP7O5WZ.js";
|
|
17
|
-
import "./chunk-336NSSKI.js";
|
|
18
|
-
import "./chunk-IKCO5N3L.js";
|
|
19
|
-
import "./chunk-3I7MS7N2.js";
|
|
20
|
-
import "./chunk-APJ265NV.js";
|
|
21
|
-
import {
|
|
22
|
-
resetXdgCache,
|
|
23
|
-
resolveClioDirs
|
|
24
|
-
} from "./chunk-BYP5D4HI.js";
|
|
25
|
-
import "./chunk-WEPFGWHJ.js";
|
|
26
|
-
import "./chunk-YXLYO42X.js";
|
|
27
|
-
import {
|
|
28
|
-
init_esm_shims
|
|
29
|
-
} from "./chunk-3R73A4XB.js";
|
|
30
|
-
|
|
31
|
-
// src/cli/uninstall.ts
|
|
32
|
-
init_esm_shims();
|
|
33
|
-
import { spawnSync } from "node:child_process";
|
|
34
|
-
import { existsSync, lstatSync, readdirSync, readFileSync, readlinkSync, realpathSync } from "node:fs";
|
|
35
|
-
import { homedir } from "node:os";
|
|
36
|
-
import { delimiter, dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
37
|
-
var HELP = `clio-coder uninstall [--remove-binary] [--dry-run] [--force]
|
|
38
|
-
|
|
39
|
-
Remove all Clio Coder state: the config, data, state, and cache roots.
|
|
40
|
-
|
|
41
|
-
Per-project \`.clio-coder/\` directories are outside those roots and are never removed
|
|
42
|
-
here. Every project Clio has run in is recorded in the session metadata, so both
|
|
43
|
-
the real run and --dry-run list them and name the command that clears one,
|
|
44
|
-
before the launcher is touched.
|
|
45
|
-
|
|
46
|
-
Flags:
|
|
47
|
-
--remove-binary also remove the launcher symlink when it points at this
|
|
48
|
-
installation. A real file, or a link into a different clio-coder
|
|
49
|
-
installation, is kept and reported.
|
|
50
|
-
--dry-run print what would be removed without changing anything
|
|
51
|
-
--force required for destructive execution
|
|
52
|
-
`;
|
|
53
|
-
function parseUninstallArgs(argv) {
|
|
54
|
-
const parsed = {
|
|
55
|
-
removeBinary: false,
|
|
56
|
-
force: false,
|
|
57
|
-
dryRun: false,
|
|
58
|
-
help: false
|
|
59
|
-
};
|
|
60
|
-
for (const arg of argv) {
|
|
61
|
-
switch (arg) {
|
|
62
|
-
case "--remove-binary":
|
|
63
|
-
parsed.removeBinary = true;
|
|
64
|
-
break;
|
|
65
|
-
case "--force":
|
|
66
|
-
case "-f":
|
|
67
|
-
parsed.force = true;
|
|
68
|
-
break;
|
|
69
|
-
case "--dry-run":
|
|
70
|
-
parsed.dryRun = true;
|
|
71
|
-
break;
|
|
72
|
-
case "--help":
|
|
73
|
-
case "-h":
|
|
74
|
-
parsed.help = true;
|
|
75
|
-
break;
|
|
76
|
-
default:
|
|
77
|
-
throw new Error(`unknown flag: ${arg}`);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return parsed;
|
|
81
|
-
}
|
|
82
|
-
function report(label, path) {
|
|
83
|
-
process.stdout.write(` ${label.padEnd(8)} remove ${path}${existsSync(path) ? "" : " (absent)"}
|
|
84
|
-
`);
|
|
85
|
-
}
|
|
86
|
-
function projectContextInventory(stateDir) {
|
|
87
|
-
const root = join(stateDir, "sessions");
|
|
88
|
-
let hashes;
|
|
89
|
-
try {
|
|
90
|
-
hashes = readdirSync(root);
|
|
91
|
-
} catch {
|
|
92
|
-
return { recorded: 0, dirs: [], storeAbsent: true };
|
|
93
|
-
}
|
|
94
|
-
const dirs = /* @__PURE__ */ new Set();
|
|
95
|
-
let recorded = 0;
|
|
96
|
-
for (const hash of hashes.sort()) {
|
|
97
|
-
const cwd = firstRecordedCwd(join(root, hash));
|
|
98
|
-
if (cwd === null) continue;
|
|
99
|
-
recorded += 1;
|
|
100
|
-
if (existsSync(join(cwd, ".clio-coder"))) dirs.add(cwd);
|
|
101
|
-
}
|
|
102
|
-
return { recorded, dirs: [...dirs].sort(), storeAbsent: false };
|
|
103
|
-
}
|
|
104
|
-
function firstRecordedCwd(hashDir) {
|
|
105
|
-
let sessions;
|
|
106
|
-
try {
|
|
107
|
-
sessions = readdirSync(hashDir);
|
|
108
|
-
} catch {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
for (const session of sessions.sort()) {
|
|
112
|
-
try {
|
|
113
|
-
const meta = JSON.parse(readFileSync(join(hashDir, session, "meta.json"), "utf8"));
|
|
114
|
-
if (typeof meta.cwd === "string" && meta.cwd.length > 0) return meta.cwd;
|
|
115
|
-
} catch {
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
function reportProjectContext(inventory, removeBinary) {
|
|
121
|
-
process.stdout.write("\nPer-project context (not removed by uninstall):\n");
|
|
122
|
-
if (inventory.storeAbsent) {
|
|
123
|
-
process.stdout.write(" no session store to read; any .clio-coder/ directories must be found by hand\n");
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (inventory.dirs.length === 0) {
|
|
127
|
-
process.stdout.write(
|
|
128
|
-
` none: ${inventory.recorded} project director${inventory.recorded === 1 ? "y" : "ies"} recorded, none still has a .clio-coder/
|
|
129
|
-
`
|
|
130
|
-
);
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
for (const dir of inventory.dirs) process.stdout.write(` ${join(dir, ".clio-coder")}
|
|
134
|
-
`);
|
|
135
|
-
process.stdout.write(
|
|
136
|
-
removeBinary ? "\nThis run also removes the launcher. Clear each one from inside it first, then re-run:\n" : "\nClear each one from inside it, while clio still runs:\n"
|
|
137
|
-
);
|
|
138
|
-
process.stdout.write(" clio-coder context reset --all\n\n");
|
|
139
|
-
}
|
|
140
|
-
function launcherLinkPath() {
|
|
141
|
-
const binDir = process.env.CLIO_CODER_BIN_DIR?.trim() || join(homedir(), ".local", "bin");
|
|
142
|
-
return join(binDir, "clio-coder");
|
|
143
|
-
}
|
|
144
|
-
function ownedCliEntry() {
|
|
145
|
-
const entry = join(resolvePackageRoot(), "dist", "cli", "index.js");
|
|
146
|
-
try {
|
|
147
|
-
return realpathSync(entry);
|
|
148
|
-
} catch {
|
|
149
|
-
return entry;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function classifyLauncher(linkPath) {
|
|
153
|
-
let isSymlink;
|
|
154
|
-
try {
|
|
155
|
-
isSymlink = lstatSync(linkPath).isSymbolicLink();
|
|
156
|
-
} catch {
|
|
157
|
-
return { kind: "absent" };
|
|
158
|
-
}
|
|
159
|
-
if (!isSymlink) {
|
|
160
|
-
return { kind: "keep", detail: "not a symlink; remove it via your package manager" };
|
|
161
|
-
}
|
|
162
|
-
const owned = ownedCliEntry();
|
|
163
|
-
let resolved = null;
|
|
164
|
-
try {
|
|
165
|
-
resolved = realpathSync(linkPath);
|
|
166
|
-
} catch {
|
|
167
|
-
resolved = null;
|
|
168
|
-
}
|
|
169
|
-
if (resolved !== null) {
|
|
170
|
-
if (resolved === owned) return { kind: "remove", detail: `-> ${resolved}` };
|
|
171
|
-
return {
|
|
172
|
-
kind: "keep",
|
|
173
|
-
detail: `points at ${resolved}, not this installation (${owned}); remove it with \`rm ${linkPath}\``
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
const raw = readlinkSync(linkPath);
|
|
177
|
-
const danglingTarget = isAbsolute(raw) ? raw : resolve(dirname(linkPath), raw);
|
|
178
|
-
if (danglingTarget.endsWith(join(sep, "dist", "cli", "index.js"))) {
|
|
179
|
-
return { kind: "remove", detail: `-> ${danglingTarget} (dangling; that installation is already gone)` };
|
|
180
|
-
}
|
|
181
|
-
return {
|
|
182
|
-
kind: "keep",
|
|
183
|
-
detail: `dangling link to ${danglingTarget}, which is not a clio entry; remove it with \`rm ${linkPath}\``
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
function removeLauncher(dryRun) {
|
|
187
|
-
const linkPath = launcherLinkPath();
|
|
188
|
-
const verdict = classifyLauncher(linkPath);
|
|
189
|
-
if (verdict.kind === "absent") {
|
|
190
|
-
process.stdout.write(` binary absent ${linkPath}
|
|
191
|
-
`);
|
|
192
|
-
return null;
|
|
193
|
-
}
|
|
194
|
-
if (verdict.kind === "keep") {
|
|
195
|
-
process.stdout.write(` binary keep ${linkPath} (${verdict.detail})
|
|
196
|
-
`);
|
|
197
|
-
return null;
|
|
198
|
-
}
|
|
199
|
-
process.stdout.write(` binary remove ${linkPath} ${verdict.detail}
|
|
200
|
-
`);
|
|
201
|
-
return removePath("binary", linkPath, dryRun);
|
|
202
|
-
}
|
|
203
|
-
function findClioOnPath() {
|
|
204
|
-
const names = process.platform === "win32" ? ["clio-coder.cmd", "clio-coder.ps1", "clio-coder.exe", "clio-coder"] : ["clio-coder"];
|
|
205
|
-
for (const dir of (process.env.PATH ?? "").split(delimiter)) {
|
|
206
|
-
if (!dir) continue;
|
|
207
|
-
for (const name of names) {
|
|
208
|
-
const candidate = join(dir, name);
|
|
209
|
-
if (existsSync(candidate)) return candidate;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
return null;
|
|
213
|
-
}
|
|
214
|
-
function readNpmPrefix() {
|
|
215
|
-
try {
|
|
216
|
-
const result = spawnSync("npm", ["config", "get", "prefix"], {
|
|
217
|
-
encoding: "utf8",
|
|
218
|
-
timeout: 5e3,
|
|
219
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
220
|
-
// A read-only probe that writes. npm drops a debug log into
|
|
221
|
-
// $HOME/.npm/_logs on every invocation, so the documented
|
|
222
|
-
// side-effect-free `--dry-run` path left a file behind in the home
|
|
223
|
-
// directory it had just finished promising not to touch. `logs-max=0`
|
|
224
|
-
// keeps npm from retaining any; the notifier is off for the same reason.
|
|
225
|
-
env: { ...process.env, npm_config_logs_max: "0", npm_config_update_notifier: "false" }
|
|
226
|
-
});
|
|
227
|
-
if (result.status !== 0) return null;
|
|
228
|
-
const prefix = result.stdout.trim();
|
|
229
|
-
return prefix.length > 0 ? prefix : null;
|
|
230
|
-
} catch {
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
function otherClioOnPath(pathClio, localLink) {
|
|
235
|
-
if (pathClio === null) return null;
|
|
236
|
-
if (pathClio === localLink) return null;
|
|
237
|
-
const resolve2 = (path) => {
|
|
238
|
-
try {
|
|
239
|
-
return realpathSync(path);
|
|
240
|
-
} catch {
|
|
241
|
-
return null;
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
const resolvedPathClio = resolve2(pathClio);
|
|
245
|
-
if (resolvedPathClio !== null && resolvedPathClio === resolve2(localLink)) return null;
|
|
246
|
-
return pathClio;
|
|
247
|
-
}
|
|
248
|
-
function printRemovalGuidance(removeBinaryRequested) {
|
|
249
|
-
const pathClio = findClioOnPath();
|
|
250
|
-
const npmPrefix = readNpmPrefix();
|
|
251
|
-
const localLink = launcherLinkPath();
|
|
252
|
-
const currentLauncher = process.argv[1];
|
|
253
|
-
process.stdout.write("\nBinary removal guidance:\n");
|
|
254
|
-
if (currentLauncher) process.stdout.write(` current launcher: ${currentLauncher}
|
|
255
|
-
`);
|
|
256
|
-
process.stdout.write(` PATH lookup: ${pathClio ?? "not currently found"}
|
|
257
|
-
`);
|
|
258
|
-
if (npmPrefix) process.stdout.write(` npm prefix bin: ${join(npmPrefix, "bin")}
|
|
259
|
-
`);
|
|
260
|
-
process.stdout.write(` local source bin: ${localLink}${existsSync(localLink) ? "" : " (absent)"}
|
|
261
|
-
`);
|
|
262
|
-
const survivor = otherClioOnPath(pathClio, localLink);
|
|
263
|
-
if (survivor !== null) {
|
|
264
|
-
process.stdout.write(`
|
|
265
|
-
another clio-coder remains on your PATH at ${survivor}
|
|
266
|
-
`);
|
|
267
|
-
process.stdout.write(" it is a different installation from the one this uninstall touched\n");
|
|
268
|
-
process.stdout.write(` check it with: ${survivor} --version
|
|
269
|
-
`);
|
|
270
|
-
}
|
|
271
|
-
process.stdout.write("\nUse the removal path that matches how you installed Clio Coder:\n");
|
|
272
|
-
if (!removeBinaryRequested) {
|
|
273
|
-
process.stdout.write(" source symlink: clio-coder uninstall --remove-binary --force\n");
|
|
274
|
-
}
|
|
275
|
-
process.stdout.write(" npm global: npm uninstall -g @iowarp/clio-coder\n");
|
|
276
|
-
process.stdout.write(" npm link: npm unlink -g @iowarp/clio-coder\n");
|
|
277
|
-
process.stdout.write("\nAfter removing or replacing a clio-coder link, clear shell command caches:\n");
|
|
278
|
-
process.stdout.write(" hash -r # Bash\n");
|
|
279
|
-
process.stdout.write(" rehash # Zsh\n");
|
|
280
|
-
}
|
|
281
|
-
function runUninstallCommand(argv) {
|
|
282
|
-
let args;
|
|
283
|
-
try {
|
|
284
|
-
args = parseUninstallArgs(argv);
|
|
285
|
-
} catch (error) {
|
|
286
|
-
printError(error instanceof Error ? error.message : String(error));
|
|
287
|
-
process.stdout.write(HELP);
|
|
288
|
-
return 2;
|
|
289
|
-
}
|
|
290
|
-
if (args.help) {
|
|
291
|
-
process.stdout.write(HELP);
|
|
292
|
-
return 0;
|
|
293
|
-
}
|
|
294
|
-
if (!args.dryRun && !args.force) {
|
|
295
|
-
printError("`clio-coder uninstall` requires --force unless you are using --dry-run");
|
|
296
|
-
process.stdout.write(HELP);
|
|
297
|
-
return 2;
|
|
298
|
-
}
|
|
299
|
-
const dirs = resolveClioDirs();
|
|
300
|
-
printHeader("Clio Coder uninstall");
|
|
301
|
-
const roots = [
|
|
302
|
-
["config", dirs.config],
|
|
303
|
-
["data", dirs.data],
|
|
304
|
-
["state", dirs.state],
|
|
305
|
-
["cache", dirs.cache]
|
|
306
|
-
];
|
|
307
|
-
for (const [label, path] of roots) report(label, path);
|
|
308
|
-
reportProjectContext(projectContextInventory(dirs.state), args.removeBinary);
|
|
309
|
-
const failures = [];
|
|
310
|
-
for (const [label, path] of roots) {
|
|
311
|
-
const failure = removePath(label, path, args.dryRun);
|
|
312
|
-
if (failure) failures.push(failure);
|
|
313
|
-
}
|
|
314
|
-
if (args.removeBinary) {
|
|
315
|
-
const failure = removeLauncher(args.dryRun);
|
|
316
|
-
if (failure) failures.push(failure);
|
|
317
|
-
}
|
|
318
|
-
resetXdgCache();
|
|
319
|
-
if (failures.length > 0) {
|
|
320
|
-
printError("uninstall did not remove everything");
|
|
321
|
-
reportRemovalFailures(`clio-coder uninstall${args.removeBinary ? " --remove-binary" : ""} --force`, failures);
|
|
322
|
-
return 1;
|
|
323
|
-
}
|
|
324
|
-
printOk(args.dryRun ? "uninstall preview complete" : "removed Clio Coder state");
|
|
325
|
-
printRemovalGuidance(args.removeBinary);
|
|
326
|
-
return 0;
|
|
327
|
-
}
|
|
328
|
-
export {
|
|
329
|
-
runUninstallCommand
|
|
330
|
-
};
|
|
331
|
-
//# sourceMappingURL=uninstall-N34PCTGJ.js.map
|