@onemrvapublic/design-system-mcp-server 2.0.1-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +420 -0
- package/dist/component-parser.d.ts +79 -0
- package/dist/component-parser.js +646 -0
- package/dist/component-parser.js.map +1 -0
- package/dist/component-scanner.d.ts +81 -0
- package/dist/component-scanner.js +444 -0
- package/dist/component-scanner.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +999 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-shared.d.ts +141 -0
- package/dist/mcp-shared.js +519 -0
- package/dist/mcp-shared.js.map +1 -0
- package/dist/metrics.d.ts +64 -0
- package/dist/metrics.js +271 -0
- package/dist/metrics.js.map +1 -0
- package/dist/migration-rules.d.ts +29 -0
- package/dist/migration-rules.js +862 -0
- package/dist/migration-rules.js.map +1 -0
- package/dist/tool-components.d.ts +23 -0
- package/dist/tool-components.js +816 -0
- package/dist/tool-components.js.map +1 -0
- package/dist/tool-design.d.ts +41 -0
- package/dist/tool-design.js +618 -0
- package/dist/tool-design.js.map +1 -0
- package/dist/tool-migration.d.ts +5 -0
- package/dist/tool-migration.js +976 -0
- package/dist/tool-migration.js.map +1 -0
- package/dist/tool-registry.d.ts +3 -0
- package/dist/tool-registry.js +458 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools.d.ts +13 -0
- package/dist/tools.js +349 -0
- package/dist/tools.js.map +1 -0
- package/mcp-data/codebase.json +4809 -0
- package/mcp-data/components.json +129424 -0
- package/mcp-data/icons.json +470 -0
- package/mcp-data/icons_sorted.txt +2 -0
- package/mcp-data/mapping.json +309 -0
- package/mcp-data/styles.json +331 -0
- package/mcp-data/sync-status.json +83 -0
- package/mcp-data/tokens.json +1586 -0
- package/package.json +77 -0
package/dist/metrics.js
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
// In-process usage metrics for hosted-mode KPIs. Kept in memory; persist to a
|
|
2
|
+
// JSON file (MCP_METRICS_FILE) so they survive restarts, and/or scrape /metrics
|
|
3
|
+
// into Prometheus for history.
|
|
4
|
+
const toolStats = new Map();
|
|
5
|
+
const clientStats = new Map();
|
|
6
|
+
// Keyed by lowercased text; the stored entry keeps the first-seen original.
|
|
7
|
+
const questionStats = new Map();
|
|
8
|
+
let totalCalls = 0;
|
|
9
|
+
let totalErrors = 0;
|
|
10
|
+
const QUESTION_INPUT_MAX = 300; // anything longer is a code payload, never record it
|
|
11
|
+
const QUESTION_STORED_MAX = 120;
|
|
12
|
+
const QUESTION_CAP_DEFAULT = 500;
|
|
13
|
+
const TOP_QUESTIONS_LIMIT = 50;
|
|
14
|
+
// Caps on client-controlled label cardinality.
|
|
15
|
+
const MAX_TRACKED_TOOLS = 100;
|
|
16
|
+
const MAX_TRACKED_CLIENTS = 50;
|
|
17
|
+
const LABEL_VALUE_MAX = 120;
|
|
18
|
+
const OVERFLOW_LABEL = '_other';
|
|
19
|
+
let questionCap = QUESTION_CAP_DEFAULT;
|
|
20
|
+
function clampLabel(value) {
|
|
21
|
+
return value.length > LABEL_VALUE_MAX
|
|
22
|
+
? value.slice(0, LABEL_VALUE_MAX)
|
|
23
|
+
: value;
|
|
24
|
+
}
|
|
25
|
+
// Cap distinct labels; overflow aggregates under "_other".
|
|
26
|
+
function boundedKey(map, key, cap) {
|
|
27
|
+
if (map.has(key) || map.size < cap) {
|
|
28
|
+
return key;
|
|
29
|
+
}
|
|
30
|
+
return OVERFLOW_LABEL;
|
|
31
|
+
}
|
|
32
|
+
export function recordToolCall(name, durationMs, ok, client) {
|
|
33
|
+
const now = new Date().toISOString();
|
|
34
|
+
const toolKey = boundedKey(toolStats, clampLabel(name), MAX_TRACKED_TOOLS);
|
|
35
|
+
const clientKey = boundedKey(clientStats, clampLabel(client), MAX_TRACKED_CLIENTS);
|
|
36
|
+
totalCalls += 1;
|
|
37
|
+
if (!ok) {
|
|
38
|
+
totalErrors += 1;
|
|
39
|
+
}
|
|
40
|
+
let stat = toolStats.get(toolKey);
|
|
41
|
+
if (!stat) {
|
|
42
|
+
stat = { calls: 0, errors: 0, totalMs: 0, maxMs: 0, lastUsedAt: null };
|
|
43
|
+
toolStats.set(toolKey, stat);
|
|
44
|
+
}
|
|
45
|
+
stat.calls += 1;
|
|
46
|
+
if (!ok) {
|
|
47
|
+
stat.errors += 1;
|
|
48
|
+
}
|
|
49
|
+
stat.totalMs += durationMs;
|
|
50
|
+
if (durationMs > stat.maxMs) {
|
|
51
|
+
stat.maxMs = durationMs;
|
|
52
|
+
}
|
|
53
|
+
stat.lastUsedAt = now;
|
|
54
|
+
let cli = clientStats.get(clientKey);
|
|
55
|
+
if (!cli) {
|
|
56
|
+
cli = { calls: 0, errors: 0, lastSeenAt: null };
|
|
57
|
+
clientStats.set(clientKey, cli);
|
|
58
|
+
}
|
|
59
|
+
cli.calls += 1;
|
|
60
|
+
if (!ok) {
|
|
61
|
+
cli.errors += 1;
|
|
62
|
+
}
|
|
63
|
+
cli.lastSeenAt = now;
|
|
64
|
+
}
|
|
65
|
+
// Which argument fields carry the human "question" per tool.
|
|
66
|
+
export const QUESTION_FIELDS = {
|
|
67
|
+
search_components: ['query'],
|
|
68
|
+
suggest_component: ['description'],
|
|
69
|
+
get_component: ['name'],
|
|
70
|
+
get_component_props: ['name'],
|
|
71
|
+
get_accessibility_info: ['name'],
|
|
72
|
+
generate_component_usage: ['name'],
|
|
73
|
+
audit_component: ['name'],
|
|
74
|
+
get_figma_component: ['name'],
|
|
75
|
+
get_design_token: ['name'],
|
|
76
|
+
get_theme_utility: ['name'],
|
|
77
|
+
get_jsonforms_renderer: ['name'],
|
|
78
|
+
compare_components: ['nameA', 'nameB'],
|
|
79
|
+
explain_token_diff: ['tokenA', 'tokenB'],
|
|
80
|
+
};
|
|
81
|
+
function evictColdestQuestion() {
|
|
82
|
+
let coldestKey = null;
|
|
83
|
+
let coldest = null;
|
|
84
|
+
for (const [key, q] of questionStats) {
|
|
85
|
+
if (!coldest ||
|
|
86
|
+
q.count < coldest.count ||
|
|
87
|
+
(q.count === coldest.count && q.lastAskedAt < coldest.lastAskedAt)) {
|
|
88
|
+
coldest = q;
|
|
89
|
+
coldestKey = key;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (coldestKey !== null) {
|
|
93
|
+
questionStats.delete(coldestKey);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function recordQuestion(tool, args) {
|
|
97
|
+
const fields = QUESTION_FIELDS[tool];
|
|
98
|
+
if (!fields || typeof args !== 'object' || args === null) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const record = args;
|
|
102
|
+
for (const field of fields) {
|
|
103
|
+
const value = record[field];
|
|
104
|
+
if (typeof value !== 'string') {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const trimmed = value.trim();
|
|
108
|
+
if (!trimmed || trimmed.length > QUESTION_INPUT_MAX) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const text = trimmed.slice(0, QUESTION_STORED_MAX);
|
|
112
|
+
const key = text.toLowerCase();
|
|
113
|
+
const now = new Date().toISOString();
|
|
114
|
+
const existing = questionStats.get(key);
|
|
115
|
+
if (existing) {
|
|
116
|
+
existing.count += 1;
|
|
117
|
+
existing.lastAskedAt = now;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (questionStats.size >= questionCap) {
|
|
121
|
+
evictColdestQuestion();
|
|
122
|
+
}
|
|
123
|
+
questionStats.set(key, { text, tool, count: 1, lastAskedAt: now });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export function getMetricsSnapshot() {
|
|
127
|
+
const tools = [...toolStats.entries()]
|
|
128
|
+
.map(([tool, s]) => ({
|
|
129
|
+
tool,
|
|
130
|
+
calls: s.calls,
|
|
131
|
+
errors: s.errors,
|
|
132
|
+
avgMs: s.calls > 0 ? Math.round(s.totalMs / s.calls) : 0,
|
|
133
|
+
maxMs: Math.round(s.maxMs),
|
|
134
|
+
lastUsedAt: s.lastUsedAt,
|
|
135
|
+
}))
|
|
136
|
+
.sort((a, b) => b.calls - a.calls);
|
|
137
|
+
const clients = [...clientStats.entries()]
|
|
138
|
+
.map(([client, s]) => ({
|
|
139
|
+
client,
|
|
140
|
+
calls: s.calls,
|
|
141
|
+
errors: s.errors,
|
|
142
|
+
lastSeenAt: s.lastSeenAt,
|
|
143
|
+
}))
|
|
144
|
+
.sort((a, b) => b.calls - a.calls);
|
|
145
|
+
const topQuestions = [...questionStats.values()]
|
|
146
|
+
.sort((a, b) => b.count - a.count)
|
|
147
|
+
.slice(0, TOP_QUESTIONS_LIMIT)
|
|
148
|
+
.map(q => ({ ...q }));
|
|
149
|
+
return {
|
|
150
|
+
totalCalls,
|
|
151
|
+
totalErrors,
|
|
152
|
+
distinctTools: toolStats.size,
|
|
153
|
+
tools,
|
|
154
|
+
clients,
|
|
155
|
+
topQuestions,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
// Prometheus label escaping (backslash before newline/quote).
|
|
159
|
+
function escapeLabel(value) {
|
|
160
|
+
return value
|
|
161
|
+
.replace(/\\/g, '\\\\')
|
|
162
|
+
.replace(/\n/g, '\\n')
|
|
163
|
+
.replace(/"/g, '\\"');
|
|
164
|
+
}
|
|
165
|
+
// Prometheus exposition. Questions stay JSON-only (unbounded label cardinality).
|
|
166
|
+
export function renderPrometheusMetrics() {
|
|
167
|
+
const snap = getMetricsSnapshot();
|
|
168
|
+
const lines = [
|
|
169
|
+
'# HELP mcp_tool_calls_total Total MCP tool calls handled.',
|
|
170
|
+
'# TYPE mcp_tool_calls_total counter',
|
|
171
|
+
`mcp_tool_calls_total ${snap.totalCalls}`,
|
|
172
|
+
'# HELP mcp_tool_errors_total Total MCP tool calls that returned an error.',
|
|
173
|
+
'# TYPE mcp_tool_errors_total counter',
|
|
174
|
+
`mcp_tool_errors_total ${snap.totalErrors}`,
|
|
175
|
+
'# HELP mcp_tool_call_total Per-tool call count.',
|
|
176
|
+
'# TYPE mcp_tool_call_total counter',
|
|
177
|
+
];
|
|
178
|
+
for (const t of snap.tools) {
|
|
179
|
+
const label = `{tool="${escapeLabel(t.tool)}"}`;
|
|
180
|
+
lines.push(`mcp_tool_call_total${label} ${t.calls}`);
|
|
181
|
+
lines.push(`mcp_tool_error_total${label} ${t.errors}`);
|
|
182
|
+
lines.push(`mcp_tool_latency_avg_ms${label} ${t.avgMs}`);
|
|
183
|
+
lines.push(`mcp_tool_latency_max_ms${label} ${t.maxMs}`);
|
|
184
|
+
}
|
|
185
|
+
lines.push('# HELP mcp_client_calls_total Per-IDE/MCP-client tool call count.');
|
|
186
|
+
lines.push('# TYPE mcp_client_calls_total counter');
|
|
187
|
+
for (const c of snap.clients) {
|
|
188
|
+
lines.push(`mcp_client_calls_total{client="${escapeLabel(c.client)}"} ${c.calls}`);
|
|
189
|
+
}
|
|
190
|
+
return `${lines.join('\n')}\n`;
|
|
191
|
+
}
|
|
192
|
+
export function serializeMetrics() {
|
|
193
|
+
return {
|
|
194
|
+
version: 1,
|
|
195
|
+
totalCalls,
|
|
196
|
+
totalErrors,
|
|
197
|
+
tools: [...toolStats.entries()],
|
|
198
|
+
clients: [...clientStats.entries()],
|
|
199
|
+
questions: [...questionStats.entries()],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function num(v) {
|
|
203
|
+
return typeof v === 'number' && Number.isFinite(v) ? v : 0;
|
|
204
|
+
}
|
|
205
|
+
function strOrNull(v) {
|
|
206
|
+
return typeof v === 'string' ? v : null;
|
|
207
|
+
}
|
|
208
|
+
// Restores state from parsed JSON. Defensive: bad shapes are skipped, not thrown.
|
|
209
|
+
export function loadMetrics(raw) {
|
|
210
|
+
if (!raw || typeof raw !== 'object') {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
const d = raw;
|
|
214
|
+
if (d.version !== 1) {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
toolStats.clear();
|
|
218
|
+
clientStats.clear();
|
|
219
|
+
questionStats.clear();
|
|
220
|
+
totalCalls = num(d.totalCalls);
|
|
221
|
+
totalErrors = num(d.totalErrors);
|
|
222
|
+
for (const e of Array.isArray(d.tools) ? d.tools : []) {
|
|
223
|
+
if (Array.isArray(e) && typeof e[0] === 'string' && e[1]) {
|
|
224
|
+
const v = e[1];
|
|
225
|
+
toolStats.set(e[0], {
|
|
226
|
+
calls: num(v.calls),
|
|
227
|
+
errors: num(v.errors),
|
|
228
|
+
totalMs: num(v.totalMs),
|
|
229
|
+
maxMs: num(v.maxMs),
|
|
230
|
+
lastUsedAt: strOrNull(v.lastUsedAt),
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
for (const e of Array.isArray(d.clients) ? d.clients : []) {
|
|
235
|
+
if (Array.isArray(e) && typeof e[0] === 'string' && e[1]) {
|
|
236
|
+
const v = e[1];
|
|
237
|
+
clientStats.set(e[0], {
|
|
238
|
+
calls: num(v.calls),
|
|
239
|
+
errors: num(v.errors),
|
|
240
|
+
lastSeenAt: strOrNull(v.lastSeenAt),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
for (const e of Array.isArray(d.questions) ? d.questions : []) {
|
|
245
|
+
if (Array.isArray(e) && typeof e[0] === 'string' && e[1]) {
|
|
246
|
+
const v = e[1];
|
|
247
|
+
if (typeof v.text === 'string' && typeof v.tool === 'string') {
|
|
248
|
+
questionStats.set(e[0], {
|
|
249
|
+
text: v.text,
|
|
250
|
+
tool: v.tool,
|
|
251
|
+
count: num(v.count),
|
|
252
|
+
lastAskedAt: strOrNull(v.lastAskedAt) ?? new Date().toISOString(),
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
// Test-only hooks.
|
|
260
|
+
export function __resetMetrics() {
|
|
261
|
+
toolStats.clear();
|
|
262
|
+
clientStats.clear();
|
|
263
|
+
questionStats.clear();
|
|
264
|
+
totalCalls = 0;
|
|
265
|
+
totalErrors = 0;
|
|
266
|
+
questionCap = QUESTION_CAP_DEFAULT;
|
|
267
|
+
}
|
|
268
|
+
export function __setQuestionCapForTests(cap) {
|
|
269
|
+
questionCap = cap;
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type MigrationConfidence = 'full' | 'partial' | 'manual';
|
|
2
|
+
export type MigrationMode = 'replace' | 'keep' | 'augment';
|
|
3
|
+
export interface MigrationRule {
|
|
4
|
+
id: string;
|
|
5
|
+
description: string;
|
|
6
|
+
detect: RegExp;
|
|
7
|
+
confidence: MigrationConfidence;
|
|
8
|
+
dsSelector?: string;
|
|
9
|
+
keepDirective?: boolean;
|
|
10
|
+
module: string;
|
|
11
|
+
package: string;
|
|
12
|
+
attrNotes?: string[];
|
|
13
|
+
breakingNotes?: string[];
|
|
14
|
+
snippet: string;
|
|
15
|
+
figmaPage?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface RepoMigrationPattern {
|
|
18
|
+
id: string;
|
|
19
|
+
detect: RegExp;
|
|
20
|
+
dsSelector: string;
|
|
21
|
+
confidence: MigrationConfidence;
|
|
22
|
+
recommendation: string;
|
|
23
|
+
migrationMode?: MigrationMode;
|
|
24
|
+
}
|
|
25
|
+
export declare function getRepoDetect(id: string): RegExp;
|
|
26
|
+
export declare function getMigrateRules(dsInputs: (selector: string) => string): MigrationRule[];
|
|
27
|
+
export declare function getRepoMigrationPatterns(): RepoMigrationPattern[];
|
|
28
|
+
export declare function blankComments(text: string, syntax?: 'html' | 'code'): string;
|
|
29
|
+
export declare function extractInlineTemplate(tsCode: string): string | undefined;
|