@sudosandwich/limps-headless 0.1.3
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 +339 -0
- package/bin/limps-headless +2 -0
- package/dist/analysis/index.d.ts +6 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +6 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/ir/build-ir.d.ts +10 -0
- package/dist/analysis/ir/build-ir.d.ts.map +1 -0
- package/dist/analysis/ir/build-ir.js +102 -0
- package/dist/analysis/ir/build-ir.js.map +1 -0
- package/dist/analysis/ir/types.d.ts +44 -0
- package/dist/analysis/ir/types.d.ts.map +1 -0
- package/dist/analysis/ir/types.js +2 -0
- package/dist/analysis/ir/types.js.map +1 -0
- package/dist/analysis/module-graph.d.ts +20 -0
- package/dist/analysis/module-graph.d.ts.map +1 -0
- package/dist/analysis/module-graph.js +104 -0
- package/dist/analysis/module-graph.js.map +1 -0
- package/dist/analysis/passes/behavior-evidence.d.ts +9 -0
- package/dist/analysis/passes/behavior-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/behavior-evidence.js +80 -0
- package/dist/analysis/passes/behavior-evidence.js.map +1 -0
- package/dist/analysis/passes/import-evidence.d.ts +3 -0
- package/dist/analysis/passes/import-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/import-evidence.js +58 -0
- package/dist/analysis/passes/import-evidence.js.map +1 -0
- package/dist/analysis/passes/index.d.ts +15 -0
- package/dist/analysis/passes/index.d.ts.map +1 -0
- package/dist/analysis/passes/index.js +21 -0
- package/dist/analysis/passes/index.js.map +1 -0
- package/dist/analysis/passes/jsx-evidence.d.ts +8 -0
- package/dist/analysis/passes/jsx-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/jsx-evidence.js +149 -0
- package/dist/analysis/passes/jsx-evidence.js.map +1 -0
- package/dist/analysis/ts-program.d.ts +12 -0
- package/dist/analysis/ts-program.d.ts.map +1 -0
- package/dist/analysis/ts-program.js +59 -0
- package/dist/analysis/ts-program.js.map +1 -0
- package/dist/analyzer/disambiguator.d.ts +20 -0
- package/dist/analyzer/disambiguator.d.ts.map +1 -0
- package/dist/analyzer/disambiguator.js +83 -0
- package/dist/analyzer/disambiguator.js.map +1 -0
- package/dist/analyzer/index.d.ts +26 -0
- package/dist/analyzer/index.d.ts.map +1 -0
- package/dist/analyzer/index.js +68 -0
- package/dist/analyzer/index.js.map +1 -0
- package/dist/analyzer/parser.d.ts +23 -0
- package/dist/analyzer/parser.d.ts.map +1 -0
- package/dist/analyzer/parser.js +58 -0
- package/dist/analyzer/parser.js.map +1 -0
- package/dist/analyzer/patterns.d.ts +42 -0
- package/dist/analyzer/patterns.d.ts.map +1 -0
- package/dist/analyzer/patterns.js +206 -0
- package/dist/analyzer/patterns.js.map +1 -0
- package/dist/analyzer/props.d.ts +16 -0
- package/dist/analyzer/props.d.ts.map +1 -0
- package/dist/analyzer/props.js +235 -0
- package/dist/analyzer/props.js.map +1 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.d.ts +10 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.d.ts.map +1 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.js +26 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.js.map +1 -0
- package/dist/analyzer/rules/dialog-popover.d.ts +10 -0
- package/dist/analyzer/rules/dialog-popover.d.ts.map +1 -0
- package/dist/analyzer/rules/dialog-popover.js +25 -0
- package/dist/analyzer/rules/dialog-popover.js.map +1 -0
- package/dist/analyzer/rules/index.d.ts +24 -0
- package/dist/analyzer/rules/index.d.ts.map +1 -0
- package/dist/analyzer/rules/index.js +51 -0
- package/dist/analyzer/rules/index.js.map +1 -0
- package/dist/analyzer/rules/tooltip-hovercard.d.ts +10 -0
- package/dist/analyzer/rules/tooltip-hovercard.d.ts.map +1 -0
- package/dist/analyzer/rules/tooltip-hovercard.js +21 -0
- package/dist/analyzer/rules/tooltip-hovercard.js.map +1 -0
- package/dist/analyzer/scorer.d.ts +12 -0
- package/dist/analyzer/scorer.d.ts.map +1 -0
- package/dist/analyzer/scorer.js +171 -0
- package/dist/analyzer/scorer.js.map +1 -0
- package/dist/analyzer/weights.d.ts +28 -0
- package/dist/analyzer/weights.d.ts.map +1 -0
- package/dist/analyzer/weights.js +40 -0
- package/dist/analyzer/weights.js.map +1 -0
- package/dist/audit/analyses/migration.d.ts +42 -0
- package/dist/audit/analyses/migration.d.ts.map +1 -0
- package/dist/audit/analyses/migration.js +91 -0
- package/dist/audit/analyses/migration.js.map +1 -0
- package/dist/audit/discover-components.d.ts +7 -0
- package/dist/audit/discover-components.d.ts.map +1 -0
- package/dist/audit/discover-components.js +486 -0
- package/dist/audit/discover-components.js.map +1 -0
- package/dist/audit/generate-report.d.ts +28 -0
- package/dist/audit/generate-report.d.ts.map +1 -0
- package/dist/audit/generate-report.js +333 -0
- package/dist/audit/generate-report.js.map +1 -0
- package/dist/audit/index.d.ts +8 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +8 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/run-audit.d.ts +33 -0
- package/dist/audit/run-audit.d.ts.map +1 -0
- package/dist/audit/run-audit.js +287 -0
- package/dist/audit/run-audit.js.map +1 -0
- package/dist/audit/types.d.ts +135 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +5 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/cache/index.d.ts +110 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +176 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/storage.d.ts +73 -0
- package/dist/cache/storage.d.ts.map +1 -0
- package/dist/cache/storage.js +176 -0
- package/dist/cache/storage.js.map +1 -0
- package/dist/cache/ttl.d.ts +62 -0
- package/dist/cache/ttl.d.ts.map +1 -0
- package/dist/cache/ttl.js +96 -0
- package/dist/cache/ttl.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +6 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +43 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +6 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +73 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/check-updates.d.ts +6 -0
- package/dist/cli/commands/check-updates.d.ts.map +1 -0
- package/dist/cli/commands/check-updates.js +34 -0
- package/dist/cli/commands/check-updates.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +7 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +48 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/extract.d.ts +6 -0
- package/dist/cli/commands/extract.d.ts.map +1 -0
- package/dist/cli/commands/extract.js +42 -0
- package/dist/cli/commands/extract.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +33 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/flags.d.ts +9 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +22 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -0
- package/dist/differ/hints.d.ts +21 -0
- package/dist/differ/hints.d.ts.map +1 -0
- package/dist/differ/hints.js +105 -0
- package/dist/differ/hints.js.map +1 -0
- package/dist/differ/index.d.ts +25 -0
- package/dist/differ/index.d.ts.map +1 -0
- package/dist/differ/index.js +115 -0
- package/dist/differ/index.js.map +1 -0
- package/dist/differ/props.d.ts +36 -0
- package/dist/differ/props.d.ts.map +1 -0
- package/dist/differ/props.js +210 -0
- package/dist/differ/props.js.map +1 -0
- package/dist/differ/severity.d.ts +31 -0
- package/dist/differ/severity.d.ts.map +1 -0
- package/dist/differ/severity.js +65 -0
- package/dist/differ/severity.js.map +1 -0
- package/dist/differ/types.d.ts +109 -0
- package/dist/differ/types.d.ts.map +1 -0
- package/dist/differ/types.js +5 -0
- package/dist/differ/types.js.map +1 -0
- package/dist/extractor/classifier.d.ts +30 -0
- package/dist/extractor/classifier.d.ts.map +1 -0
- package/dist/extractor/classifier.js +150 -0
- package/dist/extractor/classifier.js.map +1 -0
- package/dist/extractor/forward-ref.d.ts +28 -0
- package/dist/extractor/forward-ref.d.ts.map +1 -0
- package/dist/extractor/forward-ref.js +134 -0
- package/dist/extractor/forward-ref.js.map +1 -0
- package/dist/extractor/index.d.ts +25 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +43 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/interface.d.ts +40 -0
- package/dist/extractor/interface.d.ts.map +1 -0
- package/dist/extractor/interface.js +233 -0
- package/dist/extractor/interface.js.map +1 -0
- package/dist/extractor/jsdoc.d.ts +24 -0
- package/dist/extractor/jsdoc.d.ts.map +1 -0
- package/dist/extractor/jsdoc.js +74 -0
- package/dist/extractor/jsdoc.js.map +1 -0
- package/dist/extractor/project.d.ts +17 -0
- package/dist/extractor/project.d.ts.map +1 -0
- package/dist/extractor/project.js +33 -0
- package/dist/extractor/project.js.map +1 -0
- package/dist/extractor/props.d.ts +24 -0
- package/dist/extractor/props.d.ts.map +1 -0
- package/dist/extractor/props.js +78 -0
- package/dist/extractor/props.js.map +1 -0
- package/dist/extractor/type-resolver.d.ts +32 -0
- package/dist/extractor/type-resolver.d.ts.map +1 -0
- package/dist/extractor/type-resolver.js +129 -0
- package/dist/extractor/type-resolver.js.map +1 -0
- package/dist/fetcher/index.d.ts +7 -0
- package/dist/fetcher/index.d.ts.map +1 -0
- package/dist/fetcher/index.js +7 -0
- package/dist/fetcher/index.js.map +1 -0
- package/dist/fetcher/npm-registry.d.ts +45 -0
- package/dist/fetcher/npm-registry.d.ts.map +1 -0
- package/dist/fetcher/npm-registry.js +217 -0
- package/dist/fetcher/npm-registry.js.map +1 -0
- package/dist/fetcher/unified-package.d.ts +27 -0
- package/dist/fetcher/unified-package.d.ts.map +1 -0
- package/dist/fetcher/unified-package.js +99 -0
- package/dist/fetcher/unified-package.js.map +1 -0
- package/dist/fetcher/unpkg.d.ts +20 -0
- package/dist/fetcher/unpkg.d.ts.map +1 -0
- package/dist/fetcher/unpkg.js +58 -0
- package/dist/fetcher/unpkg.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base.d.ts +10 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +80 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +10 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/interface.d.ts +56 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +5 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/radix-backend.d.ts +11 -0
- package/dist/providers/radix-backend.d.ts.map +1 -0
- package/dist/providers/radix-backend.js +107 -0
- package/dist/providers/radix-backend.js.map +1 -0
- package/dist/providers/radix.d.ts +6 -0
- package/dist/providers/radix.d.ts.map +1 -0
- package/dist/providers/radix.js +21 -0
- package/dist/providers/radix.js.map +1 -0
- package/dist/providers/registry.d.ts +17 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +55 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/rules/engine.d.ts +4 -0
- package/dist/rules/engine.d.ts.map +1 -0
- package/dist/rules/engine.js +37 -0
- package/dist/rules/engine.js.map +1 -0
- package/dist/rules/index.d.ts +6 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +6 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/predicates.d.ts +10 -0
- package/dist/rules/predicates.d.ts.map +1 -0
- package/dist/rules/predicates.js +93 -0
- package/dist/rules/predicates.js.map +1 -0
- package/dist/rules/rulesets/base-ui.d.ts +3 -0
- package/dist/rules/rulesets/base-ui.d.ts.map +1 -0
- package/dist/rules/rulesets/base-ui.js +65 -0
- package/dist/rules/rulesets/base-ui.js.map +1 -0
- package/dist/rules/rulesets/radix-legacy.d.ts +3 -0
- package/dist/rules/rulesets/radix-legacy.d.ts.map +1 -0
- package/dist/rules/rulesets/radix-legacy.js +38 -0
- package/dist/rules/rulesets/radix-legacy.js.map +1 -0
- package/dist/rules/types.d.ts +57 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +2 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/signatures/disambiguation.d.ts +30 -0
- package/dist/signatures/disambiguation.d.ts.map +1 -0
- package/dist/signatures/disambiguation.js +99 -0
- package/dist/signatures/disambiguation.js.map +1 -0
- package/dist/signatures/distinguishing.d.ts +29 -0
- package/dist/signatures/distinguishing.d.ts.map +1 -0
- package/dist/signatures/distinguishing.js +108 -0
- package/dist/signatures/distinguishing.js.map +1 -0
- package/dist/signatures/generator.d.ts +20 -0
- package/dist/signatures/generator.d.ts.map +1 -0
- package/dist/signatures/generator.js +147 -0
- package/dist/signatures/generator.js.map +1 -0
- package/dist/signatures/index.d.ts +10 -0
- package/dist/signatures/index.d.ts.map +1 -0
- package/dist/signatures/index.js +10 -0
- package/dist/signatures/index.js.map +1 -0
- package/dist/signatures/inference.d.ts +37 -0
- package/dist/signatures/inference.d.ts.map +1 -0
- package/dist/signatures/inference.js +132 -0
- package/dist/signatures/inference.js.map +1 -0
- package/dist/tools/analyze-component.d.ts +41 -0
- package/dist/tools/analyze-component.d.ts.map +1 -0
- package/dist/tools/analyze-component.js +274 -0
- package/dist/tools/analyze-component.js.map +1 -0
- package/dist/tools/check-updates.d.ts +33 -0
- package/dist/tools/check-updates.d.ts.map +1 -0
- package/dist/tools/check-updates.js +81 -0
- package/dist/tools/check-updates.js.map +1 -0
- package/dist/tools/diff-versions.d.ts +39 -0
- package/dist/tools/diff-versions.d.ts.map +1 -0
- package/dist/tools/diff-versions.js +78 -0
- package/dist/tools/diff-versions.js.map +1 -0
- package/dist/tools/extract-primitive.d.ts +50 -0
- package/dist/tools/extract-primitive.d.ts.map +1 -0
- package/dist/tools/extract-primitive.js +145 -0
- package/dist/tools/extract-primitive.js.map +1 -0
- package/dist/tools/generate-report.d.ts +29 -0
- package/dist/tools/generate-report.d.ts.map +1 -0
- package/dist/tools/generate-report.js +36 -0
- package/dist/tools/generate-report.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-primitives.d.ts +41 -0
- package/dist/tools/list-primitives.d.ts.map +1 -0
- package/dist/tools/list-primitives.js +74 -0
- package/dist/tools/list-primitives.js.map +1 -0
- package/dist/tools/run-audit.d.ts +43 -0
- package/dist/tools/run-audit.d.ts.map +1 -0
- package/dist/tools/run-audit.js +60 -0
- package/dist/tools/run-audit.js.map +1 -0
- package/dist/types/index.d.ts +143 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/docs/architecture.md +88 -0
- package/docs/providers.md +47 -0
- package/docs/tools.md +143 -0
- package/package.json +59 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for extracting the full behavioral contract from a Radix primitive.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { resolvePackage, fetchTypesWithFallback, } from '../fetcher/index.js';
|
|
6
|
+
import { extractPrimitive, getPropCategory } from '../extractor/index.js';
|
|
7
|
+
import { generateSignature } from '../signatures/index.js';
|
|
8
|
+
import { getFromCache, saveToCache, getSignatureFromCache, saveSignatureToCache, } from '../cache/index.js';
|
|
9
|
+
import { getProvider } from '../providers/registry.js';
|
|
10
|
+
/**
|
|
11
|
+
* Input schema for headless_extract_primitive tool.
|
|
12
|
+
*/
|
|
13
|
+
export const extractPrimitiveInputSchema = z.object({
|
|
14
|
+
primitive: z.string().describe('Primitive name (e.g., "dialog", "popover", "tooltip")'),
|
|
15
|
+
version: z
|
|
16
|
+
.string()
|
|
17
|
+
.optional()
|
|
18
|
+
.default('latest')
|
|
19
|
+
.describe('Radix version (default: latest)'),
|
|
20
|
+
provider: z
|
|
21
|
+
.string()
|
|
22
|
+
.optional()
|
|
23
|
+
.default('radix')
|
|
24
|
+
.describe('Component library provider (default: radix)'),
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Handler for the headless_extract_primitive tool.
|
|
28
|
+
*
|
|
29
|
+
* @param input - Tool input parameters
|
|
30
|
+
* @returns Full primitive contract with behavioral classification
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Convert kebab-case or lowercase primitive name to PascalCase.
|
|
34
|
+
* @example "dialog" -> "Dialog", "alert-dialog" -> "AlertDialog"
|
|
35
|
+
*/
|
|
36
|
+
function toPascalCase(name) {
|
|
37
|
+
return name
|
|
38
|
+
.split('-')
|
|
39
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
40
|
+
.join('');
|
|
41
|
+
}
|
|
42
|
+
export async function handleExtractPrimitive(input) {
|
|
43
|
+
const parsed = extractPrimitiveInputSchema.parse(input);
|
|
44
|
+
const primitiveSlug = parsed.primitive.toLowerCase();
|
|
45
|
+
const primitiveName = toPascalCase(parsed.primitive); // PascalCase for extractor/cache
|
|
46
|
+
const versionHint = parsed.version || 'latest';
|
|
47
|
+
const provider = getProvider(parsed.provider);
|
|
48
|
+
if (provider.name !== 'radix') {
|
|
49
|
+
const resolvedVersion = await provider.resolveVersion(versionHint);
|
|
50
|
+
const typeContent = await provider.fetchTypes(primitiveSlug, resolvedVersion);
|
|
51
|
+
const extracted = provider.extract
|
|
52
|
+
? provider.extract(typeContent)
|
|
53
|
+
: extractPrimitive(typeContent, primitiveName, resolvedVersion, provider.displayName);
|
|
54
|
+
const signature = provider.generateSignature
|
|
55
|
+
? provider.generateSignature(extracted)
|
|
56
|
+
: generateSignature(extracted);
|
|
57
|
+
const output = {
|
|
58
|
+
primitive: extracted.name,
|
|
59
|
+
package: provider.name,
|
|
60
|
+
version: resolvedVersion,
|
|
61
|
+
behavior: {
|
|
62
|
+
statePattern: signature.statePattern,
|
|
63
|
+
compositionPattern: signature.compositionPattern,
|
|
64
|
+
renderingPattern: signature.renderingPattern,
|
|
65
|
+
},
|
|
66
|
+
subComponents: extracted.subComponents.map((sc) => ({
|
|
67
|
+
name: sc.name,
|
|
68
|
+
props: sc.props.map((p) => ({
|
|
69
|
+
name: p.name,
|
|
70
|
+
type: p.type,
|
|
71
|
+
required: p.required,
|
|
72
|
+
default: p.defaultValue,
|
|
73
|
+
category: getPropCategory(p.name),
|
|
74
|
+
})),
|
|
75
|
+
})),
|
|
76
|
+
similarTo: signature.similarTo,
|
|
77
|
+
disambiguationRule: signature.disambiguationRule,
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Resolve package source and version (use slug for fetcher)
|
|
84
|
+
const resolved = await resolvePackage(primitiveSlug, versionHint);
|
|
85
|
+
let resolvedContent = null;
|
|
86
|
+
// Try cache first (use PascalCase for cache keys)
|
|
87
|
+
let extracted = await getFromCache(primitiveName, resolved.version);
|
|
88
|
+
let signature = await getSignatureFromCache(primitiveName, resolved.version);
|
|
89
|
+
if (!extracted) {
|
|
90
|
+
// Fetch and extract (use slug for fetcher)
|
|
91
|
+
resolvedContent = await fetchTypesWithFallback(primitiveSlug, versionHint);
|
|
92
|
+
extracted = extractPrimitive(resolvedContent.content, primitiveName, // Use PascalCase for extractor
|
|
93
|
+
resolvedContent.resolved.version, resolvedContent.resolved.packageName);
|
|
94
|
+
// Save to cache (use PascalCase for cache keys)
|
|
95
|
+
await saveToCache(primitiveName, resolvedContent.resolved.version, extracted);
|
|
96
|
+
}
|
|
97
|
+
if (!signature) {
|
|
98
|
+
// Generate signature
|
|
99
|
+
signature = generateSignature(extracted);
|
|
100
|
+
// Save to cache (use PascalCase for cache keys)
|
|
101
|
+
const resolvedVersion = resolvedContent?.resolved.version ?? resolved.version;
|
|
102
|
+
await saveSignatureToCache(primitiveName, resolvedVersion, signature);
|
|
103
|
+
}
|
|
104
|
+
// Format output
|
|
105
|
+
const resolvedPackage = resolvedContent?.resolved ??
|
|
106
|
+
{
|
|
107
|
+
packageName: extracted.package,
|
|
108
|
+
version: extracted.version,
|
|
109
|
+
};
|
|
110
|
+
const output = {
|
|
111
|
+
primitive: extracted.name,
|
|
112
|
+
package: resolvedPackage.packageName,
|
|
113
|
+
version: resolvedPackage.version,
|
|
114
|
+
behavior: {
|
|
115
|
+
statePattern: signature.statePattern,
|
|
116
|
+
compositionPattern: signature.compositionPattern,
|
|
117
|
+
renderingPattern: signature.renderingPattern,
|
|
118
|
+
},
|
|
119
|
+
subComponents: extracted.subComponents.map((sc) => ({
|
|
120
|
+
name: sc.name,
|
|
121
|
+
props: sc.props.map((p) => ({
|
|
122
|
+
name: p.name,
|
|
123
|
+
type: p.type,
|
|
124
|
+
required: p.required,
|
|
125
|
+
default: p.defaultValue,
|
|
126
|
+
category: getPropCategory(p.name),
|
|
127
|
+
})),
|
|
128
|
+
})),
|
|
129
|
+
similarTo: signature.similarTo,
|
|
130
|
+
disambiguationRule: signature.disambiguationRule,
|
|
131
|
+
};
|
|
132
|
+
return {
|
|
133
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* MCP tool definition for extracting a Radix primitive's contract.
|
|
138
|
+
*/
|
|
139
|
+
export const extractPrimitiveTool = {
|
|
140
|
+
name: 'headless_extract_primitive',
|
|
141
|
+
description: 'Extract the behavioral contract from a Radix UI primitive, including sub-components, props, and semantic classification',
|
|
142
|
+
inputSchema: extractPrimitiveInputSchema,
|
|
143
|
+
handler: handleExtractPrimitive,
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=extract-primitive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-primitive.js","sourceRoot":"","sources":["../../src/tools/extract-primitive.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,cAAc,EACd,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IACvF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC,CAAC;AAiCH;;;;;GAKG;AACH;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACzE,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAc;IAEd,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,iCAAiC;IACvF,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO;YAChC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,gBAAgB,CACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,QAAQ,CAAC,WAAW,CACrB,CAAC;QACN,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB;YAC1C,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACvC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEjC,MAAM,MAAM,GAA2B;YACrC,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,OAAO,EAAE,QAAQ,CAAC,IAAI;YACtB,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE;gBACR,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;gBAChD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;aAC7C;YACD,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClD,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,YAAY;oBACvB,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;SACjD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAClE,IAAI,eAAe,GAER,IAAI,CAAC;IAEhB,kDAAkD;IAClD,IAAI,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,SAAS,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,2CAA2C;QAC3C,eAAe,GAAG,MAAM,sBAAsB,CAC5C,aAAa,EACb,WAAW,CACZ,CAAC;QACF,SAAS,GAAG,gBAAgB,CAC1B,eAAe,CAAC,OAAO,EACvB,aAAa,EAAE,+BAA+B;QAC9C,eAAe,CAAC,QAAQ,CAAC,OAAO,EAChC,eAAe,CAAC,QAAQ,CAAC,WAAW,CACrC,CAAC;QAEF,gDAAgD;QAChD,MAAM,WAAW,CACf,aAAa,EACb,eAAe,CAAC,QAAQ,CAAC,OAAO,EAChC,SAAS,CACV,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,qBAAqB;QACrB,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEzC,gDAAgD;QAChD,MAAM,eAAe,GACnB,eAAe,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;QACxD,MAAM,oBAAoB,CAAC,aAAa,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC;IAED,gBAAgB;IAChB,MAAM,eAAe,GACnB,eAAe,EAAE,QAAQ;QACxB;YACC,WAAW,EAAE,SAAS,CAAC,OAAO;YAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;SACkB,CAAC;IAEjD,MAAM,MAAM,GAA2B;QACrC,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,OAAO,EAAE,eAAe,CAAC,WAAW;QACpC,OAAO,EAAE,eAAe,CAAC,OAAO;QAEhC,QAAQ,EAAE;YACR,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;YAChD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;SAC7C;QAED,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,YAAY;gBACvB,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;KACjD,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,IAAI,EAAE,4BAA4B;IAClC,WAAW,EACT,yHAAyH;IAC3H,WAAW,EAAE,2BAA2B;IACxC,OAAO,EAAE,sBAAsB;CAChC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for generating an audit report from precomputed analysis/diff/updates JSON.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import type { ExtensionTool } from '@sudosandwich/limps/extensions';
|
|
6
|
+
export declare const generateReportInputSchema: z.ZodObject<{
|
|
7
|
+
inputs: z.ZodObject<{
|
|
8
|
+
analysis: z.ZodOptional<z.ZodString>;
|
|
9
|
+
diff: z.ZodOptional<z.ZodString>;
|
|
10
|
+
checkUpdates: z.ZodOptional<z.ZodString>;
|
|
11
|
+
inventory: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
outputDir: z.ZodOptional<z.ZodString>;
|
|
14
|
+
format: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
both: "both";
|
|
16
|
+
json: "json";
|
|
17
|
+
markdown: "markdown";
|
|
18
|
+
}>>>;
|
|
19
|
+
title: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
export type GenerateReportInput = z.infer<typeof generateReportInputSchema>;
|
|
22
|
+
export declare function handleGenerateReport(input: unknown): Promise<{
|
|
23
|
+
content: {
|
|
24
|
+
type: 'text';
|
|
25
|
+
text: string;
|
|
26
|
+
}[];
|
|
27
|
+
}>;
|
|
28
|
+
export declare const generateReportTool: ExtensionTool;
|
|
29
|
+
//# sourceMappingURL=generate-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-report.d.ts","sourceRoot":"","sources":["../../src/tools/generate-report.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAUpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAYxD;AAED,eAAO,MAAM,kBAAkB,EAAE,aAMhC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for generating an audit report from precomputed analysis/diff/updates JSON.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { generateReport } from '../audit/generate-report.js';
|
|
6
|
+
export const generateReportInputSchema = z.object({
|
|
7
|
+
inputs: z.object({
|
|
8
|
+
analysis: z.string().optional().describe('Path to analysis JSON'),
|
|
9
|
+
diff: z.string().optional().describe('Path to diff JSON'),
|
|
10
|
+
checkUpdates: z.string().optional().describe('Path to update-check JSON'),
|
|
11
|
+
inventory: z.string().optional().describe('Path to component inventory JSON'),
|
|
12
|
+
}),
|
|
13
|
+
outputDir: z.string().optional().describe('Output directory'),
|
|
14
|
+
format: z.enum(['json', 'markdown', 'both']).optional().default('both'),
|
|
15
|
+
title: z.string().optional().describe('Report title'),
|
|
16
|
+
});
|
|
17
|
+
export async function handleGenerateReport(input) {
|
|
18
|
+
const parsed = generateReportInputSchema.parse(input);
|
|
19
|
+
const result = generateReport(parsed);
|
|
20
|
+
const summary = {
|
|
21
|
+
outputDir: result.outputDir,
|
|
22
|
+
jsonPath: result.jsonPath,
|
|
23
|
+
markdownPath: result.markdownPath,
|
|
24
|
+
summary: result.report.summary,
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
content: [{ type: 'text', text: JSON.stringify(summary, null, 2) }],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const generateReportTool = {
|
|
31
|
+
name: 'headless_generate_report',
|
|
32
|
+
description: 'Generate an audit report from precomputed analysis, diff, and/or update-check JSON. Outputs JSON and/or Markdown.',
|
|
33
|
+
inputSchema: generateReportInputSchema,
|
|
34
|
+
handler: handleGenerateReport,
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=generate-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-report.js","sourceRoot":"","sources":["../../src/tools/generate-report.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACjE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACzD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACzE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAC9E,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACvE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CACtD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAc;IAEd,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;KAC/B,CAAC;IACF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,mHAAmH;IACrH,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,oBAAoB;CAC9B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for limps-headless extension.
|
|
3
|
+
*/
|
|
4
|
+
export { listPrimitivesTool, handleListPrimitives, type ListPrimitivesInput, type ListPrimitivesOutput, } from './list-primitives.js';
|
|
5
|
+
export { extractPrimitiveTool, handleExtractPrimitive, type ExtractPrimitiveInput, type ExtractPrimitiveOutput, } from './extract-primitive.js';
|
|
6
|
+
export { analyzeComponentTool, handleAnalyzeComponent, type AnalyzeComponentInput, } from './analyze-component.js';
|
|
7
|
+
export { diffVersionsTool, diffVersionsInputSchema, handleDiffVersions, type DiffVersionsInput, type DiffVersionsOutput, } from './diff-versions.js';
|
|
8
|
+
export { checkUpdatesTool, checkUpdatesInputSchema, handleCheckUpdates, type CheckUpdatesInput, type CheckUpdatesOutput, } from './check-updates.js';
|
|
9
|
+
export { runAuditTool, runAuditInputSchema, handleRunAudit, type RunAuditInput, } from './run-audit.js';
|
|
10
|
+
export { generateReportTool, generateReportInputSchema, handleGenerateReport, type GenerateReportInput, } from './generate-report.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for limps-headless extension.
|
|
3
|
+
*/
|
|
4
|
+
export { listPrimitivesTool, handleListPrimitives, } from './list-primitives.js';
|
|
5
|
+
export { extractPrimitiveTool, handleExtractPrimitive, } from './extract-primitive.js';
|
|
6
|
+
export { analyzeComponentTool, handleAnalyzeComponent, } from './analyze-component.js';
|
|
7
|
+
export { diffVersionsTool, diffVersionsInputSchema, handleDiffVersions, } from './diff-versions.js';
|
|
8
|
+
export { checkUpdatesTool, checkUpdatesInputSchema, handleCheckUpdates, } from './check-updates.js';
|
|
9
|
+
export { runAuditTool, runAuditInputSchema, handleRunAudit, } from './run-audit.js';
|
|
10
|
+
export { generateReportTool, generateReportInputSchema, handleGenerateReport, } from './generate-report.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,cAAc,GAEf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,GAErB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for listing all available Radix UI primitives.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import type { ExtensionTool } from '@sudosandwich/limps/extensions';
|
|
6
|
+
/**
|
|
7
|
+
* Input schema for headless_list_primitives tool.
|
|
8
|
+
*/
|
|
9
|
+
export declare const listPrimitivesInputSchema: z.ZodObject<{
|
|
10
|
+
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
11
|
+
provider: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type ListPrimitivesInput = z.infer<typeof listPrimitivesInputSchema>;
|
|
14
|
+
/**
|
|
15
|
+
* Output schema for headless_list_primitives tool.
|
|
16
|
+
*/
|
|
17
|
+
export interface ListPrimitivesOutput {
|
|
18
|
+
version: string;
|
|
19
|
+
primitives: {
|
|
20
|
+
name: string;
|
|
21
|
+
package: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
}[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Handler for the headless_list_primitives tool.
|
|
27
|
+
*
|
|
28
|
+
* @param input - Tool input parameters
|
|
29
|
+
* @returns List of primitives with metadata
|
|
30
|
+
*/
|
|
31
|
+
export declare function handleListPrimitives(input: unknown): Promise<{
|
|
32
|
+
content: {
|
|
33
|
+
type: 'text';
|
|
34
|
+
text: string;
|
|
35
|
+
}[];
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* MCP tool definition for listing Radix primitives.
|
|
39
|
+
*/
|
|
40
|
+
export declare const listPrimitivesTool: ExtensionTool;
|
|
41
|
+
//# sourceMappingURL=list-primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-primitives.d.ts","sourceRoot":"","sources":["../../src/tools/list-primitives.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;iBAWpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;CACL;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CA2CxD;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAMhC,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for listing all available Radix UI primitives.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { listPrimitives, resolvePackage } from '../fetcher/index.js';
|
|
6
|
+
import { getProvider } from '../providers/registry.js';
|
|
7
|
+
/**
|
|
8
|
+
* Input schema for headless_list_primitives tool.
|
|
9
|
+
*/
|
|
10
|
+
export const listPrimitivesInputSchema = z.object({
|
|
11
|
+
version: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.default('latest')
|
|
15
|
+
.describe('Radix version (default: latest)'),
|
|
16
|
+
provider: z
|
|
17
|
+
.string()
|
|
18
|
+
.optional()
|
|
19
|
+
.default('radix')
|
|
20
|
+
.describe('Component library provider (default: radix)'),
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Handler for the headless_list_primitives tool.
|
|
24
|
+
*
|
|
25
|
+
* @param input - Tool input parameters
|
|
26
|
+
* @returns List of primitives with metadata
|
|
27
|
+
*/
|
|
28
|
+
export async function handleListPrimitives(input) {
|
|
29
|
+
const parsed = listPrimitivesInputSchema.parse(input);
|
|
30
|
+
const versionHint = parsed.version || 'latest';
|
|
31
|
+
const provider = getProvider(parsed.provider);
|
|
32
|
+
if (provider.name !== 'radix') {
|
|
33
|
+
const resolvedVersion = await provider.resolveVersion(versionHint);
|
|
34
|
+
const primitives = await provider.listPrimitives(resolvedVersion);
|
|
35
|
+
const output = {
|
|
36
|
+
version: resolvedVersion,
|
|
37
|
+
primitives: primitives.map((name) => ({
|
|
38
|
+
name,
|
|
39
|
+
package: provider.name,
|
|
40
|
+
})),
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Detect if unified package is available for this version
|
|
47
|
+
const resolved = await resolvePackage('dialog', versionHint);
|
|
48
|
+
const resolvedVersion = resolved.version;
|
|
49
|
+
const useUnified = resolved.source === 'unified';
|
|
50
|
+
// Get all primitives
|
|
51
|
+
const primitives = await listPrimitives(resolvedVersion);
|
|
52
|
+
const output = {
|
|
53
|
+
version: resolvedVersion,
|
|
54
|
+
primitives: primitives.map((p) => ({
|
|
55
|
+
name: p.name,
|
|
56
|
+
// Use unified package name if available, otherwise individual package
|
|
57
|
+
package: useUnified ? 'radix-ui' : p.package,
|
|
58
|
+
description: p.description,
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* MCP tool definition for listing Radix primitives.
|
|
67
|
+
*/
|
|
68
|
+
export const listPrimitivesTool = {
|
|
69
|
+
name: 'headless_list_primitives',
|
|
70
|
+
description: 'List all available Radix UI primitives with their package names and descriptions',
|
|
71
|
+
inputSchema: listPrimitivesInputSchema,
|
|
72
|
+
handler: handleListPrimitives,
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=list-primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-primitives.js","sourceRoot":"","sources":["../../src/tools/list-primitives.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC,CAAC;AAgBH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAc;IAEd,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAElE,MAAM,MAAM,GAAyB;YACnC,OAAO,EAAE,eAAe;YACxB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI;gBACJ,OAAO,EAAE,QAAQ,CAAC,IAAI;aACvB,CAAC,CAAC;SACJ,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;IACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;IAEjD,qBAAqB;IACrB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAyB;QACnC,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,sEAAsE;YACtE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;YAC5C,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;KACJ,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,kFAAkF;IACpF,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,oBAAoB;CAC9B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for running a full Radix audit (analysis + diff + report).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import type { ExtensionTool } from '@sudosandwich/limps/extensions';
|
|
6
|
+
export declare const runAuditInputSchema: z.ZodObject<{
|
|
7
|
+
scope: z.ZodOptional<z.ZodObject<{
|
|
8
|
+
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
9
|
+
primitives: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
10
|
+
provider: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
11
|
+
}, z.core.$strip>>;
|
|
12
|
+
discovery: z.ZodOptional<z.ZodObject<{
|
|
13
|
+
rootDir: z.ZodOptional<z.ZodString>;
|
|
14
|
+
includePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
|
+
excludePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
16
|
+
}, z.core.$strip>>;
|
|
17
|
+
radixVersion: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
18
|
+
outputDir: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
19
|
+
format: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
20
|
+
both: "both";
|
|
21
|
+
json: "json";
|
|
22
|
+
markdown: "markdown";
|
|
23
|
+
}>>>;
|
|
24
|
+
ruleset: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
25
|
+
"radix-legacy": "radix-legacy";
|
|
26
|
+
both: "both";
|
|
27
|
+
"base-ui": "base-ui";
|
|
28
|
+
}>>>;
|
|
29
|
+
evidence: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
30
|
+
summary: "summary";
|
|
31
|
+
verbose: "verbose";
|
|
32
|
+
}>>>;
|
|
33
|
+
debugIr: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export type RunAuditInput = z.infer<typeof runAuditInputSchema>;
|
|
36
|
+
export declare function handleRunAudit(input: unknown): Promise<{
|
|
37
|
+
content: {
|
|
38
|
+
type: 'text';
|
|
39
|
+
text: string;
|
|
40
|
+
}[];
|
|
41
|
+
}>;
|
|
42
|
+
export declare const runAuditTool: ExtensionTool;
|
|
43
|
+
//# sourceMappingURL=run-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-audit.d.ts","sourceRoot":"","sources":["../../src/tools/run-audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6B9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAsB,cAAc,CAClC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAiBxD;AAED,eAAO,MAAM,YAAY,EAAE,aAM1B,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for running a full Radix audit (analysis + diff + report).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { runAudit } from '../audit/run-audit.js';
|
|
6
|
+
export const runAuditInputSchema = z.object({
|
|
7
|
+
scope: z
|
|
8
|
+
.object({
|
|
9
|
+
files: z.array(z.string()).optional().describe('File paths to analyze'),
|
|
10
|
+
primitives: z.array(z.string()).optional().describe('Primitives subset'),
|
|
11
|
+
provider: z.string().optional().default('radix'),
|
|
12
|
+
})
|
|
13
|
+
.optional(),
|
|
14
|
+
discovery: z
|
|
15
|
+
.object({
|
|
16
|
+
rootDir: z.string().optional().describe('Root directory for discovery'),
|
|
17
|
+
includePatterns: z.array(z.string()).optional().describe('File include patterns'),
|
|
18
|
+
excludePatterns: z.array(z.string()).optional().describe('File exclude patterns'),
|
|
19
|
+
})
|
|
20
|
+
.optional(),
|
|
21
|
+
radixVersion: z.string().optional().default('latest').describe('Radix version (default: latest)'),
|
|
22
|
+
outputDir: z.string().optional().default('.limps-headless/reports').describe('Output directory'),
|
|
23
|
+
format: z.enum(['json', 'markdown', 'both']).optional().default('both'),
|
|
24
|
+
ruleset: z
|
|
25
|
+
.enum(['base-ui', 'radix-legacy', 'both'])
|
|
26
|
+
.optional()
|
|
27
|
+
.default('base-ui')
|
|
28
|
+
.describe('Ruleset selection for evidence evaluation'),
|
|
29
|
+
evidence: z
|
|
30
|
+
.enum(['summary', 'verbose'])
|
|
31
|
+
.optional()
|
|
32
|
+
.default('summary')
|
|
33
|
+
.describe('Evidence verbosity in output'),
|
|
34
|
+
debugIr: z.boolean().optional().default(false).describe('Write IR dump to output directory'),
|
|
35
|
+
});
|
|
36
|
+
export async function handleRunAudit(input) {
|
|
37
|
+
const parsed = runAuditInputSchema.parse(input);
|
|
38
|
+
const result = await runAudit(parsed);
|
|
39
|
+
const summary = {
|
|
40
|
+
outputDir: result.outputDir,
|
|
41
|
+
jsonPath: result.jsonPath,
|
|
42
|
+
markdownPath: result.markdownPath,
|
|
43
|
+
analysisPath: result.analysisPath,
|
|
44
|
+
irPath: result.irPath,
|
|
45
|
+
diffPath: result.diffPath,
|
|
46
|
+
updatesPath: result.updatesPath,
|
|
47
|
+
inventoryPath: result.inventoryPath,
|
|
48
|
+
summary: result.report.summary,
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
content: [{ type: 'text', text: JSON.stringify(summary, null, 2) }],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export const runAuditTool = {
|
|
55
|
+
name: 'headless_run_audit',
|
|
56
|
+
description: 'Run a full Radix audit: discover components (if no files), analyze against Radix, diff versions, check updates, and generate JSON + Markdown report.',
|
|
57
|
+
inputSchema: runAuditInputSchema,
|
|
58
|
+
handler: handleRunAudit,
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=run-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-audit.js","sourceRoot":"","sources":["../../src/tools/run-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for limps-headless extension.
|
|
3
|
+
*/
|
|
4
|
+
import type { ComponentIR } from '../analysis/ir/types.js';
|
|
5
|
+
import type { EvaluationResult } from '../rules/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Raw extraction from Radix .d.ts files
|
|
8
|
+
*/
|
|
9
|
+
export interface ExtractedPrimitive {
|
|
10
|
+
name: string;
|
|
11
|
+
package: string;
|
|
12
|
+
version: string;
|
|
13
|
+
extractedAt: string;
|
|
14
|
+
rootProps: PropDefinition[];
|
|
15
|
+
subComponents: SubComponentDefinition[];
|
|
16
|
+
exports: string[];
|
|
17
|
+
usesContext: boolean;
|
|
18
|
+
contextShape?: PropDefinition[];
|
|
19
|
+
}
|
|
20
|
+
export interface SubComponentDefinition {
|
|
21
|
+
name: string;
|
|
22
|
+
props: PropDefinition[];
|
|
23
|
+
isRequired: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface PropDefinition {
|
|
26
|
+
name: string;
|
|
27
|
+
type: string;
|
|
28
|
+
required: boolean;
|
|
29
|
+
defaultValue?: string;
|
|
30
|
+
description?: string;
|
|
31
|
+
isStateControl: boolean;
|
|
32
|
+
isEventHandler: boolean;
|
|
33
|
+
isConfiguration: boolean;
|
|
34
|
+
isComposition: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Raw prop before classification
|
|
38
|
+
*/
|
|
39
|
+
export interface RawProp {
|
|
40
|
+
name: string;
|
|
41
|
+
type: string;
|
|
42
|
+
required: boolean;
|
|
43
|
+
defaultValue?: string;
|
|
44
|
+
description?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Semantic behavioral contract - what we compare components against
|
|
48
|
+
*/
|
|
49
|
+
export interface BehaviorSignature {
|
|
50
|
+
primitive: string;
|
|
51
|
+
package: string;
|
|
52
|
+
version: string;
|
|
53
|
+
statePattern: StatePattern;
|
|
54
|
+
compositionPattern: CompositionPattern;
|
|
55
|
+
renderingPattern: RenderingPattern;
|
|
56
|
+
distinguishingProps: string[];
|
|
57
|
+
antiPatternProps: string[];
|
|
58
|
+
subComponents: {
|
|
59
|
+
name: string;
|
|
60
|
+
role: 'trigger' | 'content' | 'overlay' | 'item' | 'indicator' | 'other';
|
|
61
|
+
required: boolean;
|
|
62
|
+
}[];
|
|
63
|
+
similarTo: string[];
|
|
64
|
+
disambiguationRule?: string;
|
|
65
|
+
}
|
|
66
|
+
export type StatePattern = 'binary' | 'single-value' | 'multi-value' | 'range' | 'text' | 'none';
|
|
67
|
+
export type CompositionPattern = 'monolithic' | 'compound' | 'provider';
|
|
68
|
+
export type RenderingPattern = 'inline' | 'portal' | 'conditional' | 'portal-conditional';
|
|
69
|
+
/**
|
|
70
|
+
* Package info from npm registry
|
|
71
|
+
*/
|
|
72
|
+
export interface PackageInfo {
|
|
73
|
+
name: string;
|
|
74
|
+
version: string;
|
|
75
|
+
distTags: Record<string, string>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Primitive info for listing
|
|
79
|
+
*/
|
|
80
|
+
export interface PrimitiveInfo {
|
|
81
|
+
name: string;
|
|
82
|
+
package: string;
|
|
83
|
+
description?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Result of analyzing a local component
|
|
87
|
+
*/
|
|
88
|
+
export interface ComponentAnalysis {
|
|
89
|
+
name: string;
|
|
90
|
+
filePath: string;
|
|
91
|
+
propsInterface: Map<string, PropDefinition>;
|
|
92
|
+
subComponents: string[];
|
|
93
|
+
inferredStatePattern: StatePattern;
|
|
94
|
+
inferredCompositionPattern: CompositionPattern;
|
|
95
|
+
inferredRenderingPattern: RenderingPattern;
|
|
96
|
+
usesForwardRef: boolean;
|
|
97
|
+
hasAsChild: boolean;
|
|
98
|
+
ariaRoles: string[];
|
|
99
|
+
dataAttributes: string[];
|
|
100
|
+
ir?: ComponentIR;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Match result with confidence scoring
|
|
104
|
+
*/
|
|
105
|
+
export interface PrimitiveMatch {
|
|
106
|
+
primitive: string;
|
|
107
|
+
package: string;
|
|
108
|
+
confidence: number;
|
|
109
|
+
breakdown: {
|
|
110
|
+
statePatternScore: number;
|
|
111
|
+
compositionScore: number;
|
|
112
|
+
propsSignatureScore: number;
|
|
113
|
+
accessibilityScore: number;
|
|
114
|
+
renderingScore: number;
|
|
115
|
+
};
|
|
116
|
+
signals: {
|
|
117
|
+
matched: string[];
|
|
118
|
+
missing: string[];
|
|
119
|
+
antiPatterns: string[];
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Final recommendation
|
|
124
|
+
*/
|
|
125
|
+
export interface AnalysisResult {
|
|
126
|
+
component: string;
|
|
127
|
+
filePath: string;
|
|
128
|
+
recommendation: {
|
|
129
|
+
primitive: string | null;
|
|
130
|
+
package: string | null;
|
|
131
|
+
confidence: number;
|
|
132
|
+
action: 'LEGACY_RADIX_MATCH_STRONG' | 'LEGACY_RADIX_MATCH_POSSIBLE' | 'NO_LEGACY_RADIX_MATCH';
|
|
133
|
+
reason?: string;
|
|
134
|
+
};
|
|
135
|
+
matches: PrimitiveMatch[];
|
|
136
|
+
analysis: ComponentAnalysis;
|
|
137
|
+
isAmbiguous: boolean;
|
|
138
|
+
rules?: {
|
|
139
|
+
baseUi?: EvaluationResult;
|
|
140
|
+
radixLegacy?: EvaluationResult;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=index.d.ts.map
|