@skillsmith/mcp-server 0.3.3 → 0.3.4

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 (130) hide show
  1. package/README.md +5 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/__tests__/context.test.d.ts +10 -0
  4. package/dist/src/__tests__/context.test.d.ts.map +1 -0
  5. package/dist/src/__tests__/context.test.js +345 -0
  6. package/dist/src/__tests__/context.test.js.map +1 -0
  7. package/dist/src/__tests__/get-skill.test.d.ts +1 -0
  8. package/dist/src/__tests__/get-skill.test.d.ts.map +1 -1
  9. package/dist/src/__tests__/get-skill.test.js +84 -0
  10. package/dist/src/__tests__/get-skill.test.js.map +1 -1
  11. package/dist/src/__tests__/middleware/license.test.js +180 -78
  12. package/dist/src/__tests__/middleware/license.test.js.map +1 -1
  13. package/dist/src/__tests__/search.test.js +2 -1
  14. package/dist/src/__tests__/search.test.js.map +1 -1
  15. package/dist/src/__tests__/utils/validation.test.d.ts +7 -0
  16. package/dist/src/__tests__/utils/validation.test.d.ts.map +1 -0
  17. package/dist/src/__tests__/utils/validation.test.js +82 -0
  18. package/dist/src/__tests__/utils/validation.test.js.map +1 -0
  19. package/dist/src/context.d.ts +16 -0
  20. package/dist/src/context.d.ts.map +1 -1
  21. package/dist/src/context.js +57 -9
  22. package/dist/src/context.js.map +1 -1
  23. package/dist/src/index.js +1 -1
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/llm/failover.d.ts +200 -0
  26. package/dist/src/llm/failover.d.ts.map +1 -0
  27. package/dist/src/llm/failover.js +329 -0
  28. package/dist/src/llm/failover.js.map +1 -0
  29. package/dist/src/middleware/license.d.ts +5 -0
  30. package/dist/src/middleware/license.d.ts.map +1 -1
  31. package/dist/src/middleware/license.js +2 -1
  32. package/dist/src/middleware/license.js.map +1 -1
  33. package/dist/src/tools/compare.d.ts +3 -102
  34. package/dist/src/tools/compare.d.ts.map +1 -1
  35. package/dist/src/tools/compare.helpers.d.ts +36 -0
  36. package/dist/src/tools/compare.helpers.d.ts.map +1 -0
  37. package/dist/src/tools/compare.helpers.js +252 -0
  38. package/dist/src/tools/compare.helpers.js.map +1 -0
  39. package/dist/src/tools/compare.js +6 -288
  40. package/dist/src/tools/compare.js.map +1 -1
  41. package/dist/src/tools/compare.types.d.ts +133 -0
  42. package/dist/src/tools/compare.types.d.ts.map +1 -0
  43. package/dist/src/tools/compare.types.js +45 -0
  44. package/dist/src/tools/compare.types.js.map +1 -0
  45. package/dist/src/tools/get-skill.d.ts.map +1 -1
  46. package/dist/src/tools/get-skill.js +35 -2
  47. package/dist/src/tools/get-skill.js.map +1 -1
  48. package/dist/src/tools/install.d.ts +6 -60
  49. package/dist/src/tools/install.d.ts.map +1 -1
  50. package/dist/src/tools/install.helpers.d.ts +82 -0
  51. package/dist/src/tools/install.helpers.d.ts.map +1 -0
  52. package/dist/src/tools/install.helpers.js +324 -0
  53. package/dist/src/tools/install.helpers.js.map +1 -0
  54. package/dist/src/tools/install.js +117 -252
  55. package/dist/src/tools/install.js.map +1 -1
  56. package/dist/src/tools/install.types.d.ts +114 -0
  57. package/dist/src/tools/install.types.d.ts.map +1 -0
  58. package/dist/src/tools/install.types.js +91 -0
  59. package/dist/src/tools/install.types.js.map +1 -0
  60. package/dist/src/tools/recommend.d.ts +2 -148
  61. package/dist/src/tools/recommend.d.ts.map +1 -1
  62. package/dist/src/tools/recommend.helpers.d.ts +42 -0
  63. package/dist/src/tools/recommend.helpers.d.ts.map +1 -0
  64. package/dist/src/tools/recommend.helpers.js +155 -0
  65. package/dist/src/tools/recommend.helpers.js.map +1 -0
  66. package/dist/src/tools/recommend.js +75 -140
  67. package/dist/src/tools/recommend.js.map +1 -1
  68. package/dist/src/tools/recommend.types.d.ts +164 -0
  69. package/dist/src/tools/recommend.types.d.ts.map +1 -0
  70. package/dist/src/tools/recommend.types.js +87 -0
  71. package/dist/src/tools/recommend.types.js.map +1 -0
  72. package/dist/src/tools/search.d.ts +18 -4
  73. package/dist/src/tools/search.d.ts.map +1 -1
  74. package/dist/src/tools/search.js +60 -12
  75. package/dist/src/tools/search.js.map +1 -1
  76. package/dist/src/tools/validate.d.ts +3 -70
  77. package/dist/src/tools/validate.d.ts.map +1 -1
  78. package/dist/src/tools/validate.helpers.d.ts +22 -0
  79. package/dist/src/tools/validate.helpers.d.ts.map +1 -0
  80. package/dist/src/tools/validate.helpers.js +276 -0
  81. package/dist/src/tools/validate.helpers.js.map +1 -0
  82. package/dist/src/tools/validate.js +4 -337
  83. package/dist/src/tools/validate.js.map +1 -1
  84. package/dist/src/tools/validate.types.d.ts +96 -0
  85. package/dist/src/tools/validate.types.d.ts.map +1 -0
  86. package/dist/src/tools/validate.types.js +71 -0
  87. package/dist/src/tools/validate.types.js.map +1 -0
  88. package/dist/src/webhooks/index.d.ts +1 -0
  89. package/dist/src/webhooks/index.d.ts.map +1 -1
  90. package/dist/src/webhooks/index.js +2 -0
  91. package/dist/src/webhooks/index.js.map +1 -1
  92. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts +68 -0
  93. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts.map +1 -0
  94. package/dist/src/webhooks/stripe-webhook-endpoint.js +213 -0
  95. package/dist/src/webhooks/stripe-webhook-endpoint.js.map +1 -0
  96. package/dist/tests/integration/install.integration.test.js +148 -1
  97. package/dist/tests/integration/install.integration.test.js.map +1 -1
  98. package/dist/tests/integration/recommend.integration.test.js +2 -1
  99. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  100. package/dist/tests/llm/failover.test.d.ts +13 -0
  101. package/dist/tests/llm/failover.test.d.ts.map +1 -0
  102. package/dist/tests/llm/failover.test.js +250 -0
  103. package/dist/tests/llm/failover.test.js.map +1 -0
  104. package/dist/tests/recommend.test.js +133 -1
  105. package/dist/tests/recommend.test.js.map +1 -1
  106. package/dist/tests/tools.test.d.ts +1 -0
  107. package/dist/tests/tools.test.d.ts.map +1 -1
  108. package/dist/tests/tools.test.js +59 -1
  109. package/dist/tests/tools.test.js.map +1 -1
  110. package/dist/tests/unit/compare-helpers.test.d.ts +8 -0
  111. package/dist/tests/unit/compare-helpers.test.d.ts.map +1 -0
  112. package/dist/tests/unit/compare-helpers.test.js +224 -0
  113. package/dist/tests/unit/compare-helpers.test.js.map +1 -0
  114. package/dist/tests/unit/install-helpers.test.d.ts +8 -0
  115. package/dist/tests/unit/install-helpers.test.d.ts.map +1 -0
  116. package/dist/tests/unit/install-helpers.test.js +460 -0
  117. package/dist/tests/unit/install-helpers.test.js.map +1 -0
  118. package/dist/tests/unit/recommend-helpers.test.d.ts +8 -0
  119. package/dist/tests/unit/recommend-helpers.test.d.ts.map +1 -0
  120. package/dist/tests/unit/recommend-helpers.test.js +117 -0
  121. package/dist/tests/unit/recommend-helpers.test.js.map +1 -0
  122. package/dist/tests/unit/validate-helpers.test.d.ts +8 -0
  123. package/dist/tests/unit/validate-helpers.test.d.ts.map +1 -0
  124. package/dist/tests/unit/validate-helpers.test.js +243 -0
  125. package/dist/tests/unit/validate-helpers.test.js.map +1 -0
  126. package/package.json +1 -1
  127. package/src/assets/docs/USER_GUIDE.md +0 -220
  128. package/src/assets/skills/skillsmith/docs/QUOTAS.md +0 -182
  129. package/src/assets/skills/skillsmith/docs/SECURITY.md +0 -174
  130. package/src/assets/skills/skillsmith/docs/TRUST_TIERS.md +0 -142
