@dcyfr/ai 1.0.3 → 1.0.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 (83) hide show
  1. package/LICENSE +27 -1
  2. package/README.md +343 -4
  3. package/dist/ai/index.d.ts +2 -0
  4. package/dist/ai/index.d.ts.map +1 -1
  5. package/dist/ai/index.js +2 -0
  6. package/dist/ai/index.js.map +1 -1
  7. package/dist/ai/mcp/index.d.ts +14 -2
  8. package/dist/ai/mcp/index.d.ts.map +1 -1
  9. package/dist/ai/mcp/index.js +11 -1
  10. package/dist/ai/mcp/index.js.map +1 -1
  11. package/dist/ai/mcp/servers/analytics/index.d.ts +19 -0
  12. package/dist/ai/mcp/servers/analytics/index.d.ts.map +1 -0
  13. package/dist/ai/mcp/servers/analytics/index.js +556 -0
  14. package/dist/ai/mcp/servers/analytics/index.js.map +1 -0
  15. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts +61 -0
  16. package/dist/ai/mcp/servers/content-manager/content-provider.d.ts.map +1 -0
  17. package/dist/ai/mcp/servers/content-manager/content-provider.js +8 -0
  18. package/dist/ai/mcp/servers/content-manager/content-provider.js.map +1 -0
  19. package/dist/ai/mcp/servers/content-manager/index.d.ts +19 -0
  20. package/dist/ai/mcp/servers/content-manager/index.d.ts.map +1 -0
  21. package/dist/ai/mcp/servers/content-manager/index.js +236 -0
  22. package/dist/ai/mcp/servers/content-manager/index.js.map +1 -0
  23. package/dist/ai/mcp/servers/design-tokens/index.d.ts +19 -0
  24. package/dist/ai/mcp/servers/design-tokens/index.d.ts.map +1 -0
  25. package/dist/ai/mcp/servers/design-tokens/index.js +422 -0
  26. package/dist/ai/mcp/servers/design-tokens/index.js.map +1 -0
  27. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts +59 -0
  28. package/dist/ai/mcp/servers/design-tokens/token-provider.d.ts.map +1 -0
  29. package/dist/ai/mcp/servers/design-tokens/token-provider.js +8 -0
  30. package/dist/ai/mcp/servers/design-tokens/token-provider.js.map +1 -0
  31. package/dist/ai/mcp/servers/promptintel/index.d.ts +19 -0
  32. package/dist/ai/mcp/servers/promptintel/index.d.ts.map +1 -0
  33. package/dist/ai/mcp/servers/promptintel/index.js +323 -0
  34. package/dist/ai/mcp/servers/promptintel/index.js.map +1 -0
  35. package/dist/ai/mcp/servers/shared/cache.d.ts +62 -0
  36. package/dist/ai/mcp/servers/shared/cache.d.ts.map +1 -0
  37. package/dist/ai/mcp/servers/shared/cache.js +117 -0
  38. package/dist/ai/mcp/servers/shared/cache.js.map +1 -0
  39. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts +53 -0
  40. package/dist/ai/mcp/servers/shared/promptintel-client.d.ts.map +1 -0
  41. package/dist/ai/mcp/servers/shared/promptintel-client.js +185 -0
  42. package/dist/ai/mcp/servers/shared/promptintel-client.js.map +1 -0
  43. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts +85 -0
  44. package/dist/ai/mcp/servers/shared/promptintel-types.d.ts.map +1 -0
  45. package/dist/ai/mcp/servers/shared/promptintel-types.js +7 -0
  46. package/dist/ai/mcp/servers/shared/promptintel-types.js.map +1 -0
  47. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts +54 -0
  48. package/dist/ai/mcp/servers/shared/rate-limiter.d.ts.map +1 -0
  49. package/dist/ai/mcp/servers/shared/rate-limiter.js +122 -0
  50. package/dist/ai/mcp/servers/shared/rate-limiter.js.map +1 -0
  51. package/dist/ai/mcp/servers/shared/redis-client.d.ts +54 -0
  52. package/dist/ai/mcp/servers/shared/redis-client.d.ts.map +1 -0
  53. package/dist/ai/mcp/servers/shared/redis-client.js +225 -0
  54. package/dist/ai/mcp/servers/shared/redis-client.js.map +1 -0
  55. package/dist/ai/mcp/servers/shared/types.d.ts +292 -0
  56. package/dist/ai/mcp/servers/shared/types.d.ts.map +1 -0
  57. package/dist/ai/mcp/servers/shared/types.js +6 -0
  58. package/dist/ai/mcp/servers/shared/types.js.map +1 -0
  59. package/dist/ai/mcp/servers/shared/utils.d.ts +41 -0
  60. package/dist/ai/mcp/servers/shared/utils.d.ts.map +1 -0
  61. package/dist/ai/mcp/servers/shared/utils.js +183 -0
  62. package/dist/ai/mcp/servers/shared/utils.js.map +1 -0
  63. package/dist/ai/memory/config.d.ts +87 -0
  64. package/dist/ai/memory/config.d.ts.map +1 -0
  65. package/dist/ai/memory/config.js +154 -0
  66. package/dist/ai/memory/config.js.map +1 -0
  67. package/dist/ai/memory/dcyfr-memory.d.ts +63 -0
  68. package/dist/ai/memory/dcyfr-memory.d.ts.map +1 -0
  69. package/dist/ai/memory/dcyfr-memory.js +270 -0
  70. package/dist/ai/memory/dcyfr-memory.js.map +1 -0
  71. package/dist/ai/memory/index.d.ts +15 -0
  72. package/dist/ai/memory/index.d.ts.map +1 -0
  73. package/dist/ai/memory/index.js +15 -0
  74. package/dist/ai/memory/index.js.map +1 -0
  75. package/dist/ai/memory/mem0-client.d.ts +108 -0
  76. package/dist/ai/memory/mem0-client.d.ts.map +1 -0
  77. package/dist/ai/memory/mem0-client.js +166 -0
  78. package/dist/ai/memory/mem0-client.js.map +1 -0
  79. package/dist/ai/memory/types.d.ts +175 -0
  80. package/dist/ai/memory/types.d.ts.map +1 -0
  81. package/dist/ai/memory/types.js +10 -0
  82. package/dist/ai/memory/types.js.map +1 -0
  83. package/package.json +24 -2
