@skillsmith/mcp-server 0.4.13 → 0.5.1

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 (407) hide show
  1. package/CHANGELOG.md +37 -4
  2. package/README.md +89 -13
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/src/__tests__/compare.test.js +5 -5
  5. package/dist/src/__tests__/compare.test.js.map +1 -1
  6. package/dist/src/__tests__/context-listeners.test.d.ts +12 -0
  7. package/dist/src/__tests__/context-listeners.test.d.ts.map +1 -0
  8. package/dist/src/__tests__/context-listeners.test.js +87 -0
  9. package/dist/src/__tests__/context-listeners.test.js.map +1 -0
  10. package/dist/src/__tests__/context.test.js +84 -82
  11. package/dist/src/__tests__/context.test.js.map +1 -1
  12. package/dist/src/__tests__/get-skill.api-path.test.js +21 -14
  13. package/dist/src/__tests__/get-skill.api-path.test.js.map +1 -1
  14. package/dist/src/__tests__/get-skill.test.js +5 -5
  15. package/dist/src/__tests__/get-skill.test.js.map +1 -1
  16. package/dist/src/__tests__/index-local.test.js +5 -5
  17. package/dist/src/__tests__/index-local.test.js.map +1 -1
  18. package/dist/src/__tests__/recommend-online-path.test.js +5 -5
  19. package/dist/src/__tests__/recommend-online-path.test.js.map +1 -1
  20. package/dist/src/__tests__/recommend.test.js +9 -9
  21. package/dist/src/__tests__/recommend.test.js.map +1 -1
  22. package/dist/src/__tests__/search-compatible-with.test.d.ts +10 -0
  23. package/dist/src/__tests__/search-compatible-with.test.d.ts.map +1 -0
  24. package/dist/src/__tests__/search-compatible-with.test.js +96 -0
  25. package/dist/src/__tests__/search-compatible-with.test.js.map +1 -0
  26. package/dist/src/__tests__/search-online-path.test.js +5 -5
  27. package/dist/src/__tests__/search-online-path.test.js.map +1 -1
  28. package/dist/src/__tests__/search.test.js +16 -101
  29. package/dist/src/__tests__/search.test.js.map +1 -1
  30. package/dist/src/__tests__/test-utils.d.ts +18 -3
  31. package/dist/src/__tests__/test-utils.d.ts.map +1 -1
  32. package/dist/src/__tests__/test-utils.js +24 -7
  33. package/dist/src/__tests__/test-utils.js.map +1 -1
  34. package/dist/src/audit/audit-history.d.ts +77 -0
  35. package/dist/src/audit/audit-history.d.ts.map +1 -0
  36. package/dist/src/audit/audit-history.js +98 -0
  37. package/dist/src/audit/audit-history.js.map +1 -0
  38. package/dist/src/audit/audit-report-writer.d.ts +82 -0
  39. package/dist/src/audit/audit-report-writer.d.ts.map +1 -0
  40. package/dist/src/audit/audit-report-writer.js +241 -0
  41. package/dist/src/audit/audit-report-writer.js.map +1 -0
  42. package/dist/src/audit/audit-suggestions.d.ts +52 -0
  43. package/dist/src/audit/audit-suggestions.d.ts.map +1 -0
  44. package/dist/src/audit/audit-suggestions.js +90 -0
  45. package/dist/src/audit/audit-suggestions.js.map +1 -0
  46. package/dist/src/audit/bootstrap-unmanaged.d.ts +66 -0
  47. package/dist/src/audit/bootstrap-unmanaged.d.ts.map +1 -0
  48. package/dist/src/audit/bootstrap-unmanaged.js +91 -0
  49. package/dist/src/audit/bootstrap-unmanaged.js.map +1 -0
  50. package/dist/src/audit/collision-detector.d.ts +72 -0
  51. package/dist/src/audit/collision-detector.d.ts.map +1 -0
  52. package/dist/src/audit/collision-detector.helpers.d.ts +63 -0
  53. package/dist/src/audit/collision-detector.helpers.d.ts.map +1 -0
  54. package/dist/src/audit/collision-detector.helpers.js +141 -0
  55. package/dist/src/audit/collision-detector.helpers.js.map +1 -0
  56. package/dist/src/audit/collision-detector.js +172 -0
  57. package/dist/src/audit/collision-detector.js.map +1 -0
  58. package/dist/src/audit/collision-detector.semantic.helpers.d.ts +49 -0
  59. package/dist/src/audit/collision-detector.semantic.helpers.d.ts.map +1 -0
  60. package/dist/src/audit/collision-detector.semantic.helpers.js +121 -0
  61. package/dist/src/audit/collision-detector.semantic.helpers.js.map +1 -0
  62. package/dist/src/audit/collision-detector.types.d.ts +70 -0
  63. package/dist/src/audit/collision-detector.types.d.ts.map +1 -0
  64. package/dist/src/audit/collision-detector.types.js +9 -0
  65. package/dist/src/audit/collision-detector.types.js.map +1 -0
  66. package/dist/src/audit/edit-applier.d.ts +64 -0
  67. package/dist/src/audit/edit-applier.d.ts.map +1 -0
  68. package/dist/src/audit/edit-applier.js +233 -0
  69. package/dist/src/audit/edit-applier.js.map +1 -0
  70. package/dist/src/audit/edit-applier.types.d.ts +72 -0
  71. package/dist/src/audit/edit-applier.types.d.ts.map +1 -0
  72. package/dist/src/audit/edit-applier.types.js +13 -0
  73. package/dist/src/audit/edit-applier.types.js.map +1 -0
  74. package/dist/src/audit/edit-suggester.d.ts +63 -0
  75. package/dist/src/audit/edit-suggester.d.ts.map +1 -0
  76. package/dist/src/audit/edit-suggester.js +326 -0
  77. package/dist/src/audit/edit-suggester.js.map +1 -0
  78. package/dist/src/audit/edit-suggester.types.d.ts +148 -0
  79. package/dist/src/audit/edit-suggester.types.d.ts.map +1 -0
  80. package/dist/src/audit/edit-suggester.types.js +17 -0
  81. package/dist/src/audit/edit-suggester.types.js.map +1 -0
  82. package/dist/src/audit/framework-adapter.d.ts +54 -0
  83. package/dist/src/audit/framework-adapter.d.ts.map +1 -0
  84. package/dist/src/audit/framework-adapter.js +251 -0
  85. package/dist/src/audit/framework-adapter.js.map +1 -0
  86. package/dist/src/audit/framework-adapter.types.d.ts +162 -0
  87. package/dist/src/audit/framework-adapter.types.d.ts.map +1 -0
  88. package/dist/src/audit/framework-adapter.types.js +31 -0
  89. package/dist/src/audit/framework-adapter.types.js.map +1 -0
  90. package/dist/src/audit/index.d.ts +46 -0
  91. package/dist/src/audit/index.d.ts.map +1 -0
  92. package/dist/src/audit/index.js +44 -0
  93. package/dist/src/audit/index.js.map +1 -0
  94. package/dist/src/audit/install-preflight.d.ts +99 -0
  95. package/dist/src/audit/install-preflight.d.ts.map +1 -0
  96. package/dist/src/audit/install-preflight.js +320 -0
  97. package/dist/src/audit/install-preflight.js.map +1 -0
  98. package/dist/src/audit/namespace-audit.types.d.ts +100 -0
  99. package/dist/src/audit/namespace-audit.types.d.ts.map +1 -0
  100. package/dist/src/audit/namespace-audit.types.js +20 -0
  101. package/dist/src/audit/namespace-audit.types.js.map +1 -0
  102. package/dist/src/audit/namespace-overrides.d.ts +79 -0
  103. package/dist/src/audit/namespace-overrides.d.ts.map +1 -0
  104. package/dist/src/audit/namespace-overrides.js +228 -0
  105. package/dist/src/audit/namespace-overrides.js.map +1 -0
  106. package/dist/src/audit/namespace-overrides.types.d.ts +115 -0
  107. package/dist/src/audit/namespace-overrides.types.d.ts.map +1 -0
  108. package/dist/src/audit/namespace-overrides.types.js +26 -0
  109. package/dist/src/audit/namespace-overrides.types.js.map +1 -0
  110. package/dist/src/audit/rename-engine.apply-paths.d.ts +54 -0
  111. package/dist/src/audit/rename-engine.apply-paths.d.ts.map +1 -0
  112. package/dist/src/audit/rename-engine.apply-paths.js +126 -0
  113. package/dist/src/audit/rename-engine.apply-paths.js.map +1 -0
  114. package/dist/src/audit/rename-engine.d.ts +59 -0
  115. package/dist/src/audit/rename-engine.d.ts.map +1 -0
  116. package/dist/src/audit/rename-engine.helpers.d.ts +63 -0
  117. package/dist/src/audit/rename-engine.helpers.d.ts.map +1 -0
  118. package/dist/src/audit/rename-engine.helpers.js +224 -0
  119. package/dist/src/audit/rename-engine.helpers.js.map +1 -0
  120. package/dist/src/audit/rename-engine.js +393 -0
  121. package/dist/src/audit/rename-engine.js.map +1 -0
  122. package/dist/src/audit/rename-engine.types.d.ts +157 -0
  123. package/dist/src/audit/rename-engine.types.d.ts.map +1 -0
  124. package/dist/src/audit/rename-engine.types.js +15 -0
  125. package/dist/src/audit/rename-engine.types.js.map +1 -0
  126. package/dist/src/audit/run-inventory-audit.d.ts +95 -0
  127. package/dist/src/audit/run-inventory-audit.d.ts.map +1 -0
  128. package/dist/src/audit/run-inventory-audit.js +245 -0
  129. package/dist/src/audit/run-inventory-audit.js.map +1 -0
  130. package/dist/src/audit/suggestion-chain.d.ts +89 -0
  131. package/dist/src/audit/suggestion-chain.d.ts.map +1 -0
  132. package/dist/src/audit/suggestion-chain.js +121 -0
  133. package/dist/src/audit/suggestion-chain.js.map +1 -0
  134. package/dist/src/audit-tool-dispatch.d.ts +61 -0
  135. package/dist/src/audit-tool-dispatch.d.ts.map +1 -0
  136. package/dist/src/audit-tool-dispatch.js +114 -0
  137. package/dist/src/audit-tool-dispatch.js.map +1 -0
  138. package/dist/src/index.js +34 -2
  139. package/dist/src/index.js.map +1 -1
  140. package/dist/src/indexer/LocalIndexer.d.ts +8 -1
  141. package/dist/src/indexer/LocalIndexer.d.ts.map +1 -1
  142. package/dist/src/indexer/LocalIndexer.js +42 -38
  143. package/dist/src/indexer/LocalIndexer.js.map +1 -1
  144. package/dist/src/middleware/__tests__/license.gate.test.js +21 -2
  145. package/dist/src/middleware/__tests__/license.gate.test.js.map +1 -1
  146. package/dist/src/middleware/license.gate.d.ts +14 -0
  147. package/dist/src/middleware/license.gate.d.ts.map +1 -1
  148. package/dist/src/middleware/license.gate.js +52 -1
  149. package/dist/src/middleware/license.gate.js.map +1 -1
  150. package/dist/src/onboarding/install-assets.d.ts.map +1 -1
  151. package/dist/src/onboarding/install-assets.js +11 -5
  152. package/dist/src/onboarding/install-assets.js.map +1 -1
  153. package/dist/src/tool-dispatch.d.ts.map +1 -1
  154. package/dist/src/tool-dispatch.js +6 -4
  155. package/dist/src/tool-dispatch.js.map +1 -1
  156. package/dist/src/tools/analytics.service.test.js +6 -4
  157. package/dist/src/tools/analytics.service.test.js.map +1 -1
  158. package/dist/src/tools/apply-namespace-rename.d.ts +71 -0
  159. package/dist/src/tools/apply-namespace-rename.d.ts.map +1 -0
  160. package/dist/src/tools/apply-namespace-rename.js +137 -0
  161. package/dist/src/tools/apply-namespace-rename.js.map +1 -0
  162. package/dist/src/tools/apply-namespace-rename.types.d.ts +46 -0
  163. package/dist/src/tools/apply-namespace-rename.types.d.ts.map +1 -0
  164. package/dist/src/tools/apply-namespace-rename.types.js +9 -0
  165. package/dist/src/tools/apply-namespace-rename.types.js.map +1 -0
  166. package/dist/src/tools/apply-recommended-edit.d.ts +50 -0
  167. package/dist/src/tools/apply-recommended-edit.d.ts.map +1 -0
  168. package/dist/src/tools/apply-recommended-edit.js +112 -0
  169. package/dist/src/tools/apply-recommended-edit.js.map +1 -0
  170. package/dist/src/tools/apply-recommended-edit.types.d.ts +49 -0
  171. package/dist/src/tools/apply-recommended-edit.types.d.ts.map +1 -0
  172. package/dist/src/tools/apply-recommended-edit.types.js +14 -0
  173. package/dist/src/tools/apply-recommended-edit.types.js.map +1 -0
  174. package/dist/src/tools/audit-tools.d.ts +4 -4
  175. package/dist/src/tools/compare.types.js +1 -1
  176. package/dist/src/tools/compare.types.js.map +1 -1
  177. package/dist/src/tools/compliance-tools.service.test.js +6 -4
  178. package/dist/src/tools/compliance-tools.service.test.js.map +1 -1
  179. package/dist/src/tools/get-skill.d.ts.map +1 -1
  180. package/dist/src/tools/get-skill.js +1 -1
  181. package/dist/src/tools/get-skill.js.map +1 -1
  182. package/dist/src/tools/install.backup-gc.d.ts +61 -0
  183. package/dist/src/tools/install.backup-gc.d.ts.map +1 -0
  184. package/dist/src/tools/install.backup-gc.js +166 -0
  185. package/dist/src/tools/install.backup-gc.js.map +1 -0
  186. package/dist/src/tools/install.conflict-helpers.d.ts +29 -2
  187. package/dist/src/tools/install.conflict-helpers.d.ts.map +1 -1
  188. package/dist/src/tools/install.conflict-helpers.js +37 -4
  189. package/dist/src/tools/install.conflict-helpers.js.map +1 -1
  190. package/dist/src/tools/install.d.ts +15 -1
  191. package/dist/src/tools/install.d.ts.map +1 -1
  192. package/dist/src/tools/install.js +168 -8
  193. package/dist/src/tools/install.js.map +1 -1
  194. package/dist/src/tools/install.ledger-replay.d.ts +52 -0
  195. package/dist/src/tools/install.ledger-replay.d.ts.map +1 -0
  196. package/dist/src/tools/install.ledger-replay.js +88 -0
  197. package/dist/src/tools/install.ledger-replay.js.map +1 -0
  198. package/dist/src/tools/install.namespace-gate.d.ts +68 -0
  199. package/dist/src/tools/install.namespace-gate.d.ts.map +1 -0
  200. package/dist/src/tools/install.namespace-gate.js +129 -0
  201. package/dist/src/tools/install.namespace-gate.js.map +1 -0
  202. package/dist/src/tools/install.test.js +136 -1
  203. package/dist/src/tools/install.test.js.map +1 -1
  204. package/dist/src/tools/install.tool.d.ts +17 -0
  205. package/dist/src/tools/install.tool.d.ts.map +1 -1
  206. package/dist/src/tools/install.tool.js +19 -1
  207. package/dist/src/tools/install.tool.js.map +1 -1
  208. package/dist/src/tools/install.types.d.ts +35 -1
  209. package/dist/src/tools/install.types.d.ts.map +1 -1
  210. package/dist/src/tools/install.types.js +24 -2
  211. package/dist/src/tools/install.types.js.map +1 -1
  212. package/dist/src/tools/namespace-audit/telemetry.d.ts +80 -0
  213. package/dist/src/tools/namespace-audit/telemetry.d.ts.map +1 -0
  214. package/dist/src/tools/namespace-audit/telemetry.js +129 -0
  215. package/dist/src/tools/namespace-audit/telemetry.js.map +1 -0
  216. package/dist/src/tools/outdated.test.js +2 -2
  217. package/dist/src/tools/outdated.test.js.map +1 -1
  218. package/dist/src/tools/publish-private.test.js +2 -2
  219. package/dist/src/tools/publish-private.test.js.map +1 -1
  220. package/dist/src/tools/recommend.types.d.ts +2 -2
  221. package/dist/src/tools/recommend.types.js +1 -1
  222. package/dist/src/tools/recommend.types.js.map +1 -1
  223. package/dist/src/tools/search.d.ts +2 -2
  224. package/dist/src/tools/search.d.ts.map +1 -1
  225. package/dist/src/tools/search.js +3 -3
  226. package/dist/src/tools/search.js.map +1 -1
  227. package/dist/src/tools/skill-audit.test.js +2 -2
  228. package/dist/src/tools/skill-audit.test.js.map +1 -1
  229. package/dist/src/tools/skill-diff.d.ts +1 -1
  230. package/dist/src/tools/skill-inventory-audit.d.ts +67 -0
  231. package/dist/src/tools/skill-inventory-audit.d.ts.map +1 -0
  232. package/dist/src/tools/skill-inventory-audit.js +112 -0
  233. package/dist/src/tools/skill-inventory-audit.js.map +1 -0
  234. package/dist/src/tools/skill-inventory-audit.types.d.ts +67 -0
  235. package/dist/src/tools/skill-inventory-audit.types.d.ts.map +1 -0
  236. package/dist/src/tools/skill-inventory-audit.types.js +14 -0
  237. package/dist/src/tools/skill-inventory-audit.types.js.map +1 -0
  238. package/dist/src/tools/skill-pack-audit.d.ts.map +1 -1
  239. package/dist/src/tools/skill-pack-audit.helpers.d.ts.map +1 -1
  240. package/dist/src/tools/skill-pack-audit.helpers.js +15 -2
  241. package/dist/src/tools/skill-pack-audit.helpers.js.map +1 -1
  242. package/dist/src/tools/skill-pack-audit.js +15 -1
  243. package/dist/src/tools/skill-pack-audit.js.map +1 -1
  244. package/dist/src/tools/skill-rescan.d.ts.map +1 -1
  245. package/dist/src/tools/skill-rescan.js +4 -2
  246. package/dist/src/tools/skill-rescan.js.map +1 -1
  247. package/dist/src/tools/suggest.d.ts +2 -2
  248. package/dist/src/tools/uninstall.d.ts +1 -1
  249. package/dist/src/tools/uninstall.d.ts.map +1 -1
  250. package/dist/src/tools/uninstall.js +17 -3
  251. package/dist/src/tools/uninstall.js.map +1 -1
  252. package/dist/src/tools/validate.types.d.ts +10 -1
  253. package/dist/src/tools/validate.types.d.ts.map +1 -1
  254. package/dist/src/tools/validate.types.js +11 -2
  255. package/dist/src/tools/validate.types.js.map +1 -1
  256. package/dist/src/utils/installed-skills.d.ts.map +1 -1
  257. package/dist/src/utils/installed-skills.js +8 -6
  258. package/dist/src/utils/installed-skills.js.map +1 -1
  259. package/dist/src/utils/local-inventory.d.ts +29 -0
  260. package/dist/src/utils/local-inventory.d.ts.map +1 -0
  261. package/dist/src/utils/local-inventory.helpers.d.ts +96 -0
  262. package/dist/src/utils/local-inventory.helpers.d.ts.map +1 -0
  263. package/dist/src/utils/local-inventory.helpers.js +279 -0
  264. package/dist/src/utils/local-inventory.helpers.js.map +1 -0
  265. package/dist/src/utils/local-inventory.js +202 -0
  266. package/dist/src/utils/local-inventory.js.map +1 -0
  267. package/dist/src/utils/local-inventory.types.d.ts +100 -0
  268. package/dist/src/utils/local-inventory.types.d.ts.map +1 -0
  269. package/dist/src/utils/local-inventory.types.js +9 -0
  270. package/dist/src/utils/local-inventory.types.js.map +1 -0
  271. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts +12 -0
  272. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts.map +1 -1
  273. package/dist/src/webhooks/stripe-webhook-endpoint.js +30 -9
  274. package/dist/src/webhooks/stripe-webhook-endpoint.js.map +1 -1
  275. package/dist/src/webhooks/webhook-endpoint.d.ts +13 -0
  276. package/dist/src/webhooks/webhook-endpoint.d.ts.map +1 -1
  277. package/dist/src/webhooks/webhook-endpoint.js +31 -9
  278. package/dist/src/webhooks/webhook-endpoint.js.map +1 -1
  279. package/dist/tests/compare.test.js +5 -5
  280. package/dist/tests/compare.test.js.map +1 -1
  281. package/dist/tests/context-async-listeners.test.d.ts +12 -0
  282. package/dist/tests/context-async-listeners.test.d.ts.map +1 -0
  283. package/dist/tests/context-async-listeners.test.js +62 -0
  284. package/dist/tests/context-async-listeners.test.js.map +1 -0
  285. package/dist/tests/e2e/compare.e2e.test.js +9 -3
  286. package/dist/tests/e2e/compare.e2e.test.js.map +1 -1
  287. package/dist/tests/e2e/install-flow.e2e.test.js +9 -3
  288. package/dist/tests/e2e/install-flow.e2e.test.js.map +1 -1
  289. package/dist/tests/e2e/recommend.e2e.test.js +9 -3
  290. package/dist/tests/e2e/recommend.e2e.test.js.map +1 -1
  291. package/dist/tests/e2e/skill-flow.e2e.test.js +17 -5
  292. package/dist/tests/e2e/skill-flow.e2e.test.js.map +1 -1
  293. package/dist/tests/e2e/suggest.e2e.test.js +11 -3
  294. package/dist/tests/e2e/suggest.e2e.test.js.map +1 -1
  295. package/dist/tests/install-assets.test.d.ts +16 -0
  296. package/dist/tests/install-assets.test.d.ts.map +1 -0
  297. package/dist/tests/install-assets.test.js +72 -0
  298. package/dist/tests/install-assets.test.js.map +1 -0
  299. package/dist/tests/integration/audit-roundtrip.test.d.ts +29 -0
  300. package/dist/tests/integration/audit-roundtrip.test.d.ts.map +1 -0
  301. package/dist/tests/integration/audit-roundtrip.test.js +214 -0
  302. package/dist/tests/integration/audit-roundtrip.test.js.map +1 -0
  303. package/dist/tests/integration/install-namespace.integration.test.d.ts +14 -0
  304. package/dist/tests/integration/install-namespace.integration.test.d.ts.map +1 -0
  305. package/dist/tests/integration/install-namespace.integration.test.js +414 -0
  306. package/dist/tests/integration/install-namespace.integration.test.js.map +1 -0
  307. package/dist/tests/performance/search-performance.test.js +9 -3
  308. package/dist/tests/performance/search-performance.test.js.map +1 -1
  309. package/dist/tests/tool-descriptions.test.d.ts +16 -0
  310. package/dist/tests/tool-descriptions.test.d.ts.map +1 -0
  311. package/dist/tests/tool-descriptions.test.js +63 -0
  312. package/dist/tests/tool-descriptions.test.js.map +1 -0
  313. package/dist/tests/tools.test.js +5 -5
  314. package/dist/tests/tools.test.js.map +1 -1
  315. package/dist/tests/unit/apply-namespace-rename.test.d.ts +24 -0
  316. package/dist/tests/unit/apply-namespace-rename.test.d.ts.map +1 -0
  317. package/dist/tests/unit/apply-namespace-rename.test.js +205 -0
  318. package/dist/tests/unit/apply-namespace-rename.test.js.map +1 -0
  319. package/dist/tests/unit/apply-recommended-edit.test.d.ts +28 -0
  320. package/dist/tests/unit/apply-recommended-edit.test.d.ts.map +1 -0
  321. package/dist/tests/unit/apply-recommended-edit.test.js +229 -0
  322. package/dist/tests/unit/apply-recommended-edit.test.js.map +1 -0
  323. package/dist/tests/unit/audit-history.test.d.ts +11 -0
  324. package/dist/tests/unit/audit-history.test.d.ts.map +1 -0
  325. package/dist/tests/unit/audit-history.test.js +183 -0
  326. package/dist/tests/unit/audit-history.test.js.map +1 -0
  327. package/dist/tests/unit/audit-report-writer.test.d.ts +7 -0
  328. package/dist/tests/unit/audit-report-writer.test.d.ts.map +1 -0
  329. package/dist/tests/unit/audit-report-writer.test.js +249 -0
  330. package/dist/tests/unit/audit-report-writer.test.js.map +1 -0
  331. package/dist/tests/unit/audit-tool-dispatch.test.d.ts +17 -0
  332. package/dist/tests/unit/audit-tool-dispatch.test.d.ts.map +1 -0
  333. package/dist/tests/unit/audit-tool-dispatch.test.js +133 -0
  334. package/dist/tests/unit/audit-tool-dispatch.test.js.map +1 -0
  335. package/dist/tests/unit/collision-detector.semantic.test.d.ts +12 -0
  336. package/dist/tests/unit/collision-detector.semantic.test.d.ts.map +1 -0
  337. package/dist/tests/unit/collision-detector.semantic.test.js +281 -0
  338. package/dist/tests/unit/collision-detector.semantic.test.js.map +1 -0
  339. package/dist/tests/unit/collision-detector.test.d.ts +8 -0
  340. package/dist/tests/unit/collision-detector.test.d.ts.map +1 -0
  341. package/dist/tests/unit/collision-detector.test.js +266 -0
  342. package/dist/tests/unit/collision-detector.test.js.map +1 -0
  343. package/dist/tests/unit/edit-applier.test.d.ts +17 -0
  344. package/dist/tests/unit/edit-applier.test.d.ts.map +1 -0
  345. package/dist/tests/unit/edit-applier.test.js +165 -0
  346. package/dist/tests/unit/edit-applier.test.js.map +1 -0
  347. package/dist/tests/unit/edit-suggester.fixtures.d.ts +38 -0
  348. package/dist/tests/unit/edit-suggester.fixtures.d.ts.map +1 -0
  349. package/dist/tests/unit/edit-suggester.fixtures.js +84 -0
  350. package/dist/tests/unit/edit-suggester.fixtures.js.map +1 -0
  351. package/dist/tests/unit/edit-suggester.test.d.ts +17 -0
  352. package/dist/tests/unit/edit-suggester.test.d.ts.map +1 -0
  353. package/dist/tests/unit/edit-suggester.test.js +356 -0
  354. package/dist/tests/unit/edit-suggester.test.js.map +1 -0
  355. package/dist/tests/unit/framework-adapter.test.d.ts +30 -0
  356. package/dist/tests/unit/framework-adapter.test.d.ts.map +1 -0
  357. package/dist/tests/unit/framework-adapter.test.js +221 -0
  358. package/dist/tests/unit/framework-adapter.test.js.map +1 -0
  359. package/dist/tests/unit/install-preflight.test.d.ts +17 -0
  360. package/dist/tests/unit/install-preflight.test.d.ts.map +1 -0
  361. package/dist/tests/unit/install-preflight.test.js +270 -0
  362. package/dist/tests/unit/install-preflight.test.js.map +1 -0
  363. package/dist/tests/unit/install.backup-gc.test.d.ts +18 -0
  364. package/dist/tests/unit/install.backup-gc.test.d.ts.map +1 -0
  365. package/dist/tests/unit/install.backup-gc.test.js +177 -0
  366. package/dist/tests/unit/install.backup-gc.test.js.map +1 -0
  367. package/dist/tests/unit/install.ledger-replay.test.d.ts +12 -0
  368. package/dist/tests/unit/install.ledger-replay.test.d.ts.map +1 -0
  369. package/dist/tests/unit/install.ledger-replay.test.js +98 -0
  370. package/dist/tests/unit/install.ledger-replay.test.js.map +1 -0
  371. package/dist/tests/unit/local-inventory.test.d.ts +8 -0
  372. package/dist/tests/unit/local-inventory.test.d.ts.map +1 -0
  373. package/dist/tests/unit/local-inventory.test.js +165 -0
  374. package/dist/tests/unit/local-inventory.test.js.map +1 -0
  375. package/dist/tests/unit/namespace-audit-telemetry.test.d.ts +10 -0
  376. package/dist/tests/unit/namespace-audit-telemetry.test.d.ts.map +1 -0
  377. package/dist/tests/unit/namespace-audit-telemetry.test.js +215 -0
  378. package/dist/tests/unit/namespace-audit-telemetry.test.js.map +1 -0
  379. package/dist/tests/unit/namespace-overrides.test.d.ts +18 -0
  380. package/dist/tests/unit/namespace-overrides.test.d.ts.map +1 -0
  381. package/dist/tests/unit/namespace-overrides.test.js +210 -0
  382. package/dist/tests/unit/namespace-overrides.test.js.map +1 -0
  383. package/dist/tests/unit/rename-engine.test.d.ts +26 -0
  384. package/dist/tests/unit/rename-engine.test.d.ts.map +1 -0
  385. package/dist/tests/unit/rename-engine.test.js +367 -0
  386. package/dist/tests/unit/rename-engine.test.js.map +1 -0
  387. package/dist/tests/unit/skill-inventory-audit.test.d.ts +20 -0
  388. package/dist/tests/unit/skill-inventory-audit.test.d.ts.map +1 -0
  389. package/dist/tests/unit/skill-inventory-audit.test.js +299 -0
  390. package/dist/tests/unit/skill-inventory-audit.test.js.map +1 -0
  391. package/dist/tests/unit/skill-pack-audit.helpers.test.d.ts +11 -0
  392. package/dist/tests/unit/skill-pack-audit.helpers.test.d.ts.map +1 -0
  393. package/dist/tests/unit/skill-pack-audit.helpers.test.js +61 -0
  394. package/dist/tests/unit/skill-pack-audit.helpers.test.js.map +1 -0
  395. package/dist/tests/unit/skill-pack-audit.test.js +1 -1
  396. package/dist/tests/unit/skill-pack-audit.test.js.map +1 -1
  397. package/dist/tests/unit/suggestion-chain.test.d.ts +17 -0
  398. package/dist/tests/unit/suggestion-chain.test.d.ts.map +1 -0
  399. package/dist/tests/unit/suggestion-chain.test.js +191 -0
  400. package/dist/tests/unit/suggestion-chain.test.js.map +1 -0
  401. package/dist/tests/webhooks/standalone-shutdown.test.d.ts +12 -0
  402. package/dist/tests/webhooks/standalone-shutdown.test.d.ts.map +1 -0
  403. package/dist/tests/webhooks/standalone-shutdown.test.js +91 -0
  404. package/dist/tests/webhooks/standalone-shutdown.test.js.map +1 -0
  405. package/package.json +17 -4
  406. package/server.json +3 -3
  407. package/src/assets/skills/skillsmith/SKILL.md +109 -80
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @fileoverview Audit-tool dispatch for the Skillsmith MCP server
3
+ * @module @skillsmith/mcp-server/audit-tool-dispatch
4
+ *
5
+ * SMI-4590 Wave 4 Step 0b: extracted from `tool-dispatch.ts` to keep the
6
+ * parent dispatcher under the 500-LOC file-size gate.
7
+ *
8
+ * Wave 4 PR 4 (this PR) adds three new tools:
9
+ * - `skill_inventory_audit` — full inventory audit (always registered)
10
+ * - `apply_namespace_rename` — apply a Wave 2 rename (always registered)
11
+ * - `apply_recommended_edit` — apply a Wave 3 prose edit; **registered
12
+ * iff `APPLY_TEMPLATE_REGISTRY.size > 0`** (defense-in-depth — if the
13
+ * registry ever empties via rollback, the tool unregisters itself and
14
+ * the audit-report writer surfaces edits as `manual_review` only).
15
+ *
16
+ * Surface: handles dispatch for all audit-family tools. The parent
17
+ * `tool-dispatch.ts` delegates by name match against {@link AUDIT_TOOL_NAMES};
18
+ * this module owns the audit case bodies, license + quota wiring (for the
19
+ * pre-existing `skill_audit` / `skill_pack_audit` cases), and Zod parse
20
+ * error envelopes.
21
+ *
22
+ * Dispatch responses for the three new tools follow the
23
+ * `safeParseOrError` pattern (see `validation.ts`) for protocol-level
24
+ * shape errors, AND embed an application-level `success: false` envelope
25
+ * inside `content[0].text` for domain-level failures (history not found,
26
+ * subcall failed). MCP clients introspect both.
27
+ */
28
+ import { skillAuditInputSchema, executeSkillAudit } from './tools/skill-audit.js';
29
+ import { skillPackAuditInputSchema, executeSkillPackAudit } from './tools/skill-pack-audit.js';
30
+ import { skillInventoryAudit } from './tools/skill-inventory-audit.js';
31
+ import { applyNamespaceRename } from './tools/apply-namespace-rename.js';
32
+ import { applyRecommendedEditTool } from './tools/apply-recommended-edit.js';
33
+ import { APPLY_TEMPLATE_REGISTRY } from './audit/edit-applier.js';
34
+ import { withLicenseAndQuota } from './middleware/license.js';
35
+ /**
36
+ * Tool names handled by this dispatcher. The parent `tool-dispatch.ts`
37
+ * delegates iff the requested tool name is in this set.
38
+ *
39
+ * `apply_recommended_edit` is conditionally included based on
40
+ * `APPLY_TEMPLATE_REGISTRY.size`. When the registry is empty (rollback
41
+ * scenario), the name is omitted from this set AND
42
+ * {@link dispatchAuditTool} returns the standard "Unknown audit tool"
43
+ * error if the dispatcher is somehow reached for that name.
44
+ */
45
+ export const AUDIT_TOOL_NAMES = new Set(buildAuditToolNames());
46
+ // SMI-4590 Wave 4 PR 5/6: the post-deploy smoke harness
47
+ // (`scripts/smoke-prod/mcp-server.sh`) greps the COMPILED JS of this file
48
+ // for the literal tool-name strings below. If you ever extract them into
49
+ // constants, named exports, or a JSON manifest, update those smoke checks
50
+ // in the same PR — otherwise the smoke continues to pass on a regression
51
+ // it was specifically built to catch.
52
+ function buildAuditToolNames() {
53
+ const names = [
54
+ 'skill_audit',
55
+ 'skill_pack_audit',
56
+ 'skill_inventory_audit',
57
+ 'apply_namespace_rename',
58
+ ];
59
+ if (APPLY_TEMPLATE_REGISTRY.size > 0) {
60
+ names.push('apply_recommended_edit');
61
+ }
62
+ return names;
63
+ }
64
+ /**
65
+ * Returns true if `name` is an audit-family tool dispatched by this module.
66
+ * Parent dispatcher uses this to route — keeping the routing predicate
67
+ * colocated with the case bodies prevents drift.
68
+ */
69
+ export function isAuditToolName(name) {
70
+ return AUDIT_TOOL_NAMES.has(name);
71
+ }
72
+ /**
73
+ * Wrap a Promise<T> as a successful MCP `CallToolResult` with a
74
+ * JSON-serialised body (mirrors `tool-dispatch.ok`).
75
+ */
76
+ function okBody(payload) {
77
+ return {
78
+ content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }],
79
+ isError: false,
80
+ };
81
+ }
82
+ /**
83
+ * Dispatch an audit-family tool call. Caller must check {@link isAuditToolName}
84
+ * before invoking; unrecognized names throw `Error('Unknown audit tool: <name>')`.
85
+ *
86
+ * @param name MCP tool name (must be in {@link AUDIT_TOOL_NAMES}).
87
+ * @param args Raw tool arguments from the request.
88
+ * @param toolContext Initialized database + repository context.
89
+ * @param licenseMiddleware License validation middleware instance.
90
+ * @param quotaMiddleware Quota enforcement middleware instance.
91
+ * @returns MCP tool response.
92
+ */
93
+ export async function dispatchAuditTool(name, args, toolContext, licenseMiddleware, quotaMiddleware) {
94
+ switch (name) {
95
+ case 'skill_audit':
96
+ return withLicenseAndQuota('skill_audit', args, skillAuditInputSchema, executeSkillAudit, toolContext, licenseMiddleware, quotaMiddleware);
97
+ case 'skill_pack_audit':
98
+ return withLicenseAndQuota('skill_pack_audit', args, skillPackAuditInputSchema, executeSkillPackAudit, toolContext, licenseMiddleware, quotaMiddleware);
99
+ case 'skill_inventory_audit':
100
+ return okBody(await skillInventoryAudit(args));
101
+ case 'apply_namespace_rename':
102
+ return okBody(await applyNamespaceRename(args));
103
+ case 'apply_recommended_edit':
104
+ // Defense-in-depth: even if the parent dispatcher routes this name
105
+ // when the registry is empty (e.g. tests that mock the set), the
106
+ // tool body still calls Wave 3's applyRecommendedEdit which
107
+ // re-checks `APPLY_TEMPLATE_REGISTRY` and returns the typed
108
+ // `edit.template_not_in_apply_registry` error.
109
+ return okBody(await applyRecommendedEditTool(args));
110
+ default:
111
+ throw new Error('Unknown audit tool: ' + name);
112
+ }
113
+ }
114
+ //# sourceMappingURL=audit-tool-dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-tool-dispatch.js","sourceRoot":"","sources":["../../src/audit-tool-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAI7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAS,mBAAmB,EAAE,CAAC,CAAA;AAE3F,wDAAwD;AACxD,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,yEAAyE;AACzE,sCAAsC;AACtC,SAAS,mBAAmB;IAC1B,MAAM,KAAK,GAAG;QACZ,aAAa;QACb,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;KACzB,CAAA;IACD,IAAI,uBAAuB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,OAAgB;IAC9B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,KAAK;KACf,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,IAAyC,EACzC,WAAwB,EACxB,iBAAoC,EACpC,eAAgC;IAEhC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,mBAAmB,CACxB,aAAa,EACb,IAAI,EACJ,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,CAChB,CAAA;QAEH,KAAK,kBAAkB;YACrB,OAAO,mBAAmB,CACxB,kBAAkB,EAClB,IAAI,EACJ,yBAAyB,EACzB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,eAAe,CAChB,CAAA;QAEH,KAAK,uBAAuB;YAC1B,OAAO,MAAM,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEhD,KAAK,wBAAwB;YAC3B,OAAO,MAAM,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,KAAK,wBAAwB;YAC3B,mEAAmE;YACnE,iEAAiE;YACjE,4DAA4D;YAC5D,4DAA4D;YAC5D,+CAA+C;YAC/C,OAAO,MAAM,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAA;QAErD;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAA;IAClD,CAAC;AACH,CAAC"}
package/dist/src/index.js CHANGED
@@ -46,7 +46,7 @@ import { checkForUpdates, formatUpdateNotification } from '@skillsmith/core';
46
46
  import { createLicenseMiddleware } from './middleware/license.js';
