@specverse/engines 6.30.5 → 6.32.11

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 (44) hide show
  1. package/dist/ai/analyse-runner.d.ts.map +1 -1
  2. package/dist/ai/analyse-runner.js +19 -0
  3. package/dist/ai/analyse-runner.js.map +1 -1
  4. package/dist/ai/behaviours-runner.d.ts.map +1 -1
  5. package/dist/ai/behaviours-runner.js +47 -7
  6. package/dist/ai/behaviours-runner.js.map +1 -1
  7. package/dist/ai/create-runner.d.ts.map +1 -1
  8. package/dist/ai/create-runner.js +6 -0
  9. package/dist/ai/create-runner.js.map +1 -1
  10. package/dist/ai/manifest-emitter.d.ts +35 -10
  11. package/dist/ai/manifest-emitter.d.ts.map +1 -1
  12. package/dist/ai/manifest-emitter.js +140 -54
  13. package/dist/ai/manifest-emitter.js.map +1 -1
  14. package/dist/ai/microcall-orchestrator.d.ts +8 -0
  15. package/dist/ai/microcall-orchestrator.d.ts.map +1 -1
  16. package/dist/ai/microcall-orchestrator.js +5 -1
  17. package/dist/ai/microcall-orchestrator.js.map +1 -1
  18. package/dist/ai/processes-to-microcall-context.d.ts +66 -0
  19. package/dist/ai/processes-to-microcall-context.d.ts.map +1 -0
  20. package/dist/ai/processes-to-microcall-context.js +148 -0
  21. package/dist/ai/processes-to-microcall-context.js.map +1 -0
  22. package/dist/ai/skeleton-emitter.d.ts +1 -1
  23. package/dist/ai/skeleton-emitter.d.ts.map +1 -1
  24. package/dist/ai/skeleton-emitter.js +162 -14
  25. package/dist/ai/skeleton-emitter.js.map +1 -1
  26. package/dist/analyse-prepass/adapters/react-views.d.ts +85 -0
  27. package/dist/analyse-prepass/adapters/react-views.d.ts.map +1 -1
  28. package/dist/analyse-prepass/adapters/react-views.js +290 -0
  29. package/dist/analyse-prepass/adapters/react-views.js.map +1 -1
  30. package/dist/analyse-prepass/imports-graph.d.ts +133 -0
  31. package/dist/analyse-prepass/imports-graph.d.ts.map +1 -0
  32. package/dist/analyse-prepass/imports-graph.js +430 -0
  33. package/dist/analyse-prepass/imports-graph.js.map +1 -0
  34. package/dist/analyse-prepass/index.d.ts +31 -0
  35. package/dist/analyse-prepass/index.d.ts.map +1 -1
  36. package/dist/analyse-prepass/index.js +22 -0
  37. package/dist/analyse-prepass/index.js.map +1 -1
  38. package/dist/inference/logical/generators/view-generator.d.ts +10 -0
  39. package/dist/inference/logical/generators/view-generator.d.ts.map +1 -1
  40. package/dist/inference/logical/generators/view-generator.js +20 -0
  41. package/dist/inference/logical/generators/view-generator.js.map +1 -1
  42. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +10 -3
  43. package/libs/instance-factories/cli/templates/commander/command-generator.ts +10 -3
  44. package/package.json +3 -3
