@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.
Files changed (169) hide show
  1. package/dist/src/cli-commands/packs/add/command.d.ts +14 -0
  2. package/dist/src/cli-commands/packs/add/command.d.ts.map +1 -0
  3. package/dist/src/cli-commands/packs/add/command.js +52 -0
  4. package/dist/src/cli-commands/packs/add/command.js.map +1 -0
  5. package/dist/src/cli-commands/packs/add/handler.d.ts +23 -0
  6. package/dist/src/cli-commands/packs/add/handler.d.ts.map +1 -0
  7. package/dist/src/cli-commands/packs/add/handler.js +135 -0
  8. package/dist/src/cli-commands/packs/add/handler.js.map +1 -0
  9. package/dist/src/cli-commands/packs/command.d.ts +3 -0
  10. package/dist/src/cli-commands/packs/command.d.ts.map +1 -0
  11. package/dist/src/cli-commands/packs/command.js +33 -0
  12. package/dist/src/cli-commands/packs/command.js.map +1 -0
  13. package/dist/src/cli-commands/packs/index.d.ts +13 -0
  14. package/dist/src/cli-commands/packs/index.d.ts.map +1 -0
  15. package/dist/src/cli-commands/packs/index.js +12 -0
  16. package/dist/src/cli-commands/packs/index.js.map +1 -0
  17. package/dist/src/cli-commands/packs/install/build-plan.d.ts +19 -0
  18. package/dist/src/cli-commands/packs/install/build-plan.d.ts.map +1 -0
  19. package/dist/src/cli-commands/packs/install/build-plan.js +44 -0
  20. package/dist/src/cli-commands/packs/install/build-plan.js.map +1 -0
  21. package/dist/src/cli-commands/packs/install/command.d.ts +17 -0
  22. package/dist/src/cli-commands/packs/install/command.d.ts.map +1 -0
  23. package/dist/src/cli-commands/packs/install/command.js +66 -0
  24. package/dist/src/cli-commands/packs/install/command.js.map +1 -0
  25. package/dist/src/cli-commands/packs/install/handler.d.ts +43 -0
  26. package/dist/src/cli-commands/packs/install/handler.d.ts.map +1 -0
  27. package/dist/src/cli-commands/packs/install/handler.js +180 -0
  28. package/dist/src/cli-commands/packs/install/handler.js.map +1 -0
  29. package/dist/src/cli-commands/packs/install/install-pack.d.ts +20 -0
  30. package/dist/src/cli-commands/packs/install/install-pack.d.ts.map +1 -0
  31. package/dist/src/cli-commands/packs/install/install-pack.js +42 -0
  32. package/dist/src/cli-commands/packs/install/install-pack.js.map +1 -0
  33. package/dist/src/cli-commands/packs/new/command.d.ts +14 -0
  34. package/dist/src/cli-commands/packs/new/command.d.ts.map +1 -0
  35. package/dist/src/cli-commands/packs/new/command.js +51 -0
  36. package/dist/src/cli-commands/packs/new/command.js.map +1 -0
  37. package/dist/src/cli-commands/packs/new/handler.d.ts +23 -0
  38. package/dist/src/cli-commands/packs/new/handler.d.ts.map +1 -0
  39. package/dist/src/cli-commands/packs/new/handler.js +96 -0
  40. package/dist/src/cli-commands/packs/new/handler.js.map +1 -0
  41. package/dist/src/cli-commands/packs/operations.d.ts +67 -0
  42. package/dist/src/cli-commands/packs/operations.d.ts.map +1 -0
  43. package/dist/src/cli-commands/packs/operations.js +10 -0
  44. package/dist/src/cli-commands/packs/operations.js.map +1 -0
  45. package/dist/src/cli-commands/packs/pack-paths.d.ts +28 -0
  46. package/dist/src/cli-commands/packs/pack-paths.d.ts.map +1 -0
  47. package/dist/src/cli-commands/packs/pack-paths.js +22 -0
  48. package/dist/src/cli-commands/packs/pack-paths.js.map +1 -0
  49. package/dist/src/cli-commands/packs/publish/command.d.ts +15 -0
  50. package/dist/src/cli-commands/packs/publish/command.d.ts.map +1 -0
  51. package/dist/src/cli-commands/packs/publish/command.js +56 -0
  52. package/dist/src/cli-commands/packs/publish/command.js.map +1 -0
  53. package/dist/src/cli-commands/packs/publish/handler.d.ts +34 -0
  54. package/dist/src/cli-commands/packs/publish/handler.d.ts.map +1 -0
  55. package/dist/src/cli-commands/packs/publish/handler.js +123 -0
  56. package/dist/src/cli-commands/packs/publish/handler.js.map +1 -0
  57. package/dist/src/cli-commands/packs/publish/publish-pack.d.ts +26 -0
  58. package/dist/src/cli-commands/packs/publish/publish-pack.d.ts.map +1 -0
  59. package/dist/src/cli-commands/packs/publish/publish-pack.js +142 -0
  60. package/dist/src/cli-commands/packs/publish/publish-pack.js.map +1 -0
  61. package/dist/src/cli-commands/packs/remove/command.d.ts +14 -0
  62. package/dist/src/cli-commands/packs/remove/command.d.ts.map +1 -0
  63. package/dist/src/cli-commands/packs/remove/command.js +52 -0
  64. package/dist/src/cli-commands/packs/remove/command.js.map +1 -0
  65. package/dist/src/cli-commands/packs/remove/handler.d.ts +23 -0
  66. package/dist/src/cli-commands/packs/remove/handler.d.ts.map +1 -0
  67. package/dist/src/cli-commands/packs/remove/handler.js +115 -0
  68. package/dist/src/cli-commands/packs/remove/handler.js.map +1 -0
  69. package/dist/src/cli-commands/packs/uninstall/build-plan.d.ts +46 -0
  70. package/dist/src/cli-commands/packs/uninstall/build-plan.d.ts.map +1 -0
  71. package/dist/src/cli-commands/packs/uninstall/build-plan.js +99 -0
  72. package/dist/src/cli-commands/packs/uninstall/build-plan.js.map +1 -0
  73. package/dist/src/cli-commands/packs/uninstall/command.d.ts +14 -0
  74. package/dist/src/cli-commands/packs/uninstall/command.d.ts.map +1 -0
  75. package/dist/src/cli-commands/packs/uninstall/command.js +53 -0
  76. package/dist/src/cli-commands/packs/uninstall/command.js.map +1 -0
  77. package/dist/src/cli-commands/packs/uninstall/handler.d.ts +31 -0
  78. package/dist/src/cli-commands/packs/uninstall/handler.d.ts.map +1 -0
  79. package/dist/src/cli-commands/packs/uninstall/handler.js +57 -0
  80. package/dist/src/cli-commands/packs/uninstall/handler.js.map +1 -0
  81. package/dist/src/cli-commands/packs/uninstall/uninstall-pack.d.ts +25 -0
  82. package/dist/src/cli-commands/packs/uninstall/uninstall-pack.d.ts.map +1 -0
  83. package/dist/src/cli-commands/packs/uninstall/uninstall-pack.js +87 -0
  84. package/dist/src/cli-commands/packs/uninstall/uninstall-pack.js.map +1 -0
  85. package/dist/src/cli-commands/packs/unpack/command.d.ts +14 -0
  86. package/dist/src/cli-commands/packs/unpack/command.d.ts.map +1 -0
  87. package/dist/src/cli-commands/packs/unpack/command.js +51 -0
  88. package/dist/src/cli-commands/packs/unpack/command.js.map +1 -0
  89. package/dist/src/cli-commands/packs/unpack/handler.d.ts +52 -0
  90. package/dist/src/cli-commands/packs/unpack/handler.d.ts.map +1 -0
  91. package/dist/src/cli-commands/packs/unpack/handler.js +116 -0
  92. package/dist/src/cli-commands/packs/unpack/handler.js.map +1 -0
  93. package/dist/src/cli-commands/skills/constants.d.ts +1 -0
  94. package/dist/src/cli-commands/skills/constants.d.ts.map +1 -1
  95. package/dist/src/cli-commands/skills/constants.js +1 -0
  96. package/dist/src/cli-commands/skills/constants.js.map +1 -1
  97. package/dist/src/cli-commands/skills/disable/disable-skill.d.ts +7 -8
  98. package/dist/src/cli-commands/skills/disable/disable-skill.d.ts.map +1 -1
  99. package/dist/src/cli-commands/skills/disable/disable-skill.js +9 -35
  100. package/dist/src/cli-commands/skills/disable/disable-skill.js.map +1 -1
  101. package/dist/src/cli-commands/skills/disable/handler.d.ts +1 -0
  102. package/dist/src/cli-commands/skills/disable/handler.d.ts.map +1 -1
  103. package/dist/src/cli-commands/skills/disable/handler.js +19 -7
  104. package/dist/src/cli-commands/skills/disable/handler.js.map +1 -1
  105. package/dist/src/cli-commands/skills/enable/enable-skill.d.ts +6 -7
  106. package/dist/src/cli-commands/skills/enable/enable-skill.d.ts.map +1 -1
  107. package/dist/src/cli-commands/skills/enable/enable-skill.js +16 -74
  108. package/dist/src/cli-commands/skills/enable/enable-skill.js.map +1 -1
  109. package/dist/src/cli-commands/skills/enable/handler.d.ts +1 -0
  110. package/dist/src/cli-commands/skills/enable/handler.d.ts.map +1 -1
  111. package/dist/src/cli-commands/skills/enable/handler.js +9 -0
  112. package/dist/src/cli-commands/skills/enable/handler.js.map +1 -1
  113. package/dist/src/cli-commands/skills/install/install-result.d.ts +1 -1
  114. package/dist/src/cli-commands/skills/install/install-result.d.ts.map +1 -1
  115. package/dist/src/cli-commands/skills/install/install-skill.d.ts.map +1 -1
  116. package/dist/src/cli-commands/skills/install/install-skill.js +3 -17
  117. package/dist/src/cli-commands/skills/install/install-skill.js.map +1 -1
  118. package/dist/src/cli-commands/skills/rename/rename-skill.d.ts.map +1 -1
  119. package/dist/src/cli-commands/skills/rename/rename-skill.js +0 -11
  120. package/dist/src/cli-commands/skills/rename/rename-skill.js.map +1 -1
  121. package/dist/src/cli-commands/skills/skill-paths.d.ts +1 -1
  122. package/dist/src/cli-commands/skills/skill-paths.js +2 -2
  123. package/dist/src/cli-commands/skills/skill-paths.js.map +1 -1
  124. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.d.ts +1 -1
  125. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.d.ts.map +1 -1
  126. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.js +5 -10
  127. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.js.map +1 -1
  128. package/dist/src/extensions/packs/manifest-schema.d.ts +6 -6
  129. package/dist/src/extensions/packs/manifest-schema.d.ts.map +1 -1
  130. package/dist/src/extensions/packs/manifest-schema.js +28 -7
  131. package/dist/src/extensions/packs/manifest-schema.js.map +1 -1
  132. package/dist/src/lockfile/index.d.ts +2 -2
  133. package/dist/src/lockfile/index.d.ts.map +1 -1
  134. package/dist/src/lockfile/index.js +1 -1
  135. package/dist/src/lockfile/index.js.map +1 -1
  136. package/dist/src/lockfile/lockfile.d.ts +21 -0
  137. package/dist/src/lockfile/lockfile.d.ts.map +1 -1
  138. package/dist/src/lockfile/schema.d.ts +77 -1
  139. package/dist/src/lockfile/schema.d.ts.map +1 -1
  140. package/dist/src/lockfile/schema.js +58 -1
  141. package/dist/src/lockfile/schema.js.map +1 -1
  142. package/dist/src/main.d.ts.map +1 -1
  143. package/dist/src/main.js +3 -0
  144. package/dist/src/main.js.map +1 -1
  145. package/dist/src/registry/schema.d.ts +4 -4
  146. package/dist/src/registry/schema.d.ts.map +1 -1
  147. package/dist/src/registry/schema.js +3 -3
  148. package/dist/src/registry/schema.js.map +1 -1
  149. package/dist/src/settings/index.d.ts +2 -2
  150. package/dist/src/settings/index.d.ts.map +1 -1
  151. package/dist/src/settings/index.js +1 -1
  152. package/dist/src/settings/index.js.map +1 -1
  153. package/dist/src/settings/schema.d.ts +46 -1
  154. package/dist/src/settings/schema.d.ts.map +1 -1
  155. package/dist/src/settings/schema.js +34 -1
  156. package/dist/src/settings/schema.js.map +1 -1
  157. package/dist/src/settings/settings.d.ts +3 -1
  158. package/dist/src/settings/settings.d.ts.map +1 -1
  159. package/dist/src/sources/providers/registry.d.ts.map +1 -1
  160. package/dist/src/sources/providers/registry.js +11 -5
  161. package/dist/src/sources/providers/registry.js.map +1 -1
  162. package/dist/src/sources/resolve-source.d.ts.map +1 -1
  163. package/dist/src/sources/resolve-source.js +2 -2
  164. package/dist/src/sources/resolve-source.js.map +1 -1
  165. package/dist/src/workspace/service.d.ts +19 -2
  166. package/dist/src/workspace/service.d.ts.map +1 -1
  167. package/dist/src/workspace/service.js +83 -5
  168. package/dist/src/workspace/service.js.map +1 -1
  169. package/package.json +1 -1
