logicstamp-context 0.1.1 → 0.2.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 (159) hide show
  1. package/LLM_CONTEXT.md +4 -3
  2. package/README.md +116 -19
  3. package/dist/cli/commands/compare.d.ts.map +1 -1
  4. package/dist/cli/commands/compare.js +17 -8
  5. package/dist/cli/commands/compare.js.map +1 -1
  6. package/dist/cli/commands/context/bundleFormatter.d.ts +20 -0
  7. package/dist/cli/commands/context/bundleFormatter.d.ts.map +1 -0
  8. package/dist/cli/commands/context/bundleFormatter.js +55 -0
  9. package/dist/cli/commands/context/bundleFormatter.js.map +1 -0
  10. package/dist/cli/commands/context/configManager.d.ts +23 -0
  11. package/dist/cli/commands/context/configManager.d.ts.map +1 -0
  12. package/dist/cli/commands/context/configManager.js +69 -0
  13. package/dist/cli/commands/context/configManager.js.map +1 -0
  14. package/dist/cli/commands/context/contractBuilder.d.ts +18 -0
  15. package/dist/cli/commands/context/contractBuilder.d.ts.map +1 -0
  16. package/dist/cli/commands/context/contractBuilder.js +72 -0
  17. package/dist/cli/commands/context/contractBuilder.js.map +1 -0
  18. package/dist/cli/commands/context/fileWriter.d.ts +38 -0
  19. package/dist/cli/commands/context/fileWriter.d.ts.map +1 -0
  20. package/dist/cli/commands/context/fileWriter.js +170 -0
  21. package/dist/cli/commands/context/fileWriter.js.map +1 -0
  22. package/dist/cli/commands/context/statsCalculator.d.ts +44 -0
  23. package/dist/cli/commands/context/statsCalculator.d.ts.map +1 -0
  24. package/dist/cli/commands/context/statsCalculator.js +150 -0
  25. package/dist/cli/commands/context/statsCalculator.js.map +1 -0
  26. package/dist/cli/commands/context/tokenEstimator.d.ts +76 -0
  27. package/dist/cli/commands/context/tokenEstimator.d.ts.map +1 -0
  28. package/dist/cli/commands/context/tokenEstimator.js +258 -0
  29. package/dist/cli/commands/context/tokenEstimator.js.map +1 -0
  30. package/dist/cli/commands/context.d.ts +1 -0
  31. package/dist/cli/commands/context.d.ts.map +1 -1
  32. package/dist/cli/commands/context.js +72 -399
  33. package/dist/cli/commands/context.js.map +1 -1
  34. package/dist/cli/commands/style.d.ts +11 -0
  35. package/dist/cli/commands/style.d.ts.map +1 -0
  36. package/dist/cli/commands/style.js +15 -0
  37. package/dist/cli/commands/style.js.map +1 -0
  38. package/dist/cli/handlers/cleanHandler.d.ts +5 -0
  39. package/dist/cli/handlers/cleanHandler.d.ts.map +1 -0
  40. package/dist/cli/handlers/cleanHandler.js +28 -0
  41. package/dist/cli/handlers/cleanHandler.js.map +1 -0
  42. package/dist/cli/handlers/compareHandler.d.ts +5 -0
  43. package/dist/cli/handlers/compareHandler.d.ts.map +1 -0
  44. package/dist/cli/handlers/compareHandler.js +332 -0
  45. package/dist/cli/handlers/compareHandler.js.map +1 -0
  46. package/dist/cli/handlers/contextHandler.d.ts +5 -0
  47. package/dist/cli/handlers/contextHandler.d.ts.map +1 -0
  48. package/dist/cli/handlers/contextHandler.js +24 -0
  49. package/dist/cli/handlers/contextHandler.js.map +1 -0
  50. package/dist/cli/handlers/initHandler.d.ts +6 -0
  51. package/dist/cli/handlers/initHandler.d.ts.map +1 -0
  52. package/dist/cli/handlers/initHandler.js +30 -0
  53. package/dist/cli/handlers/initHandler.js.map +1 -0
  54. package/dist/cli/handlers/styleHandler.d.ts +5 -0
  55. package/dist/cli/handlers/styleHandler.d.ts.map +1 -0
  56. package/dist/cli/handlers/styleHandler.js +30 -0
  57. package/dist/cli/handlers/styleHandler.js.map +1 -0
  58. package/dist/cli/handlers/validateHandler.d.ts +5 -0
  59. package/dist/cli/handlers/validateHandler.d.ts.map +1 -0
  60. package/dist/cli/handlers/validateHandler.js +23 -0
  61. package/dist/cli/handlers/validateHandler.js.map +1 -0
  62. package/dist/cli/parser/argumentParser.d.ts +44 -0
  63. package/dist/cli/parser/argumentParser.d.ts.map +1 -0
  64. package/dist/cli/parser/argumentParser.js +194 -0
  65. package/dist/cli/parser/argumentParser.js.map +1 -0
  66. package/dist/cli/parser/helpText.d.ts +11 -0
  67. package/dist/cli/parser/helpText.d.ts.map +1 -0
  68. package/dist/cli/parser/helpText.js +373 -0
  69. package/dist/cli/parser/helpText.js.map +1 -0
  70. package/dist/cli/stamp.js +14 -821
  71. package/dist/cli/stamp.js.map +1 -1
  72. package/dist/core/astParser/detectors.d.ts +24 -0
  73. package/dist/core/astParser/detectors.d.ts.map +1 -0
  74. package/dist/core/astParser/detectors.js +102 -0
  75. package/dist/core/astParser/detectors.js.map +1 -0
  76. package/dist/core/astParser/extractors/componentExtractor.d.ts +13 -0
  77. package/dist/core/astParser/extractors/componentExtractor.d.ts.map +1 -0
  78. package/dist/core/astParser/extractors/componentExtractor.js +41 -0
  79. package/dist/core/astParser/extractors/componentExtractor.js.map +1 -0
  80. package/dist/core/astParser/extractors/eventExtractor.d.ts +14 -0
  81. package/dist/core/astParser/extractors/eventExtractor.d.ts.map +1 -0
  82. package/dist/core/astParser/extractors/eventExtractor.js +49 -0
  83. package/dist/core/astParser/extractors/eventExtractor.js.map +1 -0
  84. package/dist/core/astParser/extractors/propExtractor.d.ts +14 -0
  85. package/dist/core/astParser/extractors/propExtractor.d.ts.map +1 -0
  86. package/dist/core/astParser/extractors/propExtractor.js +73 -0
  87. package/dist/core/astParser/extractors/propExtractor.js.map +1 -0
  88. package/dist/core/astParser/extractors/stateExtractor.d.ts +13 -0
  89. package/dist/core/astParser/extractors/stateExtractor.d.ts.map +1 -0
  90. package/dist/core/astParser/extractors/stateExtractor.js +66 -0
  91. package/dist/core/astParser/extractors/stateExtractor.js.map +1 -0
  92. package/dist/core/astParser.d.ts.map +1 -1
  93. package/dist/core/astParser.js +5 -307
  94. package/dist/core/astParser.js.map +1 -1
  95. package/dist/core/contractBuilder.d.ts +1 -0
  96. package/dist/core/contractBuilder.d.ts.map +1 -1
  97. package/dist/core/contractBuilder.js +1 -0
  98. package/dist/core/contractBuilder.js.map +1 -1
  99. package/dist/core/pack/builder.d.ts +35 -0
  100. package/dist/core/pack/builder.d.ts.map +1 -0
  101. package/dist/core/pack/builder.js +76 -0
  102. package/dist/core/pack/builder.js.map +1 -0
  103. package/dist/core/pack/collector.d.ts +20 -0
  104. package/dist/core/pack/collector.d.ts.map +1 -0
  105. package/dist/core/pack/collector.js +71 -0
  106. package/dist/core/pack/collector.js.map +1 -0
  107. package/dist/core/pack/loader.d.ts +23 -0
  108. package/dist/core/pack/loader.d.ts.map +1 -0
  109. package/dist/core/pack/loader.js +66 -0
  110. package/dist/core/pack/loader.js.map +1 -0
  111. package/dist/core/pack/resolver.d.ts +21 -0
  112. package/dist/core/pack/resolver.d.ts.map +1 -0
  113. package/dist/core/pack/resolver.js +79 -0
  114. package/dist/core/pack/resolver.js.map +1 -0
  115. package/dist/core/pack.d.ts +17 -27
  116. package/dist/core/pack.d.ts.map +1 -1
  117. package/dist/core/pack.js +18 -225
  118. package/dist/core/pack.js.map +1 -1
  119. package/dist/core/styleExtractor/index.d.ts +11 -0
  120. package/dist/core/styleExtractor/index.d.ts.map +1 -0
  121. package/dist/core/styleExtractor/index.js +11 -0
  122. package/dist/core/styleExtractor/index.js.map +1 -0
  123. package/dist/core/styleExtractor/layout.d.ts +14 -0
  124. package/dist/core/styleExtractor/layout.d.ts.map +1 -0
  125. package/dist/core/styleExtractor/layout.js +86 -0
  126. package/dist/core/styleExtractor/layout.js.map +1 -0
  127. package/dist/core/styleExtractor/motion.d.ts +20 -0
  128. package/dist/core/styleExtractor/motion.d.ts.map +1 -0
  129. package/dist/core/styleExtractor/motion.js +74 -0
  130. package/dist/core/styleExtractor/motion.js.map +1 -0
  131. package/dist/core/styleExtractor/scss.d.ts +30 -0
  132. package/dist/core/styleExtractor/scss.d.ts.map +1 -0
  133. package/dist/core/styleExtractor/scss.js +80 -0
  134. package/dist/core/styleExtractor/scss.js.map +1 -0
  135. package/dist/core/styleExtractor/styleExtractor.d.ts +11 -0
  136. package/dist/core/styleExtractor/styleExtractor.d.ts.map +1 -0
  137. package/dist/core/styleExtractor/styleExtractor.js +115 -0
  138. package/dist/core/styleExtractor/styleExtractor.js.map +1 -0
  139. package/dist/core/styleExtractor/styled.d.ts +13 -0
  140. package/dist/core/styleExtractor/styled.d.ts.map +1 -0
  141. package/dist/core/styleExtractor/styled.js +31 -0
  142. package/dist/core/styleExtractor/styled.js.map +1 -0
  143. package/dist/core/styleExtractor/tailwind.d.ts +16 -0
  144. package/dist/core/styleExtractor/tailwind.d.ts.map +1 -0
  145. package/dist/core/styleExtractor/tailwind.js +85 -0
  146. package/dist/core/styleExtractor/tailwind.js.map +1 -0
  147. package/dist/core/styleExtractor.d.ts +8 -0
  148. package/dist/core/styleExtractor.d.ts.map +1 -0
  149. package/dist/core/styleExtractor.js +8 -0
  150. package/dist/core/styleExtractor.js.map +1 -0
  151. package/dist/types/UIFContract.d.ts +71 -0
  152. package/dist/types/UIFContract.d.ts.map +1 -1
  153. package/dist/types/UIFContract.js.map +1 -1
  154. package/dist/utils/tokens.d.ts +18 -10
  155. package/dist/utils/tokens.d.ts.map +1 -1
  156. package/dist/utils/tokens.js +100 -10
  157. package/dist/utils/tokens.js.map +1 -1
  158. package/package.json +5 -1
  159. package/schema/logicstamp.context.schema.json +288 -0