@@ -46,6 +46,29 @@ export interface ReactViewDeclaration {
46
46
  * above the component declaration, when present. Stripped of comment
47
47
  * markers and reformatted as a single line. */
48
48
  docstring?: string;
49
+ /** Engines 6.31.0+. Classified view type from JSX shape — one of the
50
+ * standard SpecVerse view types (`list`, `form`, `detail`, `dashboard`,
51
+ * `modal`, `provider`, `screen`, `layout`, `widget`, `page`).
52
+ * See `classifyViewType` for the full pattern table. */
53
+ viewType?: string;
54
+ /** Engines 6.31.0+. Sub-component names rendered inside this view's
55
+ * JSX. Captures composition graph deterministically without resolving
56
+ * imports — the consumer (skeleton-emitter) cross-references against
57
+ * detected views to filter to known names. */
58
+ usesComponents?: string[];
59
+ /** Engines 6.31.0+. Action handles extracted from `<button onClick={X}>`
60
+ * patterns. The label is captured from the button's text content
61
+ * when present. The handler ref is the function name (used to resolve
62
+ * CURVED-op binding later). */
63
+ actions?: Array<{
64
+ name: string;
65
+ label?: string;
66
+ variant?: 'primary' | 'destructive' | 'secondary';
67
+ }>;
68
+ /** Engines 6.31.0+. True when the JSX has a "no items" / "empty list"
69
+ * branch (detected via `length === 0` / `isEmpty` / `!items.length`
70
+ * conditional rendering). */
71
+ emptyState?: boolean;
49
72
  }
