@uidbai/mcp-server 0.2.0 → 0.3.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.
Files changed (63) hide show
  1. package/README.md +164 -62
  2. package/dist/cli.js +0 -0
  3. package/dist/core/local-fs.d.ts +174 -0
  4. package/dist/core/local-fs.d.ts.map +1 -0
  5. package/dist/core/local-fs.js +263 -0
  6. package/dist/core/local-fs.js.map +1 -0
  7. package/dist/templates/index.d.ts +22 -0
  8. package/dist/templates/index.d.ts.map +1 -0
  9. package/dist/templates/index.js +19 -0
  10. package/dist/templates/index.js.map +1 -0
  11. package/dist/templates/minimal.d.ts +9 -0
  12. package/dist/templates/minimal.d.ts.map +1 -0
  13. package/dist/templates/minimal.js +115 -0
  14. package/dist/templates/minimal.js.map +1 -0
  15. package/dist/templates/standard.d.ts +9 -0
  16. package/dist/templates/standard.d.ts.map +1 -0
  17. package/dist/templates/standard.js +527 -0
  18. package/dist/templates/standard.js.map +1 -0
  19. package/dist/tools/detect-pattern.d.ts +8 -5
  20. package/dist/tools/detect-pattern.d.ts.map +1 -1
  21. package/dist/tools/detect-pattern.js +151 -18
  22. package/dist/tools/detect-pattern.js.map +1 -1
  23. package/dist/tools/get-config.d.ts +1 -1
  24. package/dist/tools/get-config.d.ts.map +1 -1
  25. package/dist/tools/get-config.js +45 -10
  26. package/dist/tools/get-config.js.map +1 -1
  27. package/dist/tools/guide.d.ts +65 -0
  28. package/dist/tools/guide.d.ts.map +1 -0
  29. package/dist/tools/guide.js +304 -0
  30. package/dist/tools/guide.js.map +1 -0
  31. package/dist/tools/index.d.ts +4 -5
  32. package/dist/tools/index.d.ts.map +1 -1
  33. package/dist/tools/index.js +4 -5
  34. package/dist/tools/index.js.map +1 -1
  35. package/dist/tools/init.d.ts +73 -0
  36. package/dist/tools/init.d.ts.map +1 -0
  37. package/dist/tools/init.js +211 -0
  38. package/dist/tools/init.js.map +1 -0
  39. package/dist/tools/list-components.d.ts +18 -3
  40. package/dist/tools/list-components.d.ts.map +1 -1
  41. package/dist/tools/list-components.js +86 -11
  42. package/dist/tools/list-components.js.map +1 -1
  43. package/dist/tools/list-patterns.d.ts +18 -3
  44. package/dist/tools/list-patterns.d.ts.map +1 -1
  45. package/dist/tools/list-patterns.js +85 -10
  46. package/dist/tools/list-patterns.js.map +1 -1
  47. package/dist/tools/registry.d.ts +1 -1
  48. package/dist/tools/registry.d.ts.map +1 -1
  49. package/dist/tools/registry.js +14 -15
  50. package/dist/tools/registry.js.map +1 -1
  51. package/dist/tools/status.d.ts +1 -1
  52. package/dist/tools/status.d.ts.map +1 -1
  53. package/dist/tools/status.js +54 -42
  54. package/dist/tools/status.js.map +1 -1
  55. package/dist/tools/submit-pattern.d.ts +13 -11
  56. package/dist/tools/submit-pattern.d.ts.map +1 -1
  57. package/dist/tools/submit-pattern.js +90 -19
  58. package/dist/tools/submit-pattern.js.map +1 -1
  59. package/dist/tools/update-config.d.ts +16 -8
  60. package/dist/tools/update-config.d.ts.map +1 -1
  61. package/dist/tools/update-config.js +93 -39
  62. package/dist/tools/update-config.js.map +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,527 @@