@@ -27,62 +27,11 @@
27
27
  * Uses ts-morph for robust AST traversal
28
28
  */
29
29
  import { Project, SyntaxKind, Node } from 'ts-morph';
30
- /**
31
- * Detect Next.js 'use client' or 'use server' directives
32
- * These directives must appear at the top of the file (before any imports)
33
- */
34
- function detectNextJsDirective(source) {
35
- const fullText = source.getFullText();
36
- // Get the first few lines (directives must be at the top)
37
- const firstLines = fullText.split('\n').slice(0, 5);
38
- // Check each line - directive must be at start of line (ignoring whitespace)
39
- for (const line of firstLines) {
40
- const trimmed = line.trim();
41
- // Skip empty lines and comments
42
- if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('/*')) {
43
- continue;
44
- }
45
- // Check for 'use client' directive at start of statement
46
- if (/^['"]use client['"];?$/.test(trimmed)) {
47
- return 'client';
48
- }
49
- // Check for 'use server' directive at start of statement
50
- if (/^['"]use server['"];?$/.test(trimmed)) {
51
- return 'server';
52
- }
53
- // If we hit a non-comment, non-directive line, stop looking
54
- if (trimmed) {
55
- break;
56
- }
57
- }
58
- return undefined;
59
- }
60
- /**
61
- * Detect if file is in Next.js App Router directory
62
- * Checks if the file path contains /app/ or \app\ directory
63
- */
64
- function isInNextAppDir(filePath) {
65
- // Normalize path separators and check for /app/ directory
66
- const normalizedPath = filePath.replace(/\\/g, '/');
67
- // Match /app/ directory (not just any path containing 'app')
68
- // Must be a directory boundary, not part of another word
69
- return /\/app\//.test(normalizedPath) || /^app\//.test(normalizedPath);
70
- }
71
- /**
72
- * Extract Next.js metadata from the file
73
- */
74
- function extractNextJsMetadata(source, filePath) {
75
- const directive = detectNextJsDirective(source);
76
- const isInApp = isInNextAppDir(filePath);
77
- // Only return metadata if we have something to report
78
- if (directive || isInApp) {
79
- return {
80
- ...(isInApp && { isInAppDir: true }),
81
- ...(directive && { directive })
82
- };
83
- }
84
- return undefined;
85
- }
30
+ import { extractComponents, extractHooks } from './astParser/extractors/componentExtractor.js';
31
+ import { extractProps } from './astParser/extractors/propExtractor.js';
32
+ import { extractState, extractVariables } from './astParser/extractors/stateExtractor.js';
33
+ import { extractEvents, extractJsxRoutes } from './astParser/extractors/eventExtractor.js';
34
+ import { detectKind, extractNextJsMetadata } from './astParser/detectors.js';
86
35
  /**
87
36
  * Extract all structural information from a TypeScript/React file
88
37
  */
@@ -114,56 +63,6 @@ export async function extractFromFile(filePath) {
114
63
  ...(nextjs && { nextjs }),
115
64
  };
116
65
  }
