@axm.sh/cli 0.0.7 → 0.0.8

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 (401) hide show
  1. package/dist/src/agents/detection.d.ts +3 -16
  2. package/dist/src/agents/detection.d.ts.map +1 -1
  3. package/dist/src/agents/detection.js +4 -13
  4. package/dist/src/agents/detection.js.map +1 -1
  5. package/dist/src/agents/index.d.ts +1 -1
  6. package/dist/src/agents/index.d.ts.map +1 -1
  7. package/dist/src/agents/index.js +1 -1
  8. package/dist/src/agents/index.js.map +1 -1
  9. package/dist/src/cli-commands/init/handler.d.ts +1 -1
  10. package/dist/src/cli-commands/init/handler.d.ts.map +1 -1
  11. package/dist/src/cli-commands/init/handler.js +1 -1
  12. package/dist/src/cli-commands/init/handler.js.map +1 -1
  13. package/dist/src/cli-commands/skills/command.d.ts.map +1 -1
  14. package/dist/src/cli-commands/skills/command.js +6 -0
  15. package/dist/src/cli-commands/skills/command.js.map +1 -1
  16. package/dist/src/cli-commands/skills/constants.d.ts +9 -0
  17. package/dist/src/cli-commands/skills/constants.d.ts.map +1 -0
  18. package/dist/src/cli-commands/skills/constants.js +9 -0
  19. package/dist/src/cli-commands/skills/constants.js.map +1 -0
  20. package/dist/src/cli-commands/skills/copy-skill.d.ts +1 -1
  21. package/dist/src/cli-commands/skills/copy-skill.d.ts.map +1 -1
  22. package/dist/src/cli-commands/skills/copy-skill.js +11 -24
  23. package/dist/src/cli-commands/skills/copy-skill.js.map +1 -1
  24. package/dist/src/cli-commands/skills/disable/command.d.ts +15 -0
  25. package/dist/src/cli-commands/skills/disable/command.d.ts.map +1 -0
  26. package/dist/src/cli-commands/skills/disable/command.js +56 -0
  27. package/dist/src/cli-commands/skills/disable/command.js.map +1 -0
  28. package/dist/src/cli-commands/skills/disable/disable-skill.d.ts +25 -0
  29. package/dist/src/cli-commands/skills/disable/disable-skill.d.ts.map +1 -0
  30. package/dist/src/cli-commands/skills/disable/disable-skill.js +101 -0
  31. package/dist/src/cli-commands/skills/disable/disable-skill.js.map +1 -0
  32. package/dist/src/cli-commands/skills/disable/handler.d.ts +18 -0
  33. package/dist/src/cli-commands/skills/disable/handler.d.ts.map +1 -0
  34. package/dist/src/cli-commands/skills/disable/handler.js +72 -0
  35. package/dist/src/cli-commands/skills/disable/handler.js.map +1 -0
  36. package/dist/src/cli-commands/skills/enable/command.d.ts +15 -0
  37. package/dist/src/cli-commands/skills/enable/command.d.ts.map +1 -0
  38. package/dist/src/cli-commands/skills/enable/command.js +56 -0
  39. package/dist/src/cli-commands/skills/enable/command.js.map +1 -0
  40. package/dist/src/cli-commands/skills/enable/enable-skill.d.ts +26 -0
  41. package/dist/src/cli-commands/skills/enable/enable-skill.d.ts.map +1 -0
  42. package/dist/src/cli-commands/skills/enable/enable-skill.js +138 -0
  43. package/dist/src/cli-commands/skills/enable/enable-skill.js.map +1 -0
  44. package/dist/src/cli-commands/skills/enable/handler.d.ts +18 -0
  45. package/dist/src/cli-commands/skills/enable/handler.d.ts.map +1 -0
  46. package/dist/src/cli-commands/skills/enable/handler.js +72 -0
  47. package/dist/src/cli-commands/skills/enable/handler.js.map +1 -0
  48. package/dist/src/cli-commands/skills/fork/handler.d.ts +4 -13
  49. package/dist/src/cli-commands/skills/fork/handler.d.ts.map +1 -1
  50. package/dist/src/cli-commands/skills/fork/handler.js +37 -29
  51. package/dist/src/cli-commands/skills/fork/handler.js.map +1 -1
  52. package/dist/src/cli-commands/skills/fs-helpers.d.ts +12 -0
  53. package/dist/src/cli-commands/skills/fs-helpers.d.ts.map +1 -0
  54. package/dist/src/cli-commands/skills/fs-helpers.js +12 -0
  55. package/dist/src/cli-commands/skills/fs-helpers.js.map +1 -0
  56. package/dist/src/cli-commands/skills/install/discover-skills.d.ts +3 -18
  57. package/dist/src/cli-commands/skills/install/discover-skills.d.ts.map +1 -1
  58. package/dist/src/cli-commands/skills/install/discover-skills.js +7 -20
  59. package/dist/src/cli-commands/skills/install/discover-skills.js.map +1 -1
  60. package/dist/src/cli-commands/skills/install/handler.d.ts +1 -16
  61. package/dist/src/cli-commands/skills/install/handler.d.ts.map +1 -1
  62. package/dist/src/cli-commands/skills/install/handler.js +20 -27
  63. package/dist/src/cli-commands/skills/install/handler.js.map +1 -1
  64. package/dist/src/cli-commands/skills/install/install-skill.d.ts +1 -1
  65. package/dist/src/cli-commands/skills/install/install-skill.d.ts.map +1 -1
  66. package/dist/src/cli-commands/skills/install/install-skill.js +12 -18
  67. package/dist/src/cli-commands/skills/install/install-skill.js.map +1 -1
  68. package/dist/src/cli-commands/skills/install/select-skills.d.ts +4 -5
  69. package/dist/src/cli-commands/skills/install/select-skills.d.ts.map +1 -1
  70. package/dist/src/cli-commands/skills/install/select-skills.js +13 -13
  71. package/dist/src/cli-commands/skills/install/select-skills.js.map +1 -1
  72. package/dist/src/cli-commands/skills/install/skill-utils.d.ts +1 -6
  73. package/dist/src/cli-commands/skills/install/skill-utils.d.ts.map +1 -1
  74. package/dist/src/cli-commands/skills/install/skill-utils.js +8 -4
  75. package/dist/src/cli-commands/skills/install/skill-utils.js.map +1 -1
  76. package/dist/src/cli-commands/skills/list/handler.d.ts +1 -1
  77. package/dist/src/cli-commands/skills/list/handler.d.ts.map +1 -1
  78. package/dist/src/cli-commands/skills/list/handler.js +1 -1
  79. package/dist/src/cli-commands/skills/list/handler.js.map +1 -1
  80. package/dist/src/cli-commands/skills/naming.d.ts +17 -0
  81. package/dist/src/cli-commands/skills/naming.d.ts.map +1 -0
  82. package/dist/src/cli-commands/skills/naming.js +20 -0
  83. package/dist/src/cli-commands/skills/naming.js.map +1 -0
  84. package/dist/src/cli-commands/skills/operations.d.ts +25 -1
  85. package/dist/src/cli-commands/skills/operations.d.ts.map +1 -1
  86. package/dist/src/cli-commands/skills/publish/handler.d.ts +1 -10
  87. package/dist/src/cli-commands/skills/publish/handler.d.ts.map +1 -1
  88. package/dist/src/cli-commands/skills/publish/handler.js +31 -47
  89. package/dist/src/cli-commands/skills/publish/handler.js.map +1 -1
  90. package/dist/src/cli-commands/skills/publish-skill.d.ts +1 -1
  91. package/dist/src/cli-commands/skills/publish-skill.d.ts.map +1 -1
  92. package/dist/src/cli-commands/skills/publish-skill.js +37 -52
  93. package/dist/src/cli-commands/skills/publish-skill.js.map +1 -1
  94. package/dist/src/cli-commands/skills/rename/command.d.ts +16 -0
  95. package/dist/src/cli-commands/skills/rename/command.d.ts.map +1 -0
  96. package/dist/src/cli-commands/skills/rename/command.js +62 -0
  97. package/dist/src/cli-commands/skills/rename/command.js.map +1 -0
  98. package/dist/src/cli-commands/skills/rename/handler.d.ts +20 -0
  99. package/dist/src/cli-commands/skills/rename/handler.d.ts.map +1 -0
  100. package/dist/src/cli-commands/skills/rename/handler.js +77 -0
  101. package/dist/src/cli-commands/skills/rename/handler.js.map +1 -0
  102. package/dist/src/cli-commands/skills/rename/rename-skill.d.ts +25 -0
  103. package/dist/src/cli-commands/skills/rename/rename-skill.d.ts.map +1 -0
  104. package/dist/src/cli-commands/skills/rename/rename-skill.js +110 -0
  105. package/dist/src/cli-commands/skills/rename/rename-skill.js.map +1 -0
  106. package/dist/src/cli-commands/skills/uninstall/handler.d.ts +1 -1
  107. package/dist/src/cli-commands/skills/uninstall/handler.d.ts.map +1 -1
  108. package/dist/src/cli-commands/skills/uninstall/handler.js +12 -1
  109. package/dist/src/cli-commands/skills/uninstall/handler.js.map +1 -1
  110. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.d.ts +1 -1
  111. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.d.ts.map +1 -1
  112. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.js +14 -23
  113. package/dist/src/cli-commands/skills/uninstall/uninstall-skill.js.map +1 -1
  114. package/dist/src/cli-commands/skills/update/build-plan.d.ts +7 -2
  115. package/dist/src/cli-commands/skills/update/build-plan.d.ts.map +1 -1
  116. package/dist/src/cli-commands/skills/update/build-plan.js +28 -20
  117. package/dist/src/cli-commands/skills/update/build-plan.js.map +1 -1
  118. package/dist/src/cli-commands/skills/update/handler.d.ts +11 -20
  119. package/dist/src/cli-commands/skills/update/handler.d.ts.map +1 -1
  120. package/dist/src/cli-commands/skills/update/handler.js +161 -90
  121. package/dist/src/cli-commands/skills/update/handler.js.map +1 -1
  122. package/dist/src/cli-commands/skills/utils.d.ts +2 -16
  123. package/dist/src/cli-commands/skills/utils.d.ts.map +1 -1
  124. package/dist/src/cli-commands/skills/utils.js +36 -20
  125. package/dist/src/cli-commands/skills/utils.js.map +1 -1
  126. package/dist/src/cli-error/cli-error.d.ts +21 -0
  127. package/dist/src/cli-error/cli-error.d.ts.map +1 -0
  128. package/dist/src/cli-error/cli-error.js +12 -0
  129. package/dist/src/cli-error/cli-error.js.map +1 -0
  130. package/dist/src/cli-error/index.d.ts +3 -0
  131. package/dist/src/cli-error/index.d.ts.map +1 -0
  132. package/dist/src/cli-error/index.js +3 -0
  133. package/dist/src/cli-error/index.js.map +1 -0
  134. package/dist/src/cli-error/render.d.ts +4 -0
  135. package/dist/src/cli-error/render.d.ts.map +1 -0
  136. package/dist/src/cli-error/render.js +25 -0
  137. package/dist/src/cli-error/render.js.map +1 -0
  138. package/dist/src/extensions/skills/index.d.ts +0 -5
  139. package/dist/src/extensions/skills/index.d.ts.map +1 -1
  140. package/dist/src/extensions/skills/index.js +1 -4
  141. package/dist/src/extensions/skills/index.js.map +1 -1
  142. package/dist/src/extensions/skills/state/index.d.ts +2 -2
  143. package/dist/src/extensions/skills/state/index.d.ts.map +1 -1
  144. package/dist/src/extensions/skills/state/index.js +1 -1
  145. package/dist/src/extensions/skills/state/index.js.map +1 -1
  146. package/dist/src/extensions/skills/state/pure-functions.d.ts +4 -29
  147. package/dist/src/extensions/skills/state/pure-functions.d.ts.map +1 -1
  148. package/dist/src/extensions/skills/state/pure-functions.js +4 -37
  149. package/dist/src/extensions/skills/state/pure-functions.js.map +1 -1
  150. package/dist/src/extensions/skills/state/types.d.ts +0 -1
  151. package/dist/src/extensions/skills/state/types.d.ts.map +1 -1
  152. package/dist/src/extensions/skills/state/types.js.map +1 -1
  153. package/dist/src/extensions/skills/types.d.ts +0 -40
  154. package/dist/src/extensions/skills/types.d.ts.map +1 -1
  155. package/dist/src/extensions/skills/types.js +0 -1
  156. package/dist/src/extensions/skills/types.js.map +1 -1
  157. package/dist/src/git/errors.d.ts +1 -2
  158. package/dist/src/git/errors.d.ts.map +1 -1
  159. package/dist/src/git/errors.js +0 -1
  160. package/dist/src/git/errors.js.map +1 -1
  161. package/dist/src/git/index.d.ts +0 -1
  162. package/dist/src/git/index.d.ts.map +1 -1
  163. package/dist/src/git/index.js +0 -1
  164. package/dist/src/git/index.js.map +1 -1
  165. package/dist/src/git/operations.d.ts +7 -7
  166. package/dist/src/git/operations.d.ts.map +1 -1
  167. package/dist/src/git/operations.js +22 -19
  168. package/dist/src/git/operations.js.map +1 -1
  169. package/dist/src/lockfile/index.d.ts +1 -2
  170. package/dist/src/lockfile/index.d.ts.map +1 -1
  171. package/dist/src/lockfile/index.js +2 -1
  172. package/dist/src/lockfile/index.js.map +1 -1
  173. package/dist/src/lockfile/lockfile.d.ts +77 -51
  174. package/dist/src/lockfile/lockfile.d.ts.map +1 -1
  175. package/dist/src/lockfile/lockfile.js +27 -51
  176. package/dist/src/lockfile/lockfile.js.map +1 -1
  177. package/dist/src/resolution/index.d.ts +0 -1
  178. package/dist/src/resolution/index.d.ts.map +1 -1
  179. package/dist/src/resolution/index.js +0 -2
  180. package/dist/src/resolution/index.js.map +1 -1
  181. package/dist/src/resolution/resolver.d.ts +2 -2
  182. package/dist/src/resolution/resolver.d.ts.map +1 -1
  183. package/dist/src/resolution/resolver.js +1 -1
  184. package/dist/src/resolution/resolver.js.map +1 -1
  185. package/dist/src/resolution/resolvers/ambiguous.js +1 -1
  186. package/dist/src/resolution/resolvers/ambiguous.js.map +1 -1
  187. package/dist/src/resolution/resolvers/axm-name.d.ts.map +1 -1
  188. package/dist/src/resolution/resolvers/axm-name.js +1 -1
  189. package/dist/src/resolution/resolvers/axm-name.js.map +1 -1
  190. package/dist/src/resolution/resolvers/bare-name.js +1 -1
  191. package/dist/src/resolution/resolvers/bare-name.js.map +1 -1
  192. package/dist/src/resolution/resolvers/explicit-source.d.ts.map +1 -1
  193. package/dist/src/resolution/resolvers/explicit-source.js +1 -1
  194. package/dist/src/resolution/resolvers/explicit-source.js.map +1 -1
  195. package/dist/src/resolution/resolvers/local-path.d.ts.map +1 -1
  196. package/dist/src/resolution/resolvers/local-path.js +1 -1
  197. package/dist/src/resolution/resolvers/local-path.js.map +1 -1
  198. package/dist/src/resolution/resolvers/url.d.ts.map +1 -1
  199. package/dist/src/resolution/resolvers/url.js +1 -1
  200. package/dist/src/resolution/resolvers/url.js.map +1 -1
  201. package/dist/src/runtime/error-handling.d.ts +10 -0
  202. package/dist/src/runtime/error-handling.d.ts.map +1 -0
  203. package/dist/src/runtime/error-handling.js +10 -0
  204. package/dist/src/runtime/error-handling.js.map +1 -0
  205. package/dist/src/runtime/index.d.ts +5 -4
  206. package/dist/src/runtime/index.d.ts.map +1 -1
  207. package/dist/src/runtime/index.js +11 -4
  208. package/dist/src/runtime/index.js.map +1 -1
  209. package/dist/src/settings/format-preserving-json.d.ts +1 -2
  210. package/dist/src/settings/format-preserving-json.d.ts.map +1 -1
  211. package/dist/src/settings/format-preserving-json.js +7 -7
  212. package/dist/src/settings/format-preserving-json.js.map +1 -1
  213. package/dist/src/settings/index.d.ts +5 -4
  214. package/dist/src/settings/index.d.ts.map +1 -1
  215. package/dist/src/settings/index.js +4 -2
  216. package/dist/src/settings/index.js.map +1 -1
  217. package/dist/src/settings/schema.d.ts +48 -8
  218. package/dist/src/settings/schema.d.ts.map +1 -1
  219. package/dist/src/settings/schema.js +26 -7
  220. package/dist/src/settings/schema.js.map +1 -1
  221. package/dist/src/settings/settings.d.ts +10 -52
  222. package/dist/src/settings/settings.d.ts.map +1 -1
  223. package/dist/src/settings/settings.js +22 -48
  224. package/dist/src/settings/settings.js.map +1 -1
  225. package/dist/src/settings/skill-entry.d.ts +44 -0
  226. package/dist/src/settings/skill-entry.d.ts.map +1 -0
  227. package/dist/src/settings/skill-entry.js +58 -0
  228. package/dist/src/settings/skill-entry.js.map +1 -0
  229. package/dist/src/sources/azurerepos/repo-exists.d.ts +2 -2
  230. package/dist/src/sources/azurerepos/repo-exists.d.ts.map +1 -1
  231. package/dist/src/sources/azurerepos/repo-exists.js +9 -7
  232. package/dist/src/sources/azurerepos/repo-exists.js.map +1 -1
  233. package/dist/src/sources/azurerepos/scp.d.ts +1 -2
  234. package/dist/src/sources/azurerepos/scp.d.ts.map +1 -1
  235. package/dist/src/sources/azurerepos/scp.js +6 -2
  236. package/dist/src/sources/azurerepos/scp.js.map +1 -1
  237. package/dist/src/sources/azurerepos/url.d.ts +1 -2
  238. package/dist/src/sources/azurerepos/url.d.ts.map +1 -1
  239. package/dist/src/sources/azurerepos/url.js +11 -3
  240. package/dist/src/sources/azurerepos/url.js.map +1 -1
  241. package/dist/src/sources/bitbucket/resolve-repo.d.ts +2 -2
  242. package/dist/src/sources/bitbucket/resolve-repo.d.ts.map +1 -1
  243. package/dist/src/sources/bitbucket/resolve-repo.js +5 -4
  244. package/dist/src/sources/bitbucket/resolve-repo.js.map +1 -1
  245. package/dist/src/sources/bitbucket/scp.d.ts +1 -2
  246. package/dist/src/sources/bitbucket/scp.d.ts.map +1 -1
  247. package/dist/src/sources/bitbucket/scp.js +6 -2
  248. package/dist/src/sources/bitbucket/scp.js.map +1 -1
  249. package/dist/src/sources/bitbucket/shorthand.d.ts +1 -1
  250. package/dist/src/sources/bitbucket/shorthand.d.ts.map +1 -1
  251. package/dist/src/sources/bitbucket/url.d.ts +1 -2
  252. package/dist/src/sources/bitbucket/url.d.ts.map +1 -1
  253. package/dist/src/sources/bitbucket/url.js +11 -3
  254. package/dist/src/sources/bitbucket/url.js.map +1 -1
  255. package/dist/src/sources/clone-url.d.ts +3 -4
  256. package/dist/src/sources/clone-url.d.ts.map +1 -1
  257. package/dist/src/sources/clone-url.js +6 -6
  258. package/dist/src/sources/clone-url.js.map +1 -1
  259. package/dist/src/sources/github/api.d.ts +3 -21
  260. package/dist/src/sources/github/api.d.ts.map +1 -1
  261. package/dist/src/sources/github/api.js +16 -28
  262. package/dist/src/sources/github/api.js.map +1 -1
  263. package/dist/src/sources/github/index.d.ts +1 -1
  264. package/dist/src/sources/github/index.d.ts.map +1 -1
  265. package/dist/src/sources/github/index.js +1 -1
  266. package/dist/src/sources/github/index.js.map +1 -1
  267. package/dist/src/sources/github/resolve-repo.d.ts +2 -2
  268. package/dist/src/sources/github/resolve-repo.d.ts.map +1 -1
  269. package/dist/src/sources/github/resolve-repo.js +5 -4
  270. package/dist/src/sources/github/resolve-repo.js.map +1 -1
  271. package/dist/src/sources/github/scp.d.ts +1 -2
  272. package/dist/src/sources/github/scp.d.ts.map +1 -1
  273. package/dist/src/sources/github/scp.js +6 -2
  274. package/dist/src/sources/github/scp.js.map +1 -1
  275. package/dist/src/sources/github/shorthand.d.ts +1 -1
  276. package/dist/src/sources/github/shorthand.d.ts.map +1 -1
  277. package/dist/src/sources/github/url.d.ts +1 -2
  278. package/dist/src/sources/github/url.d.ts.map +1 -1
  279. package/dist/src/sources/github/url.js +11 -3
  280. package/dist/src/sources/github/url.js.map +1 -1
  281. package/dist/src/sources/gitlab/resolve-repo.d.ts +2 -2
  282. package/dist/src/sources/gitlab/resolve-repo.d.ts.map +1 -1
  283. package/dist/src/sources/gitlab/resolve-repo.js +5 -4
  284. package/dist/src/sources/gitlab/resolve-repo.js.map +1 -1
  285. package/dist/src/sources/gitlab/scp.d.ts +1 -2
  286. package/dist/src/sources/gitlab/scp.d.ts.map +1 -1
  287. package/dist/src/sources/gitlab/scp.js +6 -2
  288. package/dist/src/sources/gitlab/scp.js.map +1 -1
  289. package/dist/src/sources/gitlab/shorthand.d.ts +1 -1
  290. package/dist/src/sources/gitlab/shorthand.d.ts.map +1 -1
  291. package/dist/src/sources/gitlab/url.d.ts +1 -2
  292. package/dist/src/sources/gitlab/url.d.ts.map +1 -1
  293. package/dist/src/sources/gitlab/url.js +11 -3
  294. package/dist/src/sources/gitlab/url.js.map +1 -1
  295. package/dist/src/sources/index.d.ts +0 -4
  296. package/dist/src/sources/index.d.ts.map +1 -1
  297. package/dist/src/sources/index.js +2 -3
  298. package/dist/src/sources/index.js.map +1 -1
  299. package/dist/src/sources/local/parser.d.ts +2 -2
  300. package/dist/src/sources/local/parser.d.ts.map +1 -1
  301. package/dist/src/sources/local/parser.js.map +1 -1
  302. package/dist/src/sources/parse-provider-shorthand.d.ts +2 -3
  303. package/dist/src/sources/parse-provider-shorthand.d.ts.map +1 -1
  304. package/dist/src/sources/parse-provider-shorthand.js +7 -3
  305. package/dist/src/sources/parse-provider-shorthand.js.map +1 -1
  306. package/dist/src/sources/provider.d.ts +5 -44
  307. package/dist/src/sources/provider.d.ts.map +1 -1
  308. package/dist/src/sources/provider.js +12 -26
  309. package/dist/src/sources/provider.js.map +1 -1
  310. package/dist/src/sources/providers/azurerepos.js +7 -7
  311. package/dist/src/sources/providers/azurerepos.js.map +1 -1
  312. package/dist/src/sources/providers/git-hosting.d.ts +3 -3
  313. package/dist/src/sources/providers/git-hosting.d.ts.map +1 -1
  314. package/dist/src/sources/providers/git-hosting.js +14 -33
  315. package/dist/src/sources/providers/git-hosting.js.map +1 -1
  316. package/dist/src/sources/providers/git.js +7 -7
  317. package/dist/src/sources/providers/git.js.map +1 -1
  318. package/dist/src/sources/providers/local.d.ts.map +1 -1
  319. package/dist/src/sources/providers/local.js +7 -18
  320. package/dist/src/sources/providers/local.js.map +1 -1
  321. package/dist/src/sources/providers/registry.d.ts +5 -5
  322. package/dist/src/sources/providers/registry.d.ts.map +1 -1
  323. package/dist/src/sources/providers/registry.js +136 -92
  324. package/dist/src/sources/providers/registry.js.map +1 -1
  325. package/dist/src/sources/registry-guard.d.ts +2 -3
  326. package/dist/src/sources/registry-guard.d.ts.map +1 -1
  327. package/dist/src/sources/registry-guard.js +8 -6
  328. package/dist/src/sources/registry-guard.js.map +1 -1
  329. package/dist/src/sources/resolve-source.d.ts +3 -3
  330. package/dist/src/sources/resolve-source.d.ts.map +1 -1
  331. package/dist/src/sources/resolve-source.js +83 -49
  332. package/dist/src/sources/resolve-source.js.map +1 -1
  333. package/dist/src/sources/service.d.ts +3 -4
  334. package/dist/src/sources/service.d.ts.map +1 -1
  335. package/dist/src/sources/service.js +8 -5
  336. package/dist/src/sources/service.js.map +1 -1
  337. package/dist/src/tui/confirm/service.d.ts +2 -2
  338. package/dist/src/tui/confirm/service.d.ts.map +1 -1
  339. package/dist/src/tui/confirm/service.js.map +1 -1
  340. package/dist/src/tui/errors.d.ts +0 -9
  341. package/dist/src/tui/errors.d.ts.map +1 -1
  342. package/dist/src/tui/errors.js +0 -2
  343. package/dist/src/tui/errors.js.map +1 -1
  344. package/dist/src/tui/index.d.ts +1 -1
  345. package/dist/src/tui/index.d.ts.map +1 -1
  346. package/dist/src/tui/index.js +1 -1
  347. package/dist/src/tui/index.js.map +1 -1
  348. package/dist/src/tui/multiselect/service.d.ts +3 -2
  349. package/dist/src/tui/multiselect/service.d.ts.map +1 -1
  350. package/dist/src/tui/multiselect/service.js +7 -5
  351. package/dist/src/tui/multiselect/service.js.map +1 -1
  352. package/dist/src/tui/password-input/service.d.ts +3 -2
  353. package/dist/src/tui/password-input/service.d.ts.map +1 -1
  354. package/dist/src/tui/password-input/service.js +7 -5
  355. package/dist/src/tui/password-input/service.js.map +1 -1
  356. package/dist/src/tui/select/service.d.ts +3 -2
  357. package/dist/src/tui/select/service.d.ts.map +1 -1
  358. package/dist/src/tui/select/service.js +5 -5
  359. package/dist/src/tui/select/service.js.map +1 -1
  360. package/dist/src/tui/spinner/index.d.ts +1 -1
  361. package/dist/src/tui/spinner/index.d.ts.map +1 -1
  362. package/dist/src/tui/spinner/service.d.ts +1 -5
  363. package/dist/src/tui/spinner/service.d.ts.map +1 -1
  364. package/dist/src/tui/spinner/service.js +25 -12
  365. package/dist/src/tui/spinner/service.js.map +1 -1
  366. package/dist/src/tui/spinner/test.d.ts +3 -0
  367. package/dist/src/tui/spinner/test.d.ts.map +1 -1
  368. package/dist/src/tui/spinner/test.js +9 -0
  369. package/dist/src/tui/spinner/test.js.map +1 -1
  370. package/dist/src/tui/spinner/types.d.ts +5 -0
  371. package/dist/src/tui/spinner/types.d.ts.map +1 -1
  372. package/dist/src/tui/text-input/service.d.ts +2 -2
  373. package/dist/src/tui/text-input/service.d.ts.map +1 -1
  374. package/dist/src/tui/text-input/service.js.map +1 -1
  375. package/dist/src/utils/create-symlink.d.ts +1 -14
  376. package/dist/src/utils/create-symlink.d.ts.map +1 -1
  377. package/dist/src/utils/create-symlink.js +17 -15
  378. package/dist/src/utils/create-symlink.js.map +1 -1
  379. package/dist/src/utils/index.d.ts +1 -2
  380. package/dist/src/utils/index.d.ts.map +1 -1
  381. package/dist/src/utils/index.js +1 -2
  382. package/dist/src/utils/index.js.map +1 -1
  383. package/dist/src/workspace/apply-plan.d.ts +5 -17
  384. package/dist/src/workspace/apply-plan.d.ts.map +1 -1
  385. package/dist/src/workspace/apply-plan.js +3 -12
  386. package/dist/src/workspace/apply-plan.js.map +1 -1
  387. package/dist/src/workspace/ensure-agents.d.ts +2 -15
  388. package/dist/src/workspace/ensure-agents.d.ts.map +1 -1
  389. package/dist/src/workspace/ensure-agents.js +7 -15
  390. package/dist/src/workspace/ensure-agents.js.map +1 -1
  391. package/dist/src/workspace/errors.d.ts +1 -1
  392. package/dist/src/workspace/errors.d.ts.map +1 -1
  393. package/dist/src/workspace/index.d.ts +1 -2
  394. package/dist/src/workspace/index.d.ts.map +1 -1
  395. package/dist/src/workspace/index.js +1 -2
  396. package/dist/src/workspace/index.js.map +1 -1
  397. package/dist/src/workspace/service.d.ts +30 -23
  398. package/dist/src/workspace/service.d.ts.map +1 -1
  399. package/dist/src/workspace/service.js +105 -38
  400. package/dist/src/workspace/service.js.map +1 -1
  401. package/package.json +1 -1
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Disable command handler - Effect-based orchestration for `axm skills disable`.
3
+ *
4
+ * Validates skill state then builds and resolves a single-step plan.
5
+ *
6
+ * @experimental This API is unstable and may change without notice.
7
+ */
8
+ import * as Effect from "effect/Effect";
9
+ import * as Option from "effect/Option";
10
+ import { makeCliError } from "../../../cli-error/index.js";
11
+ import { Log } from "../../../tui/index.js";
12
+ import { Workspace } from "../../../workspace/index.js";
13
+ import { disableSkill } from "./disable-skill.js";
14
+ // -----------------------------------------------------------------------------
15
+ // Main Handler
16
+ // -----------------------------------------------------------------------------
17
+ export const handleDisable = (args) => Effect.gen(function* () {
18
+ const ws = yield* Workspace;
19
+ const log = yield* Log;
20
+ yield* log.info("axm skills disable");
21
+ // Load configured skills
22
+ const configuredSkills = yield* ws.getConfiguredSkills();
23
+ const entry = configuredSkills[args.name];
24
+ // Validate: skill exists
25
+ 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
+ });
31
+ }
32
+ // Validate: skill is managed
33
+ if (!entry.managed) {
34
+ return yield* makeCliError({
35
+ code: "SKILL_NOT_MANAGED",
36
+ what: `Cannot disable unmanaged skill '${args.name}'`,
37
+ howToFix: "Only managed skills (installed via axm) can be enabled/disabled",
38
+ });
39
+ }
40
+ // Validate: skill is currently enabled
41
+ if (!entry.enabled) {
42
+ yield* log.info(`Skill '${args.name}' is already disabled`);
43
+ yield* log.success("Nothing to do.");
44
+ return;
45
+ }
46
+ // Build operation
47
+ const op = {
48
+ name: "disable-skill",
49
+ args: { skillName: args.name },
50
+ };
51
+ // Build single-step plan
52
+ const plan = {
53
+ name: "Disable skill",
54
+ description: Option.some(`Disable ${args.name}`),
55
+ jobs: [
56
+ {
57
+ concurrency: 1,
58
+ steps: [
59
+ {
60
+ _tag: "PlannedJobStep",
61
+ operation: op,
62
+ expectedResult: { result: "success", message: `Disabled ${args.name}` },
63
+ label: args.name,
64
+ },
65
+ ],
66
+ },
67
+ ],
68
+ };
69
+ yield* ws.resolvePlan(plan, { "disable-skill": disableSkill });
70
+ yield* log.success("Done");
71
+ }).pipe(Effect.withSpan("Disable.handle"));
72
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Enable command yargs definition - wires handler to `axm skills enable`.
3
+ *
4
+ * @experimental This API is unstable and may change without notice.
5
+ */
6
+ import type { CommandModule } from "yargs";
7
+ export interface EnableCommandArgs {
8
+ name: string;
9
+ global: boolean;
10
+ yes: boolean;
11
+ preview: boolean;
12
+ "non-interactive": boolean | undefined;
13
+ }
14
+ export declare const enableCommand: CommandModule<{}, EnableCommandArgs>;
15
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/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,MAAM,EAAE,OAAO,CAAC;IAChB,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,CAiD9D,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Enable command yargs definition - wires handler to `axm skills enable`.
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 { handleEnable } from "./handler.js";
9
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- yargs convention
10
+ export const enableCommand = {
11
+ command: "enable <name>",
12
+ describe: "Enable a previously disabled skill",
13
+ builder: (yargs) => yargs
14
+ .positional("name", {
15
+ type: "string",
16
+ describe: "Name of the skill to enable",
17
+ demandOption: true,
18
+ })
19
+ .option("global", {
20
+ type: "boolean",
21
+ describe: "Use global ~/.axm/ workspace",
22
+ default: false,
23
+ })
24
+ .option("yes", {
25
+ alias: "y",
26
+ type: "boolean",
27
+ describe: "Skip all confirmation prompts",
28
+ default: false,
29
+ })
30
+ .option("preview", {
31
+ type: "boolean",
32
+ describe: "Display plan without applying",
33
+ default: false,
34
+ })
35
+ .option("non-interactive", {
36
+ type: "boolean",
37
+ describe: "Disable all interactive prompts",
38
+ })
39
+ .example("$0 skills enable my-skill", "Enable a previously disabled skill")
40
+ .example("$0 skills enable my-skill --preview", "Preview what would be enabled"),
41
+ handler: async (argv) => {
42
+ await run(handleEnable({
43
+ name: argv.name,
44
+ yes: argv.yes,
45
+ }), {
46
+ workspace: {
47
+ global: argv.global,
48
+ yes: argv.yes,
49
+ nonInteractive: Option.fromNullable(argv["non-interactive"]),
50
+ preview: argv.preview,
51
+ agents: Option.none(),
52
+ },
53
+ });
54
+ },
55
+ };
56
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/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;AAU5C,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAAyC;IACjE,OAAO,EAAE,eAAe;IACxB,QAAQ,EAAE,oCAAoC;IAC9C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,MAAM,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,6BAA6B;QACvC,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,8BAA8B;QACxC,OAAO,EAAE,KAAK;KACf,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,+BAA+B;QACzC,OAAO,EAAE,KAAK;KACf,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE;QACzB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,iCAAiC;KAC5C,CAAC;SACD,OAAO,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;SAC1E,OAAO,CAAC,qCAAqC,EAAE,+BAA+B,CAAC;IACpF,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,IAAI,CAAC,MAAM;gBACnB,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,26 @@
1
+ /**
2
+ * Enable skill executor — re-installs files for a previously disabled skill.
3
+ *
4
+ * Pipeline: read state → resolve source → copy to canonical → create symlinks →
5
+ * update lock agents → update settings entry.
6
+ *
7
+ * @experimental This API is unstable and may change without notice.
8
+ */
9
+ import * as FileSystem from "@effect/platform/FileSystem";
10
+ import * as Path from "@effect/platform/Path";
11
+ import { Log } from "../../../tui/index.js";
12
+ import type { OperationHandler } from "../../../workspace/apply-plan.js";
13
+ import { Workspace } from "../../../workspace/service.js";
14
+ import type { EnableSkillOperation } from "../operations.js";
15
+ /**
16
+ * Enable-skill operation handler.
17
+ *
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
21
+ * 4. Create agent symlinks (concurrent)
22
+ * 5. Update lock agents
23
+ * 6. Update settings entry to set enabled: true
24
+ */
25
+ export declare const enableSkill: OperationHandler<EnableSkillOperation, FileSystem.FileSystem | Path.Path | Workspace | Log>;
26
+ //# sourceMappingURL=enable-skill.d.ts.map
@@ -0,0 +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,CAyIjD,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Enable skill executor — re-installs files for a previously disabled skill.
3
+ *
4
+ * Pipeline: read state → resolve source → copy to canonical → create symlinks →
5
+ * update lock agents → update settings entry.
6
+ *
7
+ * @experimental This API is unstable and may change without notice.
8
+ */
9
+ import * as FileSystem from "@effect/platform/FileSystem";
10
+ import * as Path from "@effect/platform/Path";
11
+ import * as Effect from "effect/Effect";
12
+ import * as Option from "effect/Option";
13
+ import { getAgentById } from "../../../agents/registry.js";
14
+ import { makeCliError } from "../../../cli-error/index.js";
15
+ import { Log } from "../../../tui/index.js";
16
+ import { createSymlink } from "../../../utils/create-symlink.js";
17
+ import { Workspace } from "../../../workspace/service.js";
18
+ import { copySkillDirectory } from "../copy-skill-directory.js";
19
+ import { CANONICAL_SKILLS_DIR, REGISTRY_EXTENSIONS_DIR } from "../constants.js";
20
+ import { removeIfExists } from "../fs-helpers.js";
21
+ import { sanitizeName } from "../install/skill-utils.js";
22
+ // -----------------------------------------------------------------------------
23
+ // Public API
24
+ // -----------------------------------------------------------------------------
25
+ /**
26
+ * Enable-skill operation handler.
27
+ *
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
31
+ * 4. Create agent symlinks (concurrent)
32
+ * 5. Update lock agents
33
+ * 6. Update settings entry to set enabled: true
34
+ */
35
+ export const enableSkill = (op) => Effect.gen(function* () {
36
+ const fs = yield* FileSystem.FileSystem;
37
+ const path = yield* Path.Path;
38
+ const ws = yield* Workspace;
39
+ const axmDir = ws.path;
40
+ const base = path.dirname(axmDir);
41
+ const sanitizedName = sanitizeName(op.args.skillName);
42
+ // 1. Read workspace state
43
+ 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)) {
50
+ return yield* makeCliError({
51
+ code: "ENABLE_SKILL_NOT_FOUND",
52
+ what: `Lock entry for "${op.args.skillName}" not found in lockfile`,
53
+ });
54
+ }
55
+ const lockEntry = lockEntryOption.value;
56
+ // 2. Determine canonical path based on source type
57
+ const isRegistry = lockEntry.type === "registry";
58
+ const registryScope = isRegistry && "scope" in lockEntry ? lockEntry.scope : undefined;
59
+ const canonicalPath = isRegistry
60
+ ? path.join(base, REGISTRY_EXTENSIONS_DIR, registryScope, "skills", sanitizedName)
61
+ : path.join(base, CANONICAL_SKILLS_DIR, sanitizedName);
62
+ const contentPath = isRegistry ? path.join(canonicalPath, "src") : canonicalPath;
63
+ // 3. Resolve source and copy to canonical location
64
+ // For local sources, the lock entry path is the source repo root;
65
+ // the individual skill lives at repo-root/skill-name
66
+ if (lockEntry.type === "local") {
67
+ const sourcePath = path.join(lockEntry.path, sanitizedName);
68
+ // Pre-clean canonical location
69
+ yield* removeIfExists(fs, canonicalPath);
70
+ yield* copySkillDirectory(sourcePath, contentPath).pipe(Effect.mapError((e) => makeCliError({
71
+ code: "ENABLE_SKILL_COPY_FAILED",
72
+ what: `Failed to copy skill files to ${contentPath}`,
73
+ cause: e,
74
+ })));
75
+ }
76
+ else if (isRegistry) {
77
+ // For registry sources, the canonical path should already exist from prior install
78
+ // or needs re-resolution through SourceProviders (not available in this handler).
79
+ // If files don't exist, fail with a helpful message.
80
+ const exists = yield* fs
81
+ .exists(canonicalPath)
82
+ .pipe(Effect.catchAll(() => Effect.succeed(false)));
83
+ if (!exists) {
84
+ return yield* makeCliError({
85
+ code: "ENABLE_SKILL_MISSING_FILES",
86
+ what: `Skill files for "${op.args.skillName}" not found at ${canonicalPath}`,
87
+ howToFix: "Try reinstalling the skill with `axm skills install`",
88
+ });
89
+ }
90
+ }
91
+ else {
92
+ // For git-based sources (github, gitlab, etc.), use the path from lock entry
93
+ const sourcePath = "path" in lockEntry ? lockEntry.path : undefined;
94
+ if (sourcePath) {
95
+ yield* removeIfExists(fs, canonicalPath);
96
+ yield* copySkillDirectory(sourcePath, contentPath).pipe(Effect.mapError((e) => makeCliError({
97
+ code: "ENABLE_SKILL_COPY_FAILED",
98
+ what: `Failed to copy skill files to ${contentPath}`,
99
+ cause: e,
100
+ })));
101
+ }
102
+ else {
103
+ // Git sources without a local path need re-resolution
104
+ return yield* makeCliError({
105
+ code: "ENABLE_SKILL_MISSING_FILES",
106
+ what: `Cannot re-resolve source for "${op.args.skillName}"`,
107
+ howToFix: "Try reinstalling the skill with `axm skills install`",
108
+ });
109
+ }
110
+ }
111
+ // 4. Create agent symlinks (concurrent)
112
+ yield* Effect.forEach(configuredAgents, (agentId) => {
113
+ const maybeAgent = getAgentById(agentId);
114
+ if (Option.isNone(maybeAgent))
115
+ return Effect.void;
116
+ const agent = maybeAgent.value;
117
+ // Self-reference detection
118
+ const agentSkillsDir = path.resolve(base, agent.skills.dir);
119
+ const canonicalSkillsDir = path.resolve(base, CANONICAL_SKILLS_DIR);
120
+ if (agentSkillsDir === canonicalSkillsDir)
121
+ return Effect.void;
122
+ const agentSkillPath = path.join(base, agent.skills.dir, sanitizedName);
123
+ return createSymlink({ target: contentPath, link: agentSkillPath }).pipe(Effect.catchAll(() => copySkillDirectory(contentPath, agentSkillPath).pipe(Effect.catchAll(() => Effect.void))));
124
+ }, { concurrency: "unbounded" });
125
+ // 5. Update lock agents
126
+ yield* ws
127
+ .updateLockEntryAgents(op.args.skillName, configuredAgents)
128
+ .pipe(Effect.catchAll(() => Effect.void));
129
+ // 6. Update settings entry to set enabled: true
130
+ yield* ws
131
+ .updateSkillEntry(op.args.skillName, (e) => ({ ...e, enabled: true }))
132
+ .pipe(Effect.catchAll(() => Effect.void));
133
+ return {
134
+ result: "success",
135
+ message: `Enabled ${op.args.skillName}`,
136
+ };
137
+ });
138
+ //# sourceMappingURL=enable-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-skill.js","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/enable/enable-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Enable command handler - Effect-based orchestration for `axm skills enable`.
3
+ *
4
+ * Validates skill state then builds and resolves a single-step plan.
5
+ *
6
+ * @experimental This API is unstable and may change without notice.
7
+ */
8
+ import * as Effect from "effect/Effect";
9
+ import { Log } from "../../../tui/index.js";
10
+ import { Workspace } from "../../../workspace/index.js";
11
+ export interface EnableHandlerArgs {
12
+ /** Name of the skill to enable */
13
+ readonly name: string;
14
+ /** Skip confirmations */
15
+ readonly yes: boolean;
16
+ }
17
+ export declare const handleEnable: (args: EnableHandlerArgs) => Effect.Effect<undefined, 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>;
18
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Enable command handler - Effect-based orchestration for `axm skills enable`.
3
+ *
4
+ * Validates skill state then builds and resolves a single-step plan.
5
+ *
6
+ * @experimental This API is unstable and may change without notice.
7
+ */
8
+ import * as Effect from "effect/Effect";
9
+ import * as Option from "effect/Option";
10
+ import { makeCliError } from "../../../cli-error/index.js";
11
+ import { Log } from "../../../tui/index.js";
12
+ import { Workspace } from "../../../workspace/index.js";
13
+ import { enableSkill } from "./enable-skill.js";
14
+ // -----------------------------------------------------------------------------
15
+ // Main Handler
16
+ // -----------------------------------------------------------------------------
17
+ export const handleEnable = (args) => Effect.gen(function* () {
18
+ const ws = yield* Workspace;
19
+ const log = yield* Log;
20
+ yield* log.info("axm skills enable");
21
+ // Load configured skills
22
+ const configuredSkills = yield* ws.getConfiguredSkills();
23
+ const entry = configuredSkills[args.name];
24
+ // Validate: skill exists
25
+ 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
+ });
31
+ }
32
+ // Validate: skill is managed
33
+ if (!entry.managed) {
34
+ return yield* makeCliError({
35
+ code: "SKILL_NOT_MANAGED",
36
+ what: `Cannot enable unmanaged skill '${args.name}'`,
37
+ howToFix: "Only managed skills (installed via axm) can be enabled/disabled",
38
+ });
39
+ }
40
+ // Validate: skill is currently disabled
41
+ if (entry.enabled) {
42
+ yield* log.info(`Skill '${args.name}' is already enabled`);
43
+ yield* log.success("Nothing to do.");
44
+ return;
45
+ }
46
+ // Build operation
47
+ const op = {
48
+ name: "enable-skill",
49
+ args: { skillName: args.name },
50
+ };
51
+ // Build single-step plan
52
+ const plan = {
53
+ name: "Enable skill",
54
+ description: Option.some(`Enable ${args.name}`),
55
+ jobs: [
56
+ {
57
+ concurrency: 1,
58
+ steps: [
59
+ {
60
+ _tag: "PlannedJobStep",
61
+ operation: op,
62
+ expectedResult: { result: "success", message: `Enabled ${args.name}` },
63
+ label: args.name,
64
+ },
65
+ ],
66
+ },
67
+ ],
68
+ };
69
+ yield* ws.resolvePlan(plan, { "enable-skill": enableSkill });
70
+ yield* log.success("Done");
71
+ }).pipe(Effect.withSpan("Enable.handle"));
72
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +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"}
@@ -29,21 +29,12 @@ export interface ForkHandlerArgs {
29
29
  /** Skip confirmations. */
30
30
  readonly yes: boolean;
31
31
  }