47
47
  import { createQuotaMiddleware } from './middleware/quota.js';
48
48
  // Package version - keep in sync with package.json
49
- const PACKAGE_VERSION = '0.4.13';
49
+ const PACKAGE_VERSION = '0.5.1';
50
50
  const PACKAGE_NAME = '@skillsmith/mcp-server';
51
51
  import { installBundledSkills, installUserDocs, getUserGuidePath, } from './onboarding/install-assets.js';
52
52
  // SMI-2679: Quota enforcement middleware — module-level singletons, initialized once
@@ -96,9 +96,12 @@ const toolDefinitions = [
96
96
  complianceReportToolSchema,
97
97
  ];
98
98
  // Create server
99
+ // SMI-4790 S1: version sourced from PACKAGE_VERSION constant (was hardcoded '0.4.6';
100
+ // drifted from package.json's actual version). prepare-release.ts updates PACKAGE_VERSION,
101
+ // so this binding stays in sync automatically.
99
102
  const server = new Server({
100
103
  name: 'skillsmith',
101
- version: '0.4.6',
104
+ version: PACKAGE_VERSION,
102
105
  }, {
103
106
  capabilities: {
104
107
  tools: {},
@@ -159,6 +162,25 @@ function handleDocsFlag() {
159
162
  }
160
163
  process.exit(0);
161
164
  }
165
+ /**
166
+ * SMI-4790: Idempotent install of the bundled `skillsmith` slash-command skill
167
+ * for MCP-only users (who never ran `skillsmith setup`) and recovery if the
168
+ * skill was uninstalled. Delegates routing to the existing
169
+ * `installBundledSkills()` which honours the SKILLSMITH_CLIENT env var via
170
+ * `resolveClientPath()` (Claude Code default; cursor/copilot/windsurf via env).
171
+ *
172
+ * Quiet by design: `installBundledSkills()` only logs when it actually copies
173
+ * a skill or hits an error, so happy-path startup adds zero stderr.
174
+ */
175
+ function ensureSkillsmithSkillInstalled() {
176
+ try {
177
+ installBundledSkills();
178
+ }
179
+ catch (error) {
180
+ // Fail-soft: never block MCP startup on bundled-skill install failure.
181
+ console.error('[skillsmith] Bundled skill install failed (non-fatal):', error instanceof Error ? error.message : 'Unknown error');
182
+ }
183
+ }
162
184
  /**
163
185
  * Run first-time setup: install bundled skills and Tier 1 skills from registry
164
186
  */
@@ -294,6 +316,16 @@ async function main() {
294
316
  if (isFirstRun()) {
295
317
  await runFirstTimeSetup();
296
318
  }
319
+ else {
320
+ // SMI-4790: ensure the bundled `skillsmith` slash-command skill is installed
321
+ // even on non-first-run (covers MCP-only users who never ran `skillsmith setup`,
322
+ // and recovery if the skill was uninstalled). installBundledSkills() is
323
+ // idempotent — it skips skills already present at the runtime path resolved
324
+ // by `SKILLSMITH_CLIENT`. Opt out via SKILLSMITH_SKIP_SKILL_INSTALL=1.
325
+ if (process.env.SKILLSMITH_SKIP_SKILL_INSTALL !== '1') {
326
+ ensureSkillsmithSkillInstalled();
327
+ }
328
+ }
297
329
  // SMI-1952: Auto-update check (non-blocking)
298
330
  if (process.env.SKILLSMITH_AUTO_UPDATE_CHECK !== 'false') {
299
331
  checkForUpdates(PACKAGE_NAME, PACKAGE_VERSION)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -77,11 +77,18 @@ export declare class LocalIndexer {
77
77
  /**
78
78
  * Index a single skill directory.
79
79
  *
80
+ * SMI-4587 PR #4 / NEW-E-2: delegates the per-skill metadata extraction
81
+ * to the new `indexLocalSkill` core helper. This keeps the LocalIndexer
82
+ * focused on directory traversal + caching, and lets the namespace-audit
83
+ * `bootstrapUnmanagedSkills` callback share the same code path. The
84
+ * MCP-side `parseFrontmatter` (richer than the core fallback) is injected
85
+ * so behaviour stays identical to pre-refactor.
86
+ *
80
87
  * @param skillDir - Path to the skill directory
81
88
  * @param dirName - Name of the directory
82
89
  * @returns LocalSkill object or null if directory should be skipped
83
90
  */
84
- indexSkillDir(skillDir: string, dirName: string): LocalSkill | null;
91
+ indexSkillDir(skillDir: string, _dirName: string): LocalSkill | null;
85
92
  /**
86
93
  * Internal method that performs the actual indexing.
87
94
  * Called by both index() and indexSync() to avoid code duplication.
@@ -1 +1 @@
1
- {"version":3,"file":"LocalIndexer.d.ts","sourceRoot":"","sources":["../../../src/indexer/LocalIndexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEhF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAA;IAClB,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,uDAAuD;IACvD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB;AAeD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAQ;IAExB;;;;OAIG;gBACS,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAc;IAKxD;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CAAC,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM;IAqCjF;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAqDnE;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAkDrB;;;;;;;;OAQG;IACG,KAAK,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI1D;;;;;OAKG;IACH,SAAS,CAAC,KAAK,GAAE,OAAe,GAAG,UAAU,EAAE;IAI/C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE;CA4B3D;AAKD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
1
+ {"version":3,"file":"LocalIndexer.d.ts","sourceRoot":"","sources":["../../../src/indexer/LocalIndexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEhF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAA;IAClB,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,uDAAuD;IACvD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB;AAeD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAQ;IAExB;;;;OAIG;gBACS,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAc;IAQxD;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CAAC,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM;IAqCjF;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAoBpE;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAkDrB;;;;;;;;OAQG;IACG,KAAK,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI1D;;;;;OAKG;IACH,SAAS,CAAC,KAAK,GAAE,OAAe,GAAG,UAAU,EAAE;IAI/C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE;CA4B3D;AAmCD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -13,7 +13,8 @@
13
13
  */
14
14
  import * as fs from 'node:fs';
15
15
  import * as path from 'node:path';
16
- import * as os from 'node:os';
16
+ import { indexLocalSkill } from '@skillsmith/core';
17
+ import { getCanonicalInstallPath } from '@skillsmith/core/install';
17
18
  import { parseFrontmatter } from './FrontmatterParser.js';
18
19
  /**
19
20
  * Quality scoring weights for local skills
@@ -41,7 +42,10 @@ export class LocalIndexer {
41
42
  * @param cacheTtl - Cache TTL in milliseconds (defaults to 60000 = 1 minute)
42
43
  */
43
44
  constructor(skillsDir, cacheTtl = 60000) {
44
- this.skillsDir = skillsDir || path.join(os.homedir(), '.claude', 'skills');
45
+ // SMI-4578: routes through canonical install path so default-client
46
+ // directory is defined in exactly one place. Per-client scanning is
47
+ // handled by the cross-client `getInstalledSkills` (Step 4.5).
48
+ this.skillsDir = skillsDir || getCanonicalInstallPath();
45
49
  this.cacheTtl = cacheTtl;
46
50
  }
47
51
  /**
@@ -93,52 +97,32 @@ export class LocalIndexer {
93
97
  /**
94
98
  * Index a single skill directory.
95
99
  *
100
+ * SMI-4587 PR #4 / NEW-E-2: delegates the per-skill metadata extraction
101
+ * to the new `indexLocalSkill` core helper. This keeps the LocalIndexer
102
+ * focused on directory traversal + caching, and lets the namespace-audit
103
+ * `bootstrapUnmanagedSkills` callback share the same code path. The
104
+ * MCP-side `parseFrontmatter` (richer than the core fallback) is injected
105
+ * so behaviour stays identical to pre-refactor.
106
+ *
96
107
  * @param skillDir - Path to the skill directory
97
108
  * @param dirName - Name of the directory
98
109
  * @returns LocalSkill object or null if directory should be skipped
99
110
  */
100
- indexSkillDir(skillDir, dirName) {
101
- const skillMdPath = path.join(skillDir, 'SKILL.md');
102
- let hasSkillMd = false;
103
- let content = '';
104
- let lastModified = null;
111
+ indexSkillDir(skillDir, _dirName) {
105
112
  try {
106
- // Get directory stats
107
- const stats = fs.statSync(skillDir);
108
- lastModified = stats.mtime.toISOString();
109
- // Try to read SKILL.md
110
- if (fs.existsSync(skillMdPath)) {
111
- hasSkillMd = true;
112
- content = fs.readFileSync(skillMdPath, 'utf-8');
113
- }
113
+ // The core helper derives `name` from `frontmatter.name || basename`,
114
+ // which matches the pre-refactor `frontmatter.name || dirName`
115
+ // contract because `dirName === path.basename(skillDir)` for every
116
+ // call site in this class.
117
+ return indexLocalSkill(skillDir, {
118
+ parseFrontmatter: parseFrontmatterAdapter,
119
+ });
114
120
  }
115
121
  catch (error) {
116
- // If we can't read the directory, skip it
122
+ // If we can't read the directory, skip it (parity with pre-refactor).
117
123
  console.warn('[LocalIndexer] Failed to read skill directory:', skillDir, error instanceof Error ? error.message : String(error));
118
124
  return null;
119
125
  }
120
- // Parse frontmatter (using imported function from FrontmatterParser)
121
- const frontmatter = parseFrontmatter(content);
122
- // Determine skill name
123
- const name = frontmatter.name || dirName;
124
- // Calculate quality score
125
- const qualityScore = this.calculateQualityScore(frontmatter, hasSkillMd);
126
- return {
127
- id: `local/${name}`,
128
- name,
129
- description: frontmatter.description,
130
- author: frontmatter.author || 'local',
131
- tags: frontmatter.tags,
132
- qualityScore,
133
- trustTier: 'local',
134
- source: 'local',
135
- path: skillDir,
136
- hasSkillMd,
137
- lastModified,
138
- repository: frontmatter.repository,
139
- // SMI-2760: Compatibility tags from frontmatter
140
- compatibility: frontmatter.compatibility.length > 0 ? frontmatter.compatibility : undefined,
141
- };
142
126
  }
143
127
  /**
144
128
  * Internal method that performs the actual indexing.
@@ -253,6 +237,26 @@ export class LocalIndexer {
253
237
  });
254
238
  }
255
239
  }
240
+ /**
241
+ * Adapter that bridges the MCP-side richer `parseFrontmatter` (returns
242
+ * `SkillFrontmatter` with `triggers`/`homepage`/`version`) to the narrower
243
+ * `IndexLocalSkillFrontmatter` shape consumed by the core helper. The two
244
+ * shapes share fields by name; the adapter just narrows the surface so the
245
+ * indexer's behaviour stays bit-identical to pre-refactor.
246
+ */
247
+ function parseFrontmatterAdapter(content) {
248
+ const fm = parseFrontmatter(content);
249
+ return {
250
+ name: fm.name,
251
+ description: fm.description,
252
+ author: fm.author,
253
+ tags: fm.tags,
254
+ version: fm.version,
255
+ repository: fm.repository,
256
+ homepage: fm.homepage,
257
+ compatibility: fm.compatibility,
258
+ };
259
+ }
256
260
  // Export singleton instance for convenience
257
261
  let defaultIndexer = null;
258
262
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"LocalIndexer.js","sourceRoot":"","sources":["../../../src/indexer/LocalIndexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalIndexer.js","sourceRoot":"","sources":["../../../src/indexer/LocalIndexer.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,10 @@
4
4
  // LG-3: withLicenseAndQuota rethrows non-profile_incomplete errors
5
5
  // LG-4: withLicenseAndQuota passes through on success
6
6
  // LG-5: checkAndTrack IS called before the handler (quota decremented for profile_incomplete)
7
+ // LG-6 (SMI-4463): NETWORK_QUOTA_EXCEEDED → JSON-RPC -32050 + structured quotaInfo
7
8
  import { describe, it, expect, vi, beforeEach } from 'vitest';
8
- import { ApiClientError } from '@skillsmith/core';
9
- import { createProfileIncompleteResponse, withLicenseAndQuota } from '../license.gate.js';
9
+ import { ApiClientError, SkillsmithError, ErrorCodes } from '@skillsmith/core';
10
+ import { createProfileIncompleteResponse, withLicenseAndQuota, MCP_MONTHLY_QUOTA_EXCEEDED_CODE, } from '../license.gate.js';
10
11
  import { z } from 'zod';
11
12
  const mockLicense = {
12
13
  checkFeature: vi.fn().mockResolvedValue({ valid: true }),
@@ -70,5 +71,23 @@ describe('license.gate', () => {
70
71
  await withLicenseAndQuota('search', { query: 'test' }, inputSchema, handler, mockCtx, mockLicense, mockQuota);
71
72
  expect(mockQuota.checkAndTrack).toHaveBeenCalledOnce();
72
73
  });
74
+ it('LG-6 (SMI-4463): NETWORK_QUOTA_EXCEEDED → JSON-RPC -32050 with quotaInfo', async () => {
75
+ const resetsAt = new Date(Date.now() + 5 * 86400000).toISOString();
76
+ const handler = vi
77
+ .fn()
78
+ .mockRejectedValue(new SkillsmithError(ErrorCodes.NETWORK_QUOTA_EXCEEDED, 'Monthly quota reached (1000/1000 community tier).\nUpgrade: https://skillsmith.app/pricing', { details: { used: 1000, limit: 1000, tier: 'community', resetsAt } }));
79
+ const result = await withLicenseAndQuota('search', { query: 'test' }, inputSchema, handler, mockCtx, mockLicense, mockQuota);
80
+ expect(result.isError).toBe(true);
81
+ const body = JSON.parse(result.content[0].text);
82
+ expect(body.code).toBe(MCP_MONTHLY_QUOTA_EXCEEDED_CODE);
83
+ expect(body.code).toBe(-32050);
84
+ expect(body.error).toBe('monthly_quota_exceeded');
85
+ expect(body.message).toContain('Monthly quota reached');
86
+ const quotaInfo = body.data.quotaInfo;
87
+ expect(quotaInfo.used).toBe(1000);
88
+ expect(quotaInfo.limit).toBe(1000);
89
+ expect(quotaInfo.tier).toBe('community');
90
+ expect(quotaInfo.resetsAt).toBe(resetsAt);
91
+ });
73
92
  });
74
93
  //# sourceMappingURL=license.gate.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.gate.test.js","sourceRoot":"","sources":["../../../../src/middleware/__tests__/license.gate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.gate.test.js","sourceRoot":"","sources":["../../../../src/middleware/__tests__/license.gate.test.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,20 @@ import type { ZodType, ZodTypeDef } from 'zod';
3
3
  import type { ToolContext } from '../context.types.js';
4
4
  import type { QuotaMiddleware } from './quota-types.js';
5
5
  import type { LicenseMiddleware } from './license.js';
6
+ /**
7
+ * SMI-4463: JSON-RPC error code for monthly_quota_exceeded.
8
+ *
9
+ * Lives in the mid-range of the JSON-RPC reserved server-error band
10
+ * (-32000 / -32099). -32099 was at the edge and risks colliding with
11
+ * future spec assignments; -32050 gives us comfortable headroom.
12
+ *
13
+ * Disambiguator from per-minute rate-limit errors is the response
14
+ * `error: 'monthly_quota_exceeded'` body field — never the status code
15
+ * alone (both surface as 429 on the wire).
16
+ *
17
+ * Documented in CODES.md alongside other Skillsmith-canonical codes.
18
+ */
19
+ export declare const MCP_MONTHLY_QUOTA_EXCEEDED_CODE = -32050;
6
20
  export declare function ok(result: unknown): CallToolResult;
7
21
  export declare function errResponse(response: {
8
22
  content: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"license.gate.d.ts","sourceRoot":"","sources":["../../../src/middleware/license.gate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAKrD,wBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAIlD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,GAAG,cAAc,CAEjB;AAID,wBAAgB,+BAA+B,IAAI;IACjD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,OAAO,EAAE,IAAI,CAAA;CACd,CAoBA;AAMD,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,EACzD,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
1
+ {"version":3,"file":"license.gate.d.ts","sourceRoot":"","sources":["../../../src/middleware/license.gate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAKrD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,SAAS,CAAA;AA8CrD,wBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAIlD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,GAAG,cAAc,CAEjB;AAID,wBAAgB,+BAA+B,IAAI;IACjD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,OAAO,EAAE,IAAI,CAAA;CACd,CAoBA;AAMD,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,EACzD,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,cAAc,CAAC,CA0BzB"}
@@ -1,7 +1,52 @@
1
1
  import { safeParseOrError } from '../validation.js';
2
- import { ApiClientError } from '@skillsmith/core';
2
+ import { ApiClientError, SkillsmithError, ErrorCodes } from '@skillsmith/core';
3
3
  import { createLicenseErrorResponse } from './license.js';
4
4
  const COMPLETE_PROFILE_URL = 'https://skillsmith.app/complete-profile';
5
+ /**
6
+ * SMI-4463: JSON-RPC error code for monthly_quota_exceeded.
7
+ *
8
+ * Lives in the mid-range of the JSON-RPC reserved server-error band
9
+ * (-32000 / -32099). -32099 was at the edge and risks colliding with
10
+ * future spec assignments; -32050 gives us comfortable headroom.
11
+ *
12
+ * Disambiguator from per-minute rate-limit errors is the response
13
+ * `error: 'monthly_quota_exceeded'` body field — never the status code
14
+ * alone (both surface as 429 on the wire).
15
+ *
16
+ * Documented in CODES.md alongside other Skillsmith-canonical codes.
17
+ */
18
+ export const MCP_MONTHLY_QUOTA_EXCEEDED_CODE = -32050;
19
+ /**
20
+ * SMI-4463: Build the user-facing MCP error response for a monthly quota
21
+ * exhaustion. The structured `data.quotaInfo` payload lets MCP clients
22
+ * render rich UI (countdown, upgrade button) without re-parsing the
23
+ * message. The plain-text message is suitable for any client that
24
+ * just stringifies content[0].text.
25
+ */
26
+ function createMonthlyQuotaExceededResponse(err) {
27
+ const details = (err.details || {});
28
+ return {
29
+ content: [
30
+ {
31
+ type: 'text',
32
+ text: JSON.stringify({
33
+ code: MCP_MONTHLY_QUOTA_EXCEEDED_CODE,
34
+ error: 'monthly_quota_exceeded',
35
+ message: err.message,
36
+ data: {
37
+ quotaInfo: {
38
+ used: details.used ?? null,
39
+ limit: details.limit ?? null,
40
+ tier: details.tier ?? null,
41
+ resetsAt: details.resetsAt ?? null,
42
+ },
43
+ },
44
+ }, null, 2),
45
+ },
46
+ ],
47
+ isError: true,
48
+ };
49
+ }
5
50
  export function ok(result) {
6
51
  return {
7
52
  content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
@@ -53,6 +98,12 @@ export async function withLicenseAndQuota(toolName, args, schema, handler, toolC
53
98
  err.message === 'profile_incomplete') {
54
99
  return errResponse(createProfileIncompleteResponse());
55
100
  }
101
+ // SMI-4463: monthly_quota_exceeded translates to JSON-RPC -32050 with
102
+ // structured quotaInfo. Disambiguates from per-minute rate-limit by
103
+ // the `error: 'monthly_quota_exceeded'` body field, not status code.
104
+ if (err instanceof SkillsmithError && err.code === ErrorCodes.NETWORK_QUOTA_EXCEEDED) {
105
+ return errResponse(createMonthlyQuotaExceededResponse(err));
106
+ }
56
107
  throw err;
57
108
  }
58
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"license.gate.js","sourceRoot":"","sources":["../../../src/middleware/license.gate.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAEzD,MAAM,oBAAoB,GAAG,yCAAyC,CAAA;AAEtE,MAAM,UAAU,EAAE,CAAC,MAAe;IAChC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAI3B;IACC,OAAO,QAAqC,CAAA;AAC9C,CAAC;AAED,8EAA8E;AAC9E,uEAAuE;AACvE,MAAM,UAAU,+BAA+B;IAI7C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oBACE,IAAI,EAAE,CAAC,KAAK;oBACZ,KAAK,EAAE,oBAAoB;oBAC3B,YAAY,EAAE,oBAAoB;oBAClC,OAAO,EAAE,0DAA0D,oBAAoB,EAAE;oBACzF,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;iBACnC,EACD,IAAI,EACJ,CAAC,CACF;aACF;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAA;AACH,CAAC;AAED,oFAAoF;AACpF,mFAAmF;AACnF,sFAAsF;AACtF,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,IAAyC,EACzC,MAAuC,EACvC,OAAyD,EACzD,WAAwB,EACxB,iBAAoC,EACpC,eAAgC;IAEhC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACvD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAA;IACtC,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjE,IAAI,CAAC,aAAa,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAA;IACvF,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,CAAA;IAC5D,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IAC9E,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,eAAe,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAA;IAChG,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IACE,GAAG,YAAY,cAAc;YAC7B,GAAG,CAAC,UAAU,KAAK,GAAG;YACtB,GAAG,CAAC,OAAO,KAAK,oBAAoB,EACpC,CAAC;YACD,OAAO,WAAW,CAAC,+BAA+B,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"license.gate.js","sourceRoot":"","sources":["../../../src/middleware/license.gate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"install-assets.d.ts","sourceRoot":"","sources":["../../../src/onboarding/install-assets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4CH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAiD/C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CA0BzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAGrD"}
1
+ {"version":3,"file":"install-assets.d.ts","sourceRoot":"","sources":["../../../src/onboarding/install-assets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgDH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAmD/C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CA0BzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAGrD"}
@@ -8,6 +8,7 @@ import { existsSync, cpSync, mkdirSync, readdirSync } from 'fs';
8
8
  import { join, dirname } from 'path';
9
9
  import { homedir } from 'os';
10
10
  import { fileURLToPath } from 'url';
11
+ import { resolveClientPath } from '@skillsmith/core/install';
11
12
  const __filename = fileURLToPath(import.meta.url);
12
13
  const __dirname = dirname(__filename);
13
14
  /**
@@ -38,7 +39,10 @@ function getAssetsDir() {
38
39
  return fromDistPath;
39
40
  }
40
41
  const ASSETS_DIR = getAssetsDir();
41
- const CLAUDE_SKILLS_DIR = join(homedir(), '.claude', 'skills');
42
+ // SMI-4578: bundled-asset install honours `SKILLSMITH_CLIENT` so a user
43
+ // who set the env var to e.g. `cursor` gets the bundled skillsmith skill
44
+ // at `~/.cursor/skills/skillsmith/` instead of `~/.claude/skills/`.
45
+ // Resolved at call time inside `installBundledSkills`.
42
46
  const SKILLSMITH_DOCS_DIR = join(homedir(), '.skillsmith', 'docs');
43
47
  /**
44
48
  * Install bundled skills from package assets
@@ -54,9 +58,11 @@ export function installBundledSkills() {
54
58
  console.error('[skillsmith] No bundled skills found in package');
55
59
  return installed;
56
60
  }
57
- // Ensure ~/.claude/skills exists
58
- if (!existsSync(CLAUDE_SKILLS_DIR)) {
59
- mkdirSync(CLAUDE_SKILLS_DIR, { recursive: true });
61
+ // SMI-4578: target directory honours SKILLSMITH_CLIENT — resolved at
62
+ // call time so a runtime env-var change is picked up.
63
+ const targetSkillsDir = resolveClientPath();
64
+ if (!existsSync(targetSkillsDir)) {
65
+ mkdirSync(targetSkillsDir, { recursive: true });
60
66
  }
61
67
  // Get all skill directories
62
68
  let skillDirs;
@@ -72,7 +78,7 @@ export function installBundledSkills() {
72
78
  // Install each skill
73
79
  for (const skillName of skillDirs) {
74
80
  const source = join(skillsDir, skillName);
75
- const dest = join(CLAUDE_SKILLS_DIR, skillName);
81
+ const dest = join(targetSkillsDir, skillName);
76
82
  // Skip if already installed
77
83
  if (existsSync(dest)) {
78
84
  console.error(`[skillsmith] Skill already installed: ${skillName}`);