@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,229 +0,0 @@
1
- /**
2
- * SMI-616: Search Tool Integration Tests
3
- * Tests the search tool with a real SQLite database
4
- */
5
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
6
- import { createTestDatabase } from './setup.js';
7
- describe('Search Tool Integration Tests', () => {
8
- let dbContext;
9
- beforeAll(async () => {
10
- dbContext = await createTestDatabase();
11
- });
12
- afterAll(async () => {
13
- await dbContext.cleanup();
14
- });
15
- describe('Basic Search Functionality', () => {
16
- it('should find skills by name', () => {
17
- const results = dbContext.searchService.search({
18
- query: 'commit',
19
- limit: 10,
20
- offset: 0,
21
- });
22
- expect(results.items.length).toBeGreaterThan(0);
23
- expect(results.items[0].skill.name).toBe('commit');
24
- });
25
- it('should find skills by description keywords', () => {
26
- const results = dbContext.searchService.search({
27
- query: 'docker',
28
- limit: 10,
29
- offset: 0,
30
- });
31
- expect(results.items.length).toBeGreaterThan(0);
32
- const skillNames = results.items.map((r) => r.skill.name);
33
- expect(skillNames).toContain('docker-compose');
34
- });
35
- it('should return empty results for non-matching queries', () => {
36
- const results = dbContext.searchService.search({
37
- query: 'nonexistentskillxyz123',
38
- limit: 10,
39
- offset: 0,
40
- });
41
- expect(results.items.length).toBe(0);
42
- expect(results.total).toBe(0);
43
- });
44
- });
45
- describe('Search with Filters', () => {
46
- it('should filter by trust tier', () => {
47
- const results = dbContext.searchService.search({
48
- query: 'test react',
49
- limit: 10,
50
- offset: 0,
51
- trustTier: 'community',
52
- });
53
- for (const result of results.items) {
54
- expect(result.skill.trustTier).toBe('community');
55
- }
56
- });
57
- it('should filter by minimum quality score', () => {
58
- const results = dbContext.searchService.search({
59
- query: 'code',
60
- limit: 10,
61
- offset: 0,
62
- minQualityScore: 0.9,
63
- });
64
- for (const result of results.items) {
65
- expect(result.skill.qualityScore).toBeGreaterThanOrEqual(0.9);
66
- }
67
- });
68
- it('should combine multiple filters', () => {
69
- const results = dbContext.searchService.search({
70
- query: 'git',
71
- limit: 10,
72
- offset: 0,
73
- trustTier: 'verified',
74
- minQualityScore: 0.9,
75
- });
76
- for (const result of results.items) {
77
- expect(result.skill.trustTier).toBe('verified');
78
- expect(result.skill.qualityScore).toBeGreaterThanOrEqual(0.9);
79
- }
80
- });
81
- });
82
- describe('Pagination', () => {
83
- it('should return correct page size', () => {
84
- const results = dbContext.searchService.search({
85
- query: 'a',
86
- limit: 2,
87
- offset: 0,
88
- });
89
- expect(results.items.length).toBeLessThanOrEqual(2);
90
- expect(results.limit).toBe(2);
91
- expect(results.offset).toBe(0);
92
- });
93
- it('should support offset for pagination', () => {
94
- const page1 = dbContext.searchService.search({
95
- query: 'a',
96
- limit: 2,
97
- offset: 0,
98
- });
99
- const page2 = dbContext.searchService.search({
100
- query: 'a',
101
- limit: 2,
102
- offset: 2,
103
- });
104
- // If there are enough results, pages should be different
105
- if (page1.total > 2 && page2.items.length > 0) {
106
- const page1Ids = page1.items.map((r) => r.skill.id);
107
- const page2Ids = page2.items.map((r) => r.skill.id);
108
- expect(page1Ids).not.toEqual(page2Ids);
109
- }
110
- });
111
- it('should indicate hasMore correctly', () => {
112
- const results = dbContext.searchService.search({
113
- query: 'a',
114
- limit: 1,
115
- offset: 0,
116
- });
117
- if (results.total > 1) {
118
- expect(results.hasMore).toBe(true);
119
- }
120
- });
121
- });
122
- describe('BM25 Ranking', () => {
123
- it('should rank exact matches higher', () => {
124
- const results = dbContext.searchService.search({
125
- query: 'commit',
126
- limit: 10,
127
- offset: 0,
128
- });
129
- if (results.items.length > 1) {
130
- // First result should have the query term in the name
131
- expect(results.items[0].skill.name.toLowerCase()).toContain('commit');
132
- }
133
- });
134
- it('should provide relevance scores', () => {
135
- const results = dbContext.searchService.search({
136
- query: 'docker containers',
137
- limit: 10,
138
- offset: 0,
139
- });
140
- for (const result of results.items) {
141
- expect(typeof result.rank).toBe('number');
142
- expect(result.rank).toBeGreaterThanOrEqual(0);
143
- }
144
- });
145
- });
146
- describe('Search by Tags', () => {
147
- it('should find skills by tag content', () => {
148
- const results = dbContext.searchService.search({
149
- query: 'jest',
150
- limit: 10,
151
- offset: 0,
152
- });
153
- expect(results.items.length).toBeGreaterThan(0);
154
- // At least one result should have jest in tags
155
- const hasJestTag = results.items.some((r) => r.skill.tags.some((tag) => tag.toLowerCase().includes('jest')));
156
- expect(hasJestTag).toBe(true);
157
- });
158
- });
159
- describe('Search by Author', () => {
160
- it('should find skills by author name', () => {
161
- const results = dbContext.searchService.search({
162
- query: 'anthropic',
163
- limit: 10,
164
- offset: 0,
165
- });
166
- expect(results.items.length).toBeGreaterThan(0);
167
- // Results should include skills by anthropic
168
- const hasAnthropicAuthor = results.items.some((r) => r.skill.author?.toLowerCase() === 'anthropic');
169
- expect(hasAnthropicAuthor).toBe(true);
170
- });
171
- });
172
- describe('Edge Cases', () => {
173
- it('should handle special characters in query', () => {
174
- const results = dbContext.searchService.search({
175
- query: 'commit-message',
176
- limit: 10,
177
- offset: 0,
178
- });
179
- // Should not throw error
180
- expect(Array.isArray(results.items)).toBe(true);
181
- });
182
- it('should handle very long queries', () => {
183
- const longQuery = 'a'.repeat(100);
184
- const results = dbContext.searchService.search({
185
- query: longQuery,
186
- limit: 10,
187
- offset: 0,
188
- });
189
- // Should not throw error
190
- expect(Array.isArray(results.items)).toBe(true);
191
- });
192
- it('should handle queries with only whitespace', () => {
193
- // This might return all results or empty depending on implementation
194
- const results = dbContext.searchService.search({
195
- query: ' ',
196
- limit: 10,
197
- offset: 0,
198
- });
199
- expect(Array.isArray(results.items)).toBe(true);
200
- });
201
- });
202
- describe('Search Suggestions', () => {
203
- it('should provide autocomplete suggestions', () => {
204
- const suggestions = dbContext.searchService.suggest('com', 5);
205
- expect(Array.isArray(suggestions)).toBe(true);
206
- if (suggestions.length > 0) {
207
- expect(suggestions[0].toLowerCase()).toContain('com');
208
- }
209
- });
210
- it('should limit suggestions count', () => {
211
- const suggestions = dbContext.searchService.suggest('a', 3);
212
- expect(suggestions.length).toBeLessThanOrEqual(3);
213
- });
214
- });
215
- describe('Find Similar Skills', () => {
216
- it('should find skills similar to a given skill', () => {
217
- const similar = dbContext.searchService.findSimilar('anthropic/commit', 3);
218
- expect(Array.isArray(similar)).toBe(true);
219
- // Similar skills should not include the original
220
- const ids = similar.map((s) => s.skill.id);
221
- expect(ids).not.toContain('anthropic/commit');
222
- });
223
- it('should return empty array for non-existent skill', () => {
224
- const similar = dbContext.searchService.findSimilar('nonexistent/skill', 3);
225
- expect(similar).toEqual([]);
226
- });
227
- });
228
- });
229
- //# sourceMappingURL=search.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.integration.test.js","sourceRoot":"","sources":["../../../tests/integration/search.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,74 +0,0 @@
1
- /**
2
- * SMI-616: Integration Test Setup
3
- * SMI-903: Expanded to 56 test skills across all categories and trust tiers
4
- * Provides test utilities for integration testing with real database and filesystem
5
- */
6
- import type { Database as DatabaseType } from 'better-sqlite3';
7
- import { SkillRepository, SearchService, SkillsmithApiClient } from '@skillsmith/core';
8
- export { TEST_SKILLS, TEST_SKILLS_STATS } from './fixtures/test-skills.js';
9
- /**
10
- * Test database context
11
- * SMI-1183: Added apiClient for API integration tests
12
- */
13
- export interface TestDatabaseContext {
14
- db: DatabaseType;
15
- skillRepository: SkillRepository;
16
- searchService: SearchService;
17
- apiClient: SkillsmithApiClient;
18
- cleanup: () => Promise<void>;
19
- }
20
- /**
21
- * Create an in-memory test database with sample data
22
- * Seeds 56 skills across all categories and trust tiers for realistic testing
23
- * SMI-1183: Creates apiClient in offline mode for local-only testing
24
- */
25
- export declare function createTestDatabase(): Promise<TestDatabaseContext>;
26
- /**
27
- * Test filesystem context
28
- */
29
- export interface TestFilesystemContext {
30
- tempDir: string;
31
- skillsDir: string;
32
- manifestDir: string;
33
- cleanup: () => Promise<void>;
34
- }
35
- /**
36
- * Create temporary directories for filesystem tests
37
- */
38
- export declare function createTestFilesystem(): Promise<TestFilesystemContext>;
39
- /**
40
- * Create a mock skill manifest
41
- */
42
- export declare function createMockManifest(manifestDir: string, skills?: Record<string, {
43
- id: string;
44
- name: string;
45
- version: string;
46
- source: string;
47
- installPath: string;
48
- installedAt: string;
49
- lastUpdated: string;
50
- }>): Promise<void>;
51
- /**
52
- * Create a mock installed skill
53
- */
54
- export declare function createMockInstalledSkill(skillsDir: string, skillName: string, content?: string): Promise<string>;
55
- /**
56
- * Mock GitHub fetch for install tests
57
- */
58
- export declare function createMockGitHubFetch(mockResponses: Record<string, {
59
- status: number;
60
- body?: string;
61
- }>): typeof globalThis.fetch;
62
- /**
63
- * Wait for a condition to be true
64
- */
65
- export declare function waitFor(condition: () => boolean | Promise<boolean>, timeout?: number, interval?: number): Promise<void>;
66
- /**
67
- * Check if a file exists
68
- */
69
- export declare function fileExists(filePath: string): Promise<boolean>;
70
- /**
71
- * Read JSON file
72
- */
73
- export declare function readJsonFile<T>(filePath: string): Promise<T>;
74
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../tests/integration/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI9D,OAAO,EAGL,eAAe,EACf,aAAa,EACb,mBAAmB,EACpB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE1E;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,YAAY,CAAA;IAChB,eAAe,EAAE,eAAe,CAAA;IAChC,aAAa,EAAE,aAAa,CAAA;IAC5B,SAAS,EAAE,mBAAmB,CAAA;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAuBvE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAuB3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAM,CACZ,MAAM,EACN;IACE,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,CACG,GACL,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,MAA4G,GACpH,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,OAAO,UAAU,CAAC,KAAK,CAgBzB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAC3C,OAAO,GAAE,MAAa,EACtB,QAAQ,GAAE,MAAY,GACrB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGlE"}
@@ -1,131 +0,0 @@
1
- /**
2
- * SMI-616: Integration Test Setup
3
- * SMI-903: Expanded to 56 test skills across all categories and trust tiers
4
- * Provides test utilities for integration testing with real database and filesystem
5
- */
6
- import * as fs from 'fs/promises';
7
- import * as path from 'path';
8
- import * as os from 'os';
9
- import { createDatabase, closeDatabase, SkillRepository, SearchService, SkillsmithApiClient, } from '@skillsmith/core';
10
- import { seedTestSkills } from './fixtures/test-skills.js';
11
- // Re-export for test access
12
- export { TEST_SKILLS, TEST_SKILLS_STATS } from './fixtures/test-skills.js';
13
- /**
14
- * Create an in-memory test database with sample data
15
- * Seeds 56 skills across all categories and trust tiers for realistic testing
16
- * SMI-1183: Creates apiClient in offline mode for local-only testing
17
- */
18
- export async function createTestDatabase() {
19
- const db = createDatabase(':memory:');
20
- const skillRepository = new SkillRepository(db);
21
- const searchService = new SearchService(db);
22
- // SMI-1183: Create API client in offline mode for tests
23
- // Tests use local database, not live API
24
- const apiClient = new SkillsmithApiClient({
25
- offlineMode: true,
26
- });
27
- // Seed with comprehensive test data (56 skills)
28
- seedTestSkills(skillRepository);
29
- return {
30
- db,
31
- skillRepository,
32
- searchService,
33
- apiClient,
34
- cleanup: async () => {
35
- closeDatabase(db);
36
- },
37
- };
38
- }
39
- /**
40
- * Create temporary directories for filesystem tests
41
- */
42
- export async function createTestFilesystem() {
43
- const tempDir = path.join(os.tmpdir(), `skillsmith-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
44
- const skillsDir = path.join(tempDir, '.claude', 'skills');
45
- const manifestDir = path.join(tempDir, '.skillsmith');
46
- await fs.mkdir(skillsDir, { recursive: true });
47
- await fs.mkdir(manifestDir, { recursive: true });
48
- return {
49
- tempDir,
50
- skillsDir,
51
- manifestDir,
52
- cleanup: async () => {
53
- try {
54
- await fs.rm(tempDir, { recursive: true, force: true });
55
- }
56
- catch {
57
- // Ignore cleanup errors
58
- }
59
- },
60
- };
61
- }
62
- /**
63
- * Create a mock skill manifest
64
- */
65
- export async function createMockManifest(manifestDir, skills = {}) {
66
- const manifest = {
67
- version: '1.0.0',
68
- installedSkills: skills,
69
- };
70
- await fs.writeFile(path.join(manifestDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
71
- }
72
- /**
73
- * Create a mock installed skill
74
- */
75
- export async function createMockInstalledSkill(skillsDir, skillName, content = '# Mock Skill\n\nThis is a mock skill for testing purposes with enough content to pass validation.') {
76
- const skillPath = path.join(skillsDir, skillName);
77
- await fs.mkdir(skillPath, { recursive: true });
78
- await fs.writeFile(path.join(skillPath, 'SKILL.md'), content);
79
- return skillPath;
80
- }
81
- /**
82
- * Mock GitHub fetch for install tests
83
- */
84
- export function createMockGitHubFetch(mockResponses) {
85
- return async (input, _init) => {
86
- const url = typeof input === 'string' ? input : input.toString();
87
- for (const [pattern, response] of Object.entries(mockResponses)) {
88
- if (url.includes(pattern)) {
89
- return new Response(response.body ?? '', {
90
- status: response.status,
91
- headers: { 'Content-Type': 'text/plain' },
92
- });
93
- }
94
- }
95
- // Default 404 response
96
- return new Response('Not Found', { status: 404 });
97
- };
98
- }
99
- /**
100
- * Wait for a condition to be true
101
- */
102
- export async function waitFor(condition, timeout = 5000, interval = 100) {
103
- const start = Date.now();
104
- while (Date.now() - start < timeout) {
105
- if (await condition()) {
106
- return;
107
- }
108
- await new Promise((resolve) => setTimeout(resolve, interval));
109
- }
110
- throw new Error('Timeout waiting for condition');
111
- }
112
- /**
113
- * Check if a file exists
114
- */
115
- export async function fileExists(filePath) {
116
- try {
117
- await fs.access(filePath);
118
- return true;
119
- }
120
- catch {
121
- return false;
122
- }
123
- }
124
- /**
125
- * Read JSON file
126
- */
127
- export async function readJsonFile(filePath) {
128
- const content = await fs.readFile(filePath, 'utf-8');
129
- return JSON.parse(content);
130
- }
131
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/integration/setup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * SMI-616: Uninstall Skill Tool Integration Tests
3
- * Tests the uninstall_skill tool with real filesystem operations
4
- */
5
- export {};
6
- //# sourceMappingURL=uninstall.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.integration.test.d.ts","sourceRoot":"","sources":["../../../tests/integration/uninstall.integration.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}