@vielzeug/codex 1.0.4 → 2.0.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 +46 -107
- package/data/catalog.json +1679 -0
- package/data/llms-full.txt +18826 -31876
- package/data/llms.txt +32 -114
- package/data/manifest.json +8 -0
- package/data/packages/arsenal.json +210 -0
- package/data/packages/assay.json +40 -0
- package/data/packages/clockwork.json +67 -0
- package/data/packages/codex.json +43 -0
- package/data/packages/coins.json +103 -0
- package/data/packages/conduit.json +60 -0
- package/data/packages/courier.json +58 -0
- package/data/packages/dnd.json +75 -0
- package/data/packages/familiar.json +30 -0
- package/data/packages/flux.json +93 -0
- package/data/packages/forge.json +84 -0
- package/data/packages/herald.json +122 -0
- package/data/packages/keymap.json +65 -0
- package/data/packages/ledger.json +54 -0
- package/data/packages/lingua.json +66 -0
- package/data/packages/orbit.json +112 -0
- package/data/packages/ore.json +73 -0
- package/data/packages/prism.json +70 -0
- package/data/packages/pulse.json +58 -0
- package/data/packages/refine.json +12 -0
- package/data/packages/ripple.json +79 -0
- package/data/packages/rune.json +81 -0
- package/data/packages/sandbox.json +39 -0
- package/data/packages/scout.json +60 -0
- package/data/packages/scroll.json +113 -0
- package/data/packages/sourcerer.json +74 -0
- package/data/packages/spell.json +134 -0
- package/data/packages/tempo.json +113 -0
- package/data/packages/vault.json +90 -0
- package/data/packages/ward.json +125 -0
- package/data/packages/wayfinder.json +113 -0
- package/data/refine.json +11752 -0
- package/data/search.json +1437 -0
- package/dist/catalog.js +149 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.js +33 -59
- package/dist/cli.js.map +1 -1
- package/dist/errors.js +0 -14
- package/dist/errors.js.map +1 -1
- package/dist/http.js +54 -96
- package/dist/http.js.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/server.js +4 -9
- package/dist/server.js.map +1 -1
- package/dist/snapshot.js +233 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/tools/index.js +21 -42
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/packages.js +67 -166
- package/dist/tools/packages.js.map +1 -1
- package/dist/tools/refine.js +99 -305
- package/dist/tools/refine.js.map +1 -1
- package/dist/tools/schema.js +8 -8
- package/dist/tools/schema.js.map +1 -1
- package/dist/tools/shared.js +1 -26
- package/dist/tools/shared.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/mcp-setup.json +10 -0
- package/package.json +7 -7
- package/data/.cache.json +0 -34
- package/data/vielzeug-data.json +0 -16118
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/tools/packages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/tools/packages.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/refine.js
CHANGED
|
@@ -1,329 +1,123 @@
|
|
|
1
|
-
import { ToolError } from '../errors.js';
|
|
2
1
|
import { parseArgs } from './schema.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
// tool list itself signals which tools are generic (packages.ts) vs. bound to one
|
|
6
|
-
// package's structured component metadata (this file). Backed by the real Custom
|
|
7
|
-
// Elements Manifest generated from refine's build output — never hand-duplicated data,
|
|
8
|
-
// so it can't drift the way the old ore-directives/spell-validators/sandbox tools did.
|
|
9
|
-
const REFINE_UNAVAILABLE = 'Refine component metadata is unavailable in this snapshot. If using the monorepo, build /refine first then run prepare:data. Published releases include this data automatically.';
|
|
10
|
-
/** Every refine tool needs at least one bundled component; throws UNAVAILABLE otherwise. */
|
|
11
|
-
function requireAnyComponent(context) {
|
|
12
|
-
if (context.refineComponents.length === 0)
|
|
13
|
-
throw new ToolError('UNAVAILABLE', REFINE_UNAVAILABLE);
|
|
14
|
-
return context.refineComponents;
|
|
15
|
-
}
|
|
16
|
-
/** Resolves one component by tag name, or throws UNAVAILABLE/NOT_FOUND. */
|
|
17
|
-
function requireComponent(context, tagName) {
|
|
18
|
-
const components = requireAnyComponent(context);
|
|
19
|
-
const decl = components.find((d) => d.tagName === tagName);
|
|
20
|
-
if (!decl) {
|
|
21
|
-
throw new ToolError('NOT_FOUND', `Component "${tagName}" not found. Available tags: ${context.refineComponentTags.join(', ')}`);
|
|
22
|
-
}
|
|
23
|
-
return decl;
|
|
24
|
-
}
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
// refine-list-components
|
|
27
|
-
// ---------------------------------------------------------------------------
|
|
28
|
-
const listComponentsSchema = { properties: {}, type: 'object' };
|
|
29
|
-
export const listComponentsTool = {
|
|
30
|
-
description: 'List all @vielzeug/refine web component tags from bundled Custom Elements Manifest (CEM) metadata. Returns a JSON array with tagName, description, and attrs (name, type, default). Use this to discover available components before calling refine-get-component for full details. Returns isError if refine was not built before data generation.',
|
|
31
|
-
inputSchema: listComponentsSchema,
|
|
32
|
-
name: 'refine-list-components',
|
|
33
|
-
run(_args, context) {
|
|
34
|
-
const components = requireAnyComponent(context);
|
|
35
|
-
const tags = components
|
|
36
|
-
.filter((d) => d.tagName)
|
|
37
|
-
.map((d) => ({
|
|
38
|
-
attrs: (d.attributes ?? []).map((a) => ({
|
|
39
|
-
name: a.name,
|
|
40
|
-
type: a.type?.text ?? 'string',
|
|
41
|
-
...(a.default !== undefined && { default: a.default }),
|
|
42
|
-
})),
|
|
43
|
-
description: d.description ?? '',
|
|
44
|
-
tagName: d.tagName,
|
|
45
|
-
}));
|
|
46
|
-
return text(JSON.stringify(tags, null, 2));
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
// ---------------------------------------------------------------------------
|
|
50
|
-
// refine-get-component
|
|
51
|
-
// ---------------------------------------------------------------------------
|
|
52
|
-
const getComponentSchema = {
|
|
53
|
-
properties: {
|
|
54
|
-
tagName: {
|
|
55
|
-
description: 'HTML custom element tag, e.g. "ore-button"',
|
|
56
|
-
maxLength: 100,
|
|
57
|
-
minLength: 1,
|
|
58
|
-
type: 'string',
|
|
59
|
-
},
|
|
60
|
-
},
|
|
2
|
+
const tag = {
|
|
3
|
+
properties: { tagName: { description: 'Custom element tag', maxLength: 100, minLength: 1, type: 'string' } },
|
|
61
4
|
required: ['tagName'],
|
|
62
5
|
type: 'object',
|
|
63
6
|
};
|
|
64
|
-
|
|
65
|
-
description: 'Get the full Custom Elements Manifest (CEM) declaration for a single @vielzeug/refine component by its HTML tag name (e.g. "ore-button"). Returns a JSON object with attributes, events, slots, CSS parts, CSS properties, and member methods. Call refine-list-components first to get valid tag names.',
|
|
66
|
-
inputSchema: getComponentSchema,
|
|
67
|
-
name: 'refine-get-component',
|
|
68
|
-
run(args, context) {
|
|
69
|
-
const { tagName } = parseArgs(getComponentSchema, args);
|
|
70
|
-
const declaration = requireComponent(context, tagName);
|
|
71
|
-
return text(JSON.stringify(declaration, null, 2));
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
// ---------------------------------------------------------------------------
|
|
75
|
-
// refine-generate-template helpers
|
|
76
|
-
// ---------------------------------------------------------------------------
|
|
77
|
-
function attributeSnippet(attr) {
|
|
78
|
-
const typeText = attr.type?.text ?? '';
|
|
79
|
-
if (typeText === 'boolean')
|
|
80
|
-
return attr.name;
|
|
81
|
-
// Literal union e.g. 'primary' | 'secondary' — use the first literal
|
|
82
|
-
const firstLiteral = /^['"](\S+?)['"]/.exec(typeText);
|
|
83
|
-
if (firstLiteral)
|
|
84
|
-
return `${attr.name}="${firstLiteral[1]}"`;
|
|
85
|
-
if (attr.default !== undefined && attr.default !== 'undefined' && attr.default !== '')
|
|
86
|
-
return `${attr.name}="${attr.default}"`;
|
|
87
|
-
return `${attr.name}=""`;
|
|
88
|
-
}
|
|
89
|
-
function buildTemplate(decl, scenario) {
|
|
90
|
-
const tag = decl.tagName ?? '';
|
|
91
|
-
const attrs = decl.attributes ?? [];
|
|
92
|
-
const slots = decl.slots ?? [];
|
|
93
|
-
const events = decl.events ?? [];
|
|
94
|
-
const primary = attrs.filter((a) => a.default === undefined);
|
|
95
|
-
const optional = attrs.filter((a) => a.default !== undefined);
|
|
96
|
-
let attrStr = '';
|
|
97
|
-
for (const a of primary)
|
|
98
|
-
attrStr += `\n ${attributeSnippet(a)}`;
|
|
99
|
-
const namedSlots = slots.filter((s) => s.name && s.name !== '');
|
|
100
|
-
const hasDefaultSlot = slots.length === 0 || slots.some((s) => !s.name || s.name === '');
|
|
101
|
-
let inner = '';
|
|
102
|
-
for (const s of namedSlots)
|
|
103
|
-
inner += `\n <span slot="${s.name}">${s.description ?? s.name}</span>`;
|
|
104
|
-
if (hasDefaultSlot)
|
|
105
|
-
inner += '\n Content goes here';
|
|
106
|
-
let comments = '';
|
|
107
|
-
if (optional.length > 0) {
|
|
108
|
-
comments += '\n <!-- Optional attributes:';
|
|
109
|
-
for (const a of optional)
|
|
110
|
-
comments += `\n ${attributeSnippet(a)} (default: ${a.default ?? 'unset'})`;
|
|
111
|
-
comments += '\n -->';
|
|
112
|
-
}
|
|
113
|
-
if (events.length > 0) {
|
|
114
|
-
comments += `\n <!-- Events: ${events.map((e) => e.name).join(', ')} -->`;
|
|
115
|
-
}
|
|
116
|
-
const header = scenario ? `<!-- ${scenario} -->\n` : '';
|
|
117
|
-
return `${header}<${tag}${attrStr}>${comments}${inner ? inner + '\n' : ''}</${tag}>`;
|
|
118
|
-
}
|
|
119
|
-
// ---------------------------------------------------------------------------
|
|
120
|
-
// refine-generate-template
|
|
121
|
-
// ---------------------------------------------------------------------------
|
|
122
|
-
const generateTemplateSchema = {
|
|
7
|
+
const template = {
|
|
123
8
|
properties: {
|
|
124
|
-
scenario: {
|
|
125
|
-
|
|
126
|
-
description: 'Optional usage context to include as a leading comment, e.g. "primary call-to-action button"',
|
|
127
|
-
maxLength: 200,
|
|
128
|
-
type: 'string',
|
|
129
|
-
},
|
|
130
|
-
tagName: {
|
|
131
|
-
description: 'HTML custom element tag, e.g. "ore-button"',
|
|
132
|
-
maxLength: 100,
|
|
133
|
-
minLength: 1,
|
|
134
|
-
type: 'string',
|
|
135
|
-
},
|
|
9
|
+
scenario: { default: '', description: 'Optional scenario label', maxLength: 200, type: 'string' },
|
|
10
|
+
tagName: tag.properties.tagName,
|
|
136
11
|
},
|
|
137
12
|
required: ['tagName'],
|
|
138
13
|
type: 'object',
|
|
139
14
|
};
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
name: 'refine-generate-template',
|
|
144
|
-
run(args, context) {
|
|
145
|
-
const { scenario, tagName } = parseArgs(generateTemplateSchema, args);
|
|
146
|
-
const decl = requireComponent(context, tagName);
|
|
147
|
-
return text(buildTemplate(decl, scenario || undefined));
|
|
148
|
-
},
|
|
15
|
+
const tokenFilter = {
|
|
16
|
+
properties: { filter: { default: '', description: 'Optional token prefix', maxLength: 100, type: 'string' } },
|
|
17
|
+
type: 'object',
|
|
149
18
|
};
|
|
150
|
-
|
|
151
|
-
// refine-get-tokens
|
|
152
|
-
// ---------------------------------------------------------------------------
|
|
153
|
-
const getTokensSchema = {
|
|
19
|
+
const usage = {
|
|
154
20
|
properties: {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
description: 'Optional prefix to filter token names, e.g. "--refine-color". Case-insensitive.',
|
|
158
|
-
maxLength: 100,
|
|
159
|
-
type: 'string',
|
|
160
|
-
},
|
|
21
|
+
html: { description: 'Component HTML fragment', maxLength: 5000, minLength: 1, type: 'string' },
|
|
22
|
+
tagName: tag.properties.tagName,
|
|
161
23
|
},
|
|
24
|
+
required: ['html', 'tagName'],
|
|
162
25
|
type: 'object',
|
|
163
26
|
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const components = requireAnyComponent(context);
|
|
171
|
-
const rawFilter = filter.toLowerCase();
|
|
172
|
-
// Components are iterated in stable bundled order (the order refine's CEM manifest declares
|
|
173
|
-
// them in), so first-seen-wins below is deterministic run-to-run, not arbitrary. Shared design
|
|
174
|
-
// tokens (e.g. "--refine-color-primary") are typically declared identically on every component
|
|
175
|
-
// that uses them, so keeping the first occurrence and dropping later duplicates is harmless in
|
|
176
|
-
// the common case. If two components ever document the *same* token name with genuinely
|
|
177
|
-
// different descriptions/defaults, only the first-encountered one is returned here — that's an
|
|
178
|
-
// intentional simplification (one row per token name, not per component), not a bug.
|
|
179
|
-
const seen = new Set();
|
|
180
|
-
const tokens = [];
|
|
181
|
-
for (const decl of components) {
|
|
182
|
-
const componentId = decl.tagName ?? decl.name ?? 'unknown';
|
|
183
|
-
for (const prop of decl.cssProperties ?? []) {
|
|
184
|
-
if (!prop.name || seen.has(prop.name))
|
|
185
|
-
continue;
|
|
186
|
-
if (rawFilter && !prop.name.toLowerCase().startsWith(rawFilter))
|
|
187
|
-
continue;
|
|
188
|
-
seen.add(prop.name);
|
|
189
|
-
tokens.push({
|
|
190
|
-
component: componentId,
|
|
191
|
-
...(prop.default !== undefined && { default: prop.default }),
|
|
192
|
-
...(prop.description && { description: prop.description }),
|
|
193
|
-
name: prop.name,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
tokens.sort((a, b) => a.name.localeCompare(b.name));
|
|
198
|
-
return text(JSON.stringify(tokens, null, 2));
|
|
199
|
-
},
|
|
200
|
-
};
|
|
201
|
-
// ---------------------------------------------------------------------------
|
|
202
|
-
// refine-validate-usage helpers
|
|
203
|
-
//
|
|
204
|
-
// Regex-based, deliberately — this validates a single AI-generated custom-element usage
|
|
205
|
-
// snippet (one tag + attributes + slots), not arbitrary HTML documents. A real HTML parser
|
|
206
|
-
// would be more correct for pathological input (attribute values containing raw `>`) but
|
|
207
|
-
// adds a runtime dependency for a narrow, already-adequate check; not worth it here.
|
|
208
|
-
// ---------------------------------------------------------------------------
|
|
209
|
-
const SAFE_HTML_ATTRS = new Set([
|
|
210
|
-
'class',
|
|
211
|
-
'contenteditable',
|
|
212
|
-
'dir',
|
|
213
|
-
'draggable',
|
|
214
|
-
'exportparts',
|
|
215
|
-
'hidden',
|
|
216
|
-
'id',
|
|
217
|
-
'lang',
|
|
218
|
-
'part',
|
|
219
|
-
'slot',
|
|
220
|
-
'style',
|
|
221
|
-
'tabindex',
|
|
222
|
-
'title',
|
|
223
|
-
]);
|
|
224
|
-
const SAFE_ATTR_PREFIXES = ['aria-', 'data-', 'on'];
|
|
225
|
-
/** Escapes regex metacharacters so a string can be safely interpolated into a `new RegExp(...)` pattern. */
|
|
226
|
-
function escapeRegExp(s) {
|
|
227
|
-
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
27
|
+
function attribute(attr) {
|
|
28
|
+
if (attr.type?.text === 'boolean')
|
|
29
|
+
return attr.name;
|
|
30
|
+
if (attr.default !== undefined)
|
|
31
|
+
return `${attr.name}="${attr.default}"`;
|
|
32
|
+
return `${attr.name}=""`;
|
|
228
33
|
}
|
|
229
|
-
function
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
if (!match)
|
|
238
|
-
return null;
|
|
239
|
-
const attrStr = match[1] ?? '';
|
|
240
|
-
const result = new Map();
|
|
241
|
-
const attrRe = /([\w-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s/>]*)))?/g;
|
|
242
|
-
let m;
|
|
243
|
-
while ((m = attrRe.exec(attrStr)) !== null) {
|
|
244
|
-
const [, name, dq, sq, bare] = m;
|
|
245
|
-
if (name)
|
|
246
|
-
result.set(name.toLowerCase(), dq ?? sq ?? bare ?? '');
|
|
247
|
-
}
|
|
248
|
-
return result;
|
|
34
|
+
function htmlTemplate(component, scenario) {
|
|
35
|
+
const name = component.tagName ?? '';
|
|
36
|
+
const attributes = (component.attributes ?? []).filter((item) => item.default === undefined).map(attribute);
|
|
37
|
+
const slots = (component.slots ?? [])
|
|
38
|
+
.filter((slot) => slot.name)
|
|
39
|
+
.map((slot) => ` <span slot="${slot.name}">${slot.description ?? slot.name}</span>`);
|
|
40
|
+
const body = slots.length > 0 ? `\n${slots.join('\n')}\n` : '\n Content\n';
|
|
41
|
+
return `${scenario ? `<!-- ${scenario} -->\n` : ''}<${name}${attributes.length ? `\n ${attributes.join('\n ')}` : ''}>${body}</${name}>`;
|
|
249
42
|
}
|
|
250
|
-
function
|
|
251
|
-
const
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
43
|
+
function usageIssues(component, html) {
|
|
44
|
+
const name = component.tagName ?? '';
|
|
45
|
+
const opening = new RegExp(`<${name}\\s*([^>]*)>`, 'i').exec(html);
|
|
46
|
+
if (!opening)
|
|
47
|
+
return [{ message: `Could not find opening <${name}> tag.`, type: 'error' }];
|
|
48
|
+
const known = new Set((component.attributes ?? []).map((attribute) => attribute.name.toLowerCase()));
|
|
49
|
+
const safe = new Set(['class', 'id', 'slot', 'style', 'title', 'hidden', 'part']);
|
|
50
|
+
const issues = [];
|
|
51
|
+
for (const match of opening[1].matchAll(/([\w-]+)(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s/>]+))?/g)) {
|
|
52
|
+
const attribute = match[1].toLowerCase();
|
|
53
|
+
if (!safe.has(attribute) &&
|
|
54
|
+
!attribute.startsWith('aria-') &&
|
|
55
|
+
!attribute.startsWith('data-') &&
|
|
56
|
+
!known.has(attribute)) {
|
|
57
|
+
issues.push({ message: `Unknown attribute "${attribute}" on <${name}>.`, type: 'error' });
|
|
58
|
+
}
|
|
257
59
|
}
|
|
258
|
-
return
|
|
60
|
+
return issues;
|
|
259
61
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
},
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
62
|
+
export const refineTools = [
|
|
63
|
+
{
|
|
64
|
+
description: 'List bundled Refine web components.',
|
|
65
|
+
execute: (_args, catalog) => catalog
|
|
66
|
+
.listComponents()
|
|
67
|
+
.filter((component) => component.tagName)
|
|
68
|
+
.map((component) => ({
|
|
69
|
+
attributes: component.attributes ?? [],
|
|
70
|
+
description: component.description ?? '',
|
|
71
|
+
tagName: component.tagName,
|
|
72
|
+
})),
|
|
73
|
+
inputSchema: { properties: {}, type: 'object' },
|
|
74
|
+
name: 'refine-list-components',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
description: 'Read one Refine component declaration.',
|
|
78
|
+
execute: (args, catalog) => catalog.getComponent(parseArgs(tag, args).tagName),
|
|
79
|
+
inputSchema: tag,
|
|
80
|
+
name: 'refine-get-component',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
description: 'Generate a minimal Refine component HTML template.',
|
|
84
|
+
execute: (args, catalog) => {
|
|
85
|
+
const input = parseArgs(template, args);
|
|
86
|
+
return htmlTemplate(catalog.getComponent(input.tagName), input.scenario);
|
|
276
87
|
},
|
|
88
|
+
inputSchema: template,
|
|
89
|
+
name: 'refine-generate-template',
|
|
277
90
|
},
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
for (const attr of foundAttrs.keys()) {
|
|
297
|
-
if (SAFE_HTML_ATTRS.has(attr))
|
|
298
|
-
continue;
|
|
299
|
-
if (SAFE_ATTR_PREFIXES.some((p) => attr.startsWith(p)))
|
|
300
|
-
continue;
|
|
301
|
-
if (!knownAttrs.has(attr)) {
|
|
302
|
-
issues.push({
|
|
303
|
-
message: `Unknown attribute "${attr}" on <${tagName}>. Known: ${[...knownAttrs].join(', ') || 'none'}.`,
|
|
304
|
-
type: 'error',
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
if (knownSlots.size > 0) {
|
|
310
|
-
for (const slot of parseSlotNames(html)) {
|
|
311
|
-
if (!knownSlots.has(slot)) {
|
|
312
|
-
issues.push({
|
|
313
|
-
message: `Unknown slot "${slot}" on <${tagName}>. Known slots: ${[...knownSlots].join(', ')}.`,
|
|
314
|
-
type: 'error',
|
|
315
|
-
});
|
|
91
|
+
{
|
|
92
|
+
description: 'List bundled Refine CSS custom properties.',
|
|
93
|
+
execute: (args, catalog) => {
|
|
94
|
+
const filter = parseArgs(tokenFilter, args).filter.toLowerCase();
|
|
95
|
+
const tokens = new Map();
|
|
96
|
+
for (const component of catalog.listComponents())
|
|
97
|
+
for (const property of component.cssProperties ?? []) {
|
|
98
|
+
if (property.name &&
|
|
99
|
+
!tokens.has(property.name) &&
|
|
100
|
+
(!filter || property.name.toLowerCase().startsWith(filter)))
|
|
101
|
+
tokens.set(property.name, {
|
|
102
|
+
component: component.tagName ?? component.name ?? 'unknown',
|
|
103
|
+
...(property.default !== undefined && { default: property.default }),
|
|
104
|
+
...(property.description && { description: property.description }),
|
|
105
|
+
name: property.name,
|
|
106
|
+
});
|
|
316
107
|
}
|
|
317
|
-
|
|
318
|
-
}
|
|
319
|
-
|
|
108
|
+
return [...tokens.values()].sort((left, right) => left.name.localeCompare(right.name));
|
|
109
|
+
},
|
|
110
|
+
inputSchema: tokenFilter,
|
|
111
|
+
name: 'refine-get-tokens',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
description: 'Validate unknown attributes in one Refine component HTML fragment.',
|
|
115
|
+
execute: (args, catalog) => {
|
|
116
|
+
const input = parseArgs(usage, args);
|
|
117
|
+
return usageIssues(catalog.getComponent(input.tagName), input.html);
|
|
118
|
+
},
|
|
119
|
+
inputSchema: usage,
|
|
120
|
+
name: 'refine-validate-usage',
|
|
320
121
|
},
|
|
321
|
-
};
|
|
322
|
-
export const refineTools = [
|
|
323
|
-
listComponentsTool,
|
|
324
|
-
getComponentTool,
|
|
325
|
-
generateTemplateTool,
|
|
326
|
-
getTokensTool,
|
|
327
|
-
validateUsageTool,
|
|
328
122
|
];
|
|
329
123
|
//# sourceMappingURL=refine.js.map
|
package/dist/tools/refine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refine.js","sourceRoot":"","sources":["../../src/tools/refine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"refine.js","sourceRoot":"","sources":["../../src/tools/refine.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/schema.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CatalogError } from '../catalog.js';
|
|
2
2
|
/** A property shared by every tool that takes a package slug — one definition, reused everywhere. */
|
|
3
3
|
export const PACKAGE_SLUG_PROPERTY = {
|
|
4
4
|
description: 'Package folder name, e.g. "ripple"',
|
|
@@ -6,7 +6,7 @@ export const PACKAGE_SLUG_PROPERTY = {
|
|
|
6
6
|
minLength: 1,
|
|
7
7
|
type: 'string',
|
|
8
8
|
};
|
|
9
|
-
/** Validates + trims raw MCP tool arguments against a `ToolSchema`. Throws `
|
|
9
|
+
/** Validates + trims raw MCP tool arguments against a `ToolSchema`. Throws `CatalogError('INVALID_ARG', ...)` on the first violation. */
|
|
10
10
|
export function parseArgs(schema, raw) {
|
|
11
11
|
const result = {};
|
|
12
12
|
for (const [key, prop] of Object.entries(schema.properties)) {
|
|
@@ -14,22 +14,22 @@ export function parseArgs(schema, raw) {
|
|
|
14
14
|
const value = raw[key];
|
|
15
15
|
if (value === undefined || value === '') {
|
|
16
16
|
if (required)
|
|
17
|
-
throw new
|
|
17
|
+
throw new CatalogError('INVALID_ARG', `${key}: required non-empty string.`);
|
|
18
18
|
if (prop.default !== undefined)
|
|
19
19
|
result[key] = prop.default;
|
|
20
20
|
continue;
|
|
21
21
|
}
|
|
22
22
|
if (typeof value !== 'string')
|
|
23
|
-
throw new
|
|
23
|
+
throw new CatalogError('INVALID_ARG', `${key}: must be a string.`);
|
|
24
24
|
const trimmed = value.trim();
|
|
25
25
|
if (required && trimmed.length === 0)
|
|
26
|
-
throw new
|
|
26
|
+
throw new CatalogError('INVALID_ARG', `${key}: required non-empty string.`);
|
|
27
27
|
if (prop.minLength !== undefined && trimmed.length < prop.minLength)
|
|
28
|
-
throw new
|
|
28
|
+
throw new CatalogError('INVALID_ARG', `${key}: must be at least ${prop.minLength} characters.`);
|
|
29
29
|
if (prop.maxLength !== undefined && trimmed.length > prop.maxLength)
|
|
30
|
-
throw new
|
|
30
|
+
throw new CatalogError('INVALID_ARG', `${key}: exceeds ${prop.maxLength} character limit. Shorten the value.`);
|
|
31
31
|
if (prop.enum && !prop.enum.includes(trimmed))
|
|
32
|
-
throw new
|
|
32
|
+
throw new CatalogError('INVALID_ARG', `${key}: must be one of ${prop.enum.join(', ')}.`);
|
|
33
33
|
result[key] = trimmed;
|
|
34
34
|
}
|
|
35
35
|
return result;
|
package/dist/tools/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA6B7C,qGAAqG;AACrG,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,WAAW,EAAE,oCAAoC;IACjD,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,CAAC;IACZ,IAAI,EAAE,QAAQ;CACf,CAAC;AAWF,yIAAyI;AACzI,MAAM,UAAU,SAAS,CAAuB,MAAS,EAAE,GAA4B;IACrF,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;QACzD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,IAAI,QAAQ;gBAAE,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,GAAG,GAAG,8BAA8B,CAAC,CAAC;YAE1F,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAE3D,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,GAAG,GAAG,qBAAqB,CAAC,CAAC;QAElG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,GAAG,GAAG,8BAA8B,CAAC,CAAC;QAElH,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS;YACjE,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,GAAG,GAAG,sBAAsB,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC;QAElG,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS;YACjE,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,GAAG,GAAG,aAAa,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC;QAEjH,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3C,MAAM,IAAI,YAAY,CAAC,aAAa,EAAE,GAAG,GAAG,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE3F,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,OAAO,MAAsB,CAAC;AAChC,CAAC"}
|
package/dist/tools/shared.js
CHANGED
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { normalisePackage } from '../search.js';
|
|
3
|
-
// ---------------------------------------------------------------------------
|
|
4
|
-
// Result helpers
|
|
5
|
-
// ---------------------------------------------------------------------------
|
|
6
|
-
export function text(value) {
|
|
7
|
-
return { content: [{ text: value, type: 'text' }] };
|
|
8
|
-
}
|
|
9
|
-
export function buildToolContext(data) {
|
|
10
|
-
return {
|
|
11
|
-
bySlug: new Map(data.packages.map((pkg) => [pkg.slug, pkg])),
|
|
12
|
-
normalisedPackages: data.packages.map(normalisePackage),
|
|
13
|
-
refineComponents: data.refineComponents,
|
|
14
|
-
refineComponentTags: data.refineComponents.filter((d) => d.tagName).map((d) => d.tagName),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export function knownSlugs(context) {
|
|
18
|
-
return [...context.bySlug.keys()].join(', ');
|
|
19
|
-
}
|
|
20
|
-
/** Looks up a package by slug or throws `ToolError('NOT_FOUND', ...)` — the one place every tool resolves a slug. */
|
|
21
|
-
export function requirePackage(context, slug) {
|
|
22
|
-
const pkg = context.bySlug.get(slug);
|
|
23
|
-
if (!pkg)
|
|
24
|
-
throw new ToolError('NOT_FOUND', `Package "${slug}" not found. Available slugs: ${knownSlugs(context)}`);
|
|
25
|
-
return pkg;
|
|
26
|
-
}
|
|
1
|
+
export {};
|
|
27
2
|
//# sourceMappingURL=shared.js.map
|
package/dist/tools/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":""}
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export const DOC_PAGES = ['index', 'api', 'usage', 'examples'];
|
|
2
|
-
|
|
3
|
-
export const SCHEMA_VERSION = 4;
|
|
2
|
+
export const SNAPSHOT_SCHEMA_VERSION = 1;
|
|
4
3
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAGxE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAGxE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAU,CAAC"}
|