@cleocode/cleo 2026.10.2 → 2026.10.4
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/bin/cleo.js +11 -1
- package/dist/cli/adapter-LVXHFBC4.js +158 -0
- package/dist/cli/add-WUAV7LDT.js +443 -0
- package/dist/cli/add-batch-U2DLKAQC.js +163 -0
- package/dist/cli/admin-I7BQYVZD.js +340 -0
- package/dist/cli/adr-K2THMQBS.js +171 -0
- package/dist/cli/agent-WQ6XY2DW.js +2366 -0
- package/dist/cli/agent-outputs-BJIYLVTU.js +84 -0
- package/dist/cli/analyze-PGQZWGOC.js +48 -0
- package/dist/cli/archive-5LZPF7C3.js +64 -0
- package/dist/cli/archive-stats-U6CYC6JM.js +100 -0
- package/dist/cli/attention-SOURWCNI.js +167 -0
- package/dist/cli/audit-FO2Y4LH2.js +122 -0
- package/dist/cli/auth-ED7TAIXI.js +491 -0
- package/dist/cli/backfill-32TRAYRD.js +156 -0
- package/dist/cli/backup-LEJMZJKL.js +587 -0
- package/dist/cli/backup-inspect-6HPLUEI2.js +26 -0
- package/dist/cli/backup-recover-2BTYBZU2.js +29 -0
- package/dist/cli/blockers-5JULUJTV.js +54 -0
- package/dist/cli/brain-273N3FW4.js +400 -0
- package/dist/cli/briefing-7H6OLECX.js +212 -0
- package/dist/cli/caamp-MFQVN6VU.js +181 -0
- package/dist/cli/cancel-SCMJTXZB.js +84 -0
- package/dist/cli/canon-NPF5RODM.js +142 -0
- package/dist/cli/canon-docs-2GTOLF7Y.js +26 -0
- package/dist/cli/cant-46XCUP4P.js +239 -0
- package/dist/cli/changeset-32NMBGG2.js +248 -0
- package/dist/cli/check-RWJLBCI2.js +907 -0
- package/dist/cli/checkpoint-37HMMKD7.js +128 -0
- package/dist/cli/chunk-2JIJD2I7.js +108 -0
- package/dist/cli/chunk-37NU2XDP.js +171 -0
- package/dist/cli/chunk-3IOQVUO7.js +17308 -0
- package/dist/cli/chunk-3PGH67MT.js +175 -0
- package/dist/cli/chunk-3ZO3M37V.js +1002 -0
- package/dist/cli/chunk-47JYZAMS.js +30 -0
- package/dist/cli/chunk-5J2VH3BC.js +66 -0
- package/dist/cli/chunk-5ZFFUFH7.js +92 -0
- package/dist/cli/chunk-6JSJNYH2.js +114 -0
- package/dist/cli/chunk-7INMKEAD.js +85 -0
- package/dist/cli/chunk-A2IUEIM5.js +278 -0
- package/dist/cli/chunk-AWCQH2W5.js +35 -0
- package/dist/cli/chunk-AYA6F4ZT.js +56 -0
- package/dist/cli/chunk-BCEXRFA2.js +76 -0
- package/dist/cli/chunk-BPEVD37G.js +124 -0
- package/dist/cli/chunk-C3B7C43W.js +16 -0
- package/dist/cli/chunk-DVTPIZJM.js +72 -0
- package/dist/cli/chunk-DYABOIHB.js +96 -0
- package/dist/cli/chunk-EBRZ76HS.js +51 -0
- package/dist/cli/chunk-EGOTK2HA.js +57 -0
- package/dist/cli/chunk-EOPQFCSR.js +148 -0
- package/dist/cli/chunk-FORFDPP5.js +288 -0
- package/dist/cli/chunk-GFGLLDXX.js +110 -0
- package/dist/cli/chunk-GH37QXW5.js +280 -0
- package/dist/cli/chunk-GZFVDR44.js +320 -0
- package/dist/cli/chunk-I3CRQQAD.js +225 -0
- package/dist/cli/chunk-J3ZFM3UQ.js +754 -0
- package/dist/cli/chunk-JNZJPIPJ.js +90 -0
- package/dist/cli/chunk-KHB52JNB.js +209 -0
- package/dist/cli/chunk-KJDWWQFY.js +46 -0
- package/dist/cli/chunk-LKNUA3SB.js +83 -0
- package/dist/cli/chunk-LVGIFMCV.js +163 -0
- package/dist/cli/chunk-LWQBJQSE.js +67 -0
- package/dist/cli/chunk-MNJRLSEQ.js +107 -0
- package/dist/cli/chunk-NRKWJLMS.js +91 -0
- package/dist/cli/chunk-NSHV2JNM.js +48 -0
- package/dist/cli/chunk-NWTATTEQ.js +210 -0
- package/dist/cli/chunk-OAPN46TC.js +89 -0
- package/dist/cli/chunk-OGV57L4J.js +59 -0
- package/dist/cli/chunk-OILHT47L.js +252 -0
- package/dist/cli/chunk-OPTEQKBB.js +258 -0
- package/dist/cli/chunk-PKKZPOOP.js +352 -0
- package/dist/cli/chunk-QA6T2LQ5.js +71 -0
- package/dist/cli/chunk-QFFQSKRC.js +4497 -0
- package/dist/cli/chunk-QPUY2HQZ.js +74 -0
- package/dist/cli/chunk-REUTEW3O.js +258 -0
- package/dist/cli/chunk-S24YI723.js +88 -0
- package/dist/cli/chunk-SXXOC6KZ.js +209 -0
- package/dist/cli/chunk-ULN4OKQQ.js +259 -0
- package/dist/cli/chunk-V5GBGOGM.js +46 -0
- package/dist/cli/chunk-VLEYOOPH.js +31 -0
- package/dist/cli/chunk-W33Q3FBH.js +66 -0
- package/dist/cli/chunk-W3JLYKKY.js +140 -0
- package/dist/cli/chunk-XRAX6XFP.js +48 -0
- package/dist/cli/chunk-YGKEECTI.js +78 -0
- package/dist/cli/chunk-YUZJI67I.js +108 -0
- package/dist/cli/chunk-YY66LFZF.js +29 -0
- package/dist/cli/chunk-ZBISIPCK.js +78 -0
- package/dist/cli/chunk-ZZTHTMQP.js +77 -0
- package/dist/cli/claim-KPENYHIQ.js +96 -0
- package/dist/cli/classify-DRVMCFQU.js +117 -0
- package/dist/cli/cli-T3CR7J57.js +48 -0
- package/dist/cli/cloud-PPQ4O5TX.js +565 -0
- package/dist/cli/cockpit-RZKLGYPN.js +790 -0
- package/dist/cli/code-Z5CTMVTD.js +178 -0
- package/dist/cli/complete-UBOCOBRB.js +34 -0
- package/dist/cli/complexity-BV2AGQRZ.js +56 -0
- package/dist/cli/compliance-32PD5Y47.js +276 -0
- package/dist/cli/conduit-VDKCH33F.js +307 -0
- package/dist/cli/config-I72JAXK4.js +516 -0
- package/dist/cli/consensus-LFILLSTK.js +121 -0
- package/dist/cli/context-XUUVFVTP.js +141 -0
- package/dist/cli/contribution-37NQ4N5R.js +111 -0
- package/dist/cli/curator-TFDXU2EX.js +139 -0
- package/dist/cli/current-C4SN5BWV.js +42 -0
- package/dist/cli/daemon-DV25JQ62.js +451 -0
- package/dist/cli/dash-TFU4RLQW.js +70 -0
- package/dist/cli/decide-5VPMNTSI.js +419 -0
- package/dist/cli/decompose-KOYEZNJL.js +77 -0
- package/dist/cli/decomposition-7OHUFIQN.js +121 -0
- package/dist/cli/delete-Q7YCAFY5.js +68 -0
- package/dist/cli/deps-6UZKLDGJ.js +463 -0
- package/dist/cli/detect-FERY35UL.js +45 -0
- package/dist/cli/detect-drift-UL2JTPUK.js +408 -0
- package/dist/cli/diagnostics-TI5QAZXR.js +132 -0
- package/dist/cli/docs-QI2PRN3T.js +3095 -0
- package/dist/cli/doctor-AX5TICQO.js +1253 -0
- package/dist/cli/doctor-ac-bindings-YPMYHU2G.js +26 -0
- package/dist/cli/doctor-acceptance-drift-PYNFGMKB.js +26 -0
- package/dist/cli/doctor-credentials-UZRIADKM.js +26 -0
- package/dist/cli/doctor-db-substrate-Q2TOYM2S.js +27 -0
- package/dist/cli/doctor-dep-cycles-GCVYZY6F.js +26 -0
- package/dist/cli/doctor-exodus-RO5SUTC2.js +26 -0
- package/dist/cli/doctor-exodus-residue-EM2AWQXP.js +26 -0
- package/dist/cli/doctor-fk-check-Q3FOLECE.js +26 -0
- package/dist/cli/doctor-global-delivery-TNOAQ3NP.js +26 -0
- package/dist/cli/doctor-heavy-command-hook-IO3QAQLG.js +26 -0
- package/dist/cli/doctor-legacy-backups-O2YH5VLS.js +26 -0
- package/dist/cli/doctor-legacy-reaper-VSEJEIFA.js +26 -0
- package/dist/cli/doctor-malformed-ids-LQ766V5K.js +26 -0
- package/dist/cli/doctor-manifest-rows-6FQDNHLH.js +26 -0
- package/dist/cli/doctor-memory-guard-J4PSEKB5.js +26 -0
- package/dist/cli/doctor-migrations-ONOH56YM.js +26 -0
- package/dist/cli/doctor-nexus-residency-FUQAX7PV.js +26 -0
- package/dist/cli/doctor-project-identity-GUDK3HYX.js +26 -0
- package/dist/cli/doctor-projects-7L3BNL4O.js +30 -0
- package/dist/cli/doctor-projects-registry-TEAVHFQU.js +26 -0
- package/dist/cli/doctor-release-readiness-IEGHX6SL.js +26 -0
- package/dist/cli/doctor-repair-NBONOSZU.js +26 -0
- package/dist/cli/doctor-skill-fixtures-7Y6L34A3.js +26 -0
- package/dist/cli/doctor-split-brain-TUKIGVHF.js +26 -0
- package/dist/cli/doctor-superseded-store-BHZY2B2L.js +26 -0
- package/dist/cli/doctor-tool-locks-REQMIVYK.js +26 -0
- package/dist/cli/doctor-twin-collapse-222GOSPE.js +26 -0
- package/dist/cli/doctor-worktree-stores-J7TCRVJ3.js +26 -0
- package/dist/cli/done-V3AOO65B.js +195 -0
- package/dist/cli/dynamic-RR4HB7BB.js +29 -0
- package/dist/cli/event-EGNPGE5A.js +372 -0
- package/dist/cli/exists-H4SDCBPL.js +65 -0
- package/dist/cli/exodus-KALO3B3X.js +401 -0
- package/dist/cli/export-ROFOCG4M.js +92 -0
- package/dist/cli/export-tasks-US3WBIEQ.js +96 -0
- package/dist/cli/federation-SUIB5QWT.js +145 -0
- package/dist/cli/find-YICG4BG6.js +177 -0
- package/dist/cli/focus-TKCZPKOM.js +55 -0
- package/dist/cli/gateway-H4HFDC3E.js +77 -0
- package/dist/cli/gateway-auto-start-EDK7XI6E.js +36 -0
- package/dist/cli/gc-5R2TUY5T.js +291 -0
- package/dist/cli/go-PRQFK5YG.js +206 -0
- package/dist/cli/goal-7CZRMLHC.js +212 -0
- package/dist/cli/grade-PY2YRPUS.js +56 -0
- package/dist/cli/graph-XIXMCFKG.js +878 -0
- package/dist/cli/history-EIXADPAD.js +137 -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-R73SO444.js +88 -0
- package/dist/cli/import-tasks-O22FZJ4U.js +108 -0
- package/dist/cli/index.js +419 -94607
- package/dist/cli/init-IHEJDQWU.js +40 -0
- package/dist/cli/inject-LSRVWNCP.js +82 -0
- package/dist/cli/install-global-4AZUCH6U.js +95 -0
- package/dist/cli/intelligence-2OSFOGD2.js +181 -0
- package/dist/cli/issue-IIWEDNFC.js +158 -0
- package/dist/cli/janitor-GPMC7VOR.js +111 -0
- package/dist/cli/labels-5NPOIQXN.js +87 -0
- package/dist/cli/lifecycle-4FFS2K2T.js +272 -0
- package/dist/cli/list-47KEUGPQ.js +108 -0
- package/dist/cli/llm-G5B3I6GD.js +703 -0
- package/dist/cli/llm-cost-S7RS6BVA.js +25 -0
- package/dist/cli/llm-stream-24A45NTS.js +27 -0
- package/dist/cli/log-XF6H2XSD.js +75 -0
- package/dist/cli/login-LBPLGHYG.js +43 -0
- package/dist/cli/logout-SX4JSJIV.js +74 -0
- package/dist/cli/manifest-NMCW4PIW.js +353 -0
- package/dist/cli/map-BU72KMGF.js +52 -0
- package/dist/cli/memory-UHYIVGVM.js +1956 -0
- package/dist/cli/migrate-agents-v2-OO7OILZK.js +33 -0
- package/dist/cli/migrate-claude-mem-EDNYUY3K.js +201 -0
- package/dist/cli/next-RZFRG5X7.js +56 -0
- package/dist/cli/nexus-4S4Z5EVU.js +2923 -0
- package/dist/cli/ops-KR7AWCG3.js +51 -0
- package/dist/cli/orchestrate-HOYZY3VX.js +948 -0
- package/dist/cli/otel-U7IIRBCT.js +188 -0
- package/dist/cli/phase-NYZFHUE5.js +220 -0
- package/dist/cli/pivot-FF2CVUZL.js +87 -0
- package/dist/cli/plan-3SL2NTRV.js +48 -0
- package/dist/cli/playbook-2FCBV7N3.js +229 -0
- package/dist/cli/project-WDX2TGMC.js +330 -0
- package/dist/cli/promote-YINYFBZY.js +52 -0
- package/dist/cli/provenance-C7AYD7WG.js +128 -0
- package/dist/cli/provider-QLJEDQBR.js +212 -0
- package/dist/cli/reason-JF5BHBM5.js +137 -0
- package/dist/cli/reconcile-NMISHDGX.js +127 -0
- package/dist/cli/refresh-memory-EY5YNICV.js +45 -0
- package/dist/cli/relates-R3ZPICAY.js +259 -0
- package/dist/cli/release-4ZJTMUUT.js +524 -0
- package/dist/cli/remote-QSONJDIK.js +279 -0
- package/dist/cli/renderers-64OR3IWX.js +37 -0
- package/dist/cli/reorder-J3DOE7ST.js +86 -0
- package/dist/cli/reparent-2OUMKEZX.js +58 -0
- package/dist/cli/req-TZB7OFKO.js +129 -0
- package/dist/cli/research-MTD7EX45.js +365 -0
- package/dist/cli/restore-VEUOX7NF.js +423 -0
- package/dist/cli/revert-3YF2IL5G.js +240 -0
- package/dist/cli/roadmap-7OOQLXKG.js +61 -0
- package/dist/cli/run-2U5NZV5Z.js +211 -0
- package/dist/cli/safestop-VR4VK56D.js +88 -0
- package/dist/cli/saga-SEWPIOX2.js +285 -0
- package/dist/cli/schema-C52WZ35V.js +195 -0
- package/dist/cli/self-update-GQIGUDPS.js +504 -0
- package/dist/cli/selfimprove-3Y5L4ECT.js +88 -0
- package/dist/cli/sentient-M4YMAVGV.js +1088 -0
- package/dist/cli/sequence-6UBMA4IF.js +93 -0
- package/dist/cli/service-5R7SILZ7.js +155 -0
- package/dist/cli/session-3C6AAC4Y.js +707 -0
- package/dist/cli/setup-BTUBW5PU.js +323 -0
- package/dist/cli/show-MXT2V7TF.js +122 -0
- package/dist/cli/skill-GFUZOU2C.js +84 -0
- package/dist/cli/skills-EDWLKAF3.js +928 -0
- package/dist/cli/smoke-provider-SKUFMZXU.js +218 -0
- package/dist/cli/snapshot-GUWMURCM.js +119 -0
- package/dist/cli/src-66GAKPXR.js +80 -0
- package/dist/cli/start-QFG56RGN.js +67 -0
- package/dist/cli/stats-GW55P7RR.js +95 -0
- package/dist/cli/status-46HTKNRR.js +157 -0
- package/dist/cli/sticky-2DUZOUGI.js +338 -0
- package/dist/cli/stop-J2QEUKHX.js +42 -0
- package/dist/cli/sync-GJP2QYT5.js +154 -0
- package/dist/cli/tasks-BNXTM7PB.js +174 -0
- package/dist/cli/telemetry-55Z2XJWL.js +120 -0
- package/dist/cli/templates-7O77TKPV.js +611 -0
- package/dist/cli/testing-37YTBNKP.js +146 -0
- package/dist/cli/token-UAVJMNUI.js +220 -0
- package/dist/cli/transcript-LORQTV5Z.js +440 -0
- package/dist/cli/tui-BPUFHYKK.js +51 -0
- package/dist/cli/update-NVCYV2FT.js +476 -0
- package/dist/cli/upgrade-OXJXOGEF.js +243 -0
- package/dist/cli/verify-LYLDHPT2.js +190 -0
- package/dist/cli/web-QP2RP266.js +275 -0
- package/dist/cli/workgraph-FXBSZDQE.js +232 -0
- package/dist/cli/worktree-6RXAJIST.js +370 -0
- package/package.json +13 -13
- package/studio-dist/client/_app/immutable/chunks/{Buaay_Q8.js → Btgeq_wq.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{BJp57kf2.js → CgBjxmu6.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{CLP4JZvZ.js → DgEKqO6r.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/t81h7afa.js +1 -0
- package/studio-dist/client/_app/immutable/entry/{app.CczVILch.js → app.a02HWaRB.js} +2 -2
- package/studio-dist/client/_app/immutable/entry/start.BreMSngo.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{0.Zy2IsLEl.js → 0.nTXyRfc-.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.DJN1QI3l.js → 1.4zrWeHtl.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{15.B4rwqbHV.js → 15.D9mk4JyY.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16.jn-5BG_L.js → 16._-wt-sQf.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.DnWGC4t9.js → 17.CUu6LQDj.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.0zddLZOY.js → 18.Dz4QRTkX.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{20.DEKHq9Tc.js → 20.CJ2_EB0U.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{24.CQB9KP-p.js → 24.Igj2FS7k.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{25.BaqToZD-.js → 25.BnATjVGN.js} +2 -2
- package/studio-dist/client/_app/immutable/nodes/{26.BiE1i4iE.js → 26.6iPyjT44.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{3.BObAOu_-.js → 3.AA5GwNgP.js} +1 -1
- package/studio-dist/client/_app/version.json +1 -1
- package/studio-dist/server/chunks/{0-BmUoS2yd.js → 0-DGmsoBYm.js} +3 -3
- package/studio-dist/server/chunks/1-8PfxPvlK.js +9 -0
- package/studio-dist/server/chunks/{15-Dt4kqUxW.js → 15-Bg6YTndh.js} +3 -3
- package/studio-dist/server/chunks/{16-kgTLJvbO.js → 16-BObLwgyD.js} +3 -3
- package/studio-dist/server/chunks/{17-mRYB5141.js → 17-BNXGyAHX.js} +3 -3
- package/studio-dist/server/chunks/{18-BjZ325q5.js → 18-UqQFRIID.js} +3 -3
- package/studio-dist/server/chunks/{20-DQ2Vrujq.js → 20-CMn8a_yP.js} +3 -3
- package/studio-dist/server/chunks/{24-DAeuAfXN.js → 24-BuOTDzib.js} +3 -3
- package/studio-dist/server/chunks/{25-DGCNmzAS.js → 25-CIMSmjVx.js} +4 -4
- package/studio-dist/server/chunks/{26-CiN6bbmR.js → 26-DWGObn2T.js} +3 -3
- package/studio-dist/server/chunks/{3-BS2FXYjP.js → 3-CyiffdJZ.js} +3 -3
- package/studio-dist/server/chunks/{_layout.svelte-DJ_UWmGp.js → _layout.svelte-DYtClaIk.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-WR6jUiQE.js → _page.svelte-1h9E6s_f.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BUq8_eQH.js → _page.svelte-BNNF62Nm.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-CRnYa4cW.js → _page.svelte-BT1EUadj.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-Dk0znswQ.js → _page.svelte-Bip079LT.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-CcP_KW3Y.js → _page.svelte-CEATWp_5.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-Ca7x-ZvH.js → _page.svelte-CV3xiD1y.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-Cfv9tDBA.js → _page.svelte-Cv_KVJDV.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-J4HjPhfO.js → _page.svelte-DSSy6LuK.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-D8dLEr7O.js → _page.svelte-TF795TAS.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-Bih2-_5O.js → _server.ts-BlhRFLY3.js} +2 -2
- package/studio-dist/server/chunks/{_server.ts-Cr57EKWf.js → _server.ts-C4w6UdU0.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-P4wVVksg.js → _server.ts-CzrwbhkQ.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-2BazvYRP.js → _server.ts-DWt8Dziu.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-C0evMKCk.js → _server.ts-Db6mEile.js} +3 -3
- package/studio-dist/server/chunks/{client-Cl295FWH.js → client-D8f2k-H_.js} +2 -2
- package/studio-dist/server/chunks/{dist-CdoCt9zT.js → dist-B8xbIrdB.js} +3 -1
- package/studio-dist/server/chunks/{error.svelte-ajn1HNOb.js → error.svelte-DbbOwIme.js} +3 -3
- package/studio-dist/server/chunks/{http-BiQjEmVU.js → http-1ftNGTs5.js} +2 -2
- package/studio-dist/server/chunks/{internal-D9MtKHIF.js → internal-CTULuLPB.js} +2 -2
- package/studio-dist/server/chunks/{stores-BlknvZ80.js → stores-CS5XOReX.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/C3l-lTkq.js +0 -1
- package/studio-dist/client/_app/immutable/entry/start.D7gHmBNS.js +0 -1
- package/studio-dist/server/chunks/1-CTjj2MYz.js +0 -9
|
@@ -0,0 +1,232 @@
|
|
|
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 "./chunk-C3B7C43W.js";
|
|
17
|
+
import {
|
|
18
|
+
defineCommand,
|
|
19
|
+
showUsage
|
|
20
|
+
} from "./chunk-PKKZPOOP.js";
|
|
21
|
+
|
|
22
|
+
// packages/cleo/src/cli/commands/workgraph.ts
|
|
23
|
+
import { readFileSync } from "node:fs";
|
|
24
|
+
import { resolve } from "node:path";
|
|
25
|
+
var validateCommand = defineCommand({
|
|
26
|
+
meta: {
|
|
27
|
+
name: "validate",
|
|
28
|
+
description: "Validate a WorkGraph scaffold JSON payload (dry-run)"
|
|
29
|
+
},
|
|
30
|
+
args: {
|
|
31
|
+
file: {
|
|
32
|
+
type: "positional",
|
|
33
|
+
description: "Path to scaffold JSON file",
|
|
34
|
+
required: true
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
async run({ args }) {
|
|
38
|
+
const { validateWorkGraphScaffold } = await import("@cleocode/core/workgraph");
|
|
39
|
+
const { cliOutput } = await import("./renderers-64OR3IWX.js");
|
|
40
|
+
const filePath = resolve(String(args.file));
|
|
41
|
+
let raw;
|
|
42
|
+
try {
|
|
43
|
+
raw = readFileSync(filePath, "utf-8");
|
|
44
|
+
} catch {
|
|
45
|
+
cliOutput(
|
|
46
|
+
{ error: `Cannot read file: ${filePath}` },
|
|
47
|
+
{ command: "workgraph", operation: "validate" }
|
|
48
|
+
);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
let payload;
|
|
52
|
+
try {
|
|
53
|
+
payload = JSON.parse(raw);
|
|
54
|
+
} catch {
|
|
55
|
+
cliOutput(
|
|
56
|
+
{ error: `Invalid JSON in ${filePath}` },
|
|
57
|
+
{ command: "workgraph", operation: "validate" }
|
|
58
|
+
);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const result = validateWorkGraphScaffold(payload);
|
|
62
|
+
cliOutput(result, { command: "workgraph", operation: "validate" });
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
var applyCommand = defineCommand({
|
|
66
|
+
meta: {
|
|
67
|
+
name: "apply",
|
|
68
|
+
description: "Atomically apply a WorkGraph scaffold to the task database"
|
|
69
|
+
},
|
|
70
|
+
args: {
|
|
71
|
+
file: {
|
|
72
|
+
type: "positional",
|
|
73
|
+
description: "Path to scaffold JSON file",
|
|
74
|
+
required: true
|
|
75
|
+
},
|
|
76
|
+
"dry-run": {
|
|
77
|
+
type: "boolean",
|
|
78
|
+
description: "Validate only, do not write to the database",
|
|
79
|
+
required: false
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
async run({ args }) {
|
|
83
|
+
const { applyWorkGraphScaffold } = await import("@cleocode/core/workgraph");
|
|
84
|
+
const { cliOutput } = await import("./renderers-64OR3IWX.js");
|
|
85
|
+
const filePath = resolve(String(args.file));
|
|
86
|
+
let raw;
|
|
87
|
+
try {
|
|
88
|
+
raw = readFileSync(filePath, "utf-8");
|
|
89
|
+
} catch {
|
|
90
|
+
cliOutput(
|
|
91
|
+
{ error: `Cannot read file: ${filePath}` },
|
|
92
|
+
{ command: "workgraph", operation: "apply" }
|
|
93
|
+
);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
let payload;
|
|
97
|
+
try {
|
|
98
|
+
payload = JSON.parse(raw);
|
|
99
|
+
} catch {
|
|
100
|
+
cliOutput(
|
|
101
|
+
{ error: `Invalid JSON in ${filePath}` },
|
|
102
|
+
{ command: "workgraph", operation: "apply" }
|
|
103
|
+
);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const result = await applyWorkGraphScaffold({ ...payload, apply: !args["dry-run"] });
|
|
107
|
+
cliOutput(result, { command: "workgraph", operation: "apply" });
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
var planCommand = defineCommand({
|
|
111
|
+
meta: {
|
|
112
|
+
name: "plan",
|
|
113
|
+
description: "Generate a planning doc from a Saga WorkGraph"
|
|
114
|
+
},
|
|
115
|
+
args: {
|
|
116
|
+
sagaId: {
|
|
117
|
+
type: "positional",
|
|
118
|
+
description: "Saga task ID to generate the plan for",
|
|
119
|
+
required: true
|
|
120
|
+
},
|
|
121
|
+
audience: {
|
|
122
|
+
type: "string",
|
|
123
|
+
description: "Audience: agent (compact) or maintainer (prose)",
|
|
124
|
+
required: false,
|
|
125
|
+
default: "maintainer"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
async run({ args }) {
|
|
129
|
+
const { generatePlanningDoc } = await import("@cleocode/core/workgraph");
|
|
130
|
+
const { getProjectRoot } = await import("@cleocode/core");
|
|
131
|
+
const { cliOutput } = await import("./renderers-64OR3IWX.js");
|
|
132
|
+
const projectRoot = getProjectRoot();
|
|
133
|
+
const audience = String(args.audience) === "agent" ? "agent" : "maintainer";
|
|
134
|
+
const result = await generatePlanningDoc(projectRoot, {
|
|
135
|
+
sagaId: String(args.sagaId),
|
|
136
|
+
audience
|
|
137
|
+
});
|
|
138
|
+
cliOutput(result, { command: "workgraph", operation: "plan" });
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
var structureCommand = defineCommand({
|
|
142
|
+
meta: {
|
|
143
|
+
name: "structure",
|
|
144
|
+
description: "Validate WorkGraph structure (cycles, depth violations, orphans)"
|
|
145
|
+
},
|
|
146
|
+
async run() {
|
|
147
|
+
const { validateWorkGraphStructure } = await import("@cleocode/core/workgraph");
|
|
148
|
+
const { taskList } = await import("@cleocode/core/internal");
|
|
149
|
+
const { getProjectRoot } = await import("@cleocode/core");
|
|
150
|
+
const { cliOutput } = await import("./renderers-64OR3IWX.js");
|
|
151
|
+
const projectRoot = getProjectRoot();
|
|
152
|
+
const listResult = await taskList(projectRoot, { limit: 5e3 });
|
|
153
|
+
const tasks = listResult.success ? listResult.data?.tasks ?? [] : [];
|
|
154
|
+
const nodes = tasks.map((t) => ({
|
|
155
|
+
id: String(t.id ?? ""),
|
|
156
|
+
type: t.type ?? "task",
|
|
157
|
+
parentId: t.parentId ?? null,
|
|
158
|
+
phase: t.phase ?? null
|
|
159
|
+
}));
|
|
160
|
+
const result = validateWorkGraphStructure(nodes, {});
|
|
161
|
+
cliOutput(result, { command: "workgraph", operation: "structure" });
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
var statusCommand = defineCommand({
|
|
165
|
+
meta: {
|
|
166
|
+
name: "status",
|
|
167
|
+
description: "One-shot saga-to-saga workgraph dashboard (tracking checklist)"
|
|
168
|
+
},
|
|
169
|
+
async run() {
|
|
170
|
+
const { sagas, getProjectRoot } = await import("@cleocode/core");
|
|
171
|
+
const { cliOutput } = await import("./renderers-64OR3IWX.js");
|
|
172
|
+
const projectRoot = getProjectRoot();
|
|
173
|
+
const listResult = await sagas.sagaList(projectRoot);
|
|
174
|
+
if (!listResult.success) {
|
|
175
|
+
cliOutput(listResult, { command: "workgraph", operation: "workgraph.status" });
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const allSagas = listResult.data?.sagas ?? [];
|
|
179
|
+
const sagaMap = new Map(
|
|
180
|
+
allSagas.map((s) => [s.id, s])
|
|
181
|
+
);
|
|
182
|
+
const TERMINAL = /* @__PURE__ */ new Set(["done", "cancelled", "deleted", "archived", "completed"]);
|
|
183
|
+
const rows = [];
|
|
184
|
+
for (let i = 0; i < sagas.CANONICAL_SAGA_ORDER.length; i++) {
|
|
185
|
+
const [id, label] = sagas.CANONICAL_SAGA_ORDER[i];
|
|
186
|
+
const saga = sagaMap.get(id);
|
|
187
|
+
if (!saga) continue;
|
|
188
|
+
const status = saga.status ?? "pending";
|
|
189
|
+
const rollupResult = await sagas.sagaRollup(projectRoot, { sagaId: id });
|
|
190
|
+
const rollup = rollupResult.success ? rollupResult.data : { total: 0, done: 0, completionPct: 0 };
|
|
191
|
+
rows.push({
|
|
192
|
+
rank: i + 1,
|
|
193
|
+
sagaId: id,
|
|
194
|
+
status,
|
|
195
|
+
completionPct: rollup.completionPct ?? 0,
|
|
196
|
+
done: rollup.done ?? 0,
|
|
197
|
+
total: rollup.total ?? 0,
|
|
198
|
+
label: TERMINAL.has(status) ? `${label} \u2713` : label
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
cliOutput(
|
|
202
|
+
{
|
|
203
|
+
rows,
|
|
204
|
+
total: rows.length,
|
|
205
|
+
activeSagaCount: rows.filter((r) => !TERMINAL.has(r.status)).length
|
|
206
|
+
},
|
|
207
|
+
{ command: "workgraph", operation: "workgraph.status" }
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
var workgraphCommand = defineCommand({
|
|
212
|
+
meta: {
|
|
213
|
+
name: "workgraph",
|
|
214
|
+
description: "PM-Core V2 WorkGraph operations \u2014 validate, apply, plan, structure, status"
|
|
215
|
+
},
|
|
216
|
+
subCommands: {
|
|
217
|
+
validate: validateCommand,
|
|
218
|
+
apply: applyCommand,
|
|
219
|
+
plan: planCommand,
|
|
220
|
+
structure: structureCommand,
|
|
221
|
+
status: statusCommand
|
|
222
|
+
},
|
|
223
|
+
async run({ cmd, rawArgs }) {
|
|
224
|
+
const firstArg = rawArgs?.find((a) => !a.startsWith("-"));
|
|
225
|
+
if (firstArg && cmd.subCommands && firstArg in cmd.subCommands) return;
|
|
226
|
+
await showUsage(cmd);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
export {
|
|
230
|
+
workgraphCommand
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=workgraph-FXBSZDQE.js.map
|
|
@@ -0,0 +1,370 @@
|
|
|
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
|
+
showUsage
|
|
19
|
+
} from "./chunk-PKKZPOOP.js";
|
|
20
|
+
import {
|
|
21
|
+
dispatchFromCli
|
|
22
|
+
} from "./chunk-3IOQVUO7.js";
|
|
23
|
+
import "./chunk-AWCQH2W5.js";
|
|
24
|
+
import "./chunk-OGV57L4J.js";
|
|
25
|
+
import "./chunk-ZBISIPCK.js";
|
|
26
|
+
import {
|
|
27
|
+
cliError,
|
|
28
|
+
cliOutput
|
|
29
|
+
} from "./chunk-3ZO3M37V.js";
|
|
30
|
+
import "./chunk-6JSJNYH2.js";
|
|
31
|
+
import "./chunk-QFFQSKRC.js";
|
|
32
|
+
|
|
33
|
+
// packages/cleo/src/cli/commands/worktree.ts
|
|
34
|
+
import readline from "node:readline";
|
|
35
|
+
import { getProjectRoot, listWorktrees } from "@cleocode/core/internal";
|
|
36
|
+
var VALID_STATUS_VALUES = ["active", "stale", "merged", "orphan", "locked"];
|
|
37
|
+
var listCommand = defineCommand({
|
|
38
|
+
meta: {
|
|
39
|
+
name: "list",
|
|
40
|
+
description: "List worktrees attached to this project with status classification (active|stale|merged|orphan|locked)."
|
|
41
|
+
},
|
|
42
|
+
args: {
|
|
43
|
+
status: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: `Filter by status category (single value or comma-separated list of ${VALID_STATUS_VALUES.join("|")}).`
|
|
46
|
+
},
|
|
47
|
+
days: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Staleness threshold in days for the isStale classifier (default: 7)."
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
async run({ args }) {
|
|
53
|
+
const statusFilter = typeof args["status"] === "string" && args["status"].length > 0 ? args["status"] : void 0;
|
|
54
|
+
const staleDaysRaw = typeof args["days"] === "string" ? args["days"] : void 0;
|
|
55
|
+
const staleDays = staleDaysRaw !== void 0 ? Number.parseInt(staleDaysRaw, 10) : void 0;
|
|
56
|
+
await dispatchFromCli(
|
|
57
|
+
"query",
|
|
58
|
+
"worktree",
|
|
59
|
+
"list",
|
|
60
|
+
{
|
|
61
|
+
...statusFilter !== void 0 ? { statusFilter } : {},
|
|
62
|
+
...staleDays !== void 0 && !Number.isNaN(staleDays) ? { staleDays } : {}
|
|
63
|
+
},
|
|
64
|
+
{ command: "worktree-list", operation: "worktree.list" }
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
async function promptYesNo(question) {
|
|
69
|
+
return new Promise((resolve) => {
|
|
70
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
71
|
+
rl.question(`${question} [y/N]: `, (answer) => {
|
|
72
|
+
rl.close();
|
|
73
|
+
const trimmed = answer.trim().toLowerCase();
|
|
74
|
+
resolve(trimmed === "y" || trimmed === "yes");
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function renderOrphanPreamble(wt) {
|
|
79
|
+
return [
|
|
80
|
+
"Orphaned worktree found:",
|
|
81
|
+
` Path: ${wt.path}`,
|
|
82
|
+
` Branch: ${wt.branch}${wt.isMerged ? " (merged to main)" : ""}`,
|
|
83
|
+
` Task status: ${wt.owningTaskStatus ?? "(missing)"}`,
|
|
84
|
+
` Last activity: ${wt.lastActivity}`,
|
|
85
|
+
""
|
|
86
|
+
].join("\n");
|
|
87
|
+
}
|
|
88
|
+
var pruneCommand = defineCommand({
|
|
89
|
+
meta: {
|
|
90
|
+
name: "prune",
|
|
91
|
+
description: "Remove orphan/merged worktrees with per-orphan Y/N confirmation."
|
|
92
|
+
},
|
|
93
|
+
args: {
|
|
94
|
+
orphaned: {
|
|
95
|
+
type: "boolean",
|
|
96
|
+
description: "Prune worktrees classified as orphan or merged (required).",
|
|
97
|
+
default: false
|
|
98
|
+
},
|
|
99
|
+
yes: {
|
|
100
|
+
type: "boolean",
|
|
101
|
+
description: "Skip per-orphan confirmation. Required on non-TTY (CI / pipe) input.",
|
|
102
|
+
default: false
|
|
103
|
+
},
|
|
104
|
+
"dry-run": {
|
|
105
|
+
type: "boolean",
|
|
106
|
+
description: "Show what would be pruned without acting. No audit-log entries written.",
|
|
107
|
+
default: false
|
|
108
|
+
},
|
|
109
|
+
days: {
|
|
110
|
+
type: "string",
|
|
111
|
+
description: "Override staleness threshold passed through to the listing (default: 7)."
|
|
112
|
+
},
|
|
113
|
+
"idle-days": {
|
|
114
|
+
type: "string",
|
|
115
|
+
description: "Abandonment-timeout threshold in days (T9805 AC2). Worktrees whose last commit is older than this value AND have no open PR are also pruned."
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
async run({ args }) {
|
|
119
|
+
if (args["orphaned"] !== true) {
|
|
120
|
+
cliError(
|
|
121
|
+
"cleo worktree prune requires --orphaned (other categories are reserved for future flags).",
|
|
122
|
+
2
|
|
123
|
+
);
|
|
124
|
+
process.exit(2);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const dryRun = args["dry-run"] === true;
|
|
128
|
+
const yes = args["yes"] === true;
|
|
129
|
+
const staleDaysRaw = typeof args["days"] === "string" ? args["days"] : void 0;
|
|
130
|
+
const staleDays = staleDaysRaw !== void 0 ? Number.parseInt(staleDaysRaw, 10) : void 0;
|
|
131
|
+
const idleDaysRaw = typeof args["idle-days"] === "string" ? args["idle-days"] : void 0;
|
|
132
|
+
const idleDays = idleDaysRaw !== void 0 ? Number.parseInt(idleDaysRaw, 10) : void 0;
|
|
133
|
+
const projectRoot = getProjectRoot();
|
|
134
|
+
const listResult = await listWorktrees({
|
|
135
|
+
projectRoot,
|
|
136
|
+
...staleDays !== void 0 && !Number.isNaN(staleDays) ? { staleDays } : {}
|
|
137
|
+
});
|
|
138
|
+
if (!listResult.success) {
|
|
139
|
+
cliError(`Failed to enumerate worktrees: ${listResult.error.message}`, 1);
|
|
140
|
+
process.exit(1);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const candidates = listResult.data.worktrees.filter(
|
|
144
|
+
(w) => w.statusCategory === "orphan" || w.statusCategory === "merged"
|
|
145
|
+
);
|
|
146
|
+
if (candidates.length === 0) {
|
|
147
|
+
cliOutput(
|
|
148
|
+
{
|
|
149
|
+
prunedCount: 0,
|
|
150
|
+
skippedCount: 0,
|
|
151
|
+
outcomes: [],
|
|
152
|
+
errors: [],
|
|
153
|
+
dryRun,
|
|
154
|
+
message: "No orphan or merged worktrees found."
|
|
155
|
+
},
|
|
156
|
+
{ command: "worktree-prune", operation: "worktree.prune" }
|
|
157
|
+
);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const isTty = process.stdin.isTTY === true;
|
|
161
|
+
if (!isTty && !yes && !dryRun) {
|
|
162
|
+
cliError(
|
|
163
|
+
"cleo worktree prune is interactive \u2014 re-run with --yes or --dry-run on non-TTY input.",
|
|
164
|
+
2
|
|
165
|
+
);
|
|
166
|
+
process.exit(2);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
let confirmedPaths;
|
|
170
|
+
let skippedByUser = 0;
|
|
171
|
+
if (dryRun || yes) {
|
|
172
|
+
confirmedPaths = candidates.map((w) => w.path);
|
|
173
|
+
} else {
|
|
174
|
+
confirmedPaths = [];
|
|
175
|
+
for (const wt of candidates) {
|
|
176
|
+
process.stdout.write(renderOrphanPreamble(wt));
|
|
177
|
+
const accepted = await promptYesNo("Prune this worktree?");
|
|
178
|
+
if (accepted) {
|
|
179
|
+
confirmedPaths.push(wt.path);
|
|
180
|
+
} else {
|
|
181
|
+
skippedByUser += 1;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (confirmedPaths.length === 0) {
|
|
186
|
+
cliOutput(
|
|
187
|
+
{
|
|
188
|
+
prunedCount: 0,
|
|
189
|
+
skippedCount: skippedByUser,
|
|
190
|
+
outcomes: [],
|
|
191
|
+
errors: [],
|
|
192
|
+
dryRun,
|
|
193
|
+
message: skippedByUser > 0 ? `Skipped ${skippedByUser} orphan(s) on user request.` : "No-op."
|
|
194
|
+
},
|
|
195
|
+
{ command: "worktree-prune", operation: "worktree.prune" }
|
|
196
|
+
);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
await dispatchFromCli(
|
|
200
|
+
"mutate",
|
|
201
|
+
"worktree",
|
|
202
|
+
"prune",
|
|
203
|
+
{
|
|
204
|
+
dryRun,
|
|
205
|
+
paths: confirmedPaths,
|
|
206
|
+
...staleDays !== void 0 && !Number.isNaN(staleDays) ? { staleDays } : {},
|
|
207
|
+
...idleDays !== void 0 && !Number.isNaN(idleDays) ? { idleDays } : {}
|
|
208
|
+
},
|
|
209
|
+
{ command: "worktree-prune", operation: "worktree.prune" }
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
var destroyCommand = defineCommand({
|
|
214
|
+
meta: {
|
|
215
|
+
name: "destroy",
|
|
216
|
+
description: "Destroy the XDG worktree for a task, update audit log and sentinel index (T9805)."
|
|
217
|
+
},
|
|
218
|
+
args: {
|
|
219
|
+
taskId: {
|
|
220
|
+
type: "positional",
|
|
221
|
+
description: "The task ID whose worktree to destroy (e.g. T9805).",
|
|
222
|
+
required: true
|
|
223
|
+
},
|
|
224
|
+
force: {
|
|
225
|
+
type: "boolean",
|
|
226
|
+
description: "Force removal even when the worktree has uncommitted changes.",
|
|
227
|
+
default: false
|
|
228
|
+
},
|
|
229
|
+
reason: {
|
|
230
|
+
type: "string",
|
|
231
|
+
description: "Reason string recorded in the audit log (e.g. pr-merged, manual, idle-timeout)."
|
|
232
|
+
},
|
|
233
|
+
"keep-branch": {
|
|
234
|
+
type: "boolean",
|
|
235
|
+
description: "Do not delete the task branch after removing the worktree.",
|
|
236
|
+
default: false
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
async run({ args }) {
|
|
240
|
+
const rawTaskId = typeof args["taskId"] === "string" ? args["taskId"] : "";
|
|
241
|
+
if (rawTaskId.length === 0) {
|
|
242
|
+
cliError("Missing required positional: <taskId>.", 2);
|
|
243
|
+
process.exit(2);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const reason = typeof args["reason"] === "string" && args["reason"].length > 0 ? args["reason"] : "manual";
|
|
247
|
+
await dispatchFromCli(
|
|
248
|
+
"mutate",
|
|
249
|
+
"worktree",
|
|
250
|
+
"destroy",
|
|
251
|
+
{
|
|
252
|
+
taskId: rawTaskId,
|
|
253
|
+
force: args["force"] === true,
|
|
254
|
+
deleteBranch: args["keep-branch"] !== true,
|
|
255
|
+
reason
|
|
256
|
+
},
|
|
257
|
+
{ command: "worktree-destroy", operation: "worktree.destroy" }
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
var forceUnlockCommand = defineCommand({
|
|
262
|
+
meta: {
|
|
263
|
+
name: "force-unlock",
|
|
264
|
+
description: "Clear wedged lock state (.git/index.lock + git worktree unlock) for a task."
|
|
265
|
+
},
|
|
266
|
+
args: {
|
|
267
|
+
taskId: {
|
|
268
|
+
type: "positional",
|
|
269
|
+
description: "The task ID whose worktree should be force-unlocked (e.g. T9547).",
|
|
270
|
+
required: true
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
async run({ args }) {
|
|
274
|
+
const rawTaskId = typeof args["taskId"] === "string" ? args["taskId"] : "";
|
|
275
|
+
if (rawTaskId.length === 0) {
|
|
276
|
+
cliError("Missing required positional: <taskId>.", 2);
|
|
277
|
+
process.exit(2);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
await dispatchFromCli(
|
|
281
|
+
"mutate",
|
|
282
|
+
"worktree",
|
|
283
|
+
"forceUnlock",
|
|
284
|
+
{ taskId: rawTaskId },
|
|
285
|
+
{ command: "worktree-force-unlock", operation: "worktree.forceUnlock" }
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
var VALID_ADOPT_SOURCES = ["claude-agent", "manual", "adopted"];
|
|
290
|
+
var adoptCommand = defineCommand({
|
|
291
|
+
meta: {
|
|
292
|
+
name: "adopt",
|
|
293
|
+
description: "Register an externally-created worktree (e.g. Claude Code Agent isolation:worktree) in the CLEO SSoT so it surfaces in `cleo worktree list`."
|
|
294
|
+
},
|
|
295
|
+
args: {
|
|
296
|
+
path: {
|
|
297
|
+
type: "positional",
|
|
298
|
+
description: "Absolute or relative path to the worktree directory to adopt. For Claude Code Agent worktrees this is typically `.claude/worktrees/<sessionId>/`.",
|
|
299
|
+
required: true
|
|
300
|
+
},
|
|
301
|
+
source: {
|
|
302
|
+
type: "string",
|
|
303
|
+
description: `Source classification for this worktree (${VALID_ADOPT_SOURCES.join("|")}). Defaults to \`claude-agent\` for paths under \`.claude/worktrees/\`, else \`manual\`.`
|
|
304
|
+
},
|
|
305
|
+
"task-id": {
|
|
306
|
+
type: "string",
|
|
307
|
+
description: "Optional task ID to associate with this worktree. When omitted the command attempts to extract it from the branch name."
|
|
308
|
+
},
|
|
309
|
+
actor: {
|
|
310
|
+
type: "string",
|
|
311
|
+
description: "Override actor name written to the audit log."
|
|
312
|
+
},
|
|
313
|
+
recover: {
|
|
314
|
+
type: "boolean",
|
|
315
|
+
description: "After adopting, recover a partial ETIMEDOUT worktree by running pnpm install and clearing stale git locks.",
|
|
316
|
+
default: false
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
async run({ args }) {
|
|
320
|
+
const rawPath = typeof args["path"] === "string" ? args["path"] : "";
|
|
321
|
+
if (rawPath.length === 0) {
|
|
322
|
+
cliError("Missing required positional: <path>.", 2);
|
|
323
|
+
process.exit(2);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const rawSource = typeof args["source"] === "string" ? args["source"] : void 0;
|
|
327
|
+
const source = rawSource !== void 0 && VALID_ADOPT_SOURCES.includes(rawSource) ? rawSource : void 0;
|
|
328
|
+
const rawTaskId = typeof args["task-id"] === "string" ? args["task-id"] : void 0;
|
|
329
|
+
const rawActor = typeof args["actor"] === "string" ? args["actor"] : void 0;
|
|
330
|
+
await dispatchFromCli(
|
|
331
|
+
"mutate",
|
|
332
|
+
"worktree",
|
|
333
|
+
"adopt",
|
|
334
|
+
{
|
|
335
|
+
worktreePath: rawPath,
|
|
336
|
+
...source !== void 0 ? { source } : {},
|
|
337
|
+
...rawTaskId !== void 0 ? { taskId: rawTaskId } : {},
|
|
338
|
+
...rawActor !== void 0 ? { actor: rawActor } : {},
|
|
339
|
+
recover: args["recover"] === true
|
|
340
|
+
},
|
|
341
|
+
{ command: "worktree-adopt", operation: "worktree.adopt" }
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
var worktreeCommand = defineCommand({
|
|
346
|
+
meta: {
|
|
347
|
+
name: "worktree",
|
|
348
|
+
description: "Inspect and manage CLEO-attached git worktrees. See `cleo worktree <subcommand> --help` for details."
|
|
349
|
+
},
|
|
350
|
+
subCommands: {
|
|
351
|
+
list: listCommand,
|
|
352
|
+
adopt: adoptCommand,
|
|
353
|
+
prune: pruneCommand,
|
|
354
|
+
destroy: destroyCommand,
|
|
355
|
+
"force-unlock": forceUnlockCommand
|
|
356
|
+
},
|
|
357
|
+
// Early-return when a subcommand was matched; citty still invokes the
|
|
358
|
+
// parent run() after the subcommand finishes which would otherwise
|
|
359
|
+
// append the help text to the subcommand's JSON envelope output
|
|
360
|
+
// (T9686-A bug A4).
|
|
361
|
+
async run({ cmd, rawArgs }) {
|
|
362
|
+
const firstArg = rawArgs?.find((a) => !a.startsWith("-"));
|
|
363
|
+
if (firstArg && cmd.subCommands && firstArg in cmd.subCommands) return;
|
|
364
|
+
await showUsage(cmd);
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
export {
|
|
368
|
+
worktreeCommand
|
|
369
|
+
};
|
|
370
|
+
//# sourceMappingURL=worktree-6RXAJIST.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/cleo",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.4",
|
|
4
4
|
"description": "CLEO CLI — the assembled product consuming @cleocode/core",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli/index.js",
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
"tree-sitter-rust": "0.23.1",
|
|
32
32
|
"tree-sitter-typescript": "^0.23.2",
|
|
33
33
|
"yaml": "^2.8.3",
|
|
34
|
-
"@cleocode/animations": "2026.10.
|
|
35
|
-
"@cleocode/
|
|
36
|
-
"@cleocode/
|
|
37
|
-
"@cleocode/
|
|
38
|
-
"@cleocode/
|
|
39
|
-
"@cleocode/lafs": "2026.10.
|
|
40
|
-
"@cleocode/
|
|
41
|
-
"@cleocode/
|
|
42
|
-
"@cleocode/
|
|
43
|
-
"@cleocode/runtime": "2026.10.
|
|
44
|
-
"@cleocode/worktree": "2026.10.
|
|
34
|
+
"@cleocode/animations": "2026.10.4",
|
|
35
|
+
"@cleocode/caamp": "2026.10.4",
|
|
36
|
+
"@cleocode/cant": "2026.10.4",
|
|
37
|
+
"@cleocode/contracts": "2026.10.4",
|
|
38
|
+
"@cleocode/core": "2026.10.4",
|
|
39
|
+
"@cleocode/lafs": "2026.10.4",
|
|
40
|
+
"@cleocode/paths": "2026.10.4",
|
|
41
|
+
"@cleocode/playbooks": "2026.10.4",
|
|
42
|
+
"@cleocode/nexus": "2026.10.4",
|
|
43
|
+
"@cleocode/runtime": "2026.10.4",
|
|
44
|
+
"@cleocode/worktree": "2026.10.4"
|
|
45
45
|
},
|
|
46
46
|
"engines": {
|
|
47
47
|
"node": ">=24.16.0"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@types/node-cron": "^3.0.11",
|
|
65
65
|
"vitest": "^4.1.4",
|
|
66
|
-
"@cleocode/utils": "2026.10.
|
|
66
|
+
"@cleocode/utils": "2026.10.4"
|
|
67
67
|
},
|
|
68
68
|
"repository": {
|
|
69
69
|
"type": "git",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./DGftG5oL.js";import{o as e}from"./
|
|
1
|
+
import"./DGftG5oL.js";import{o as e}from"./DgEKqO6r.js";var t=()=>{let t=e;return{page:{subscribe:t.page.subscribe},navigating:{subscribe:t.navigating.subscribe},updated:t.updated}},n={subscribe(e){return t().page.subscribe(e)}};export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./DGftG5oL.js";import{c as e,o as t,s as n}from"./
|
|
1
|
+
import"./DGftG5oL.js";import{c as e,o as t,s as n}from"./DgEKqO6r.js";var r={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};Object.defineProperty({get from(){return n.current?n.current.from:null},get to(){return n.current?n.current.to:null},get type(){return n.current?n.current.type:null},get willUnload(){return n.current?n.current.willUnload:null},get delta(){return n.current?n.current.delta:null},get complete(){return n.current?n.current.complete:null}},`current`,{get(){throw Error(`Replace navigating.current.<prop> with navigating.<prop>`)}}),t.updated.check;var i=r;export{i as t};
|