@@ -0,0 +1,116 @@
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 * as Option from "effect/Option";
14
+ import { makeCliError } from "../../../cli-error/index.js";
15
+ import { Log, Spinner } from "../../../tui/index.js";
16
+ import { Workspace } from "../../../workspace/index.js";
17
+ import { parseScopedName } from "../../skills/naming.js";
18
+ // -----------------------------------------------------------------------------
19
+ // Operation Handler
20
+ // -----------------------------------------------------------------------------
21
+ /**
22
+ * Unpack operation handler.
23
+ *
24
+ * 1. Look up pack in lockfile for resolved extensions
25
+ * 2. Read current settings to find existing direct skill entries
26
+ * 3. Add resolved skills as direct entries (skip existing)
27
+ * 4. Remove pack from settings and lockfile
28
+ */
29
+ export const unpackPack = (op) => Effect.gen(function* () {
30
+ const ws = yield* Workspace;
31
+ // Look up the pack in the lockfile
32
+ const lockedPack = yield* ws.getLockedPack(op.args.name);
33
+ if (Option.isNone(lockedPack)) {
34
+ return yield* makeCliError({
35
+ code: "PACK_NOT_INSTALLED",
36
+ what: `Pack "${op.args.name}" is not installed`,
37
+ howToFix: "Install the pack first with `axm packs install`.",
38
+ });
39
+ }
40
+ const entry = lockedPack.value;
41
+ // Read current configured skills to preserve existing direct entries
42
+ const currentSkills = yield* ws.getConfiguredSkills();
43
+ // Add resolved skills as direct entries (only if not already present)
44
+ // Use the short name (after scope/) as the settings key since SkillsMapSchema
45
+ // validates keys against agentskills.io naming (no @ or / allowed).
46
+ yield* Effect.forEach(Object.entries(entry.resolvedSkills), ([fqn, version]) => Effect.gen(function* () {
47
+ const { skillName: shortName } = parseScopedName(fqn);
48
+ if (shortName in currentSkills)
49
+ return; // preserve existing direct entry
50
+ const source = `registry:${fqn}@${version}`;
51
+ yield* ws.setSkill(shortName, source, {
52
+ type: "registry",
53
+ scope: entry.scope,
54
+ name: shortName,
55
+ resolvedVersion: version,
56
+ checksum: "",
57
+ sourceName: entry.sourceName,
58
+ agents: [],
59
+ installedAt: new Date(),
60
+ updatedAt: new Date(),
61
+ });
62
+ }), { concurrency: 1 });
63
+ // Remove the pack entry from settings and lockfile
64
+ yield* ws.removePack(op.args.name);
65
+ const skillCount = Object.keys(entry.resolvedSkills).length;
66
+ return {
67
+ result: "success",
68
+ message: `Unpacked ${op.args.name}: ${skillCount} skill(s) promoted to direct entries`,
69
+ };
70
+ });
71
+ // -----------------------------------------------------------------------------
72
+ // Main Handler
73
+ // -----------------------------------------------------------------------------
74
+ /**
75
+ * Handles the `axm packs unpack` command.
76
+ */
77
+ export const handleUnpack = (args) => Effect.gen(function* () {
78
+ const ws = yield* Workspace;
79
+ const log = yield* Log;
80
+ const spinnerSvc = yield* Spinner;
81
+ yield* log.info("axm packs unpack");
82
+ // Validate pack exists in lockfile
83
+ const handle = yield* spinnerSvc.start("Checking pack...");
84
+ const lockedPack = yield* ws.getLockedPack(args.name);
85
+ if (Option.isNone(lockedPack)) {
86
+ yield* handle.stop("Failed");
87
+ return yield* Effect.fail(makeCliError({
88
+ code: "PACK_NOT_INSTALLED",
89
+ what: `Pack "${args.name}" is not installed`,
90
+ howToFix: "Install the pack first with `axm packs install`.",
91
+ }));
92
+ }
93
+ yield* handle.stop(`Found ${args.name}`);
94
+ // Build plan
95
+ const steps = [
96
+ {
97
+ _tag: "PlannedJobStep",
98
+ operation: {
99
+ name: "unpack-pack",
100
+ args: { name: args.name },
101
+ },
102
+ expectedResult: { result: "success", message: `Unpacked ${args.name}` },
103
+ label: `Unpack ${args.name}`,
104
+ },
105
+ ];
106
+ const plan = {
107
+ name: "Unpack pack",
108
+ description: Option.some(`Unpack ${args.name} into direct settings entries`),
109
+ jobs: [{ steps, concurrency: 1 }],
110
+ };
111
+ yield* ws.resolvePlan(plan, {
112
+ "unpack-pack": unpackPack,
113
+ });
114
+ yield* log.success("Done");
115
+ }).pipe(Effect.withSpan("UnpackPack.handle"));
116
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../../src/cli-commands/packs/unpack/handler.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * @experimental This API is unstable and may change without notice.
5
5
  */