1
+ /**
2
+ * Standard Template
3
+ *
4
+ * Full setup with all Radix UI Themes components and common patterns.
5
+ * Recommended for most projects.
6
+ */
7
+ export function standardTemplate(config, projectName) {
8
+ const now = new Date().toISOString().split("T")[0];
9
+ return {
10
+ name: "standard",
11
+ description: "Full setup with all components and common patterns",
12
+ files: {
13
+ "manifest.json": {
14
+ $schema: "https://uidb.ai/schemas/manifest.json",
15
+ version: "1.0.0",
16
+ name: projectName,
17
+ description: `Design system for ${projectName}`,
18
+ framework: {
19
+ name: "auto-detect",
20
+ ui_library: "radix-ui-themes",
21
+ },
22
+ created_at: now,
23
+ updated_at: now,
24
+ },
25
+ "config.json": {
26
+ $schema: "https://uidb.ai/schemas/config.json",
27
+ theme: {
28
+ accentColor: config.accentColor,
29
+ grayColor: config.grayColor,
30
+ radius: config.radius,
31
+ },
32
+ appearance: config.appearance,
33
+ scaling: "100%",
34
+ },
35
+ "components/_index.json": getComponentsIndex(),
36
+ "components/button.json": getButtonComponent(),
37
+ "components/card.json": getCardComponent(),
38
+ "components/dialog.json": getDialogComponent(),
39
+ "components/text-field.json": getTextFieldComponent(),
40
+ "components/callout.json": getCalloutComponent(),
41
+ "components/badge.json": getBadgeComponent(),
42
+ "patterns/_index.json": getPatternsIndex(),
43
+ "patterns/dialog-actions.json": getDialogActionsPattern(),
44
+ "patterns/form-field.json": getFormFieldPattern(),
45
+ "patterns/empty-state.json": getEmptyStatePattern(),
46
+ "rules/a11y.json": getA11yRules(),
47
+ "rules/constraints.json": getConstraints(),
48
+ "README.md": getReadme(projectName, config),
49
+ },
50
+ };
51
+ }
52
+ function getComponentsIndex() {
53
+ return {
54
+ $schema: "https://uidb.ai/schemas/components-index.json",
55
+ components: [
56
+ {
57
+ id: "button",
58
+ name: "Button",
59
+ category: "interaction",
60
+ description: "Interactive button for user actions",
61
+ file: "button.json",
62
+ },
63
+ {
64
+ id: "icon-button",
65
+ name: "Icon Button",
66
+ category: "interaction",
67
+ description: "Button with icon only, requires aria-label",
68
+ file: "icon-button.json",
69
+ },
70
+ {
71
+ id: "text-field",
72
+ name: "Text Field",
73
+ category: "form",
74
+ description: "Text input for user data entry",
75
+ file: "text-field.json",
76
+ },
77
+ {
78
+ id: "text-area",
79
+ name: "Text Area",
80
+ category: "form",
81
+ description: "Multi-line text input",
82
+ file: "text-area.json",
83
+ },
84
+ {
85
+ id: "select",
86
+ name: "Select",
87
+ category: "form",
88
+ description: "Dropdown for selecting from options",
89
+ file: "select.json",
90
+ },
91
+ {
92
+ id: "checkbox",
93
+ name: "Checkbox",
94
+ category: "form",
95
+ description: "Boolean selection input",
96
+ file: "checkbox.json",
97
+ },
98
+ {
99
+ id: "switch",
100
+ name: "Switch",
101
+ category: "form",
102
+ description: "Toggle for on/off states",
103
+ file: "switch.json",
104
+ },
105
+ {
106
+ id: "card",
107
+ name: "Card",
108
+ category: "layout",
109
+ description: "Container for grouping related content",
110
+ file: "card.json",
111
+ },
112
+ {
113
+ id: "dialog",
114
+ name: "Dialog",
115
+ category: "overlay",
116
+ description: "Modal dialog for focused interactions",
117
+ file: "dialog.json",
118
+ },
119
+ {
120
+ id: "popover",
121
+ name: "Popover",
122
+ category: "overlay",
123
+ description: "Floating content panel",
124
+ file: "popover.json",
125
+ },
126
+ {
127
+ id: "dropdown-menu",
128
+ name: "Dropdown Menu",
129
+ category: "navigation",
130
+ description: "Menu triggered by a button",
131
+ file: "dropdown-menu.json",
132
+ },
133
+ {
134
+ id: "tabs",
135
+ name: "Tabs",
136
+ category: "navigation",
137
+ description: "Tabbed interface for organizing content",
138
+ file: "tabs.json",
139
+ },
140
+ {
141
+ id: "callout",
142
+ name: "Callout",
143
+ category: "feedback",
144
+ description: "Highlighted message for important information",
145
+ file: "callout.json",
146
+ },
147
+ {
148
+ id: "badge",
149
+ name: "Badge",
150
+ category: "data-display",
151
+ description: "Small label for status or categorization",
152
+ file: "badge.json",
153
+ },
154
+ {
155
+ id: "avatar",
156
+ name: "Avatar",
157
+ category: "data-display",
158
+ description: "User or entity profile image",
159
+ file: "avatar.json",
160
+ },
161
+ {
162
+ id: "tooltip",
163
+ name: "Tooltip",
164
+ category: "overlay",
165
+ description: "Brief helper text on hover",
166
+ file: "tooltip.json",
167
+ },
168
+ ],
169
+ categories: {
170
+ interaction: "Interactive elements for user actions",
171
+ form: "Input and selection components for data entry",
172
+ layout: "Structural components for organizing content",
173
+ navigation: "Components for navigating between views",
174
+ overlay: "Components that appear above page content",
175
+ feedback: "Components for user feedback and messaging",
176
+ "data-display": "Components for displaying data and status",
177
+ },
178
+ };
179
+ }
180
+ function getButtonComponent() {
181
+ return {
182
+ $schema: "https://uidb.ai/schemas/component.json",
183
+ id: "button",
184
+ name: "Button",
185
+ description: "Interactive button for user actions. Uses semantic intent to determine color.",
186
+ import: "import { Button } from '@radix-ui/themes';",
187
+ props: {
188
+ variant: {
189
+ type: "enum",
190
+ options: ["solid", "soft", "outline", "ghost", "surface"],
191
+ default: "solid",
192
+ description: "Visual style - solid for primary actions, soft/ghost for secondary",
193
+ },
194
+ color: {
195
+ type: "enum",
196
+ options: ["accent", "gray", "red", "green", "amber", "blue"],
197
+ default: "accent",
198
+ description: "Color based on semantic intent",
199
+ },
200
+ size: {
201
+ type: "enum",
202
+ options: ["1", "2", "3", "4"],
203
+ default: "2",
204
+ description: "Size scale (1=compact, 2=default, 3=medium, 4=large)",
205
+ },
206
+ },
207
+ semantic_intents: {
208
+ primary: {
209
+ color: "accent",
210
+ variant: "solid",
211
+ use_for: ["Submit", "Save", "Confirm", "Create", "Add"],
212
+ },
213
+ secondary: {
214
+ color: "gray",
215
+ variant: "soft",
216
+ use_for: ["Cancel", "Back", "Close", "Dismiss"],
217
+ },
218
+ destructive: {
219
+ color: "red",
220
+ variant: "solid",
221
+ use_for: ["Delete", "Remove", "Revoke"],
222
+ },
223
+ success: {
224
+ color: "green",
225
+ variant: "solid",
226
+ use_for: ["Approve", "Accept", "Publish"],
227
+ },
228
+ },
229
+ examples: {
230
+ primary: '<Button variant="solid">Save Changes</Button>',
231
+ secondary: '<Button variant="soft" color="gray">Cancel</Button>',
232
+ destructive: '<Button variant="solid" color="red">Delete</Button>',
233
+ },
234
+ };
235
+ }
236
+ function getCardComponent() {
237
+ return {
238
+ $schema: "https://uidb.ai/schemas/component.json",
239
+ id: "card",
240
+ name: "Card",
241
+ description: "Container for grouping related content.",
242
+ import: "import { Card } from '@radix-ui/themes';",
243
+ props: {
244
+ variant: {
245
+ type: "enum",
246
+ options: ["surface", "classic", "ghost"],
247
+ default: "surface",
248
+ },
249
+ size: {
250
+ type: "enum",
251
+ options: ["1", "2", "3", "4", "5"],
252
+ default: "2",
253
+ },
254
+ },
255
+ examples: {
256
+ basic: "<Card>\n <Text>Card content</Text>\n</Card>",
257
+ with_heading: '<Card size="3">\n <Heading size="4" mb="2">Title</Heading>\n <Text color="gray">Description</Text>\n</Card>',
258
+ },
259
+ };
260
+ }
261
+ function getDialogComponent() {
262
+ return {
263
+ $schema: "https://uidb.ai/schemas/component.json",
264
+ id: "dialog",
265
+ name: "Dialog",
266
+ description: "Modal dialog for focused interactions.",
267
+ import: "import { Dialog } from '@radix-ui/themes';",
268
+ parts: ["Root", "Trigger", "Content", "Title", "Description", "Close"],
269
+ examples: {
270
+ basic: "<Dialog.Root>\n <Dialog.Trigger>\n <Button>Open</Button>\n </Dialog.Trigger>\n <Dialog.Content>\n <Dialog.Title>Title</Dialog.Title>\n <Dialog.Description>Description</Dialog.Description>\n </Dialog.Content>\n</Dialog.Root>",
271
+ },
272
+ accessibility: {
273
+ requirements: [
274
+ "Always include Dialog.Title",
275
+ "Use Dialog.Description for context",
276
+ ],
277
+ },
278
+ };
279
+ }
280
+ function getTextFieldComponent() {
281
+ return {
282
+ $schema: "https://uidb.ai/schemas/component.json",
283
+ id: "text-field",
284
+ name: "Text Field",
285
+ description: "Single-line text input.",
286
+ import: "import { TextField } from '@radix-ui/themes';",
287
+ props: {
288
+ variant: {
289
+ type: "enum",
290
+ options: ["classic", "surface", "soft"],
291
+ default: "surface",
292
+ },
293
+ size: {
294
+ type: "enum",
295
+ options: ["1", "2", "3"],
296
+ default: "2",
297
+ },
298
+ },
299
+ examples: {
300
+ basic: '<TextField.Root placeholder="Enter text" />',
301
+ with_label: '<Box>\n <Text as="label" size="2" weight="medium" mb="1">Email</Text>\n <TextField.Root placeholder="you@example.com" type="email" />\n</Box>',
302
+ },
303
+ };
304
+ }
305
+ function getCalloutComponent() {
306
+ return {
307
+ $schema: "https://uidb.ai/schemas/component.json",
308
+ id: "callout",
309
+ name: "Callout",
310
+ description: "Highlighted message for important information.",
311
+ import: "import { Callout } from '@radix-ui/themes';",
312
+ parts: ["Root", "Icon", "Text"],
313
+ semantic_intents: {
314
+ info: { color: "blue", icon: "InfoCircledIcon" },
315
+ success: { color: "green", icon: "CheckCircledIcon" },
316
+ warning: { color: "amber", icon: "ExclamationTriangleIcon" },
317
+ error: { color: "red", icon: "CrossCircledIcon" },
318
+ },
319
+ examples: {
320
+ info: '<Callout.Root color="blue">\n <Callout.Icon><InfoCircledIcon /></Callout.Icon>\n <Callout.Text>Info message</Callout.Text>\n</Callout.Root>',
321
+ },
322
+ };
323
+ }
324
+ function getBadgeComponent() {
325
+ return {
326
+ $schema: "https://uidb.ai/schemas/component.json",
327
+ id: "badge",
328
+ name: "Badge",
329
+ description: "Small label for status or categorization.",
330
+ import: "import { Badge } from '@radix-ui/themes';",
331
+ props: {
332
+ variant: {
333
+ type: "enum",
334
+ options: ["solid", "soft", "surface", "outline"],
335
+ default: "soft",
336
+ },
337
+ color: {
338
+ type: "enum",
339
+ options: ["accent", "gray", "red", "green", "amber", "blue"],
340
+ default: "accent",
341
+ },
342
+ },
343
+ semantic_intents: {
344
+ status_active: { color: "green", variant: "soft" },
345
+ status_inactive: { color: "gray", variant: "soft" },
346
+ status_pending: { color: "amber", variant: "soft" },
347
+ status_error: { color: "red", variant: "soft" },
348
+ },
349
+ examples: {
350
+ status: '<Badge color="green">Active</Badge>',
351
+ },
352
+ };
353
+ }
354
+ function getPatternsIndex() {
355
+ return {
356
+ $schema: "https://uidb.ai/schemas/patterns-index.json",
357
+ patterns: [
358
+ {
359
+ id: "dialog-actions",
360
+ name: "Dialog Actions",
361
+ category: "layout",
362
+ description: "Standard action buttons at bottom of dialog",
363
+ file: "dialog-actions.json",
364
+ },
365
+ {
366
+ id: "form-field",
367
+ name: "Form Field",
368
+ category: "forms",
369
+ description: "Labeled input with optional error state",
370
+ file: "form-field.json",
371
+ },
372
+ {
373
+ id: "empty-state",
374
+ name: "Empty State",
375
+ category: "feedback",
376
+ description: "Placeholder for empty lists",
377
+ file: "empty-state.json",
378
+ },
379
+ ],
380
+ categories: {
381
+ layout: "Structural patterns",
382
+ forms: "Form layout patterns",
383
+ feedback: "User feedback patterns",
384
+ navigation: "Navigation patterns",
385
+ "data-display": "Data display patterns",
386
+ identity: "User identity patterns",
387
+ },
388
+ };
389
+ }
390
+ function getDialogActionsPattern() {
391
+ return {
392
+ $schema: "https://uidb.ai/schemas/pattern.json",
393
+ id: "dialog-actions",
394
+ name: "Dialog Actions",
395
+ description: "Standard action button layout at bottom of dialogs.",
396
+ components_used: ["Button", "Flex", "Dialog.Close"],
397
+ variants: {
398
+ standard: {
399
+ description: "Cancel and primary action",
400
+ code: '<Flex gap="3" justify="end" mt="4">\n <Dialog.Close>\n <Button variant="soft" color="gray">Cancel</Button>\n </Dialog.Close>\n <Dialog.Close>\n <Button>Save</Button>\n </Dialog.Close>\n</Flex>',
401
+ },
402
+ destructive: {
403
+ description: "Cancel and destructive action",
404
+ code: '<Flex gap="3" justify="end" mt="4">\n <Dialog.Close>\n <Button variant="soft" color="gray">Cancel</Button>\n </Dialog.Close>\n <Dialog.Close>\n <Button color="red">Delete</Button>\n </Dialog.Close>\n</Flex>',
405
+ },
406
+ },
407
+ };
408
+ }
409
+ function getFormFieldPattern() {
410
+ return {
411
+ $schema: "https://uidb.ai/schemas/pattern.json",
412
+ id: "form-field",
413
+ name: "Form Field",
414
+ description: "Labeled input field with optional error state.",
415
+ components_used: ["TextField", "Text", "Box"],
416
+ variants: {
417
+ basic: {
418
+ description: "Simple labeled field",
419
+ code: '<Box>\n <Text as="label" size="2" weight="medium" mb="1">Label</Text>\n <TextField.Root placeholder="Placeholder" />\n</Box>',
420
+ },
421
+ with_error: {
422
+ description: "Field with error message",
423
+ code: '<Box>\n <Text as="label" size="2" weight="medium" mb="1">Label</Text>\n <TextField.Root placeholder="Placeholder" color="red" />\n <Text size="1" color="red" mt="1">Error message</Text>\n</Box>',
424
+ },
425
+ },
426
+ };
427
+ }
428
+ function getEmptyStatePattern() {
429
+ return {
430
+ $schema: "https://uidb.ai/schemas/pattern.json",
431
+ id: "empty-state",
432
+ name: "Empty State",
433
+ description: "Placeholder when there is no data.",
434
+ components_used: ["Flex", "Text", "Button"],
435
+ variants: {
436
+ basic: {
437
+ description: "Simple message",
438
+ code: '<Flex direction="column" align="center" py="9">\n <Text size="5" color="gray" mb="2">No items yet</Text>\n <Text size="2" color="gray">Items will appear here.</Text>\n</Flex>',
439
+ },
440
+ with_action: {
441
+ description: "Message with CTA",
442
+ code: '<Flex direction="column" align="center" py="9">\n <Text size="5" color="gray" mb="2">No projects</Text>\n <Text size="2" color="gray" mb="4">Create your first project.</Text>\n <Button><PlusIcon /> Create Project</Button>\n</Flex>',
443
+ },
444
+ },
445
+ };
446
+ }
447
+ function getA11yRules() {
448
+ return {
449
+ $schema: "https://uidb.ai/schemas/a11y-rules.json",
450
+ wcag_level: "AA",
451
+ rules: {
452
+ color_contrast: {
453
+ requirement: "Text must have 4.5:1 contrast ratio",
454
+ },
455
+ focus_indicators: {
456
+ requirement: "All interactive elements must have visible focus",
457
+ },
458
+ touch_targets: {
459
+ requirement: "Minimum 44x44px on mobile",
460
+ },
461
+ labels: {
462
+ form_inputs: "All inputs must have labels",
463
+ icon_buttons: "Icon-only buttons must have aria-label",
464
+ },
465
+ },
466
+ };
467
+ }
468
+ function getConstraints() {
469
+ return {
470
+ $schema: "https://uidb.ai/schemas/constraints.json",
471
+ semantic_colors: {
472
+ description: "Use semantic colors instead of raw values",
473
+ mapping: {
474
+ primary_action: "accent",
475
+ secondary_action: "gray",
476
+ destructive: "red",
477
+ success: "green",
478
+ warning: "amber",
479
+ info: "blue",
480
+ },
481
+ },
482
+ spacing: {
483
+ description: "Use Radix spacing scale (1-9)",
484
+ },
485
+ typography: {
486
+ description: "Use Radix text size scale (1-9)",
487
+ },
488
+ };
489
+ }
490
+ function getReadme(projectName, config) {
491
+ return `# Design System - ${projectName}
492
+
493
+ This folder contains the design system for this project, managed by UIDB.
494
+
495
+ ## Theme Config
496
+
497
+ - **Accent Color**: ${config.accentColor}
498
+ - **Gray Color**: ${config.grayColor}
499
+ - **Radius**: ${config.radius}
500
+ - **Appearance**: ${config.appearance}
501
+
502
+ ## Structure
503
+
504
+ - \`config.json\` - Theme configuration
505
+ - \`components/\` - Component definitions
506
+ - \`patterns/\` - Reusable UI patterns
507
+ - \`rules/\` - Accessibility and design rules
508
+
509
+ ## Usage
510
+
511
+ Import config in your root layout:
512
+
513
+ \`\`\`tsx
514
+ import config from '../.uidb/config.json';
515
+ import { Theme } from '@radix-ui/themes';
516
+
517
+ <Theme
518
+ accentColor={config.theme.accentColor}
519
+ grayColor={config.theme.grayColor}
520
+ radius={config.theme.radius}
521
+ >
522
+ {children}
523
+ </Theme>
524
+ \`\`\`
525
+ `;
526
+ }
527
+ //# sourceMappingURL=standard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/templates/standard.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,13 @@
2
2
  * UIDB MCP Tool: uidb_detect_pattern
