@skillsmith/mcp-server 0.2.3 → 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 (315) hide show
  1. package/package.json +3 -2
  2. package/src/assets/docs/USER_GUIDE.md +192 -0
  3. package/src/assets/skills/skillsmith/SKILL.md +147 -0
  4. package/src/assets/skills/skillsmith/docs/QUOTAS.md +182 -0
  5. package/src/assets/skills/skillsmith/docs/SECURITY.md +174 -0
  6. package/src/assets/skills/skillsmith/docs/TRUST_TIERS.md +142 -0
  7. package/dist/.tsbuildinfo +0 -1
  8. package/dist/src/__tests__/get-skill.test.d.ts +0 -6
  9. package/dist/src/__tests__/get-skill.test.d.ts.map +0 -1
  10. package/dist/src/__tests__/get-skill.test.js +0 -88
  11. package/dist/src/__tests__/get-skill.test.js.map +0 -1
  12. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts +0 -7
  13. package/dist/src/__tests__/middleware/errorFormatter.test.d.ts.map +0 -1
  14. package/dist/src/__tests__/middleware/errorFormatter.test.js +0 -304
  15. package/dist/src/__tests__/middleware/errorFormatter.test.js.map +0 -1
  16. package/dist/src/__tests__/middleware/license.test.d.ts +0 -7
  17. package/dist/src/__tests__/middleware/license.test.d.ts.map +0 -1
  18. package/dist/src/__tests__/middleware/license.test.js +0 -500
  19. package/dist/src/__tests__/middleware/license.test.js.map +0 -1
  20. package/dist/src/__tests__/search.test.d.ts +0 -6
  21. package/dist/src/__tests__/search.test.d.ts.map +0 -1
  22. package/dist/src/__tests__/search.test.js +0 -86
  23. package/dist/src/__tests__/search.test.js.map +0 -1
  24. package/dist/src/__tests__/test-utils.d.ts +0 -20
  25. package/dist/src/__tests__/test-utils.d.ts.map +0 -1
  26. package/dist/src/__tests__/test-utils.js +0 -91
  27. package/dist/src/__tests__/test-utils.js.map +0 -1
  28. package/dist/src/context/index.d.ts +0 -19
  29. package/dist/src/context/index.d.ts.map +0 -1
  30. package/dist/src/context/index.js +0 -25
  31. package/dist/src/context/index.js.map +0 -1
  32. package/dist/src/context/project-detector.d.ts +0 -145
  33. package/dist/src/context/project-detector.d.ts.map +0 -1
  34. package/dist/src/context/project-detector.js +0 -321
  35. package/dist/src/context/project-detector.js.map +0 -1
  36. package/dist/src/context.d.ts +0 -135
  37. package/dist/src/context.d.ts.map +0 -1
  38. package/dist/src/context.js +0 -191
  39. package/dist/src/context.js.map +0 -1
  40. package/dist/src/core-shim.d.ts +0 -7
  41. package/dist/src/core-shim.d.ts.map +0 -1
  42. package/dist/src/core-shim.js +0 -9
  43. package/dist/src/core-shim.js.map +0 -1
  44. package/dist/src/health/healthCheck.d.ts +0 -88
  45. package/dist/src/health/healthCheck.d.ts.map +0 -1
  46. package/dist/src/health/healthCheck.js +0 -117
  47. package/dist/src/health/healthCheck.js.map +0 -1
  48. package/dist/src/health/index.d.ts +0 -21
  49. package/dist/src/health/index.d.ts.map +0 -1
  50. package/dist/src/health/index.js +0 -21
  51. package/dist/src/health/index.js.map +0 -1
  52. package/dist/src/health/readinessCheck.d.ts +0 -139
  53. package/dist/src/health/readinessCheck.d.ts.map +0 -1
  54. package/dist/src/health/readinessCheck.js +0 -266
  55. package/dist/src/health/readinessCheck.js.map +0 -1
  56. package/dist/src/index.d.ts +0 -8
  57. package/dist/src/index.d.ts.map +0 -1
  58. package/dist/src/index.js +0 -178
  59. package/dist/src/index.js.map +0 -1
  60. package/dist/src/index.test.d.ts +0 -2
  61. package/dist/src/index.test.d.ts.map +0 -1
  62. package/dist/src/index.test.js +0 -43
  63. package/dist/src/index.test.js.map +0 -1
  64. package/dist/src/logger.d.ts +0 -26
  65. package/dist/src/logger.d.ts.map +0 -1
  66. package/dist/src/logger.js +0 -179
  67. package/dist/src/logger.js.map +0 -1
  68. package/dist/src/middleware/__tests__/csp.test.d.ts +0 -2
  69. package/dist/src/middleware/__tests__/csp.test.d.ts.map +0 -1
  70. package/dist/src/middleware/__tests__/csp.test.js +0 -390
  71. package/dist/src/middleware/__tests__/csp.test.js.map +0 -1
  72. package/dist/src/middleware/csp.d.ts +0 -103
  73. package/dist/src/middleware/csp.d.ts.map +0 -1
  74. package/dist/src/middleware/csp.js +0 -273
  75. package/dist/src/middleware/csp.js.map +0 -1
  76. package/dist/src/middleware/degradation.d.ts +0 -105
  77. package/dist/src/middleware/degradation.d.ts.map +0 -1
  78. package/dist/src/middleware/degradation.js +0 -319
  79. package/dist/src/middleware/degradation.js.map +0 -1
  80. package/dist/src/middleware/errorFormatter.d.ts +0 -119
  81. package/dist/src/middleware/errorFormatter.d.ts.map +0 -1
  82. package/dist/src/middleware/errorFormatter.js +0 -294
  83. package/dist/src/middleware/errorFormatter.js.map +0 -1
  84. package/dist/src/middleware/index.d.ts +0 -11
  85. package/dist/src/middleware/index.d.ts.map +0 -1
  86. package/dist/src/middleware/index.js +0 -16
  87. package/dist/src/middleware/index.js.map +0 -1
  88. package/dist/src/middleware/license.d.ts +0 -169
  89. package/dist/src/middleware/license.d.ts.map +0 -1
  90. package/dist/src/middleware/license.js +0 -292
  91. package/dist/src/middleware/license.js.map +0 -1
  92. package/dist/src/middleware/quota.d.ts +0 -182
  93. package/dist/src/middleware/quota.d.ts.map +0 -1
  94. package/dist/src/middleware/quota.js +0 -309
  95. package/dist/src/middleware/quota.js.map +0 -1
  96. package/dist/src/middleware/toolFeatureMapping.d.ts +0 -36
  97. package/dist/src/middleware/toolFeatureMapping.d.ts.map +0 -1
  98. package/dist/src/middleware/toolFeatureMapping.js +0 -96
  99. package/dist/src/middleware/toolFeatureMapping.js.map +0 -1
  100. package/dist/src/onboarding/first-run.d.ts +0 -64
  101. package/dist/src/onboarding/first-run.d.ts.map +0 -1
  102. package/dist/src/onboarding/first-run.js +0 -77
  103. package/dist/src/onboarding/first-run.js.map +0 -1
  104. package/dist/src/onboarding/index.d.ts +0 -7
  105. package/dist/src/onboarding/index.d.ts.map +0 -1
  106. package/dist/src/onboarding/index.js +0 -7
  107. package/dist/src/onboarding/index.js.map +0 -1
  108. package/dist/src/suggestions/index.d.ts +0 -21
  109. package/dist/src/suggestions/index.d.ts.map +0 -1
  110. package/dist/src/suggestions/index.js +0 -20
  111. package/dist/src/suggestions/index.js.map +0 -1
  112. package/dist/src/suggestions/suggestion-engine.d.ts +0 -185
  113. package/dist/src/suggestions/suggestion-engine.d.ts.map +0 -1
  114. package/dist/src/suggestions/suggestion-engine.js +0 -352
  115. package/dist/src/suggestions/suggestion-engine.js.map +0 -1
  116. package/dist/src/suggestions/types.d.ts +0 -88
  117. package/dist/src/suggestions/types.d.ts.map +0 -1
  118. package/dist/src/suggestions/types.js +0 -21
  119. package/dist/src/suggestions/types.js.map +0 -1
  120. package/dist/src/tools/analyze.d.ts +0 -151
  121. package/dist/src/tools/analyze.d.ts.map +0 -1
  122. package/dist/src/tools/analyze.js +0 -205
  123. package/dist/src/tools/analyze.js.map +0 -1
  124. package/dist/src/tools/compare.d.ts +0 -149
  125. package/dist/src/tools/compare.d.ts.map +0 -1
  126. package/dist/src/tools/compare.js +0 -464
  127. package/dist/src/tools/compare.js.map +0 -1
  128. package/dist/src/tools/get-skill.d.ts +0 -107
  129. package/dist/src/tools/get-skill.d.ts.map +0 -1
  130. package/dist/src/tools/get-skill.js +0 -260
  131. package/dist/src/tools/get-skill.js.map +0 -1
  132. package/dist/src/tools/index.d.ts +0 -20
  133. package/dist/src/tools/index.d.ts.map +0 -1
  134. package/dist/src/tools/index.js +0 -20
  135. package/dist/src/tools/index.js.map +0 -1
  136. package/dist/src/tools/install.d.ts +0 -122
  137. package/dist/src/tools/install.d.ts.map +0 -1
  138. package/dist/src/tools/install.js +0 -326
  139. package/dist/src/tools/install.js.map +0 -1
  140. package/dist/src/tools/recommend.d.ts +0 -169
  141. package/dist/src/tools/recommend.d.ts.map +0 -1
  142. package/dist/src/tools/recommend.js +0 -357
  143. package/dist/src/tools/recommend.js.map +0 -1
  144. package/dist/src/tools/search.d.ts +0 -114
  145. package/dist/src/tools/search.d.ts.map +0 -1
  146. package/dist/src/tools/search.js +0 -247
  147. package/dist/src/tools/search.js.map +0 -1
  148. package/dist/src/tools/suggest.d.ts +0 -181
  149. package/dist/src/tools/suggest.d.ts.map +0 -1
  150. package/dist/src/tools/suggest.js +0 -310
  151. package/dist/src/tools/suggest.js.map +0 -1
  152. package/dist/src/tools/uninstall.d.ts +0 -123
  153. package/dist/src/tools/uninstall.d.ts.map +0 -1
  154. package/dist/src/tools/uninstall.js +0 -250
  155. package/dist/src/tools/uninstall.js.map +0 -1
  156. package/dist/src/tools/validate.d.ts +0 -122
  157. package/dist/src/tools/validate.d.ts.map +0 -1
  158. package/dist/src/tools/validate.js +0 -497
  159. package/dist/src/tools/validate.js.map +0 -1
  160. package/dist/src/utils/installed-skills.d.ts +0 -101
  161. package/dist/src/utils/installed-skills.d.ts.map +0 -1
  162. package/dist/src/utils/installed-skills.js +0 -220
  163. package/dist/src/utils/installed-skills.js.map +0 -1
  164. package/dist/src/utils/validation.d.ts +0 -95
  165. package/dist/src/utils/validation.d.ts.map +0 -1
  166. package/dist/src/utils/validation.js +0 -186
  167. package/dist/src/utils/validation.js.map +0 -1
  168. package/dist/src/webhooks/index.d.ts +0 -8
  169. package/dist/src/webhooks/index.d.ts.map +0 -1
  170. package/dist/src/webhooks/index.js +0 -9
  171. package/dist/src/webhooks/index.js.map +0 -1
  172. package/dist/src/webhooks/webhook-endpoint.d.ts +0 -149
  173. package/dist/src/webhooks/webhook-endpoint.d.ts.map +0 -1
  174. package/dist/src/webhooks/webhook-endpoint.js +0 -339
  175. package/dist/src/webhooks/webhook-endpoint.js.map +0 -1
  176. package/dist/tests/compare.test.d.ts +0 -6
  177. package/dist/tests/compare.test.d.ts.map +0 -1
  178. package/dist/tests/compare.test.js +0 -225
  179. package/dist/tests/compare.test.js.map +0 -1
  180. package/dist/tests/context/project-detector.test.d.ts +0 -6
  181. package/dist/tests/context/project-detector.test.d.ts.map +0 -1
  182. package/dist/tests/context/project-detector.test.js +0 -719
  183. package/dist/tests/context/project-detector.test.js.map +0 -1
  184. package/dist/tests/e2e/compare.e2e.test.d.ts +0 -10
  185. package/dist/tests/e2e/compare.e2e.test.d.ts.map +0 -1
  186. package/dist/tests/e2e/compare.e2e.test.js +0 -296
  187. package/dist/tests/e2e/compare.e2e.test.js.map +0 -1
  188. package/dist/tests/e2e/install-flow.e2e.test.d.ts +0 -10
  189. package/dist/tests/e2e/install-flow.e2e.test.d.ts.map +0 -1
  190. package/dist/tests/e2e/install-flow.e2e.test.js +0 -229
  191. package/dist/tests/e2e/install-flow.e2e.test.js.map +0 -1
  192. package/dist/tests/e2e/recommend.e2e.test.d.ts +0 -12
  193. package/dist/tests/e2e/recommend.e2e.test.d.ts.map +0 -1
  194. package/dist/tests/e2e/recommend.e2e.test.js +0 -357
  195. package/dist/tests/e2e/recommend.e2e.test.js.map +0 -1
  196. package/dist/tests/e2e/skill-flow.e2e.test.d.ts +0 -10
  197. package/dist/tests/e2e/skill-flow.e2e.test.d.ts.map +0 -1
  198. package/dist/tests/e2e/skill-flow.e2e.test.js +0 -311
  199. package/dist/tests/e2e/skill-flow.e2e.test.js.map +0 -1
  200. package/dist/tests/e2e/suggest.e2e.test.d.ts +0 -13
  201. package/dist/tests/e2e/suggest.e2e.test.d.ts.map +0 -1
  202. package/dist/tests/e2e/suggest.e2e.test.js +0 -367
  203. package/dist/tests/e2e/suggest.e2e.test.js.map +0 -1
  204. package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
  205. package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
  206. package/dist/tests/e2e/utils/baseline-collector.js +0 -211
  207. package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
  208. package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
  209. package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
  210. package/dist/tests/e2e/utils/hardcoded-detector.js +0 -255
  211. package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
  212. package/dist/tests/e2e/utils/index.d.ts +0 -7
  213. package/dist/tests/e2e/utils/index.d.ts.map +0 -1
  214. package/dist/tests/e2e/utils/index.js +0 -7
  215. package/dist/tests/e2e/utils/index.js.map +0 -1
  216. package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
  217. package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
  218. package/dist/tests/e2e/utils/linear-reporter.js +0 -232
  219. package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
  220. package/dist/tests/health.test.d.ts +0 -9
  221. package/dist/tests/health.test.d.ts.map +0 -1
  222. package/dist/tests/health.test.js +0 -308
  223. package/dist/tests/health.test.js.map +0 -1
  224. package/dist/tests/integration/analyze.integration.test.d.ts +0 -2
  225. package/dist/tests/integration/analyze.integration.test.d.ts.map +0 -1
  226. package/dist/tests/integration/analyze.integration.test.js +0 -244
  227. package/dist/tests/integration/analyze.integration.test.js.map +0 -1
  228. package/dist/tests/integration/compare.integration.test.d.ts +0 -2
  229. package/dist/tests/integration/compare.integration.test.d.ts.map +0 -1
  230. package/dist/tests/integration/compare.integration.test.js +0 -120
  231. package/dist/tests/integration/compare.integration.test.js.map +0 -1
  232. package/dist/tests/integration/fixtures/test-skills.d.ts +0 -62
  233. package/dist/tests/integration/fixtures/test-skills.d.ts.map +0 -1
  234. package/dist/tests/integration/fixtures/test-skills.js +0 -644
  235. package/dist/tests/integration/fixtures/test-skills.js.map +0 -1
  236. package/dist/tests/integration/get-skill.integration.test.d.ts +0 -6
  237. package/dist/tests/integration/get-skill.integration.test.d.ts.map +0 -1
  238. package/dist/tests/integration/get-skill.integration.test.js +0 -203
  239. package/dist/tests/integration/get-skill.integration.test.js.map +0 -1
  240. package/dist/tests/integration/github-api.integration.test.d.ts +0 -14
  241. package/dist/tests/integration/github-api.integration.test.d.ts.map +0 -1
  242. package/dist/tests/integration/github-api.integration.test.js +0 -190
  243. package/dist/tests/integration/github-api.integration.test.js.map +0 -1
  244. package/dist/tests/integration/install.integration.test.d.ts +0 -6
  245. package/dist/tests/integration/install.integration.test.d.ts.map +0 -1
  246. package/dist/tests/integration/install.integration.test.js +0 -282
  247. package/dist/tests/integration/install.integration.test.js.map +0 -1
  248. package/dist/tests/integration/recommend.integration.test.d.ts +0 -2
  249. package/dist/tests/integration/recommend.integration.test.d.ts.map +0 -1
  250. package/dist/tests/integration/recommend.integration.test.js +0 -217
  251. package/dist/tests/integration/recommend.integration.test.js.map +0 -1
  252. package/dist/tests/integration/search.integration.test.d.ts +0 -6
  253. package/dist/tests/integration/search.integration.test.d.ts.map +0 -1
  254. package/dist/tests/integration/search.integration.test.js +0 -229
  255. package/dist/tests/integration/search.integration.test.js.map +0 -1
  256. package/dist/tests/integration/setup.d.ts +0 -74
  257. package/dist/tests/integration/setup.d.ts.map +0 -1
  258. package/dist/tests/integration/setup.js +0 -131
  259. package/dist/tests/integration/setup.js.map +0 -1
  260. package/dist/tests/integration/uninstall.integration.test.d.ts +0 -6
  261. package/dist/tests/integration/uninstall.integration.test.d.ts.map +0 -1
  262. package/dist/tests/integration/uninstall.integration.test.js +0 -296
  263. package/dist/tests/integration/uninstall.integration.test.js.map +0 -1
  264. package/dist/tests/integration/validate.integration.test.d.ts +0 -2
  265. package/dist/tests/integration/validate.integration.test.d.ts.map +0 -1
  266. package/dist/tests/integration/validate.integration.test.js +0 -181
  267. package/dist/tests/integration/validate.integration.test.js.map +0 -1
  268. package/dist/tests/onboarding/first-run.test.d.ts +0 -7
  269. package/dist/tests/onboarding/first-run.test.d.ts.map +0 -1
  270. package/dist/tests/onboarding/first-run.test.js +0 -258
  271. package/dist/tests/onboarding/first-run.test.js.map +0 -1
  272. package/dist/tests/performance/search-performance.test.d.ts +0 -10
  273. package/dist/tests/performance/search-performance.test.d.ts.map +0 -1
  274. package/dist/tests/performance/search-performance.test.js +0 -222
  275. package/dist/tests/performance/search-performance.test.js.map +0 -1
  276. package/dist/tests/recommend.test.d.ts +0 -6
  277. package/dist/tests/recommend.test.d.ts.map +0 -1
  278. package/dist/tests/recommend.test.js +0 -210
  279. package/dist/tests/recommend.test.js.map +0 -1
  280. package/dist/tests/suggestions/suggestion-engine.test.d.ts +0 -6
  281. package/dist/tests/suggestions/suggestion-engine.test.d.ts.map +0 -1
  282. package/dist/tests/suggestions/suggestion-engine.test.js +0 -448
  283. package/dist/tests/suggestions/suggestion-engine.test.js.map +0 -1
  284. package/dist/tests/test-utils.d.ts +0 -74
  285. package/dist/tests/test-utils.d.ts.map +0 -1
  286. package/dist/tests/test-utils.js +0 -98
  287. package/dist/tests/test-utils.js.map +0 -1
  288. package/dist/tests/tools.test.d.ts +0 -5
  289. package/dist/tests/tools.test.d.ts.map +0 -1
  290. package/dist/tests/tools.test.js +0 -138
  291. package/dist/tests/tools.test.js.map +0 -1
  292. package/dist/tests/unit/installed-skills.test.d.ts +0 -6
  293. package/dist/tests/unit/installed-skills.test.d.ts.map +0 -1
  294. package/dist/tests/unit/installed-skills.test.js +0 -285
  295. package/dist/tests/unit/installed-skills.test.js.map +0 -1
  296. package/dist/tests/unit/logger.test.d.ts +0 -6
  297. package/dist/tests/unit/logger.test.d.ts.map +0 -1
  298. package/dist/tests/unit/logger.test.js +0 -281
  299. package/dist/tests/unit/logger.test.js.map +0 -1
  300. package/dist/tests/validate.test.d.ts +0 -5
  301. package/dist/tests/validate.test.d.ts.map +0 -1
  302. package/dist/tests/validate.test.js +0 -303
  303. package/dist/tests/validate.test.js.map +0 -1
  304. package/dist/tests/webhooks/proxy-trust.security.test.d.ts +0 -8
  305. package/dist/tests/webhooks/proxy-trust.security.test.d.ts.map +0 -1
  306. package/dist/tests/webhooks/proxy-trust.security.test.js +0 -145
  307. package/dist/tests/webhooks/proxy-trust.security.test.js.map +0 -1
  308. package/dist/tests/webhooks/rate-limiter.security.test.d.ts +0 -8
  309. package/dist/tests/webhooks/rate-limiter.security.test.d.ts.map +0 -1
  310. package/dist/tests/webhooks/rate-limiter.security.test.js +0 -122
  311. package/dist/tests/webhooks/rate-limiter.security.test.js.map +0 -1
  312. package/dist/vitest.config.d.ts +0 -6
  313. package/dist/vitest.config.d.ts.map +0 -1
  314. package/dist/vitest.config.js +0 -13
  315. 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"}