intent-mcp 0.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/LICENSE +21 -0
- package/README.md +19 -0
- package/dist/bin/mcp-server.d.ts +6 -0
- package/dist/bin/mcp-server.d.ts.map +1 -0
- package/dist/bin/mcp-server.js +11 -0
- package/dist/bin/mcp-server.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +367 -0
- package/dist/server.js.map +1 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Intent Framework Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# intent-mcp
|
|
2
|
+
|
|
3
|
+
MCP (Model Context Protocol) server for AI integration with [Intent](https://github.com/mixedmetals/intent-framework).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install intent-mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx intent-mcp
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Provides tools for AI assistants: `get_component_schema`, `validate_component_usage`, `suggest_component_props`, `get_design_tokens`, `generate_ai_prompt`.
|
|
18
|
+
|
|
19
|
+
See the main repo for full documentation.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/bin/mcp-server.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Intent MCP Server Entry Point
|
|
4
|
+
*/
|
|
5
|
+
import { startServer } from '../server.js';
|
|
6
|
+
const configPath = process.argv[2] || 'intent.config.ts';
|
|
7
|
+
startServer(configPath).catch((error) => {
|
|
8
|
+
console.error('Fatal error:', error);
|
|
9
|
+
process.exit(1);
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/bin/mcp-server.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;AAEzD,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Model Context Protocol server for AI integration with Intent.
|
|
5
|
+
* Provides tools for schema introspection, validation, and code generation.
|
|
6
|
+
*/
|
|
7
|
+
export declare function startServer(configPath?: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyHH,wBAAsB,WAAW,CAAC,UAAU,GAAE,MAA2B,iBAqDxE"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Model Context Protocol server for AI integration with Intent.
|
|
5
|
+
* Provides tools for schema introspection, validation, and code generation.
|
|
6
|
+
*/
|
|
7
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
8
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
9
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
+
import { generateAIManifest, validateUsage, } from 'intent-core';
|
|
11
|
+
import { loadConfig } from 'intentcss-cli';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Tool Definitions
|
|
14
|
+
// ============================================================================
|
|
15
|
+
const TOOLS = [
|
|
16
|
+
{
|
|
17
|
+
name: 'get_component_schema',
|
|
18
|
+
description: 'Get the schema definition for an Intent component',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: 'object',
|
|
21
|
+
properties: {
|
|
22
|
+
component: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Name of the component (e.g., Button, Stack, Surface)',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
required: ['component'],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'validate_component_usage',
|
|
32
|
+
description: 'Validate a component usage against the design system schema',
|
|
33
|
+
inputSchema: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {
|
|
36
|
+
component: {
|
|
37
|
+
type: 'string',
|
|
38
|
+
description: 'Component name',
|
|
39
|
+
},
|
|
40
|
+
props: {
|
|
41
|
+
type: 'object',
|
|
42
|
+
description: 'Props being passed to the component',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
required: ['component', 'props'],
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'suggest_component_props',
|
|
50
|
+
description: 'Suggest valid props for a component based on a description',
|
|
51
|
+
inputSchema: {
|
|
52
|
+
type: 'object',
|
|
53
|
+
properties: {
|
|
54
|
+
description: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
description: 'Description of what you want to achieve (e.g., "a prominent call-to-action button")',
|
|
57
|
+
},
|
|
58
|
+
component: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'Component name (default: Button)',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
required: ['description'],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'get_valid_prop_combinations',
|
|
68
|
+
description: 'Get all valid prop combinations for a component',
|
|
69
|
+
inputSchema: {
|
|
70
|
+
type: 'object',
|
|
71
|
+
properties: {
|
|
72
|
+
component: {
|
|
73
|
+
type: 'string',
|
|
74
|
+
description: 'Component name',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
required: ['component'],
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'get_design_tokens',
|
|
82
|
+
description: 'Get available design tokens (colors, spacing, etc.)',
|
|
83
|
+
inputSchema: {
|
|
84
|
+
type: 'object',
|
|
85
|
+
properties: {
|
|
86
|
+
category: {
|
|
87
|
+
type: 'string',
|
|
88
|
+
description: 'Token category (color, space, elevation, etc.)',
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'generate_ai_prompt',
|
|
95
|
+
description: 'Generate the full AI prompt for Intent framework',
|
|
96
|
+
inputSchema: {
|
|
97
|
+
type: 'object',
|
|
98
|
+
properties: {
|
|
99
|
+
component: {
|
|
100
|
+
type: 'string',
|
|
101
|
+
description: 'Specific component to focus on (optional)',
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Server Setup
|
|
109
|
+
// ============================================================================
|
|
110
|
+
export async function startServer(configPath = 'intent.config.ts') {
|
|
111
|
+
let config;
|
|
112
|
+
try {
|
|
113
|
+
config = await loadConfig(configPath);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error('Failed to load Intent config:', error);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
const server = new Server({
|
|
120
|
+
name: 'intent-mcp-server',
|
|
121
|
+
version: '0.1.0',
|
|
122
|
+
});
|
|
123
|
+
// List available tools
|
|
124
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
125
|
+
return { tools: TOOLS };
|
|
126
|
+
});
|
|
127
|
+
// Handle tool calls
|
|
128
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
129
|
+
const { name, arguments: args } = request.params;
|
|
130
|
+
switch (name) {
|
|
131
|
+
case 'get_component_schema':
|
|
132
|
+
return handleGetComponentSchema(config, args);
|
|
133
|
+
case 'validate_component_usage':
|
|
134
|
+
return handleValidateComponentUsage(config, args);
|
|
135
|
+
case 'suggest_component_props':
|
|
136
|
+
return handleSuggestComponentProps(config, args);
|
|
137
|
+
case 'get_valid_prop_combinations':
|
|
138
|
+
return handleGetValidCombinations(config, args);
|
|
139
|
+
case 'get_design_tokens':
|
|
140
|
+
return handleGetDesignTokens(config, args);
|
|
141
|
+
case 'generate_ai_prompt':
|
|
142
|
+
return handleGenerateAIPrompt(config, args);
|
|
143
|
+
default:
|
|
144
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
// Start server
|
|
148
|
+
const transport = new StdioServerTransport();
|
|
149
|
+
await server.connect(transport);
|
|
150
|
+
console.error('Intent MCP server running on stdio');
|
|
151
|
+
}
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// Tool Handlers
|
|
154
|
+
// ============================================================================
|
|
155
|
+
function handleGetComponentSchema(config, args) {
|
|
156
|
+
const schema = config.components[args.component];
|
|
157
|
+
if (!schema) {
|
|
158
|
+
return {
|
|
159
|
+
content: [
|
|
160
|
+
{
|
|
161
|
+
type: 'text',
|
|
162
|
+
text: `Component "${args.component}" not found. Available components: ${Object.keys(config.components).join(', ')}`,
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
isError: true,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
const formatted = {
|
|
169
|
+
name: schema.name,
|
|
170
|
+
description: schema.description,
|
|
171
|
+
properties: Object.entries(schema.properties).map(([name, def]) => ({
|
|
172
|
+
name,
|
|
173
|
+
type: def.type,
|
|
174
|
+
values: def.type === 'enum' ? def.values : undefined,
|
|
175
|
+
required: def.required || false,
|
|
176
|
+
default: def.default,
|
|
177
|
+
})),
|
|
178
|
+
constraints: schema.constraints.map(c => ({
|
|
179
|
+
when: c.when,
|
|
180
|
+
forbid: c.forbid,
|
|
181
|
+
require: c.require,
|
|
182
|
+
message: c.message,
|
|
183
|
+
})),
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
content: [
|
|
187
|
+
{
|
|
188
|
+
type: 'text',
|
|
189
|
+
text: JSON.stringify(formatted, null, 2),
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function handleValidateComponentUsage(config, args) {
|
|
195
|
+
const schema = config.components[args.component];
|
|
196
|
+
if (!schema) {
|
|
197
|
+
return {
|
|
198
|
+
content: [
|
|
199
|
+
{
|
|
200
|
+
type: 'text',
|
|
201
|
+
text: `Unknown component: ${args.component}`,
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
isError: true,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
const result = validateUsage(schema, {
|
|
208
|
+
component: args.component,
|
|
209
|
+
props: args.props,
|
|
210
|
+
});
|
|
211
|
+
if (result.valid) {
|
|
212
|
+
return {
|
|
213
|
+
content: [
|
|
214
|
+
{
|
|
215
|
+
type: 'text',
|
|
216
|
+
text: `✓ Valid usage of ${args.component} with props: ${JSON.stringify(args.props)}`,
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
const issues = result.issues.map(i => `- ${i.severity.toUpperCase()}: ${i.message}${i.suggestion ? ` (suggestion: ${i.suggestion})` : ''}`).join('\n');
|
|
222
|
+
return {
|
|
223
|
+
content: [
|
|
224
|
+
{
|
|
225
|
+
type: 'text',
|
|
226
|
+
text: `✗ Invalid usage of ${args.component}:\n${issues}`,
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
isError: true,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function handleSuggestComponentProps(config, args) {
|
|
233
|
+
const componentName = args.component || 'Button';
|
|
234
|
+
const schema = config.components[componentName];
|
|
235
|
+
if (!schema) {
|
|
236
|
+
return {
|
|
237
|
+
content: [
|
|
238
|
+
{
|
|
239
|
+
type: 'text',
|
|
240
|
+
text: `Unknown component: ${componentName}`,
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
isError: true,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
// Simple keyword-based suggestion logic
|
|
247
|
+
const desc = args.description.toLowerCase();
|
|
248
|
+
const suggestions = {};
|
|
249
|
+
// Check for importance hints
|
|
250
|
+
if (desc.includes('primary') || desc.includes('main') || desc.includes('cta')) {
|
|
251
|
+
suggestions.importance = 'primary';
|
|
252
|
+
}
|
|
253
|
+
else if (desc.includes('secondary') || desc.includes('alternative')) {
|
|
254
|
+
suggestions.importance = 'secondary';
|
|
255
|
+
}
|
|
256
|
+
else if (desc.includes('ghost') || desc.includes('subtle') || desc.includes('low')) {
|
|
257
|
+
suggestions.importance = 'ghost';
|
|
258
|
+
}
|
|
259
|
+
else if (desc.includes('danger') || desc.includes('delete') || desc.includes('remove')) {
|
|
260
|
+
suggestions.importance = 'danger';
|
|
261
|
+
}
|
|
262
|
+
// Check for size hints
|
|
263
|
+
if (desc.includes('small') || desc.includes('compact')) {
|
|
264
|
+
suggestions.size = 'sm';
|
|
265
|
+
}
|
|
266
|
+
else if (desc.includes('large') || desc.includes('big') || desc.includes('prominent')) {
|
|
267
|
+
suggestions.size = 'lg';
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
suggestions.size = 'md';
|
|
271
|
+
}
|
|
272
|
+
const formatted = {
|
|
273
|
+
component: componentName,
|
|
274
|
+
props: suggestions,
|
|
275
|
+
code: `<${componentName} ${Object.entries(suggestions).map(([k, v]) => `${k}="${v}"`).join(' ')} />`,
|
|
276
|
+
};
|
|
277
|
+
return {
|
|
278
|
+
content: [
|
|
279
|
+
{
|
|
280
|
+
type: 'text',
|
|
281
|
+
text: `Suggested props for "${args.description}":\n\n${JSON.stringify(formatted, null, 2)}`,
|
|
282
|
+
},
|
|
283
|
+
],
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
async function handleGetValidCombinations(config, args) {
|
|
287
|
+
const schema = config.components[args.component];
|
|
288
|
+
if (!schema) {
|
|
289
|
+
return {
|
|
290
|
+
content: [
|
|
291
|
+
{
|
|
292
|
+
type: 'text',
|
|
293
|
+
text: `Unknown component: ${args.component}`,
|
|
294
|
+
},
|
|
295
|
+
],
|
|
296
|
+
isError: true,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
const { generateValidCombinations } = await import('intent-core');
|
|
300
|
+
const combinations = generateValidCombinations(schema);
|
|
301
|
+
const formatted = combinations.slice(0, 10).map((combo) => `<${args.component} ${Object.entries(combo).map(([k, v]) => `${k}="${v}"`).join(' ')} />`);
|
|
302
|
+
const more = combinations.length > 10 ? `\n... and ${combinations.length - 10} more combinations` : '';
|
|
303
|
+
return {
|
|
304
|
+
content: [
|
|
305
|
+
{
|
|
306
|
+
type: 'text',
|
|
307
|
+
text: `Valid prop combinations for ${args.component}:\n\n${formatted.join('\n')}${more}`,
|
|
308
|
+
},
|
|
309
|
+
],
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
function handleGetDesignTokens(config, args) {
|
|
313
|
+
const tokens = config.tokens;
|
|
314
|
+
if (args.category) {
|
|
315
|
+
const category = tokens[args.category];
|
|
316
|
+
if (!category) {
|
|
317
|
+
return {
|
|
318
|
+
content: [
|
|
319
|
+
{
|
|
320
|
+
type: 'text',
|
|
321
|
+
text: `Unknown token category: ${args.category}. Available: ${Object.keys(tokens).join(', ')}`,
|
|
322
|
+
},
|
|
323
|
+
],
|
|
324
|
+
isError: true,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
return {
|
|
328
|
+
content: [
|
|
329
|
+
{
|
|
330
|
+
type: 'text',
|
|
331
|
+
text: `${args.category} tokens:\n${Object.entries(category).map(([k, v]) => `- ${k}: ${v}`).join('\n')}`,
|
|
332
|
+
},
|
|
333
|
+
],
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
// Return all tokens
|
|
337
|
+
const formatted = {};
|
|
338
|
+
for (const [category, values] of Object.entries(tokens)) {
|
|
339
|
+
if (values) {
|
|
340
|
+
formatted[category] = Object.keys(values);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
content: [
|
|
345
|
+
{
|
|
346
|
+
type: 'text',
|
|
347
|
+
text: `Available design tokens:\n\n${JSON.stringify(formatted, null, 2)}`,
|
|
348
|
+
},
|
|
349
|
+
],
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
async function handleGenerateAIPrompt(config, args) {
|
|
353
|
+
const manifest = generateAIManifest(config);
|
|
354
|
+
const { generateAIPrompt } = await import('intent-core');
|
|
355
|
+
const prompt = generateAIPrompt(manifest, {
|
|
356
|
+
component: args.component,
|
|
357
|
+
});
|
|
358
|
+
return {
|
|
359
|
+
content: [
|
|
360
|
+
{
|
|
361
|
+
type: 'text',
|
|
362
|
+
text: prompt,
|
|
363
|
+
},
|
|
364
|
+
],
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,kBAAkB,EAClB,aAAa,GAId,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,mDAAmD;QAChE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;iBACpE;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gBAAgB;iBAC9B;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qCAAqC;iBACnD;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;SACjC;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,4DAA4D;QACzE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qFAAqF;iBACnG;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;iBAChD;aACF;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gBAAgB;iBAC9B;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gDAAgD;iBAC9D;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;aACF;SACF;KACF;CACF,CAAC;AAEF,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,aAAqB,kBAAkB;IACvE,IAAI,MAA0B,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,sBAAsB;gBACzB,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAA6B,CAAC,CAAC;YAEzE,KAAK,0BAA0B;gBAC7B,OAAO,4BAA4B,CAAC,MAAM,EAAE,IAA6D,CAAC,CAAC;YAE7G,KAAK,yBAAyB;gBAC5B,OAAO,2BAA2B,CAAC,MAAM,EAAE,IAAmD,CAAC,CAAC;YAElG,KAAK,6BAA6B;gBAChC,OAAO,0BAA0B,CAAC,MAAM,EAAE,IAA6B,CAAC,CAAC;YAE3E,KAAK,mBAAmB;gBACtB,OAAO,qBAAqB,CAAC,MAAM,EAAE,IAA6B,CAAC,CAAC;YAEtE,KAAK,oBAAoB;gBACvB,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAA8B,CAAC,CAAC;YAExE;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACtD,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,SAAS,wBAAwB,CAC/B,MAA0B,EAC1B,IAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,cAAc,IAAI,CAAC,SAAS,sCAAsC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBACpH;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,IAAI;YACJ,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACpD,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;YAC/B,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;QACH,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;KACJ,CAAC;IAEF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aACzC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,MAA0B,EAC1B,IAA2D;IAE3D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,sBAAsB,IAAI,CAAC,SAAS,EAAE;iBAC7C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;iBACrF;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACnC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,sBAAsB,IAAI,CAAC,SAAS,MAAM,MAAM,EAAE;aACzD;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,MAA0B,EAC1B,IAAiD;IAEjD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,sBAAsB,aAAa,EAAE;iBAC5C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,6BAA6B;IAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9E,WAAW,CAAC,UAAU,GAAG,SAAS,CAAC;IACrC,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACtE,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrF,WAAW,CAAC,UAAU,GAAG,OAAO,CAAC;IACnC,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzF,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC;IACpC,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACxF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;KACrG,CAAC;IAEF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,wBAAwB,IAAI,CAAC,WAAW,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aAC5F;SACF;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,MAA0B,EAC1B,IAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,sBAAsB,IAAI,CAAC,SAAS,EAAE;iBAC7C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAA6B,EAAE,EAAE,CAChF,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAC1F,CAAC;IAEF,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,YAAY,CAAC,MAAM,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvG,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,+BAA+B,IAAI,CAAC,SAAS,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE;aACzF;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAA0B,EAC1B,IAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAA+B,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,IAAI,CAAC,QAAQ,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC/F;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,aAAa,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBACzG;aACF;SACF,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,MAAM,SAAS,GAA6B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,+BAA+B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aAC1E;SACF;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAA0B,EAC1B,IAA4B;IAE5B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE;QACxC,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;aACb;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "intent-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for AI integration with Intent styling framework",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/mixedmetals/intent-framework",
|
|
10
|
+
"directory": "packages/mcp"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"intent",
|
|
14
|
+
"mcp",
|
|
15
|
+
"ai",
|
|
16
|
+
"model-context-protocol",
|
|
17
|
+
"design-system"
|
|
18
|
+
],
|
|
19
|
+
"bin": {
|
|
20
|
+
"intent-mcp": "./dist/bin/mcp-server.js"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md",
|
|
25
|
+
"LICENSE"
|
|
26
|
+
],
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"import": "./dist/index.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsc",
|
|
37
|
+
"dev": "tsc --watch",
|
|
38
|
+
"test": "vitest run --passWithNoTests",
|
|
39
|
+
"clean": "rm -rf dist"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"intent-core": "workspace:^",
|
|
43
|
+
"intentcss-cli": "workspace:^",
|
|
44
|
+
"@modelcontextprotocol/sdk": "^1.26.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^20.10.0",
|
|
48
|
+
"typescript": "^5.3.0"
|
|
49
|
+
},
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=18.0.0"
|
|
52
|
+
}
|
|
53
|
+
}
|