@fragments-sdk/cli 0.2.2
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 +106 -0
- package/dist/bin.d.ts +1 -0
- package/dist/bin.js +4783 -0
- package/dist/bin.js.map +1 -0
- package/dist/chunk-4FDQSGKX.js +786 -0
- package/dist/chunk-4FDQSGKX.js.map +1 -0
- package/dist/chunk-7H2MMGYG.js +369 -0
- package/dist/chunk-7H2MMGYG.js.map +1 -0
- package/dist/chunk-BSCG3IP7.js +619 -0
- package/dist/chunk-BSCG3IP7.js.map +1 -0
- package/dist/chunk-LY2CFFPY.js +898 -0
- package/dist/chunk-LY2CFFPY.js.map +1 -0
- package/dist/chunk-MUZ6CM66.js +6636 -0
- package/dist/chunk-MUZ6CM66.js.map +1 -0
- package/dist/chunk-OAENNG3G.js +1489 -0
- package/dist/chunk-OAENNG3G.js.map +1 -0
- package/dist/chunk-XHNKNI6J.js +235 -0
- package/dist/chunk-XHNKNI6J.js.map +1 -0
- package/dist/core-DWKLGY4N.js +68 -0
- package/dist/core-DWKLGY4N.js.map +1 -0
- package/dist/generate-4LQNJ7SX.js +249 -0
- package/dist/generate-4LQNJ7SX.js.map +1 -0
- package/dist/index.d.ts +775 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/init-EMVI47QG.js +416 -0
- package/dist/init-EMVI47QG.js.map +1 -0
- package/dist/mcp-bin.d.ts +1 -0
- package/dist/mcp-bin.js +1117 -0
- package/dist/mcp-bin.js.map +1 -0
- package/dist/scan-4YPRF7FV.js +12 -0
- package/dist/scan-4YPRF7FV.js.map +1 -0
- package/dist/service-QSZMZJBJ.js +208 -0
- package/dist/service-QSZMZJBJ.js.map +1 -0
- package/dist/static-viewer-MIPGZ4Z7.js +12 -0
- package/dist/static-viewer-MIPGZ4Z7.js.map +1 -0
- package/dist/test-SQ5ZHXWU.js +1067 -0
- package/dist/test-SQ5ZHXWU.js.map +1 -0
- package/dist/tokens-HSGMYK64.js +173 -0
- package/dist/tokens-HSGMYK64.js.map +1 -0
- package/dist/viewer-YRF4SQE4.js +11101 -0
- package/dist/viewer-YRF4SQE4.js.map +1 -0
- package/package.json +107 -0
- package/src/ai.ts +266 -0
- package/src/analyze.ts +265 -0
- package/src/bin.ts +916 -0
- package/src/build.ts +248 -0
- package/src/commands/a11y.ts +302 -0
- package/src/commands/add.ts +313 -0
- package/src/commands/audit.ts +195 -0
- package/src/commands/baseline.ts +221 -0
- package/src/commands/build.ts +144 -0
- package/src/commands/compare.ts +337 -0
- package/src/commands/context.ts +107 -0
- package/src/commands/dev.ts +107 -0
- package/src/commands/enhance.ts +858 -0
- package/src/commands/generate.ts +391 -0
- package/src/commands/init.ts +531 -0
- package/src/commands/link/figma.ts +645 -0
- package/src/commands/link/index.ts +10 -0
- package/src/commands/link/storybook.ts +267 -0
- package/src/commands/list.ts +49 -0
- package/src/commands/metrics.ts +114 -0
- package/src/commands/reset.ts +242 -0
- package/src/commands/scan.ts +537 -0
- package/src/commands/storygen.ts +207 -0
- package/src/commands/tokens.ts +251 -0
- package/src/commands/validate.ts +93 -0
- package/src/commands/verify.ts +215 -0
- package/src/core/composition.test.ts +262 -0
- package/src/core/composition.ts +255 -0
- package/src/core/config.ts +84 -0
- package/src/core/constants.ts +111 -0
- package/src/core/context.ts +380 -0
- package/src/core/defineSegment.ts +137 -0
- package/src/core/discovery.ts +337 -0
- package/src/core/figma.ts +263 -0
- package/src/core/fragment-types.ts +214 -0
- package/src/core/generators/context.ts +389 -0
- package/src/core/generators/index.ts +23 -0
- package/src/core/generators/registry.ts +364 -0
- package/src/core/generators/typescript-extractor.ts +374 -0
- package/src/core/importAnalyzer.ts +217 -0
- package/src/core/index.ts +149 -0
- package/src/core/loader.ts +155 -0
- package/src/core/node.ts +63 -0
- package/src/core/parser.ts +551 -0
- package/src/core/previewLoader.ts +172 -0
- package/src/core/schema/fragment.schema.json +189 -0
- package/src/core/schema/registry.schema.json +137 -0
- package/src/core/schema.ts +182 -0
- package/src/core/storyAdapter.test.ts +571 -0
- package/src/core/storyAdapter.ts +761 -0
- package/src/core/token-types.ts +287 -0
- package/src/core/types.ts +754 -0
- package/src/diff.ts +323 -0
- package/src/index.ts +43 -0
- package/src/mcp/__tests__/projectFields.test.ts +130 -0
- package/src/mcp/bin.ts +36 -0
- package/src/mcp/index.ts +8 -0
- package/src/mcp/server.ts +1310 -0
- package/src/mcp/utils.ts +54 -0
- package/src/mcp-bin.ts +36 -0
- package/src/migrate/__tests__/argTypes/argTypes.test.ts +189 -0
- package/src/migrate/__tests__/args/args.test.ts +452 -0
- package/src/migrate/__tests__/meta/meta.test.ts +198 -0
- package/src/migrate/__tests__/stories/stories.test.ts +278 -0
- package/src/migrate/__tests__/utils/utils.test.ts +371 -0
- package/src/migrate/__tests__/values/values.test.ts +303 -0
- package/src/migrate/bin.ts +108 -0
- package/src/migrate/converter.ts +658 -0
- package/src/migrate/detect.ts +196 -0
- package/src/migrate/index.ts +45 -0
- package/src/migrate/migrate.ts +163 -0
- package/src/migrate/parser.ts +1136 -0
- package/src/migrate/report.ts +624 -0
- package/src/migrate/types.ts +169 -0
- package/src/screenshot.ts +249 -0
- package/src/service/__tests__/ast-utils.test.ts +426 -0
- package/src/service/__tests__/enhance-scanner.test.ts +200 -0
- package/src/service/__tests__/figma/figma.test.ts +652 -0
- package/src/service/__tests__/metrics-store.test.ts +409 -0
- package/src/service/__tests__/patch-generator.test.ts +186 -0
- package/src/service/__tests__/props-extractor.test.ts +365 -0
- package/src/service/__tests__/token-registry.test.ts +267 -0
- package/src/service/analytics.ts +659 -0
- package/src/service/ast-utils.ts +444 -0
- package/src/service/browser-pool.ts +339 -0
- package/src/service/capture.ts +267 -0
- package/src/service/diff.ts +279 -0
- package/src/service/enhance/aggregator.ts +489 -0
- package/src/service/enhance/cache.ts +275 -0
- package/src/service/enhance/codebase-scanner.ts +357 -0
- package/src/service/enhance/context-generator.ts +529 -0
- package/src/service/enhance/doc-extractor.ts +523 -0
- package/src/service/enhance/index.ts +131 -0
- package/src/service/enhance/props-extractor.ts +665 -0
- package/src/service/enhance/scanner.ts +445 -0
- package/src/service/enhance/storybook-parser.ts +552 -0
- package/src/service/enhance/types.ts +346 -0
- package/src/service/enhance/variant-renderer.ts +479 -0
- package/src/service/figma.ts +1008 -0
- package/src/service/index.ts +249 -0
- package/src/service/metrics-store.ts +333 -0
- package/src/service/patch-generator.ts +349 -0
- package/src/service/report.ts +854 -0
- package/src/service/storage.ts +401 -0
- package/src/service/token-fixes.ts +281 -0
- package/src/service/token-parser.ts +504 -0
- package/src/service/token-registry.ts +721 -0
- package/src/service/utils.ts +172 -0
- package/src/setup.ts +241 -0
- package/src/shared/command-wrapper.ts +81 -0
- package/src/shared/dev-server-client.ts +199 -0
- package/src/shared/index.ts +8 -0
- package/src/shared/segment-loader.ts +59 -0
- package/src/shared/types.ts +147 -0
- package/src/static-viewer.ts +715 -0
- package/src/test/discovery.ts +172 -0
- package/src/test/index.ts +281 -0
- package/src/test/reporters/console.ts +194 -0
- package/src/test/reporters/json.ts +190 -0
- package/src/test/reporters/junit.ts +186 -0
- package/src/test/runner.ts +598 -0
- package/src/test/types.ts +245 -0
- package/src/test/watch.ts +200 -0
- package/src/validators.ts +152 -0
- package/src/viewer/__tests__/jsx-parser.test.ts +502 -0
- package/src/viewer/__tests__/render-utils.test.ts +232 -0
- package/src/viewer/__tests__/style-utils.test.ts +404 -0
- package/src/viewer/bin.ts +86 -0
- package/src/viewer/cli/health.ts +256 -0
- package/src/viewer/cli/index.ts +33 -0
- package/src/viewer/cli/scan.ts +124 -0
- package/src/viewer/cli/utils.ts +174 -0
- package/src/viewer/components/AccessibilityPanel.tsx +1404 -0
- package/src/viewer/components/ActionCapture.tsx +172 -0
- package/src/viewer/components/ActionsPanel.tsx +371 -0
- package/src/viewer/components/App.tsx +638 -0
- package/src/viewer/components/BottomPanel.tsx +224 -0
- package/src/viewer/components/CodePanel.tsx +589 -0
- package/src/viewer/components/CommandPalette.tsx +336 -0
- package/src/viewer/components/ComponentGraph.tsx +394 -0
- package/src/viewer/components/ComponentHeader.tsx +85 -0
- package/src/viewer/components/ContractPanel.tsx +234 -0
- package/src/viewer/components/ErrorBoundary.tsx +85 -0
- package/src/viewer/components/FigmaEmbed.tsx +231 -0
- package/src/viewer/components/FragmentEditor.tsx +485 -0
- package/src/viewer/components/HealthDashboard.tsx +452 -0
- package/src/viewer/components/HmrStatusIndicator.tsx +71 -0
- package/src/viewer/components/Icons.tsx +417 -0
- package/src/viewer/components/InteractionsPanel.tsx +720 -0
- package/src/viewer/components/IsolatedPreviewFrame.tsx +321 -0
- package/src/viewer/components/IsolatedRender.tsx +111 -0
- package/src/viewer/components/KeyboardShortcutsHelp.tsx +89 -0
- package/src/viewer/components/LandingPage.tsx +441 -0
- package/src/viewer/components/Layout.tsx +22 -0
- package/src/viewer/components/LeftSidebar.tsx +391 -0
- package/src/viewer/components/MultiViewportPreview.tsx +429 -0
- package/src/viewer/components/PreviewArea.tsx +404 -0
- package/src/viewer/components/PreviewFrameHost.tsx +310 -0
- package/src/viewer/components/PreviewPane.tsx +150 -0
- package/src/viewer/components/PreviewToolbar.tsx +176 -0
- package/src/viewer/components/PropsEditor.tsx +512 -0
- package/src/viewer/components/PropsTable.tsx +98 -0
- package/src/viewer/components/RelationsSection.tsx +57 -0
- package/src/viewer/components/ResizablePanel.tsx +328 -0
- package/src/viewer/components/RightSidebar.tsx +118 -0
- package/src/viewer/components/ScreenshotButton.tsx +90 -0
- package/src/viewer/components/Sidebar.tsx +169 -0
- package/src/viewer/components/SkeletonLoader.tsx +156 -0
- package/src/viewer/components/StoryRenderer.tsx +128 -0
- package/src/viewer/components/ThemeProvider.tsx +96 -0
- package/src/viewer/components/Toast.tsx +67 -0
- package/src/viewer/components/TokenStylePanel.tsx +708 -0
- package/src/viewer/components/UsageSection.tsx +95 -0
- package/src/viewer/components/VariantMatrix.tsx +350 -0
- package/src/viewer/components/VariantRenderer.tsx +131 -0
- package/src/viewer/components/VariantTabs.tsx +84 -0
- package/src/viewer/components/ViewportSelector.tsx +165 -0
- package/src/viewer/components/_future/CreatePage.tsx +836 -0
- package/src/viewer/composition-renderer.ts +381 -0
- package/src/viewer/constants/index.ts +1 -0
- package/src/viewer/constants/ui.ts +185 -0
- package/src/viewer/entry.tsx +299 -0
- package/src/viewer/hooks/index.ts +2 -0
- package/src/viewer/hooks/useA11yCache.ts +383 -0
- package/src/viewer/hooks/useA11yService.ts +498 -0
- package/src/viewer/hooks/useActions.ts +138 -0
- package/src/viewer/hooks/useAppState.ts +124 -0
- package/src/viewer/hooks/useFigmaIntegration.ts +132 -0
- package/src/viewer/hooks/useHmrStatus.ts +109 -0
- package/src/viewer/hooks/useKeyboardShortcuts.ts +222 -0
- package/src/viewer/hooks/usePreviewBridge.ts +347 -0
- package/src/viewer/hooks/useScrollSpy.ts +78 -0
- package/src/viewer/hooks/useUrlState.ts +330 -0
- package/src/viewer/hooks/useViewSettings.ts +125 -0
- package/src/viewer/index.html +28 -0
- package/src/viewer/index.ts +14 -0
- package/src/viewer/intelligence/healthReport.ts +505 -0
- package/src/viewer/intelligence/styleDrift.ts +340 -0
- package/src/viewer/intelligence/usageScanner.ts +309 -0
- package/src/viewer/jsx-parser.ts +485 -0
- package/src/viewer/postcss.config.js +6 -0
- package/src/viewer/preview-frame-entry.tsx +25 -0
- package/src/viewer/preview-frame.html +109 -0
- package/src/viewer/render-template.html +68 -0
- package/src/viewer/render-utils.ts +170 -0
- package/src/viewer/server.ts +276 -0
- package/src/viewer/style-utils.ts +414 -0
- package/src/viewer/styles/globals.css +355 -0
- package/src/viewer/tailwind.config.js +37 -0
- package/src/viewer/types/a11y.ts +197 -0
- package/src/viewer/utils/a11y-fixes.ts +471 -0
- package/src/viewer/utils/actionExport.ts +372 -0
- package/src/viewer/utils/colorSchemes.ts +201 -0
- package/src/viewer/utils/detectRelationships.ts +256 -0
- package/src/viewer/vite-plugin.ts +2143 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhancement Types
|
|
3
|
+
*
|
|
4
|
+
* Data models for codebase analysis and AI-powered documentation generation.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A single usage of a component in a file
|
|
9
|
+
*/
|
|
10
|
+
export interface ComponentUsage {
|
|
11
|
+
/** Name of the component being used */
|
|
12
|
+
componentName: string;
|
|
13
|
+
|
|
14
|
+
/** File path where this usage occurs */
|
|
15
|
+
filePath: string;
|
|
16
|
+
|
|
17
|
+
/** Line number (1-indexed) */
|
|
18
|
+
line: number;
|
|
19
|
+
|
|
20
|
+
/** Column number (0-indexed) */
|
|
21
|
+
column: number;
|
|
22
|
+
|
|
23
|
+
/** Props passed to this usage */
|
|
24
|
+
props: UsageProps;
|
|
25
|
+
|
|
26
|
+
/** 3 lines of surrounding code for context */
|
|
27
|
+
context: string;
|
|
28
|
+
|
|
29
|
+
/** Parent JSX element name (if nested) */
|
|
30
|
+
parentElement?: string;
|
|
31
|
+
|
|
32
|
+
/** Whether this usage has spread props {...props} */
|
|
33
|
+
hasSpreadProps: boolean;
|
|
34
|
+
|
|
35
|
+
/** Whether this is conditionally rendered */
|
|
36
|
+
isConditional: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Props extracted from a component usage
|
|
41
|
+
*/
|
|
42
|
+
export interface UsageProps {
|
|
43
|
+
/** Static prop values: { variant: "primary", disabled: true } */
|
|
44
|
+
static: Record<string, string | boolean | number>;
|
|
45
|
+
|
|
46
|
+
/** Dynamic prop names (values computed at runtime) */
|
|
47
|
+
dynamic: string[];
|
|
48
|
+
|
|
49
|
+
/** Spread prop variable names */
|
|
50
|
+
spreads: string[];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Import information for a component
|
|
55
|
+
*/
|
|
56
|
+
export interface ComponentImport {
|
|
57
|
+
/** Name of the imported component */
|
|
58
|
+
componentName: string;
|
|
59
|
+
|
|
60
|
+
/** Local alias if renamed: import { Button as Btn } */
|
|
61
|
+
localName: string;
|
|
62
|
+
|
|
63
|
+
/** Source module path */
|
|
64
|
+
source: string;
|
|
65
|
+
|
|
66
|
+
/** Whether this is a default import */
|
|
67
|
+
isDefault: boolean;
|
|
68
|
+
|
|
69
|
+
/** File where this import was found */
|
|
70
|
+
filePath: string;
|
|
71
|
+
|
|
72
|
+
/** Line number of the import */
|
|
73
|
+
line: number;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Aggregated usage pattern for a variant/prop combination
|
|
78
|
+
*/
|
|
79
|
+
export interface UsagePattern {
|
|
80
|
+
/** The prop combination that defines this pattern */
|
|
81
|
+
props: Record<string, string | boolean | number>;
|
|
82
|
+
|
|
83
|
+
/** Number of times this pattern appears */
|
|
84
|
+
count: number;
|
|
85
|
+
|
|
86
|
+
/** Files where this pattern is used */
|
|
87
|
+
files: string[];
|
|
88
|
+
|
|
89
|
+
/** Sample contexts (up to 3) */
|
|
90
|
+
sampleContexts: string[];
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* File context classification
|
|
95
|
+
*/
|
|
96
|
+
export type FileContext =
|
|
97
|
+
| "form"
|
|
98
|
+
| "modal"
|
|
99
|
+
| "page"
|
|
100
|
+
| "layout"
|
|
101
|
+
| "card"
|
|
102
|
+
| "list"
|
|
103
|
+
| "table"
|
|
104
|
+
| "navigation"
|
|
105
|
+
| "header"
|
|
106
|
+
| "footer"
|
|
107
|
+
| "sidebar"
|
|
108
|
+
| "dialog"
|
|
109
|
+
| "unknown";
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Analysis results for a single component
|
|
113
|
+
*/
|
|
114
|
+
export interface ComponentAnalysis {
|
|
115
|
+
/** Component name */
|
|
116
|
+
name: string;
|
|
117
|
+
|
|
118
|
+
/** Source file where component is defined */
|
|
119
|
+
sourceFile: string;
|
|
120
|
+
|
|
121
|
+
/** Total number of usages across codebase */
|
|
122
|
+
totalUsages: number;
|
|
123
|
+
|
|
124
|
+
/** Number of unique files using this component */
|
|
125
|
+
uniqueFiles: number;
|
|
126
|
+
|
|
127
|
+
/** Usage patterns sorted by frequency */
|
|
128
|
+
patterns: UsagePattern[];
|
|
129
|
+
|
|
130
|
+
/** File contexts where component is used */
|
|
131
|
+
contexts: {
|
|
132
|
+
type: FileContext;
|
|
133
|
+
count: number;
|
|
134
|
+
files: string[];
|
|
135
|
+
}[];
|
|
136
|
+
|
|
137
|
+
/** All individual usages (for detailed analysis) */
|
|
138
|
+
usages: ComponentUsage[];
|
|
139
|
+
|
|
140
|
+
/** Imports that reference this component */
|
|
141
|
+
imports: ComponentImport[];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Full codebase analysis results
|
|
146
|
+
*/
|
|
147
|
+
export interface UsageAnalysis {
|
|
148
|
+
/** Timestamp of analysis */
|
|
149
|
+
timestamp: string;
|
|
150
|
+
|
|
151
|
+
/** Root directory analyzed */
|
|
152
|
+
rootDir: string;
|
|
153
|
+
|
|
154
|
+
/** Total files scanned */
|
|
155
|
+
totalFiles: number;
|
|
156
|
+
|
|
157
|
+
/** Total components discovered */
|
|
158
|
+
totalComponents: number;
|
|
159
|
+
|
|
160
|
+
/** Analysis per component */
|
|
161
|
+
components: Record<string, ComponentAnalysis>;
|
|
162
|
+
|
|
163
|
+
/** Files that had parse errors (logged but skipped) */
|
|
164
|
+
errorFiles: string[];
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Cache entry for a single file
|
|
169
|
+
*/
|
|
170
|
+
export interface FileCacheEntry {
|
|
171
|
+
/** Content hash (MD5) */
|
|
172
|
+
hash: string;
|
|
173
|
+
|
|
174
|
+
/** When this entry was created */
|
|
175
|
+
timestamp: string;
|
|
176
|
+
|
|
177
|
+
/** Imports found in this file */
|
|
178
|
+
imports: ComponentImport[];
|
|
179
|
+
|
|
180
|
+
/** Usages found in this file */
|
|
181
|
+
usages: ComponentUsage[];
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Full analysis cache
|
|
186
|
+
*/
|
|
187
|
+
export interface AnalysisCache {
|
|
188
|
+
/** Cache version (for invalidation on schema changes) */
|
|
189
|
+
version: number;
|
|
190
|
+
|
|
191
|
+
/** When cache was created */
|
|
192
|
+
createdAt: string;
|
|
193
|
+
|
|
194
|
+
/** When cache was last updated */
|
|
195
|
+
updatedAt: string;
|
|
196
|
+
|
|
197
|
+
/** Root directory this cache is for */
|
|
198
|
+
rootDir: string;
|
|
199
|
+
|
|
200
|
+
/** Per-file cache entries */
|
|
201
|
+
files: Record<string, FileCacheEntry>;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Current cache version - increment when types change
|
|
206
|
+
*/
|
|
207
|
+
export const CACHE_VERSION = 1;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Progress callback for long-running operations
|
|
211
|
+
*/
|
|
212
|
+
export interface ScanProgress {
|
|
213
|
+
/** Current item being processed */
|
|
214
|
+
current: number;
|
|
215
|
+
|
|
216
|
+
/** Total items to process */
|
|
217
|
+
total: number;
|
|
218
|
+
|
|
219
|
+
/** Current file path */
|
|
220
|
+
currentFile: string;
|
|
221
|
+
|
|
222
|
+
/** Phase of scanning */
|
|
223
|
+
phase: "discovering" | "scanning" | "aggregating";
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Scan options
|
|
228
|
+
*/
|
|
229
|
+
export interface ScanOptions {
|
|
230
|
+
/** Root directory to scan */
|
|
231
|
+
rootDir: string;
|
|
232
|
+
|
|
233
|
+
/** Glob patterns for files to include */
|
|
234
|
+
include?: string[];
|
|
235
|
+
|
|
236
|
+
/** Glob patterns for files to exclude */
|
|
237
|
+
exclude?: string[];
|
|
238
|
+
|
|
239
|
+
/** Component names to specifically track (if not provided, discovers all) */
|
|
240
|
+
componentNames?: string[];
|
|
241
|
+
|
|
242
|
+
/** Whether to use cache */
|
|
243
|
+
useCache?: boolean;
|
|
244
|
+
|
|
245
|
+
/** Progress callback */
|
|
246
|
+
onProgress?: (progress: ScanProgress) => void;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* File change detection result
|
|
251
|
+
*/
|
|
252
|
+
export interface FileChanges {
|
|
253
|
+
/** New files not in cache */
|
|
254
|
+
added: string[];
|
|
255
|
+
|
|
256
|
+
/** Modified files (hash mismatch) */
|
|
257
|
+
modified: string[];
|
|
258
|
+
|
|
259
|
+
/** Deleted files (in cache but not on disk) */
|
|
260
|
+
deleted: string[];
|
|
261
|
+
|
|
262
|
+
/** Unchanged files */
|
|
263
|
+
unchanged: string[];
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Documentation extracted from various sources
|
|
268
|
+
*/
|
|
269
|
+
export interface ExtractedDocs {
|
|
270
|
+
/** File path of the component source */
|
|
271
|
+
filePath: string;
|
|
272
|
+
|
|
273
|
+
/** Component name */
|
|
274
|
+
componentName: string;
|
|
275
|
+
|
|
276
|
+
/** Component description */
|
|
277
|
+
description: string;
|
|
278
|
+
|
|
279
|
+
/** Props extracted from TypeScript interface or JSDoc */
|
|
280
|
+
props: Array<{
|
|
281
|
+
name: string;
|
|
282
|
+
type: string;
|
|
283
|
+
description: string;
|
|
284
|
+
required: boolean;
|
|
285
|
+
}>;
|
|
286
|
+
|
|
287
|
+
/** Code examples extracted from JSDoc or Storybook */
|
|
288
|
+
examples: string[];
|
|
289
|
+
|
|
290
|
+
/** JSDoc tags (deprecated, since, version, etc.) */
|
|
291
|
+
tags: Record<string, string>;
|
|
292
|
+
|
|
293
|
+
/** Existing when/whenNot from segment file */
|
|
294
|
+
existingWhen?: string[];
|
|
295
|
+
existingWhenNot?: string[];
|
|
296
|
+
existingGuidelines?: string[];
|
|
297
|
+
|
|
298
|
+
/** Source of documentation */
|
|
299
|
+
sources?: ("jsdoc" | "storybook" | "markdown" | "segment")[];
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* AI-generated enhancement for a component
|
|
304
|
+
*/
|
|
305
|
+
export interface ComponentEnhancement {
|
|
306
|
+
/** Component name */
|
|
307
|
+
componentName: string;
|
|
308
|
+
|
|
309
|
+
/** Suggested improvements grouped by category */
|
|
310
|
+
suggestions: {
|
|
311
|
+
when: string[];
|
|
312
|
+
whenNot: string[];
|
|
313
|
+
examples: string[];
|
|
314
|
+
guidelines?: string[];
|
|
315
|
+
accessibility?: string[];
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
/** Confidence score 0-100 based on data quality */
|
|
319
|
+
confidence: number;
|
|
320
|
+
|
|
321
|
+
/** Reasoning for the suggestions */
|
|
322
|
+
reasoning: string[];
|
|
323
|
+
|
|
324
|
+
/** Number of usages this was based on */
|
|
325
|
+
basedOnUsages?: number;
|
|
326
|
+
|
|
327
|
+
/** Tokens used for this generation */
|
|
328
|
+
tokensUsed?: number;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Result of enhancement batch operation
|
|
333
|
+
*/
|
|
334
|
+
export interface EnhancementResult {
|
|
335
|
+
/** Successfully enhanced components */
|
|
336
|
+
success: Map<string, ComponentEnhancement>;
|
|
337
|
+
|
|
338
|
+
/** Components that failed with error messages */
|
|
339
|
+
failed: Map<string, string>;
|
|
340
|
+
|
|
341
|
+
/** Total API tokens used */
|
|
342
|
+
totalTokens: number;
|
|
343
|
+
|
|
344
|
+
/** Estimated cost in USD */
|
|
345
|
+
estimatedCost: number;
|
|
346
|
+
}
|