32
- declare const ForkError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
33
- readonly _tag: "ForkError";
34
- } & Readonly<A>;
35
- export declare class ForkError extends ForkError_base<{
36
- readonly message: string;
37
- readonly cause: unknown;
38
- }> {
39
- }
40
32
  /**
41
33
  * Handles the `axm skills fork` command.
42
34
  */
43
- export declare const handleFork: (args: ForkHandlerArgs) => Effect.Effect<undefined, import("../../../tui/errors.js").PromptError | import("../../../tui/errors.js").PromptCancelled | import("../../../settings/settings.js").SettingsError | import("../../../sources/provider.js").RegistryNotConfiguredError | ForkError, import("../../../tui/index.js").Confirm | Spinner | import("../../../tui/index.js").TextInput | import("effect/Scope").Scope | SourceProviders | import("../../../workspace/apply-plan.js").ExecutionContext<{
44
- "copy-skill": import("../../../workspace/apply-plan.js").OperationHandler<CopySkillOperation, Path.Path | import("@effect/platform/FileSystem").FileSystem | Workspace>;
45
- "publish-skill": import("../../../workspace/apply-plan.js").OperationHandler<PublishSkillOperation, Path.Path | import("@effect/platform/FileSystem").FileSystem | Workspace>;
46
- "install-skill": import("../../../workspace/apply-plan.js").OperationHandler<InstallSkillOperation, Log | Path.Path | import("@effect/platform/FileSystem").FileSystem | Workspace>;
35
+ export declare const handleFork: (args: ForkHandlerArgs) => Effect.Effect<undefined, import("../../../tui/errors.js").PromptCancelled | import("../../../cli-error/cli-error.js").CliError, import("../../../tui/index.js").Confirm | Spinner | import("../../../tui/index.js").TextInput | import("effect/Scope").Scope | SourceProviders | import("../../../workspace/apply-plan.js").ExecutionContext<{
36
+ "copy-skill": import("../../../workspace/apply-plan.js").OperationHandler<CopySkillOperation, import("@effect/platform/FileSystem").FileSystem | Path.Path | Workspace>;
37
+ "publish-skill": import("../../../workspace/apply-plan.js").OperationHandler<PublishSkillOperation, import("@effect/platform/FileSystem").FileSystem | Path.Path | Workspace>;
38
+ "install-skill": import("../../../workspace/apply-plan.js").OperationHandler<InstallSkillOperation, Log | import("@effect/platform/FileSystem").FileSystem | Path.Path | Workspace>;
47
39
  }>>;
48
- export {};
49
40
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/fork/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAGL,eAAe,EAEhB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAErB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;;;;AAQD,qBAAa,SAAU,SAAQ,eAA8B;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG;AAML;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,eAAe;;;;GAqM5C,CAAC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/cli-commands/skills/fork/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAGL,eAAe,EAEhB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAErB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAQD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,eAAe;;;;GAqMP,CAAC"}
@@ -15,22 +15,16 @@
15
15
  import * as Path from "@effect/platform/Path";
16
16
  import { resolveSource, printSourceInput, SourceProviders, registryGuard, } from "../../../sources/index.js";
17
17
  import * as Array from "effect/Array";
18
- import * as Data from "effect/Data";
19
18
  import * as Effect from "effect/Effect";
20
19
  import * as Option from "effect/Option";
20
+ import { makeCliError } from "../../../cli-error/index.js";
21
21
  import { Log, Spinner } from "../../../tui/index.js";
22
- import { formatError } from "../../../utils/errors.js";
23
22
  import { Workspace as Workspace } from "../../../workspace/index.js";
24
23
  import { copySkill } from "../copy-skill.js";
25
24
  import { installSkill } from "../install/install-skill.js";
26
25
  import { publishSkill } from "../publish-skill.js";
27
26
  import { expandGlobs } from "../../../skills/index.js";
28
27
  // -----------------------------------------------------------------------------
29
- // Errors
30
- // -----------------------------------------------------------------------------
31
- export class ForkError extends Data.TaggedError("ForkError") {
32
- }
33
- // -----------------------------------------------------------------------------
34
28
  // Main Handler
35
29
  // -----------------------------------------------------------------------------
36
30
  /**
@@ -47,29 +41,39 @@ export const handleFork = (args) => Effect.gen(function* () {
47
41
  // Step 1: Registry guard
48
42
  yield* registryGuard;
49
43
  // Step 2: Resolve scope
50
- const scope = yield* ws.getConfiguredScope().pipe(Effect.mapError((e) => new ForkError({
51
- message: `Failed to resolve scope: ${e._tag}`,
44
+ const scope = yield* ws.getConfiguredScope().pipe(Effect.mapError((e) => makeCliError({
45
+ code: "SCOPE_RESOLUTION_FAILED",
46
+ what: `Failed to resolve scope: ${e._tag}`,
47
+ howToFix: "Configure a scope in your settings with `axm init`.",
52
48
  cause: e,
53
49
  })));
54
50
  // Step 3: Parse source and discover skills
55
51
  const handle = yield* spinnerSvc.start("Resolving skills...");
56
- const source = yield* resolveSource(args.source).pipe(Effect.mapError((error) => new ForkError({
57
- message: formatError(`Invalid source: ${error.message}`, [`Provided: ${args.source}`], "Valid formats: installed skill name, local path, github:owner/repo"),
52
+ const source = yield* resolveSource(args.source).pipe(Effect.mapError((error) => makeCliError({
53
+ code: "INVALID_SOURCE",
54
+ what: `Invalid source: ${error.message}`,
55
+ details: [`Provided: ${args.source}`],
56
+ howToFix: "Valid formats: installed skill name, local path, github:owner/repo",
58
57
  cause: error,
59
58
  })), Effect.tapError(() => handle.stop("Failed")));
60
59
  const allRefs = yield* sources
61
60
  .resolveExtension(source, { names: [], agents: [], type: "skill" })
62
- .pipe(Effect.mapError((error) => new ForkError({
63
- message: formatError(`Failed to discover skills: ${error.message}`, [`Source: ${printSourceInput(source)}`], "Verify the source path contains directories with SKILL.md files."),
61
+ .pipe(Effect.mapError((error) => makeCliError({
62
+ code: "DISCOVER_FAILED",
63
+ what: `Failed to discover skills: ${error.message}`,
64
+ details: [`Source: ${printSourceInput(source)}`],
65
+ howToFix: "Verify the source path contains directories with SKILL.md files.",
64
66
  cause: error,
65
67
  })), Effect.tapError(() => handle.stop("Failed")));
66
68
  const discoveredSkills = Array.filter(allRefs, (ref) => ref.type === "skill");
67
69
  if (discoveredSkills.length === 0) {
68
70
  yield* handle.stop("No skills found");
69
- return yield* new ForkError({
70
- message: formatError("No skills found in source", [`Source: ${printSourceInput(source)}`], "Verify the source path contains directories with SKILL.md files."),
71
- cause: undefined,
72
- });
71
+ return yield* Effect.fail(makeCliError({
72
+ code: "NO_SKILLS_FOUND",
73
+ what: "No skills found in source",
74
+ details: [`Source: ${printSourceInput(source)}`],
75
+ howToFix: "Verify the source path contains directories with SKILL.md files.",
76
+ }));
73
77
  }
74
78
  // Step 4: Filter by --skill globs (if provided)
75
79
  const filtered = args.skills.length > 0
@@ -86,24 +90,28 @@ export const handleFork = (args) => Effect.gen(function* () {
86
90
  if (args.skills.length > 0 && filtered.length === 0) {
87
91
  yield* handle.stop("No matches");
88
92
  const allNames = Array.map(discoveredSkills, (r) => r.skill.name);
89
- return yield* new ForkError({
90
- message: formatError("No skills matched the given patterns", [`Patterns: ${args.skills.join(", ")}`, `Available: ${allNames.join(", ")}`], "Check skill names with `axm skills install --list <source>`."),
91
- cause: undefined,
92
- });
93
+ return yield* Effect.fail(makeCliError({
94
+ code: "NO_SKILLS_MATCHED",
95
+ what: "No skills matched the given patterns",
96
+ details: [`Patterns: ${args.skills.join(", ")}`, `Available: ${allNames.join(", ")}`],
97
+ howToFix: "Check skill names with `axm skills install --list <source>`.",
98
+ }));
93
99
  }
94
100
  yield* handle.stop(`Found ${filtered.length} skill(s)`);
95
101
  // Step 5: Get agents from workspace
96
102
  const agentIds = yield* ws.getConfiguredAgents();
97
103
  // Step 6: Determine first registry source name for publishing
98
- const registrySources = yield* ws.getConfiguredRegistrySources(Option.none()).pipe(Effect.mapError((e) => new ForkError({
99
- message: `Failed to get registry sources: ${e._tag}`,
104
+ const registrySources = yield* ws.getConfiguredRegistrySources(Option.none()).pipe(Effect.mapError((e) => makeCliError({
105
+ code: "REGISTRY_SOURCES_FAILED",
106
+ what: `Failed to get registry sources: ${e._tag}`,
100
107
  cause: e,
101
108
  })));
102
109
  if (registrySources.length === 0) {
103
- return yield* new ForkError({
104
- message: "No registry sources configured. Run the registry guard first.",
105
- cause: undefined,
106
- });
110
+ return yield* Effect.fail(makeCliError({
111
+ code: "NO_REGISTRY_CONFIGURED",
112
+ what: "No registry sources configured",
113
+ howToFix: "Run the registry guard first.",
114
+ }));
107
115
  }
108
116
  const registryName = registrySources[0].name;
109
117
  // Step 7: Build plan — fork + publish + install per skill (3 sequential ops)
@@ -130,7 +138,7 @@ export const handleFork = (args) => Effect.gen(function* () {
130
138
  args: {
131
139
  source: {
132
140
  type: "local",
133
- path: ref.location.replace("file://", ""),
141
+ path: ref.location.replace(/^file:\/\//, ""),
134
142
  },
135
143
  targetName,
136
144
  location: ref.location,
@@ -176,5 +184,5 @@ export const handleFork = (args) => Effect.gen(function* () {
176
184
  "install-skill": installSkill,
177
185
  });
178
186
  yield* log.success("Done");
179
- });
187
+ }).pipe(Effect.withSpan("Fork.handle"));
180
188
  //# sourceMappingURL=handler.js.map