@axm.sh/cli 0.0.11 → 0.0.13
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/dist/src/cli-commands/packs/add/command.d.ts +14 -0
- package/dist/src/cli-commands/packs/add/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/add/command.js +52 -0
- package/dist/src/cli-commands/packs/add/command.js.map +1 -0
- package/dist/src/cli-commands/packs/add/handler.d.ts +23 -0
- package/dist/src/cli-commands/packs/add/handler.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/add/handler.js +135 -0
- package/dist/src/cli-commands/packs/add/handler.js.map +1 -0
- package/dist/src/cli-commands/packs/command.d.ts +3 -0
- package/dist/src/cli-commands/packs/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/command.js +33 -0
- package/dist/src/cli-commands/packs/command.js.map +1 -0
- package/dist/src/cli-commands/packs/index.d.ts +13 -0
- package/dist/src/cli-commands/packs/index.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/index.js +12 -0
- package/dist/src/cli-commands/packs/index.js.map +1 -0
- package/dist/src/cli-commands/packs/install/build-plan.d.ts +19 -0
- package/dist/src/cli-commands/packs/install/build-plan.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/install/build-plan.js +44 -0
- package/dist/src/cli-commands/packs/install/build-plan.js.map +1 -0
- package/dist/src/cli-commands/packs/install/command.d.ts +17 -0
- package/dist/src/cli-commands/packs/install/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/install/command.js +66 -0
- package/dist/src/cli-commands/packs/install/command.js.map +1 -0
- package/dist/src/cli-commands/packs/install/handler.d.ts +43 -0
- package/dist/src/cli-commands/packs/install/handler.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/install/handler.js +180 -0
- package/dist/src/cli-commands/packs/install/handler.js.map +1 -0
- package/dist/src/cli-commands/packs/install/install-pack.d.ts +20 -0
- package/dist/src/cli-commands/packs/install/install-pack.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/install/install-pack.js +42 -0
- package/dist/src/cli-commands/packs/install/install-pack.js.map +1 -0
- package/dist/src/cli-commands/packs/new/command.d.ts +14 -0
- package/dist/src/cli-commands/packs/new/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/new/command.js +51 -0
- package/dist/src/cli-commands/packs/new/command.js.map +1 -0
- package/dist/src/cli-commands/packs/new/handler.d.ts +23 -0
- package/dist/src/cli-commands/packs/new/handler.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/new/handler.js +96 -0
- package/dist/src/cli-commands/packs/new/handler.js.map +1 -0
- package/dist/src/cli-commands/packs/operations.d.ts +67 -0
- package/dist/src/cli-commands/packs/operations.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/operations.js +10 -0
- package/dist/src/cli-commands/packs/operations.js.map +1 -0
- package/dist/src/cli-commands/packs/pack-paths.d.ts +28 -0
- package/dist/src/cli-commands/packs/pack-paths.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/pack-paths.js +22 -0
- package/dist/src/cli-commands/packs/pack-paths.js.map +1 -0
- package/dist/src/cli-commands/packs/publish/command.d.ts +15 -0
- package/dist/src/cli-commands/packs/publish/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/publish/command.js +56 -0
- package/dist/src/cli-commands/packs/publish/command.js.map +1 -0
- package/dist/src/cli-commands/packs/publish/handler.d.ts +34 -0
- package/dist/src/cli-commands/packs/publish/handler.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/publish/handler.js +123 -0
- package/dist/src/cli-commands/packs/publish/handler.js.map +1 -0
- package/dist/src/cli-commands/packs/publish/publish-pack.d.ts +26 -0
- package/dist/src/cli-commands/packs/publish/publish-pack.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/publish/publish-pack.js +142 -0
- package/dist/src/cli-commands/packs/publish/publish-pack.js.map +1 -0
- package/dist/src/cli-commands/packs/remove/command.d.ts +14 -0
- package/dist/src/cli-commands/packs/remove/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/remove/command.js +52 -0
- package/dist/src/cli-commands/packs/remove/command.js.map +1 -0
- package/dist/src/cli-commands/packs/remove/handler.d.ts +23 -0
- package/dist/src/cli-commands/packs/remove/handler.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/remove/handler.js +115 -0
- package/dist/src/cli-commands/packs/remove/handler.js.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/build-plan.d.ts +46 -0
- package/dist/src/cli-commands/packs/uninstall/build-plan.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/build-plan.js +99 -0
- package/dist/src/cli-commands/packs/uninstall/build-plan.js.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/command.d.ts +14 -0
- package/dist/src/cli-commands/packs/uninstall/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/command.js +53 -0
- package/dist/src/cli-commands/packs/uninstall/command.js.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/handler.d.ts +31 -0
- package/dist/src/cli-commands/packs/uninstall/handler.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/handler.js +57 -0
- package/dist/src/cli-commands/packs/uninstall/handler.js.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/uninstall-pack.d.ts +25 -0
- package/dist/src/cli-commands/packs/uninstall/uninstall-pack.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/uninstall/uninstall-pack.js +87 -0
- package/dist/src/cli-commands/packs/uninstall/uninstall-pack.js.map +1 -0
- package/dist/src/cli-commands/packs/unpack/command.d.ts +14 -0
- package/dist/src/cli-commands/packs/unpack/command.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/unpack/command.js +51 -0
- package/dist/src/cli-commands/packs/unpack/command.js.map +1 -0
- package/dist/src/cli-commands/packs/unpack/handler.d.ts +52 -0
- package/dist/src/cli-commands/packs/unpack/handler.d.ts.map +1 -0
- package/dist/src/cli-commands/packs/unpack/handler.js +116 -0
- package/dist/src/cli-commands/packs/unpack/handler.js.map +1 -0
- package/dist/src/cli-commands/skills/constants.d.ts +1 -0
- package/dist/src/cli-commands/skills/constants.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/constants.js +1 -0
- package/dist/src/cli-commands/skills/constants.js.map +1 -1
- package/dist/src/cli-commands/skills/disable/disable-skill.d.ts +7 -8
- package/dist/src/cli-commands/skills/disable/disable-skill.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/disable/disable-skill.js +9 -35
- package/dist/src/cli-commands/skills/disable/disable-skill.js.map +1 -1
- package/dist/src/cli-commands/skills/disable/handler.d.ts +1 -0
- package/dist/src/cli-commands/skills/disable/handler.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/disable/handler.js +19 -7
- package/dist/src/cli-commands/skills/disable/handler.js.map +1 -1
- package/dist/src/cli-commands/skills/enable/enable-skill.d.ts +6 -7
- package/dist/src/cli-commands/skills/enable/enable-skill.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/enable/enable-skill.js +16 -74
- package/dist/src/cli-commands/skills/enable/enable-skill.js.map +1 -1
- package/dist/src/cli-commands/skills/enable/handler.d.ts +1 -0
- package/dist/src/cli-commands/skills/enable/handler.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/enable/handler.js +9 -0
- package/dist/src/cli-commands/skills/enable/handler.js.map +1 -1
- package/dist/src/cli-commands/skills/install/install-result.d.ts +1 -1
- package/dist/src/cli-commands/skills/install/install-result.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/install/install-skill.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/install/install-skill.js +3 -17
- package/dist/src/cli-commands/skills/install/install-skill.js.map +1 -1
- package/dist/src/cli-commands/skills/rename/rename-skill.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/rename/rename-skill.js +0 -11
- package/dist/src/cli-commands/skills/rename/rename-skill.js.map +1 -1
- package/dist/src/cli-commands/skills/skill-paths.d.ts +1 -1
- package/dist/src/cli-commands/skills/skill-paths.js +2 -2
- package/dist/src/cli-commands/skills/skill-paths.js.map +1 -1
- package/dist/src/cli-commands/skills/uninstall/uninstall-skill.d.ts +1 -1
- package/dist/src/cli-commands/skills/uninstall/uninstall-skill.d.ts.map +1 -1
- package/dist/src/cli-commands/skills/uninstall/uninstall-skill.js +5 -10
- package/dist/src/cli-commands/skills/uninstall/uninstall-skill.js.map +1 -1
- package/dist/src/extensions/packs/manifest-schema.d.ts +6 -6
- package/dist/src/extensions/packs/manifest-schema.d.ts.map +1 -1
- package/dist/src/extensions/packs/manifest-schema.js +28 -7
- package/dist/src/extensions/packs/manifest-schema.js.map +1 -1
- package/dist/src/lockfile/index.d.ts +2 -2
- package/dist/src/lockfile/index.d.ts.map +1 -1
- package/dist/src/lockfile/index.js +1 -1
- package/dist/src/lockfile/index.js.map +1 -1
- package/dist/src/lockfile/lockfile.d.ts +21 -0
- package/dist/src/lockfile/lockfile.d.ts.map +1 -1
- package/dist/src/lockfile/schema.d.ts +77 -1
- package/dist/src/lockfile/schema.d.ts.map +1 -1
- package/dist/src/lockfile/schema.js +58 -1
- package/dist/src/lockfile/schema.js.map +1 -1
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +3 -0
- package/dist/src/main.js.map +1 -1
- package/dist/src/registry/schema.d.ts +4 -4
- package/dist/src/registry/schema.d.ts.map +1 -1
- package/dist/src/registry/schema.js +3 -3
- package/dist/src/registry/schema.js.map +1 -1
- package/dist/src/settings/index.d.ts +2 -2
- package/dist/src/settings/index.d.ts.map +1 -1
- package/dist/src/settings/index.js +1 -1
- package/dist/src/settings/index.js.map +1 -1
- package/dist/src/settings/schema.d.ts +46 -1
- package/dist/src/settings/schema.d.ts.map +1 -1
- package/dist/src/settings/schema.js +34 -1
- package/dist/src/settings/schema.js.map +1 -1
- package/dist/src/settings/settings.d.ts +3 -1
- package/dist/src/settings/settings.d.ts.map +1 -1
- package/dist/src/sources/providers/registry.d.ts.map +1 -1
- package/dist/src/sources/providers/registry.js +11 -5
- package/dist/src/sources/providers/registry.js.map +1 -1
- package/dist/src/sources/resolve-source.d.ts.map +1 -1
- package/dist/src/sources/resolve-source.js +2 -2
- package/dist/src/sources/resolve-source.js.map +1 -1
- package/dist/src/workspace/service.d.ts +19 -2
- package/dist/src/workspace/service.d.ts.map +1 -1
- package/dist/src/workspace/service.js +83 -5
- package/dist/src/workspace/service.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/remove/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,sBAAsB,GAAG,eAAe,CAAC;AA2B/C,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAA4B,EAAE,EAAE,CAChE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;IAEvB,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEpC,wBAAwB;IACxB,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,aAAa;YACrC,QAAQ,EAAE,0DAA0D;SACrE,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IAChF,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEnC,6BAA6B;IAC7B,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAE9E,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,YAAY,CAAC;QACX,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,8BAA8B,YAAY,EAAE;QAClD,QAAQ,EAAE,gCAAgC;QAC1C,KAAK,EAAE,CAAC;KACT,CAAC,CACH,CACF,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAoB;QACzD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,YAAY,CAAC;YACX,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,kCAAkC,YAAY,EAAE;YACtD,KAAK,EAAE,CAAC;SACT,CAAC;KACL,CAAC,CAAC;IAEH,8EAA8E;IAC9E,MAAM,UAAU,GAA4E,EAAE,CAAC;IAC/F,KAAK,MAAM,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAU,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE/C,2CAA2C;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,MAAM;QACzB,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;QACzC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAClB,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;gBACzB,IAAI,EAAE,uBAAuB;gBAC7B,IAAI,EAAE,gCAAgC,IAAI,CAAC,SAAS,GAAG;gBACvD,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzE,QAAQ,EAAE,qBAAqB;aAChC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,cAAc,IAAI,CAAC,SAAS,sBAAsB;YACxD,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YACzE,QAAQ,EAAE,kDAAkD;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAU,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,OAAO,KAAK,SAAS;YAAE,SAAS;QACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,YAAY,CAAC;QACX,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,kCAAkC,YAAY,EAAE;QACtD,KAAK,EAAE,CAAC;KACT,CAAC,CACH,CACF,CAAC;IAEF,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pack-specific uninstall plan builder.
|
|
3
|
+
*
|
|
4
|
+
* Diffs UninstallPackOperations against lockfile state to produce a Plan.
|
|
5
|
+
* Installed packs become expected-success steps; missing packs become expected-no-op steps.
|
|
6
|
+
*
|
|
7
|
+
* Also detects orphaned extensions that are no longer referenced by any
|
|
8
|
+
* remaining pack or direct settings entry.
|
|
9
|
+
*
|
|
10
|
+
* @experimental This API is unstable and may change without notice.
|
|
11
|
+
*/
|
|
12
|
+
import * as Option from "effect/Option";
|
|
13
|
+
import type { Lockfile, PackLockEntry } from "../../../lockfile/schema.js";
|
|
14
|
+
import type { SkillsMap } from "../../../settings/schema.js";
|
|
15
|
+
import type { Plan } from "../../../workspace/plan.js";
|
|
16
|
+
import type { UninstallPackOperation } from "../operations.js";
|
|
17
|
+
/**
|
|
18
|
+
* Identifies skill FQNs that become orphaned after removing a pack.
|
|
19
|
+
*
|
|
20
|
+
* A skill is orphaned if:
|
|
21
|
+
* 1. It is in the removed pack's resolvedSkills
|
|
22
|
+
* 2. It is NOT in any other remaining pack's resolvedSkills
|
|
23
|
+
* 3. It is NOT a direct entry in settings skills map
|
|
24
|
+
*
|
|
25
|
+
* Pure function.
|
|
26
|
+
*/
|
|
27
|
+
export declare const findOrphanedSkills: (removedPackEntry: PackLockEntry, remainingPacks: Readonly<Record<string, PackLockEntry>>, configuredSkills: SkillsMap) => ReadonlyArray<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Identifies command FQNs that become orphaned after removing a pack.
|
|
30
|
+
*
|
|
31
|
+
* Pure function.
|
|
32
|
+
*/
|
|
33
|
+
export declare const findOrphanedCommands: (removedPackEntry: PackLockEntry, remainingPacks: Readonly<Record<string, PackLockEntry>>) => ReadonlyArray<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Identifies MCP server FQNs that become orphaned after removing a pack.
|
|
36
|
+
*
|
|
37
|
+
* Pure function.
|
|
38
|
+
*/
|
|
39
|
+
export declare const findOrphanedMcpServers: (removedPackEntry: PackLockEntry, remainingPacks: Readonly<Record<string, PackLockEntry>>) => ReadonlyArray<string>;
|
|
40
|
+
/**
|
|
41
|
+
* Build an uninstall plan by comparing pack operations against the lockfile.
|
|
42
|
+
*
|
|
43
|
+
* Pure function — no Effect needed.
|
|
44
|
+
*/
|
|
45
|
+
export declare const buildUninstallPlan: (ops: ReadonlyArray<UninstallPackOperation>, lockfile: Lockfile, name: string, description: Option.Option<string>) => Plan<UninstallPackOperation>;
|
|
46
|
+
//# sourceMappingURL=build-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-plan.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/build-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,kBAAkB,aAAa,EAC/B,gBAAgB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EACvD,kBAAkB,SAAS,KAC1B,aAAa,CAAC,MAAM,CAetB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,aAAa,EAC/B,gBAAgB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,KACtD,aAAa,CAAC,MAAM,CAWtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,kBAAkB,aAAa,EAC/B,gBAAgB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,KACtD,aAAa,CAAC,MAAM,CAWtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,aAAa,CAAC,sBAAsB,CAAC,EAC1C,UAAU,QAAQ,EAClB,MAAM,MAAM,EACZ,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KACjC,IAAI,CAAC,sBAAsB,CA4B5B,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pack-specific uninstall plan builder.
|
|
3
|
+
*
|
|
4
|
+
* Diffs UninstallPackOperations against lockfile state to produce a Plan.
|
|
5
|
+
* Installed packs become expected-success steps; missing packs become expected-no-op steps.
|
|
6
|
+
*
|
|
7
|
+
* Also detects orphaned extensions that are no longer referenced by any
|
|
8
|
+
* remaining pack or direct settings entry.
|
|
9
|
+
*
|
|
10
|
+
* @experimental This API is unstable and may change without notice.
|
|
11
|
+
*/
|
|
12
|
+
import * as Option from "effect/Option";
|
|
13
|
+
/**
|
|
14
|
+
* Identifies skill FQNs that become orphaned after removing a pack.
|
|
15
|
+
*
|
|
16
|
+
* A skill is orphaned if:
|
|
17
|
+
* 1. It is in the removed pack's resolvedSkills
|
|
18
|
+
* 2. It is NOT in any other remaining pack's resolvedSkills
|
|
19
|
+
* 3. It is NOT a direct entry in settings skills map
|
|
20
|
+
*
|
|
21
|
+
* Pure function.
|
|
22
|
+
*/
|
|
23
|
+
export const findOrphanedSkills = (removedPackEntry, remainingPacks, configuredSkills) => {
|
|
24
|
+
const removedSkills = Object.keys(removedPackEntry.resolvedSkills);
|
|
25
|
+
// Collect all skills referenced by remaining packs
|
|
26
|
+
const otherPackSkills = new Set();
|
|
27
|
+
for (const entry of Object.values(remainingPacks)) {
|
|
28
|
+
for (const fqn of Object.keys(entry.resolvedSkills)) {
|
|
29
|
+
otherPackSkills.add(fqn);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Filter to skills that are truly orphaned
|
|
33
|
+
return removedSkills.filter((fqn) => !otherPackSkills.has(fqn) && !(fqn in configuredSkills));
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Identifies command FQNs that become orphaned after removing a pack.
|
|
37
|
+
*
|
|
38
|
+
* Pure function.
|
|
39
|
+
*/
|
|
40
|
+
export const findOrphanedCommands = (removedPackEntry, remainingPacks) => {
|
|
41
|
+
const removedCommands = Object.keys(removedPackEntry.resolvedCommands);
|
|
42
|
+
const otherPackCommands = new Set();
|
|
43
|
+
for (const entry of Object.values(remainingPacks)) {
|
|
44
|
+
for (const fqn of Object.keys(entry.resolvedCommands)) {
|
|
45
|
+
otherPackCommands.add(fqn);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return removedCommands.filter((fqn) => !otherPackCommands.has(fqn));
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Identifies MCP server FQNs that become orphaned after removing a pack.
|
|
52
|
+
*
|
|
53
|
+
* Pure function.
|
|
54
|
+
*/
|
|
55
|
+
export const findOrphanedMcpServers = (removedPackEntry, remainingPacks) => {
|
|
56
|
+
const removedServers = Object.keys(removedPackEntry.resolvedMcpServers);
|
|
57
|
+
const otherPackServers = new Set();
|
|
58
|
+
for (const entry of Object.values(remainingPacks)) {
|
|
59
|
+
for (const fqn of Object.keys(entry.resolvedMcpServers)) {
|
|
60
|
+
otherPackServers.add(fqn);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return removedServers.filter((fqn) => !otherPackServers.has(fqn));
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Build an uninstall plan by comparing pack operations against the lockfile.
|
|
67
|
+
*
|
|
68
|
+
* Pure function — no Effect needed.
|
|
69
|
+
*/
|
|
70
|
+
export const buildUninstallPlan = (ops, lockfile, name, description) => ({
|
|
71
|
+
name,
|
|
72
|
+
description,
|
|
73
|
+
jobs: [
|
|
74
|
+
{
|
|
75
|
+
concurrency: 1,
|
|
76
|
+
steps: ops.map((op) => {
|
|
77
|
+
const lockedPacks = lockfile.packs ?? {};
|
|
78
|
+
const installed = Object.hasOwn(lockedPacks, op.args.packName);
|
|
79
|
+
return installed
|
|
80
|
+
? {
|
|
81
|
+
_tag: "PlannedJobStep",
|
|
82
|
+
operation: op,
|
|
83
|
+
expectedResult: {
|
|
84
|
+
result: "success",
|
|
85
|
+
message: `Uninstalled pack ${op.args.packName}`,
|
|
86
|
+
},
|
|
87
|
+
label: op.args.packName,
|
|
88
|
+
}
|
|
89
|
+
: {
|
|
90
|
+
_tag: "PlannedJobStep",
|
|
91
|
+
operation: op,
|
|
92
|
+
expectedResult: { result: "no-op", message: "not installed" },
|
|
93
|
+
label: op.args.packName,
|
|
94
|
+
};
|
|
95
|
+
}),
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=build-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-plan.js","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/build-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Packs uninstall command yargs definition - wires handler to `axm packs uninstall`.
|
|
3
|
+
*
|
|
4
|
+
* @experimental This API is unstable and may change without notice.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandModule } from "yargs";
|
|
7
|
+
export interface UninstallPackCommandArgs {
|
|
8
|
+
name: string;
|
|
9
|
+
yes: boolean;
|
|
10
|
+
preview: boolean;
|
|
11
|
+
"non-interactive": boolean | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare const uninstallPackCommand: CommandModule<{}, UninstallPackCommandArgs>;
|
|
14
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAGD,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,EAAE,EAAE,wBAAwB,CA8C5E,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Packs uninstall command yargs definition - wires handler to `axm packs uninstall`.
|
|
3
|
+
*
|
|
4
|
+
* @experimental This API is unstable and may change without notice.
|
|
5
|
+
*/
|
|
6
|
+
import * as Option from "effect/Option";
|
|
7
|
+
import { run } from "../../../runtime/index.js";
|
|
8
|
+
import { handleUninstallPack } from "./handler.js";
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- yargs convention
|
|
10
|
+
export const uninstallPackCommand = {
|
|
11
|
+
command: "uninstall <name>",
|
|
12
|
+
describe: "Uninstall a pack and remove orphaned extensions",
|
|
13
|
+
builder: (yargs) => yargs
|
|
14
|
+
.positional("name", {
|
|
15
|
+
type: "string",
|
|
16
|
+
describe: "Name or glob pattern of the pack to uninstall",
|
|
17
|
+
demandOption: true,
|
|
18
|
+
})
|
|
19
|
+
.option("yes", {
|
|
20
|
+
alias: "y",
|
|
21
|
+
type: "boolean",
|
|
22
|
+
describe: "Skip confirmation prompt",
|
|
23
|
+
default: false,
|
|
24
|
+
})
|
|
25
|
+
.option("preview", {
|
|
26
|
+
type: "boolean",
|
|
27
|
+
describe: "Display uninstall plan without applying",
|
|
28
|
+
default: false,
|
|
29
|
+
})
|
|
30
|
+
.option("non-interactive", {
|
|
31
|
+
type: "boolean",
|
|
32
|
+
describe: "Disable all interactive prompts",
|
|
33
|
+
})
|
|
34
|
+
.example("$0 packs uninstall my-pack", "Uninstall a pack and its orphaned extensions")
|
|
35
|
+
.example("$0 packs uninstall my-pack --preview", "Preview what would be uninstalled")
|
|
36
|
+
.example("$0 packs uninstall my-pack --yes", "Uninstall without confirmation prompt")
|
|
37
|
+
.example("$0 packs uninstall acme-*", "Uninstall all packs matching a pattern"),
|
|
38
|
+
handler: async (argv) => {
|
|
39
|
+
await run(handleUninstallPack({
|
|
40
|
+
name: argv.name,
|
|
41
|
+
yes: argv.yes,
|
|
42
|
+
}), {
|
|
43
|
+
workspace: {
|
|
44
|
+
global: false,
|
|
45
|
+
yes: argv.yes,
|
|
46
|
+
nonInteractive: Option.fromNullable(argv["non-interactive"]),
|
|
47
|
+
preview: argv.preview,
|
|
48
|
+
agents: Option.none(),
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AASnD,uFAAuF;AACvF,MAAM,CAAC,MAAM,oBAAoB,GAAgD;IAC/E,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,iDAAiD;IAC3D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,MAAM,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,+CAA+C;QACzD,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,0BAA0B;QACpC,OAAO,EAAE,KAAK;KACf,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,yCAAyC;QACnD,OAAO,EAAE,KAAK;KACf,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE;QACzB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,iCAAiC;KAC5C,CAAC;SACD,OAAO,CAAC,4BAA4B,EAAE,8CAA8C,CAAC;SACrF,OAAO,CAAC,sCAAsC,EAAE,mCAAmC,CAAC;SACpF,OAAO,CAAC,kCAAkC,EAAE,uCAAuC,CAAC;SACpF,OAAO,CAAC,2BAA2B,EAAE,wCAAwC,CAAC;IACnF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,GAAG,CACP,mBAAmB,CAAC;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,EACF;YACE,SAAS,EAAE;gBACT,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;aACtB;SACF,CACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uninstall command handler - Effect-based orchestration for `axm packs uninstall`.
|
|
3
|
+
*
|
|
4
|
+
* Uses plan-based reconciliation pattern:
|
|
5
|
+
* 1. Load lockfile
|
|
6
|
+
* 2. Expand glob pattern against lockfile keys
|
|
7
|
+
* 3. Build UninstallPackOperations
|
|
8
|
+
* 4. Build plan (diff against lockfile)
|
|
9
|
+
* 5. Resolve plan via workspace (display, confirm, apply based on flags)
|
|
10
|
+
*
|
|
11
|
+
* @experimental This API is unstable and may change without notice.
|
|
12
|
+
*/
|
|
13
|
+
import * as Effect from "effect/Effect";
|
|
14
|
+
import { Log } from "../../../tui/index.js";
|
|
15
|
+
import { Workspace } from "../../../workspace/index.js";
|
|
16
|
+
/**
|
|
17
|
+
* Arguments for the packs uninstall handler.
|
|
18
|
+
*/
|
|
19
|
+
export interface UninstallPackHandlerArgs {
|
|
20
|
+
/** Name or glob pattern of the pack to uninstall */
|
|
21
|
+
readonly name: string;
|
|
22
|
+
/** Skip confirmations */
|
|
23
|
+
readonly yes: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Handles the `axm packs uninstall` command.
|
|
27
|
+
*
|
|
28
|
+
* @experimental This API is unstable and may change without notice.
|
|
29
|
+
*/
|
|
30
|
+
export declare const handleUninstallPack: (args: UninstallPackHandlerArgs) => Effect.Effect<void, import("../../../tui/errors.js").PromptCancelled | import("../../../cli-error/cli-error.js").CliError, import("../../../tui/index.js").Confirm | Log | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | Workspace>;
|
|
31
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAUxD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAMD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,wBAAwB,oRAyChB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uninstall command handler - Effect-based orchestration for `axm packs uninstall`.
|
|
3
|
+
*
|
|
4
|
+
* Uses plan-based reconciliation pattern:
|
|
5
|
+
* 1. Load lockfile
|
|
6
|
+
* 2. Expand glob pattern against lockfile keys
|
|
7
|
+
* 3. Build UninstallPackOperations
|
|
8
|
+
* 4. Build plan (diff against lockfile)
|
|
9
|
+
* 5. Resolve plan via workspace (display, confirm, apply based on flags)
|
|
10
|
+
*
|
|
11
|
+
* @experimental This API is unstable and may change without notice.
|
|
12
|
+
*/
|
|
13
|
+
import * as Effect from "effect/Effect";
|
|
14
|
+
import * as Option from "effect/Option";
|
|
15
|
+
import { Log } from "../../../tui/index.js";
|
|
16
|
+
import { Workspace } from "../../../workspace/index.js";
|
|
17
|
+
import { buildUninstallPlan } from "./build-plan.js";
|
|
18
|
+
import { expandGlob } from "../../../skills/index.js";
|
|
19
|
+
import { uninstallPack } from "./uninstall-pack.js";
|
|
20
|
+
// -----------------------------------------------------------------------------
|
|
21
|
+
// Main Handler
|
|
22
|
+
// -----------------------------------------------------------------------------
|
|
23
|
+
/**
|
|
24
|
+
* Handles the `axm packs uninstall` command.
|
|
25
|
+
*
|
|
26
|
+
* @experimental This API is unstable and may change without notice.
|
|
27
|
+
*/
|
|
28
|
+
export const handleUninstallPack = (args) => Effect.gen(function* () {
|
|
29
|
+
const ws = yield* Workspace;
|
|
30
|
+
const log = yield* Log;
|
|
31
|
+
yield* log.info("axm packs uninstall");
|
|
32
|
+
// Step 1: Load lockfile
|
|
33
|
+
const lockedPacks = yield* ws.getLockedPacks();
|
|
34
|
+
const lockedSkills = yield* ws.getLockedSkills();
|
|
35
|
+
const lockfile = { lockfileVersion: 1, skills: lockedSkills, packs: lockedPacks };
|
|
36
|
+
// Step 2: Expand glob pattern
|
|
37
|
+
const packNames = expandGlob(args.name, Object.keys(lockedPacks));
|
|
38
|
+
// Handle glob matching zero packs
|
|
39
|
+
if (args.name.includes("*") && packNames.length === 0) {
|
|
40
|
+
yield* log.warn(`No packs matched pattern "${args.name}"`);
|
|
41
|
+
yield* log.success("Nothing to uninstall.");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// For literal names not in lockfile, still build an operation (plan marks as no-op)
|
|
45
|
+
const names = packNames.length > 0 ? packNames : [args.name];
|
|
46
|
+
// Step 3: Build operations
|
|
47
|
+
const ops = names.map((name) => ({
|
|
48
|
+
name: "uninstall-pack",
|
|
49
|
+
args: { packName: name },
|
|
50
|
+
}));
|
|
51
|
+
// Step 4: Build plan
|
|
52
|
+
const plan = buildUninstallPlan(ops, lockfile, "Uninstall pack(s)", Option.none());
|
|
53
|
+
// Step 5: Resolve plan via workspace
|
|
54
|
+
yield* ws.resolvePlan(plan, { "uninstall-pack": uninstallPack });
|
|
55
|
+
yield* log.success("Done");
|
|
56
|
+
}).pipe(Effect.withSpan("UninstallPack.handle"));
|
|
57
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBpD,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAA8B,EAAE,EAAE,CACpE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;IAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;IAEvB,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEvC,wBAAwB;IACxB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAElF,8BAA8B;IAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAElE,kCAAkC;IAClC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC3D,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,oFAAoF;IACpF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,2BAA2B;IAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CACnB,CAAC,IAAI,EAAE,EAAE,CACP,CAAC;QACC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzB,CAAkC,CACtC,CAAC;IAEF,qBAAqB;IACrB,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnF,qCAAqC;IACrC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAC;IAEjE,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uninstall-pack operation handler.
|
|
3
|
+
*
|
|
4
|
+
* Removes pack from settings, lockfile, and disk. Orphaned extensions
|
|
5
|
+
* (those no longer referenced by any remaining pack or direct settings entry)
|
|
6
|
+
* are also cleaned up.
|
|
7
|
+
*
|
|
8
|
+
* @experimental This API is unstable and may change without notice.
|
|
9
|
+
*/
|
|
10
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
11
|
+
import * as Path from "@effect/platform/Path";
|
|
12
|
+
import { Log } from "../../../tui/index.js";
|
|
13
|
+
import type { OperationHandler } from "../../../workspace/apply-plan.js";
|
|
14
|
+
import { Workspace } from "../../../workspace/service.js";
|
|
15
|
+
import type { UninstallPackOperation } from "../operations.js";
|
|
16
|
+
/**
|
|
17
|
+
* Uninstall-pack operation handler.
|
|
18
|
+
*
|
|
19
|
+
* 1. Look up pack in lockfile
|
|
20
|
+
* 2. Remove pack directory from disk
|
|
21
|
+
* 3. Detect orphaned skills and remove them
|
|
22
|
+
* 4. Remove pack from settings and lockfile
|
|
23
|
+
*/
|
|
24
|
+
export declare const uninstallPack: OperationHandler<UninstallPackOperation, FileSystem.FileSystem | Path.Path | Workspace | Log>;
|
|
25
|
+
//# sourceMappingURL=uninstall-pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall-pack.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/uninstall-pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAI9C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAM/D;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAC1C,sBAAsB,EACtB,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG,CA6FjD,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uninstall-pack operation handler.
|
|
3
|
+
*
|
|
4
|
+
* Removes pack from settings, lockfile, and disk. Orphaned extensions
|
|
5
|
+
* (those no longer referenced by any remaining pack or direct settings entry)
|
|
6
|
+
* are also cleaned up.
|
|
7
|
+
*
|
|
8
|
+
* @experimental This API is unstable and may change without notice.
|
|
9
|
+
*/
|
|
10
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
11
|
+
import * as Path from "@effect/platform/Path";
|
|
12
|
+
import * as Effect from "effect/Effect";
|
|
13
|
+
import * as Option from "effect/Option";
|
|
14
|
+
import { makeCliError } from "../../../cli-error/index.js";
|
|
15
|
+
import { Log } from "../../../tui/index.js";
|
|
16
|
+
import { Workspace } from "../../../workspace/service.js";
|
|
17
|
+
import { REGISTRY_EXTENSIONS_DIR } from "../../skills/constants.js";
|
|
18
|
+
import { removeIfExists } from "../../skills/fs-helpers.js";
|
|
19
|
+
import { sanitizeName } from "../../skills/install/skill-utils.js";
|
|
20
|
+
import { findOrphanedSkills } from "./build-plan.js";
|
|
21
|
+
/**
|
|
22
|
+
* Uninstall-pack operation handler.
|
|
23
|
+
*
|
|
24
|
+
* 1. Look up pack in lockfile
|
|
25
|
+
* 2. Remove pack directory from disk
|
|
26
|
+
* 3. Detect orphaned skills and remove them
|
|
27
|
+
* 4. Remove pack from settings and lockfile
|
|
28
|
+
*/
|
|
29
|
+
export const uninstallPack = (op) => Effect.gen(function* () {
|
|
30
|
+
const fs = yield* FileSystem.FileSystem;
|
|
31
|
+
const path = yield* Path.Path;
|
|
32
|
+
const ws = yield* Workspace;
|
|
33
|
+
const log = yield* Log;
|
|
34
|
+
const base = path.dirname(ws.path);
|
|
35
|
+
// Read pack lock entry
|
|
36
|
+
const lockedPackOpt = yield* ws.getLockedPack(op.args.packName).pipe(Effect.mapError((e) => makeCliError({
|
|
37
|
+
code: "UNINSTALL_PACK_LOCKFILE_READ_FAILED",
|
|
38
|
+
what: `Failed to read lockfile: ${e.what}`,
|
|
39
|
+
cause: e,
|
|
40
|
+
})));
|
|
41
|
+
if (Option.isNone(lockedPackOpt)) {
|
|
42
|
+
return { result: "no-op", message: "not installed" };
|
|
43
|
+
}
|
|
44
|
+
const lockedPack = lockedPackOpt.value;
|
|
45
|
+
// Remove pack directory from disk
|
|
46
|
+
const packDir = path.join(base, REGISTRY_EXTENSIONS_DIR, lockedPack.scope, "packs", lockedPack.name);
|
|
47
|
+
yield* removeIfExists(fs, packDir);
|
|
48
|
+
// Detect orphaned skills
|
|
49
|
+
const lockedPacks = yield* ws.getLockedPacks();
|
|
50
|
+
const { [op.args.packName]: _, ...remainingPacks } = lockedPacks;
|
|
51
|
+
void _;
|
|
52
|
+
const configuredSkillsNormalized = yield* ws.getConfiguredSkills();
|
|
53
|
+
// findOrphanedSkills only checks key presence (`fqn in configuredSkills`),
|
|
54
|
+
// so we build a minimal SkillsMap-shaped record from the normalized keys.
|
|
55
|
+
const configuredSkillKeys = Object.fromEntries(Object.keys(configuredSkillsNormalized).map((k) => [k, ""]));
|
|
56
|
+
const orphanedSkills = findOrphanedSkills(lockedPack, remainingPacks, configuredSkillKeys);
|
|
57
|
+
// Remove orphaned skills from disk and settings/lockfile
|
|
58
|
+
yield* Effect.forEach(orphanedSkills, (skillFqn) => Effect.gen(function* () {
|
|
59
|
+
// Remove skill files from all known canonical locations
|
|
60
|
+
const sanitized = sanitizeName(skillFqn);
|
|
61
|
+
const extensionsDir = path.join(base, REGISTRY_EXTENSIONS_DIR);
|
|
62
|
+
const extensionsDirExists = yield* fs
|
|
63
|
+
.exists(extensionsDir)
|
|
64
|
+
.pipe(Effect.catchAll(() => Effect.succeed(false)));
|
|
65
|
+
if (extensionsDirExists) {
|
|
66
|
+
const scopeDirs = yield* fs
|
|
67
|
+
.readDirectory(extensionsDir)
|
|
68
|
+
.pipe(Effect.catchAll(() => Effect.succeed([])));
|
|
69
|
+
yield* Effect.forEach(scopeDirs, (scopeDir) => {
|
|
70
|
+
if (!scopeDir.startsWith("@"))
|
|
71
|
+
return Effect.void;
|
|
72
|
+
const skillPath = path.join(extensionsDir, scopeDir, "skills", sanitized);
|
|
73
|
+
return removeIfExists(fs, skillPath);
|
|
74
|
+
}, { concurrency: "unbounded" });
|
|
75
|
+
}
|
|
76
|
+
// Remove from settings + lockfile
|
|
77
|
+
yield* ws.removeSkill(skillFqn).pipe(Effect.catchAll(() => Effect.void));
|
|
78
|
+
yield* log.info(`Removed orphaned skill: ${skillFqn}`);
|
|
79
|
+
}), { concurrency: 1 });
|
|
80
|
+
// Remove pack from settings and lockfile
|
|
81
|
+
yield* ws.removePack(op.args.packName).pipe(Effect.catchAll((e) => log.warn(`Pack removal from settings failed: ${String(e)}`)));
|
|
82
|
+
return {
|
|
83
|
+
result: "success",
|
|
84
|
+
message: `Uninstalled pack ${op.args.packName}`,
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=uninstall-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall-pack.js","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/uninstall/uninstall-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unpack command yargs definition -- wires handler to `axm packs unpack`.
|
|
3
|
+
*
|
|
4
|
+
* @experimental This API is unstable and may change without notice.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandModule } from "yargs";
|
|
7
|
+
export interface UnpackCommandArgs {
|
|
8
|
+
name: string;
|
|
9
|
+
yes: boolean;
|
|
10
|
+
preview: boolean;
|
|
11
|
+
"non-interactive": boolean | undefined;
|
|
12
|
+
}
|
|
13
|
+
export declare const unpackCommand: CommandModule<{}, UnpackCommandArgs>;
|
|
14
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/unpack/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAGD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,iBAAiB,CAkD9D,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unpack command yargs definition -- wires handler to `axm packs unpack`.
|
|
3
|
+
*
|
|
4
|
+
* @experimental This API is unstable and may change without notice.
|
|
5
|
+
*/
|
|
6
|
+
import * as Option from "effect/Option";
|
|
7
|
+
import { run } from "../../../runtime/index.js";
|
|
8
|
+
import { handleUnpack } from "./handler.js";
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- yargs convention
|
|
10
|
+
export const unpackCommand = {
|
|
11
|
+
command: "unpack <name>",
|
|
12
|
+
describe: "Eject pack contents into direct settings entries",
|
|
13
|
+
builder: (yargs) => yargs
|
|
14
|
+
.positional("name", {
|
|
15
|
+
type: "string",
|
|
16
|
+
describe: "Pack name to unpack",
|
|
17
|
+
demandOption: true,
|
|
18
|
+
})
|
|
19
|
+
.option("yes", {
|
|
20
|
+
alias: "y",
|
|
21
|
+
type: "boolean",
|
|
22
|
+
describe: "Skip all confirmation prompts",
|
|
23
|
+
default: false,
|
|
24
|
+
})
|
|
25
|
+
.option("preview", {
|
|
26
|
+
type: "boolean",
|
|
27
|
+
describe: "Display unpack plan without applying",
|
|
28
|
+
default: false,
|
|
29
|
+
})
|
|
30
|
+
.option("non-interactive", {
|
|
31
|
+
type: "boolean",
|
|
32
|
+
describe: "Disable all interactive prompts",
|
|
33
|
+
})
|
|
34
|
+
.example("$0 packs unpack @acme/frontend-tools", "Eject pack contents into settings")
|
|
35
|
+
.example("$0 packs unpack @acme/frontend-tools --preview", "See what would change in settings"),
|
|
36
|
+
handler: async (argv) => {
|
|
37
|
+
await run(handleUnpack({
|
|
38
|
+
name: argv.name,
|
|
39
|
+
yes: argv.yes,
|
|
40
|
+
}), {
|
|
41
|
+
workspace: {
|
|
42
|
+
global: false,
|
|
43
|
+
yes: argv.yes,
|
|
44
|
+
nonInteractive: Option.fromNullable(argv["non-interactive"]),
|
|
45
|
+
preview: argv.preview,
|
|
46
|
+
agents: Option.none(),
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/unpack/command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAS5C,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAAyC;IACjE,OAAO,EAAE,eAAe;IACxB,QAAQ,EAAE,kDAAkD;IAC5D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,MAAM,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,qBAAqB;QAC/B,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,+BAA+B;QACzC,OAAO,EAAE,KAAK;KACf,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,sCAAsC;QAChD,OAAO,EAAE,KAAK;KACf,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE;QACzB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,iCAAiC;KAC5C,CAAC;SACD,OAAO,CACN,sCAAsC,EACtC,mCAAmC,CACpC;SACA,OAAO,CACN,gDAAgD,EAChD,mCAAmC,CACpC;IACL,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,GAAG,CACP,YAAY,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,EACF;YACE,SAAS,EAAE;gBACT,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;aACtB;SACF,CACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unpack command handler -- Effect-based orchestration for `axm packs unpack`.
|
|
3
|
+
*
|
|
4
|
+
* Flattens a pack's resolved extensions into settings.json as direct entries,
|
|
5
|
+
* preserves existing direct entries, and removes the pack entry from settings
|
|
6
|
+
* and lockfile.
|
|
7
|
+
*
|
|
8
|
+
* This is a settings-level operation -- it does not re-download anything.
|
|
9
|
+
*
|
|
10
|
+
* @experimental This API is unstable and may change without notice.
|
|
11
|
+
*/
|
|
12
|
+
import * as Effect from "effect/Effect";
|
|
13
|
+
import { Log, Spinner } from "../../../tui/index.js";
|
|
14
|
+
import { Workspace } from "../../../workspace/index.js";
|
|
15
|
+
import type { Operation } from "../../../workspace/plan.js";
|
|
16
|
+
import type { OperationHandler } from "../../../workspace/apply-plan.js";
|
|
17
|
+
/**
|
|
18
|
+
* Arguments for the packs unpack command.
|
|
19
|
+
*/
|
|
20
|
+
export interface UnpackHandlerArgs {
|
|
21
|
+
/** Pack name (FQN like @scope/name). */
|
|
22
|
+
readonly name: string;
|
|
23
|
+
/** Skip confirmations. */
|
|
24
|
+
readonly yes: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Args for the unpack-pack operation.
|
|
28
|
+
*/
|
|
29
|
+
export type UnpackPackOperationArgs = {
|
|
30
|
+
/** Pack FQN to unpack. */
|
|
31
|
+
readonly name: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Unpack a pack into direct settings entries.
|
|
35
|
+
*
|
|
36
|
+
* @experimental This API is unstable and may change without notice.
|
|
37
|
+
*/
|
|
38
|
+
export type UnpackPackOperation = Operation<"unpack-pack", UnpackPackOperationArgs>;
|
|
39
|
+
/**
|
|
40
|
+
* Unpack operation handler.
|
|
41
|
+
*
|
|
42
|
+
* 1. Look up pack in lockfile for resolved extensions
|
|
43
|
+
* 2. Read current settings to find existing direct skill entries
|
|
44
|
+
* 3. Add resolved skills as direct entries (skip existing)
|
|
45
|
+
* 4. Remove pack from settings and lockfile
|
|
46
|
+
*/
|
|
47
|
+
export declare const unpackPack: OperationHandler<UnpackPackOperation, Workspace>;
|
|
48
|
+
/**
|
|
49
|
+
* Handles the `axm packs unpack` command.
|
|
50
|
+
*/
|
|
51
|
+
export declare const handleUnpack: (args: UnpackHandlerArgs) => Effect.Effect<undefined, import("../../../tui/errors.js").PromptCancelled | import("../../../cli-error/cli-error.js").CliError, import("../../../tui/index.js").Confirm | Log | Spinner | Workspace>;
|
|
52
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/unpack/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,KAAK,EAAmC,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAOzE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;AAMpF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,gBAAgB,CAAC,mBAAmB,EAAE,SAAS,CAqDpE,CAAC;AAML;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,iBAAiB,yMAmDL,CAAC"}
|