117
- /**
118
- * Extract all variable declarations (const, let, var)
119
- */
120
- function extractVariables(source) {
121
- const variables = new Set();
122
- source.getVariableDeclarations().forEach((varDecl) => {
123
- const name = varDecl.getName();
124
- // Skip destructured state setters (e.g., setCount from [count, setCount])
125
- if (!name.startsWith('set') || !varDecl.getParent()?.getText().includes('useState')) {
126
- variables.add(name);
127
- }
128
- });
129
- return Array.from(variables).sort();
130
- }
131
- /**
132
- * Extract all React hooks (useState, useEffect, custom hooks)
133
- */
134
- function extractHooks(source) {
135
- const hooks = new Set();
136
- source.getDescendantsOfKind(SyntaxKind.CallExpression).forEach((callExpr) => {
137
- const expr = callExpr.getExpression();
138
- const text = expr.getText();
139
- // Match useXxx pattern
140
- if (/^use[A-Z]/.test(text)) {
141
- hooks.add(text);
142
- }
143
- });
144
- return Array.from(hooks).sort();
145
- }
146
- /**
147
- * Extract all JSX components used in the file
148
- */
149
- function extractComponents(source) {
150
- const components = new Set();
151
- // JSX opening elements
152
- source.getDescendantsOfKind(SyntaxKind.JsxOpeningElement).forEach((openingEl) => {
153
- const tagName = openingEl.getTagNameNode().getText();
154
- if (/^[A-Z]/.test(tagName)) {
155
- components.add(tagName);
156
- }
157
- });
158
- // Self-closing JSX elements
159
- source.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).forEach((selfClosing) => {
160
- const tagName = selfClosing.getTagNameNode().getText();
161
- if (/^[A-Z]/.test(tagName)) {
162
- components.add(tagName);
163
- }
164
- });
165
- return Array.from(components).sort();
166
- }
167
66
  /**
168
67
  * Extract all function declarations and arrow functions
169
68
  */