6
6
  export declare const REGISTRY_EXTENSIONS_DIR = ".axm/extensions";
7
+ export declare const EXTERNAL_EXTENSIONS_DIR = ".axm/extensions/external";
7
8
  export declare const UNIVERSAL_SKILLS_DIR = ".agents/skills";
8
9
  export declare const MANIFEST_FILENAME = "axm-skill.json";
9
10
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/cli-commands/skills/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,iBAAiB,mBAAmB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/cli-commands/skills/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAClE,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,iBAAiB,mBAAmB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * @experimental This API is unstable and may change without notice.
5
5
  */
6
6
  export const REGISTRY_EXTENSIONS_DIR = ".axm/extensions";
7
+ export const EXTERNAL_EXTENSIONS_DIR = ".axm/extensions/external";
7
8
  export const UNIVERSAL_SKILLS_DIR = ".agents/skills";
8
9
  export const MANIFEST_FILENAME = "axm-skill.json";
9
10
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/cli-commands/skills/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/cli-commands/skills/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  /**
2
- * Disable skill executor — removes files but keeps settings/lockfile entry.
2
+ * Disable skill executor — removes agent symlinks but preserves canonical files.
3
3
  *
4
- * Pipeline: read state → remove agent symlinks → remove canonical dir
5
- * clear lock agents → update settings entry.
4
+ * Pipeline: read state → remove agent symlinks → clear lock agents update settings entry.
6
5
  *
7
6
  * @experimental This API is unstable and may change without notice.
8
7
  */
