@cleocode/cleo 2026.10.3 → 2026.10.5-rc.ci.672
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/README.md +7 -0
- package/bin/cleo.js +11 -1
- package/dist/cli/adapter-OUQRSFZL.js +159 -0
- package/dist/cli/add-4SRRJL4U.js +443 -0
- package/dist/cli/add-batch-TSWICA5J.js +164 -0
- package/dist/cli/admin-L3F6CDYH.js +1428 -0
- package/dist/cli/admin-YMU55YCU.js +341 -0
- package/dist/cli/adr-XESRMFMP.js +172 -0
- package/dist/cli/agent-TAFPIYUU.js +2404 -0
- package/dist/cli/agent-outputs-HVJJIPS4.js +84 -0
- package/dist/cli/analyze-YQ22QVGW.js +49 -0
- package/dist/cli/archive-W5XX6AH7.js +65 -0
- package/dist/cli/archive-stats-HP2KPAJU.js +101 -0
- package/dist/cli/attention-7JBDCRZX.js +124 -0
- package/dist/cli/attention-ZXZANHKC.js +168 -0
- package/dist/cli/audit-ICA2SEFN.js +122 -0
- package/dist/cli/auth-DXIG5OG7.js +491 -0
- package/dist/cli/backfill-LBSYBWLR.js +156 -0
- package/dist/cli/backup-NUGBZ7NA.js +588 -0
- package/dist/cli/backup-inspect-PDRXI45A.js +26 -0
- package/dist/cli/backup-recover-TVKAPERB.js +29 -0
- package/dist/cli/blockers-ZOPCGHDW.js +55 -0
- package/dist/cli/brain-EJOBKL4A.js +397 -0
- package/dist/cli/briefing-RDQJ6WHS.js +213 -0
- package/dist/cli/caamp-Z3XPKEHB.js +181 -0
- package/dist/cli/cancel-S7EHLCJN.js +85 -0
- package/dist/cli/canon-NPF5RODM.js +142 -0
- package/dist/cli/canon-docs-2GTOLF7Y.js +26 -0
- package/dist/cli/cant-CHNN6O57.js +239 -0
- package/dist/cli/changeset-RYPHPN2B.js +246 -0
- package/dist/cli/check-C67YAU7W.js +759 -0
- package/dist/cli/check-DHMURGHC.js +924 -0
- package/dist/cli/checkpoint-UWDFOGYQ.js +128 -0
- package/dist/cli/chunk-22YPFZYB.js +91 -0
- package/dist/cli/chunk-2MGFDMDF.js +272 -0
- package/dist/cli/chunk-47JYZAMS.js +30 -0
- package/dist/cli/chunk-4JYHPP4C.js +76 -0
- package/dist/cli/chunk-4PEODTHY.js +278 -0
- package/dist/cli/chunk-4RGSNUUP.js +950 -0
- package/dist/cli/chunk-4VASFLUW.js +35 -0
- package/dist/cli/chunk-5PNI276X.js +124 -0
- package/dist/cli/chunk-6JSJNYH2.js +114 -0
- package/dist/cli/chunk-6N6WGLXE.js +63 -0
- package/dist/cli/chunk-75UH3BLS.js +210 -0
- package/dist/cli/chunk-7ACK4EIN.js +92 -0
- package/dist/cli/chunk-7NMKLVMI.js +107 -0
- package/dist/cli/chunk-7SINJXB6.js +110 -0
- package/dist/cli/chunk-7UARFJYS.js +46 -0
- package/dist/cli/chunk-7ZYPQV4N.js +90 -0
- package/dist/cli/chunk-AQCYT3L4.js +72 -0
- package/dist/cli/chunk-BQK6XTOH.js +57 -0
- package/dist/cli/chunk-C3B7C43W.js +16 -0
- package/dist/cli/chunk-CAPAGD5E.js +98 -0
- package/dist/cli/chunk-CHGEDCKG.js +77 -0
- package/dist/cli/chunk-COXFJ3PT.js +74 -0
- package/dist/cli/chunk-D7BAQNV2.js +55 -0
- package/dist/cli/chunk-EIUXVHNF.js +258 -0
- package/dist/cli/chunk-EUGB6P5V.js +173 -0
- package/dist/cli/chunk-EW2CKNNZ.js +304 -0
- package/dist/cli/chunk-FSKN4DWC.js +108 -0
- package/dist/cli/chunk-FVKLULL7.js +48 -0
- package/dist/cli/chunk-GAGUBU4Z.js +280 -0
- package/dist/cli/chunk-GKRFH2YG.js +171 -0
- package/dist/cli/chunk-GRU74UE4.js +270 -0
- package/dist/cli/chunk-GZFVDR44.js +320 -0
- package/dist/cli/chunk-HFLLZE6A.js +83 -0
- package/dist/cli/chunk-HXRXT3XU.js +78 -0
- package/dist/cli/chunk-IIOGUY3B.js +258 -0
- package/dist/cli/chunk-ILWWL462.js +60 -0
- package/dist/cli/chunk-J5USPJKZ.js +48 -0
- package/dist/cli/chunk-KEQS36GD.js +88 -0
- package/dist/cli/chunk-L7ONYSV6.js +2497 -0
- package/dist/cli/chunk-LVGIFMCV.js +163 -0
- package/dist/cli/chunk-NEFMQYLE.js +656 -0
- package/dist/cli/chunk-NU6CQQVB.js +4501 -0
- package/dist/cli/chunk-OILHT47L.js +252 -0
- package/dist/cli/chunk-PKKZPOOP.js +352 -0
- package/dist/cli/chunk-PN4WW5VX.js +66 -0
- package/dist/cli/chunk-PSJ33WVO.js +56 -0
- package/dist/cli/chunk-QA6T2LQ5.js +71 -0
- package/dist/cli/chunk-QJJWWCIC.js +288 -0
- package/dist/cli/chunk-QKMBWYAS.js +93 -0
- package/dist/cli/chunk-QWNKLLLG.js +84 -0
- package/dist/cli/chunk-QWUFFDL3.js +85 -0
- package/dist/cli/chunk-QY76BRUZ.js +35 -0
- package/dist/cli/chunk-R45KVF5Y.js +117 -0
- package/dist/cli/chunk-RRKP7HLU.js +66 -0
- package/dist/cli/chunk-SXXOC6KZ.js +209 -0
- package/dist/cli/chunk-T6GZJYL3.js +108 -0
- package/dist/cli/chunk-TLQ37HRE.js +67 -0
- package/dist/cli/chunk-TPTNEJZJ.js +52 -0
- package/dist/cli/chunk-TYC7G5LF.js +100 -0
- package/dist/cli/chunk-UWCZY52R.js +766 -0
- package/dist/cli/chunk-VB3LDPL5.js +46 -0
- package/dist/cli/chunk-VLEYOOPH.js +31 -0
- package/dist/cli/chunk-W3JLYKKY.js +140 -0
- package/dist/cli/chunk-WWCYZYSN.js +56 -0
- package/dist/cli/chunk-XA5WISNV.js +52 -0
- package/dist/cli/chunk-XHRZ7OYZ.js +132 -0
- package/dist/cli/chunk-XLPMIGJJ.js +148 -0
- package/dist/cli/chunk-YY66LFZF.js +29 -0
- package/dist/cli/chunk-ZMGDZMSJ.js +210 -0
- package/dist/cli/claim-IGOG2QOC.js +97 -0
- package/dist/cli/classify-MG4N7GMQ.js +117 -0
- package/dist/cli/cli-A23Q335V.js +51 -0
- package/dist/cli/cloud-SILYJVKO.js +731 -0
- package/dist/cli/cockpit-RZKLGYPN.js +790 -0
- package/dist/cli/code-H2FQCVMW.js +178 -0
- package/dist/cli/complete-JLX7NBI4.js +35 -0
- package/dist/cli/complexity-OKV7PVZH.js +57 -0
- package/dist/cli/compliance-QMGZHJNQ.js +277 -0
- package/dist/cli/conduit-4H32UYEA.js +308 -0
- package/dist/cli/conduit-EY54WTZA.js +535 -0
- package/dist/cli/config-TDYOC7XO.js +519 -0
- package/dist/cli/consensus-4XCOFPPT.js +122 -0
- package/dist/cli/context-FN4YTGHD.js +142 -0
- package/dist/cli/contribution-7RWFBJLC.js +112 -0
- package/dist/cli/curator-HKZJCVRL.js +139 -0
- package/dist/cli/current-B2NU7V3G.js +43 -0
- package/dist/cli/daemon-GBD4TVCD.js +452 -0
- package/dist/cli/dash-IGDANIE5.js +71 -0
- package/dist/cli/decide-26SXC2V6.js +416 -0
- package/dist/cli/decompose-LQ76TEZG.js +78 -0
- package/dist/cli/decomposition-WFRWNUSJ.js +122 -0
- package/dist/cli/delete-T5DUQHOX.js +69 -0
- package/dist/cli/deps-UTPZJBXL.js +462 -0
- package/dist/cli/detect-FFZSMVDT.js +46 -0
- package/dist/cli/detect-drift-TVCJOFYJ.js +408 -0
- package/dist/cli/diagnostics-GN5CVD3N.js +93 -0
- package/dist/cli/diagnostics-ZNBKH6GX.js +133 -0
- package/dist/cli/docs-CLQKEEUK.js +1710 -0
- package/dist/cli/docs-DPPDFTWR.js +3098 -0
- package/dist/cli/doctor-GPENOP4N.js +1270 -0
- package/dist/cli/doctor-ac-bindings-S3IOEFP4.js +26 -0
- package/dist/cli/doctor-acceptance-drift-VNFKPBSQ.js +26 -0
- package/dist/cli/doctor-credentials-A5H4JMTF.js +26 -0
- package/dist/cli/doctor-db-substrate-FGCISE4Z.js +27 -0
- package/dist/cli/doctor-dep-cycles-BKKKHHYG.js +26 -0
- package/dist/cli/doctor-exodus-ND2DH2KP.js +26 -0
- package/dist/cli/doctor-exodus-residue-4EMRYMEQ.js +26 -0
- package/dist/cli/doctor-fk-check-VY3RIQV3.js +26 -0
- package/dist/cli/doctor-global-delivery-JN6IGHUL.js +26 -0
- package/dist/cli/doctor-heavy-command-hook-XSN44WXU.js +26 -0
- package/dist/cli/doctor-legacy-backups-QAG5NHYP.js +26 -0
- package/dist/cli/doctor-legacy-reaper-CIRGFE6R.js +26 -0
- package/dist/cli/doctor-malformed-ids-WL7HT4TB.js +26 -0
- package/dist/cli/doctor-manifest-rows-SMQCKJ2T.js +26 -0
- package/dist/cli/doctor-memory-guard-LJDOJG76.js +26 -0
- package/dist/cli/doctor-migrations-ETQPFNUP.js +26 -0
- package/dist/cli/doctor-nexus-residency-A4JMKBEJ.js +26 -0
- package/dist/cli/doctor-project-identity-FFQJ5LNX.js +26 -0
- package/dist/cli/doctor-projects-MFUTKRHP.js +30 -0
- package/dist/cli/doctor-projects-registry-76X6VTGM.js +26 -0
- package/dist/cli/doctor-release-readiness-QJCOPFTK.js +26 -0
- package/dist/cli/doctor-repair-AU76FIKY.js +26 -0
- package/dist/cli/doctor-row-identity-KW6JYZQE.js +26 -0
- package/dist/cli/doctor-skill-fixtures-G3T7JUHS.js +26 -0
- package/dist/cli/doctor-split-brain-FUW6L7FS.js +26 -0
- package/dist/cli/doctor-superseded-store-DUHGSBLC.js +26 -0
- package/dist/cli/doctor-sync-journal-SXMUIKF7.js +26 -0
- package/dist/cli/doctor-sync-triggers-6WNJZFRM.js +26 -0
- package/dist/cli/doctor-tool-locks-66LSLUBN.js +26 -0
- package/dist/cli/doctor-twin-collapse-AYBYBFC4.js +26 -0
- package/dist/cli/doctor-worktree-stores-C5XEH5OG.js +26 -0
- package/dist/cli/done-R64XRZ32.js +196 -0
- package/dist/cli/dynamic-RR4HB7BB.js +29 -0
- package/dist/cli/entities-3JIHDIOK.js +361 -0
- package/dist/cli/event-45KEWV5H.js +372 -0
- package/dist/cli/exists-BEDZS5RI.js +65 -0
- package/dist/cli/exodus-DUX62344.js +401 -0
- package/dist/cli/export-C5PQIQ5O.js +93 -0
- package/dist/cli/export-tasks-CUXDZPJB.js +97 -0
- package/dist/cli/federation-ESM35EGG.js +145 -0
- package/dist/cli/find-5EUZHHQJ.js +178 -0
- package/dist/cli/focus-6AH4KLRO.js +368 -0
- package/dist/cli/focus-ANKAIRO5.js +56 -0
- package/dist/cli/gateway-2GW2KTK3.js +77 -0
- package/dist/cli/gateway-auto-start-EDK7XI6E.js +36 -0
- package/dist/cli/gc-CTOQLUSA.js +291 -0
- package/dist/cli/go-YJPNHHYT.js +206 -0
- package/dist/cli/goal-4GW4G77D.js +213 -0
- package/dist/cli/grade-25WSZH4X.js +57 -0
- package/dist/cli/graph-JUO3TMF3.js +879 -0
- package/dist/cli/history-NACNUQTC.js +138 -0
- package/dist/cli/hook-UF7J7R6D.js +57 -0
- package/dist/cli/hook-entry.js +244 -19
- package/dist/cli/hygiene-3QZ2NI7P.js +55 -0
- package/dist/cli/import-7ESGL5SS.js +89 -0
- package/dist/cli/import-tasks-FLE2RPBR.js +109 -0
- package/dist/cli/index.js +601 -94637
- package/dist/cli/init-AN4DZ2XO.js +40 -0
- package/dist/cli/inject-HQWA5GWY.js +83 -0
- package/dist/cli/install-global-YQV4W5OG.js +95 -0
- package/dist/cli/intelligence-OFFNQGHE.js +238 -0
- package/dist/cli/intelligence-QIC4SN4X.js +182 -0
- package/dist/cli/issue-P5RNMRDG.js +159 -0
- package/dist/cli/janitor-ZNCFQ7E3.js +111 -0
- package/dist/cli/labels-ORBM3T57.js +88 -0
- package/dist/cli/lifecycle-MHR22TVI.js +273 -0
- package/dist/cli/list-LB6GCYYU.js +109 -0
- package/dist/cli/llm-H7LZWQKX.js +130 -0
- package/dist/cli/llm-OTJWPMGI.js +704 -0
- package/dist/cli/llm-cost-MLMXEAR4.js +25 -0
- package/dist/cli/llm-stream-AAEUNKRP.js +27 -0
- package/dist/cli/log-W2A5M2NA.js +76 -0
- package/dist/cli/login-SIXFFZSP.js +45 -0
- package/dist/cli/logout-G3KVLQQM.js +74 -0
- package/dist/cli/manifest-G4T6EBSI.js +354 -0
- package/dist/cli/map-VU5M72TK.js +53 -0
- package/dist/cli/memory-2E27G2G5.js +1952 -0
- package/dist/cli/memory-IAEYKXG6.js +1895 -0
- package/dist/cli/migrate-agents-v2-A52QIYNJ.js +33 -0
- package/dist/cli/migrate-claude-mem-TPDW3R4Z.js +206 -0
- package/dist/cli/next-SVH4LIDY.js +57 -0
- package/dist/cli/nexus-FPQV2EAF.js +1059 -0
- package/dist/cli/nexus-XSFXN5E6.js +2924 -0
- package/dist/cli/ops-K6LHY5J6.js +52 -0
- package/dist/cli/orchestrate-CZ2J6W3L.js +1650 -0
- package/dist/cli/orchestrate-HURUCQFT.js +950 -0
- package/dist/cli/otel-JCNPVJLZ.js +188 -0
- package/dist/cli/phase-VDFRASSO.js +221 -0
- package/dist/cli/pipeline-TCZPOEDR.js +697 -0
- package/dist/cli/pivot-V5MSQZ7L.js +88 -0
- package/dist/cli/plan-SQUGCKSM.js +49 -0
- package/dist/cli/playbook-L47GLDQD.js +230 -0
- package/dist/cli/playbook-NJVO4R6P.js +33 -0
- package/dist/cli/project-YZEC7GYF.js +331 -0
- package/dist/cli/promote-FINF4HVK.js +53 -0
- package/dist/cli/provenance-3TUWVBFR.js +141 -0
- package/dist/cli/provenance-YZG33JGM.js +129 -0
- package/dist/cli/provider-23JVLLG3.js +213 -0
- package/dist/cli/reason-FHN54O7O.js +138 -0
- package/dist/cli/reconcile-MOM5T4AX.js +128 -0
- package/dist/cli/refresh-memory-3OSTRAVK.js +45 -0
- package/dist/cli/relates-6FWUFUS2.js +260 -0
- package/dist/cli/release-G2DPSG5M.js +347 -0
- package/dist/cli/release-URX6JHZ2.js +525 -0
- package/dist/cli/remote-VIULU2T5.js +279 -0
- package/dist/cli/renderers-TGSW77J4.js +37 -0
- package/dist/cli/reorder-UIPN6TQY.js +87 -0
- package/dist/cli/reparent-ALOWWUIU.js +59 -0
- package/dist/cli/req-RH2Y3H7A.js +130 -0
- package/dist/cli/research-G2Y72HRC.js +366 -0
- package/dist/cli/restore-VBR5XNML.js +470 -0
- package/dist/cli/revert-32LDNSGP.js +240 -0
- package/dist/cli/roadmap-LFU3AG7D.js +62 -0
- package/dist/cli/run-HXRILSR7.js +245 -0
- package/dist/cli/safestop-Z5UC7NGQ.js +89 -0
- package/dist/cli/saga-Y6FZS6AM.js +286 -0
- package/dist/cli/schema-OOOKLWUE.js +195 -0
- package/dist/cli/self-update-26SOTJMH.js +504 -0
- package/dist/cli/selfimprove-4SMOCLUV.js +89 -0
- package/dist/cli/selfimprove-EB4RQLP4.js +139 -0
- package/dist/cli/sentient-QPETVE53.js +254 -0
- package/dist/cli/sentient-RGMWR4XJ.js +1088 -0
- package/dist/cli/sequence-H7DSAJPF.js +94 -0
- package/dist/cli/service-EK5MGB2D.js +156 -0
- package/dist/cli/service-GLOMZWPQ.js +437 -0
- package/dist/cli/session-HYUXAQGC.js +708 -0
- package/dist/cli/session-N5ISU56W.js +568 -0
- package/dist/cli/setup-L3YYV53D.js +323 -0
- package/dist/cli/show-364V3KY2.js +123 -0
- package/dist/cli/skill-F2KR6HW5.js +84 -0
- package/dist/cli/skills-FS3DCP6E.js +929 -0
- package/dist/cli/smoke-provider-SKUFMZXU.js +218 -0
- package/dist/cli/snapshot-EGXEQ5PR.js +120 -0
- package/dist/cli/src-LYLXHXHH.js +80 -0
- package/dist/cli/start-6DXOCCKL.js +68 -0
- package/dist/cli/stats-UVUQEGYC.js +96 -0
- package/dist/cli/status-XLKYLN42.js +157 -0
- package/dist/cli/sticky-VSTQ2I2O.js +264 -0
- package/dist/cli/sticky-XZXZDCFW.js +339 -0
- package/dist/cli/stop-VNOAFWNB.js +43 -0
- package/dist/cli/sync-YYPARW3A.js +155 -0
- package/dist/cli/tasks-C24KHTFF.js +1118 -0
- package/dist/cli/tasks-LBJC7CZV.js +175 -0
- package/dist/cli/telemetry-CU7W5WAY.js +120 -0
- package/dist/cli/templates-G42JBUY4.js +609 -0
- package/dist/cli/testing-HSRITHEY.js +147 -0
- package/dist/cli/token-J74E7TSU.js +221 -0
- package/dist/cli/tools-BI74W7VE.js +652 -0
- package/dist/cli/transcript-RGK7RSGQ.js +440 -0
- package/dist/cli/tui-BPUFHYKK.js +51 -0
- package/dist/cli/update-2KQWA27S.js +478 -0
- package/dist/cli/update-check-entry.js +124 -0
- package/dist/cli/update-notice-6SQ6WPQG.js +68 -0
- package/dist/cli/upgrade-E2MJAPC7.js +136 -0
- package/dist/cli/upgrade-XRSQ4RWH.js +243 -0
- package/dist/cli/verify-WASRGDBA.js +191 -0
- package/dist/cli/web-NJ3P67EU.js +275 -0
- package/dist/cli/workgraph-OHJ2VKJD.js +232 -0
- package/dist/cli/worktree-FVQLORFY.js +371 -0
- package/dist/cli/worktree-ZJ6JTQNG.js +287 -0
- package/package.json +13 -13
- package/studio-dist/client/_app/immutable/chunks/{DMj27Pxj.js → AH7dIemv.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{Dc2owyvE.js → BDgH40i3.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/BXDCSJ7U.js +1 -0
- package/studio-dist/client/_app/immutable/chunks/{qq3pe1aT.js → Gg4iYl59.js} +1 -1
- package/studio-dist/client/_app/immutable/entry/{app.CHWXLeE9.js → app.DUDNK-37.js} +2 -2
- package/studio-dist/client/_app/immutable/entry/start.DNmZ0pA4.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{0.DmKQGvFh.js → 0.DWqP3ail.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.DqJk_REO.js → 1.CZGVUP5B.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{15.GUy6kdW1.js → 15.DGaflZRS.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16.CcnKZ8f9.js → 16.uYlarGXl.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.DAlQF3lQ.js → 17.CZMR0E47.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.vQFr-vFj.js → 18.CBC-AKH_.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{20.GVOj5j_r.js → 20.BGi43MvQ.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{24.2-wC6DOh.js → 24.Dv8ftCyR.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/25.DQPVlTDQ.js +39 -0
- package/studio-dist/client/_app/immutable/nodes/{26.C3rNqzZF.js → 26.Cl800304.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{3.b-7pzc3M.js → 3.D_fQKj9f.js} +1 -1
- package/studio-dist/client/_app/version.json +1 -1
- package/studio-dist/server/chunks/{0-BaCce-O1.js → 0-BpOagOst.js} +3 -3
- package/studio-dist/server/chunks/1-D0oRGR-C.js +9 -0
- package/studio-dist/server/chunks/{15-DRMOSIC9.js → 15-BcjHz7Tv.js} +3 -3
- package/studio-dist/server/chunks/{16-BulXhoZZ.js → 16-CXm8TUk7.js} +3 -3
- package/studio-dist/server/chunks/{17-DUEOCM0H.js → 17-mSgUK-cp.js} +3 -3
- package/studio-dist/server/chunks/{18-DP7Q8zPs.js → 18-BtfnIw1d.js} +3 -3
- package/studio-dist/server/chunks/{20-9ta6MI7q.js → 20-By1e4QDS.js} +3 -3
- package/studio-dist/server/chunks/{24-DysdL1ab.js → 24-0i2YLVxG.js} +3 -3
- package/studio-dist/server/chunks/{dist-CdoCt9zT.js → 25-DPsrqbrh.js} +797 -10736
- package/studio-dist/server/chunks/{26-Df4YXgg0.js → 26-P0XkOibm.js} +3 -3
- package/studio-dist/server/chunks/{3-BEhOhYpL.js → 3-WudjUK7e.js} +3 -3
- package/studio-dist/server/chunks/{_layout.svelte-CnLcXYG-.js → _layout.svelte-D9m81Rle.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-DGhXqeRc.js → _page.svelte-2PDLOF83.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-Dv8tmDEC.js → _page.svelte-BjE3jm2K.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-C0qgUvzA.js → _page.svelte-Clc0vmiZ.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-ui7LnWkL.js → _page.svelte-DABdRT3h.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-HUqTICJR.js → _page.svelte-DG3PjiHj.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DzcZljiy.js → _page.svelte-Edy9CaE8.js} +20 -7
- package/studio-dist/server/chunks/{_page.svelte-DOl0DGOO.js → _page.svelte-Hrf3-ZR8.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-Da4q5l93.js → _page.svelte-VB4O4Nl5.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-CbyEPj2j.js → _page.svelte-d3jEgjsI.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-P4wVVksg.js → _server.ts-BcRFsyo3.js} +4 -5
- package/studio-dist/server/chunks/{_server.ts-Cr57EKWf.js → _server.ts-CEWpIFrj.js} +6 -5
- package/studio-dist/server/chunks/{_server.ts-CnKVmf_s.js → _server.ts-CLVdVIF9.js} +2 -2
- package/studio-dist/server/chunks/{_server.ts-C0evMKCk.js → _server.ts-D_j7aSy5.js} +6 -5
- package/studio-dist/server/chunks/{_server.ts-2BazvYRP.js → _server.ts-QEZF8h2q.js} +4 -5
- package/studio-dist/server/chunks/{client-CPM4LrO2.js → client-Kp1dP1od.js} +2 -2
- package/studio-dist/server/chunks/{error.svelte-ShcZo43D.js → error.svelte-WOCioJVX.js} +3 -3
- package/studio-dist/server/chunks/{hooks.server-D2qbf3Zp.js → hooks.server-DH9zkIrJ.js} +3 -1
- package/studio-dist/server/chunks/{http-BiQjEmVU.js → http-DT5kxaWk.js} +5 -4
- package/studio-dist/server/chunks/{internal-Cgsrya1j.js → internal-z0vqd5_u.js} +3 -3
- package/studio-dist/server/chunks/operations-registry-DdzmYzqX.js +10584 -0
- package/studio-dist/server/chunks/{stores-BGrpEDMK.js → stores-s2kaL315.js} +2 -2
- package/studio-dist/server/index.js +1 -1
- package/studio-dist/server/manifest.js +17 -17
- package/studio-dist/client/_app/immutable/chunks/Bw6J8NDM.js +0 -1
- package/studio-dist/client/_app/immutable/entry/start.C9bwPpvc.js +0 -1
- package/studio-dist/client/_app/immutable/nodes/25.D1vYaH8g.js +0 -39
- package/studio-dist/server/chunks/1-CVo7Nk6d.js +0 -9
- package/studio-dist/server/chunks/25-CYsps38R.js +0 -366
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
|
|
3
|
+
if (globalThis[_installed]) return;
|
|
4
|
+
globalThis[_installed] = true;
|
|
5
|
+
const _origEmitWarning = process.emitWarning;
|
|
6
|
+
process.emitWarning = function(warning, type, code, ctor) {
|
|
7
|
+
if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return _origEmitWarning.call(process, warning, type, code, ctor);
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
|
|
17
|
+
// packages/cleo/src/dispatch/domains/_routing.ts
|
|
18
|
+
function routeByParam(params, paramName, routes, defaultRoute) {
|
|
19
|
+
const value = params?.[paramName] ?? defaultRoute;
|
|
20
|
+
if (!value) {
|
|
21
|
+
const available = Object.keys(routes).join(", ");
|
|
22
|
+
throw new Error(`Missing required param '${paramName}'. Available: ${available}`);
|
|
23
|
+
}
|
|
24
|
+
const handler = routes[value];
|
|
25
|
+
if (!handler) {
|
|
26
|
+
const available = Object.keys(routes).join(", ");
|
|
27
|
+
throw new Error(`Unknown ${paramName} '${value}'. Available: ${available}`);
|
|
28
|
+
}
|
|
29
|
+
return handler();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
routeByParam
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=chunk-QY76BRUZ.js.map
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
|
|
3
|
+
if (globalThis[_installed]) return;
|
|
4
|
+
globalThis[_installed] = true;
|
|
5
|
+
const _origEmitWarning = process.emitWarning;
|
|
6
|
+
process.emitWarning = function(warning, type, code, ctor) {
|
|
7
|
+
if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return _origEmitWarning.call(process, warning, type, code, ctor);
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
import {
|
|
17
|
+
defineCommand
|
|
18
|
+
} from "./chunk-PKKZPOOP.js";
|
|
19
|
+
import {
|
|
20
|
+
cliOutput
|
|
21
|
+
} from "./chunk-4RGSNUUP.js";
|
|
22
|
+
|
|
23
|
+
// packages/cleo/src/cli/commands/doctor-tool-locks.ts
|
|
24
|
+
import {
|
|
25
|
+
admissionCapacityBytes,
|
|
26
|
+
entryLiveness,
|
|
27
|
+
readForeignEntries,
|
|
28
|
+
readLedger,
|
|
29
|
+
reapLedger,
|
|
30
|
+
removeLedgerEntry
|
|
31
|
+
} from "@cleocode/core/resources/admission-ledger.js";
|
|
32
|
+
import { CANONICAL_TOOLS } from "@cleocode/core/tasks/tool-resolver.js";
|
|
33
|
+
var doctorToolLocksCommand = defineCommand({
|
|
34
|
+
meta: {
|
|
35
|
+
name: "tool-locks",
|
|
36
|
+
description: "Inspect the machine-wide admission ledger: which heavy runs hold the memory budget or wait for it, by which pid, and whether that pid is still alive. Read-only; --reap drops entries whose holder is provably gone; --remove <id> drops one entry."
|
|
37
|
+
},
|
|
38
|
+
args: {
|
|
39
|
+
reap: {
|
|
40
|
+
type: "boolean",
|
|
41
|
+
description: "Drop entries whose holder process and tool process groups are gone. Fails safe: an unreadable probe or a fresh heartbeat counts as ALIVE and is never reaped."
|
|
42
|
+
},
|
|
43
|
+
remove: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Drop the entry with this id whatever its liveness (an entry whose holder cannot be identified is otherwise kept until its heartbeat is 10 minutes old)."
|
|
46
|
+
},
|
|
47
|
+
tool: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Restrict to one canonical tool (test, build, lint, typecheck, \u2026)."
|
|
50
|
+
},
|
|
51
|
+
json: { type: "boolean", description: "Output as JSON" },
|
|
52
|
+
human: { type: "boolean", description: "Force human-readable output" },
|
|
53
|
+
quiet: { type: "boolean", description: "Suppress non-essential output" }
|
|
54
|
+
},
|
|
55
|
+
async run({ args }) {
|
|
56
|
+
const requested = typeof args.tool === "string" && args.tool.length > 0 ? args.tool : null;
|
|
57
|
+
if (requested && !CANONICAL_TOOLS.some((t) => t === requested)) {
|
|
58
|
+
cliOutput(
|
|
59
|
+
{ error: `Unknown canonical tool "${requested}"`, known: [...CANONICAL_TOOLS] },
|
|
60
|
+
{ command: "doctor", operation: "doctor.tool-locks.run" }
|
|
61
|
+
);
|
|
62
|
+
process.exitCode = 1;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const reaped = args.reap === true ? await reapLedger() : [];
|
|
66
|
+
const removeId = typeof args.remove === "string" && args.remove.length > 0 ? args.remove : null;
|
|
67
|
+
const removed = removeId === null ? null : await removeLedgerEntry(removeId);
|
|
68
|
+
const now = Date.now();
|
|
69
|
+
const entries = readLedger().filter((e) => requested === null || e.label === `tool:${requested}`).map((e) => {
|
|
70
|
+
const alive = entryLiveness(e, now) === "alive";
|
|
71
|
+
return {
|
|
72
|
+
id: e.id,
|
|
73
|
+
label: e.label,
|
|
74
|
+
state: e.state,
|
|
75
|
+
pid: e.pid,
|
|
76
|
+
host: e.host,
|
|
77
|
+
command: e.command,
|
|
78
|
+
cwd: e.cwd,
|
|
79
|
+
footprintBytes: e.footprintBytes,
|
|
80
|
+
// T13132: what the run covers (`full` = a whole-suite run) and its task.
|
|
81
|
+
scope: e.scope ?? null,
|
|
82
|
+
task: e.task ?? null,
|
|
83
|
+
enqueuedAt: new Date(e.enqueuedAtMs).toISOString(),
|
|
84
|
+
admittedAt: e.admittedAtMs === null ? null : new Date(e.admittedAtMs).toISOString(),
|
|
85
|
+
toolGroups: e.toolGroups,
|
|
86
|
+
alive,
|
|
87
|
+
orphaned: !alive
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
const orphaned = entries.filter((e) => e.orphaned);
|
|
91
|
+
const held = entries.filter((e) => e.state === "admitted");
|
|
92
|
+
const foreignEntries = requested === null ? readForeignEntries() : [];
|
|
93
|
+
cliOutput(
|
|
94
|
+
{
|
|
95
|
+
capacityBytes: admissionCapacityBytes(),
|
|
96
|
+
usedBytes: held.reduce((n, e) => n + e.footprintBytes, 0),
|
|
97
|
+
entries,
|
|
98
|
+
heldCount: held.length,
|
|
99
|
+
waitingCount: entries.length - held.length,
|
|
100
|
+
orphanedCount: orphaned.length,
|
|
101
|
+
foreignEntries,
|
|
102
|
+
reaped,
|
|
103
|
+
reapApplied: args.reap === true,
|
|
104
|
+
...removeId === null ? {} : { removeId, removed }
|
|
105
|
+
},
|
|
106
|
+
{ command: "doctor", operation: "doctor.tool-locks.run" }
|
|
107
|
+
);
|
|
108
|
+
if ((orphaned.length > 0 || removed === false) && (process.exitCode ?? 0) === 0) {
|
|
109
|
+
process.exitCode = 1;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
export {
|
|
115
|
+
doctorToolLocksCommand
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=chunk-R45KVF5Y.js.map
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
|
|
3
|
+
if (globalThis[_installed]) return;
|
|
4
|
+
globalThis[_installed] = true;
|
|
5
|
+
const _origEmitWarning = process.emitWarning;
|
|
6
|
+
process.emitWarning = function(warning, type, code, ctor) {
|
|
7
|
+
if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return _origEmitWarning.call(process, warning, type, code, ctor);
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
import {
|
|
17
|
+
OPERATIONS
|
|
18
|
+
} from "./chunk-4VASFLUW.js";
|
|
19
|
+
|
|
20
|
+
// packages/cleo/src/cli/lib/registry-args.ts
|
|
21
|
+
import { paramsToCittyArgs } from "@cleocode/contracts/operations/params.js";
|
|
22
|
+
var IDEMPOTENCY_KEY_PARAM = {
|
|
23
|
+
name: "idempotencyKey",
|
|
24
|
+
type: "string",
|
|
25
|
+
required: false,
|
|
26
|
+
description: "Optional retry token for safely replaying idempotent mutating commands.",
|
|
27
|
+
cli: { flag: "idempotency-key" }
|
|
28
|
+
};
|
|
29
|
+
function getOperationParams(gateway, domain, operation) {
|
|
30
|
+
const def = OPERATIONS.find(
|
|
31
|
+
(o) => o.gateway === gateway && o.domain === domain && o.operation === operation
|
|
32
|
+
);
|
|
33
|
+
const params = def?.params ?? [];
|
|
34
|
+
if (!def || def.gateway !== "mutate" || !def.idempotent) return params;
|
|
35
|
+
if (params.some((param) => param.name === IDEMPOTENCY_KEY_PARAM.name)) return params;
|
|
36
|
+
return [...params, IDEMPOTENCY_KEY_PARAM];
|
|
37
|
+
}
|
|
38
|
+
function registryParamsToDispatchPayload(params, args) {
|
|
39
|
+
const payload = {};
|
|
40
|
+
for (const param of params) {
|
|
41
|
+
const flag = param.cli?.flag ?? param.name;
|
|
42
|
+
const raw = args[flag];
|
|
43
|
+
if (raw === void 0 || raw === null) continue;
|
|
44
|
+
if (param.type === "number") {
|
|
45
|
+
payload[param.name] = typeof raw === "number" ? raw : Number(String(raw));
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (param.type === "boolean") {
|
|
49
|
+
payload[param.name] = typeof raw === "boolean" ? raw : String(raw) !== "false";
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (param.type === "array") {
|
|
53
|
+
payload[param.name] = Array.isArray(raw) ? raw : String(raw).split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
payload[param.name] = raw;
|
|
57
|
+
}
|
|
58
|
+
return payload;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export {
|
|
62
|
+
getOperationParams,
|
|
63
|
+
registryParamsToDispatchPayload,
|
|
64
|
+
paramsToCittyArgs
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=chunk-RRKP7HLU.js.map
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
|
|
3
|
+
if (globalThis[_installed]) return;
|
|
4
|
+
globalThis[_installed] = true;
|
|
5
|
+
const _origEmitWarning = process.emitWarning;
|
|
6
|
+
process.emitWarning = function(warning, type, code, ctor) {
|
|
7
|
+
if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return _origEmitWarning.call(process, warning, type, code, ctor);
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
|
|
17
|
+
// packages/cleo/src/dispatch/domains/check/canon-docs.ts
|
|
18
|
+
import { execFileSync } from "node:child_process";
|
|
19
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
20
|
+
import { join, sep } from "node:path";
|
|
21
|
+
import { resolveCanonDocPathPolicy } from "@cleocode/core/session/canon-lint";
|
|
22
|
+
import { parse as parseYaml } from "yaml";
|
|
23
|
+
var CanonDocsDiffError = class extends Error {
|
|
24
|
+
/** Stable diagnostic code for an unavailable Git candidate inventory. */
|
|
25
|
+
code = "E_CANON_DIFF_FAILED";
|
|
26
|
+
/**
|
|
27
|
+
* Preserve the requested scope and underlying command failure.
|
|
28
|
+
*
|
|
29
|
+
* @param projectRoot - Repository that could not be assessed.
|
|
30
|
+
* @param baseRef - Requested Git comparison base.
|
|
31
|
+
* @param cause - Original Git process failure.
|
|
32
|
+
*/
|
|
33
|
+
constructor(projectRoot, baseRef, cause) {
|
|
34
|
+
super(
|
|
35
|
+
`E_CANON_DIFF_FAILED: Cannot assess docs in ${projectRoot} against ${baseRef}: ${cause.message}`,
|
|
36
|
+
{ cause }
|
|
37
|
+
);
|
|
38
|
+
this.name = "CanonDocsDiffError";
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
function listAddedMarkdownFiles(projectRoot, baseRef) {
|
|
42
|
+
try {
|
|
43
|
+
const out = execFileSync(
|
|
44
|
+
"git",
|
|
45
|
+
[
|
|
46
|
+
"diff",
|
|
47
|
+
"--diff-filter=A",
|
|
48
|
+
"--name-only",
|
|
49
|
+
"-z",
|
|
50
|
+
"--end-of-options",
|
|
51
|
+
`${baseRef}...HEAD`,
|
|
52
|
+
"--"
|
|
53
|
+
],
|
|
54
|
+
{
|
|
55
|
+
cwd: projectRoot,
|
|
56
|
+
encoding: "utf8",
|
|
57
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
58
|
+
timeout: 3e4
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
return out.split("\0").filter((line) => line.length > 0 && line.endsWith(".md"));
|
|
62
|
+
} catch (error) {
|
|
63
|
+
throw new CanonDocsDiffError(
|
|
64
|
+
projectRoot,
|
|
65
|
+
baseRef,
|
|
66
|
+
error instanceof Error ? error : new Error(String(error))
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function validateCanonRegistry(raw, source) {
|
|
71
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
72
|
+
throw new Error(`${source}: top-level value must be an object`);
|
|
73
|
+
}
|
|
74
|
+
const obj = raw;
|
|
75
|
+
const version = obj["version"];
|
|
76
|
+
if (typeof version !== "number" || version !== 1) {
|
|
77
|
+
throw new Error(`${source}: 'version' must be the integer 1 (got ${String(version)})`);
|
|
78
|
+
}
|
|
79
|
+
const kindsRaw = obj["kinds"];
|
|
80
|
+
if (kindsRaw === null || typeof kindsRaw !== "object" || Array.isArray(kindsRaw)) {
|
|
81
|
+
throw new Error(`${source}: 'kinds' must be an object`);
|
|
82
|
+
}
|
|
83
|
+
const kinds = {};
|
|
84
|
+
for (const [kindId, entryRaw] of Object.entries(kindsRaw)) {
|
|
85
|
+
kinds[kindId] = validateKindEntry(kindId, entryRaw, source);
|
|
86
|
+
}
|
|
87
|
+
const similarity = validateSimilarity(obj["similarity"], source);
|
|
88
|
+
return similarity !== void 0 ? { version, kinds, similarity } : { version, kinds };
|
|
89
|
+
}
|
|
90
|
+
function validateSimilarity(raw, source) {
|
|
91
|
+
if (raw === void 0 || raw === null) {
|
|
92
|
+
return void 0;
|
|
93
|
+
}
|
|
94
|
+
if (typeof raw !== "object" || Array.isArray(raw)) {
|
|
95
|
+
throw new Error(`${source}: 'similarity' must be an object`);
|
|
96
|
+
}
|
|
97
|
+
const obj = raw;
|
|
98
|
+
const warnThresholdRaw = obj["warnThreshold"];
|
|
99
|
+
let warnThreshold = 0.85;
|
|
100
|
+
if (warnThresholdRaw !== void 0) {
|
|
101
|
+
if (typeof warnThresholdRaw !== "number" || Number.isNaN(warnThresholdRaw) || warnThresholdRaw < 0 || warnThresholdRaw > 1) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`${source}: 'similarity.warnThreshold' must be a number in [0, 1] (got ${String(warnThresholdRaw)})`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
warnThreshold = warnThresholdRaw;
|
|
107
|
+
}
|
|
108
|
+
const modeRaw = obj["mode"];
|
|
109
|
+
let mode = "warn";
|
|
110
|
+
if (modeRaw !== void 0) {
|
|
111
|
+
if (modeRaw !== "warn" && modeRaw !== "block") {
|
|
112
|
+
throw new Error(
|
|
113
|
+
`${source}: 'similarity.mode' must be 'warn' or 'block' (got ${String(modeRaw)})`
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
mode = modeRaw;
|
|
117
|
+
}
|
|
118
|
+
return { warnThreshold, mode };
|
|
119
|
+
}
|
|
120
|
+
function validateKindEntry(kindId, raw, source) {
|
|
121
|
+
const where = `${source} kinds.${kindId}`;
|
|
122
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
123
|
+
throw new Error(`${where}: must be an object`);
|
|
124
|
+
}
|
|
125
|
+
const obj = raw;
|
|
126
|
+
const canonicalHome = obj["canonicalHome"];
|
|
127
|
+
if (canonicalHome !== "ssot" && canonicalHome !== "ssot-first") {
|
|
128
|
+
throw new Error(
|
|
129
|
+
`${where}: 'canonicalHome' must be 'ssot' or 'ssot-first' (got ${String(canonicalHome)})`
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
const publishMirror = obj["publishMirror"];
|
|
133
|
+
if (typeof publishMirror !== "string" || publishMirror.length === 0) {
|
|
134
|
+
throw new Error(`${where}: 'publishMirror' must be a non-empty string`);
|
|
135
|
+
}
|
|
136
|
+
const rawMdAllowed = obj["rawMdAllowed"];
|
|
137
|
+
if (typeof rawMdAllowed !== "boolean") {
|
|
138
|
+
throw new Error(`${where}: 'rawMdAllowed' must be a boolean`);
|
|
139
|
+
}
|
|
140
|
+
const rawMdPathsRaw = obj["rawMdPaths"];
|
|
141
|
+
let rawMdPaths;
|
|
142
|
+
if (rawMdPathsRaw !== void 0) {
|
|
143
|
+
if (!Array.isArray(rawMdPathsRaw)) {
|
|
144
|
+
throw new Error(`${where}: 'rawMdPaths' must be an array`);
|
|
145
|
+
}
|
|
146
|
+
for (const p of rawMdPathsRaw) {
|
|
147
|
+
if (typeof p !== "string" || p.length === 0) {
|
|
148
|
+
throw new Error(`${where}: 'rawMdPaths' entries must be non-empty strings`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
rawMdPaths = rawMdPathsRaw;
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
canonicalHome,
|
|
155
|
+
publishMirror,
|
|
156
|
+
rawMdAllowed,
|
|
157
|
+
...rawMdPaths !== void 0 ? { rawMdPaths } : {}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
function loadCanonRegistry(projectRoot) {
|
|
161
|
+
const path = join(projectRoot, ".cleo", "canon.yml");
|
|
162
|
+
if (!existsSync(path)) {
|
|
163
|
+
return void 0;
|
|
164
|
+
}
|
|
165
|
+
const text = readFileSync(path, "utf8");
|
|
166
|
+
const parsed = parseYaml(text);
|
|
167
|
+
return validateCanonRegistry(parsed, path);
|
|
168
|
+
}
|
|
169
|
+
function runCanonDocsCheck(params) {
|
|
170
|
+
const { projectRoot, baseRef = "origin/main", candidateFiles } = params;
|
|
171
|
+
const registry = loadCanonRegistry(projectRoot);
|
|
172
|
+
if (!registry) {
|
|
173
|
+
return {
|
|
174
|
+
passed: true,
|
|
175
|
+
baseRef,
|
|
176
|
+
scanned: 0,
|
|
177
|
+
violations: [],
|
|
178
|
+
mode: "no-canon"
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
const candidates = candidateFiles ?? listAddedMarkdownFiles(projectRoot, baseRef);
|
|
182
|
+
const violations = [];
|
|
183
|
+
for (const file of candidates) {
|
|
184
|
+
const normalised = file.split(sep).join("/");
|
|
185
|
+
const policy = resolveCanonDocPathPolicy(registry, normalised);
|
|
186
|
+
if (policy && !policy.rawMdAllowed) {
|
|
187
|
+
violations.push({
|
|
188
|
+
file: normalised,
|
|
189
|
+
kind: policy.docKind,
|
|
190
|
+
matchedPath: policy.matchedPath,
|
|
191
|
+
fix: `cleo docs add <taskId> ${normalised} --type ${policy.docKind}`
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
passed: violations.length === 0,
|
|
197
|
+
baseRef,
|
|
198
|
+
scanned: candidates.length,
|
|
199
|
+
violations,
|
|
200
|
+
mode: "enforced"
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export {
|
|
205
|
+
CanonDocsDiffError,
|
|
206
|
+
loadCanonRegistry,
|
|
207
|
+
runCanonDocsCheck
|
|
208
|
+
};
|
|
209
|
+
//# sourceMappingURL=chunk-SXXOC6KZ.js.map
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
|
|
3
|
+
if (globalThis[_installed]) return;
|
|
4
|
+
globalThis[_installed] = true;
|
|
5
|
+
const _origEmitWarning = process.emitWarning;
|
|
6
|
+
process.emitWarning = function(warning, type, code, ctor) {
|
|
7
|
+
if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return _origEmitWarning.call(process, warning, type, code, ctor);
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
import {
|
|
17
|
+
defineCommand
|
|
18
|
+
} from "./chunk-PKKZPOOP.js";
|
|
19
|
+
import {
|
|
20
|
+
cliError,
|
|
21
|
+
cliOutput
|
|
22
|
+
} from "./chunk-4RGSNUUP.js";
|
|
23
|
+
|
|
24
|
+
// packages/cleo/src/cli/commands/doctor-skill-fixtures.ts
|
|
25
|
+
import {
|
|
26
|
+
auditSkillFixtures,
|
|
27
|
+
repairSkillFixtures,
|
|
28
|
+
restoreSkillFixtures
|
|
29
|
+
} from "@cleocode/core/system/skill-fixtures.js";
|
|
30
|
+
var doctorSkillFixturesCommand = defineCommand({
|
|
31
|
+
meta: {
|
|
32
|
+
name: "skill-fixtures",
|
|
33
|
+
description: "Find caamp test fixtures left in the real skills root (UUID-named and known fixture dirs whose content matches the tests). Read-only; --repair quarantines them with a receipt (--dry-run to preview)."
|
|
34
|
+
},
|
|
35
|
+
args: {
|
|
36
|
+
repair: {
|
|
37
|
+
type: "boolean",
|
|
38
|
+
description: "Move every fixture into <cleoHome>/audit/skill-fixture-quarantine/<receiptId>/ and append a receipt. Unclassified entries are reported, never moved."
|
|
39
|
+
},
|
|
40
|
+
restore: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Move the entries quarantined by this repair receipt id back to their original paths (never over an occupied path). Appends a restored receipt."
|
|
43
|
+
},
|
|
44
|
+
"dry-run": {
|
|
45
|
+
type: "boolean",
|
|
46
|
+
description: "With --repair or --restore: report the receipt without touching disk"
|
|
47
|
+
},
|
|
48
|
+
json: { type: "boolean", description: "Output as JSON" },
|
|
49
|
+
human: { type: "boolean", description: "Force human-readable output" },
|
|
50
|
+
quiet: { type: "boolean", description: "Suppress non-essential output" }
|
|
51
|
+
},
|
|
52
|
+
async run({ args }) {
|
|
53
|
+
const dryRun = args["dry-run"] === true;
|
|
54
|
+
if (typeof args.restore === "string" && args.restore.length > 0) {
|
|
55
|
+
try {
|
|
56
|
+
const receipt = restoreSkillFixtures(args.restore, { dryRun });
|
|
57
|
+
cliOutput(
|
|
58
|
+
{ restore: receipt, audit: auditSkillFixtures() },
|
|
59
|
+
{ command: "doctor", operation: "doctor.skill-fixtures.run" }
|
|
60
|
+
);
|
|
61
|
+
if (receipt.skipped.length > 0 && !dryRun) process.exitCode = 1;
|
|
62
|
+
} catch (err) {
|
|
63
|
+
cliError(
|
|
64
|
+
err instanceof Error ? err.message : String(err),
|
|
65
|
+
1,
|
|
66
|
+
{
|
|
67
|
+
name: "E_SKILL_FIXTURE_RESTORE_FAILED",
|
|
68
|
+
fix: "Pass a receipt id from <cleoHome>/audit/skill-fixtures.jsonl whose repair finished and has not been restored. Entries restored before a failure are listed in that file; the rest stay in quarantine."
|
|
69
|
+
},
|
|
70
|
+
{ operation: "doctor.skill-fixtures.run" }
|
|
71
|
+
);
|
|
72
|
+
process.exitCode = 1;
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
let result = null;
|
|
77
|
+
if (args.repair === true) {
|
|
78
|
+
try {
|
|
79
|
+
result = repairSkillFixtures({ dryRun });
|
|
80
|
+
} catch (err) {
|
|
81
|
+
cliError(
|
|
82
|
+
err instanceof Error ? err.message : String(err),
|
|
83
|
+
1,
|
|
84
|
+
{
|
|
85
|
+
name: "E_SKILL_FIXTURE_REPAIR_FAILED",
|
|
86
|
+
fix: "Entries moved before the failure are in the quarantine dir named by the intent receipt in <cleoHome>/audit/skill-fixtures.jsonl; the rest are untouched. Re-run `cleo doctor skill-fixtures --repair`."
|
|
87
|
+
},
|
|
88
|
+
{ operation: "doctor.skill-fixtures.run" }
|
|
89
|
+
);
|
|
90
|
+
process.exitCode = 1;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const audit = result?.audit ?? auditSkillFixtures();
|
|
95
|
+
cliOutput(
|
|
96
|
+
{ ...audit, receipt: result?.receipt ?? null },
|
|
97
|
+
{ command: "doctor", operation: "doctor.skill-fixtures.run" }
|
|
98
|
+
);
|
|
99
|
+
if (!audit.healthy && !dryRun && (process.exitCode ?? 0) === 0) {
|
|
100
|
+
process.exitCode = 1;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
export {
|
|
106
|
+
doctorSkillFixturesCommand
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=chunk-T6GZJYL3.js.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
|
|
3
|
+
if (globalThis[_installed]) return;
|
|
4
|
+
globalThis[_installed] = true;
|
|
5
|
+
const _origEmitWarning = process.emitWarning;
|
|
6
|
+
process.emitWarning = function(warning, type, code, ctor) {
|
|
7
|
+
if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return _origEmitWarning.call(process, warning, type, code, ctor);
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
import {
|
|
17
|
+
defineCommand
|
|
18
|
+
} from "./chunk-PKKZPOOP.js";
|
|
19
|
+
import {
|
|
20
|
+
cliOutput
|
|
21
|
+
} from "./chunk-4RGSNUUP.js";
|
|
22
|
+
|
|
23
|
+
// packages/cleo/src/cli/commands/doctor-acceptance-drift.ts
|
|
24
|
+
import {
|
|
25
|
+
scanAcceptanceDrift,
|
|
26
|
+
writeAcceptanceDriftBaseline
|
|
27
|
+
} from "@cleocode/core/doctor/acceptance-drift.js";
|
|
28
|
+
import { getProjectRoot } from "@cleocode/core/project-scope";
|
|
29
|
+
var doctorAcceptanceDriftCommand = defineCommand({
|
|
30
|
+
meta: {
|
|
31
|
+
name: "acceptance-drift",
|
|
32
|
+
description: "Report tasks whose acceptance criteria disagree between the JSON column and the typed rows table, separating legacy-convention rows from current-era regressions. Read-only \u2014 repairs nothing."
|
|
33
|
+
},
|
|
34
|
+
args: {
|
|
35
|
+
"update-baseline": {
|
|
36
|
+
type: "boolean",
|
|
37
|
+
description: "Accept every current drifting task, so only NEW drift fails afterwards"
|
|
38
|
+
},
|
|
39
|
+
all: {
|
|
40
|
+
type: "boolean",
|
|
41
|
+
description: "Exit non-zero for every drifting task, baselined or not"
|
|
42
|
+
},
|
|
43
|
+
json: { type: "boolean", description: "Output as JSON" },
|
|
44
|
+
human: { type: "boolean", description: "Force human-readable output" },
|
|
45
|
+
quiet: { type: "boolean", description: "Suppress non-essential output" }
|
|
46
|
+
},
|
|
47
|
+
async run(ctx) {
|
|
48
|
+
const result = scanAcceptanceDrift(getProjectRoot());
|
|
49
|
+
cliOutput(result, {
|
|
50
|
+
command: "doctor",
|
|
51
|
+
operation: "doctor.acceptance-drift.run"
|
|
52
|
+
});
|
|
53
|
+
if (ctx.args["update-baseline"]) {
|
|
54
|
+
writeAcceptanceDriftBaseline(result);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const failing = ctx.args.all ? result.entries.length : result.unbaselined.length;
|
|
58
|
+
if (failing > 0 && (process.exitCode === void 0 || process.exitCode === 0)) {
|
|
59
|
+
process.exitCode = 1;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
doctorAcceptanceDriftCommand
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=chunk-TLQ37HRE.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
|
|
3
|
+
if (globalThis[_installed]) return;
|
|
4
|
+
globalThis[_installed] = true;
|
|
5
|
+
const _origEmitWarning = process.emitWarning;
|
|
6
|
+
process.emitWarning = function(warning, type, code, ctor) {
|
|
7
|
+
if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return _origEmitWarning.call(process, warning, type, code, ctor);
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
import {
|
|
17
|
+
defineCommand
|
|
18
|
+
} from "./chunk-PKKZPOOP.js";
|
|
19
|
+
import {
|
|
20
|
+
cliOutput
|
|
21
|
+
} from "./chunk-4RGSNUUP.js";
|
|
22
|
+
|
|
23
|
+
// packages/cleo/src/cli/commands/doctor-sync-journal.ts
|
|
24
|
+
import { runSyncRepair } from "@cleocode/core/doctor/sync-repair.js";
|
|
25
|
+
import { getProjectRoot } from "@cleocode/core/paths.js";
|
|
26
|
+
var doctorSyncJournalCommand = defineCommand({
|
|
27
|
+
meta: {
|
|
28
|
+
name: "sync-journal",
|
|
29
|
+
description: "Plan the repair diff of the project store's suspect tables (rows written uncaptured). --repair emits the repair ops, seals them, verifies each table and clears its suspect mark."
|
|
30
|
+
},
|
|
31
|
+
args: {
|
|
32
|
+
repair: {
|
|
33
|
+
type: "boolean",
|
|
34
|
+
description: "Seal pending captures, emit I/U/D repair ops for every row of each suspect table in a repair frame, seal them, verify (clean rescan, ledger equals count) and clear the suspect mark. Opens the store like any cleo command, so pending migrations are applied"
|
|
35
|
+
},
|
|
36
|
+
json: { type: "boolean", description: "Output as JSON" },
|
|
37
|
+
human: { type: "boolean", description: "Force human-readable output" },
|
|
38
|
+
quiet: { type: "boolean", description: "Suppress non-essential output" }
|
|
39
|
+
},
|
|
40
|
+
async run({ args }) {
|
|
41
|
+
const result = await runSyncRepair(getProjectRoot(), { repair: args.repair === true });
|
|
42
|
+
cliOutput(result, { command: "doctor", operation: "doctor.sync-journal.run" });
|
|
43
|
+
if (args.repair === true && (result.report.refused !== null || result.suspect.length > 0)) {
|
|
44
|
+
process.exitCode = 1;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export {
|
|
50
|
+
doctorSyncJournalCommand
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=chunk-TPTNEJZJ.js.map
|