@@ -192,151 +91,6 @@ function extractFunctions(source) {
192
91
  });
193
92
  return Array.from(functions).sort();
194
93
  }
195
- /**
196
- * Extract component props from TypeScript interfaces/types
197
- */
198
- function extractProps(source) {
199
- const props = {};
200
- // Look for interfaces ending with Props
201
- source.getInterfaces().forEach((iface) => {
202
- if (/Props$/i.test(iface.getName())) {
203
- iface.getProperties().forEach((prop) => {
204
- const name = prop.getName();
205
- const isOptional = prop.hasQuestionToken();
206
- const type = prop.getType().getText();
207
- props[name] = normalizePropType(type, isOptional);
208
- });
209
- }
210
- });
211
- // Look for type aliases ending with Props
212
- source.getTypeAliases().forEach((typeAlias) => {
213
- if (/Props$/i.test(typeAlias.getName())) {
214
- const type = typeAlias.getType();
215
- const properties = type.getProperties();
216
- properties.forEach((prop) => {
217
- const name = prop.getName();
218
- const propType = prop.getTypeAtLocation(typeAlias).getText();
219
- // Check if optional from declaration
220
- const declarations = prop.getDeclarations();
221
- const isOptional = declarations.some((decl) => decl.getText().includes('?:'));
222
- props[name] = normalizePropType(propType, isOptional);
223
- });
224
- }
225
- });
226
- return props;
227
- }
228
- /**
229
- * Normalize a prop type into the rich PropType format
230
- */
231
- function normalizePropType(typeText, isOptional) {
232
- // Remove 'undefined' from unions if present
233
- const cleanType = typeText.replace(/\s*\|\s*undefined/g, '').trim();
234
- // Detect literal unions: "a" | "b" | "c"
235
- const literalUnionMatch = cleanType.match(/^("[\w-]+"(\s*\|\s*"[\w-]+")+)$/);
236
- if (literalUnionMatch) {
237
- const literals = cleanType
238
- .split('|')
239
- .map(t => t.trim().replace(/^"|"$/g, ''));
240
- return {
241
- type: 'literal-union',
242
- literals,
243
- ...(isOptional && { optional: true })
244
- };
245
- }
246
- // Detect function types: () => void, (x: string) => void
247
- if (cleanType.includes('=>') || cleanType.startsWith('(') && cleanType.includes(')')) {
248
- return {
249
- type: 'function',
250
- signature: cleanType,
251
- ...(isOptional && { optional: true })
252
- };
253
- }
254
- // Simple type with optionality
255
- if (isOptional && !['string', 'number', 'boolean'].includes(cleanType)) {
256
- return {
257
- type: cleanType,
258
- optional: true
259
- };
260
- }
261
- // Return simple string for common types (backward compat)
262
- return cleanType;
263
- }
264
- /**
265
- * Extract component state from useState calls
266
- */
267
- function extractState(source) {
268
- const state = {};
269
- source.getDescendantsOfKind(SyntaxKind.VariableDeclaration).forEach((varDecl) => {
270
- const initializer = varDecl.getInitializer();
271
- if (!initializer)
272
- return;
273
- const initText = initializer.getText();
274
- if (initText.startsWith('useState(') || initText.startsWith('useState<')) {
275
- const bindingName = varDecl.getName();
276
- // Extract state variable name from array destructuring [value, setValue]
277
- const match = bindingName.match(/\[([a-zA-Z0-9_]+)\s*,/);
278
- if (match) {
279
- const stateVar = match[1];
280
- // Try to infer type from generic or initial value
281
- let type = 'unknown';
282
- const genericMatch = initText.match(/useState<([^>]+)>/);
283
- if (genericMatch) {
284
- type = genericMatch[1];
285
- }
286
- else {
287
- // Infer from initial value
288
- const valueMatch = initText.match(/useState\(([^)]+)\)/);
289
- if (valueMatch) {
290
- const value = valueMatch[1].trim();
291
- if (value === 'true' || value === 'false')
292
- type = 'boolean';
293
- else if (/^\d+$/.test(value))
294
- type = 'number';
295
- else if (/^["']/.test(value))
296
- type = 'string';
297
- else if (value === 'null')
298
- type = 'null';
299
- else if (value === '[]')
300
- type = 'array';
301
- else if (value === '{}')
302
- type = 'object';
303
- }
304
- }
305
- state[stateVar] = type;
306
- }
307
- }
308
- });
309
- return state;
310
- }
311
- /**
312
- * Extract event handlers from JSX attributes
313
- */
314
- function extractEvents(source) {
315
- const events = {};
316
- source.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach((attr) => {
317
- const name = attr.getNameNode().getText();
318
- // Match onXxx pattern
319
- if (/^on[A-Z]/.test(name)) {
320
- const initializer = attr.getInitializer();
321
- if (initializer) {
322
- // Try to infer the event handler signature
323
- const initText = initializer.getText();
324
- // Extract function signature if possible
325
- let signature = '() => void'; // default
326
- // Try to parse arrow function signature: (arg) => { ... }
327
- const arrowMatch = initText.match(/\(([^)]*)\)\s*=>/);
328
- if (arrowMatch) {
329
- signature = `(${arrowMatch[1]}) => void`;
330
- }
331
- events[name] = {
332
- type: 'function',
333
- signature
334
- };
335
- }
336
- }
337
- });
338
- return events;
339
- }
340
94
  /**
341
95
  * Extract import module specifiers
342
96
  */
@@ -348,62 +102,6 @@ function extractImports(source) {
348
102
  });