@@ -0,0 +1,250 @@
1
+ /**
2
+ * @fileoverview LLMFailoverChain Unit Tests
3
+ * @see SMI-1524: Implement LLM failover with circuit breaker
4
+ *
5
+ * Tests for the MCP server LLM failover chain including:
6
+ * - Initialization and configuration
7
+ * - Health check endpoints
8
+ * - Failover timeout compliance (3 seconds)
9
+ * - Circuit breaker thresholds (5 failures, 60s reset)
10
+ * - Provider management
11
+ */
12
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
13
+ import { LLMFailoverChain, createLLMFailoverChain, DEFAULT_LLM_FAILOVER_CONFIG, } from '../../src/llm/failover.js';
14
+ describe('LLMFailoverChain', () => {
15
+ let chain;
16
+ afterEach(() => {
17
+ if (chain) {
18
+ chain.close();
19
+ }
20
+ });
21
+ describe('Initialization', () => {
22
+ it('should create with default configuration', () => {
23
+ chain = new LLMFailoverChain();
24
+ expect(chain.isInitialized()).toBe(false);
25
+ expect(chain.isEnabled()).toBe(true);
26
+ });
27
+ it('should initialize successfully', async () => {
28
+ chain = new LLMFailoverChain();
29
+ await chain.initialize();
30
+ expect(chain.isInitialized()).toBe(true);
31
+ });
32
+ it('should only initialize once', async () => {
33
+ chain = new LLMFailoverChain();
34
+ await chain.initialize();
35
+ await chain.initialize(); // Should be idempotent
36
+ expect(chain.isInitialized()).toBe(true);
37
+ });
38
+ it('should use factory function', async () => {
39
+ chain = await createLLMFailoverChain();
40
+ expect(chain.isInitialized()).toBe(true);
41
+ expect(chain.isEnabled()).toBe(true);
42
+ });
43
+ it('should disable via config', async () => {
44
+ chain = new LLMFailoverChain({ enabled: false });
45
+ await chain.initialize();
46
+ expect(chain.isInitialized()).toBe(true);
47
+ expect(chain.isEnabled()).toBe(false);
48
+ });
49
+ it('should disable via environment variable', async () => {
50
+ const originalEnv = process.env.SKILLSMITH_LLM_FAILOVER_ENABLED;
51
+ process.env.SKILLSMITH_LLM_FAILOVER_ENABLED = 'false';
52
+ chain = new LLMFailoverChain();
53
+ expect(chain.isEnabled()).toBe(false);
54
+ process.env.SKILLSMITH_LLM_FAILOVER_ENABLED = originalEnv;
55
+ });
56
+ });
57
+ describe('Configuration', () => {
58
+ it('should have correct default failover timeout (3 seconds)', () => {
59
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.failoverTimeoutMs).toBe(3000);
60
+ });
61
+ it('should have correct default circuit open threshold (5 failures)', () => {
62
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.circuitOpenThreshold).toBe(5);
63
+ });
64
+ it('should have correct default circuit reset timeout (60 seconds)', () => {
65
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.circuitResetTimeoutMs).toBe(60000);
66
+ });
67
+ it('should apply custom configuration', async () => {
68
+ const customConfig = {
69
+ failoverTimeoutMs: 5000,
70
+ circuitOpenThreshold: 10,
71
+ circuitResetTimeoutMs: 120000,
72
+ debug: true,
73
+ };
74
+ chain = new LLMFailoverChain(customConfig);
75
+ await chain.initialize();
76
+ expect(chain.isInitialized()).toBe(true);
77
+ });
78
+ });
79
+ describe('Health Check Endpoint (SMI-1524 Acceptance Criteria)', () => {
80
+ beforeEach(async () => {
81
+ chain = await createLLMFailoverChain();
82
+ });
83
+ it('should provide health status endpoint', async () => {
84
+ const health = await chain.getHealthStatus();
85
+ expect(health).toMatchObject({
86
+ healthy: expect.any(Boolean),
87
+ timestamp: expect.any(Date),
88
+ availableProviders: expect.any(Number),
89
+ enabledProviders: expect.any(Number),
90
+ errorRate: expect.any(Number),
91
+ avgLatencyMs: expect.any(Number),
92
+ });
93
+ });
94
+ it('should include per-provider health', async () => {
95
+ const health = await chain.getHealthStatus();
96
+ const enabledProviders = chain.getEnabledProviders();
97
+ // Should have health info for each enabled provider
98
+ for (const provider of enabledProviders) {
99
+ expect(health.providers[provider]).toBeDefined();
100
+ expect(health.circuitStates[provider]).toBeDefined();
101
+ }
102
+ });
103
+ it('should report circuit breaker states', async () => {
104
+ const health = await chain.getHealthStatus();
105
+ const enabledProviders = chain.getEnabledProviders();
106
+ for (const provider of enabledProviders) {
107
+ expect(['closed', 'open', 'half-open']).toContain(health.circuitStates[provider]);
108
+ }
109
+ });
110
+ it('should check specific provider health', async () => {
111
+ const result = await chain.healthCheck('anthropic');
112
+ expect(result).toMatchObject({
113
+ healthy: expect.any(Boolean),
114
+ timestamp: expect.any(Date),
115
+ });
116
+ });
117
+ });
118
+ describe('Provider Management', () => {
119
+ beforeEach(async () => {
120
+ chain = await createLLMFailoverChain();
121
+ });
122
+ it('should return enabled providers', () => {
123
+ const enabled = chain.getEnabledProviders();
124
+ expect(enabled).toContain('anthropic');
125
+ expect(enabled).toContain('openai');
126
+ expect(enabled).toContain('google');
127
+ });
128
+ it('should return available providers', () => {
129
+ const available = chain.getAvailableProviders();
130
+ expect(available.length).toBeGreaterThan(0);
131
+ });
132
+ it('should return provider status', () => {
133
+ const status = chain.getProviderStatus('anthropic');
134
+ expect(status).not.toBeNull();
135
+ expect(status).toMatchObject({
136
+ available: expect.any(Boolean),
137
+ circuitState: expect.any(String),
138
+ });
139
+ });
140
+ it('should return null status when disabled', async () => {
141
+ const disabledChain = await createLLMFailoverChain({ enabled: false });
142
+ const status = disabledChain.getProviderStatus('anthropic');
143
+ expect(status).toBeNull();
144
+ disabledChain.close();
145
+ });
146
+ });
147
+ describe('Request Completion', () => {
148
+ beforeEach(async () => {
149
+ chain = await createLLMFailoverChain();
150
+ });
151
+ it('should throw if not initialized', async () => {
152
+ const uninitializedChain = new LLMFailoverChain();
153
+ await expect(uninitializedChain.complete({
154
+ messages: [{ role: 'user', content: 'Hello' }],
155
+ })).rejects.toThrow('not initialized');
156
+ });
157
+ it('should throw if disabled', async () => {
158
+ const disabledChain = await createLLMFailoverChain({ enabled: false });
159
+ await expect(disabledChain.complete({
160
+ messages: [{ role: 'user', content: 'Hello' }],
161
+ })).rejects.toThrow('disabled');
162
+ disabledChain.close();
163
+ });
164
+ it('should complete request when enabled', async () => {
165
+ const response = await chain.complete({
166
+ messages: [{ role: 'user', content: 'Test message' }],
167
+ });
168
+ expect(response).toMatchObject({
169
+ content: expect.any(String),
170
+ provider: expect.any(String),
171
+ model: expect.any(String),
172
+ latencyMs: expect.any(Number),
173
+ cost: expect.any(Number),
174
+ });
175
+ });
176
+ });
177
+ describe('Skill Compatibility Testing', () => {
178
+ beforeEach(async () => {
179
+ chain = await createLLMFailoverChain();
180
+ });
181
+ it('should test skill compatibility', async () => {
182
+ const result = await chain.testSkillCompatibility('commit');
183
+ expect(result).toMatchObject({
184
+ skillId: 'commit',
185
+ results: expect.any(Object),
186
+ overallScore: expect.any(Number),
187
+ recommendedProviders: expect.any(Array),
188
+ testedAt: expect.any(Date),
189
+ });
190
+ });
191
+ it('should throw if disabled', async () => {
192
+ const disabledChain = await createLLMFailoverChain({ enabled: false });
193
+ await expect(disabledChain.testSkillCompatibility('commit')).rejects.toThrow('disabled');
194
+ disabledChain.close();
195
+ });
196
+ });
197
+ describe('Metrics Collection', () => {
198
+ beforeEach(async () => {
199
+ chain = await createLLMFailoverChain();
200
+ });
201
+ it('should provide metrics for providers', () => {
202
+ const metrics = chain.getMetrics();
203
+ expect(metrics).toBeInstanceOf(Map);
204
+ });
205
+ it('should return empty map when disabled', async () => {
206
+ const disabledChain = await createLLMFailoverChain({ enabled: false });
207
+ const metrics = disabledChain.getMetrics();
208
+ expect(metrics.size).toBe(0);
209
+ disabledChain.close();
210
+ });
211
+ });
212
+ describe('Close and Cleanup', () => {
213
+ it('should close cleanly', async () => {
214
+ chain = await createLLMFailoverChain();
215
+ expect(() => chain.close()).not.toThrow();
216
+ });
217
+ it('should reset initialized state on close', async () => {
218
+ chain = await createLLMFailoverChain();
219
+ expect(chain.isInitialized()).toBe(true);
220
+ chain.close();
221
+ expect(chain.isInitialized()).toBe(false);
222
+ });
223
+ it('should be safe to close multiple times', async () => {
224
+ chain = await createLLMFailoverChain();
225
+ chain.close();
226
+ expect(() => chain.close()).not.toThrow();
227
+ });
228
+ });
229
+ });
230
+ describe('DEFAULT_LLM_FAILOVER_CONFIG', () => {
231
+ it('should have SMI-1524 compliant failover timeout', () => {
232
+ // Acceptance criteria: Failover triggers within 3 seconds
233
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.failoverTimeoutMs).toBe(3000);
234
+ });
235
+ it('should have SMI-1524 compliant circuit breaker threshold', () => {
236
+ // Acceptance criteria: Circuit breaker opens after 5 failures
237
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.circuitOpenThreshold).toBe(5);
238
+ });
239
+ it('should have SMI-1524 compliant circuit reset timeout', () => {
240
+ // Acceptance criteria: Circuit resets after 60 seconds
241
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.circuitResetTimeoutMs).toBe(60000);
242
+ });
243
+ it('should be enabled by default', () => {
244
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.enabled).toBe(true);
245
+ });
246
+ it('should have debug disabled by default', () => {
247
+ expect(DEFAULT_LLM_FAILOVER_CONFIG.debug).toBe(false);
248
+ });
249
+ });
250
+ //# sourceMappingURL=failover.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failover.test.js","sourceRoot":"","sources":["../../../tests/llm/failover.test.ts"],"names":[],"mappings":"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"}
@@ -123,7 +123,7 @@ describe('Skill Recommend Tool', () => {
123
123
  }, toolContext);
