@skillsmith/mcp-server 0.3.0 → 0.3.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 (314) hide show
  1. package/package.json +1 -1
  2. package/dist/.tsbuildinfo +0 -1
  3. package/dist/src/__tests__/get-skill.test.d.ts +0 -6
  4. package/dist/src/__tests__/get-skill.test.d.ts.map +0 -1
  5. package/dist/src/__tests__/get-skill.test.js +0 -88
  6. package/dist/src/__tests__/get-skill.test.js.map +0 -1
  7. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts +0 -7
  8. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts.map +0 -1
  9. package/dist/src/__tests__/middleware/errorFormatter.test.js +0 -304
  10. package/dist/src/__tests__/middleware/errorFormatter.test.js.map +0 -1
  11. package/dist/src/__tests__/middleware/license.test.d.ts +0 -7
  12. package/dist/src/__tests__/middleware/license.test.d.ts.map +0 -1
  13. package/dist/src/__tests__/middleware/license.test.js +0 -500
  14. package/dist/src/__tests__/middleware/license.test.js.map +0 -1
  15. package/dist/src/__tests__/search.test.d.ts +0 -6
  16. package/dist/src/__tests__/search.test.d.ts.map +0 -1
  17. package/dist/src/__tests__/search.test.js +0 -86
  18. package/dist/src/__tests__/search.test.js.map +0 -1
  19. package/dist/src/__tests__/test-utils.d.ts +0 -20
  20. package/dist/src/__tests__/test-utils.d.ts.map +0 -1
  21. package/dist/src/__tests__/test-utils.js +0 -91
  22. package/dist/src/__tests__/test-utils.js.map +0 -1
  23. package/dist/src/context/index.d.ts +0 -19
  24. package/dist/src/context/index.d.ts.map +0 -1
  25. package/dist/src/context/index.js +0 -25
  26. package/dist/src/context/index.js.map +0 -1
  27. package/dist/src/context/project-detector.d.ts +0 -145
  28. package/dist/src/context/project-detector.d.ts.map +0 -1
  29. package/dist/src/context/project-detector.js +0 -321
  30. package/dist/src/context/project-detector.js.map +0 -1
  31. package/dist/src/context.d.ts +0 -157
  32. package/dist/src/context.d.ts.map +0 -1
  33. package/dist/src/context.js +0 -231
  34. package/dist/src/context.js.map +0 -1
  35. package/dist/src/core-shim.d.ts +0 -7
  36. package/dist/src/core-shim.d.ts.map +0 -1
  37. package/dist/src/core-shim.js +0 -9
  38. package/dist/src/core-shim.js.map +0 -1
  39. package/dist/src/health/healthCheck.d.ts +0 -88
  40. package/dist/src/health/healthCheck.d.ts.map +0 -1
  41. package/dist/src/health/healthCheck.js +0 -117
  42. package/dist/src/health/healthCheck.js.map +0 -1
  43. package/dist/src/health/index.d.ts +0 -21
  44. package/dist/src/health/index.d.ts.map +0 -1
  45. package/dist/src/health/index.js +0 -21
  46. package/dist/src/health/index.js.map +0 -1
  47. package/dist/src/health/readinessCheck.d.ts +0 -139
  48. package/dist/src/health/readinessCheck.d.ts.map +0 -1
  49. package/dist/src/health/readinessCheck.js +0 -266
  50. package/dist/src/health/readinessCheck.js.map +0 -1
  51. package/dist/src/index.d.ts +0 -9
  52. package/dist/src/index.d.ts.map +0 -1
  53. package/dist/src/index.js +0 -236
  54. package/dist/src/index.js.map +0 -1
  55. package/dist/src/index.test.d.ts +0 -2
  56. package/dist/src/index.test.d.ts.map +0 -1
  57. package/dist/src/index.test.js +0 -43
  58. package/dist/src/index.test.js.map +0 -1
  59. package/dist/src/logger.d.ts +0 -26
  60. package/dist/src/logger.d.ts.map +0 -1
  61. package/dist/src/logger.js +0 -179
  62. package/dist/src/logger.js.map +0 -1
  63. package/dist/src/middleware/__tests__/csp.test.d.ts +0 -2
  64. package/dist/src/middleware/__tests__/csp.test.d.ts.map +0 -1
  65. package/dist/src/middleware/__tests__/csp.test.js +0 -390
  66. package/dist/src/middleware/__tests__/csp.test.js.map +0 -1
  67. package/dist/src/middleware/csp.d.ts +0 -103
  68. package/dist/src/middleware/csp.d.ts.map +0 -1
  69. package/dist/src/middleware/csp.js +0 -273
  70. package/dist/src/middleware/csp.js.map +0 -1
  71. package/dist/src/middleware/degradation.d.ts +0 -105
  72. package/dist/src/middleware/degradation.d.ts.map +0 -1
  73. package/dist/src/middleware/degradation.js +0 -319
  74. package/dist/src/middleware/degradation.js.map +0 -1
  75. package/dist/src/middleware/errorFormatter.d.ts +0 -119
  76. package/dist/src/middleware/errorFormatter.d.ts.map +0 -1
  77. package/dist/src/middleware/errorFormatter.js +0 -294
  78. package/dist/src/middleware/errorFormatter.js.map +0 -1
  79. package/dist/src/middleware/index.d.ts +0 -11
  80. package/dist/src/middleware/index.d.ts.map +0 -1
  81. package/dist/src/middleware/index.js +0 -16
  82. package/dist/src/middleware/index.js.map +0 -1
  83. package/dist/src/middleware/license.d.ts +0 -169
  84. package/dist/src/middleware/license.d.ts.map +0 -1
  85. package/dist/src/middleware/license.js +0 -292
  86. package/dist/src/middleware/license.js.map +0 -1
  87. package/dist/src/middleware/quota.d.ts +0 -182
  88. package/dist/src/middleware/quota.d.ts.map +0 -1
  89. package/dist/src/middleware/quota.js +0 -309
  90. package/dist/src/middleware/quota.js.map +0 -1
  91. package/dist/src/middleware/toolFeatureMapping.d.ts +0 -36
  92. package/dist/src/middleware/toolFeatureMapping.d.ts.map +0 -1
  93. package/dist/src/middleware/toolFeatureMapping.js +0 -96
  94. package/dist/src/middleware/toolFeatureMapping.js.map +0 -1
  95. package/dist/src/onboarding/first-run.d.ts +0 -65
  96. package/dist/src/onboarding/first-run.d.ts.map +0 -1
  97. package/dist/src/onboarding/first-run.js +0 -79
  98. package/dist/src/onboarding/first-run.js.map +0 -1
  99. package/dist/src/onboarding/index.d.ts +0 -7
  100. package/dist/src/onboarding/index.d.ts.map +0 -1
  101. package/dist/src/onboarding/index.js +0 -7
  102. package/dist/src/onboarding/index.js.map +0 -1
  103. package/dist/src/onboarding/install-assets.d.ts +0 -27
  104. package/dist/src/onboarding/install-assets.d.ts.map +0 -1
  105. package/dist/src/onboarding/install-assets.js +0 -128
  106. package/dist/src/onboarding/install-assets.js.map +0 -1
  107. package/dist/src/suggestions/index.d.ts +0 -21
  108. package/dist/src/suggestions/index.d.ts.map +0 -1
  109. package/dist/src/suggestions/index.js +0 -20
  110. package/dist/src/suggestions/index.js.map +0 -1
  111. package/dist/src/suggestions/suggestion-engine.d.ts +0 -185
  112. package/dist/src/suggestions/suggestion-engine.d.ts.map +0 -1
  113. package/dist/src/suggestions/suggestion-engine.js +0 -352
  114. package/dist/src/suggestions/suggestion-engine.js.map +0 -1
  115. package/dist/src/suggestions/types.d.ts +0 -88
  116. package/dist/src/suggestions/types.d.ts.map +0 -1
  117. package/dist/src/suggestions/types.js +0 -21
  118. package/dist/src/suggestions/types.js.map +0 -1
  119. package/dist/src/tools/analyze.d.ts +0 -151
  120. package/dist/src/tools/analyze.d.ts.map +0 -1
  121. package/dist/src/tools/analyze.js +0 -205
  122. package/dist/src/tools/analyze.js.map +0 -1
  123. package/dist/src/tools/compare.d.ts +0 -149
  124. package/dist/src/tools/compare.d.ts.map +0 -1
  125. package/dist/src/tools/compare.js +0 -464
  126. package/dist/src/tools/compare.js.map +0 -1
  127. package/dist/src/tools/get-skill.d.ts +0 -107
  128. package/dist/src/tools/get-skill.d.ts.map +0 -1
  129. package/dist/src/tools/get-skill.js +0 -260
  130. package/dist/src/tools/get-skill.js.map +0 -1
  131. package/dist/src/tools/index.d.ts +0 -20
  132. package/dist/src/tools/index.d.ts.map +0 -1
  133. package/dist/src/tools/index.js +0 -20
  134. package/dist/src/tools/index.js.map +0 -1
  135. package/dist/src/tools/install.d.ts +0 -122
  136. package/dist/src/tools/install.d.ts.map +0 -1
  137. package/dist/src/tools/install.js +0 -326
  138. package/dist/src/tools/install.js.map +0 -1
  139. package/dist/src/tools/recommend.d.ts +0 -169
  140. package/dist/src/tools/recommend.d.ts.map +0 -1
  141. package/dist/src/tools/recommend.js +0 -357
  142. package/dist/src/tools/recommend.js.map +0 -1
  143. package/dist/src/tools/search.d.ts +0 -114
  144. package/dist/src/tools/search.d.ts.map +0 -1
  145. package/dist/src/tools/search.js +0 -247
  146. package/dist/src/tools/search.js.map +0 -1
  147. package/dist/src/tools/suggest.d.ts +0 -181
  148. package/dist/src/tools/suggest.d.ts.map +0 -1
  149. package/dist/src/tools/suggest.js +0 -310
  150. package/dist/src/tools/suggest.js.map +0 -1
  151. package/dist/src/tools/uninstall.d.ts +0 -123
  152. package/dist/src/tools/uninstall.d.ts.map +0 -1
  153. package/dist/src/tools/uninstall.js +0 -250
  154. package/dist/src/tools/uninstall.js.map +0 -1
  155. package/dist/src/tools/validate.d.ts +0 -122
  156. package/dist/src/tools/validate.d.ts.map +0 -1
  157. package/dist/src/tools/validate.js +0 -497
  158. package/dist/src/tools/validate.js.map +0 -1
  159. package/dist/src/utils/installed-skills.d.ts +0 -101
  160. package/dist/src/utils/installed-skills.d.ts.map +0 -1
  161. package/dist/src/utils/installed-skills.js +0 -220
  162. package/dist/src/utils/installed-skills.js.map +0 -1
  163. package/dist/src/utils/validation.d.ts +0 -95
  164. package/dist/src/utils/validation.d.ts.map +0 -1
  165. package/dist/src/utils/validation.js +0 -186
  166. package/dist/src/utils/validation.js.map +0 -1
  167. package/dist/src/webhooks/index.d.ts +0 -8
  168. package/dist/src/webhooks/index.d.ts.map +0 -1
  169. package/dist/src/webhooks/index.js +0 -9
  170. package/dist/src/webhooks/index.js.map +0 -1
  171. package/dist/src/webhooks/webhook-endpoint.d.ts +0 -149
  172. package/dist/src/webhooks/webhook-endpoint.d.ts.map +0 -1
  173. package/dist/src/webhooks/webhook-endpoint.js +0 -339
  174. package/dist/src/webhooks/webhook-endpoint.js.map +0 -1
  175. package/dist/tests/compare.test.d.ts +0 -6
  176. package/dist/tests/compare.test.d.ts.map +0 -1
  177. package/dist/tests/compare.test.js +0 -225
  178. package/dist/tests/compare.test.js.map +0 -1
  179. package/dist/tests/context/project-detector.test.d.ts +0 -6
  180. package/dist/tests/context/project-detector.test.d.ts.map +0 -1
  181. package/dist/tests/context/project-detector.test.js +0 -719
  182. package/dist/tests/context/project-detector.test.js.map +0 -1
  183. package/dist/tests/e2e/compare.e2e.test.d.ts +0 -10
  184. package/dist/tests/e2e/compare.e2e.test.d.ts.map +0 -1
  185. package/dist/tests/e2e/compare.e2e.test.js +0 -296
  186. package/dist/tests/e2e/compare.e2e.test.js.map +0 -1
  187. package/dist/tests/e2e/install-flow.e2e.test.d.ts +0 -10
  188. package/dist/tests/e2e/install-flow.e2e.test.d.ts.map +0 -1
  189. package/dist/tests/e2e/install-flow.e2e.test.js +0 -229
  190. package/dist/tests/e2e/install-flow.e2e.test.js.map +0 -1
  191. package/dist/tests/e2e/recommend.e2e.test.d.ts +0 -12
  192. package/dist/tests/e2e/recommend.e2e.test.d.ts.map +0 -1
  193. package/dist/tests/e2e/recommend.e2e.test.js +0 -357
  194. package/dist/tests/e2e/recommend.e2e.test.js.map +0 -1
  195. package/dist/tests/e2e/skill-flow.e2e.test.d.ts +0 -10
  196. package/dist/tests/e2e/skill-flow.e2e.test.d.ts.map +0 -1
  197. package/dist/tests/e2e/skill-flow.e2e.test.js +0 -311
  198. package/dist/tests/e2e/skill-flow.e2e.test.js.map +0 -1
  199. package/dist/tests/e2e/suggest.e2e.test.d.ts +0 -13
  200. package/dist/tests/e2e/suggest.e2e.test.d.ts.map +0 -1
  201. package/dist/tests/e2e/suggest.e2e.test.js +0 -367
  202. package/dist/tests/e2e/suggest.e2e.test.js.map +0 -1
  203. package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
  204. package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
  205. package/dist/tests/e2e/utils/baseline-collector.js +0 -211
  206. package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
  207. package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
  208. package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
  209. package/dist/tests/e2e/utils/hardcoded-detector.js +0 -255
  210. package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
  211. package/dist/tests/e2e/utils/index.d.ts +0 -7
  212. package/dist/tests/e2e/utils/index.d.ts.map +0 -1
  213. package/dist/tests/e2e/utils/index.js +0 -7
  214. package/dist/tests/e2e/utils/index.js.map +0 -1
  215. package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
  216. package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
  217. package/dist/tests/e2e/utils/linear-reporter.js +0 -232
  218. package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
  219. package/dist/tests/health.test.d.ts +0 -9
  220. package/dist/tests/health.test.d.ts.map +0 -1
  221. package/dist/tests/health.test.js +0 -308
  222. package/dist/tests/health.test.js.map +0 -1
  223. package/dist/tests/integration/analyze.integration.test.d.ts +0 -2
  224. package/dist/tests/integration/analyze.integration.test.d.ts.map +0 -1
  225. package/dist/tests/integration/analyze.integration.test.js +0 -244
  226. package/dist/tests/integration/analyze.integration.test.js.map +0 -1
  227. package/dist/tests/integration/compare.integration.test.d.ts +0 -2
  228. package/dist/tests/integration/compare.integration.test.d.ts.map +0 -1
  229. package/dist/tests/integration/compare.integration.test.js +0 -120
  230. package/dist/tests/integration/compare.integration.test.js.map +0 -1
  231. package/dist/tests/integration/fixtures/test-skills.d.ts +0 -62
  232. package/dist/tests/integration/fixtures/test-skills.d.ts.map +0 -1
  233. package/dist/tests/integration/fixtures/test-skills.js +0 -644
  234. package/dist/tests/integration/fixtures/test-skills.js.map +0 -1
  235. package/dist/tests/integration/get-skill.integration.test.d.ts +0 -6
  236. package/dist/tests/integration/get-skill.integration.test.d.ts.map +0 -1
  237. package/dist/tests/integration/get-skill.integration.test.js +0 -203
  238. package/dist/tests/integration/get-skill.integration.test.js.map +0 -1
  239. package/dist/tests/integration/github-api.integration.test.d.ts +0 -14
  240. package/dist/tests/integration/github-api.integration.test.d.ts.map +0 -1
  241. package/dist/tests/integration/github-api.integration.test.js +0 -190
  242. package/dist/tests/integration/github-api.integration.test.js.map +0 -1
  243. package/dist/tests/integration/install.integration.test.d.ts +0 -6
  244. package/dist/tests/integration/install.integration.test.d.ts.map +0 -1
  245. package/dist/tests/integration/install.integration.test.js +0 -282
  246. package/dist/tests/integration/install.integration.test.js.map +0 -1
  247. package/dist/tests/integration/recommend.integration.test.d.ts +0 -2
  248. package/dist/tests/integration/recommend.integration.test.d.ts.map +0 -1
  249. package/dist/tests/integration/recommend.integration.test.js +0 -217
  250. package/dist/tests/integration/recommend.integration.test.js.map +0 -1
  251. package/dist/tests/integration/search.integration.test.d.ts +0 -6
  252. package/dist/tests/integration/search.integration.test.d.ts.map +0 -1
  253. package/dist/tests/integration/search.integration.test.js +0 -229
  254. package/dist/tests/integration/search.integration.test.js.map +0 -1
  255. package/dist/tests/integration/setup.d.ts +0 -74
  256. package/dist/tests/integration/setup.d.ts.map +0 -1
  257. package/dist/tests/integration/setup.js +0 -131
  258. package/dist/tests/integration/setup.js.map +0 -1
  259. package/dist/tests/integration/uninstall.integration.test.d.ts +0 -6
  260. package/dist/tests/integration/uninstall.integration.test.d.ts.map +0 -1
  261. package/dist/tests/integration/uninstall.integration.test.js +0 -296
  262. package/dist/tests/integration/uninstall.integration.test.js.map +0 -1
  263. package/dist/tests/integration/validate.integration.test.d.ts +0 -2
  264. package/dist/tests/integration/validate.integration.test.d.ts.map +0 -1
  265. package/dist/tests/integration/validate.integration.test.js +0 -181
  266. package/dist/tests/integration/validate.integration.test.js.map +0 -1
  267. package/dist/tests/onboarding/first-run.test.d.ts +0 -7
  268. package/dist/tests/onboarding/first-run.test.d.ts.map +0 -1
  269. package/dist/tests/onboarding/first-run.test.js +0 -264
  270. package/dist/tests/onboarding/first-run.test.js.map +0 -1
  271. package/dist/tests/performance/search-performance.test.d.ts +0 -10
  272. package/dist/tests/performance/search-performance.test.d.ts.map +0 -1
  273. package/dist/tests/performance/search-performance.test.js +0 -222
  274. package/dist/tests/performance/search-performance.test.js.map +0 -1
  275. package/dist/tests/recommend.test.d.ts +0 -6
  276. package/dist/tests/recommend.test.d.ts.map +0 -1
  277. package/dist/tests/recommend.test.js +0 -210
  278. package/dist/tests/recommend.test.js.map +0 -1
  279. package/dist/tests/suggestions/suggestion-engine.test.d.ts +0 -6
  280. package/dist/tests/suggestions/suggestion-engine.test.d.ts.map +0 -1
  281. package/dist/tests/suggestions/suggestion-engine.test.js +0 -448
  282. package/dist/tests/suggestions/suggestion-engine.test.js.map +0 -1
  283. package/dist/tests/test-utils.d.ts +0 -74
  284. package/dist/tests/test-utils.d.ts.map +0 -1
  285. package/dist/tests/test-utils.js +0 -98
  286. package/dist/tests/test-utils.js.map +0 -1
  287. package/dist/tests/tools.test.d.ts +0 -5
  288. package/dist/tests/tools.test.d.ts.map +0 -1
  289. package/dist/tests/tools.test.js +0 -138
  290. package/dist/tests/tools.test.js.map +0 -1
  291. package/dist/tests/unit/installed-skills.test.d.ts +0 -6
  292. package/dist/tests/unit/installed-skills.test.d.ts.map +0 -1
  293. package/dist/tests/unit/installed-skills.test.js +0 -285
  294. package/dist/tests/unit/installed-skills.test.js.map +0 -1
  295. package/dist/tests/unit/logger.test.d.ts +0 -6
  296. package/dist/tests/unit/logger.test.d.ts.map +0 -1
  297. package/dist/tests/unit/logger.test.js +0 -281
  298. package/dist/tests/unit/logger.test.js.map +0 -1
  299. package/dist/tests/validate.test.d.ts +0 -5
  300. package/dist/tests/validate.test.d.ts.map +0 -1
  301. package/dist/tests/validate.test.js +0 -303
  302. package/dist/tests/validate.test.js.map +0 -1
  303. package/dist/tests/webhooks/proxy-trust.security.test.d.ts +0 -8
  304. package/dist/tests/webhooks/proxy-trust.security.test.d.ts.map +0 -1
  305. package/dist/tests/webhooks/proxy-trust.security.test.js +0 -145
  306. package/dist/tests/webhooks/proxy-trust.security.test.js.map +0 -1
  307. package/dist/tests/webhooks/rate-limiter.security.test.d.ts +0 -8
  308. package/dist/tests/webhooks/rate-limiter.security.test.d.ts.map +0 -1
  309. package/dist/tests/webhooks/rate-limiter.security.test.js +0 -122
  310. package/dist/tests/webhooks/rate-limiter.security.test.js.map +0 -1
  311. package/dist/vitest.config.d.ts +0 -6
  312. package/dist/vitest.config.d.ts.map +0 -1
  313. package/dist/vitest.config.js +0 -13
  314. package/dist/vitest.config.js.map +0 -1