349
103
  return Array.from(imports).sort();
350
104
  }
351
- /**
352
- * Detect component kind based on its characteristics
353
- */
354
- function detectKind(hooks, components, imports, filePath, source) {
355
- // React component: has hooks or JSX components
356
- if (hooks.length > 0 || components.length > 0) {
357
- return 'react:component';
358
- }
359
- // Check for React imports
360
- const hasReactImport = imports.some(imp => imp === 'react' || imp.startsWith('react/'));
361
- if (hasReactImport) {
362
- const sourceText = source.getFullText();
363
- // Check for any JSX usage (including lowercase HTML elements)
364
- const hasJsxElements = source.getDescendantsOfKind(SyntaxKind.JsxElement).length > 0 ||
365
- source.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).length > 0 ||
366
- source.getDescendantsOfKind(SyntaxKind.JsxFragment).length > 0;
367
- if (hasJsxElements) {
368
- return 'react:component';
369
- }
370
- // Check for React.createElement usage
371
- if (/React\.createElement/.test(sourceText)) {
372
- return 'react:component';
373
- }
374
- // Check for React component type annotations
375
- // Look for React.FC, React.FunctionComponent, or return type JSX.Element
376
- if (/React\.(FC|FunctionComponent|ReactElement)|:\s*JSX\.Element/.test(sourceText)) {
377
- return 'react:component';
378
- }
379
- }
380
- // Node CLI: check for CLI-specific patterns
381
- // 1. File is in a /cli/ directory, OR
382
- // 2. File uses process.argv (CLI argument parsing)
383
- const isInCliDir = /[/\\]cli[/\\]/.test(filePath);
384
- const sourceText = source.getFullText();
385
- const usesProcessArgv = /process\.argv/.test(sourceText);
386
- if (isInCliDir || usesProcessArgv) {
387
- return 'node:cli';
388
- }
389
- // Default: TypeScript module (even if it imports from node:)
390
- return 'ts:module';
391
- }
392
- /**
393
- * Extract potential route usage (heuristic-based)
394
- */
395
- function extractJsxRoutes(source) {
396
- const routes = new Set();
397
- // Look for route-like string literals in JSX
398
- source.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach((strLit) => {
399
- const value = strLit.getLiteralValue();
400
- // Match route patterns like /path, /path/:id, etc.
401
- if (/^\/[a-z0-9\-_/:.]*$/i.test(value)) {
402
- routes.add(value);
403
- }
404
- });
405
- return Array.from(routes).sort();
406
- }
407
105
  /**
408
106
  * Build the logic signature from extracted AST data
409
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@ export interface ContractBuildParams {
32
32
  preset: ContractPreset;
33
33
  sourceText: string;
34
34
  enablePredictions?: boolean;
35
+ styleMetadata?: import('../types/UIFContract.js').StyleMetadata;
35
36
  }
36
37
  export interface ContractBuildResult {
37
38
  contract: UIFContract;
@@ -1 +1 @@
1
- {"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAWjD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA8BD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAoDrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,WAAW,GACnB,WAAW,CAiBb"}
1
+ {"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAWjD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,yBAAyB,EAAE,aAAa,CAAC;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA8BD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,mBAAmB,GAC1B,mBAAmB,CAqDrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,WAAW,GACnB,WAAW,CAiBb"}
@@ -91,6 +91,7 @@ export function buildContract(entryId, ast, params) {
91
91
  metrics: undefined,
92
92
  links: undefined,
93
93
  nextjs: ast.nextjs,
94
+ style: params.styleMetadata, // Attach pre-extracted style metadata
94
95
  semanticHash: semanticHashFromAst(ast, signature),
95
96
  fileHash: fileHash(params.sourceText),
96
97
  };
@@ -1 +1 @@
1
- {"version":3,"file":"contractBuilder.js","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contractBuilder.js","sourceRoot":"","sources":["../../src/core/contractBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Builder module - Build bundle structures, edges, and hashes
3
+ */
4
+ import type { UIFContract } from '../../types/UIFContract.js';
5
+ import type { ProjectManifest } from '../manifest.js';
6
+ /**
7
+ * A node in the bundle graph
8
+ */
9
+ export interface BundleNode {
10
+ entryId: string;
11
+ contract: UIFContract;
12
+ codeHeader?: string | null;
13
+ code?: string | null;
14
+ }
15
+ /**
16
+ * Build edges from nodes based on dependencies
17
+ */
18
+ export declare function buildEdges(nodes: BundleNode[], manifest: ProjectManifest): [string, string][];
19
+ /**
20
+ * Sort nodes deterministically for stable bundle hashes
21
+ */
22
+ export declare function stableSort(nodes: BundleNode[]): BundleNode[];
23
+ /**
24
+ * Compute bundle hash from nodes using stable hashing
25
+ */
26
+ export declare function computeBundleHash(nodes: BundleNode[], depth: number): string;
27
+ /**
28
+ * Validate hash-lock: ensure contract hashes match current state
29
+ *
30
+ * Recomputes file hash from source and compares to contract.fileHash from sidecar
31
+ * (authoritative, not from header). fileHash() automatically strips @uif header block
32
+ * before hashing, so header updates won't cause hash churn.
33
+ */
34
+ export declare function validateHashLock(contract: UIFContract, entryId: string, projectRoot: string): Promise<boolean>;
35
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/core/pack/builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAmB7F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAK5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBpH"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Builder module - Build bundle structures, edges, and hashes
3
+ */
4
+ import { readFile } from 'node:fs/promises';
5
+ import { resolve, isAbsolute } from 'node:path';
6
+ import { bundleHash as computeBundleHashStable } from '../../utils/hash.js';
7
+ import { resolveDependency } from './resolver.js';
8
+ /**
9
+ * Build edges from nodes based on dependencies
10
+ */
11
+ export function buildEdges(nodes, manifest) {
12
+ const edges = [];
13
+ const nodeIds = new Set(nodes.map((n) => n.entryId));
14
+ for (const node of nodes) {
15
+ const componentNode = manifest.components[node.entryId];
16
+ if (!componentNode)
17
+ continue;
18
+ for (const dep of componentNode.dependencies) {
19
+ const resolvedId = resolveDependency(manifest, dep, node.entryId);
20
+ // Only add edge if both nodes are in the bundle
21
+ if (resolvedId && nodeIds.has(resolvedId)) {
22
+ edges.push([node.entryId, resolvedId]);
23
+ }
24
+ }
25
+ }
26
+ return edges;
27
+ }
28
+ /**
29
+ * Sort nodes deterministically for stable bundle hashes
30
+ */
31
+ export function stableSort(nodes) {
32
+ return [...nodes].sort((a, b) => {
33
+ // Sort by entryId for determinism
34
+ return a.entryId.localeCompare(b.entryId);
35
+ });
36
+ }
37
+ /**
38
+ * Compute bundle hash from nodes using stable hashing
39
+ */
40
+ export function computeBundleHash(nodes, depth) {
41
+ // Use the stable bundleHash function from utils/hash
42
+ const nodeData = nodes.map(n => ({
43
+ entryId: n.entryId,
44
+ semanticHash: n.contract.semanticHash,
45
+ }));
46
+ return computeBundleHashStable(nodeData, depth, '0.1');
47
+ }
48
+ /**
49
+ * Validate hash-lock: ensure contract hashes match current state
50
+ *
51
+ * Recomputes file hash from source and compares to contract.fileHash from sidecar
52
+ * (authoritative, not from header). fileHash() automatically strips @uif header block
53
+ * before hashing, so header updates won't cause hash churn.
54
+ */
55
+ export async function validateHashLock(contract, entryId, projectRoot) {
56
+ try {
57
+ // Read the actual source file
58
+ const absolutePath = isAbsolute(entryId) ? entryId : resolve(projectRoot, entryId);
59
+ const sourceContent = await readFile(absolutePath, 'utf8');
60
+ // Recompute file hash (strips @uif header block automatically)
61
+ const { fileHash: computedFileHash } = await import('../../utils/hash.js');
62
+ const actualFileHash = computedFileHash(sourceContent);
63
+ // Compare to sidecar contract.fileHash (authoritative, not header)
64
+ if (actualFileHash !== contract.fileHash) {
65
+ return false;
66
+ }
67
+ // Semantic hash should match (derived from structure + signature)
68
+ // If fileHash matches, semantic hash should also match since it's derived from the AST
69
+ return true;
70
+ }
71
+ catch (error) {
72
+ // If we can't read/parse the file, fail validation
73
+ return false;
74
+ }
75
+ }
76
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/core/pack/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Collector module - BFS dependency collection
3
+ */
4
+ import type { ProjectManifest } from '../manifest.js';
5
+ /**
6
+ * Missing dependency information
7
+ */
8
+ export interface MissingDependency {
9
+ name: string;
10
+ reason: string;
11
+ referencedBy?: string;
12
+ }
13
+ /**
14
+ * Perform BFS traversal to collect dependencies
15
+ */
16
+ export declare function collectDependencies(entryId: string, manifest: ProjectManifest, depth: number, maxNodes: number): {
17
+ visited: Set<string>;
18
+ missing: MissingDependency[];
19
+ };
20
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/core/pack/collector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAuExD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Collector module - BFS dependency collection
3
+ */
4
+ import { normalizeEntryId } from '../../utils/fsx.js';
5
+ import { resolveDependency } from './resolver.js';
6
+ /**
7
+ * Perform BFS traversal to collect dependencies
8
+ */
9
+ export function collectDependencies(entryId, manifest, depth, maxNodes) {
10
+ const visited = new Set();
11
+ const missing = [];
12
+ const queue = [{ id: entryId, level: 0 }];
13
+ while (queue.length > 0) {
14
+ const current = queue.shift();
15
+ // Normalize the ID for lookup
16
+ const normalizedId = normalizeEntryId(current.id);
17
+ // Try to find component by normalized ID
18
+ let node = manifest.components[normalizedId];
19
+ let componentKey = normalizedId;
20
+ // If not found, try to find by matching normalized entryIds
21
+ if (!node) {
22
+ for (const [key, comp] of Object.entries(manifest.components)) {
23
+ if (normalizeEntryId(key) === normalizedId || normalizeEntryId(comp.entryId) === normalizedId) {
24
+ node = comp;
25
+ componentKey = key;
26
+ break;
27
+ }
28
+ }
29
+ }
30
+ // Skip if already visited or exceeded depth
31
+ if (visited.has(componentKey) || current.level > depth) {
32
+ continue;
33
+ }
34
+ // Check max nodes limit
35
+ if (visited.size >= maxNodes) {
36
+ break;
37
+ }
38
+ if (!node) {
39
+ missing.push({
40
+ name: current.id,
41
+ reason: 'Component not found in manifest',
42
+ });
43
+ continue;
44
+ }
45
+ visited.add(componentKey);
46
+ // Only traverse deeper if we haven't reached depth limit
47
+ if (current.level < depth) {
48
+ // Add dependencies to queue
49
+ for (const dep of node.dependencies) {
50
+ const resolvedId = resolveDependency(manifest, dep, componentKey);
51
+ if (resolvedId) {
52
+ if (!visited.has(resolvedId)) {
53
+ queue.push({ id: resolvedId, level: current.level + 1 });
54
+ }
55
+ }
56
+ else {
57
+ // Track missing dependency
58
+ if (!missing.some((m) => m.name === dep)) {
59
+ missing.push({
60
+ name: dep,
61
+ reason: 'No contract found (third-party or not scanned)',
62
+ referencedBy: componentKey, // Use manifest key, not current.id
63
+ });
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ return { visited, missing };
70
+ }
71
+ //# sourceMappingURL=collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/core/pack/collector.ts"],"names":[],"mappings":"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"}