@@ -0,0 +1,422 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Design Token Validator MCP Server
4
+ *
5
+ * Provides real-time design token validation and compliance checking.
6
+ * AI assistants can validate code against design tokens and get suggestions.
7
+ *
8
+ * Uses TokenProvider abstraction to decouple from specific design token sources.
9
+ * @see token-provider.ts for the provider interface
10
+ */
11
+ import { FastMCP } from 'fastmcp';
12
+ import { z } from 'zod';
13
+ import fs from 'fs/promises';
14
+ import path from 'path';
15
+ import { SimpleCache } from '../shared/cache.js';
16
+ /**
17
+ * Create Design Token MCP Server with a token provider
18
+ * @param provider - TokenProvider implementation for design token access
19
+ */
20
+ export function createDesignTokenServer(provider) {
21
+ const server = new FastMCP({
22
+ name: 'dcyfr-design-tokens',
23
+ version: '1.0.0',
24
+ instructions: 'Real-time design token validation and compliance checking. Use these tools to validate code against design tokens and get suggestions.',
25
+ });
26
+ // Cache for validation results (2 minutes)
27
+ const validationCache = new SimpleCache(120000);
28
+ const complianceCache = new SimpleCache(120000);
29
+ // ============================================================================
30
+ // Validation Logic
31
+ // ============================================================================
32
+ /**
33
+ * Validate code against design tokens
34
+ */
35
+ function validateCode(code) {
36
+ const violations = [];
37
+ const suggestions = [];
38
+ const categories = provider.getTokenCategories();
39
+ // Extract all className strings
40
+ const classNameMatches = code.matchAll(/className=["{']([^"'}]+)["{']|className=\{[`"]([^`"]+)[`"]\}/g);
41
+ let totalClasses = 0;
42
+ let violationCount = 0;
43
+ for (const match of classNameMatches) {
44
+ const classNames = (match[1] || match[2] || '').split(/\s+/).filter(Boolean);
45
+ for (const className of classNames) {
46
+ totalClasses++;
47
+ // Check spacing violations
48
+ if (/^(gap|space-[xy]|p[trblxy]?|m[trblxy]?|w|h)-\d+$/.test(className)) {
49
+ const matched = /^(gap|space-[xy]|p[trblxy]?|m[trblxy]?|w|h)-(\d+)$/.exec(className);
50
+ if (matched) {
51
+ violations.push({
52
+ type: 'hardcoded-value',
53
+ className,
54
+ suggestion: `Use SPACING constant instead: gap-\${SPACING.content}`,
55
+ category: 'spacing',
56
+ });
57
+ violationCount++;
58
+ }
59
+ }
60
+ // Check typography violations
61
+ if (/^text-\d+xl$/.test(className) ||
62
+ /^font-(normal|medium|semibold|bold)$/.test(className)) {
63
+ violations.push({
64
+ type: 'hardcoded-value',
65
+ className,
66
+ suggestion: 'Use TYPOGRAPHY constant instead: TYPOGRAPHY.h1.standard',
67
+ category: 'typography',
68
+ });
69
+ violationCount++;
70
+ }
71
+ // Check color violations
72
+ if (/^(text|bg|border)-(gray|zinc|slate|red|green|blue|yellow)-\d+$/.test(className)) {
73
+ violations.push({
74
+ type: 'hardcoded-value',
75
+ className,
76
+ suggestion: 'Use COLORS constant instead',
77
+ category: 'colors',
78
+ });
79
+ violationCount++;
80
+ }
81
+ }
82
+ }
83
+ const compliance = totalClasses > 0 ? Math.round(((totalClasses - violationCount) / totalClasses) * 100) : 100;
84
+ if (violations.length > 0) {
85
+ suggestions.push(provider.getTokenImportStatement());
86
+ suggestions.push('Use token constants in className template literals');
87
+ suggestions.push(`See ${provider.getDocumentationUrl()} for complete token reference`);
88
+ }
89
+ return {
90
+ isValid: violations.length === 0,
91
+ violations,
92
+ compliance,
93
+ suggestions,
94
+ };
95
+ }
96
+ /**
97
+ * Suggest design token for hardcoded value
98
+ */
99
+ function suggestToken(hardcodedValue, category) {
100
+ const suggestions = [];
101
+ const spacingTokens = provider.getSpacingTokens();
102
+ // Parse numeric values
103
+ const numMatch = hardcodedValue.match(/\d+/);
104
+ const num = numMatch ? parseInt(numMatch[0], 10) : null;
105
+ if (category === 'spacing' || !category) {
106
+ // Spacing suggestions
107
+ if (num !== null) {
108
+ const spacingKeys = Object.keys(spacingTokens);
109
+ const closest = spacingKeys.find((key) => {
110
+ const value = spacingTokens[key];
111
+ return typeof value === 'number' && Math.abs(value - num) <= 2;
112
+ });
113
+ if (closest) {
114
+ suggestions.push(`SPACING.${closest} (${spacingTokens[closest]})`);
115
+ }
116
+ }
117
+ }
118
+ if (category === 'typography' || !category) {
119
+ // Typography suggestions
120
+ if (hardcodedValue.includes('text-') || hardcodedValue.includes('font-')) {
121
+ suggestions.push('TYPOGRAPHY.h1.standard');
122
+ suggestions.push('TYPOGRAPHY.body.default');
123
+ suggestions.push('TYPOGRAPHY.small.muted');
124
+ }
125
+ }
126
+ if (category === 'containers' || !category) {
127
+ // Container suggestions
128
+ if (hardcodedValue.includes('max-w') || hardcodedValue.includes('container')) {
129
+ suggestions.push('CONTAINER_WIDTHS.standard');
130
+ suggestions.push('CONTAINER_WIDTHS.wide');
131
+ suggestions.push('CONTAINER_WIDTHS.narrow');
132
+ }
133
+ }
134
+ if (suggestions.length === 0) {
135
+ suggestions.push(`No exact match found for "${hardcodedValue}". Check design-tokens.ts`);
136
+ }
137
+ return suggestions;
138
+ }
139
+ /**
140
+ * Calculate compliance for entire codebase or specific file
141
+ */
142
+ async function calculateCompliance(filePath) {
143
+ // Check cache first
144
+ const cacheKey = filePath || 'global';
145
+ const cached = complianceCache.get(cacheKey);
146
+ if (cached)
147
+ return cached;
148
+ // For specific file
149
+ if (filePath) {
150
+ try {
151
+ const fullPath = path.isAbsolute(filePath) ? filePath : path.join(process.cwd(), filePath);
152
+ const content = await fs.readFile(fullPath, 'utf-8');
153
+ const result = validateCode(content);
154
+ const data = {
155
+ percentage: result.compliance,
156
+ totalFiles: 1,
157
+ totalViolations: result.violations.length,
158
+ fileBreakdown: { [filePath]: result.violations.length },
159
+ };
160
+ complianceCache.set(cacheKey, data);
161
+ return data;
162
+ }
163
+ catch (error) {
164
+ throw new Error(`Failed to read file: ${filePath}`);
165
+ }
166
+ }
167
+ // Global compliance (simplified - would need full file scan in production)
168
+ const data = {
169
+ percentage: 85, // Placeholder - would calculate from actual scan
170
+ totalFiles: 120,
171
+ totalViolations: 1657,
172
+ fileBreakdown: {},
173
+ };
174
+ complianceCache.set(cacheKey, data);
175
+ return data;
176
+ }
177
+ // ============================================================================
178
+ // MCP Tools
179
+ // ============================================================================
180
+ // Tool 1: Validate code against design tokens
181
+ server.addTool({
182
+ name: 'tokens:validate',
183
+ description: 'Validate code snippet against design token requirements. Returns violations and suggestions.',
184
+ parameters: z.object({
185
+ code: z.string().describe('Code snippet to validate (JSX/TSX)'),
186
+ filePath: z.string().optional().describe('Optional file path for context'),
187
+ }),
188
+ execute: async ({ code, filePath }) => {
189
+ const cacheKey = `validate:${code}`;
190
+ const cached = validationCache.get(cacheKey);
191
+ if (cached) {
192
+ return {
193
+ type: 'text',
194
+ text: cached,
195
+ };
196
+ }
197
+ const result = validateCode(code);
198
+ const output = {
199
+ isValid: result.isValid,
200
+ compliance: result.compliance,
201
+ violations: result.violations,
202
+ suggestions: result.suggestions,
203
+ filePath,
204
+ };
205
+ const jsonOutput = JSON.stringify(output, null, 2);
206
+ validationCache.set(cacheKey, jsonOutput);
207
+ return {
208
+ type: 'text',
209
+ text: jsonOutput,
210
+ };
211
+ },
212
+ });
213
+ // Tool 2: Suggest design token for hardcoded value
214
+ server.addTool({
215
+ name: 'tokens:suggest',
216
+ description: "Get design token suggestions for a hardcoded value (e.g., 'gap-4', 'text-2xl')",
217
+ parameters: z.object({
218
+ hardcodedValue: z.string().describe('Hardcoded Tailwind class or value'),
219
+ category: z
220
+ .enum(['spacing', 'typography', 'containers', 'breakpoints'])
221
+ .optional()
222
+ .describe('Token category to search in'),
223
+ }),
224
+ execute: async ({ hardcodedValue, category, }) => {
225
+ const suggestions = suggestToken(hardcodedValue, category);
226
+ const output = {
227
+ hardcodedValue,
228
+ category: category || 'all',
229
+ suggestions,
230
+ recommended: suggestions[0] || null,
231
+ };
232
+ return {
233
+ type: 'text',
234
+ text: JSON.stringify(output, null, 2),
235
+ };
236
+ },
237
+ });
238
+ // Tool 3: Get compliance percentage
239
+ server.addTool({
240
+ name: 'tokens:getCompliance',
241
+ description: 'Calculate design token compliance percentage for file or entire codebase',
242
+ parameters: z.object({
243
+ filePath: z
244
+ .string()
245
+ .optional()
246
+ .describe('Optional file path (omit for global compliance)'),
247
+ }),
248
+ execute: async ({ filePath }) => {
249
+ const result = await calculateCompliance(filePath);
250
+ const output = {
251
+ compliance: `${result.percentage}%`,
252
+ totalFiles: result.totalFiles,
253
+ totalViolations: result.totalViolations,
254
+ status: result.percentage >= 90 ? 'passing' : 'needs-improvement',
255
+ target: '90%',
256
+ fileBreakdown: result.fileBreakdown,
257
+ };
258
+ return {
259
+ type: 'text',
260
+ text: JSON.stringify(output, null, 2),
261
+ };
262
+ },
263
+ });
264
+ // Tool 4: Find token usages
265
+ server.addTool({
266
+ name: 'tokens:findUsages',
267
+ description: 'Find all files using a specific design token',
268
+ parameters: z.object({
269
+ tokenName: z
270
+ .string()
271
+ .describe("Token name to search for (e.g., 'SPACING.content', 'TYPOGRAPHY.h1')"),
272
+ }),
273
+ execute: async ({ tokenName }) => {
274
+ // Simplified implementation - would use grep or AST search in production
275
+ const output = {
276
+ tokenName,
277
+ usages: [],
278
+ count: 0,
279
+ message: 'Token usage search requires AST analysis - see grep-search for quick lookup',
280
+ };
281
+ return {
282
+ type: 'text',
283
+ text: JSON.stringify(output, null, 2),
284
+ };
285
+ },
286
+ });
287
+ // Tool 5: Analyze file for token usage
288
+ server.addTool({
289
+ name: 'tokens:analyzeFile',
290
+ description: 'Comprehensive design token analysis for a specific file',
291
+ parameters: z.object({
292
+ filePath: z.string().describe('File path to analyze'),
293
+ }),
294
+ execute: async ({ filePath }) => {
295
+ try {
296
+ const fullPath = path.isAbsolute(filePath) ? filePath : path.join(process.cwd(), filePath);
297
+ const content = await fs.readFile(fullPath, 'utf-8');
298
+ const validation = validateCode(content);
299
+ const compliance = await calculateCompliance(filePath);
300
+ const output = {
301
+ filePath,
302
+ compliance: compliance.percentage,
303
+ violations: validation.violations,
304
+ totalClasses: validation.violations.length +
305
+ Math.round((validation.violations.length / (100 - validation.compliance)) *
306
+ validation.compliance),
307
+ categories: {
308
+ spacing: validation.violations.filter((v) => v.category === 'spacing').length,
309
+ typography: validation.violations.filter((v) => v.category === 'typography').length,
310
+ colors: validation.violations.filter((v) => v.category === 'colors').length,
311
+ },
312
+ recommendations: validation.suggestions,
313
+ };
314
+ return {
315
+ type: 'text',
316
+ text: JSON.stringify(output, null, 2),
317
+ };
318
+ }
319
+ catch (error) {
320
+ throw new Error(`Failed to analyze file: ${error instanceof Error ? error.message : String(error)}`);
321
+ }
322
+ },
323
+ });
324
+ // ============================================================================
325
+ // MCP Resources
326
+ // ============================================================================
327
+ // Resource 1: Token categories
328
+ server.addResource({
329
+ uri: 'tokens://categories',
330
+ name: 'Design Token Categories',
331
+ description: 'All design token categories with examples and patterns',
332
+ mimeType: 'application/json',
333
+ async load() {
334
+ const categories = provider.getTokenCategories().map((cat) => ({
335
+ name: cat.name,
336
+ description: cat.description,
337
+ examples: Object.keys(cat.tokens).slice(0, 5),
338
+ patterns: cat.patterns.map((p) => p.source),
339
+ }));
340
+ return {
341
+ text: JSON.stringify(categories, null, 2),
342
+ };
343
+ },
344
+ });
345
+ // Resource 2: Current compliance
346
+ server.addResource({
347
+ uri: 'tokens://compliance/current',
348
+ name: 'Current Design Token Compliance',
349
+ description: 'Real-time compliance statistics',
350
+ mimeType: 'application/json',
351
+ async load() {
352
+ const compliance = await calculateCompliance();
353
+ return {
354
+ text: JSON.stringify({
355
+ percentage: compliance.percentage,
356
+ status: compliance.percentage >= 90 ? 'passing' : 'needs-improvement',
357
+ target: 90,
358
+ totalViolations: compliance.totalViolations,
359
+ lastUpdated: new Date().toISOString(),
360
+ }, null, 2),
361
+ };
362
+ },
363
+ });
364
+ // Resource 3: Recent violations (placeholder)
365
+ server.addResource({
366
+ uri: 'tokens://violations/recent',
367
+ name: 'Recent Design Token Violations',
368
+ description: 'Recent ESLint violations found',
369
+ mimeType: 'application/json',
370
+ async load() {
371
+ return {
372
+ text: JSON.stringify({
373
+ message: 'Run npm run find:token-violations for full violation report',
374
+ recentViolations: [],
375
+ }, null, 2),
376
+ };
377
+ },
378
+ });
379
+ // Resource 4: Anti-patterns
380
+ server.addResource({
381
+ uri: 'tokens://anti-patterns',
382
+ name: 'Design Token Anti-Patterns',
383
+ description: 'Common anti-patterns to avoid',
384
+ mimeType: 'application/json',
385
+ async load() {
386
+ const antiPatterns = [
387
+ {
388
+ pattern: 'Hardcoded spacing values',
389
+ wrong: "className='gap-4 p-4'",
390
+ correct: 'className={`gap-4 p-4`}',
391
+ },
392
+ {
393
+ pattern: 'Hardcoded typography',
394
+ wrong: "className='text-xl font-bold'",
395
+ correct: 'className={TYPOGRAPHY.h2.standard}',
396
+ },
397
+ {
398
+ pattern: 'Direct color values',
399
+ wrong: "className='text-gray-900 bg-blue-500'",
400
+ correct: 'className={`text-${COLORS.text.primary} bg-${COLORS.brand.primary}`}',
401
+ },
402
+ {
403
+ pattern: 'Magic numbers',
404
+ wrong: "className='max-w-[800px]'",
405
+ correct: 'className={CONTAINER_WIDTHS.standard}',
406
+ },
407
+ ];
408
+ return {
409
+ text: JSON.stringify(antiPatterns, null, 2),
410
+ };
411
+ },
412
+ });
413
+ return server;
414
+ }
415
+ // ============================================================================
416
+ // Standalone server (requires provider to be passed in)
417
+ // ============================================================================
418
+ // For standalone execution, this file should not auto-start the server.
419
+ // Instead, create a startup script that instantiates the provider and server.
420
+ // See dcyfr-labs/src/mcp/start-token-server.ts for example.
421
+ export default createDesignTokenServer;
422
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/design-tokens/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * TokenProvider Interface
3
+ *
4
+ * Abstraction for design token sources to decouple Design Token MCP from dcyfr-labs.
5
+ * Implementations provide token categories and definitions from design systems.
6
+ */
7
+ export interface TokenCategory {
8
+ name: string;
9
+ tokens: Record<string, string | number>;
10
+ patterns: RegExp[];
11
+ description: string;
12
+ }
13
+ export interface TokenViolation {
14
+ type: 'hardcoded-value' | 'missing-token' | 'incorrect-pattern';
15
+ className: string;
16
+ suggestion?: string;
17
+ category?: string;
18
+ line?: number;
19
+ }
20
+ export interface ValidationResult {
21
+ isValid: boolean;
22
+ violations: TokenViolation[];
23
+ compliance: number;
24
+ suggestions: string[];
25
+ }
26
+ export interface TokenSuggestion {
27
+ hardcodedValue: string;
28
+ category: string;
29
+ suggestions: string[];
30
+ recommended: string | null;
31
+ }
32
+ export interface ComplianceReport {
33
+ percentage: number;
34
+ totalFiles: number;
35
+ totalViolations: number;
36
+ fileBreakdown?: Record<string, number>;
37
+ }
38
+ /**
39
+ * TokenProvider interface for abstracting design token sources
40
+ */
41
+ export interface TokenProvider {
42
+ /**
43
+ * Get all token categories with patterns and descriptions
44
+ */
45
+ getTokenCategories(): TokenCategory[];
46
+ /**
47
+ * Get spacing tokens (for numeric value suggestions)
48
+ */
49
+ getSpacingTokens(): Record<string, number>;
50
+ /**
51
+ * Get import statement for tokens (used in suggestions)
52
+ */
53
+ getTokenImportStatement(): string;
54
+ /**
55
+ * Get documentation URL for design tokens
56
+ */
57
+ getDocumentationUrl(): string;
58
+ }
59
+ //# sourceMappingURL=token-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/design-tokens/token-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,iBAAiB,GAAG,eAAe,GAAG,mBAAmB,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,kBAAkB,IAAI,aAAa,EAAE,CAAC;IAEtC;;OAEG;IACH,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C;;OAEG;IACH,uBAAuB,IAAI,MAAM,CAAC;IAElC;;OAEG;IACH,mBAAmB,IAAI,MAAM,CAAC;CAC/B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TokenProvider Interface
3
+ *
4
+ * Abstraction for design token sources to decouple Design Token MCP from dcyfr-labs.
5
+ * Implementations provide token categories and definitions from design systems.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=token-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-provider.js","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/design-tokens/token-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PromptIntel MCP Server
4
+ *
5
+ * Provides AI assistants with direct access to PromptIntel threat intelligence database.
6
+ * Enables real-time security scanning, threat detection, and vulnerability reporting.
7
+ *
8
+ * Tools:
9
+ * - promptintel:searchThreats - Search IoPC database for adversarial prompt patterns
10
+ * - promptintel:getTaxonomy - Fetch threat attack technique taxonomy
11
+ * - promptintel:submitReport - Submit security finding or vulnerability
12
+ *
13
+ * Resources:
14
+ * - promptintel://threats/critical - Critical severity threats
15
+ * - promptintel://taxonomy - Full threat taxonomy
16
+ * - promptintel://health - API health status
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/ai/mcp/servers/promptintel/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}