wjttc 1.0.2 → 1.1.0

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.
package/README.md CHANGED
@@ -9,9 +9,19 @@
9
9
 
10
10
  ---
11
11
 
12
+ ## What is WJTTC?
13
+
14
+ WJTTC is the **WolfeJam Technical Testing Certification**. wolfejam is the dev who created the [IANA-registered .faf format](https://www.iana.org/assignments/media-types/application/vnd.faf+yaml) for AI context - the first and only MCP of its kind. He achieved this largely due to his obsession with technical details and testing.
15
+
16
+ WJTTC is the rollout of his self-certification secrets to help grade other MCP servers for free, with a view to improving MCP server quality system-wide.
17
+
18
+ **Score your Server for free. Full leaderboard going live soon - what will your server score?**
19
+
20
+ ---
21
+
12
22
  ## What is Big Orange?
13
23
 
14
- The šŸŠ **Big Orange** is a super-score - recognition that an MCP server is above and beyond the standard.
24
+ The šŸŠ **Big Orange** is a super-score - recognition that the Server Owner(s) have gone above and beyond the 100% pass rate.
15
25
 
16
26
  - **100%** = Pass all 46 tests across ALL 7 tiers
17
27
  - **+5%** = Awarded for documentation and professional polish
@@ -0,0 +1,6 @@
1
+ /**
2
+ * WJTTC Badge Generator Tests
3
+ * Testing the testing tool - F1 grade
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=badge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/badge.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * WJTTC Badge Generator Tests
4
+ * Testing the testing tool - F1 grade
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const badge_1 = require("../badge");
8
+ describe('BadgeGenerator', () => {
9
+ describe('generate()', () => {
10
+ it('should generate valid badge JSON for big-orange tier', () => {
11
+ const badge = badge_1.BadgeGenerator.generate({ score: 105, tier: 'big-orange' });
12
+ expect(badge.schemaVersion).toBe(1);
13
+ expect(badge.label).toBe('WJTTC');
14
+ expect(badge.message).toContain('big-orange');
15
+ expect(badge.message).toContain('105%');
16
+ expect(badge.color).toBe('FF8C00');
17
+ });
18
+ it('should generate valid badge JSON for trophy tier', () => {
19
+ const badge = badge_1.BadgeGenerator.generate({ score: 100, tier: 'trophy' });
20
+ expect(badge.message).toContain('trophy');
21
+ expect(badge.message).toContain('100%');
22
+ expect(badge.color).toBe('FFD700');
23
+ });
24
+ it('should generate valid badge JSON for silver tier', () => {
25
+ const badge = badge_1.BadgeGenerator.generate({ score: 95, tier: 'silver' });
26
+ expect(badge.message).toContain('silver');
27
+ expect(badge.message).toContain('95%');
28
+ expect(badge.color).toBe('C0C0C0');
29
+ });
30
+ it('should generate valid badge JSON for bronze tier', () => {
31
+ const badge = badge_1.BadgeGenerator.generate({ score: 85, tier: 'bronze' });
32
+ expect(badge.message).toContain('bronze');
33
+ expect(badge.color).toBe('CD7F32');
34
+ });
35
+ it('should generate valid badge JSON for red tier', () => {
36
+ const badge = badge_1.BadgeGenerator.generate({ score: 40, tier: 'red' });
37
+ expect(badge.message).toContain('red');
38
+ expect(badge.color).toBe('D50000');
39
+ });
40
+ it('should include correct emoji for each tier', () => {
41
+ const tiers = ['big-orange', 'trophy', 'gold', 'silver', 'bronze', 'green', 'yellow', 'red', 'white'];
42
+ const emojis = ['šŸŠ', 'šŸ†', 'šŸ„‡', '🄈', 'šŸ„‰', '🟢', '🟔', 'šŸ”“', 'šŸ¤'];
43
+ tiers.forEach((tier, index) => {
44
+ const badge = badge_1.BadgeGenerator.generate({ score: 100, tier });
45
+ expect(badge.message).toContain(emojis[index]);
46
+ });
47
+ });
48
+ });
49
+ describe('generateUrl()', () => {
50
+ it('should generate a valid shields.io URL', () => {
51
+ const url = badge_1.BadgeGenerator.generateUrl({ score: 95, tier: 'silver' });
52
+ expect(url).toContain('https://img.shields.io/endpoint');
53
+ expect(url).toContain('data:application/json');
54
+ });
55
+ it('should include encoded badge data in URL', () => {
56
+ const url = badge_1.BadgeGenerator.generateUrl({ score: 105, tier: 'big-orange' });
57
+ expect(url).toContain('WJTTC');
58
+ expect(url).toContain('FF8C00');
59
+ });
60
+ });
61
+ describe('generateMarkdown()', () => {
62
+ it('should generate valid markdown without repo URL', () => {
63
+ const md = badge_1.BadgeGenerator.generateMarkdown({ score: 95, tier: 'silver' });
64
+ expect(md).toMatch(/^!\[WJTTC silver\]\(https:\/\/img\.shields\.io/);
65
+ });
66
+ it('should generate linked markdown with repo URL', () => {
67
+ const md = badge_1.BadgeGenerator.generateMarkdown({ score: 105, tier: 'big-orange' }, 'https://github.com/example/repo');
68
+ expect(md).toMatch(/^\[!\[WJTTC big-orange\]/);
69
+ expect(md).toContain('https://github.com/example/repo');
70
+ });
71
+ });
72
+ describe('generateHtml()', () => {
73
+ it('should generate valid HTML img tag without repo URL', () => {
74
+ const html = badge_1.BadgeGenerator.generateHtml({ score: 85, tier: 'bronze' });
75
+ expect(html).toMatch(/^<img src="https:\/\/img\.shields\.io/);
76
+ expect(html).toContain('alt="WJTTC bronze"');
77
+ });
78
+ it('should generate linked HTML with repo URL', () => {
79
+ const html = badge_1.BadgeGenerator.generateHtml({ score: 100, tier: 'trophy' }, 'https://github.com/example/repo');
80
+ expect(html).toMatch(/^<a href="https:\/\/github\.com\/example\/repo">/);
81
+ expect(html).toContain('<img');
82
+ expect(html).toContain('</a>');
83
+ });
84
+ });
85
+ });
86
+ //# sourceMappingURL=badge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.test.js","sourceRoot":"","sources":["../../src/__tests__/badge.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WJTTC Certifier Tests
3
+ * Comprehensive tests for the core certification engine
4
+ * "Testing the tester" - F1 Championship Grade
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=certifier.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certifier.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/certifier.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,451 @@
1
+ "use strict";
2
+ /**
3
+ * WJTTC Certifier Tests
4
+ * Comprehensive tests for the core certification engine
5
+ * "Testing the tester" - F1 Championship Grade
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
9
+ // TIER SYSTEM CONSTANTS (extracted for testing)
10
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
11
+ const TIER_NAMES = {
12
+ 1: 'Protocol Compliance',
13
+ 2: 'Capability Negotiation',
14
+ 3: 'Tool Integrity',
15
+ 4: 'Resource Management',
16
+ 5: 'Security Validation',
17
+ 6: 'Performance Benchmarks',
18
+ 7: 'Integration Readiness',
19
+ };
20
+ const TIER_WEIGHTS = {
21
+ 1: 20,
22
+ 2: 10,
23
+ 3: 20,
24
+ 4: 10,
25
+ 5: 15,
26
+ 6: 15,
27
+ 7: 10,
28
+ };
29
+ const TIER_TEST_COUNTS = {
30
+ 1: 12,
31
+ 2: 8,
32
+ 3: 6,
33
+ 4: 6,
34
+ 5: 3,
35
+ 6: 6,
36
+ 7: 5,
37
+ };
38
+ // Score tier boundaries
39
+ const TIER_BOUNDARIES = [
40
+ { min: 105, max: 105, tier: 'big-orange' },
41
+ { min: 100, max: 104, tier: 'trophy' },
42
+ { min: 99, max: 99, tier: 'gold' },
43
+ { min: 95, max: 98, tier: 'silver' },
44
+ { min: 85, max: 94, tier: 'bronze' },
45
+ { min: 70, max: 84, tier: 'green' },
46
+ { min: 55, max: 69, tier: 'yellow' },
47
+ { min: 0, max: 54, tier: 'red' },
48
+ ];
49
+ // Helper to determine tier from score
50
+ function getTierFromScore(score) {
51
+ if (score >= 105)
52
+ return 'big-orange';
53
+ if (score >= 100)
54
+ return 'trophy';
55
+ if (score >= 99)
56
+ return 'gold';
57
+ if (score >= 95)
58
+ return 'silver';
59
+ if (score >= 85)
60
+ return 'bronze';
61
+ if (score >= 70)
62
+ return 'green';
63
+ if (score >= 55)
64
+ return 'yellow';
65
+ return 'red';
66
+ }
67
+ // Helper to calculate weighted score (mirrors certifier logic)
68
+ function calculateWeightedScore(tierResults) {
69
+ let weightedScore = 0;
70
+ let totalWeight = 0;
71
+ for (const result of tierResults) {
72
+ const weight = TIER_WEIGHTS[result.tier] || 10;
73
+ const tierScore = result.totalTests > 0
74
+ ? (result.passedTests / result.totalTests) * 100
75
+ : 0;
76
+ weightedScore += tierScore * weight;
77
+ totalWeight += weight;
78
+ }
79
+ return totalWeight > 0 ? Math.round(weightedScore / totalWeight) : 0;
80
+ }
81
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
82
+ // TIER SYSTEM TESTS
83
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
84
+ describe('Tier System', () => {
85
+ describe('Tier Names', () => {
86
+ it('should have exactly 7 tiers', () => {
87
+ expect(Object.keys(TIER_NAMES)).toHaveLength(7);
88
+ });
89
+ it('should have tier 1 as Protocol Compliance', () => {
90
+ expect(TIER_NAMES[1]).toBe('Protocol Compliance');
91
+ });
92
+ it('should have tier 2 as Capability Negotiation', () => {
93
+ expect(TIER_NAMES[2]).toBe('Capability Negotiation');
94
+ });
95
+ it('should have tier 3 as Tool Integrity', () => {
96
+ expect(TIER_NAMES[3]).toBe('Tool Integrity');
97
+ });
98
+ it('should have tier 4 as Resource Management', () => {
99
+ expect(TIER_NAMES[4]).toBe('Resource Management');
100
+ });
101
+ it('should have tier 5 as Security Validation', () => {
102
+ expect(TIER_NAMES[5]).toBe('Security Validation');
103
+ });
104
+ it('should have tier 6 as Performance Benchmarks', () => {
105
+ expect(TIER_NAMES[6]).toBe('Performance Benchmarks');
106
+ });
107
+ it('should have tier 7 as Integration Readiness', () => {
108
+ expect(TIER_NAMES[7]).toBe('Integration Readiness');
109
+ });
110
+ });
111
+ describe('Tier Weights', () => {
112
+ it('should have exactly 7 tier weights', () => {
113
+ expect(Object.keys(TIER_WEIGHTS)).toHaveLength(7);
114
+ });
115
+ it('should have weights that sum to 100', () => {
116
+ const totalWeight = Object.values(TIER_WEIGHTS).reduce((a, b) => a + b, 0);
117
+ expect(totalWeight).toBe(100);
118
+ });
119
+ it('should have Protocol Compliance (T1) weighted at 20%', () => {
120
+ expect(TIER_WEIGHTS[1]).toBe(20);
121
+ });
122
+ it('should have Capability Negotiation (T2) weighted at 10%', () => {
123
+ expect(TIER_WEIGHTS[2]).toBe(10);
124
+ });
125
+ it('should have Tool Integrity (T3) weighted at 20%', () => {
126
+ expect(TIER_WEIGHTS[3]).toBe(20);
127
+ });
128
+ it('should have Resource Management (T4) weighted at 10%', () => {
129
+ expect(TIER_WEIGHTS[4]).toBe(10);
130
+ });
131
+ it('should have Security Validation (T5) weighted at 15%', () => {
132
+ expect(TIER_WEIGHTS[5]).toBe(15);
133
+ });
134
+ it('should have Performance Benchmarks (T6) weighted at 15%', () => {
135
+ expect(TIER_WEIGHTS[6]).toBe(15);
136
+ });
137
+ it('should have Integration Readiness (T7) weighted at 10%', () => {
138
+ expect(TIER_WEIGHTS[7]).toBe(10);
139
+ });
140
+ });
141
+ describe('Test Counts', () => {
142
+ it('should have 46 total tests across all tiers', () => {
143
+ const totalTests = Object.values(TIER_TEST_COUNTS).reduce((a, b) => a + b, 0);
144
+ expect(totalTests).toBe(46);
145
+ });
146
+ it('should have 12 tests in Tier 1', () => {
147
+ expect(TIER_TEST_COUNTS[1]).toBe(12);
148
+ });
149
+ it('should have 8 tests in Tier 2', () => {
150
+ expect(TIER_TEST_COUNTS[2]).toBe(8);
151
+ });
152
+ it('should have 6 tests in Tier 3', () => {
153
+ expect(TIER_TEST_COUNTS[3]).toBe(6);
154
+ });
155
+ it('should have 6 tests in Tier 4', () => {
156
+ expect(TIER_TEST_COUNTS[4]).toBe(6);
157
+ });
158
+ it('should have 3 tests in Tier 5', () => {
159
+ expect(TIER_TEST_COUNTS[5]).toBe(3);
160
+ });
161
+ it('should have 6 tests in Tier 6', () => {
162
+ expect(TIER_TEST_COUNTS[6]).toBe(6);
163
+ });
164
+ it('should have 5 tests in Tier 7', () => {
165
+ expect(TIER_TEST_COUNTS[7]).toBe(5);
166
+ });
167
+ });
168
+ });
169
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
170
+ // SCORE CALCULATION TESTS
171
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
172
+ describe('Score Calculation', () => {
173
+ describe('Weighted Score Algorithm', () => {
174
+ it('should return 100 when all tests pass', () => {
175
+ const allPassing = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
176
+ tier: parseInt(tier),
177
+ passedTests: count,
178
+ totalTests: count,
179
+ }));
180
+ const score = calculateWeightedScore(allPassing);
181
+ expect(score).toBe(100);
182
+ });
183
+ it('should return 0 when no tests pass', () => {
184
+ const nonePassing = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
185
+ tier: parseInt(tier),
186
+ passedTests: 0,
187
+ totalTests: count,
188
+ }));
189
+ const score = calculateWeightedScore(nonePassing);
190
+ expect(score).toBe(0);
191
+ });
192
+ it('should return 50 when half tests pass in each tier', () => {
193
+ const halfPassing = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
194
+ tier: parseInt(tier),
195
+ passedTests: Math.floor(count / 2),
196
+ totalTests: count,
197
+ }));
198
+ const score = calculateWeightedScore(halfPassing);
199
+ expect(score).toBeGreaterThanOrEqual(45);
200
+ expect(score).toBeLessThanOrEqual(55);
201
+ });
202
+ it('should weight Tier 1 and Tier 3 more heavily (20% each)', () => {
203
+ // Only Tier 1 passing = 20% of 100 = 20
204
+ const onlyTier1 = [
205
+ { tier: 1, passedTests: TIER_TEST_COUNTS[1], totalTests: TIER_TEST_COUNTS[1] },
206
+ { tier: 2, passedTests: 0, totalTests: TIER_TEST_COUNTS[2] },
207
+ { tier: 3, passedTests: 0, totalTests: TIER_TEST_COUNTS[3] },
208
+ { tier: 4, passedTests: 0, totalTests: TIER_TEST_COUNTS[4] },
209
+ { tier: 5, passedTests: 0, totalTests: TIER_TEST_COUNTS[5] },
210
+ { tier: 6, passedTests: 0, totalTests: TIER_TEST_COUNTS[6] },
211
+ { tier: 7, passedTests: 0, totalTests: TIER_TEST_COUNTS[7] },
212
+ ];
213
+ const score = calculateWeightedScore(onlyTier1);
214
+ expect(score).toBe(20);
215
+ });
216
+ it('should correctly calculate partial tier scores', () => {
217
+ // Tier 1: 10/12 passed, weight 20%
218
+ // Score contribution: (10/12) * 100 * 20 / 100 = 16.67
219
+ const partialTier1 = [
220
+ { tier: 1, passedTests: 10, totalTests: 12 },
221
+ { tier: 2, passedTests: 0, totalTests: 8 },
222
+ { tier: 3, passedTests: 0, totalTests: 6 },
223
+ { tier: 4, passedTests: 0, totalTests: 6 },
224
+ { tier: 5, passedTests: 0, totalTests: 3 },
225
+ { tier: 6, passedTests: 0, totalTests: 6 },
226
+ { tier: 7, passedTests: 0, totalTests: 5 },
227
+ ];
228
+ const score = calculateWeightedScore(partialTier1);
229
+ expect(score).toBe(17); // Rounded
230
+ });
231
+ });
232
+ describe('Tier Level Determination', () => {
233
+ it('should return big-orange for score of 105', () => {
234
+ expect(getTierFromScore(105)).toBe('big-orange');
235
+ });
236
+ it('should return trophy for score of 100', () => {
237
+ expect(getTierFromScore(100)).toBe('trophy');
238
+ });
239
+ it('should return gold for score of 99', () => {
240
+ expect(getTierFromScore(99)).toBe('gold');
241
+ });
242
+ it('should return silver for score of 95-98', () => {
243
+ expect(getTierFromScore(95)).toBe('silver');
244
+ expect(getTierFromScore(96)).toBe('silver');
245
+ expect(getTierFromScore(97)).toBe('silver');
246
+ expect(getTierFromScore(98)).toBe('silver');
247
+ });
248
+ it('should return bronze for score of 85-94', () => {
249
+ expect(getTierFromScore(85)).toBe('bronze');
250
+ expect(getTierFromScore(90)).toBe('bronze');
251
+ expect(getTierFromScore(94)).toBe('bronze');
252
+ });
253
+ it('should return green for score of 70-84', () => {
254
+ expect(getTierFromScore(70)).toBe('green');
255
+ expect(getTierFromScore(77)).toBe('green');
256
+ expect(getTierFromScore(84)).toBe('green');
257
+ });
258
+ it('should return yellow for score of 55-69', () => {
259
+ expect(getTierFromScore(55)).toBe('yellow');
260
+ expect(getTierFromScore(62)).toBe('yellow');
261
+ expect(getTierFromScore(69)).toBe('yellow');
262
+ });
263
+ it('should return red for score below 55', () => {
264
+ expect(getTierFromScore(54)).toBe('red');
265
+ expect(getTierFromScore(30)).toBe('red');
266
+ expect(getTierFromScore(0)).toBe('red');
267
+ });
268
+ });
269
+ describe('Tier Boundary Edge Cases', () => {
270
+ it('should handle boundary between trophy (100) and gold (99)', () => {
271
+ expect(getTierFromScore(100)).toBe('trophy');
272
+ expect(getTierFromScore(99)).toBe('gold');
273
+ });
274
+ it('should handle boundary between gold (99) and silver (98)', () => {
275
+ expect(getTierFromScore(99)).toBe('gold');
276
+ expect(getTierFromScore(98)).toBe('silver');
277
+ });
278
+ it('should handle boundary between silver (95) and bronze (94)', () => {
279
+ expect(getTierFromScore(95)).toBe('silver');
280
+ expect(getTierFromScore(94)).toBe('bronze');
281
+ });
282
+ it('should handle boundary between bronze (85) and green (84)', () => {
283
+ expect(getTierFromScore(85)).toBe('bronze');
284
+ expect(getTierFromScore(84)).toBe('green');
285
+ });
286
+ it('should handle boundary between green (70) and yellow (69)', () => {
287
+ expect(getTierFromScore(70)).toBe('green');
288
+ expect(getTierFromScore(69)).toBe('yellow');
289
+ });
290
+ it('should handle boundary between yellow (55) and red (54)', () => {
291
+ expect(getTierFromScore(55)).toBe('yellow');
292
+ expect(getTierFromScore(54)).toBe('red');
293
+ });
294
+ });
295
+ });
296
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
297
+ // BIG ORANGE TESTS - THE MICHELIN STAR
298
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
299
+ describe('Big Orange (105%) - The Michelin Star', () => {
300
+ it('should be 5% above perfect score', () => {
301
+ expect(105 - 100).toBe(5);
302
+ });
303
+ it('should only be achievable with 100% pass rate', () => {
304
+ // Big Orange requires ALL tests passing, then bonus
305
+ const almostPerfect = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
306
+ tier: parseInt(tier),
307
+ passedTests: tier === '1' ? count - 1 : count, // Miss 1 test in tier 1
308
+ totalTests: count,
309
+ }));
310
+ const score = calculateWeightedScore(almostPerfect);
311
+ expect(score).toBeLessThan(100);
312
+ expect(getTierFromScore(score)).not.toBe('big-orange');
313
+ });
314
+ it('should represent excellence beyond standard compliance', () => {
315
+ // This is documented behavior - 105% = 100% tests + 5% documentation/polish bonus
316
+ expect(getTierFromScore(105)).toBe('big-orange');
317
+ expect(getTierFromScore(104)).not.toBe('big-orange');
318
+ });
319
+ });
320
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
321
+ // TYPE DEFINITIONS TESTS
322
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
323
+ describe('Type Definitions', () => {
324
+ describe('TierLevel Type', () => {
325
+ const validTiers = [
326
+ 'big-orange',
327
+ 'trophy',
328
+ 'gold',
329
+ 'silver',
330
+ 'bronze',
331
+ 'green',
332
+ 'yellow',
333
+ 'red',
334
+ 'white',
335
+ ];
336
+ it('should include all 9 tier levels', () => {
337
+ expect(validTiers).toHaveLength(9);
338
+ });
339
+ it('should include big-orange as highest tier', () => {
340
+ expect(validTiers).toContain('big-orange');
341
+ });
342
+ it('should include white as lowest/empty tier', () => {
343
+ expect(validTiers).toContain('white');
344
+ });
345
+ it('should include all medal tiers (gold, silver, bronze)', () => {
346
+ expect(validTiers).toContain('gold');
347
+ expect(validTiers).toContain('silver');
348
+ expect(validTiers).toContain('bronze');
349
+ });
350
+ it('should include traffic light tiers (green, yellow, red)', () => {
351
+ expect(validTiers).toContain('green');
352
+ expect(validTiers).toContain('yellow');
353
+ expect(validTiers).toContain('red');
354
+ });
355
+ });
356
+ });
357
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
358
+ // CERTIFICATION RESULT STRUCTURE TESTS
359
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
360
+ describe('Certification Result Structure', () => {
361
+ // Mock result structure for testing
362
+ const mockResult = {
363
+ score: 95,
364
+ totalTests: 46,
365
+ passedTests: 44,
366
+ failedTests: 2,
367
+ tierResults: [
368
+ { tier: 1, name: 'Protocol Compliance', passed: true, passedTests: 12, totalTests: 12, failedTests: [], duration: 100 },
369
+ { tier: 2, name: 'Capability Negotiation', passed: true, passedTests: 8, totalTests: 8, failedTests: [], duration: 50 },
370
+ { tier: 3, name: 'Tool Integrity', passed: false, passedTests: 5, totalTests: 6, failedTests: ['Test failed'], duration: 200 },
371
+ ],
372
+ timestamp: '2025-12-02T00:00:00.000Z',
373
+ };
374
+ it('should have required score field', () => {
375
+ expect(mockResult).toHaveProperty('score');
376
+ expect(typeof mockResult.score).toBe('number');
377
+ });
378
+ it('should have required totalTests field', () => {
379
+ expect(mockResult).toHaveProperty('totalTests');
380
+ expect(typeof mockResult.totalTests).toBe('number');
381
+ });
382
+ it('should have required passedTests field', () => {
383
+ expect(mockResult).toHaveProperty('passedTests');
384
+ expect(typeof mockResult.passedTests).toBe('number');
385
+ });
386
+ it('should have required failedTests field', () => {
387
+ expect(mockResult).toHaveProperty('failedTests');
388
+ expect(typeof mockResult.failedTests).toBe('number');
389
+ });
390
+ it('should have required tierResults array', () => {
391
+ expect(mockResult).toHaveProperty('tierResults');
392
+ expect(Array.isArray(mockResult.tierResults)).toBe(true);
393
+ });
394
+ it('should have required timestamp field', () => {
395
+ expect(mockResult).toHaveProperty('timestamp');
396
+ expect(typeof mockResult.timestamp).toBe('string');
397
+ });
398
+ it('should have passedTests + failedTests equal totalTests', () => {
399
+ expect(mockResult.passedTests + mockResult.failedTests).toBe(mockResult.totalTests);
400
+ });
401
+ });
402
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
403
+ // TIER RESULT STRUCTURE TESTS
404
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
405
+ describe('Tier Result Structure', () => {
406
+ const mockTierResult = {
407
+ tier: 1,
408
+ name: 'Protocol Compliance',
409
+ passed: true,
410
+ passedTests: 12,
411
+ totalTests: 12,
412
+ failedTests: [],
413
+ duration: 100,
414
+ };
415
+ it('should have tier number', () => {
416
+ expect(mockTierResult).toHaveProperty('tier');
417
+ expect(typeof mockTierResult.tier).toBe('number');
418
+ });
419
+ it('should have tier name', () => {
420
+ expect(mockTierResult).toHaveProperty('name');
421
+ expect(typeof mockTierResult.name).toBe('string');
422
+ });
423
+ it('should have passed boolean', () => {
424
+ expect(mockTierResult).toHaveProperty('passed');
425
+ expect(typeof mockTierResult.passed).toBe('boolean');
426
+ });
427
+ it('should have passedTests count', () => {
428
+ expect(mockTierResult).toHaveProperty('passedTests');
429
+ expect(typeof mockTierResult.passedTests).toBe('number');
430
+ });
431
+ it('should have totalTests count', () => {
432
+ expect(mockTierResult).toHaveProperty('totalTests');
433
+ expect(typeof mockTierResult.totalTests).toBe('number');
434
+ });
435
+ it('should have failedTests array', () => {
436
+ expect(mockTierResult).toHaveProperty('failedTests');
437
+ expect(Array.isArray(mockTierResult.failedTests)).toBe(true);
438
+ });
439
+ it('should have duration in ms', () => {
440
+ expect(mockTierResult).toHaveProperty('duration');
441
+ expect(typeof mockTierResult.duration).toBe('number');
442
+ });
443
+ it('should have passed=true when passedTests equals totalTests', () => {
444
+ expect(mockTierResult.passedTests).toBe(mockTierResult.totalTests);
445
+ expect(mockTierResult.passed).toBe(true);
446
+ });
447
+ it('should have empty failedTests array when all pass', () => {
448
+ expect(mockTierResult.failedTests).toHaveLength(0);
449
+ });
450
+ });
451
+ //# sourceMappingURL=certifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certifier.test.js","sourceRoot":"","sources":["../../src/__tests__/certifier.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * WJTTC Slow/Fast Test Comparison
3
+ * "Test the Testing" - F1 Philosophy
4
+ *
5
+ * Test-1 (SLOW): Methodical, step-by-step validation
6
+ * Test-2 (FAST): Full suite executed as fast as possible
7
+ *
8
+ * Purpose: Learn about testing itself by comparing results
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=slow-fast.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slow-fast.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/slow-fast.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,324 @@
1
+ "use strict";
2
+ /**
3
+ * WJTTC Slow/Fast Test Comparison
4
+ * "Test the Testing" - F1 Philosophy
5
+ *
6
+ * Test-1 (SLOW): Methodical, step-by-step validation
7
+ * Test-2 (FAST): Full suite executed as fast as possible
8
+ *
9
+ * Purpose: Learn about testing itself by comparing results
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
13
+ // TEST DATA - Same inputs for both slow and fast
14
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
15
+ const TIER_WEIGHTS = {
16
+ 1: 20, 2: 10, 3: 20, 4: 10, 5: 15, 6: 15, 7: 10,
17
+ };
18
+ const TIER_TEST_COUNTS = {
19
+ 1: 12, 2: 8, 3: 6, 4: 6, 5: 3, 6: 6, 7: 5,
20
+ };
21
+ const SCORE_BOUNDARIES = [
22
+ { score: 105, tier: 'big-orange' },
23
+ { score: 100, tier: 'trophy' },
24
+ { score: 99, tier: 'gold' },
25
+ { score: 95, tier: 'silver' },
26
+ { score: 85, tier: 'bronze' },
27
+ { score: 70, tier: 'green' },
28
+ { score: 55, tier: 'yellow' },
29
+ { score: 54, tier: 'red' },
30
+ { score: 0, tier: 'red' },
31
+ ];
32
+ // Helper functions
33
+ function calculateWeightedScore(tierResults) {
34
+ let weightedScore = 0;
35
+ let totalWeight = 0;
36
+ for (const result of tierResults) {
37
+ const weight = TIER_WEIGHTS[result.tier] || 10;
38
+ const tierScore = result.totalTests > 0 ? (result.passedTests / result.totalTests) * 100 : 0;
39
+ weightedScore += tierScore * weight;
40
+ totalWeight += weight;
41
+ }
42
+ return totalWeight > 0 ? Math.round(weightedScore / totalWeight) : 0;
43
+ }
44
+ function getTierFromScore(score) {
45
+ if (score >= 105)
46
+ return 'big-orange';
47
+ if (score >= 100)
48
+ return 'trophy';
49
+ if (score >= 99)
50
+ return 'gold';
51
+ if (score >= 95)
52
+ return 'silver';
53
+ if (score >= 85)
54
+ return 'bronze';
55
+ if (score >= 70)
56
+ return 'green';
57
+ if (score >= 55)
58
+ return 'yellow';
59
+ return 'red';
60
+ }
61
+ const slowResults = { testCount: 0, passCount: 0, failCount: 0, duration: 0, results: [] };
62
+ const fastResults = { testCount: 0, passCount: 0, failCount: 0, duration: 0, results: [] };
63
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
64
+ // TEST-1: SLOW - Methodical, Deliberate Testing
65
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
66
+ describe('TEST-1: SLOW - Methodical Testing', () => {
67
+ const startTime = Date.now();
68
+ afterAll(() => {
69
+ slowResults.duration = Date.now() - startTime;
70
+ });
71
+ describe('Tier Weight Validation (Slow)', () => {
72
+ it('SLOW: Weights sum to 100', () => {
73
+ // Methodical: Calculate step by step
74
+ let sum = 0;
75
+ sum += TIER_WEIGHTS[1]; // 20
76
+ sum += TIER_WEIGHTS[2]; // 10
77
+ sum += TIER_WEIGHTS[3]; // 20
78
+ sum += TIER_WEIGHTS[4]; // 10
79
+ sum += TIER_WEIGHTS[5]; // 15
80
+ sum += TIER_WEIGHTS[6]; // 15
81
+ sum += TIER_WEIGHTS[7]; // 10
82
+ slowResults.testCount++;
83
+ const passed = sum === 100;
84
+ if (passed)
85
+ slowResults.passCount++;
86
+ else
87
+ slowResults.failCount++;
88
+ slowResults.results.push({ name: 'weights-sum', passed, value: sum });
89
+ expect(sum).toBe(100);
90
+ });
91
+ it('SLOW: Each weight is positive', () => {
92
+ slowResults.testCount++;
93
+ const allPositive = Object.values(TIER_WEIGHTS).every(w => w > 0);
94
+ if (allPositive)
95
+ slowResults.passCount++;
96
+ else
97
+ slowResults.failCount++;
98
+ slowResults.results.push({ name: 'weights-positive', passed: allPositive });
99
+ expect(allPositive).toBe(true);
100
+ });
101
+ it('SLOW: Exactly 7 tiers defined', () => {
102
+ slowResults.testCount++;
103
+ const count = Object.keys(TIER_WEIGHTS).length;
104
+ const passed = count === 7;
105
+ if (passed)
106
+ slowResults.passCount++;
107
+ else
108
+ slowResults.failCount++;
109
+ slowResults.results.push({ name: 'tier-count', passed, value: count });
110
+ expect(count).toBe(7);
111
+ });
112
+ });
113
+ describe('Test Count Validation (Slow)', () => {
114
+ it('SLOW: Total tests equal 46', () => {
115
+ slowResults.testCount++;
116
+ let total = 0;
117
+ for (let i = 1; i <= 7; i++) {
118
+ total += TIER_TEST_COUNTS[i];
119
+ }
120
+ const passed = total === 46;
121
+ if (passed)
122
+ slowResults.passCount++;
123
+ else
124
+ slowResults.failCount++;
125
+ slowResults.results.push({ name: 'total-tests', passed, value: total });
126
+ expect(total).toBe(46);
127
+ });
128
+ it('SLOW: Each tier has at least 1 test', () => {
129
+ slowResults.testCount++;
130
+ const allHaveTests = Object.values(TIER_TEST_COUNTS).every(c => c >= 1);
131
+ if (allHaveTests)
132
+ slowResults.passCount++;
133
+ else
134
+ slowResults.failCount++;
135
+ slowResults.results.push({ name: 'min-tests', passed: allHaveTests });
136
+ expect(allHaveTests).toBe(true);
137
+ });
138
+ });
139
+ describe('Score Calculation (Slow)', () => {
140
+ it('SLOW: 100% pass rate = score 100', () => {
141
+ slowResults.testCount++;
142
+ const allPass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
143
+ tier: parseInt(tier),
144
+ passedTests: count,
145
+ totalTests: count,
146
+ }));
147
+ const score = calculateWeightedScore(allPass);
148
+ const passed = score === 100;
149
+ if (passed)
150
+ slowResults.passCount++;
151
+ else
152
+ slowResults.failCount++;
153
+ slowResults.results.push({ name: 'perfect-score', passed, value: score });
154
+ expect(score).toBe(100);
155
+ });
156
+ it('SLOW: 0% pass rate = score 0', () => {
157
+ slowResults.testCount++;
158
+ const nonePass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
159
+ tier: parseInt(tier),
160
+ passedTests: 0,
161
+ totalTests: count,
162
+ }));
163
+ const score = calculateWeightedScore(nonePass);
164
+ const passed = score === 0;
165
+ if (passed)
166
+ slowResults.passCount++;
167
+ else
168
+ slowResults.failCount++;
169
+ slowResults.results.push({ name: 'zero-score', passed, value: score });
170
+ expect(score).toBe(0);
171
+ });
172
+ it('SLOW: Only T1 passing = score 20', () => {
173
+ slowResults.testCount++;
174
+ const onlyT1 = [
175
+ { tier: 1, passedTests: 12, totalTests: 12 },
176
+ { tier: 2, passedTests: 0, totalTests: 8 },
177
+ { tier: 3, passedTests: 0, totalTests: 6 },
178
+ { tier: 4, passedTests: 0, totalTests: 6 },
179
+ { tier: 5, passedTests: 0, totalTests: 3 },
180
+ { tier: 6, passedTests: 0, totalTests: 6 },
181
+ { tier: 7, passedTests: 0, totalTests: 5 },
182
+ ];
183
+ const score = calculateWeightedScore(onlyT1);
184
+ const passed = score === 20;
185
+ if (passed)
186
+ slowResults.passCount++;
187
+ else
188
+ slowResults.failCount++;
189
+ slowResults.results.push({ name: 'tier1-only', passed, value: score });
190
+ expect(score).toBe(20);
191
+ });
192
+ });
193
+ describe('Tier Boundaries (Slow)', () => {
194
+ SCORE_BOUNDARIES.forEach(({ score, tier }) => {
195
+ it(`SLOW: Score ${score} = ${tier}`, () => {
196
+ slowResults.testCount++;
197
+ const result = getTierFromScore(score);
198
+ const passed = result === tier;
199
+ if (passed)
200
+ slowResults.passCount++;
201
+ else
202
+ slowResults.failCount++;
203
+ slowResults.results.push({ name: `boundary-${score}`, passed, value: result });
204
+ expect(result).toBe(tier);
205
+ });
206
+ });
207
+ });
208
+ });
209
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
210
+ // TEST-2: FAST - Full Suite, Maximum Speed
211
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
212
+ describe('TEST-2: FAST - Speed Run', () => {
213
+ const startTime = Date.now();
214
+ afterAll(() => {
215
+ fastResults.duration = Date.now() - startTime;
216
+ });
217
+ it('FAST: All tier validations in one shot', () => {
218
+ const start = performance.now();
219
+ // Weight sum
220
+ const weightSum = Object.values(TIER_WEIGHTS).reduce((a, b) => a + b, 0);
221
+ fastResults.results.push({ name: 'weights-sum', passed: weightSum === 100, value: weightSum });
222
+ // Weights positive
223
+ const weightsPositive = Object.values(TIER_WEIGHTS).every(w => w > 0);
224
+ fastResults.results.push({ name: 'weights-positive', passed: weightsPositive });
225
+ // Tier count
226
+ const tierCount = Object.keys(TIER_WEIGHTS).length;
227
+ fastResults.results.push({ name: 'tier-count', passed: tierCount === 7, value: tierCount });
228
+ // Total tests
229
+ const totalTests = Object.values(TIER_TEST_COUNTS).reduce((a, b) => a + b, 0);
230
+ fastResults.results.push({ name: 'total-tests', passed: totalTests === 46, value: totalTests });
231
+ // Min tests
232
+ const minTests = Object.values(TIER_TEST_COUNTS).every(c => c >= 1);
233
+ fastResults.results.push({ name: 'min-tests', passed: minTests });
234
+ fastResults.testCount += 5;
235
+ fastResults.passCount += [weightSum === 100, weightsPositive, tierCount === 7, totalTests === 46, minTests].filter(Boolean).length;
236
+ const duration = performance.now() - start;
237
+ expect(weightSum).toBe(100);
238
+ expect(weightsPositive).toBe(true);
239
+ expect(tierCount).toBe(7);
240
+ expect(totalTests).toBe(46);
241
+ expect(minTests).toBe(true);
242
+ });
243
+ it('FAST: All score calculations in one shot', () => {
244
+ const start = performance.now();
245
+ const allPass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
246
+ tier: parseInt(tier), passedTests: count, totalTests: count,
247
+ }));
248
+ const nonePass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
249
+ tier: parseInt(tier), passedTests: 0, totalTests: count,
250
+ }));
251
+ const onlyT1 = [
252
+ { tier: 1, passedTests: 12, totalTests: 12 },
253
+ { tier: 2, passedTests: 0, totalTests: 8 },
254
+ { tier: 3, passedTests: 0, totalTests: 6 },
255
+ { tier: 4, passedTests: 0, totalTests: 6 },
256
+ { tier: 5, passedTests: 0, totalTests: 3 },
257
+ { tier: 6, passedTests: 0, totalTests: 6 },
258
+ { tier: 7, passedTests: 0, totalTests: 5 },
259
+ ];
260
+ const perfectScore = calculateWeightedScore(allPass);
261
+ const zeroScore = calculateWeightedScore(nonePass);
262
+ const t1Score = calculateWeightedScore(onlyT1);
263
+ fastResults.results.push({ name: 'perfect-score', passed: perfectScore === 100, value: perfectScore });
264
+ fastResults.results.push({ name: 'zero-score', passed: zeroScore === 0, value: zeroScore });
265
+ fastResults.results.push({ name: 'tier1-only', passed: t1Score === 20, value: t1Score });
266
+ fastResults.testCount += 3;
267
+ fastResults.passCount += [perfectScore === 100, zeroScore === 0, t1Score === 20].filter(Boolean).length;
268
+ expect(perfectScore).toBe(100);
269
+ expect(zeroScore).toBe(0);
270
+ expect(t1Score).toBe(20);
271
+ });
272
+ it('FAST: All tier boundaries in one shot', () => {
273
+ const start = performance.now();
274
+ const results = SCORE_BOUNDARIES.map(({ score, tier }) => {
275
+ const result = getTierFromScore(score);
276
+ const passed = result === tier;
277
+ fastResults.results.push({ name: `boundary-${score}`, passed, value: result });
278
+ return passed;
279
+ });
280
+ fastResults.testCount += results.length;
281
+ fastResults.passCount += results.filter(Boolean).length;
282
+ results.forEach((passed, i) => {
283
+ expect(passed).toBe(true);
284
+ });
285
+ });
286
+ });
287
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
288
+ // COMPARISON: Slow vs Fast
289
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
290
+ describe('COMPARISON: Slow vs Fast Results', () => {
291
+ it('should have same test count', () => {
292
+ expect(slowResults.testCount).toBe(fastResults.testCount);
293
+ });
294
+ it('should have same pass count', () => {
295
+ expect(slowResults.passCount).toBe(fastResults.passCount);
296
+ });
297
+ it('should have same fail count', () => {
298
+ expect(slowResults.failCount).toBe(fastResults.failCount);
299
+ });
300
+ it('should produce identical results for each test', () => {
301
+ // Compare each named result
302
+ const slowMap = new Map(slowResults.results.map(r => [r.name, r]));
303
+ const fastMap = new Map(fastResults.results.map(r => [r.name, r]));
304
+ for (const [name, slowResult] of slowMap) {
305
+ const fastResult = fastMap.get(name);
306
+ expect(fastResult).toBeDefined();
307
+ expect(fastResult?.passed).toBe(slowResult.passed);
308
+ if (slowResult.value !== undefined) {
309
+ expect(fastResult?.value).toBe(slowResult.value);
310
+ }
311
+ }
312
+ });
313
+ it('FAST should be faster than SLOW (learning about testing)', () => {
314
+ // This teaches us: batching tests is more efficient
315
+ // But both should produce identical results
316
+ console.log(`\nšŸ“Š SLOW/FAST COMPARISON:`);
317
+ console.log(` SLOW: ${slowResults.duration}ms for ${slowResults.testCount} logical tests`);
318
+ console.log(` FAST: ${fastResults.duration}ms for ${fastResults.testCount} logical tests`);
319
+ console.log(` Both: ${slowResults.passCount}/${slowResults.testCount} passed`);
320
+ // We don't assert on timing (flaky) but we log for learning
321
+ expect(true).toBe(true);
322
+ });
323
+ });
324
+ //# sourceMappingURL=slow-fast.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slow-fast.test.js","sourceRoot":"","sources":["../../src/__tests__/slow-fast.test.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -62,7 +62,7 @@ const program = new commander_1.Command();
62
62
  program
63
63
  .name('wjttc')
64
64
  .description('Championship-grade MCP server validation')
65
- .version('1.0.0');
65
+ .version('1.1.0');
66
66
  // Main certification command
67
67
  program
68
68
  .command('certify')
@@ -79,7 +79,7 @@ program
79
79
  .action(async (options) => {
80
80
  console.log('');
81
81
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
82
- console.log('šŸŽļø WJTTC MCP CERTIFICATION');
82
+ console.log('šŸŽļø WJTTC šŸŠ MCP CERTIFICATION');
83
83
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
84
84
  console.log('');
85
85
  const certifier = new certifier_1.WJTTCCertifier({
@@ -210,7 +210,7 @@ function printSummary(result, tier, passed) {
210
210
  }
211
211
  function generateMarkdownReport(result, tier) {
212
212
  const emoji = TIERS[tier].emoji;
213
- return `# ${emoji} WJTTC MCP Certification Report
213
+ return `# ${emoji} WJTTC šŸŠ Certification Report
214
214
 
215
215
  ## Summary
216
216
 
@@ -238,7 +238,7 @@ ${tr.failedTests.map((t) => `- ${t}`).join('\n')}
238
238
 
239
239
  ---
240
240
 
241
- *Generated by WJTTC MCP Certification*
241
+ *Generated by WJTTC šŸŠ*
242
242
  *"When brakes must work flawlessly, so must our MCP servers"*
243
243
  `;
244
244
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,2CAA6E;AAC7E,mCAAyC;AACzC,uCAAyB;AACzB,2CAA6B;AAE7B,wDAAwD;AACxD,oDAAoD;AACpD,MAAM,KAAK,GAA4E;IACrF,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,6CAA6C,EAAE;IACpG,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,wBAAwB,EAAE;IAC3E,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;IAC7D,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE;IACxE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE;IAC7E,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE;IAC1E,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE;IAC/E,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE;IAC5E,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE;CACrE,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,6BAA6B;AAC7B,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,cAAc,CAAC,cAAc,EAAE,gCAAgC,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,KAAK,CAAC;KAC5D,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,SAAS,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;KAC3E,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAChE,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,KAAK,CAAC;KACpE,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,SAAS,GAAG,IAAI,0BAAc,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC,GAAG;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7F,kBAAkB,EAAE;YAClB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;YACxC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;SACzC;QACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC;QAErC,iBAAiB;QACjB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAoB,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;QAE5C,yBAAyB;QACzB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,UAAU;YACV,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;YAC/C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG;oBACd,SAAS,MAAM,CAAC,KAAK,EAAE;oBACvB,QAAQ,YAAY,EAAE;oBACtB,cAAc,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;oBACzC,UAAU,MAAM,EAAE;oBAClB,eAAe,MAAM,CAAC,UAAU,EAAE;oBAClC,gBAAgB,MAAM,CAAC,WAAW,EAAE;oBACpC,gBAAgB,MAAM,CAAC,WAAW,EAAE;iBACrC,CAAC;gBACF,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,YAAY;QACZ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,2BAA2B;AAC3B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mCAAmC,CAAC;KAChD,cAAc,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;KACxD,cAAc,CAAC,eAAe,EAAE,oBAAoB,CAAC;KACrD,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,0BAA0B,CAAC;KACpE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,sBAAc,CAAC,QAAQ,CAAC;QACpC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAiB;KAChC,CAAC,CAAC;IAEH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEL,sBAAsB;AACtB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,SAAS,GAAG,IAAI,0BAAc,CAAC;QACnC,OAAO;QACP,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACb,kBAAkB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,eAAe,CAAC,CAAC;IAE1E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEL,6CAA6C;AAC7C,SAAS,OAAO,CAAC,KAAa;IAC5B,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,YAAY,CAAC;IACtC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,MAA2B,EAAE,IAAe,EAAE,MAAe;IACjF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,mBAAmB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,SAAS,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,iBAAiB;IACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA2B,EAAE,IAAe;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAEhC,OAAO,KAAK,KAAK;;;;;;gBAMH,MAAM,CAAC,KAAK;eACb,IAAI,IAAI,KAAK;uBACL,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU;eAC/C,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;EAIrC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;WACtB,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;;gBAEd,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;eACpC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU;kBAC5B,EAAE,CAAC,QAAQ;;EAE3B,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE5B,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC/C,CAAC,CAAC,CAAC,EAAE;CACL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;CAMZ,CAAC;AACF,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "wjttc",
3
- "version": "1.0.2",
4
- "mcpName": "io.github.Wolfe-Jam/wjttc",
5
- "description": "FAF Foundation Testing Standard - Zero-error, multi-tier, most stringent MCP test suite. How IANA-registered formats, MCPs, and CLIs get certified. Big Orange (105%) = Excellence.",
3
+ "version": "1.1.0",
4
+ "mcpName": "io.github.Wolfe-Jam/WJTTC",
5
+ "displayName": "WJTTC/šŸŠ",
6
+ "description": "WolfeJam Technical Testing Certification - Score your MCP server for free. 46 tests, 7 tiers, from the creator of IANA-registered .faf format. Full leaderboard coming soon - what will your server score?",
6
7
  "main": "dist/index.js",
7
8
  "bin": {
8
9
  "wjttc": "dist/cli.js"
@@ -66,6 +67,7 @@
66
67
  },
67
68
  "devDependencies": {
68
69
  "@jest/globals": "^30.1.2",
70
+ "@types/jest": "^30.0.0",
69
71
  "@types/node": "^20.11.0",
70
72
  "jest": "^29.7.0",
71
73
  "ts-jest": "^29.1.0",