124
124
  for (const rec of result.recommendations) {
125
125
  expect(rec.trust_tier).toBeDefined();
126
- expect(['verified', 'community', 'standard', 'unverified']).toContain(rec.trust_tier);
126
+ expect(['verified', 'community', 'experimental', 'unknown']).toContain(rec.trust_tier);
127
127
  expect(rec.quality_score).toBeGreaterThanOrEqual(0);
128
128
  expect(rec.quality_score).toBeLessThanOrEqual(100);
129
129
  }
@@ -167,6 +167,115 @@ describe('Skill Recommend Tool', () => {
167
167
  expect(recommendedIds).not.toContain('anthropic/commit');
168
168
  });
169
169
  });
170
+ // SMI-1631: Role-based filtering tests
171
+ describe('role-based filtering', () => {
172
+ it('should validate role parameter in schema', () => {
173
+ const result = recommendInputSchema.parse({
174
+ installed_skills: [],
175
+ role: 'testing',
176
+ });
177
+ expect(result.role).toBe('testing');
178
+ });
179
+ it('should reject invalid role values', () => {
180
+ expect(() => recommendInputSchema.parse({
181
+ installed_skills: [],
182
+ role: 'invalid-role',
183
+ })).toThrow();
184
+ });
185
+ it('should accept all valid role values', () => {
186
+ const validRoles = [
187
+ 'code-quality',
188
+ 'testing',
189
+ 'documentation',
190
+ 'workflow',
191
+ 'security',
192
+ 'development-partner',
193
+ ];
194
+ for (const role of validRoles) {
195
+ const result = recommendInputSchema.parse({
196
+ installed_skills: [],
197
+ role,
198
+ });
199
+ expect(result.role).toBe(role);
200
+ }
201
+ });
202
+ it('should include role_filtered count in response', async () => {
203
+ const result = await executeRecommend({
204
+ installed_skills: [],
205
+ role: 'testing',
206
+ detect_overlap: false,
207
+ limit: 10,
208
+ }, toolContext);
209
+ // role_filtered should be a number (could be 0 if all skills match)
210
+ expect(typeof result.role_filtered).toBe('number');
211
+ expect(result.role_filtered).toBeGreaterThanOrEqual(0);
212
+ });
213
+ it('should include role_filter in context', async () => {
214
+ const result = await executeRecommend({
215
+ installed_skills: [],
216
+ role: 'testing',
217
+ detect_overlap: false,
218
+ limit: 5,
219
+ }, toolContext);
220
+ expect(result.context.role_filter).toBe('testing');
221
+ });
222
+ it('should not set role_filter when no role is specified', async () => {
223
+ const result = await executeRecommend({
224
+ installed_skills: [],
225
+ detect_overlap: false,
226
+ limit: 5,
227
+ }, toolContext);
228
+ expect(result.context.role_filter).toBeUndefined();
229
+ });
230
+ it('should include roles array in recommendations', async () => {
231
+ const result = await executeRecommend({
232
+ installed_skills: [],
233
+ detect_overlap: false,
234
+ limit: 5,
235
+ }, toolContext);
236
+ // All recommendations should have a roles array (may be empty)
237
+ for (const rec of result.recommendations) {
238
+ expect(Array.isArray(rec.roles)).toBe(true);
239
+ }
240
+ });
241
+ it('should boost quality score by 30 for role matches', async () => {
242
+ // First, get recommendations without role filter
243
+ const withoutRole = await executeRecommend({
244
+ installed_skills: [],
245
+ detect_overlap: false,
246
+ limit: 10,
247
+ }, toolContext);
248
+ // Find a skill that has the 'testing' role
249
+ const testingSkill = withoutRole.recommendations.find((r) => r.roles?.includes('testing'));
250
+ if (testingSkill) {
251
+ const originalScore = testingSkill.quality_score;
252
+ // Now get recommendations with testing role filter
253
+ const withRole = await executeRecommend({
254
+ installed_skills: [],
255
+ role: 'testing',
256
+ detect_overlap: false,
257
+ limit: 10,
258
+ }, toolContext);
259
+ const boostedSkill = withRole.recommendations.find((r) => r.skill_id === testingSkill.skill_id);
260
+ if (boostedSkill) {
261
+ // Score should be boosted by 30 (capped at 100)
262
+ const expectedScore = Math.min(100, originalScore + 30);
263
+ expect(boostedSkill.quality_score).toBe(expectedScore);
264
+ }
265
+ }
266
+ });
267
+ it('should include role in reason when role filter is applied', async () => {
268
+ const result = await executeRecommend({
269
+ installed_skills: [],
270
+ role: 'testing',
271
+ detect_overlap: false,
272
+ limit: 5,
273
+ }, toolContext);
274
+ for (const rec of result.recommendations) {
275
+ expect(rec.reason).toContain('role: testing');
276
+ }
277
+ });
278
+ });
170
279
  describe('formatRecommendations', () => {
171
280
  it('should format recommendations for terminal display', async () => {
172
281
  const result = await executeRecommend({
@@ -205,6 +314,29 @@ describe('Skill Recommend Tool', () => {
205
314
  expect(formatted).toContain('Candidates considered:');
206
315
  expect(formatted).toContain('ms');
207
316
  });
317
+ // SMI-1631: Role display in formatted output
318
+ it('should show role filter in formatted output when applied', async () => {
319
+ const result = await executeRecommend({
320
+ installed_skills: [],
321
+ role: 'testing',
322
+ detect_overlap: false,
323
+ limit: 5,
324
+ }, toolContext);
325
+ const formatted = formatRecommendations(result);
326
+ expect(formatted).toContain('Role filter: testing');
327
+ });
328
+ it('should show role filtered count when skills were filtered', async () => {
329
+ const result = await executeRecommend({
330
+ installed_skills: [],
331
+ role: 'testing',
332
+ detect_overlap: false,
333
+ limit: 10,
334
+ }, toolContext);
335
+ if (result.role_filtered > 0) {
336
+ const formatted = formatRecommendations(result);
337
+ expect(formatted).toContain(`Filtered for role: ${result.role_filtered}`);
338
+ }
339
+ });
208
340
  });
209
341
  });
210
342
  //# sourceMappingURL=recommend.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.test.js","sourceRoot":"","sources":["../../tests/recommend.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommend.test.js","sourceRoot":"","sources":["../../tests/recommend.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Tests for MCP Tools (SMI-586, SMI-588)
3
+ * Updated for ADR-019: Filter-Only Skill Search
3
4
  */
4
5
  export {};
5
6
  //# sourceMappingURL=tools.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../tests/tools.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
1
+ {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../tests/tools.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,10 +1,13 @@
1
1
  /**
2
2
  * Tests for MCP Tools (SMI-586, SMI-588)
3
+ * Updated for ADR-019: Filter-Only Skill Search
3
4
  */
4
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
+ import { describe, it, expect, beforeEach, afterEach, beforeAll, afterAll } from 'vitest';
5
6
  import * as fs from 'fs/promises';
6
7
  import * as path from 'path';
7
8
  import * as os from 'os';
9
+ import { executeSearch } from '../src/tools/search.js';
10
+ import { createSeededTestContext } from '../src/__tests__/test-utils.js';
8
11
  // Mock the file operations for testing
9
12
  const TEST_SKILLS_DIR = path.join(os.tmpdir(), 'test-claude-skills-' + Date.now());
10
13
  const TEST_MANIFEST_DIR = path.join(os.tmpdir(), 'test-skillsmith-' + Date.now());
@@ -135,4 +138,59 @@ describe('MCP Tool Schemas', () => {
135
138
  expect(typeof validInput.force).toBe('boolean');
136
139
  });
137
140
  });
141
+ /**
142
+ * ADR-019: Filter-Only Skill Search Tests
143
+ *
144
+ * These tests validate the new filter-only search functionality:
145
+ * - Search with category filter only (no query required)
146
+ * - Search with trust_tier filter only (no query required)
147
+ * - Search with min_score filter only (no query required)
148
+ * - Accept single character queries (minimum length removed)
149
+ * - Error when no query AND no filters provided
150
+ *
151
+ * TDD Red Phase: These tests SHOULD FAIL until implementation is complete.
152
+ */
153
+ describe('Filter-only search', () => {
154
+ let context;
155
+ beforeAll(() => {
156
+ context = createSeededTestContext();
157
+ });
158
+ afterAll(() => {
159
+ context.db.close();
160
+ });
161
+ it('should search with category filter only (no query)', async () => {
162
+ const result = await executeSearch({ category: 'testing' }, context);
163
+ expect(result.results).toBeDefined();
164
+ expect(result.filters.category).toBe('testing');
165
+ });
166
+ it('should search with trust_tier filter only (no query)', async () => {
167
+ const result = await executeSearch({ trust_tier: 'verified' }, context);
168
+ expect(result.results).toBeDefined();
169
+ expect(result.filters.trustTier).toBe('verified');
170
+ });
171
+ it('should throw error when no query and no filters', async () => {
172
+ await expect(executeSearch({}, context)).rejects.toThrow(/query or.*filter/i);
173
+ });
174
+ it('should reject query less than 3 characters (anti-scraping)', async () => {
175
+ // SMI-1613: Anti-scraping requires minimum 3 characters
176
+ await expect(executeSearch({ query: 'a' }, context)).rejects.toThrow(/at least 3 characters/);
177
+ await expect(executeSearch({ query: 'ab' }, context)).rejects.toThrow(/at least 3 characters/);
178
+ });
179
+ it('should accept empty query with min_score filter', async () => {
180
+ const result = await executeSearch({ min_score: 80 }, context);
181
+ expect(result.results).toBeDefined();
182
+ expect(result.filters.minScore).toBe(0.8);
183
+ });
184
+ it('should accept empty query string with category filter', async () => {
185
+ const result = await executeSearch({ query: '', category: 'devops' }, context);
186
+ expect(result.results).toBeDefined();
187
+ expect(result.filters.category).toBe('devops');
188
+ });
189
+ it('should combine multiple filters without query', async () => {
190
+ const result = await executeSearch({ category: 'testing', trust_tier: 'community' }, context);
191
+ expect(result.results).toBeDefined();
192
+ expect(result.filters.category).toBe('testing');
193
+ expect(result.filters.trustTier).toBe('community');
194
+ });
195
+ });
138
196
  //# sourceMappingURL=tools.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../tests/tools.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../tests/tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @fileoverview Tests for compare.helpers.ts
3
+ * @module @skillsmith/mcp-server/tests/unit/compare-helpers
4
+ *
5
+ * SMI-1719: Unit tests for extracted helper functions from Wave 3 refactor
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=compare-helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-helpers.test.d.ts","sourceRoot":"","sources":["../../../tests/unit/compare-helpers.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}