3
3
  *
4
4
  * Check if a UI composition is a reusable pattern.
5
+ * Uses LLM via UIDB API for intelligent detection, falls back to local heuristics.
5
6
  */
7
+ interface DetectPatternInput {
8
+ description: string;
9
+ components_used: string[];
10
+ context?: string;
11
+ }
6
12
  export declare const detectPatternTool: {
7
13
  name: string;
8
14
  description: string;
@@ -27,11 +33,7 @@ export declare const detectPatternTool: {
27
33
  };
28
34
  required: string[];
29
35
  };
30
- execute(args: {
31
- description: string;
32
- components_used: string[];
33
- context?: string;
34
- }): Promise<{
36
+ execute(args: DetectPatternInput): Promise<{
35
37
  content: {
36
38
  type: "text";
37
39
  text: string;
@@ -45,4 +47,5 @@ export declare const detectPatternTool: {
45
47
  isError: boolean;
46
48
  }>;
47
49
  };
50
+ export {};
48
51
  //# sourceMappingURL=detect-pattern.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect-pattern.d.ts","sourceRoot":"","sources":["../../src/tools/detect-pattern.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;kBAgCR;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;;;;;;;;;;;;;CA+BF,CAAC"}
1
+ {"version":3,"file":"detect-pattern.d.ts","sourceRoot":"","sources":["../../src/tools/detect-pattern.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;kBAgCR,kBAAkB;;;;;;;;;;;;;CAgGvC,CAAC"}