@@ -15,11 +14,11 @@ import type { DisableSkillOperation } from "../operations.js";
15
14
  * Disable-skill operation handler.
16
15
  *
17
16
  * 1. Read configured agents, lock entry
18
- * 2. Determine canonical path from lock entry type
19
- * 3. Remove agent symlinks (concurrent)
20
- * 4. Remove canonical directories
21
- * 5. Clear lock agents
22
- * 6. Update settings entry to set enabled: false
17
+ * 2. Remove agent symlinks (concurrent)
18
+ * 3. Clear lock agents
19
+ * 4. Update settings entry to set enabled: false
20
+ *
21
+ * Canonical files are preserved for later re-enablement.
23
22
  */
24
23
  export declare const disableSkill: OperationHandler<DisableSkillOperation, FileSystem.FileSystem | Path.Path | Workspace>;
25
24
  //# sourceMappingURL=disable-skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"disable-skill.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/disable-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAK9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAM9D;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,EAAE,gBAAgB,CACzC,qBAAqB,EACrB,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CA6F3C,CAAC"}
1
+ {"version":3,"file":"disable-skill.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/disable-skill.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAK9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAM9D;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,EAAE,gBAAgB,CACzC,qBAAqB,EACrB,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CA+D3C,CAAC"}
@@ -1,8 +1,7 @@
1
1
  /**
2
- * Disable skill executor — removes files but keeps settings/lockfile entry.
2
+ * Disable skill executor — removes agent symlinks but preserves canonical files.
3
3
  *
4
- * Pipeline: read state → remove agent symlinks → remove canonical dir
5
- * clear lock agents → update settings entry.
4
+ * Pipeline: read state → remove agent symlinks → clear lock agents update settings entry.
6
5
  *
7
6
  * @experimental This API is unstable and may change without notice.
8
7
  */
