@cleocode/cleo 2026.10.4 → 2026.10.5
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/dist/cli/{adapter-LVXHFBC4.js → adapter-OUQRSFZL.js} +10 -9
- package/dist/cli/{add-WUAV7LDT.js → add-4SRRJL4U.js} +18 -18
- package/dist/cli/{add-batch-U2DLKAQC.js → add-batch-TSWICA5J.js} +12 -11
- package/dist/cli/admin-L3F6CDYH.js +1428 -0
- package/dist/cli/{admin-I7BQYVZD.js → admin-YMU55YCU.js} +10 -9
- package/dist/cli/{adr-K2THMQBS.js → adr-XESRMFMP.js} +10 -9
- package/dist/cli/{agent-WQ6XY2DW.js → agent-TAFPIYUU.js} +66 -28
- package/dist/cli/{agent-outputs-BJIYLVTU.js → agent-outputs-HVJJIPS4.js} +3 -3
- package/dist/cli/{analyze-PGQZWGOC.js → analyze-YQ22QVGW.js} +10 -9
- package/dist/cli/{archive-5LZPF7C3.js → archive-W5XX6AH7.js} +10 -9
- package/dist/cli/{archive-stats-U6CYC6JM.js → archive-stats-HP2KPAJU.js} +10 -9
- package/dist/cli/attention-7JBDCRZX.js +124 -0
- package/dist/cli/{attention-SOURWCNI.js → attention-ZXZANHKC.js} +13 -12
- package/dist/cli/{audit-FO2Y4LH2.js → audit-ICA2SEFN.js} +2 -2
- package/dist/cli/{auth-ED7TAIXI.js → auth-DXIG5OG7.js} +5 -5
- package/dist/cli/{backfill-32TRAYRD.js → backfill-LBSYBWLR.js} +2 -2
- package/dist/cli/{backup-LEJMZJKL.js → backup-NUGBZ7NA.js} +17 -16
- package/dist/cli/{backup-inspect-6HPLUEI2.js → backup-inspect-PDRXI45A.js} +3 -3
- package/dist/cli/{backup-recover-2BTYBZU2.js → backup-recover-TVKAPERB.js} +3 -3
- package/dist/cli/{blockers-5JULUJTV.js → blockers-ZOPCGHDW.js} +10 -9
- package/dist/cli/{brain-273N3FW4.js → brain-EJOBKL4A.js} +9 -12
- package/dist/cli/{briefing-7H6OLECX.js → briefing-RDQJ6WHS.js} +11 -10
- package/dist/cli/{caamp-MFQVN6VU.js → caamp-Z3XPKEHB.js} +2 -2
- package/dist/cli/{cancel-SCMJTXZB.js → cancel-S7EHLCJN.js} +10 -9
- package/dist/cli/{cant-46XCUP4P.js → cant-CHNN6O57.js} +2 -2
- package/dist/cli/{changeset-32NMBGG2.js → changeset-RYPHPN2B.js} +4 -6
- package/dist/cli/check-C67YAU7W.js +759 -0
- package/dist/cli/{check-RWJLBCI2.js → check-DHMURGHC.js} +30 -13
- package/dist/cli/{checkpoint-37HMMKD7.js → checkpoint-UWDFOGYQ.js} +3 -3
- package/dist/cli/{chunk-NRKWJLMS.js → chunk-22YPFZYB.js} +2 -2
- package/dist/cli/{chunk-I3CRQQAD.js → chunk-2MGFDMDF.js} +84 -37
- package/dist/cli/{chunk-BCEXRFA2.js → chunk-4JYHPP4C.js} +2 -2
- package/dist/cli/{chunk-A2IUEIM5.js → chunk-4PEODTHY.js} +2 -2
- package/dist/cli/{chunk-3ZO3M37V.js → chunk-4RGSNUUP.js} +118 -170
- package/dist/cli/{chunk-AWCQH2W5.js → chunk-4VASFLUW.js} +2 -2
- package/dist/cli/{chunk-BPEVD37G.js → chunk-5PNI276X.js} +2 -2
- package/dist/cli/{chunk-OGV57L4J.js → chunk-6N6WGLXE.js} +6 -2
- package/dist/cli/{chunk-KHB52JNB.js → chunk-75UH3BLS.js} +4 -3
- package/dist/cli/{chunk-5ZFFUFH7.js → chunk-7ACK4EIN.js} +2 -2
- package/dist/cli/{chunk-MNJRLSEQ.js → chunk-7NMKLVMI.js} +2 -2
- package/dist/cli/{chunk-GFGLLDXX.js → chunk-7SINJXB6.js} +2 -2
- package/dist/cli/{chunk-KJDWWQFY.js → chunk-7UARFJYS.js} +3 -3
- package/dist/cli/{chunk-JNZJPIPJ.js → chunk-7ZYPQV4N.js} +3 -3
- package/dist/cli/{chunk-DVTPIZJM.js → chunk-AQCYT3L4.js} +2 -2
- package/dist/cli/{chunk-EGOTK2HA.js → chunk-BQK6XTOH.js} +2 -2
- package/dist/cli/{chunk-DYABOIHB.js → chunk-CAPAGD5E.js} +6 -4
- package/dist/cli/{chunk-ZZTHTMQP.js → chunk-CHGEDCKG.js} +3 -3
- package/dist/cli/{chunk-QPUY2HQZ.js → chunk-COXFJ3PT.js} +2 -2
- package/dist/cli/chunk-D7BAQNV2.js +55 -0
- package/dist/cli/{chunk-OPTEQKBB.js → chunk-EIUXVHNF.js} +3 -3
- package/dist/cli/{chunk-3PGH67MT.js → chunk-EUGB6P5V.js} +4 -6
- package/dist/cli/chunk-EW2CKNNZ.js +304 -0
- package/dist/cli/{chunk-2JIJD2I7.js → chunk-FSKN4DWC.js} +2 -2
- package/dist/cli/{chunk-NSHV2JNM.js → chunk-FVKLULL7.js} +2 -2
- package/dist/cli/{chunk-GH37QXW5.js → chunk-GAGUBU4Z.js} +2 -2
- package/dist/cli/{chunk-37NU2XDP.js → chunk-GKRFH2YG.js} +2 -2
- package/dist/cli/{chunk-ULN4OKQQ.js → chunk-GRU74UE4.js} +21 -10
- package/dist/cli/{chunk-LKNUA3SB.js → chunk-HFLLZE6A.js} +2 -2
- package/dist/cli/{chunk-YGKEECTI.js → chunk-HXRXT3XU.js} +2 -2
- package/dist/cli/{chunk-REUTEW3O.js → chunk-IIOGUY3B.js} +6 -6
- package/dist/cli/chunk-ILWWL462.js +60 -0
- package/dist/cli/{chunk-XRAX6XFP.js → chunk-J5USPJKZ.js} +2 -2
- package/dist/cli/{chunk-S24YI723.js → chunk-KEQS36GD.js} +4 -4
- package/dist/cli/chunk-L7ONYSV6.js +2497 -0
- package/dist/cli/chunk-NEFMQYLE.js +656 -0
- package/dist/cli/{chunk-QFFQSKRC.js → chunk-NU6CQQVB.js} +6 -2
- package/dist/cli/{chunk-5J2VH3BC.js → chunk-PN4WW5VX.js} +3 -3
- package/dist/cli/{chunk-AYA6F4ZT.js → chunk-PSJ33WVO.js} +3 -3
- package/dist/cli/{chunk-FORFDPP5.js → chunk-QJJWWCIC.js} +3 -3
- package/dist/cli/{chunk-ZBISIPCK.js → chunk-QKMBWYAS.js} +16 -1
- package/dist/cli/chunk-QWNKLLLG.js +84 -0
- package/dist/cli/{chunk-7INMKEAD.js → chunk-QWUFFDL3.js} +2 -2
- package/dist/cli/chunk-QY76BRUZ.js +35 -0
- package/dist/cli/chunk-R45KVF5Y.js +117 -0
- package/dist/cli/{chunk-W33Q3FBH.js → chunk-RRKP7HLU.js} +3 -3
- package/dist/cli/{chunk-YUZJI67I.js → chunk-T6GZJYL3.js} +2 -2
- package/dist/cli/{chunk-LWQBJQSE.js → chunk-TLQ37HRE.js} +3 -3
- package/dist/cli/chunk-TPTNEJZJ.js +52 -0
- package/dist/cli/chunk-TYC7G5LF.js +100 -0
- package/dist/cli/{chunk-J3ZFM3UQ.js → chunk-UWCZY52R.js} +25 -13
- package/dist/cli/{chunk-V5GBGOGM.js → chunk-VB3LDPL5.js} +2 -2
- package/dist/cli/chunk-WWCYZYSN.js +56 -0
- package/dist/cli/{chunk-EBRZ76HS.js → chunk-XA5WISNV.js} +4 -3
- package/dist/cli/chunk-XHRZ7OYZ.js +132 -0
- package/dist/cli/{chunk-EOPQFCSR.js → chunk-XLPMIGJJ.js} +6 -6
- package/dist/cli/{chunk-NWTATTEQ.js → chunk-ZMGDZMSJ.js} +2 -2
- package/dist/cli/{claim-KPENYHIQ.js → claim-IGOG2QOC.js} +10 -9
- package/dist/cli/{classify-DRVMCFQU.js → classify-MG4N7GMQ.js} +2 -2
- package/dist/cli/{cli-T3CR7J57.js → cli-A23Q335V.js} +10 -7
- package/dist/cli/{cloud-PPQ4O5TX.js → cloud-SILYJVKO.js} +194 -28
- package/dist/cli/{code-Z5CTMVTD.js → code-H2FQCVMW.js} +2 -2
- package/dist/cli/{complete-UBOCOBRB.js → complete-JLX7NBI4.js} +9 -8
- package/dist/cli/{complexity-BV2AGQRZ.js → complexity-OKV7PVZH.js} +10 -9
- package/dist/cli/{compliance-32PD5Y47.js → compliance-QMGZHJNQ.js} +10 -9
- package/dist/cli/{conduit-VDKCH33F.js → conduit-4H32UYEA.js} +10 -9
- package/dist/cli/conduit-EY54WTZA.js +535 -0
- package/dist/cli/{config-I72JAXK4.js → config-TDYOC7XO.js} +21 -18
- package/dist/cli/{consensus-LFILLSTK.js → consensus-4XCOFPPT.js} +10 -9
- package/dist/cli/{context-XUUVFVTP.js → context-FN4YTGHD.js} +12 -11
- package/dist/cli/{contribution-37NQ4N5R.js → contribution-7RWFBJLC.js} +10 -9
- package/dist/cli/{curator-TFDXU2EX.js → curator-HKZJCVRL.js} +2 -2
- package/dist/cli/{current-C4SN5BWV.js → current-B2NU7V3G.js} +10 -9
- package/dist/cli/{daemon-DV25JQ62.js → daemon-GBD4TVCD.js} +11 -10
- package/dist/cli/{dash-TFU4RLQW.js → dash-IGDANIE5.js} +10 -9
- package/dist/cli/{decide-5VPMNTSI.js → decide-26SXC2V6.js} +5 -8
- package/dist/cli/{decompose-KOYEZNJL.js → decompose-LQ76TEZG.js} +11 -10
- package/dist/cli/{decomposition-7OHUFIQN.js → decomposition-WFRWNUSJ.js} +10 -9
- package/dist/cli/{delete-Q7YCAFY5.js → delete-T5DUQHOX.js} +11 -10
- package/dist/cli/{deps-6UZKLDGJ.js → deps-UTPZJBXL.js} +17 -18
- package/dist/cli/{detect-FERY35UL.js → detect-FFZSMVDT.js} +10 -9
- package/dist/cli/{detect-drift-UL2JTPUK.js → detect-drift-TVCJOFYJ.js} +7 -7
- package/dist/cli/diagnostics-GN5CVD3N.js +93 -0
- package/dist/cli/{diagnostics-TI5QAZXR.js → diagnostics-ZNBKH6GX.js} +10 -9
- package/dist/cli/docs-CLQKEEUK.js +1710 -0
- package/dist/cli/{docs-QI2PRN3T.js → docs-DPPDFTWR.js} +45 -42
- package/dist/cli/{doctor-AX5TICQO.js → doctor-GPENOP4N.js} +79 -62
- package/dist/cli/{doctor-ac-bindings-YPMYHU2G.js → doctor-ac-bindings-S3IOEFP4.js} +3 -3
- package/dist/cli/{doctor-acceptance-drift-PYNFGMKB.js → doctor-acceptance-drift-VNFKPBSQ.js} +3 -3
- package/dist/cli/{doctor-credentials-UZRIADKM.js → doctor-credentials-A5H4JMTF.js} +3 -3
- package/dist/cli/{doctor-db-substrate-Q2TOYM2S.js → doctor-db-substrate-FGCISE4Z.js} +3 -3
- package/dist/cli/{doctor-dep-cycles-GCVYZY6F.js → doctor-dep-cycles-BKKKHHYG.js} +3 -3
- package/dist/cli/{doctor-exodus-RO5SUTC2.js → doctor-exodus-ND2DH2KP.js} +3 -3
- package/dist/cli/{doctor-exodus-residue-EM2AWQXP.js → doctor-exodus-residue-4EMRYMEQ.js} +3 -3
- package/dist/cli/{doctor-fk-check-Q3FOLECE.js → doctor-fk-check-VY3RIQV3.js} +3 -3
- package/dist/cli/{doctor-global-delivery-TNOAQ3NP.js → doctor-global-delivery-JN6IGHUL.js} +3 -3
- package/dist/cli/{doctor-heavy-command-hook-IO3QAQLG.js → doctor-heavy-command-hook-XSN44WXU.js} +3 -3
- package/dist/cli/{doctor-legacy-backups-O2YH5VLS.js → doctor-legacy-backups-QAG5NHYP.js} +3 -3
- package/dist/cli/{doctor-legacy-reaper-VSEJEIFA.js → doctor-legacy-reaper-CIRGFE6R.js} +3 -3
- package/dist/cli/{doctor-malformed-ids-LQ766V5K.js → doctor-malformed-ids-WL7HT4TB.js} +3 -3
- package/dist/cli/{doctor-manifest-rows-6FQDNHLH.js → doctor-manifest-rows-SMQCKJ2T.js} +3 -3
- package/dist/cli/{doctor-memory-guard-J4PSEKB5.js → doctor-memory-guard-LJDOJG76.js} +3 -3
- package/dist/cli/{doctor-migrations-ONOH56YM.js → doctor-migrations-ETQPFNUP.js} +3 -3
- package/dist/cli/{doctor-nexus-residency-FUQAX7PV.js → doctor-nexus-residency-A4JMKBEJ.js} +3 -3
- package/dist/cli/{doctor-project-identity-GUDK3HYX.js → doctor-project-identity-FFQJ5LNX.js} +3 -3
- package/dist/cli/{doctor-projects-7L3BNL4O.js → doctor-projects-MFUTKRHP.js} +3 -3
- package/dist/cli/{doctor-projects-registry-TEAVHFQU.js → doctor-projects-registry-76X6VTGM.js} +3 -3
- package/dist/cli/{doctor-release-readiness-IEGHX6SL.js → doctor-release-readiness-QJCOPFTK.js} +3 -3
- package/dist/cli/{doctor-repair-NBONOSZU.js → doctor-repair-AU76FIKY.js} +3 -3
- package/dist/cli/doctor-row-identity-KW6JYZQE.js +26 -0
- package/dist/cli/{doctor-skill-fixtures-7Y6L34A3.js → doctor-skill-fixtures-G3T7JUHS.js} +3 -3
- package/dist/cli/{doctor-split-brain-TUKIGVHF.js → doctor-split-brain-FUW6L7FS.js} +3 -3
- package/dist/cli/{doctor-superseded-store-BHZY2B2L.js → doctor-superseded-store-DUHGSBLC.js} +3 -3
- 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-REQMIVYK.js → doctor-tool-locks-66LSLUBN.js} +3 -3
- package/dist/cli/{doctor-twin-collapse-222GOSPE.js → doctor-twin-collapse-AYBYBFC4.js} +3 -3
- package/dist/cli/{doctor-worktree-stores-J7TCRVJ3.js → doctor-worktree-stores-C5XEH5OG.js} +3 -3
- package/dist/cli/{done-V3AOO65B.js → done-R64XRZ32.js} +11 -10
- package/dist/cli/entities-3JIHDIOK.js +361 -0
- package/dist/cli/{event-EGNPGE5A.js → event-45KEWV5H.js} +2 -2
- package/dist/cli/{exists-H4SDCBPL.js → exists-BEDZS5RI.js} +3 -3
- package/dist/cli/{exodus-KALO3B3X.js → exodus-DUX62344.js} +3 -3
- package/dist/cli/{export-ROFOCG4M.js → export-C5PQIQ5O.js} +11 -10
- package/dist/cli/{export-tasks-US3WBIEQ.js → export-tasks-CUXDZPJB.js} +11 -10
- package/dist/cli/{federation-SUIB5QWT.js → federation-ESM35EGG.js} +3 -3
- package/dist/cli/{find-YICG4BG6.js → find-5EUZHHQJ.js} +13 -12
- package/dist/cli/focus-6AH4KLRO.js +368 -0
- package/dist/cli/{focus-TKCZPKOM.js → focus-ANKAIRO5.js} +10 -9
- package/dist/cli/{gateway-H4HFDC3E.js → gateway-2GW2KTK3.js} +2 -2
- package/dist/cli/{gc-5R2TUY5T.js → gc-CTOQLUSA.js} +2 -2
- package/dist/cli/{go-PRQFK5YG.js → go-YJPNHHYT.js} +6 -6
- package/dist/cli/{goal-7CZRMLHC.js → goal-4GW4G77D.js} +4 -3
- package/dist/cli/{grade-PY2YRPUS.js → grade-25WSZH4X.js} +10 -9
- package/dist/cli/{graph-XIXMCFKG.js → graph-JUO3TMF3.js} +11 -10
- package/dist/cli/{history-EIXADPAD.js → history-NACNUQTC.js} +10 -9
- package/dist/cli/{import-R73SO444.js → import-7ESGL5SS.js} +10 -9
- package/dist/cli/{import-tasks-O22FZJ4U.js → import-tasks-FLE2RPBR.js} +10 -9
- package/dist/cli/index.js +395 -238
- package/dist/cli/{init-IHEJDQWU.js → init-AN4DZ2XO.js} +5 -5
- package/dist/cli/{inject-LSRVWNCP.js → inject-HQWA5GWY.js} +10 -9
- package/dist/cli/{install-global-4AZUCH6U.js → install-global-YQV4W5OG.js} +2 -2
- package/dist/cli/intelligence-OFFNQGHE.js +238 -0
- package/dist/cli/{intelligence-2OSFOGD2.js → intelligence-QIC4SN4X.js} +10 -9
- package/dist/cli/{issue-IIWEDNFC.js → issue-P5RNMRDG.js} +10 -9
- package/dist/cli/{janitor-GPMC7VOR.js → janitor-ZNCFQ7E3.js} +2 -2
- package/dist/cli/{labels-5NPOIQXN.js → labels-ORBM3T57.js} +10 -9
- package/dist/cli/{lifecycle-4FFS2K2T.js → lifecycle-MHR22TVI.js} +13 -12
- package/dist/cli/{list-47KEUGPQ.js → list-LB6GCYYU.js} +14 -13
- package/dist/cli/llm-H7LZWQKX.js +130 -0
- package/dist/cli/{llm-G5B3I6GD.js → llm-OTJWPMGI.js} +14 -13
- package/dist/cli/{llm-cost-S7RS6BVA.js → llm-cost-MLMXEAR4.js} +3 -3
- package/dist/cli/{llm-stream-24A45NTS.js → llm-stream-AAEUNKRP.js} +3 -3
- package/dist/cli/{log-XF6H2XSD.js → log-W2A5M2NA.js} +10 -9
- package/dist/cli/{login-LBPLGHYG.js → login-SIXFFZSP.js} +6 -4
- package/dist/cli/{logout-SX4JSJIV.js → logout-G3KVLQQM.js} +5 -5
- package/dist/cli/{manifest-NMCW4PIW.js → manifest-G4T6EBSI.js} +10 -9
- package/dist/cli/{map-BU72KMGF.js → map-VU5M72TK.js} +10 -9
- package/dist/cli/{memory-UHYIVGVM.js → memory-2E27G2G5.js} +17 -21
- package/dist/cli/memory-IAEYKXG6.js +1895 -0
- package/dist/cli/{migrate-agents-v2-OO7OILZK.js → migrate-agents-v2-A52QIYNJ.js} +3 -3
- package/dist/cli/{migrate-claude-mem-EDNYUY3K.js → migrate-claude-mem-TPDW3R4Z.js} +17 -12
- package/dist/cli/{next-RZFRG5X7.js → next-SVH4LIDY.js} +10 -9
- package/dist/cli/nexus-FPQV2EAF.js +1059 -0
- package/dist/cli/{nexus-4S4Z5EVU.js → nexus-XSFXN5E6.js} +14 -13
- package/dist/cli/{ops-KR7AWCG3.js → ops-K6LHY5J6.js} +10 -9
- package/dist/cli/orchestrate-CZ2J6W3L.js +1650 -0
- package/dist/cli/{orchestrate-HOYZY3VX.js → orchestrate-HURUCQFT.js} +13 -11
- package/dist/cli/{otel-U7IIRBCT.js → otel-JCNPVJLZ.js} +2 -2
- package/dist/cli/{phase-NYZFHUE5.js → phase-VDFRASSO.js} +10 -9
- package/dist/cli/pipeline-TCZPOEDR.js +697 -0
- package/dist/cli/{pivot-FF2CVUZL.js → pivot-V5MSQZ7L.js} +10 -9
- package/dist/cli/{plan-3SL2NTRV.js → plan-SQUGCKSM.js} +10 -9
- package/dist/cli/{playbook-2FCBV7N3.js → playbook-L47GLDQD.js} +10 -9
- package/dist/cli/playbook-NJVO4R6P.js +33 -0
- package/dist/cli/{project-WDX2TGMC.js → project-YZEC7GYF.js} +6 -5
- package/dist/cli/{promote-YINYFBZY.js → promote-FINF4HVK.js} +10 -9
- package/dist/cli/provenance-3TUWVBFR.js +141 -0
- package/dist/cli/{provenance-C7AYD7WG.js → provenance-YZG33JGM.js} +10 -9
- package/dist/cli/{provider-QLJEDQBR.js → provider-23JVLLG3.js} +10 -9
- package/dist/cli/{reason-JF5BHBM5.js → reason-FHN54O7O.js} +10 -9
- package/dist/cli/{reconcile-NMISHDGX.js → reconcile-MOM5T4AX.js} +11 -10
- package/dist/cli/{refresh-memory-EY5YNICV.js → refresh-memory-3OSTRAVK.js} +2 -2
- package/dist/cli/{relates-R3ZPICAY.js → relates-6FWUFUS2.js} +10 -9
- package/dist/cli/release-G2DPSG5M.js +347 -0
- package/dist/cli/{release-4ZJTMUUT.js → release-URX6JHZ2.js} +10 -9
- package/dist/cli/{remote-QSONJDIK.js → remote-VIULU2T5.js} +3 -3
- package/dist/cli/{renderers-64OR3IWX.js → renderers-TGSW77J4.js} +2 -2
- package/dist/cli/{reorder-J3DOE7ST.js → reorder-UIPN6TQY.js} +10 -9
- package/dist/cli/{reparent-2OUMKEZX.js → reparent-ALOWWUIU.js} +10 -9
- package/dist/cli/{req-TZB7OFKO.js → req-RH2Y3H7A.js} +10 -9
- package/dist/cli/{research-MTD7EX45.js → research-G2Y72HRC.js} +10 -9
- package/dist/cli/{restore-VEUOX7NF.js → restore-VBR5XNML.js} +62 -15
- package/dist/cli/{revert-3YF2IL5G.js → revert-32LDNSGP.js} +2 -2
- package/dist/cli/{roadmap-7OOQLXKG.js → roadmap-LFU3AG7D.js} +10 -9
- package/dist/cli/{run-2U5NZV5Z.js → run-HXRILSR7.js} +40 -6
- package/dist/cli/{safestop-VR4VK56D.js → safestop-Z5UC7NGQ.js} +10 -9
- package/dist/cli/{saga-SEWPIOX2.js → saga-Y6FZS6AM.js} +12 -11
- package/dist/cli/{schema-C52WZ35V.js → schema-OOOKLWUE.js} +5 -5
- package/dist/cli/{self-update-GQIGUDPS.js → self-update-26SOTJMH.js} +3 -3
- package/dist/cli/{selfimprove-3Y5L4ECT.js → selfimprove-4SMOCLUV.js} +10 -9
- package/dist/cli/selfimprove-EB4RQLP4.js +139 -0
- package/dist/cli/sentient-QPETVE53.js +254 -0
- package/dist/cli/{sentient-M4YMAVGV.js → sentient-RGMWR4XJ.js} +2 -2
- package/dist/cli/{sequence-6UBMA4IF.js → sequence-H7DSAJPF.js} +10 -9
- package/dist/cli/{service-5R7SILZ7.js → service-EK5MGB2D.js} +10 -9
- package/dist/cli/service-GLOMZWPQ.js +437 -0
- package/dist/cli/{session-3C6AAC4Y.js → session-HYUXAQGC.js} +12 -11
- package/dist/cli/session-N5ISU56W.js +568 -0
- package/dist/cli/{setup-BTUBW5PU.js → setup-L3YYV53D.js} +4 -4
- package/dist/cli/{show-MXT2V7TF.js → show-364V3KY2.js} +12 -11
- package/dist/cli/{skill-GFUZOU2C.js → skill-F2KR6HW5.js} +2 -2
- package/dist/cli/{skills-EDWLKAF3.js → skills-FS3DCP6E.js} +13 -12
- package/dist/cli/{snapshot-GUWMURCM.js → snapshot-EGXEQ5PR.js} +12 -11
- package/dist/cli/{src-66GAKPXR.js → src-LYLXHXHH.js} +2 -2
- package/dist/cli/{start-QFG56RGN.js → start-6DXOCCKL.js} +10 -9
- package/dist/cli/{stats-GW55P7RR.js → stats-UVUQEGYC.js} +10 -9
- package/dist/cli/{status-46HTKNRR.js → status-XLKYLN42.js} +3 -3
- package/dist/cli/sticky-VSTQ2I2O.js +264 -0
- package/dist/cli/{sticky-2DUZOUGI.js → sticky-XZXZDCFW.js} +12 -11
- package/dist/cli/{stop-J2QEUKHX.js → stop-VNOAFWNB.js} +10 -9
- package/dist/cli/{sync-GJP2QYT5.js → sync-YYPARW3A.js} +11 -10
- package/dist/cli/tasks-C24KHTFF.js +1118 -0
- package/dist/cli/{tasks-BNXTM7PB.js → tasks-LBJC7CZV.js} +10 -9
- package/dist/cli/{telemetry-55Z2XJWL.js → telemetry-CU7W5WAY.js} +2 -2
- package/dist/cli/{templates-7O77TKPV.js → templates-G42JBUY4.js} +9 -11
- package/dist/cli/{testing-37YTBNKP.js → testing-HSRITHEY.js} +10 -9
- package/dist/cli/{token-UAVJMNUI.js → token-J74E7TSU.js} +10 -9
- package/dist/cli/tools-BI74W7VE.js +652 -0
- package/dist/cli/{transcript-LORQTV5Z.js → transcript-RGK7RSGQ.js} +2 -2
- package/dist/cli/{update-NVCYV2FT.js → update-2KQWA27S.js} +19 -17
- 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-OXJXOGEF.js → upgrade-XRSQ4RWH.js} +5 -5
- package/dist/cli/{verify-LYLDHPT2.js → verify-WASRGDBA.js} +10 -9
- package/dist/cli/{web-QP2RP266.js → web-NJ3P67EU.js} +4 -4
- package/dist/cli/{workgraph-FXBSZDQE.js → workgraph-OHJ2VKJD.js} +6 -6
- package/dist/cli/{worktree-6RXAJIST.js → worktree-FVQLORFY.js} +10 -9
- package/dist/cli/worktree-ZJ6JTQNG.js +287 -0
- package/package.json +13 -13
- package/studio-dist/client/_app/immutable/chunks/{Btgeq_wq.js → AH7dIemv.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{DgEKqO6r.js → BDgH40i3.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/BXDCSJ7U.js +1 -0
- package/studio-dist/client/_app/immutable/chunks/{CgBjxmu6.js → Gg4iYl59.js} +1 -1
- package/studio-dist/client/_app/immutable/entry/{app.a02HWaRB.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.nTXyRfc-.js → 0.DWqP3ail.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.4zrWeHtl.js → 1.CZGVUP5B.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{15.D9mk4JyY.js → 15.DGaflZRS.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16._-wt-sQf.js → 16.uYlarGXl.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.CUu6LQDj.js → 17.CZMR0E47.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.Dz4QRTkX.js → 18.CBC-AKH_.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{20.CJ2_EB0U.js → 20.BGi43MvQ.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{24.Igj2FS7k.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.6iPyjT44.js → 26.Cl800304.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{3.AA5GwNgP.js → 3.D_fQKj9f.js} +1 -1
- package/studio-dist/client/_app/version.json +1 -1
- package/studio-dist/server/chunks/{0-DGmsoBYm.js → 0-BpOagOst.js} +3 -3
- package/studio-dist/server/chunks/1-D0oRGR-C.js +9 -0
- package/studio-dist/server/chunks/{15-Bg6YTndh.js → 15-BcjHz7Tv.js} +3 -3
- package/studio-dist/server/chunks/{16-BObLwgyD.js → 16-CXm8TUk7.js} +3 -3
- package/studio-dist/server/chunks/{17-BNXGyAHX.js → 17-mSgUK-cp.js} +3 -3
- package/studio-dist/server/chunks/{18-UqQFRIID.js → 18-BtfnIw1d.js} +3 -3
- package/studio-dist/server/chunks/{20-CMn8a_yP.js → 20-By1e4QDS.js} +3 -3
- package/studio-dist/server/chunks/{24-BuOTDzib.js → 24-0i2YLVxG.js} +3 -3
- package/studio-dist/server/chunks/{dist-B8xbIrdB.js → 25-DPsrqbrh.js} +795 -10736
- package/studio-dist/server/chunks/{26-DWGObn2T.js → 26-P0XkOibm.js} +3 -3
- package/studio-dist/server/chunks/{3-CyiffdJZ.js → 3-WudjUK7e.js} +3 -3
- package/studio-dist/server/chunks/{_layout.svelte-DYtClaIk.js → _layout.svelte-D9m81Rle.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-CEATWp_5.js → _page.svelte-2PDLOF83.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-Bip079LT.js → _page.svelte-BjE3jm2K.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-CV3xiD1y.js → _page.svelte-Clc0vmiZ.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-DSSy6LuK.js → _page.svelte-DABdRT3h.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-1h9E6s_f.js → _page.svelte-DG3PjiHj.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BT1EUadj.js → _page.svelte-Edy9CaE8.js} +20 -7
- package/studio-dist/server/chunks/{_page.svelte-BNNF62Nm.js → _page.svelte-Hrf3-ZR8.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-TF795TAS.js → _page.svelte-VB4O4Nl5.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-Cv_KVJDV.js → _page.svelte-d3jEgjsI.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-CzrwbhkQ.js → _server.ts-BcRFsyo3.js} +4 -5
- package/studio-dist/server/chunks/{_server.ts-C4w6UdU0.js → _server.ts-CEWpIFrj.js} +6 -5
- package/studio-dist/server/chunks/{_server.ts-BlhRFLY3.js → _server.ts-CLVdVIF9.js} +2 -2
- package/studio-dist/server/chunks/{_server.ts-Db6mEile.js → _server.ts-D_j7aSy5.js} +6 -5
- package/studio-dist/server/chunks/{_server.ts-DWt8Dziu.js → _server.ts-QEZF8h2q.js} +4 -5
- package/studio-dist/server/chunks/{client-D8f2k-H_.js → client-Kp1dP1od.js} +2 -2
- package/studio-dist/server/chunks/{error.svelte-DbbOwIme.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-1ftNGTs5.js → http-DT5kxaWk.js} +5 -4
- package/studio-dist/server/chunks/{internal-CTULuLPB.js → internal-z0vqd5_u.js} +3 -3
- package/studio-dist/server/chunks/operations-registry-DdzmYzqX.js +10584 -0
- package/studio-dist/server/chunks/{stores-CS5XOReX.js → stores-s2kaL315.js} +2 -2
- package/studio-dist/server/index.js +1 -1
- package/studio-dist/server/manifest.js +17 -17
- package/dist/cli/chunk-3IOQVUO7.js +0 -17308
- package/dist/cli/chunk-OAPN46TC.js +0 -89
- package/studio-dist/client/_app/immutable/chunks/t81h7afa.js +0 -1
- package/studio-dist/client/_app/immutable/entry/start.BreMSngo.js +0 -1
- package/studio-dist/client/_app/immutable/nodes/25.BnATjVGN.js +0 -39
- package/studio-dist/server/chunks/1-8PfxPvlK.js +0 -9
- package/studio-dist/server/chunks/25-CIMSmjVx.js +0 -366
|
@@ -0,0 +1,656 @@
|
|
|
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
|
+
E_PLAYBOOK_RESUME_BLOCKED,
|
|
18
|
+
E_PLAYBOOK_RUNTIME_INVALID,
|
|
19
|
+
PlaybookParseError,
|
|
20
|
+
executePlaybook,
|
|
21
|
+
getPendingApprovals,
|
|
22
|
+
getPlaybookApprovalByToken,
|
|
23
|
+
getPlaybookRun,
|
|
24
|
+
listPlaybookApprovals,
|
|
25
|
+
listPlaybookRuns,
|
|
26
|
+
parsePlaybook,
|
|
27
|
+
resumePlaybook
|
|
28
|
+
} from "./chunk-NU6CQQVB.js";
|
|
29
|
+
import {
|
|
30
|
+
defineTypedHandler,
|
|
31
|
+
lafsError,
|
|
32
|
+
lafsSuccess,
|
|
33
|
+
typedDispatch
|
|
34
|
+
} from "./chunk-QWNKLLLG.js";
|
|
35
|
+
import {
|
|
36
|
+
dispatchMeta,
|
|
37
|
+
getListParams,
|
|
38
|
+
handleErrorResult,
|
|
39
|
+
unsupportedOp
|
|
40
|
+
} from "./chunk-XHRZ7OYZ.js";
|
|
41
|
+
|
|
42
|
+
// packages/cleo/src/dispatch/domains/playbook.ts
|
|
43
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
44
|
+
import { join, resolve as resolvePath } from "node:path";
|
|
45
|
+
import {
|
|
46
|
+
listPlaybooks,
|
|
47
|
+
PlaybookNotFoundError,
|
|
48
|
+
resolvePlaybook
|
|
49
|
+
} from "@cleocode/core/playbooks/playbook-resolver";
|
|
50
|
+
var __playbookRuntimeOverrides = {};
|
|
51
|
+
function normalizeListStatus(raw) {
|
|
52
|
+
if (typeof raw !== "string" || raw.length === 0) return void 0;
|
|
53
|
+
const value = raw.trim().toLowerCase();
|
|
54
|
+
switch (value) {
|
|
55
|
+
case "active":
|
|
56
|
+
case "running":
|
|
57
|
+
return "running";
|
|
58
|
+
case "pending":
|
|
59
|
+
case "paused":
|
|
60
|
+
return "paused";
|
|
61
|
+
case "completed":
|
|
62
|
+
case "done":
|
|
63
|
+
return "completed";
|
|
64
|
+
case "failed":
|
|
65
|
+
return "failed";
|
|
66
|
+
case "cancelled":
|
|
67
|
+
case "canceled":
|
|
68
|
+
return "cancelled";
|
|
69
|
+
default:
|
|
70
|
+
return void 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async function loadPlaybookByName(name) {
|
|
74
|
+
const candidates = __playbookRuntimeOverrides.playbookBaseDirs;
|
|
75
|
+
if (candidates) {
|
|
76
|
+
const fileName = name.endsWith(".cantbook") ? name : `${name}.cantbook`;
|
|
77
|
+
for (const dir of candidates) {
|
|
78
|
+
const full = join(dir, fileName);
|
|
79
|
+
if (existsSync(full)) {
|
|
80
|
+
return { sourcePath: full, source: readFileSync(full, "utf8") };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const { getProjectRoot } = await import("@cleocode/core/project-scope");
|
|
87
|
+
const projectRoot = __playbookRuntimeOverrides.projectRoot ?? getProjectRoot();
|
|
88
|
+
const resolved = resolvePlaybook(name, {
|
|
89
|
+
projectRoot,
|
|
90
|
+
globalPlaybooksDir: __playbookRuntimeOverrides.globalPlaybooksDir,
|
|
91
|
+
packagedStarterDir: __playbookRuntimeOverrides.packagedStarterDir
|
|
92
|
+
});
|
|
93
|
+
return { sourcePath: resolved.path, source: resolved.source };
|
|
94
|
+
} catch (err) {
|
|
95
|
+
if (err instanceof PlaybookNotFoundError) return null;
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function parseContextJson(raw) {
|
|
100
|
+
if (raw === void 0 || raw === null || raw === "") return {};
|
|
101
|
+
if (typeof raw === "object" && !Array.isArray(raw)) {
|
|
102
|
+
return raw;
|
|
103
|
+
}
|
|
104
|
+
if (typeof raw !== "string") {
|
|
105
|
+
throw new Error(`context must be a JSON object, got ${typeof raw}`);
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
const parsed = JSON.parse(raw);
|
|
109
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
110
|
+
throw new Error("context JSON must decode to an object");
|
|
111
|
+
}
|
|
112
|
+
return parsed;
|
|
113
|
+
} catch (err) {
|
|
114
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
115
|
+
throw new Error(`invalid context JSON: ${message}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function acquireDb() {
|
|
119
|
+
if (__playbookRuntimeOverrides.db) return __playbookRuntimeOverrides.db;
|
|
120
|
+
const { getDb, getNativeDb } = await import("@cleocode/core/store/sqlite");
|
|
121
|
+
await getDb();
|
|
122
|
+
const native = getNativeDb();
|
|
123
|
+
if (!native) {
|
|
124
|
+
throw new Error("playbook dispatch: tasks.db singleton was not initialized by getDb()");
|
|
125
|
+
}
|
|
126
|
+
return native;
|
|
127
|
+
}
|
|
128
|
+
async function buildDefaultDispatcher() {
|
|
129
|
+
if (__playbookRuntimeOverrides.dispatcher) return __playbookRuntimeOverrides.dispatcher;
|
|
130
|
+
const { orchestrateSpawnExecute } = await import("@cleocode/runtime/gateway");
|
|
131
|
+
const [
|
|
132
|
+
{ getProjectRoot },
|
|
133
|
+
{ createToolGuard },
|
|
134
|
+
{ runSkillNodeOrSpawn },
|
|
135
|
+
{ maybeCreatePiRunner },
|
|
136
|
+
{ resolveCantbookNodeProfile, hasCantbookProfilePin },
|
|
137
|
+
{ DEFAULT_DETERMINISTIC_DENIED_COMMANDS }
|
|
138
|
+
] = await Promise.all([
|
|
139
|
+
import("@cleocode/core/project-scope"),
|
|
140
|
+
import("@cleocode/core/tools/guard"),
|
|
141
|
+
import("@cleocode/core/playbooks/skill-node-executor"),
|
|
142
|
+
import("@cleocode/core/playbooks/pi-runner-wiring"),
|
|
143
|
+
import("@cleocode/core/playbooks/cantbook-profile"),
|
|
144
|
+
import("@cleocode/core/playbooks/guarded-deterministic-runner")
|
|
145
|
+
]);
|
|
146
|
+
const projectRoot = getProjectRoot();
|
|
147
|
+
const tools = createToolGuard({
|
|
148
|
+
allowedRoots: [projectRoot],
|
|
149
|
+
deniedCommands: DEFAULT_DETERMINISTIC_DENIED_COMMANDS,
|
|
150
|
+
mode: "enforce"
|
|
151
|
+
});
|
|
152
|
+
const runner = await maybeCreatePiRunner({ system: "task-executor", projectRoot });
|
|
153
|
+
const resolveStageProfile = async (input) => {
|
|
154
|
+
if (!hasCantbookProfilePin({
|
|
155
|
+
profile: input.profile,
|
|
156
|
+
model: input.model,
|
|
157
|
+
provider: input.provider
|
|
158
|
+
})) {
|
|
159
|
+
return void 0;
|
|
160
|
+
}
|
|
161
|
+
const resolved = await resolveCantbookNodeProfile({
|
|
162
|
+
playbookName: input.playbookName ?? "cantbook",
|
|
163
|
+
nodeId: input.nodeId,
|
|
164
|
+
pin: { profile: input.profile, model: input.model, provider: input.provider },
|
|
165
|
+
projectRoot
|
|
166
|
+
});
|
|
167
|
+
return {
|
|
168
|
+
[`${input.nodeId}_llm`]: {
|
|
169
|
+
provider: resolved.provider,
|
|
170
|
+
model: resolved.model,
|
|
171
|
+
source: resolved.source,
|
|
172
|
+
profile: input.profile ?? null
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
const spawn = async (input) => {
|
|
177
|
+
const result = await orchestrateSpawnExecute(
|
|
178
|
+
input.taskId,
|
|
179
|
+
/* adapterId */
|
|
180
|
+
void 0,
|
|
181
|
+
/* protocolType */
|
|
182
|
+
void 0,
|
|
183
|
+
projectRoot,
|
|
184
|
+
/* tier */
|
|
185
|
+
void 0
|
|
186
|
+
);
|
|
187
|
+
if (result.success) {
|
|
188
|
+
return {
|
|
189
|
+
status: "success",
|
|
190
|
+
output: {
|
|
191
|
+
[`${input.nodeId}_spawn`]: true,
|
|
192
|
+
nodeId: input.nodeId,
|
|
193
|
+
agentId: input.agentId,
|
|
194
|
+
dispatchData: result.data ?? null
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
status: "failure",
|
|
200
|
+
output: {},
|
|
201
|
+
error: result.error?.message ?? `spawn failed for ${input.agentId}`
|
|
202
|
+
};
|
|
203
|
+
};
|
|
204
|
+
return {
|
|
205
|
+
async dispatch(input) {
|
|
206
|
+
try {
|
|
207
|
+
const llmHint = await resolveStageProfile(input);
|
|
208
|
+
const result = await runSkillNodeOrSpawn(
|
|
209
|
+
{ nodeId: input.nodeId, agentId: input.agentId, context: input.context },
|
|
210
|
+
{
|
|
211
|
+
tools,
|
|
212
|
+
cwd: projectRoot,
|
|
213
|
+
subprocessSpawn: () => spawn(input),
|
|
214
|
+
...runner !== void 0 ? { runner } : {}
|
|
215
|
+
}
|
|
216
|
+
);
|
|
217
|
+
if (llmHint !== void 0 && result.status === "success") {
|
|
218
|
+
return { ...result, output: { ...result.output, ...llmHint } };
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
221
|
+
} catch (err) {
|
|
222
|
+
return {
|
|
223
|
+
status: "failure",
|
|
224
|
+
output: {},
|
|
225
|
+
error: err instanceof Error ? err.message : String(err)
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
async function buildDefaultDeterministicRunner() {
|
|
232
|
+
if (__playbookRuntimeOverrides.deterministicRunner) {
|
|
233
|
+
return __playbookRuntimeOverrides.deterministicRunner;
|
|
234
|
+
}
|
|
235
|
+
if (__playbookRuntimeOverrides.dispatcher) {
|
|
236
|
+
return void 0;
|
|
237
|
+
}
|
|
238
|
+
const [
|
|
239
|
+
{ getProjectRoot },
|
|
240
|
+
{ createToolGuard },
|
|
241
|
+
{ createGuardedDeterministicRunner, DEFAULT_DETERMINISTIC_DENIED_COMMANDS }
|
|
242
|
+
] = await Promise.all([
|
|
243
|
+
import("@cleocode/core/project-scope"),
|
|
244
|
+
import("@cleocode/core/tools/guard"),
|
|
245
|
+
import("@cleocode/core/playbooks/guarded-deterministic-runner")
|
|
246
|
+
]);
|
|
247
|
+
const projectRoot = getProjectRoot();
|
|
248
|
+
const tools = createToolGuard({
|
|
249
|
+
allowedRoots: [projectRoot],
|
|
250
|
+
deniedCommands: DEFAULT_DETERMINISTIC_DENIED_COMMANDS,
|
|
251
|
+
mode: "enforce"
|
|
252
|
+
});
|
|
253
|
+
return createGuardedDeterministicRunner({ tools });
|
|
254
|
+
}
|
|
255
|
+
function toRunEnvelope(result) {
|
|
256
|
+
const envelope = {
|
|
257
|
+
runId: result.runId,
|
|
258
|
+
terminalStatus: result.terminalStatus,
|
|
259
|
+
finalContext: result.finalContext
|
|
260
|
+
};
|
|
261
|
+
if (result.approvalToken !== void 0) envelope.approvalToken = result.approvalToken;
|
|
262
|
+
if (result.failedNodeId !== void 0) envelope.failedNodeId = result.failedNodeId;
|
|
263
|
+
if (result.exceededNodeId !== void 0) envelope.exceededNodeId = result.exceededNodeId;
|
|
264
|
+
if (result.errorContext !== void 0) envelope.errorContext = result.errorContext;
|
|
265
|
+
return envelope;
|
|
266
|
+
}
|
|
267
|
+
var _playbookTypedHandler = defineTypedHandler("playbook", {
|
|
268
|
+
// -----------------------------------------------------------------------
|
|
269
|
+
// Query ops
|
|
270
|
+
// -----------------------------------------------------------------------
|
|
271
|
+
status: async (params) => {
|
|
272
|
+
const runId = params.runId;
|
|
273
|
+
if (!runId) {
|
|
274
|
+
return lafsError("E_INVALID_INPUT", "runId is required", "status");
|
|
275
|
+
}
|
|
276
|
+
const db = await acquireDb();
|
|
277
|
+
const run = getPlaybookRun(db, runId);
|
|
278
|
+
if (run === null) {
|
|
279
|
+
return lafsError("E_NOT_FOUND", `playbook run ${runId} not found`, "status");
|
|
280
|
+
}
|
|
281
|
+
return lafsSuccess(run, "status");
|
|
282
|
+
},
|
|
283
|
+
// SSoT-EXEMPT:db-injection+runtime-offset-pagination — listPlaybookRunsState only
|
|
284
|
+
// supports LIMIT; offset must be applied client-side after fetch. acquireDb() returns
|
|
285
|
+
// a DatabaseSync handle that cannot be represented as a wire-format param (ADR-057 D1).
|
|
286
|
+
list: async (params) => {
|
|
287
|
+
const statusFilter = normalizeListStatus(params.status);
|
|
288
|
+
const epicId = typeof params.epicId === "string" ? params.epicId : void 0;
|
|
289
|
+
const { limit, offset } = getListParams(params);
|
|
290
|
+
const db = await acquireDb();
|
|
291
|
+
const opts = {};
|
|
292
|
+
if (statusFilter !== void 0) opts.status = statusFilter;
|
|
293
|
+
if (epicId !== void 0) opts.epicId = epicId;
|
|
294
|
+
if (typeof limit === "number") opts.limit = limit;
|
|
295
|
+
const runs = listPlaybookRuns(db, opts);
|
|
296
|
+
const paged = typeof offset === "number" ? runs.slice(offset) : runs;
|
|
297
|
+
const envelope = {
|
|
298
|
+
runs: paged,
|
|
299
|
+
count: paged.length,
|
|
300
|
+
total: runs.length
|
|
301
|
+
};
|
|
302
|
+
if (statusFilter !== void 0) envelope.statusFilter = statusFilter;
|
|
303
|
+
return lafsSuccess(envelope, "list");
|
|
304
|
+
},
|
|
305
|
+
// SSoT-EXEMPT:file-load+parse — must resolve .cantbook from disk before any DB row
|
|
306
|
+
// is written; parsePlaybook returns a non-wire-serializable definition object
|
|
307
|
+
// (ADR-057 D1 exception).
|
|
308
|
+
validate: async (params) => {
|
|
309
|
+
const file = params.file;
|
|
310
|
+
const name = params.name;
|
|
311
|
+
if (!file && !name) {
|
|
312
|
+
return lafsError(
|
|
313
|
+
"E_INVALID_INPUT",
|
|
314
|
+
"Either file (path) or name (playbook name) is required",
|
|
315
|
+
"validate"
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
let source;
|
|
319
|
+
let sourcePath;
|
|
320
|
+
if (file) {
|
|
321
|
+
const resolved = resolvePath(file);
|
|
322
|
+
if (!existsSync(resolved)) {
|
|
323
|
+
return lafsError("E_NOT_FOUND", `playbook file not found: ${resolved}`, "validate");
|
|
324
|
+
}
|
|
325
|
+
sourcePath = resolved;
|
|
326
|
+
source = readFileSync(resolved, "utf8");
|
|
327
|
+
} else {
|
|
328
|
+
const loaded = await loadPlaybookByName(name);
|
|
329
|
+
if (loaded === null) {
|
|
330
|
+
return lafsError(
|
|
331
|
+
"E_NOT_FOUND",
|
|
332
|
+
`playbook "${name}" not found in any search path`,
|
|
333
|
+
"validate"
|
|
334
|
+
);
|
|
335
|
+
}
|
|
336
|
+
sourcePath = loaded.sourcePath;
|
|
337
|
+
source = loaded.source;
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const { definition, sourceHash } = parsePlaybook(source);
|
|
341
|
+
return lafsSuccess(
|
|
342
|
+
{
|
|
343
|
+
valid: true,
|
|
344
|
+
sourcePath,
|
|
345
|
+
sourceHash,
|
|
346
|
+
name: definition.name,
|
|
347
|
+
version: definition.version,
|
|
348
|
+
nodeCount: definition.nodes.length,
|
|
349
|
+
edgeCount: definition.edges.length,
|
|
350
|
+
hasRequires: definition.nodes.some((n) => n.requires !== void 0),
|
|
351
|
+
hasEnsures: definition.nodes.some((n) => n.ensures !== void 0),
|
|
352
|
+
hasErrorHandlers: (definition.error_handlers?.length ?? 0) > 0
|
|
353
|
+
},
|
|
354
|
+
"validate"
|
|
355
|
+
);
|
|
356
|
+
} catch (err) {
|
|
357
|
+
if (err instanceof PlaybookParseError) {
|
|
358
|
+
return lafsError(
|
|
359
|
+
err.code,
|
|
360
|
+
`${err.message}${err.field ? ` [field=${err.field}]` : ""}`,
|
|
361
|
+
"validate"
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
return lafsError(
|
|
365
|
+
"E_PLAYBOOK_PARSE",
|
|
366
|
+
err instanceof Error ? err.message : String(err),
|
|
367
|
+
"validate"
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
// SSoT-EXEMPT:filesystem-resolver — listPlaybooks() reads .cantbook files from the
|
|
372
|
+
// filesystem across three tiers (project / global / packaged). projectRoot comes
|
|
373
|
+
// from @cleocode/core/internal which is non-wire-serializable infrastructure (ADR-057 D1).
|
|
374
|
+
catalog: async (params) => {
|
|
375
|
+
const tierFilter = params.tier ?? "all";
|
|
376
|
+
let projectRoot;
|
|
377
|
+
if (tierFilter === "all" || tierFilter === "project") {
|
|
378
|
+
if (__playbookRuntimeOverrides.projectRoot) {
|
|
379
|
+
projectRoot = __playbookRuntimeOverrides.projectRoot;
|
|
380
|
+
} else {
|
|
381
|
+
try {
|
|
382
|
+
const { getProjectRoot } = await import("@cleocode/core/project-scope");
|
|
383
|
+
projectRoot = getProjectRoot();
|
|
384
|
+
} catch {
|
|
385
|
+
projectRoot = void 0;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
const allEntries = listPlaybooks({
|
|
390
|
+
projectRoot,
|
|
391
|
+
globalPlaybooksDir: __playbookRuntimeOverrides.globalPlaybooksDir,
|
|
392
|
+
packagedStarterDir: __playbookRuntimeOverrides.packagedStarterDir
|
|
393
|
+
});
|
|
394
|
+
const filtered = tierFilter === "all" ? allEntries : allEntries.filter((entry) => entry.tier === tierFilter);
|
|
395
|
+
return lafsSuccess(
|
|
396
|
+
{
|
|
397
|
+
playbooks: filtered.map((entry) => ({
|
|
398
|
+
name: entry.name,
|
|
399
|
+
tier: entry.tier,
|
|
400
|
+
path: entry.path
|
|
401
|
+
})),
|
|
402
|
+
count: filtered.length,
|
|
403
|
+
tierFilter
|
|
404
|
+
},
|
|
405
|
+
"catalog"
|
|
406
|
+
);
|
|
407
|
+
},
|
|
408
|
+
// -----------------------------------------------------------------------
|
|
409
|
+
// Mutate ops
|
|
410
|
+
// -----------------------------------------------------------------------
|
|
411
|
+
// SSoT-EXEMPT:db-injection+file-load+executePlaybook — db is a DatabaseSync handle
|
|
412
|
+
// (non-wire-serializable infrastructure per ADR-057 D1); file loading and
|
|
413
|
+
// parsePlaybook return a non-wire-serializable PlaybookDefinition; executePlaybook
|
|
414
|
+
// is the runtime state machine SSoT in @cleocode/playbooks and must remain here.
|
|
415
|
+
run: async (params) => {
|
|
416
|
+
const name = params.name;
|
|
417
|
+
if (!name) {
|
|
418
|
+
return lafsError("E_INVALID_INPUT", "name is required", "run");
|
|
419
|
+
}
|
|
420
|
+
let initialContext;
|
|
421
|
+
try {
|
|
422
|
+
initialContext = parseContextJson(params.context);
|
|
423
|
+
} catch (err) {
|
|
424
|
+
return lafsError("E_INVALID_INPUT", err instanceof Error ? err.message : String(err), "run");
|
|
425
|
+
}
|
|
426
|
+
const loaded = await loadPlaybookByName(name);
|
|
427
|
+
if (loaded === null) {
|
|
428
|
+
return lafsError("E_NOT_FOUND", `playbook "${name}" not found in any search path`, "run");
|
|
429
|
+
}
|
|
430
|
+
let parsed;
|
|
431
|
+
try {
|
|
432
|
+
parsed = parsePlaybook(loaded.source);
|
|
433
|
+
} catch (err) {
|
|
434
|
+
if (err instanceof PlaybookParseError) {
|
|
435
|
+
return lafsError(
|
|
436
|
+
err.code,
|
|
437
|
+
`${err.message}${err.field ? ` [field=${err.field}]` : ""}`,
|
|
438
|
+
"run"
|
|
439
|
+
);
|
|
440
|
+
}
|
|
441
|
+
return lafsError("E_PLAYBOOK_PARSE", err instanceof Error ? err.message : String(err), "run");
|
|
442
|
+
}
|
|
443
|
+
const db = await acquireDb();
|
|
444
|
+
const dispatcher = await buildDefaultDispatcher();
|
|
445
|
+
const deterministicRunner = await buildDefaultDeterministicRunner();
|
|
446
|
+
let result;
|
|
447
|
+
try {
|
|
448
|
+
const { getProjectRoot } = await import("@cleocode/core/project-scope");
|
|
449
|
+
const opts = {
|
|
450
|
+
db,
|
|
451
|
+
playbook: parsed.definition,
|
|
452
|
+
playbookHash: parsed.sourceHash,
|
|
453
|
+
initialContext,
|
|
454
|
+
dispatcher,
|
|
455
|
+
projectRoot: getProjectRoot()
|
|
456
|
+
};
|
|
457
|
+
if (deterministicRunner !== void 0) opts.deterministicRunner = deterministicRunner;
|
|
458
|
+
if (__playbookRuntimeOverrides.approvalSecret !== void 0) {
|
|
459
|
+
opts.approvalSecret = __playbookRuntimeOverrides.approvalSecret;
|
|
460
|
+
}
|
|
461
|
+
const epicIdRaw = initialContext["epicId"];
|
|
462
|
+
if (typeof epicIdRaw === "string") opts.epicId = epicIdRaw;
|
|
463
|
+
const sessionIdRaw = initialContext["sessionId"];
|
|
464
|
+
if (typeof sessionIdRaw === "string") opts.sessionId = sessionIdRaw;
|
|
465
|
+
result = await executePlaybook(opts);
|
|
466
|
+
} catch (err) {
|
|
467
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
468
|
+
const code = message.startsWith(E_PLAYBOOK_RUNTIME_INVALID) ? E_PLAYBOOK_RUNTIME_INVALID : "E_PLAYBOOK_RUNTIME";
|
|
469
|
+
return lafsError(code, message, "run");
|
|
470
|
+
}
|
|
471
|
+
return lafsSuccess(
|
|
472
|
+
{
|
|
473
|
+
...toRunEnvelope(result),
|
|
474
|
+
playbookName: parsed.definition.name,
|
|
475
|
+
playbookSource: loaded.sourcePath
|
|
476
|
+
},
|
|
477
|
+
"run"
|
|
478
|
+
);
|
|
479
|
+
},
|
|
480
|
+
// SSoT-EXEMPT:db-injection+gate-validation — db is a DatabaseSync handle (ADR-057 D1);
|
|
481
|
+
// approval gate state machine requires loading playbook source + verifying hash
|
|
482
|
+
// integrity; resumePlaybook is the runtime SSoT in @cleocode/playbooks.
|
|
483
|
+
resume: async (params) => {
|
|
484
|
+
const runId = params.runId;
|
|
485
|
+
if (!runId) {
|
|
486
|
+
return lafsError("E_INVALID_INPUT", "runId is required", "resume");
|
|
487
|
+
}
|
|
488
|
+
const db = await acquireDb();
|
|
489
|
+
const run = getPlaybookRun(db, runId);
|
|
490
|
+
if (run === null) {
|
|
491
|
+
return lafsError("E_NOT_FOUND", `playbook run ${runId} not found`, "resume");
|
|
492
|
+
}
|
|
493
|
+
const approvals = loadApprovalsForRun(db, runId);
|
|
494
|
+
if (approvals.length === 0) {
|
|
495
|
+
return lafsError(
|
|
496
|
+
"E_APPROVAL_NOT_FOUND",
|
|
497
|
+
`run ${runId} has no approval gates \u2014 nothing to resume`,
|
|
498
|
+
"resume"
|
|
499
|
+
);
|
|
500
|
+
}
|
|
501
|
+
const latest = approvals[approvals.length - 1];
|
|
502
|
+
if (latest.status === "pending") {
|
|
503
|
+
return lafsError(
|
|
504
|
+
"E_APPROVAL_PENDING",
|
|
505
|
+
`gate ${latest.approvalId} for run ${runId} is still pending \u2014 approve before resuming`,
|
|
506
|
+
"resume"
|
|
507
|
+
);
|
|
508
|
+
}
|
|
509
|
+
if (latest.status === "rejected") {
|
|
510
|
+
return lafsError(
|
|
511
|
+
"E_APPROVAL_REJECTED",
|
|
512
|
+
`gate ${latest.approvalId} was rejected${latest.reason ? ` (${latest.reason})` : ""}`,
|
|
513
|
+
"resume"
|
|
514
|
+
);
|
|
515
|
+
}
|
|
516
|
+
const loaded = await loadPlaybookByName(run.playbookName);
|
|
517
|
+
if (loaded === null) {
|
|
518
|
+
return lafsError(
|
|
519
|
+
"E_NOT_FOUND",
|
|
520
|
+
`playbook "${run.playbookName}" not found \u2014 cannot resume run ${runId}`,
|
|
521
|
+
"resume"
|
|
522
|
+
);
|
|
523
|
+
}
|
|
524
|
+
let parsed;
|
|
525
|
+
try {
|
|
526
|
+
parsed = parsePlaybook(loaded.source);
|
|
527
|
+
} catch (err) {
|
|
528
|
+
return lafsError(
|
|
529
|
+
"E_PLAYBOOK_PARSE",
|
|
530
|
+
err instanceof Error ? err.message : String(err),
|
|
531
|
+
"resume"
|
|
532
|
+
);
|
|
533
|
+
}
|
|
534
|
+
if (parsed.sourceHash !== run.playbookHash) {
|
|
535
|
+
return lafsError(
|
|
536
|
+
"E_PLAYBOOK_HASH_MISMATCH",
|
|
537
|
+
`playbook "${run.playbookName}" source changed since run started (hash drift)`,
|
|
538
|
+
"resume"
|
|
539
|
+
);
|
|
540
|
+
}
|
|
541
|
+
const dispatcher = await buildDefaultDispatcher();
|
|
542
|
+
const deterministicRunner = await buildDefaultDeterministicRunner();
|
|
543
|
+
try {
|
|
544
|
+
const opts = {
|
|
545
|
+
db,
|
|
546
|
+
playbook: parsed.definition,
|
|
547
|
+
approvalToken: latest.token,
|
|
548
|
+
dispatcher
|
|
549
|
+
};
|
|
550
|
+
if (deterministicRunner !== void 0) opts.deterministicRunner = deterministicRunner;
|
|
551
|
+
if (__playbookRuntimeOverrides.approvalSecret !== void 0) {
|
|
552
|
+
opts.approvalSecret = __playbookRuntimeOverrides.approvalSecret;
|
|
553
|
+
}
|
|
554
|
+
const result = await resumePlaybook(opts);
|
|
555
|
+
return lafsSuccess(toRunEnvelope(result), "resume");
|
|
556
|
+
} catch (err) {
|
|
557
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
558
|
+
if (message.startsWith(E_PLAYBOOK_RESUME_BLOCKED)) {
|
|
559
|
+
return lafsError(E_PLAYBOOK_RESUME_BLOCKED, message, "resume");
|
|
560
|
+
}
|
|
561
|
+
return lafsError("E_PLAYBOOK_RUNTIME", message, "resume");
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
});
|
|
565
|
+
var QUERY_OPS = /* @__PURE__ */ new Set(["status", "list", "validate", "catalog"]);
|
|
566
|
+
var MUTATE_OPS = /* @__PURE__ */ new Set(["run", "resume"]);
|
|
567
|
+
var PlaybookHandler = class {
|
|
568
|
+
/**
|
|
569
|
+
* Query gateway — `status`, `list`, and `validate`.
|
|
570
|
+
*/
|
|
571
|
+
async query(operation, params) {
|
|
572
|
+
const startTime = Date.now();
|
|
573
|
+
if (!QUERY_OPS.has(operation)) {
|
|
574
|
+
return unsupportedOp("query", "playbook", operation, startTime);
|
|
575
|
+
}
|
|
576
|
+
try {
|
|
577
|
+
const envelope = await typedDispatch(
|
|
578
|
+
_playbookTypedHandler,
|
|
579
|
+
operation,
|
|
580
|
+
params ?? {}
|
|
581
|
+
);
|
|
582
|
+
return {
|
|
583
|
+
meta: dispatchMeta("query", "playbook", operation, startTime),
|
|
584
|
+
success: envelope.success,
|
|
585
|
+
...envelope.success ? { data: envelope.data } : {
|
|
586
|
+
error: {
|
|
587
|
+
code: envelope.error?.code !== void 0 ? String(envelope.error.code) : "E_INTERNAL",
|
|
588
|
+
message: envelope.error?.message ?? "Unknown error"
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
};
|
|
592
|
+
} catch (err) {
|
|
593
|
+
return handleErrorResult("query", "playbook", operation, err, startTime);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* Mutate gateway — `run` and `resume`.
|
|
598
|
+
*/
|
|
599
|
+
async mutate(operation, params) {
|
|
600
|
+
const startTime = Date.now();
|
|
601
|
+
if (!MUTATE_OPS.has(operation)) {
|
|
602
|
+
return unsupportedOp("mutate", "playbook", operation, startTime);
|
|
603
|
+
}
|
|
604
|
+
try {
|
|
605
|
+
const envelope = await typedDispatch(
|
|
606
|
+
_playbookTypedHandler,
|
|
607
|
+
operation,
|
|
608
|
+
params ?? {}
|
|
609
|
+
);
|
|
610
|
+
return {
|
|
611
|
+
meta: dispatchMeta("mutate", "playbook", operation, startTime),
|
|
612
|
+
success: envelope.success,
|
|
613
|
+
...envelope.success ? { data: envelope.data } : {
|
|
614
|
+
error: {
|
|
615
|
+
code: envelope.error?.code !== void 0 ? String(envelope.error.code) : "E_INTERNAL",
|
|
616
|
+
message: envelope.error?.message ?? "Unknown error"
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
};
|
|
620
|
+
} catch (err) {
|
|
621
|
+
return handleErrorResult("mutate", "playbook", operation, err, startTime);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* Exposed operations for dispatcher introspection + parity tests.
|
|
626
|
+
*/
|
|
627
|
+
getSupportedOperations() {
|
|
628
|
+
return {
|
|
629
|
+
query: ["catalog", "list", "status", "validate"],
|
|
630
|
+
mutate: ["run", "resume"]
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
};
|
|
634
|
+
function loadApprovalsForRun(db, runId) {
|
|
635
|
+
return listPlaybookApprovals(db, runId);
|
|
636
|
+
}
|
|
637
|
+
async function acquirePlaybookDb() {
|
|
638
|
+
return acquireDb();
|
|
639
|
+
}
|
|
640
|
+
async function listPendingApprovalsForDispatch() {
|
|
641
|
+
const db = await acquireDb();
|
|
642
|
+
return getPendingApprovals(db);
|
|
643
|
+
}
|
|
644
|
+
async function lookupApprovalByTokenForDispatch(token) {
|
|
645
|
+
const db = await acquireDb();
|
|
646
|
+
return getPlaybookApprovalByToken(db, token);
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
export {
|
|
650
|
+
__playbookRuntimeOverrides,
|
|
651
|
+
PlaybookHandler,
|
|
652
|
+
acquirePlaybookDb,
|
|
653
|
+
listPendingApprovalsForDispatch,
|
|
654
|
+
lookupApprovalByTokenForDispatch
|
|
655
|
+
};
|
|
656
|
+
//# sourceMappingURL=chunk-NEFMQYLE.js.map
|
|
@@ -3497,7 +3497,11 @@ function evaluatePolicy(command, rules = DEFAULT_POLICY_RULES) {
|
|
|
3497
3497
|
// packages/playbooks/src/runtime.ts
|
|
3498
3498
|
import { appendFileSync, mkdirSync } from "node:fs";
|
|
3499
3499
|
import { dirname, join } from "node:path";
|
|
3500
|
-
import {
|
|
3500
|
+
import { defaultResolver as defaultVariableResolver } from "@cleocode/core/agents/variable-substitution";
|
|
3501
|
+
import {
|
|
3502
|
+
getEnsuresSchema,
|
|
3503
|
+
listEnsuresSchemaNames
|
|
3504
|
+
} from "@cleocode/core/dispatch/contracts/ensures-schema";
|
|
3501
3505
|
|
|
3502
3506
|
// packages/playbooks/src/state.ts
|
|
3503
3507
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
@@ -4494,4 +4498,4 @@ export {
|
|
|
4494
4498
|
js-yaml/dist/js-yaml.mjs:
|
|
4495
4499
|
(*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT *)
|
|
4496
4500
|
*/
|
|
4497
|
-
//# sourceMappingURL=chunk-
|
|
4501
|
+
//# sourceMappingURL=chunk-NU6CQQVB.js.map
|
|
@@ -18,15 +18,15 @@ import {
|
|
|
18
18
|
} from "./chunk-PKKZPOOP.js";
|
|
19
19
|
import {
|
|
20
20
|
cliOutput
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-4RGSNUUP.js";
|
|
22
22
|
|
|
23
23
|
// packages/cleo/src/cli/commands/doctor-project-identity.ts
|
|
24
|
-
import { getProjectRoot } from "@cleocode/core";
|
|
25
24
|
import {
|
|
26
25
|
inspectProjectIdentity,
|
|
27
26
|
inspectProjectNameDrift,
|
|
28
27
|
resolveProjectIdentity
|
|
29
28
|
} from "@cleocode/core/doctor/project-identity.js";
|
|
29
|
+
import { getProjectRoot } from "@cleocode/core/project-scope";
|
|
30
30
|
var doctorProjectIdentityCommand = defineCommand({
|
|
31
31
|
meta: {
|
|
32
32
|
name: "project-identity",
|
|
@@ -63,4 +63,4 @@ var doctorProjectIdentityCommand = defineCommand({
|
|
|
63
63
|
export {
|
|
64
64
|
doctorProjectIdentityCommand
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-PN4WW5VX.js.map
|