50
73
  export interface ReactViewFile {
51
74
  filePath: string;
@@ -60,4 +83,66 @@ export declare function looksLikeReactSource(source: string): boolean;
60
83
  * Returns at most one entry per name (per-file dedup).
61
84
  */
62
85
  export declare function parseReactViews(filePath: string, source: string): ReactViewFile;
86
+ /**
87
+ * Engines 6.31.0+. Classify a React component into one of SpecVerse's
88
+ * standard view types from JSX shape + filename hints. Returns the
89
+ * canonical type string. Falls back to `page` (the catch-all
90
+ * top-level type) when no specific pattern matches.
91
+ *
92
+ * Detection table (first match wins, ordered most-specific first):
93
+ *
94
+ * `provider` — Renders `Context.Provider` or `<XContext.Provider>` and
95
+ * little else. Distinguished from generic wrappers by
96
+ * being focused on the Provider alone.
97
+ * `layout` — Filename ends `Layout` AND component renders children
98
+ * via `{children}` or `<Outlet/>` (Next.js / RR shapes).
99
+ * `screen` — Filename ends `Screen` OR uses `SafeAreaView` /
100
+ * `<Screen>` wrapper (RN convention).
101
+ * `modal` — Renders `<Modal>` / `<Dialog>` / `createPortal` /
102
+ * `<dialog>`.
103
+ * `wizard` — Multi-step flow detected by `step` state + numeric
104
+ * progression (heuristic).
105
+ * `dashboard` — Multiple grid/panel children at top level.
106
+ * `form` — Renders a `<form>` with submit handler, or has
107
+ * `onSubmit` / `useForm` patterns.
108
+ * `list` — Renders `<table>`, `.map(item =>`, or `<ul>`/`<ol>`
109
+ * with iteration.
110
+ * `widget` — Tiny render — single root element, no state, ≤2 JSX
111
+ * nodes deep. Pills, badges, icons, status chips.
112
+ * `detail` — Single-entity readonly render (h1 + dl/dt/dd or
113
+ * similar information-display shape).
114
+ * `page` — Default catch-all when nothing more specific matches.
115
+ */
116
+ export declare function classifyViewType(input: {
117
+ name: string;
118
+ kind: ReactViewDeclaration['kind'];
119
+ filePath: string;
120
+ body: string;
121
+ }): string;
122
+ /**
123
+ * Engines 6.31.0+. Extract sub-component names rendered in this view.
124
+ * Captures `<UpperCaseTag` patterns; consumer (skeleton-emitter) can
125
+ * filter against detected views to keep only known refs. PascalCase-
126
+ * gated to skip HTML tags (`<div>`, `<span>`, etc.).
127
+ */
128
+ export declare function extractUsesComponents(body: string): string[];
129
+ /**
130
+ * Engines 6.31.0+. Extract action declarations from button/link click
131
+ * handlers. Each action gets a name (the handler reference), an
132
+ * optional label (the button's visible text), and an optional variant
133
+ * inferred from context (destructive / primary / secondary).
134
+ *
135
+ * Patterns recognised:
136
+ * <button onClick={handler}>Label</button>
137
+ * <Button onClick={handler} variant="destructive">Label</Button>
138
+ * <Pressable onPress={handler}>Label</Pressable> (RN)
139
+ * <Link onClick={handler}>Label</Link>
140
+ */
141
+ export declare function extractActions(body: string): NonNullable<ReactViewDeclaration['actions']>;
142
+ /**
143
+ * Engines 6.31.0+. Detect a "no items" / empty-state branch in the JSX.
144
+ * Returns true when the body has a conditional render path for the
145
+ * zero-data case.
146
+ */
147
+ export declare function detectEmptyState(body: string): boolean;
63
148
  //# sourceMappingURL=react-views.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-views.d.ts","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kEAAkE;IAClE,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACtF,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;IAClB;;oDAEgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM5D;AAyFD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAwF/E"}
1
+ {"version":3,"file":"react-views.d.ts","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kEAAkE;IAClE,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACtF,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;IAClB;;oDAEgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;6DAGyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;mDAG+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;oCAGgC;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;KAAE,CAAC,CAAC;IACrG;;kCAE8B;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM5D;AAyFD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAqG/E;AA2FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CA+DT;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CA6CzF;AAkFD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWtD"}
@@ -201,6 +201,15 @@ export function parseReactViews(filePath, source) {
201
201
  // the declaration (within 3 source lines). Looks at the ORIGINAL
202
202
  // source so comments aren't already stripped.
203
203
  const docstring = extractLeadingDocstring(source, startLine);
204
+ // Engines 6.31.0+: extract richer structural facts from the
205
+ // component body. Body is the text between the start and end of
206
+ // the declaration in the cleaned (comment-stripped) source.
207
+ const bodyEnd = endOffset !== undefined ? endOffset : Math.min(cleaned.length, offset + 4000);
208
+ const body = cleaned.slice(offset, bodyEnd);
209
+ const viewType = classifyViewType({ name, kind, filePath, body });
210
+ const usesComponents = extractUsesComponents(body);
211
+ const actions = extractActions(body);
212
+ const emptyState = detectEmptyState(body);
204
213
  found.set(name, {
205
214
  name,
206
215
  filePath,
@@ -208,6 +217,10 @@ export function parseReactViews(filePath, source) {
208
217
  kind,
209
218
  isScreen: name.endsWith('Screen'),
210
219
  ...(docstring ? { docstring } : {}),
220
+ viewType,
221
+ ...(usesComponents.length > 0 ? { usesComponents } : {}),
222
+ ...(actions.length > 0 ? { actions } : {}),
223
+ ...(emptyState ? { emptyState: true } : {}),
211
224
  });
212
225
  };
213
226
  // 1. Class components: `class Name extends (React.)Component`
@@ -372,6 +385,283 @@ function cleanLineComments(raw) {
372
385
  return null;
373
386
  return joined.length > 240 ? joined.slice(0, 237) + '...' : joined;
374
387
  }
388
+ /**
389
+ * Engines 6.31.0+. Classify a React component into one of SpecVerse's
390
+ * standard view types from JSX shape + filename hints. Returns the
391
+ * canonical type string. Falls back to `page` (the catch-all
392
+ * top-level type) when no specific pattern matches.
393
+ *
394
+ * Detection table (first match wins, ordered most-specific first):
395
+ *
396
+ * `provider` — Renders `Context.Provider` or `<XContext.Provider>` and
397
+ * little else. Distinguished from generic wrappers by
398
+ * being focused on the Provider alone.
399
+ * `layout` — Filename ends `Layout` AND component renders children
400
+ * via `{children}` or `<Outlet/>` (Next.js / RR shapes).
401
+ * `screen` — Filename ends `Screen` OR uses `SafeAreaView` /
402
+ * `<Screen>` wrapper (RN convention).
403
+ * `modal` — Renders `<Modal>` / `<Dialog>` / `createPortal` /
404
+ * `<dialog>`.
405
+ * `wizard` — Multi-step flow detected by `step` state + numeric
406
+ * progression (heuristic).
407
+ * `dashboard` — Multiple grid/panel children at top level.
408
+ * `form` — Renders a `<form>` with submit handler, or has
409
+ * `onSubmit` / `useForm` patterns.
410
+ * `list` — Renders `<table>`, `.map(item =>`, or `<ul>`/`<ol>`
411
+ * with iteration.
412
+ * `widget` — Tiny render — single root element, no state, ≤2 JSX
413
+ * nodes deep. Pills, badges, icons, status chips.
414
+ * `detail` — Single-entity readonly render (h1 + dl/dt/dd or
415
+ * similar information-display shape).
416
+ * `page` — Default catch-all when nothing more specific matches.
417
+ */
418
+ export function classifyViewType(input) {
419
+ const { name, filePath, body } = input;
420
+ const filenameStem = filePath.split('/').pop()?.replace(/\.(tsx|jsx)$/, '') ?? '';
421
+ // Provider — most specific, check first.
422
+ if (/<\w+\s*\.\s*Provider\b/.test(body) || /createContext\b[\s\S]{0,200}\.\s*Provider/.test(body)) {
423
+ return 'provider';
424
+ }
425
+ // Layout — RootLayout / TabLayout pattern (Next.js / Expo Router).
426
+ if (/Layout$/.test(name) || /Layout$/.test(filenameStem)) {
427
+ if (/\{\s*children\s*\}/.test(body) || /<Outlet\b/.test(body) || /<Slot\b/.test(body)) {
428
+ return 'layout';
429
+ }
430
+ }
431
+ // Screen — RN convention.
432
+ if (/Screen$/.test(name) || /Screen$/.test(filenameStem))
433
+ return 'screen';
434
+ if (/<SafeAreaView\b/.test(body))
435
+ return 'screen';
436
+ // Modal / Dialog / Portal.
437
+ if (/<Modal\b|<Dialog\b|<Drawer\b|createPortal\b|<dialog\b/.test(body))
438
+ return 'modal';
439
+ // Wizard heuristic — multi-step state.
440
+ if (/useState[\s\S]{0,100}\bstep\b/.test(body) && /(setStep|nextStep|step\s*\+)/.test(body)) {
441
+ return 'wizard';
442
+ }
443
+ // Form — submit handler or useForm hook.
444
+ if (/<form\b/.test(body) || /\buseForm\s*\(/.test(body) || /onSubmit\s*=/.test(body)) {
445
+ return 'form';
446
+ }
447
+ // List — table / array.map() / ul/ol with iteration.
448
+ if (/<table\b/.test(body))
449
+ return 'list';
450
+ if (/\.\s*map\s*\(\s*[\w(]+\s*=>/.test(body) && /<(ul|ol|tbody|tr)\b/.test(body)) {
451
+ return 'list';
452
+ }
453
+ if (/\.\s*map\s*\(\s*[\w(]+\s*=>\s*<\w/.test(body)) {
454
+ // Generic .map → JSX (e.g. .map(g => <Card key={g.id}>...))
455
+ return 'list';
456
+ }
457
+ // Dashboard — multiple top-level panels in a grid.
458
+ if (/(grid-cols-|<Grid\b|<Stack\b)/.test(body) && (body.match(/<Card\b|<Panel\b|<Section\b/g) || []).length >= 2) {
459
+ return 'dashboard';
460
+ }
461
+ // Detail — readonly single-entity display shape.
462
+ if (/<dl\b/.test(body) || (/<h1\b/.test(body) && /<dd\b|<p>\s*\{[\w.]+\}/.test(body))) {
463
+ return 'detail';
464
+ }
465
+ // Widget — small/single-element render, no state machinery.
466
+ // Heuristic: short body (<800 chars after JSX trim) AND no useState AND
467
+ // few JSX nodes (≤3 distinct tag opens).
468
+ const tagOpens = (body.match(/<[A-Za-z]/g) || []).length;
469
+ if (body.length < 1500 && !/useState\s*\(/.test(body) && tagOpens <= 5) {
470
+ return 'widget';
471
+ }
472
+ // Default — page (top-level navigable / catch-all).
473
+ return 'page';
474
+ }
475
+ /**
476
+ * Engines 6.31.0+. Extract sub-component names rendered in this view.
477
+ * Captures `<UpperCaseTag` patterns; consumer (skeleton-emitter) can
478
+ * filter against detected views to keep only known refs. PascalCase-
479
+ * gated to skip HTML tags (`<div>`, `<span>`, etc.).
480
+ */
481
+ export function extractUsesComponents(body) {
482
+ const found = new Set();
483
+ const re = /<([A-Z][A-Za-z0-9_]+)/g;
484
+ let m;
485
+ while ((m = re.exec(body)) !== null) {
486
+ const tag = m[1];
487
+ // Skip Context.Provider / Fragment / known React internals.
488
+ if (tag === 'Fragment')
489
+ continue;
490
+ found.add(tag);
491
+ }
492
+ return [...found];
493
+ }
494
+ /**
495
+ * Engines 6.31.0+. Extract action declarations from button/link click
496
+ * handlers. Each action gets a name (the handler reference), an
497
+ * optional label (the button's visible text), and an optional variant
498
+ * inferred from context (destructive / primary / secondary).
499
+ *
500
+ * Patterns recognised:
501
+ * <button onClick={handler}>Label</button>
502
+ * <Button onClick={handler} variant="destructive">Label</Button>
503
+ * <Pressable onPress={handler}>Label</Pressable> (RN)
504
+ * <Link onClick={handler}>Label</Link>
505
+ */
506
+ export function extractActions(body) {
507
+ const out = [];
508
+ const seen = new Set();
509
+ // Match opening tag with onClick OR onPress + handler ref + capture
510
+ // tag content up to closing tag.
511
+ const re = /<(?:button|Button|Pressable|TouchableOpacity|Link|a)\b([^>]*?)on(?:Click|Press)\s*=\s*\{([\s\S]*?)\}([^>]*)>([\s\S]*?)<\/(?:button|Button|Pressable|TouchableOpacity|Link|a)>/g;
512
+ let m;
513
+ while ((m = re.exec(body)) !== null) {
514
+ const beforeAttrs = m[1];
515
+ const rawHandlerExpr = m[2];
516
+ const afterAttrs = m[3];
517
+ const innerText = m[4];
518
+ const handler = parseHandlerName(rawHandlerExpr);
519
+ if (!handler || seen.has(handler))
520
+ continue;
521
+ seen.add(handler);
522
+ // Extract label — first plain-text content inside the tag. Use the
523
+ // balanced-brace stripper so nested template literals + ternaries
524
+ // (`{cond ? `${x}` : ''}`) don't leak partial expression fragments
525
+ // through the label.
526
+ const labelMatch = stripJsxNoise(innerText)
527
+ .replace(/\s+/g, ' ')
528
+ .trim();
529
+ const label = labelMatch.length > 0 && labelMatch.length < 80
530
+ ? labelMatch.slice(0, 80)
531
+ : undefined;
532
+ // Extract variant from class / variant attribute.
533
+ let variant;
534
+ const attrs = beforeAttrs + afterAttrs;
535
+ if (/variant\s*=\s*["']destructive["']|delete|destructive|red-/.test(attrs + handler.toLowerCase())) {
536
+ variant = 'destructive';
537
+ }
538
+ else if (/variant\s*=\s*["']primary["']|primary|cta/.test(attrs)) {
539
+ variant = 'primary';
540
+ }
541
+ else if (/variant\s*=\s*["']secondary["']|secondary/.test(attrs)) {
542
+ variant = 'secondary';
543
+ }
544
+ out.push({
545
+ name: handler,
546
+ ...(label ? { label } : {}),
547
+ ...(variant ? { variant } : {}),
548
+ });
549
+ }
550
+ return out;
551
+ }
552
+ /**
553
+ * Engines 6.31.2+. Pick the most useful identifier out of a JSX-event
554
+ * handler expression. Walks the expression in order of preference:
555
+ *
556
+ * 1. Bare identifier ref (`save`, `props.deleteItem` → `deleteItem`)
557
+ * 2. First call inside an arrow / async arrow / function body
558
+ * (`async () => doStuff()` → `doStuff`)
559
+ *
560
+ * Reserved JS keywords (`async`, `function`, `return`, `await`, `void`,
561
+ * `null`, `undefined`, `true`, `false`) are rejected as handler names so
562
+ * we don't end up emitting `actions: { async: {} }` from
563
+ * `onClick={async () => ...}`.
564
+ */
565
+ function parseHandlerName(expr) {
566
+ const RESERVED = new Set([
567
+ 'async', 'await', 'function', 'return', 'void',
568
+ 'null', 'undefined', 'true', 'false', 'new', 'this',
569
+ ]);
570
+ const cleaned = expr.trim();
571
+ // Bare identifier or dotted access (`save`, `props.save`, `this.save`).
572
+ const bare = cleaned.match(/^[\w.$]+$/);
573
+ if (bare) {
574
+ const tail = cleaned.replace(/^.*\./, '');
575
+ if (!RESERVED.has(tail))
576
+ return tail;
577
+ }
578
+ // Find the first call expression `someFn(...)` inside the handler body.
579
+ const callRe = /\b([A-Za-z_$][\w$]*)\s*\(/g;
580
+ let m;
581
+ while ((m = callRe.exec(cleaned)) !== null) {
582
+ const candidate = m[1];
583
+ if (RESERVED.has(candidate))
584
+ continue;
585
+ return candidate;
586
+ }
587
+ return '';
588
+ }
589
+ /**
590
+ * Engines 6.31.2+. Strip JSX noise (tags + balanced `{...}` expressions
591
+ * including nested template literals) so the visible inner text falls
592
+ * through cleanly. The naive `\{[^}]*\}` regex breaks on
593
+ * `{cond ? `${x}` : ''}` because the first `}` it finds is inside the
594
+ * template literal, not the JSX expression.
595
+ */
596
+ function stripJsxNoise(s) {
597
+ let out = '';
598
+ let i = 0;
599
+ while (i < s.length) {
600
+ const c = s[i];
601
+ if (c === '<') {
602
+ // Skip a balanced tag `<...>`.
603
+ const end = s.indexOf('>', i);
604
+ if (end === -1) {
605
+ i = s.length;
606
+ break;
607
+ }
608
+ i = end + 1;
609
+ continue;
610
+ }
611
+ if (c === '{') {
612
+ // Skip a balanced JSX expression, tracking braces + template
613
+ // literals so embedded `${...}` doesn't terminate us early.
614
+ let depth = 1;
615
+ let inBacktick = false;
616
+ i++;
617
+ while (i < s.length && depth > 0) {
618
+ const ch = s[i];
619
+ if (ch === '\\') {
620
+ i += 2;
621
+ continue;
622
+ }
623
+ if (ch === '`') {
624
+ inBacktick = !inBacktick;
625
+ i++;
626
+ continue;
627
+ }
628
+ if (!inBacktick) {
629
+ if (ch === '{')
630
+ depth++;
631
+ else if (ch === '}')
632
+ depth--;
633
+ }
634
+ i++;
635
+ }
636
+ out += ' ';
637
+ continue;
638
+ }
639
+ out += c;
640
+ i++;
641
+ }
642
+ return out;
643
+ }
644
+ /**
645
+ * Engines 6.31.0+. Detect a "no items" / empty-state branch in the JSX.
646
+ * Returns true when the body has a conditional render path for the
647
+ * zero-data case.
648
+ */
649
+ export function detectEmptyState(body) {
650
+ // Common patterns:
651
+ // if (items.length === 0) return <Empty/>
652
+ // {items.length === 0 && <NoItems/>}
653
+ // {!items.length ? <Empty/> : ...}
654
+ // {isEmpty && <Empty/>}
655
+ if (/\.length\s*===\s*0/.test(body))
656
+ return true;
657
+ if (/!\w+\.length/.test(body))
658
+ return true;
659
+ if (/\bisEmpty\b/.test(body))
660
+ return true;
661
+ if (/<(Empty|NoItems|EmptyState|NoData|NoResults)\b/.test(body))
662
+ return true;
663
+ return false;
664
+ }
375
665
  /** Lightweight paren-matcher (string-aware). Used by parseReactViews's function-decl path. */
376
666
  function findMatchingParenLite(source, openIdx) {
377
667
  let depth = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"react-views.js","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-views.js","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Cross-component imports graph (engines 6.32.6+).
3
+ *
4
+ * Phase A of Dom Williams's "shared library / reference vs implicit
5
+ * include" feedback (2026-05-07). When the analysed source is a
6
+ * monorepo with shared/ libraries (idle_meta has shared/services/,
7
+ * shared/ui/, shared/data/, shared/schemas/), the prepass already
8
+ * decomposes the source into one component per top-level dir — but
9
+ * never models the dependency direction. `IdleApiService` ends up
10
+ * with action steps like `[call] AuthService.login` without any
11
+ * spec-level binding to the `Services` component that owns AuthService.
12
+ *
13
+ * This module walks each component's TS/JS files for `import { X } from
14
+ * '...'` statements, resolves the import path relative to the source
15
+ * tree, and matches the resolved path against the other components'
16
+ * sourceDirs. Result: a map of consumer → (target component → set of
17
+ * imported symbol names). The skeleton-emitter consumes that map to
18
+ * emit `import:` blocks per consumer component.
19
+ *
20
+ * Detection is regex-based — same approach as the express-routes /
21
+ * zod-schemas adapters. Good enough for ES module + CommonJS source;
22
+ * misses dynamic `await import()` and `require(variable)` (rare in
23
+ * spec-able codebases). Type-only imports are included; the realize
24
+ * engine will ignore unused selects.
25
+ */
26
+ import type { StructuralPrepass } from './interface.js';
27
+ import type { SpecVerseFacts } from './index.js';
28
+ export interface ParsedImport {
29
+ /** Raw module specifier from `from '...'`. */
30
+ source: string;
31
+ /**
32
+ * Imported symbol names — what the spec's `import: select:` should
33
+ * list. Default-imports contribute their local name; named imports
34
+ * contribute the imported (not local-aliased) name. Namespace
35
+ * imports (`import * as M from 'mod'`) DO NOT contribute — `M` is a
36
+ * local module alias, not an exported symbol; emitting it as
37
+ * `select: [M]` would be misleading. The `namespaceAlias` field
38
+ * captures it separately for downstream tools that care.
39
+ */
40
+ names: string[];
41
+ /** Local alias for `import * as <X> from 'mod'`, when present. */
42
+ namespaceAlias?: string;
43
+ /** True for type-only imports (`import type { ... } from '...'`). */
44
+ typeOnly: boolean;
45
+ }
46
+ /**
47
+ * Extract all import statements from a TS/JS source file. Handles:
48
+ * - `import { A, B as C } from 'mod'` — named
49
+ * - `import D from 'mod'` — default
50
+ * - `import * as M from 'mod'` — namespace
51
+ * - `import 'mod'` — side-effect (returns names: [])
52
+ * - `import type { A } from 'mod'` — type-only
53
+ * - `const { A } = require('mod')` — CommonJS destructuring
54
+ *
55
+ * Returns an empty array on empty input. Skips comments and string
56
+ * literals (basic heuristic — strips block comments and line comments).
57
+ */
58
+ export declare function parseImports(source: string): ParsedImport[];
59
+ /**
60
+ * Resolve a relative import path against the file that contains the
61
+ * import. Returns a normalised path (no `..` / `.` segments, no leading
62
+ * `./`). Non-relative specifiers (`react`, `@scope/pkg`) return null
63
+ * unless they match an alias in `aliases` (Engines 6.32.7+).
64
+ *
65
+ * The result is the path as it would appear in the source tree, NOT
66
+ * the absolute disk path. Caller compares it against component
67
+ * sourceDirs (which are also tree-relative) to see if the import
68
+ * crosses a component boundary.
69
+ *
70
+ * @param aliases Optional map of alias resolutions from a tsconfig
71
+ * `paths` block. Keys are alias patterns (e.g. `@shared/ui`,
72
+ * `@/*`); values are pre-resolved tree-paths. The resolver
73
+ * substitutes a longest-prefix match before falling back
74
+ * to relative-only resolution.
75
+ */
76
+ export declare function resolveImportPath(fromFile: string, importSpec: string, aliases?: Record<string, string>): string | null;
77
+ /**
78
+ * Engines 6.32.7+ — parse the `compilerOptions.paths` block from a
79
+ * tsconfig.json and return an absolute alias map.
80
+ *
81
+ * tsconfig paths are relative to the tsconfig's directory (or to
82
+ * `compilerOptions.baseUrl` if set). This function resolves them to
83
+ * tree-relative absolute paths so the import resolver can match them
84
+ * against component sourceDirs without further normalisation.
85
+ *
86
+ * Returns an empty object when the tsconfig has no paths block, or
87
+ * when parsing fails (best-effort — broken tsconfigs shouldn't break
88
+ * the analyse pipeline).
89
+ *
90
+ * Note: paths entries like `[ "../../shared/ui/src/index.ts" ]` — we
91
+ * strip the trailing `index.ts` segment so the alias maps to the
92
+ * directory level (which is what the import resolver needs to match
93
+ * against component sourceDirs).
94
+ */
95
+ export declare function parseTsconfigPaths(tsconfigSource: string, tsconfigDir: string): Record<string, string>;
96
+ /**
97
+ * Match a resolved import path against component sourceDirs and return
98
+ * the owning component's suggestedName. Picks the LONGEST matching
99
+ * sourceDir prefix (handles the case where one component's dir is
100
+ * nested inside another's). Returns null if no component owns the path.
101
+ */
102
+ export declare function findOwningComponent(resolvedPath: string, components: NonNullable<SpecVerseFacts['suggestedComponents']>): string | null;
103
+ /**
104
+ * Per-consumer import index: `{ [consumer]: { [target]: [...names] } }`.
105
+ *
106
+ * Symbols are imported names (we don't dedup against locally-defined
107
+ * symbols; the spec-level `import:` block lists what's pulled in, not
108
+ * what's used). Plain-object shape so it serialises cleanly into
109
+ * facts.json and can be re-loaded by downstream consumers (the
110
+ * skeleton emitter, future tools that want a cross-component
111
+ * dependency view, etc.).
112
+ */
113
+ export type ImportsByComponent = Record<string, Record<string, string[]>>;
114
+ export interface BuildImportsByComponentOpts {
115
+ facts: SpecVerseFacts;
116
+ /** Async file reader — accepts a tree-relative or absolute path. */
117
+ readFile: (path: string) => Promise<string>;
118
+ /** Optional: limit which file extensions get parsed. Defaults to TS/JS. */
119
+ extensionFilter?: (path: string) => boolean;
120
+ }
121
+ /**
122
+ * Build the per-consumer imports graph. Each component's files are
123
+ * walked, their imports parsed, and resolved against the source tree;
124
+ * imports that cross into another component's sourceDir are aggregated.
125
+ */
126
+ export declare function buildImportsByComponent(opts: BuildImportsByComponentOpts): Promise<ImportsByComponent>;
127
+ /**
128
+ * Convenience: build the imports graph from a StructuralPrepass backend.
129
+ * The backend's `fileSourceText` provides the file reader; this is the
130
+ * same surface the adapters use to read files.
131
+ */
132
+ export declare function buildImportsByComponentFromBackend(facts: SpecVerseFacts, backend: StructuralPrepass): Promise<ImportsByComponent>;
133
+ //# sourceMappingURL=imports-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports-graph.d.ts","sourceRoot":"","sources":["../../src/analyse-prepass/imports-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAkD3D;AAgBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,MAAM,GAAG,IAAI,CAkCf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBxB;AA2DD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,WAAW,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,GAC7D,MAAM,GAAG,IAAI,CAYf;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAE1E,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,cAAc,CAAC;IACtB,oEAAoE;IACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,2EAA2E;IAC3E,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAwG7B;AAMD;;;;GAIG;AACH,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAK7B"}