@@ -13,8 +12,6 @@ import * as Option from "effect/Option";
13
12
  import { getAgentById } from "../../../agents/registry.js";
14
13
  import { makeCliError } from "../../../cli-error/index.js";
15
14
  import { Workspace } from "../../../workspace/service.js";
16
- import { UNIVERSAL_SKILLS_DIR, REGISTRY_EXTENSIONS_DIR } from "../constants.js";
17
- import { removeIfExists } from "../fs-helpers.js";
18
15
  import { sanitizeName } from "../install/skill-utils.js";
19
16
  // -----------------------------------------------------------------------------
20
17
  // Public API
@@ -23,11 +20,11 @@ import { sanitizeName } from "../install/skill-utils.js";
23
20
  * Disable-skill operation handler.
24
21
  *
25
22
  * 1. Read configured agents, lock entry
26
- * 2. Determine canonical path from lock entry type
27
- * 3. Remove agent symlinks (concurrent)
28
- * 4. Remove canonical directories
29
- * 5. Clear lock agents
30
- * 6. Update settings entry to set enabled: false
23
+ * 2. Remove agent symlinks (concurrent)
24
+ * 3. Clear lock agents
25
+ * 4. Update settings entry to set enabled: false
26
+ *
27
+ * Canonical files are preserved for later re-enablement.
31
28
  */