@@ -1,244 +0,0 @@
1
- /**
2
- * SMI-756: Integration tests for analyze MCP tool
3
- * Tests codebase analysis with real filesystem
4
- */
5
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
6
- import * as fs from 'fs/promises';
7
- import * as path from 'path';
8
- import { createTestFilesystem } from './setup.js';
9
- import { executeAnalyze, formatAnalysisResults } from '../../src/tools/analyze.js';
10
- describe('Analyze Tool Integration', () => {
11
- let ctx;
12
- beforeEach(async () => {
13
- ctx = await createTestFilesystem();
14
- });
15
- afterEach(async () => {
16
- await ctx.cleanup();
17
- });
18
- /**
19
- * Helper to create test project files
20
- */
21
- async function createTestProject(files) {
22
- const projectDir = path.join(ctx.tempDir, 'test-project');
23
- await fs.mkdir(projectDir, { recursive: true });
24
- for (const [filePath, content] of Object.entries(files)) {
25
- const fullPath = path.join(projectDir, filePath);
26
- await fs.mkdir(path.dirname(fullPath), { recursive: true });
27
- await fs.writeFile(fullPath, content);
28
- }
29
- return projectDir;
30
- }
31
- describe('executeAnalyze', () => {
32
- it('should analyze a TypeScript project', async () => {
33
- const projectDir = await createTestProject({
34
- 'package.json': JSON.stringify({
35
- name: 'test-project',
36
- dependencies: {
37
- react: '^18.0.0',
38
- typescript: '^5.0.0',
39
- },
40
- }),
41
- 'src/index.ts': `
42
- import React from 'react';
43
- import { useState } from 'react';
44
-
45
- export function App() {
46
- const [count, setCount] = useState(0);
47
- return <div>{count}</div>;
48
- }
49
- `,
50
- 'src/utils.ts': `
51
- export function add(a: number, b: number): number {
52
- return a + b;
53
- }
54
-
55
- export const multiply = (a: number, b: number) => a * b;
56
- `,
57
- });
58
- const result = await executeAnalyze({
59
- path: projectDir,
60
- });
61
- expect(result.stats.total_files).toBeGreaterThan(0);
62
- expect(result.stats.file_types['.ts']).toBeGreaterThan(0);
63
- expect(result.imports.length).toBeGreaterThan(0);
64
- expect(result.imports).toContain('react');
65
- });
66
- it('should detect React framework', async () => {
67
- const projectDir = await createTestProject({
68
- 'package.json': JSON.stringify({
69
- dependencies: {
70
- react: '^18.0.0',
71
- 'react-dom': '^18.0.0',
72
- },
73
- }),
74
- 'App.tsx': `
75
- import React from 'react';
76
- export const App = () => <div>Hello</div>;
77
- `,
78
- });
79
- const result = await executeAnalyze({
80
- path: projectDir,
81
- });
82
- const reactFramework = result.frameworks.find((f) => f.name === 'React');
83
- expect(reactFramework).toBeDefined();
84
- expect(reactFramework?.confidence).toBeGreaterThan(0);
85
- });
86
- it('should detect Express framework', async () => {
87
- const projectDir = await createTestProject({
88
- 'package.json': JSON.stringify({
89
- dependencies: {
90
- express: '^4.18.0',
91
- },
92
- }),
93
- 'server.ts': `
94
- import express from 'express';
95
- const app = express();
96
- app.get('/', (req, res) => res.send('Hello'));
97
- `,
98
- });
99
- const result = await executeAnalyze({
100
- path: projectDir,
101
- });
102
- const expressFramework = result.frameworks.find((f) => f.name === 'Express');
103
- expect(expressFramework).toBeDefined();
104
- });
105
- it('should detect Vitest framework', async () => {
106
- const projectDir = await createTestProject({
107
- 'package.json': JSON.stringify({
108
- devDependencies: {
109
- vitest: '^1.0.0',
110
- },
111
- }),
112
- 'test.ts': `
113
- import { describe, it, expect } from 'vitest';
114
- describe('test', () => {
115
- it('works', () => expect(true).toBe(true));
116
- });
117
- `,
118
- });
119
- const result = await executeAnalyze({
120
- path: projectDir,
121
- include_dev_deps: true,
122
- });
123
- const vitestFramework = result.frameworks.find((f) => f.name === 'Vitest');
124
- expect(vitestFramework).toBeDefined();
125
- });
126
- it('should extract dependencies', async () => {
127
- const projectDir = await createTestProject({
128
- 'package.json': JSON.stringify({
129
- dependencies: {
130
- lodash: '^4.17.0',
131
- axios: '^1.0.0',
132
- },
133
- devDependencies: {
134
- typescript: '^5.0.0',
135
- },
136
- }),
137
- 'index.ts': 'export const x = 1;',
138
- });
139
- const result = await executeAnalyze({
140
- path: projectDir,
141
- include_dev_deps: true,
142
- });
143
- expect(result.dependencies.length).toBeGreaterThan(0);
144
- const prodDeps = result.dependencies.filter((d) => !d.is_dev);
145
- const devDeps = result.dependencies.filter((d) => d.is_dev);
146
- expect(prodDeps.some((d) => d.name === 'lodash')).toBe(true);
147
- expect(devDeps.some((d) => d.name === 'typescript')).toBe(true);
148
- });
149
- it('should respect max_files option', async () => {
150
- const files = {};
151
- for (let i = 0; i < 20; i++) {
152
- files[`file${i}.ts`] = `export const x${i} = ${i};`;
153
- }
154
- const projectDir = await createTestProject(files);
155
- const result = await executeAnalyze({
156
- path: projectDir,
157
- max_files: 5,
158
- });
159
- expect(result.stats.total_files).toBe(5);
160
- });
161
- it('should exclude specified directories', async () => {
162
- const projectDir = await createTestProject({
163
- 'src/app.ts': 'export const app = 1;',
164
- 'tests/test.ts': 'export const test = 1;',
165
- 'build/out.ts': 'export const out = 1;',
166
- });
167
- const result = await executeAnalyze({
168
- path: projectDir,
169
- exclude_dirs: ['tests', 'build'],
170
- });
171
- expect(result.stats.total_files).toBe(1);
172
- });
173
- it('should generate summary', async () => {
174
- const projectDir = await createTestProject({
175
- 'package.json': JSON.stringify({
176
- dependencies: { react: '^18.0.0' },
177
- }),
178
- 'app.tsx': `import React from 'react';`,
179
- });
180
- const result = await executeAnalyze({
181
- path: projectDir,
182
- });
183
- expect(result.summary).toBeDefined();
184
- expect(result.summary.length).toBeGreaterThan(0);
185
- });
186
- it('should track timing information', async () => {
187
- const projectDir = await createTestProject({
188
- 'index.ts': 'export const x = 1;',
189
- });
190
- const result = await executeAnalyze({
191
- path: projectDir,
192
- });
193
- expect(result.timing.duration_ms).toBeGreaterThanOrEqual(0);
194
- });
195
- it('should handle empty directory', async () => {
196
- const emptyDir = path.join(ctx.tempDir, 'empty-project');
197
- await fs.mkdir(emptyDir, { recursive: true });
198
- const result = await executeAnalyze({
199
- path: emptyDir,
200
- });
201
- expect(result.stats.total_files).toBe(0);
202
- expect(result.imports).toHaveLength(0);
203
- expect(result.frameworks).toHaveLength(0);
204
- });
205
- it('should throw for non-existent path', async () => {
206
- await expect(executeAnalyze({
207
- path: '/non/existent/path',
208
- })).rejects.toThrow();
209
- });
210
- });
211
- describe('formatAnalysisResults', () => {
212
- it('should format analysis for terminal display', async () => {
213
- const projectDir = await createTestProject({
214
- 'package.json': JSON.stringify({
215
- dependencies: { react: '^18.0.0' },
216
- }),
217
- 'app.tsx': `import React from 'react';`,
218
- });
219
- const result = await executeAnalyze({
220
- path: projectDir,
221
- });
222
- const formatted = formatAnalysisResults(result);
223
- expect(formatted).toContain('Codebase Analysis');
224
- expect(formatted).toContain('Files:');
225
- expect(formatted).toContain('Duration:');
226
- });
227
- it('should display frameworks', async () => {
228
- const projectDir = await createTestProject({
229
- 'package.json': JSON.stringify({
230
- dependencies: { react: '^18.0.0' },
231
- }),
232
- 'app.tsx': `import React from 'react';`,
233
- });
234
- const result = await executeAnalyze({
235
- path: projectDir,
236
- });
237
- const formatted = formatAnalysisResults(result);
238
- if (result.frameworks.length > 0) {
239
- expect(formatted).toContain('Frameworks detected');
240
- }
241
- });
242
- });
243
- });
244
- //# sourceMappingURL=analyze.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyze.integration.test.js","sourceRoot":"","sources":["../../../tests/integration/analyze.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=compare.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare.integration.test.d.ts","sourceRoot":"","sources":["../../../tests/integration/compare.integration.test.ts"],"names":[],"mappings":""}
@@ -1,120 +0,0 @@
1
- /**
2
- * SMI-756: Integration tests for compare MCP tool
3
- * Tests skill comparison with real database
4
- */
5
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
6
- import { createTestDatabase } from './setup.js';
7
- import { executeCompare, formatComparisonResults } from '../../src/tools/compare.js';
8
- describe('Compare Tool Integration', () => {
9
- let ctx;
10
- beforeEach(async () => {
11
- ctx = await createTestDatabase();
12
- });
13
- afterEach(async () => {
14
- await ctx.cleanup();
15
- });
16
- describe('executeCompare', () => {
17
- it('should compare two existing skills', async () => {
18
- // Note: These skills are seeded in createTestDatabase
19
- const result = await executeCompare({
20
- skill_a: 'anthropic/commit',
21
- skill_b: 'anthropic/review-pr',
22
- }, ctx);
23
- expect(result.comparison.a).toBeDefined();
24
- expect(result.comparison.b).toBeDefined();
25
- expect(result.comparison.a.id).toBe('anthropic/commit');
26
- expect(result.comparison.b.id).toBe('anthropic/review-pr');
27
- });
28
- it('should include quality scores in comparison', async () => {
29
- const result = await executeCompare({
30
- skill_a: 'anthropic/commit',
31
- skill_b: 'community/jest-helper',
32
- }, ctx);
33
- expect(result.comparison.a.quality_score).toBeDefined();
34
- expect(result.comparison.b.quality_score).toBeDefined();
35
- expect(result.comparison.a.quality_score).toBeGreaterThanOrEqual(0);
36
- expect(result.comparison.b.quality_score).toBeGreaterThanOrEqual(0);
37
- });
38
- it('should include trust tiers in comparison', async () => {
39
- const result = await executeCompare({
40
- skill_a: 'anthropic/commit',
41
- skill_b: 'community/docker-compose',
42
- }, ctx);
43
- expect(result.comparison.a.trust_tier).toBe('verified');
44
- expect(result.comparison.b.trust_tier).toBe('community');
45
- });
46
- it('should list differences between skills', async () => {
47
- const result = await executeCompare({
48
- skill_a: 'anthropic/commit',
49
- skill_b: 'community/jest-helper',
50
- }, ctx);
51
- expect(result.differences).toBeDefined();
52
- expect(Array.isArray(result.differences)).toBe(true);
53
- // Should have at least some differences
54
- for (const diff of result.differences) {
55
- expect(diff.field).toBeDefined();
56
- expect(diff.a_value).toBeDefined();
57
- expect(diff.b_value).toBeDefined();
58
- }
59
- });
60
- it('should provide a recommendation', async () => {
61
- const result = await executeCompare({
62
- skill_a: 'anthropic/commit',
63
- skill_b: 'community/vitest-helper',
64
- }, ctx);
65
- expect(result.recommendation).toBeDefined();
66
- expect(typeof result.recommendation).toBe('string');
67
- expect(result.recommendation.length).toBeGreaterThan(0);
68
- });
69
- it('should include tags in summaries', async () => {
70
- const result = await executeCompare({
71
- skill_a: 'anthropic/commit',
72
- skill_b: 'anthropic/review-pr',
73
- }, ctx);
74
- expect(result.comparison.a.tags).toBeDefined();
75
- expect(result.comparison.b.tags).toBeDefined();
76
- expect(Array.isArray(result.comparison.a.tags)).toBe(true);
77
- expect(Array.isArray(result.comparison.b.tags)).toBe(true);
78
- });
79
- it('should track timing information', async () => {
80
- const result = await executeCompare({
81
- skill_a: 'anthropic/commit',
82
- skill_b: 'anthropic/review-pr',
83
- }, ctx);
84
- expect(result.timing.totalMs).toBeGreaterThanOrEqual(0);
85
- });
86
- it('should throw for non-existent skill', async () => {
87
- await expect(executeCompare({
88
- skill_a: 'non-existent/skill',
89
- skill_b: 'anthropic/commit',
90
- }, ctx)).rejects.toThrow();
91
- });
92
- it('should throw when both skills are the same', async () => {
93
- await expect(executeCompare({
94
- skill_a: 'anthropic/commit',
95
- skill_b: 'anthropic/commit',
96
- }, ctx)).rejects.toThrow();
97
- });
98
- });
99
- describe('formatComparisonResults', () => {
100
- it('should format comparison for terminal display', async () => {
101
- const result = await executeCompare({
102
- skill_a: 'anthropic/commit',
103
- skill_b: 'anthropic/review-pr',
104
- }, ctx);
105
- const formatted = formatComparisonResults(result);
106
- expect(formatted).toContain('Skill Comparison');
107
- expect(formatted).toContain('commit');
108
- expect(formatted).toContain('review-pr');
109
- });
110
- it('should display recommendation', async () => {
111
- const result = await executeCompare({
112
- skill_a: 'anthropic/commit',
113
- skill_b: 'community/docker-compose',
114
- }, ctx);
115
- const formatted = formatComparisonResults(result);
116
- expect(formatted).toContain('Recommendation');
117
- });
118
- });
119
- });
120
- //# sourceMappingURL=compare.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare.integration.test.js","sourceRoot":"","sources":["../../../tests/integration/compare.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- /**
2
- * SMI-903: Comprehensive test skill fixtures
3
- * Provides 50+ skills across all categories and trust tiers for realistic testing
4
- */
5
- import type { SkillRepository } from '@skillsmith/core';
6
- /**
7
- * Test skill data structure matching SkillRepository.createBatch expectations
8
- */
9
- interface TestSkillData {
10
- id: string;
11
- name: string;
12
- description: string;
13
- author: string;
14
- repoUrl: string;
15
- qualityScore: number;
16
- trustTier: 'verified' | 'community' | 'experimental' | 'unknown';
17
- tags: string[];
18
- }
19
- /**
20
- * Comprehensive test skills covering all categories and trust tiers
21
- * Total: 58 skills (updated for SMI-907)
22
- * - Categories: development, testing, documentation, devops, database, security, productivity, integration, ai-ml, other
23
- * - Trust tiers: verified (8), community (26), experimental (16), unknown (8)
24
- */
25
- export declare const TEST_SKILLS: TestSkillData[];
26
- /**
27
- * Seed all test skills into the repository
28
- */
29
- export declare function seedTestSkills(repo: SkillRepository): void;
30
- /**
31
- * Get skills by category for targeted testing
32
- */
33
- export declare function getSkillsByCategory(category: string): TestSkillData[];
34
- /**
35
- * Get skills by trust tier for targeted testing
36
- */
37
- export declare function getSkillsByTrustTier(tier: 'verified' | 'community' | 'experimental' | 'unknown'): TestSkillData[];
38
- /**
39
- * Summary statistics for test data validation
40
- */
41
- export declare const TEST_SKILLS_STATS: {
42
- total: number;
43
- byTrustTier: {
44
- verified: number;
45
- community: number;
46
- experimental: number;
47
- unknown: number;
48
- };
49
- byCategory: {
50
- development: number;
51
- testing: number;
52
- documentation: number;
53
- devops: number;
54
- database: number;
55
- security: number;
56
- productivity: number;
57
- integration: number;
58
- 'ai-ml': number;
59
- };
60
- };
61
- export {};
62
- //# sourceMappingURL=test-skills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-skills.d.ts","sourceRoot":"","sources":["../../../../tests/integration/fixtures/test-skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD;;GAEG;AACH,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,CAAA;IAChE,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,EAulBtC,CAAA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAErE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAC1D,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;CAmB7B,CAAA"}