32
29
  export const disableSkill = (op) => Effect.gen(function* () {
33
30
  const fs = yield* FileSystem.FileSystem;
@@ -59,37 +56,14 @@ export const disableSkill = (op) => Effect.gen(function* () {
59
56
  if (Option.isNone(maybeAgent))
60
57
  return Effect.void;
61
58
  const agent = maybeAgent.value;
62
- // Self-reference detection
63
- const agentSkillsDir = path.resolve(base, agent.skills.dir);
64
- const canonicalSkillsDir = path.resolve(base, UNIVERSAL_SKILLS_DIR);
65
- if (agentSkillsDir === canonicalSkillsDir)
66
- return Effect.void;
67
59
  const agentSkillPath = path.join(base, agent.skills.dir, sanitizedName);
68
60
  return fs
69
61
  .remove(agentSkillPath, { recursive: true })
70
62
  .pipe(Effect.catchAll(() => Effect.void));
71
63
  }, { concurrency: "unbounded" });
72
- // 3. Remove canonical directories (from all known locations)
73
- yield* removeIfExists(fs, path.join(base, UNIVERSAL_SKILLS_DIR, sanitizedName));
74
- // Also remove from registry locations if applicable
75
- const extensionsDir = path.join(base, REGISTRY_EXTENSIONS_DIR);
76
- const extensionsDirExists = yield* fs
77
- .exists(extensionsDir)
78
- .pipe(Effect.catchAll(() => Effect.succeed(false)));
79
- if (extensionsDirExists) {
80
- const scopeDirs = yield* fs
81
- .readDirectory(extensionsDir)
82
- .pipe(Effect.catchAll(() => Effect.succeed([])));
83
- yield* Effect.forEach(scopeDirs, (scopeDir) => {
84
- if (!scopeDir.startsWith("@"))
85
- return Effect.void;
86
- const skillPath = path.join(extensionsDir, scopeDir, "skills", sanitizedName);
87
- return removeIfExists(fs, skillPath);
88
- }, { concurrency: "unbounded" });
89
- }
90
- // 4. Clear lock agents — state updates after files
64
+ // 3. Clear lock agents state updates after files
91
65
  yield* ws.updateLockEntryAgents(op.args.skillName, []).pipe(Effect.catchAll(() => Effect.void));
92
- // 5. Update settings entry to set enabled: false
66
+ // 4. Update settings entry to set enabled: false
93
67
  yield* ws
94
68
  .updateSkillEntry(op.args.skillName, (e) => ({ ...e, enabled: false }))
95
69
  .pipe(Effect.catchAll(() => Effect.void));
@@ -1 +1 @@
1
- {"version":3,"file":"disable-skill.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/disable-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"disable-skill.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/disable-skill.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Disable command handler - Effect-based orchestration for `axm skills disable`.
3
3
  *
4
4
  * Validates skill state then builds and resolves a single-step plan.
5
+ * Supports both direct skills (settings entry) and transitive skills (via packs).
5
6
  *
6
7
  * @experimental This API is unstable and may change without notice.
7
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AASxD,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAMD,eAAO,MAAM,aAAa,GAAI,MAAM,kBAAkB,yRAgEV,CAAC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AASxD,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAMD,eAAO,MAAM,aAAa,GAAI,MAAM,kBAAkB,yRA8EV,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * Disable command handler - Effect-based orchestration for `axm skills disable`.
3
3
  *
4
4
  * Validates skill state then builds and resolves a single-step plan.
5
+ * Supports both direct skills (settings entry) and transitive skills (via packs).
5
6
  *
6
7
  * @experimental This API is unstable and may change without notice.
7
8
  */
@@ -18,16 +19,27 @@ export const handleDisable = (args) => Effect.gen(function* () {
18
19
  const ws = yield* Workspace;
19
20
  const log = yield* Log;
20
21
  yield* log.info("axm skills disable");
21
- // Load configured skills
22
+ // Load configured skills (direct settings entries)
22
23
  const configuredSkills = yield* ws.getConfiguredSkills();
23
24
  const entry = configuredSkills[args.name];
24
- // Validate: skill exists
25
+ // If not found in configured skills, check installed skills (includes transitive via packs)
25
26
  if (entry === undefined) {
26
- return yield* makeCliError({
27
- code: "SKILL_NOT_FOUND",
28
- what: `Skill '${args.name}' not found`,
29
- howToFix: "Run `axm skills list` to see available skills",
30
- });
27
+ const installedSkills = yield* ws.getInstalledSkills();
28
+ const installedEntry = installedSkills[args.name];
29
+ if (installedEntry === undefined) {
30
+ return yield* makeCliError({
31
+ code: "SKILL_NOT_FOUND",
32
+ what: `Skill '${args.name}' not found`,
33
+ howToFix: "Run `axm skills list` to see available skills",
34
+ });
35
+ }
36
+ // Transitive skill — promote to direct entry with enabled: false
37
+ // Use the bare name (without scope) as the settings key
38
+ const bareName = args.name.includes("/") ? args.name.split("/").pop() : args.name;
39
+ const source = Option.orElse(installedEntry.source, () => Option.some(args.name));
40
+ yield* ws.setSkillEntry(bareName, { source, enabled: false, managed: true });
41
+ yield* log.success("Done");
42
+ return;
31
43
  }
32
44
  // Validate: skill is managed
33
45
  if (!entry.managed) {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,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;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAalD,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAwB,EAAE,EAAE,CACxD,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,oBAAoB,CAAC,CAAC;IAEtC,yBAAyB;IACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,yBAAyB;IACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,aAAa;YACtC,QAAQ,EAAE,+CAA+C;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,mCAAmC,IAAI,CAAC,IAAI,GAAG;YACrD,QAAQ,EAAE,iEAAiE;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAC5D,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,MAAM,EAAE,GAAG;QACT,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;KACC,CAAC;IAElC,yBAAyB;IACzB,MAAM,IAAI,GAAgC;QACxC,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,EAAE;YACJ;gBACE,WAAW,EAAE,CAAC;gBACd,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,EAAE;wBACb,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,IAAI,EAAE,EAAE;wBACvE,KAAK,EAAE,IAAI,CAAC,IAAI;qBACjB;iBACF;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC;IAE/D,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/disable/handler.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,25 @@
1
1
  /**
2
- * Enable skill executor — re-installs files for a previously disabled skill.
2
+ * Enable skill executor — re-creates agent symlinks for a previously disabled skill.
3
3
  *
4
- * Pipeline: read state → resolve source copy to canonical → create symlinks →
4
+ * Pipeline: read state → verify canonical dir exists → create symlinks →
5
5
  * update lock agents → update settings entry.
6
6
  *
7
7
  * @experimental This API is unstable and may change without notice.
8
8
  */
9
9
  import * as FileSystem from "@effect/platform/FileSystem";
10
10
  import * as Path from "@effect/platform/Path";
11
- import { Log } from "../../../tui/index.js";
12
11
  import type { OperationHandler } from "../../../workspace/apply-plan.js";
13
12
  import { Workspace } from "../../../workspace/service.js";
14
13
  import type { EnableSkillOperation } from "../operations.js";
15
14
  /**
16
15
  * Enable-skill operation handler.
17
16
  *
18
- * 1. Read configured agents, lock entry, settings entry
19
- * 2. Determine canonical path from lock entry type
20
- * 3. Copy source files to canonical location
17
+ * 1. Read configured agents, lock entry
18
+ * 2. Compute canonical path via getSkillDir (uses lockfile)
19
+ * 3. Verify canonical directory exists
21
20
  * 4. Create agent symlinks (concurrent)
22
21
  * 5. Update lock agents
23
22
  * 6. Update settings entry to set enabled: true
24
23
  */
25
- export declare const enableSkill: OperationHandler<EnableSkillOperation, FileSystem.FileSystem | Path.Path | Workspace | Log>;
24
+ export declare const enableSkill: OperationHandler<EnableSkillOperation, FileSystem.FileSystem | Path.Path | Workspace>;
26
25
  //# sourceMappingURL=enable-skill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enable-skill.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/enable-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAK9C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAK1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAM7D;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,EAAE,gBAAgB,CACxC,oBAAoB,EACpB,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG,CAiIjD,CAAC"}
1
+ {"version":3,"file":"enable-skill.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/enable-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAM9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAG1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAM7D;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,EAAE,gBAAgB,CACxC,oBAAoB,EACpB,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CA8D3C,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Enable skill executor — re-installs files for a previously disabled skill.
2
+ * Enable skill executor — re-creates agent symlinks for a previously disabled skill.
3
3
  *
4
- * Pipeline: read state → resolve source copy to canonical → create symlinks →
4
+ * Pipeline: read state → verify canonical dir exists → create symlinks →
5
5
  * update lock agents → update settings entry.
6
6
  *
7
7
  * @experimental This API is unstable and may change without notice.
@@ -12,12 +12,9 @@ import * as Effect from "effect/Effect";
12
12
  import * as Option from "effect/Option";
13
13
  import { getAgentById } from "../../../agents/registry.js";
14
14
  import { makeCliError } from "../../../cli-error/index.js";
15
- import { Log } from "../../../tui/index.js";
16
15
  import { createSymlink } from "../../../utils/create-symlink.js";
17
16
  import { Workspace } from "../../../workspace/service.js";
18
17
  import { copySkillDirectory } from "../copy-skill-directory.js";
19
- import { UNIVERSAL_SKILLS_DIR } from "../constants.js";
20
- import { removeIfExists } from "../fs-helpers.js";
21
18
  import { sanitizeName } from "../install/skill-utils.js";
22
19
  // -----------------------------------------------------------------------------
23
20
  // Public API
@@ -25,9 +22,9 @@ import { sanitizeName } from "../install/skill-utils.js";
25
22
  /**
26
23
  * Enable-skill operation handler.
27
24
  *
28
- * 1. Read configured agents, lock entry, settings entry
29
- * 2. Determine canonical path from lock entry type
30
- * 3. Copy source files to canonical location
25
+ * 1. Read configured agents, lock entry
26
+ * 2. Compute canonical path via getSkillDir (uses lockfile)
27
+ * 3. Verify canonical directory exists
31
28
  * 4. Create agent symlinks (concurrent)
32
29
  * 5. Update lock agents
33
30
  * 6. Update settings entry to set enabled: true
@@ -36,84 +33,29 @@ export const enableSkill = (op) => Effect.gen(function* () {
36
33
  const fs = yield* FileSystem.FileSystem;
37
34
  const path = yield* Path.Path;
38
35
  const ws = yield* Workspace;
39
- const axmDir = ws.path;
40
- const base = path.dirname(axmDir);
36
+ const base = path.dirname(ws.path);
41
37
  const sanitizedName = sanitizeName(op.args.skillName);
42
38
  // 1. Read workspace state
43
39
  const configuredAgents = yield* ws.getConfiguredAgents();
44
- const lockEntryOption = yield* ws.getLockedSkill(op.args.skillName).pipe(Effect.mapError((e) => makeCliError({
45
- code: "ENABLE_SKILL_LOCKFILE_READ_FAILED",
46
- what: `Failed to read lockfile: ${e.what}`,
47
- cause: e,
48
- })));
49
- if (Option.isNone(lockEntryOption)) {
40
+ // 2. Compute canonical path via getSkillDir (name-only mode — uses lockfile)
41
+ const { skillSrcPath } = yield* ws.getSkillDir(op.args.skillName);
42
+ // 3. Verify canonical directory exists
43
+ const exists = yield* fs
44
+ .exists(skillSrcPath)
45
+ .pipe(Effect.catchAll(() => Effect.succeed(false)));
46
+ if (!exists) {
50
47
  return yield* makeCliError({
51
- code: "ENABLE_SKILL_NOT_FOUND",
52
- what: `Lock entry for "${op.args.skillName}" not found in lockfile`,
48
+ code: "ENABLE_SKILL_MISSING_FILES",
49
+ what: `Skill files for "${op.args.skillName}" not found at ${skillSrcPath}`,
50
+ howToFix: "Try reinstalling the skill with `axm skills install`",
53
51
  });
54
52
  }
55
- const lockEntry = lockEntryOption.value;
56
- // 2. Determine canonical path via centralized getSkillDir (name-only mode — uses lockfile)
57
- const { canonicalPath, skillSrcPath } = yield* ws.getSkillDir(op.args.skillName);
58
- // 3. Resolve source and copy to canonical location
59
- // For local sources, the lock entry path is the source repo root;
60
- // the individual skill lives at repo-root/skill-name
61
- if (lockEntry.type === "local") {
62
- const sourcePath = path.join(lockEntry.path, sanitizedName);
63
- // Pre-clean canonical location
64
- yield* removeIfExists(fs, canonicalPath);
65
- yield* copySkillDirectory(sourcePath, skillSrcPath).pipe(Effect.mapError((e) => makeCliError({
66
- code: "ENABLE_SKILL_COPY_FAILED",
67
- what: `Failed to copy skill files to ${skillSrcPath}`,
68
- cause: e,
69
- })));
70
- }
71
- else if (lockEntry.type === "registry") {
72
- // For registry sources, the canonical path should already exist from prior install
73
- // or needs re-resolution through SourceProviders (not available in this handler).
74
- // If files don't exist, fail with a helpful message.
75
- const exists = yield* fs
76
- .exists(canonicalPath)
77
- .pipe(Effect.catchAll(() => Effect.succeed(false)));
78
- if (!exists) {
79
- return yield* makeCliError({
80
- code: "ENABLE_SKILL_MISSING_FILES",
81
- what: `Skill files for "${op.args.skillName}" not found at ${canonicalPath}`,
82
- howToFix: "Try reinstalling the skill with `axm skills install`",
83
- });
84
- }
85
- }
86
- else {
87
- // For git-based sources (github, gitlab, etc.), use the path from lock entry
88
- const sourcePath = "path" in lockEntry ? lockEntry.path : undefined;
89
- if (sourcePath) {
90
- yield* removeIfExists(fs, canonicalPath);
91
- yield* copySkillDirectory(sourcePath, skillSrcPath).pipe(Effect.mapError((e) => makeCliError({
92
- code: "ENABLE_SKILL_COPY_FAILED",
93
- what: `Failed to copy skill files to ${skillSrcPath}`,
94
- cause: e,
95
- })));
96
- }
97
- else {
98
- // Git sources without a local path need re-resolution
99
- return yield* makeCliError({
100
- code: "ENABLE_SKILL_MISSING_FILES",
101
- what: `Cannot re-resolve source for "${op.args.skillName}"`,
102
- howToFix: "Try reinstalling the skill with `axm skills install`",
103
- });
104
- }
105
- }
106
53
  // 4. Create agent symlinks (concurrent)
107
54
  yield* Effect.forEach(configuredAgents, (agentId) => {
108
55
  const maybeAgent = getAgentById(agentId);
109
56
  if (Option.isNone(maybeAgent))
110
57
  return Effect.void;
111
58
  const agent = maybeAgent.value;
112
- // Self-reference detection
113
- const agentSkillsDir = path.resolve(base, agent.skills.dir);
114
- const canonicalSkillsDir = path.resolve(base, UNIVERSAL_SKILLS_DIR);
115
- if (agentSkillsDir === canonicalSkillsDir)
116
- return Effect.void;
117
59
  const agentSkillPath = path.join(base, agent.skills.dir, sanitizedName);
118
60
  return createSymlink({ target: skillSrcPath, link: agentSkillPath }).pipe(Effect.catchAll(() => copySkillDirectory(skillSrcPath, agentSkillPath).pipe(Effect.catchAll(() => Effect.void))));
119
61
  }, { concurrency: "unbounded" });
@@ -1 +1 @@
1
- {"version":3,"file":"enable-skill.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/enable-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enable-skill.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/enable-skill.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Enable command handler - Effect-based orchestration for `axm skills enable`.
3
3
  *
4
4
  * Validates skill state then builds and resolves a single-step plan.
5
+ * Supports both direct skills (with lock entry) and promoted transitive skills.
5
6
  *
6
7
  * @experimental This API is unstable and may change without notice.
7
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AASxD,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAMD,eAAO,MAAM,YAAY,GAAI,MAAM,iBAAiB,yRAgET,CAAC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AASxD,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAMD,eAAO,MAAM,YAAY,GAAI,MAAM,iBAAiB,yRAyET,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * Enable command handler - Effect-based orchestration for `axm skills enable`.
3
3
  *
4
4
  * Validates skill state then builds and resolves a single-step plan.
5
+ * Supports both direct skills (with lock entry) and promoted transitive skills.
5
6
  *
6
7
  * @experimental This API is unstable and may change without notice.
7
8
  */
@@ -43,6 +44,14 @@ export const handleEnable = (args) => Effect.gen(function* () {
43
44
  yield* log.success("Nothing to do.");
44
45
  return;
45
46
  }
47
+ // Check if this is a promoted transitive skill (no lock entry)
48
+ const lockEntry = yield* ws.getLockedSkill(args.name);
49
+ if (Option.isNone(lockEntry)) {
50
+ // Promoted transitive skill — just update settings entry
51
+ yield* ws.updateSkillEntry(args.name, (e) => ({ ...e, enabled: true }));
52
+ yield* log.success("Done");
53
+ return;
54
+ }
46
55
  // Build operation
47
56
  const op = {
48
57
  name: "enable-skill",
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,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;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAahD,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAuB,EAAE,EAAE,CACtD,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,mBAAmB,CAAC,CAAC;IAErC,yBAAyB;IACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,yBAAyB;IACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,aAAa;YACtC,QAAQ,EAAE,+CAA+C;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,kCAAkC,IAAI,CAAC,IAAI,GAAG;YACpD,QAAQ,EAAE,iEAAiE;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAC3D,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,MAAM,EAAE,GAAG;QACT,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;KACA,CAAC;IAEjC,yBAAyB;IACzB,MAAM,IAAI,GAA+B;QACvC,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,EAAE;YACJ;gBACE,WAAW,EAAE,CAAC;gBACd,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,EAAE;wBACb,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,EAAE;wBACtE,KAAK,EAAE,IAAI,CAAC,IAAI;qBACjB;iBACF;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAE7D,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,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;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAahD,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAuB,EAAE,EAAE,CACtD,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,mBAAmB,CAAC,CAAC;IAErC,yBAAyB;IACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,yBAAyB;IACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,aAAa;YACtC,QAAQ,EAAE,+CAA+C;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,kCAAkC,IAAI,CAAC,IAAI,GAAG;YACpD,QAAQ,EAAE,iEAAiE;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAC3D,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,+DAA+D;IAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,yDAAyD;QACzD,KAAK,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,MAAM,EAAE,GAAG;QACT,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;KACA,CAAC;IAEjC,yBAAyB;IACzB,MAAM,IAAI,GAA+B;QACvC,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,EAAE;YACJ;gBACE,WAAW,EAAE,CAAC;gBACd,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,EAAE;wBACb,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,EAAE;wBACtE,KAAK,EAAE,IAAI,CAAC,IAAI;qBACjB;iBACF;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAE7D,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC"}
@@ -25,7 +25,7 @@ export interface InstallResult {
25
25
  readonly error: Option.Option<string>;
26
26
  /** Agent-specific skill directory path. */
27
27
  readonly path: string;
28
- /** Canonical skill location (.agents/skills/<name>). */
28
+ /** Canonical skill location (.axm/extensions/external/skills/<name> or .axm/extensions/<scope>/skills/<name>/src). */
29
29
  readonly canonicalPath: string;
30
30
  }
31
31
  //# sourceMappingURL=install-result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-result.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/install/install-result.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC,oFAAoF;IACpF,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC"}
1
+ {"version":3,"file":"install-result.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/install/install-result.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC,oFAAoF;IACpF,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sHAAsH;IACtH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC"}