@decantr/core 1.0.0 → 1.0.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.
package/README.md CHANGED
@@ -5,7 +5,7 @@ Release channel: `stable`
5
5
 
6
6
  Low-level Decantr compiler and execution-pack foundation.
7
7
 
8
- Most teams should use `@decantr/cli`, `@decantr/registry`, or `@decantr/mcp-server` directly. This package remains inside the Decantr implementation boundary and is not part of the supported public package contract.
8
+ Most teams should use `@decantr/cli`, `@decantr/registry`, or `@decantr/mcp-server` directly. `@decantr/core` is part of the supported Decantr public foundation surface, but it is intentionally lower-level than the usual integration entrypoints.
9
9
 
10
10
  ## Install
11
11
 
@@ -20,14 +20,22 @@ npm install @decantr/core
20
20
  ## What It Exports
21
21
 
22
22
  - execution-pack builders for scaffold, section, page, mutation, and review scopes
23
+ - execution-pack bundle compilation and pack selection helpers
24
+ - canonical pack adapter resolution used by higher-level Decantr surfaces
23
25
  - execution-pack schema URLs
24
26
  - markdown rendering for compiled packs
25
27
  - IR and pipeline helpers used by higher-level Decantr surfaces
26
28
 
29
+ In the current workflow architecture, `@decantr/core` owns the canonical adapter labels used by compiled packs, while runnable greenfield bootstrap adapters are resolved in the CLI on top of those labels.
30
+
27
31
  ## Example
28
32
 
29
33
  ```ts
30
- import { buildReviewPack, renderExecutionPackMarkdown } from '@decantr/core';
34
+ import {
35
+ buildReviewPack,
36
+ renderExecutionPackMarkdown,
37
+ resolvePackAdapter,
38
+ } from '@decantr/core';
31
39
 
32
40
  const pack = buildReviewPack({
33
41
  projectName: 'Acme Console',
@@ -36,6 +44,7 @@ const pack = buildReviewPack({
36
44
  sections: ['overview', 'settings'],
37
45
  });
38
46
 
47
+ const adapter = resolvePackAdapter('react', 'spa');
39
48
  const markdown = renderExecutionPackMarkdown(pack);
40
49
  ```
41
50
 
@@ -49,6 +58,8 @@ This package publishes execution-pack schemas under:
49
58
  - `@decantr/core/schema/mutation-pack.v1.json`
50
59
  - `@decantr/core/schema/review-pack.v1.json`
51
60
  - `@decantr/core/schema/pack-manifest.v1.json`
61
+ - `@decantr/core/schema/execution-pack-bundle.v1.json`
62
+ - `@decantr/core/schema/selected-execution-pack.v1.json`
52
63
 
53
64
  ## License
54
65
 
package/dist/index.d.ts CHANGED
@@ -78,6 +78,7 @@ interface IRTheme {
78
78
  interface IRRoute {
79
79
  path: string;
80
80
  pageId: string;
81
+ shell: string;
81
82
  }
82
83
  /** Which v3 essence layer sourced this node */
83
84
  type IRLayer = 'dna' | 'blueprint' | 'meta';
@@ -225,6 +226,7 @@ interface ScaffoldPackRoute {
225
226
  pageId: string;
226
227
  path: string;
227
228
  patternIds: string[];
229
+ shell?: string;
228
230
  }
229
231
  interface ScaffoldPackData {
230
232
  shell: string;
@@ -235,6 +237,14 @@ interface ScaffoldPackData {
235
237
  };
236
238
  routing: 'hash' | 'history' | 'pathname';
237
239
  features: string[];
240
+ navigation?: {
241
+ commandPalette: boolean;
242
+ hotkeys: Array<{
243
+ key: string;
244
+ route?: string;
245
+ label?: string;
246
+ }>;
247
+ };
238
248
  routes: ScaffoldPackRoute[];
239
249
  }
240
250
  interface ScaffoldExecutionPack extends ExecutionPackBase<ScaffoldPackData> {
@@ -252,6 +262,7 @@ interface SectionPackRoute {
252
262
  pageId: string;
253
263
  path: string;
254
264
  patternIds: string[];
265
+ shell?: string;
255
266
  }
256
267
  interface SectionPackData {
257
268
  sectionId: string;
@@ -372,6 +383,14 @@ interface ScaffoldPackBuilderOptions {
372
383
  antiPatterns?: ExecutionPackAntiPattern[];
373
384
  successChecks?: ExecutionPackSuccessCheck[];
374
385
  tokenBudget?: Partial<ExecutionPackTokenBudget>;
386
+ navigation?: {
387
+ commandPalette: boolean;
388
+ hotkeys: Array<{
389
+ key: string;
390
+ route?: string;
391
+ label?: string;
392
+ }>;
393
+ };
375
394
  }
376
395
  interface SectionPackBuilderOptions extends ScaffoldPackBuilderOptions {
377
396
  }
package/dist/index.js CHANGED
@@ -152,9 +152,16 @@ function buildV3Routes(essence, blueprintPages, structurePages) {
152
152
  explicitRoutes.set(page.id, page.route);
153
153
  }
154
154
  }
155
+ if (explicitRoutes.size > 0) {
156
+ return structurePages.flatMap((page) => {
157
+ const path = explicitRoutes.get(page.id);
158
+ return path ? [{ path, pageId: page.id, shell: page.shell }] : [];
159
+ });
160
+ }
155
161
  return structurePages.map((page, i) => ({
156
- path: explicitRoutes.get(page.id) ?? routePath(page.id, i),
157
- pageId: page.id
162
+ path: routePath(page.id, i),
163
+ pageId: page.id,
164
+ shell: page.shell
158
165
  }));
159
166
  }
160
167
  function convertWiring(wiringResults) {
@@ -263,7 +270,8 @@ async function resolveEssence(essence, resolver) {
263
270
  };
264
271
  const routes = simpleEssence.structure.map((page, i) => ({
265
272
  path: routePath(page.id, i),
266
- pageId: page.id
273
+ pageId: page.id,
274
+ shell: page.shell
267
275
  }));
268
276
  return {
269
277
  essence,
@@ -298,9 +306,9 @@ async function resolveV3Essence(essence, resolver) {
298
306
  const theme = buildThemeFromV3(essence, isAddon);
299
307
  const blueprintPages = blueprint.pages ?? (blueprint.sections ? blueprint.sections.flatMap((s) => s.pages) : [{ id: "home", layout: ["hero"] }]);
300
308
  const defaultShell = blueprint.shell ?? (blueprint.sections?.[0]?.shell ?? "sidebar-main");
301
- const structurePages = blueprintPages.map(
302
- (p) => blueprintPageToStructurePage(p, defaultShell)
303
- );
309
+ const structurePages = blueprint.pages ? blueprint.pages.map((page) => blueprintPageToStructurePage(page, defaultShell)) : blueprint.sections ? blueprint.sections.flatMap(
310
+ (section) => section.pages.map((page) => blueprintPageToStructurePage(page, section.shell ?? defaultShell))
311
+ ) : [blueprintPageToStructurePage({ id: "home", layout: ["hero"] }, defaultShell)];
304
312
  const resolvedPages = await resolvePages(structurePages, resolver, registryTheme);
305
313
  const shellType = defaultShell;
306
314
  const brand = pascalCase(meta.archetype);
@@ -451,7 +459,8 @@ function buildPageIR(page, resolvedPatterns, wiring, theme, density, layer) {
451
459
  children.push(gridNode);
452
460
  }
453
461
  }
454
- const surface = page.surface || `_flex _col _gap${density.gap} _p4 _overflow[auto] _flex1`;
462
+ const gapAtom = density.gap.startsWith("_") ? density.gap : density.gap.startsWith("gap") ? `_${density.gap}` : `_gap${density.gap}`;
463
+ const surface = page.surface || `_flex _col ${gapAtom} _p4 _overauto _flex1`;
455
464
  return {
456
465
  type: "page",
457
466
  id: page.id,
@@ -736,14 +745,15 @@ function collectPatternIds(page) {
736
745
  return [...new Set(patternIds)];
737
746
  }
738
747
  function summarizeRoutes(appNode) {
739
- return appNode.children.map((page) => {
740
- const pageNode = page;
741
- const route = appNode.routes.find((entry) => entry.pageId === pageNode.pageId);
742
- return {
748
+ return appNode.routes.flatMap((route) => {
749
+ const pageNode = findPageNode(appNode, route.pageId);
750
+ if (!pageNode) return [];
751
+ return [{
743
752
  pageId: pageNode.pageId,
744
- path: route?.path || `/${pageNode.pageId}`,
745
- patternIds: collectPatternIds(pageNode)
746
- };
753
+ path: route.path,
754
+ patternIds: collectPatternIds(pageNode),
755
+ shell: route.shell
756
+ }];
747
757
  });
748
758
  }
749
759
  function summarizeSectionRoutes(appNode, input) {
@@ -791,18 +801,33 @@ function renderExecutionPackMarkdown(pack) {
791
801
  lines.push("");
792
802
  if (pack.packType === "scaffold") {
793
803
  const scaffoldPack = pack;
804
+ const scaffoldShells = [...new Set(scaffoldPack.data.routes.map((route) => route.shell).filter(Boolean))];
794
805
  lines.push("## Scaffold Contract");
795
806
  lines.push(`- Shell: ${scaffoldPack.data.shell}`);
807
+ if (scaffoldShells.length > 1) {
808
+ const secondaryShells = scaffoldShells.filter((shell) => shell !== scaffoldPack.data.shell);
809
+ lines.push(`- Shells: ${[`${scaffoldPack.data.shell} (primary)`, ...secondaryShells].join(", ")}`);
810
+ }
796
811
  lines.push(`- Theme: ${scaffoldPack.data.theme.id} (${scaffoldPack.data.theme.mode})`);
797
812
  lines.push(`- Routing: ${scaffoldPack.data.routing}`);
798
813
  if (scaffoldPack.data.features.length > 0) {
799
814
  lines.push(`- Features: ${scaffoldPack.data.features.join(", ")}`);
800
815
  }
816
+ if (scaffoldPack.data.navigation?.commandPalette || scaffoldPack.data.navigation?.hotkeys.length) {
817
+ lines.push("- Navigation:");
818
+ if (scaffoldPack.data.navigation.commandPalette) {
819
+ lines.push(" - command palette required");
820
+ }
821
+ for (const hotkey of scaffoldPack.data.navigation.hotkeys) {
822
+ const target = [hotkey.label, hotkey.route].filter(Boolean).join(" \u2014 ");
823
+ lines.push(` - ${hotkey.key}${target ? `: ${target}` : ""}`);
824
+ }
825
+ }
801
826
  lines.push("");
802
827
  lines.push("## Route Plan");
803
828
  for (const route of scaffoldPack.data.routes) {
804
829
  const patterns = route.patternIds.length > 0 ? route.patternIds.join(", ") : "none";
805
- lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);
830
+ lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ""} [${patterns}]`);
806
831
  }
807
832
  lines.push("");
808
833
  }
@@ -823,7 +848,7 @@ function renderExecutionPackMarkdown(pack) {
823
848
  lines.push("## Section Routes");
824
849
  for (const route of sectionPack.data.routes) {
825
850
  const patterns = route.patternIds.length > 0 ? route.patternIds.join(", ") : "none";
826
- lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);
851
+ lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ""} [${patterns}]`);
827
852
  }
828
853
  lines.push("");
829
854
  }
@@ -872,7 +897,7 @@ function renderExecutionPackMarkdown(pack) {
872
897
  lines.push("## Route Topology");
873
898
  for (const route of mutationPack.data.routes) {
874
899
  const patterns = route.patternIds.length > 0 ? route.patternIds.join(", ") : "none";
875
- lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);
900
+ lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ""} [${patterns}]`);
876
901
  }
877
902
  lines.push("");
878
903
  if (mutationPack.data.workflow.length > 0) {
@@ -897,7 +922,7 @@ function renderExecutionPackMarkdown(pack) {
897
922
  lines.push("## Review Topology");
898
923
  for (const route of reviewPack.data.routes) {
899
924
  const patterns = route.patternIds.length > 0 ? route.patternIds.join(", ") : "none";
900
- lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);
925
+ lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ""} [${patterns}]`);
901
926
  }
902
927
  lines.push("");
903
928
  if (reviewPack.data.focusAreas.length > 0) {
@@ -950,14 +975,20 @@ function resolvePackAdapter(target, platformType) {
950
975
  function listPackSections(essence) {
951
976
  const declaredSections = essence.blueprint.sections;
952
977
  if (declaredSections && declaredSections.length > 0) {
953
- return declaredSections.map((section) => ({
954
- id: section.id,
955
- role: section.role,
956
- shell: section.shell,
957
- description: section.description,
958
- features: section.features,
959
- pageIds: section.pages.map((page) => page.id)
960
- }));
978
+ const routedSectionPages = new Set(
979
+ Object.values(essence.blueprint.routes ?? {}).map((entry) => `${entry.section}:${entry.page}`)
980
+ );
981
+ return declaredSections.map((section) => {
982
+ const pageIds = section.pages.filter((page) => routedSectionPages.size === 0 || routedSectionPages.has(`${section.id}:${page.id}`)).map((page) => page.id);
983
+ return {
984
+ id: section.id,
985
+ role: section.role,
986
+ shell: section.shell,
987
+ description: section.description,
988
+ features: section.features,
989
+ pageIds
990
+ };
991
+ }).filter((section) => section.pageIds.length > 0);
961
992
  }
962
993
  const pages = essence.blueprint.pages ?? [{ id: "home", layout: ["hero"] }];
963
994
  return [{
@@ -972,6 +1003,9 @@ function listPackSections(essence) {
972
1003
  function listPackPages(essence) {
973
1004
  const declaredSections = essence.blueprint.sections;
974
1005
  if (declaredSections && declaredSections.length > 0) {
1006
+ const routedSectionPages = new Set(
1007
+ Object.values(essence.blueprint.routes ?? {}).map((entry) => `${entry.section}:${entry.page}`)
1008
+ );
975
1009
  return declaredSections.flatMap(
976
1010
  (section) => section.pages.map((page) => ({
977
1011
  pageId: page.id,
@@ -979,7 +1013,7 @@ function listPackPages(essence) {
979
1013
  sectionId: section.id,
980
1014
  sectionRole: section.role,
981
1015
  features: section.features
982
- }))
1016
+ })).filter((page) => routedSectionPages.size === 0 || routedSectionPages.has(`${page.sectionId}:${page.pageId}`))
983
1017
  );
984
1018
  }
985
1019
  const pages = essence.blueprint.pages ?? [{ id: "home", layout: ["hero"] }];
@@ -1034,6 +1068,7 @@ function buildScaffoldPack(appNode, options = {}) {
1034
1068
  },
1035
1069
  routing: appNode.routing,
1036
1070
  features: appNode.features,
1071
+ navigation: options.navigation,
1037
1072
  routes
1038
1073
  },
1039
1074
  renderedMarkdown: ""
@@ -1297,7 +1332,17 @@ async function compileExecutionPackBundle(essence, options = {}) {
1297
1332
  resolver: options.resolver
1298
1333
  });
1299
1334
  const scaffold = buildScaffoldPack(pipeline.ir, {
1300
- target: sharedTarget
1335
+ target: sharedTarget,
1336
+ navigation: {
1337
+ commandPalette: Boolean(effectiveEssence.meta.navigation?.command_palette),
1338
+ hotkeys: Array.isArray(effectiveEssence.meta.navigation?.hotkeys) ? effectiveEssence.meta.navigation.hotkeys.filter((hotkey) => Boolean(
1339
+ hotkey && typeof hotkey.key === "string" && typeof hotkey.label === "string"
1340
+ )).map((hotkey) => ({
1341
+ key: hotkey.key,
1342
+ route: hotkey.route,
1343
+ label: hotkey.label
1344
+ })) : []
1345
+ }
1301
1346
  });
1302
1347
  const review = buildReviewPack(pipeline.ir, {
1303
1348
  target: sharedTarget
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pipeline.ts","../src/resolve.ts","../src/utils.ts","../src/ir.ts","../src/ir-helpers.ts","../src/packs.ts"],"sourcesContent":["import type { IRAppNode, IRShellNode, IRStoreNode, IRPageNode, IRLayer } from './types.js';\nimport type { EssenceFile } from '@decantr/essence-spec';\nimport { validateEssence, isV3, migrateV2ToV3 } from '@decantr/essence-spec';\nimport { createResolver } from '@decantr/registry';\nimport type { ContentResolver } from '@decantr/registry';\nimport { resolveEssence } from './resolve.js';\nimport { buildPageIR } from './ir.js';\nimport { pascalCase } from './utils.js';\n\nfunction extractRouting(essence: EssenceFile): 'hash' | 'history' | 'pathname' {\n if (isV3(essence)) {\n return essence.meta.platform.routing || 'hash';\n }\n return (essence as { platform?: { routing?: string } }).platform?.routing as 'hash' | 'history' | 'pathname' || 'hash';\n}\n\nexport interface PipelineOptions {\n /** Path to content directory (patterns, archetypes, themes) */\n contentRoot?: string;\n\n /** Override paths for local content resolution */\n overridePaths?: string[];\n\n /** Only resolve specific page(s) */\n pageFilter?: string;\n\n /** Optional custom resolver for hosted or in-memory execution */\n resolver?: ContentResolver;\n}\n\nexport interface PipelineResult {\n /** The framework-agnostic intermediate representation */\n ir: IRAppNode;\n}\n\n/**\n * Run the Design Pipeline:\n * 1. Validate Essence against schema + guard rules\n * 2. Resolve all references (patterns, theme, wiring) from registry\n * 3. Build framework-agnostic IR tree\n * 4. Return IR (no code generation — that's the consumer's job)\n */\nexport async function runPipeline(\n essence: EssenceFile,\n options: PipelineOptions,\n): Promise<PipelineResult> {\n // 1. Validate\n const validation = validateEssence(essence);\n if (!validation.valid) {\n throw new Error(`Invalid essence: ${validation.errors.join(', ')}`);\n }\n\n // 2. Auto-migrate v2 → v3 before processing\n const effectiveEssence = isV3(essence) ? essence : migrateV2ToV3(essence);\n\n // 3. Create resolver and resolve\n const resolver = options.resolver ?? (() => {\n if (!options.contentRoot) {\n throw new Error('Pipeline options must include either a contentRoot or a resolver.');\n }\n\n return createResolver({\n contentRoot: options.contentRoot,\n overridePaths: options.overridePaths,\n });\n })();\n\n const resolved = await resolveEssence(effectiveEssence, resolver);\n\n // 4. Build IR pages (v3 sources get layer metadata)\n const layer: IRLayer | undefined = resolved.isV3Source ? 'blueprint' : undefined;\n const pageNodes: IRPageNode[] = [];\n for (const rp of resolved.pages) {\n const pageIR = buildPageIR(\n rp.page,\n rp.patterns,\n rp.wiring,\n resolved.registryTheme,\n { gap: resolved.density.gap },\n layer,\n );\n pageNodes.push(pageIR);\n }\n\n // Apply page filter\n let filteredPages = pageNodes;\n if (options.pageFilter) {\n filteredPages = pageNodes.filter(p => p.pageId === options.pageFilter);\n }\n\n // 4. Build shell node\n const shellNode: IRShellNode = {\n type: 'shell',\n id: 'shell',\n children: [],\n config: resolved.shell,\n };\n\n // 5. Build store node\n const storeNode: IRStoreNode = {\n type: 'store',\n id: 'store',\n children: [],\n pageSignals: pageNodes.map(p => ({\n name: p.pageId,\n pascalName: pascalCase(p.pageId),\n })),\n };\n\n // 6. Assemble app node\n const appNode: IRAppNode = {\n type: 'app',\n id: 'app',\n children: filteredPages,\n theme: resolved.theme,\n routes: resolved.routes,\n routing: extractRouting(resolved.essence),\n shell: shellNode,\n store: storeNode,\n features: resolved.features,\n };\n\n return { ir: appNode };\n}\n","import type {\n EssenceFile, Essence, SectionedEssence, EssenceV3, StructurePage,\n LayoutItem, PatternRef, ColumnLayout, BlueprintPage,\n} from '@decantr/essence-spec';\nimport { isSimple, isSectioned, isV3, computeDensity } from '@decantr/essence-spec';\nimport { pascalCase } from './utils.js';\nimport type { ContentResolver, Pattern, Theme as RegistryTheme, ResolvedPreset } from '@decantr/registry';\nimport { resolvePatternPreset, detectWirings } from '@decantr/registry';\nimport type {\n IRWiring, IRWiringSignal, IRShellConfig, IRNavItem,\n IRThemeDecoration, IRTheme, IRRoute, IRVisualEffect,\n} from './types.js';\n\nexport interface ResolvedPage {\n page: StructurePage;\n patterns: Map<string, { pattern: Pattern; preset: ResolvedPreset }>;\n wiring: IRWiring | null;\n}\n\nexport interface ResolvedEssence {\n essence: EssenceFile;\n pages: ResolvedPage[];\n registryTheme: RegistryTheme | null;\n density: { gap: string; level: string };\n theme: IRTheme;\n shell: IRShellConfig;\n routes: IRRoute[];\n features: string[];\n /** True when the source essence was v3 (DNA/Blueprint/Meta) */\n isV3Source: boolean;\n}\n\n// ─── Icon Mapping ─────────────────────────────────────────────\n\nconst NAV_ICONS: Record<string, string> = {\n overview: 'layout-dashboard',\n dashboard: 'layout-dashboard',\n home: 'home',\n analytics: 'bar-chart-3',\n settings: 'settings',\n users: 'users',\n billing: 'credit-card',\n reports: 'file-text',\n catalog: 'grid',\n products: 'package',\n orders: 'shopping-cart',\n messages: 'message-square',\n notifications: 'bell',\n activity: 'activity',\n search: 'search',\n profile: 'user',\n team: 'users',\n integrations: 'puzzle',\n api: 'code',\n docs: 'book-open',\n help: 'help-circle',\n projects: 'folder',\n workflows: 'git-branch',\n monitoring: 'monitor',\n security: 'shield',\n storage: 'database',\n deployments: 'rocket',\n logs: 'scroll-text',\n};\n\n// ─── Core styles that don't need explicit addon registration ──\n\nconst CORE_STYLES = new Set(['auradecantism']);\n\n// ─── Helpers ──────────────────────────────────────────────────\n\nfunction isPatternRef(item: LayoutItem): item is PatternRef {\n return typeof item === 'object' && 'pattern' in item;\n}\n\nfunction isColumnLayout(item: LayoutItem): item is ColumnLayout {\n return typeof item === 'object' && 'cols' in item;\n}\n\nfunction extractLayoutRefs(layout: LayoutItem[]): { id: string; explicitPreset?: string; alias?: string }[] {\n const refs: { id: string; explicitPreset?: string; alias?: string }[] = [];\n for (const item of layout) {\n if (typeof item === 'string') {\n refs.push({ id: item });\n } else if (isPatternRef(item)) {\n refs.push({ id: item.pattern, explicitPreset: item.preset, alias: item.as });\n } else if (isColumnLayout(item)) {\n for (const col of item.cols) {\n refs.push({ id: col });\n }\n }\n }\n return refs;\n}\n\n/** Flatten a layout array so column children are promoted to top-level for wiring detection */\nfunction flattenLayoutForWiring(layout: LayoutItem[]): LayoutItem[] {\n const flat: LayoutItem[] = [];\n for (const item of layout) {\n if (typeof item === 'string') {\n flat.push(item);\n } else if (isPatternRef(item)) {\n flat.push(item);\n } else if (isColumnLayout(item)) {\n // Promote column children as string refs\n for (const col of item.cols) {\n flat.push(col);\n }\n }\n }\n return flat;\n}\n\nfunction routePath(pageId: string, index: number): string {\n if (index === 0) return '/';\n // AUTO: Pages ending in \"-detail\" get a dynamic :id route parameter\n if (pageId.endsWith('-detail')) {\n return `/${pageId}/:id`;\n }\n return `/${pageId}`;\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction buildNavItems(pages: StructurePage[], routes?: IRRoute[]): IRNavItem[] {\n const routeLookup = new Map<string, string>(\n (routes ?? []).map((route) => [route.pageId, route.path]),\n );\n return pages.map((page, i) => ({\n href: routeLookup.get(page.id) ?? routePath(page.id, i),\n icon: NAV_ICONS[page.id] || 'circle',\n label: capitalize(page.id.replace(/-/g, ' ')),\n }));\n}\n\nfunction buildThemeDecoration(theme: RegistryTheme): IRThemeDecoration | null {\n const shell = theme.shell;\n if (!shell) return null;\n // The JSON may have additional fields not in the strict type\n const shellAny = shell as unknown as Record<string, unknown>;\n return {\n root: shell.root || '',\n nav: shell.nav || '',\n header: shell.header || '',\n brand: (shellAny['brand'] as string) || '',\n navLabel: (shellAny['navLabel'] as string) || '',\n // AUTO: default nav style is 'pill' when the theme does not declare one\n navStyle: shell.nav_style || 'pill',\n defaultNavState: (shellAny['default_nav_state'] as string) || 'expanded',\n dimensions: shell.dimensions || null,\n };\n}\n\nfunction buildTheme(essence: Essence, isAddon: boolean): IRTheme {\n return {\n id: essence.theme.id,\n mode: essence.theme.mode,\n shape: essence.theme.shape || null,\n isAddon,\n };\n}\n\nfunction buildThemeFromV3(essence: EssenceV3, isAddon: boolean): IRTheme {\n const dna = essence.dna;\n return {\n id: dna.theme.id,\n mode: dna.theme.mode,\n shape: dna.radius.philosophy || dna.theme.shape || null,\n isAddon,\n };\n}\n\n/** Convert v3 BlueprintPage to the StructurePage shape used by the resolver pipeline */\nfunction blueprintPageToStructurePage(page: BlueprintPage, defaultShell: string): StructurePage {\n return {\n id: page.id,\n shell: page.shell_override ?? defaultShell,\n layout: page.layout,\n ...(page.surface ? { surface: page.surface } : {}),\n };\n}\n\nfunction buildV3Routes(\n essence: EssenceV3,\n blueprintPages: BlueprintPage[],\n structurePages: StructurePage[],\n): IRRoute[] {\n const explicitRoutes = new Map<string, string>();\n\n for (const [path, entry] of Object.entries(essence.blueprint.routes ?? {})) {\n if (entry?.page && !explicitRoutes.has(entry.page)) {\n explicitRoutes.set(entry.page, path);\n }\n }\n\n for (const page of blueprintPages) {\n if (page.route && !explicitRoutes.has(page.id)) {\n explicitRoutes.set(page.id, page.route);\n }\n }\n\n return structurePages.map((page, i) => ({\n path: explicitRoutes.get(page.id) ?? routePath(page.id, i),\n pageId: page.id,\n }));\n}\n\nfunction convertWiring(wiringResults: ReturnType<typeof detectWirings>): IRWiring | null {\n if (wiringResults.length === 0) return null;\n\n const signals: IRWiringSignal[] = [];\n const props: Record<string, Record<string, string>> = {};\n const hookProps: Record<string, Record<string, string>> = {};\n const hookSet = new Set<IRWiringSignal['hookType']>();\n\n for (const result of wiringResults) {\n for (const signal of result.signals) {\n // Avoid duplicate signals\n if (!signals.some(s => s.name === signal.name)) {\n const setter = 'set' + signal.name.charAt(0).toUpperCase() + signal.name.slice(1);\n signals.push({\n name: signal.name,\n setter,\n init: signal.init,\n hookType: signal.hookType,\n });\n hookSet.add(signal.hookType);\n }\n }\n for (const [alias, aliasProps] of Object.entries(result.props)) {\n props[alias] = { ...props[alias], ...aliasProps };\n }\n // AUTO: Merge hook-based prop mappings\n for (const [alias, aliasHookProps] of Object.entries(result.hookProps)) {\n hookProps[alias] = { ...hookProps[alias], ...aliasHookProps };\n }\n }\n\n return { signals, props, hooks: [...hookSet], hookProps };\n}\n\n// ─── Visual Effects Resolution ────────────────────────────────\n\nexport function resolveVisualEffects(\n theme: RegistryTheme,\n pattern: Pattern,\n _slot?: string,\n): IRVisualEffect | null {\n const effects = theme.effects;\n if (!effects?.enabled) return null;\n\n const typeMapping = effects.type_mapping || {};\n const componentFallback = effects.component_fallback || {};\n const intensity = effects.intensity || 'medium';\n const intensityValues = effects.intensity_values || {};\n\n // Check pattern tags / components against type_mapping\n let decorators: string[] = [];\n\n // Check if any pattern components match the component_fallback\n for (const comp of pattern.components || []) {\n const effectType = componentFallback[comp];\n if (effectType && typeMapping[effectType]) {\n decorators = [...decorators, ...typeMapping[effectType]];\n }\n }\n\n if (decorators.length === 0) return null;\n\n // Deduplicate\n decorators = [...new Set(decorators)];\n\n return {\n decorators,\n intensity: intensityValues[intensity] || {},\n };\n}\n\n// ─── Main Resolution ─────────────────────────────────────────\n\n/** Resolve all external references in an Essence file */\nexport async function resolveEssence(\n essence: EssenceFile,\n resolver: ContentResolver,\n): Promise<ResolvedEssence> {\n // ─── V3 path: read from dna + blueprint layers ───────────\n if (isV3(essence)) {\n return resolveV3Essence(essence, resolver);\n }\n\n // ─── V2 path: simple or sectioned ────────────────────────\n let simpleEssence: Essence;\n if (isSimple(essence)) {\n simpleEssence = essence;\n } else if (isSectioned(essence)) {\n const sectioned = essence as SectionedEssence;\n if (sectioned.sections.length > 1) {\n throw new Error(\n `Sectioned essences with ${sectioned.sections.length} sections are not yet supported. ` +\n `Only single-section sectioned essences can be processed. ` +\n `Consider migrating to v3 format using migrateV2ToV3().`,\n );\n }\n const firstSection = sectioned.sections[0];\n simpleEssence = {\n version: sectioned.version,\n archetype: firstSection.archetype,\n theme: firstSection.theme,\n personality: sectioned.personality,\n platform: sectioned.platform,\n structure: firstSection.structure,\n features: firstSection.features || [],\n density: sectioned.density,\n guard: sectioned.guard,\n target: sectioned.target,\n };\n } else {\n throw new Error('Invalid essence format');\n }\n\n // 1. Theme resolution (replaces former recipe resolution)\n let registryTheme: RegistryTheme | null = null;\n const themeResult = await resolver.resolve('theme', simpleEssence.theme.id);\n if (themeResult) {\n registryTheme = themeResult.item;\n }\n\n // 2. Density computation\n const themeSpatial = registryTheme?.spatial;\n const density = computeDensity(simpleEssence.personality, themeSpatial ? {\n density_bias: themeSpatial.density_bias,\n content_gap_shift: themeSpatial.content_gap_shift,\n } : undefined);\n\n // 3. Theme\n const themeId = simpleEssence.theme.id;\n const isAddon = themeId.startsWith('custom:') || !CORE_STYLES.has(themeId);\n const theme = buildTheme(simpleEssence, isAddon);\n\n // 4. Resolve each page\n const resolvedPages = await resolvePages(simpleEssence.structure, resolver, registryTheme);\n\n // 5. Shell config\n const shellType = simpleEssence.structure[0]?.shell || 'sidebar-main';\n const brand = pascalCase(simpleEssence.archetype);\n const nav = buildNavItems(simpleEssence.structure);\n const decoration = registryTheme ? buildThemeDecoration(registryTheme) : null;\n\n const shell: IRShellConfig = {\n type: shellType,\n brand,\n nav,\n inset: false,\n decoration,\n };\n\n // 6. Routes\n const routes: IRRoute[] = simpleEssence.structure.map((page, i) => ({\n path: routePath(page.id, i),\n pageId: page.id,\n }));\n\n return {\n essence,\n pages: resolvedPages,\n registryTheme,\n density: { gap: density.content_gap, level: density.level },\n theme,\n shell,\n routes,\n features: simpleEssence.features ?? [],\n isV3Source: false,\n };\n}\n\n// ─── V3 Resolution ──────────────────────────────────────────\n\nasync function resolveV3Essence(\n essence: EssenceV3,\n resolver: ContentResolver,\n): Promise<ResolvedEssence> {\n const { dna, blueprint, meta } = essence;\n\n // 1. Theme resolution (replaces former recipe resolution)\n let registryTheme: RegistryTheme | null = null;\n const themeResult = await resolver.resolve('theme', dna.theme.id);\n if (themeResult) {\n registryTheme = themeResult.item;\n }\n\n // 2. Density — v3 carries density directly in dna.spacing\n const themeSpatial = registryTheme?.spatial;\n const density = computeDensity(dna.personality, themeSpatial ? {\n density_bias: themeSpatial.density_bias,\n content_gap_shift: themeSpatial.content_gap_shift,\n } : undefined);\n // V3 dna.spacing is authoritative; override computed density with DNA values\n const densityResult = {\n gap: dna.spacing.content_gap || density.content_gap,\n level: dna.spacing.density || density.level,\n };\n\n // 3. Theme from DNA layer\n const themeId = dna.theme.id;\n const isAddon = themeId.startsWith('custom:') || !CORE_STYLES.has(themeId);\n const theme = buildThemeFromV3(essence, isAddon);\n\n // 4. Convert blueprint pages to StructurePage and resolve\n // V3.1 essences may use sections instead of pages; flatten sections into pages\n const blueprintPages = blueprint.pages ?? (\n blueprint.sections\n ? blueprint.sections.flatMap(s => s.pages)\n : [{ id: 'home', layout: ['hero'] as LayoutItem[] }]\n );\n const defaultShell = blueprint.shell ?? (\n blueprint.sections?.[0]?.shell ?? 'sidebar-main'\n );\n const structurePages: StructurePage[] = blueprintPages.map(\n p => blueprintPageToStructurePage(p, defaultShell),\n );\n const resolvedPages = await resolvePages(structurePages, resolver, registryTheme);\n\n // 5. Shell config from blueprint\n const shellType = defaultShell;\n const brand = pascalCase(meta.archetype);\n const routes = buildV3Routes(essence, blueprintPages, structurePages);\n const nav = buildNavItems(structurePages, routes);\n const decoration = registryTheme ? buildThemeDecoration(registryTheme) : null;\n\n const shell: IRShellConfig = {\n type: shellType,\n brand,\n nav,\n inset: false,\n decoration,\n };\n\n return {\n essence,\n pages: resolvedPages,\n registryTheme,\n density: densityResult,\n theme,\n shell,\n routes,\n features: blueprint.features ?? [],\n isV3Source: true,\n };\n}\n\n// ─── Shared page resolution ────────────────────────────────\n\nasync function resolvePages(\n pages: StructurePage[],\n resolver: ContentResolver,\n registryTheme: RegistryTheme | null,\n): Promise<ResolvedPage[]> {\n const resolvedPages: ResolvedPage[] = [];\n for (const page of pages) {\n const refs = extractLayoutRefs(page.layout);\n const patterns = new Map<string, { pattern: Pattern; preset: ResolvedPreset }>();\n\n for (const ref of refs) {\n const patternResult = await resolver.resolve('pattern', ref.id);\n if (patternResult) {\n const preset = resolvePatternPreset(\n patternResult.item,\n ref.explicitPreset,\n registryTheme?.pattern_preferences?.default_presets,\n );\n const key = ref.alias || ref.id;\n patterns.set(key, { pattern: patternResult.item, preset });\n }\n }\n\n // Detect wiring (flatten cols so column children are visible)\n const wiringResults = detectWirings(flattenLayoutForWiring(page.layout));\n const wiring = convertWiring(wiringResults);\n\n resolvedPages.push({ page, patterns, wiring });\n }\n return resolvedPages;\n}\n","/** Convert a kebab-case or snake_case string to PascalCase */\nexport function pascalCase(str: string): string {\n return str.split(/[-_]/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('');\n}\n","import type {\n IRPageNode, IRPatternNode, IRGridNode, IRWiring,\n IRCardWrapping, IRPatternMeta, IRVisualEffect, IRNode, IRLayer,\n} from './types.js';\nimport type { StructurePage, LayoutItem, PatternRef, ColumnLayout } from '@decantr/essence-spec';\nimport type { Pattern, Theme as RegistryTheme, ResolvedPreset } from '@decantr/registry';\nimport { resolveVisualEffects } from './resolve.js';\n\nexport interface ResolvedPatternEntry {\n pattern: Pattern;\n preset: ResolvedPreset;\n}\n\nfunction isPatternRef(item: LayoutItem): item is PatternRef {\n return typeof item === 'object' && 'pattern' in item;\n}\n\nfunction isColumnLayout(item: LayoutItem): item is ColumnLayout {\n return typeof item === 'object' && 'cols' in item;\n}\n\nfunction getPatternAlias(item: LayoutItem): string {\n if (typeof item === 'string') return item;\n if (isPatternRef(item)) return item.as || item.pattern;\n return '';\n}\n\nfunction getPatternId(item: LayoutItem): string {\n if (typeof item === 'string') return item;\n if (isPatternRef(item)) return item.pattern;\n return '';\n}\n\nfunction shouldWrapInCard(\n pattern: Pattern,\n preset: ResolvedPreset,\n theme: RegistryTheme | null,\n): boolean {\n // Hero/row/stack layouts are standalone\n const layout = preset.layout.layout;\n if (layout === 'hero' || layout === 'row') return false;\n\n // Pattern explicitly opts out\n if (pattern.contained === false) return false;\n\n // Theme spatial says no cards\n const cardWrapping = theme?.spatial?.card_wrapping;\n if (cardWrapping === 'none') return false;\n\n // Minimal: only wrap if pattern has presets (complex pattern)\n if (cardWrapping === 'minimal') {\n return Object.keys(pattern.presets).length > 0;\n }\n\n // Default: wrap\n return true;\n}\n\nfunction buildCardWrapping(\n pattern: Pattern,\n theme: RegistryTheme | null,\n): IRCardWrapping {\n const mode = theme?.spatial?.card_wrapping || 'always';\n return {\n mode: mode as IRCardWrapping['mode'],\n headerLabel: pattern.name,\n };\n}\n\nfunction buildPatternNode(\n patternId: string,\n alias: string,\n resolved: ResolvedPatternEntry | undefined,\n wiring: IRWiring | null,\n theme: RegistryTheme | null,\n density: { gap: string },\n layer?: IRLayer,\n): IRPatternNode {\n const pattern = resolved?.pattern;\n const preset = resolved?.preset;\n\n const layout = preset?.layout.layout || 'column';\n const isStandalone = layout === 'hero' || layout === 'row';\n const contained = pattern && preset ? shouldWrapInCard(pattern, preset, theme) : false;\n const components = pattern?.components || [];\n\n const patternMeta: IRPatternMeta = {\n patternId,\n preset: preset?.preset || 'default',\n alias,\n layout,\n contained,\n standalone: isStandalone,\n code: preset?.code ? { imports: preset.code.imports, example: preset.code.example } : null,\n components,\n };\n\n const card = contained && !isStandalone && pattern\n ? buildCardWrapping(pattern, theme)\n : null;\n\n const wireProps = wiring?.props[alias] || wiring?.props[patternId] || null;\n\n // Resolve visual effects from theme + pattern when available\n const visualEffects = theme && pattern\n ? resolveVisualEffects(theme, pattern)\n : null;\n\n return {\n type: 'pattern',\n id: alias,\n children: [],\n pattern: patternMeta,\n card,\n visualEffects,\n wireProps,\n spatial: { gap: density.gap },\n ...(layer ? { layer } : {}),\n };\n}\n\n/** Build IR tree for a single page from its resolved structure + patterns */\nexport function buildPageIR(\n page: StructurePage,\n resolvedPatterns: Map<string, ResolvedPatternEntry>,\n wiring: IRWiring | null,\n theme: RegistryTheme | null,\n density: { gap: string },\n layer?: IRLayer,\n): IRPageNode {\n const children: IRNode[] = [];\n\n for (const item of page.layout) {\n if (typeof item === 'string') {\n // Simple string → full-width pattern\n const resolved = resolvedPatterns.get(item);\n children.push(buildPatternNode(item, item, resolved, wiring, theme, density, layer));\n } else if (isPatternRef(item)) {\n // PatternRef → pattern with optional preset/alias\n const alias = item.as || item.pattern;\n const resolved = resolvedPatterns.get(alias) || resolvedPatterns.get(item.pattern);\n children.push(buildPatternNode(item.pattern, alias, resolved, wiring, theme, density, layer));\n } else if (isColumnLayout(item)) {\n // ColumnLayout → grid with pattern children\n const cols = item.cols;\n const breakpoint = item.at || null;\n const spans = item.span || null;\n\n // Normalize spans: fill in missing columns with weight 1\n let normalizedSpans: Record<string, number> | null = null;\n if (spans) {\n normalizedSpans = {};\n for (const col of cols) {\n normalizedSpans[col] = spans[col] || 1;\n }\n }\n\n const gridChildren: IRNode[] = [];\n for (const col of cols) {\n const resolved = resolvedPatterns.get(col);\n gridChildren.push(buildPatternNode(col, col, resolved, wiring, theme, density, layer));\n }\n\n const totalCols = normalizedSpans\n ? Object.values(normalizedSpans).reduce((a, b) => a + b, 0)\n : cols.length;\n\n // AUTO: Pass through multi-breakpoint and container query config from ColumnLayout\n const breakpoints = item.breakpoints?.map(bp => ({ at: bp.at, cols: bp.cols })) || null;\n const responsive = item.responsive || null;\n\n const gridNode: IRGridNode = {\n type: 'grid',\n id: `grid-${cols.join('-')}`,\n children: gridChildren,\n cols: totalCols,\n spans: normalizedSpans,\n breakpoint,\n breakpoints,\n responsive,\n spatial: { gap: density.gap },\n ...(layer ? { layer } : {}),\n };\n children.push(gridNode);\n }\n }\n\n const surface = page.surface || `_flex _col _gap${density.gap} _p4 _overflow[auto] _flex1`;\n\n return {\n type: 'page',\n id: page.id,\n children,\n pageId: page.id,\n surface,\n wiring,\n ...(layer ? { layer } : {}),\n };\n}\n","import type { IRNode, IRPatternNode, IRGridNode } from './types.js';\n\n/** Depth-first walk of IR tree, calling visitor on each node */\nexport function walkIR(\n node: IRNode,\n visitor: (node: IRNode, parent: IRNode | null) => void,\n parent: IRNode | null = null,\n): void {\n visitor(node, parent);\n for (const child of node.children) {\n walkIR(child, visitor, node);\n }\n}\n\n/** Find all nodes of a specific type */\nexport function findNodes<T extends IRNode>(root: IRNode, type: string): T[] {\n const results: T[] = [];\n walkIR(root, (node) => {\n if (node.type === type) {\n results.push(node as T);\n }\n });\n return results;\n}\n\n/** Count total patterns in an IR tree */\nexport function countPatterns(root: IRNode): number {\n return findNodes(root, 'pattern').length;\n}\n\n/** Validate IR tree structure (no orphaned grids, patterns have meta, etc.) */\nexport function validateIR(root: IRNode): string[] {\n const errors: string[] = [];\n\n walkIR(root, (node, parent) => {\n if (node.type === 'grid') {\n const grid = node as IRGridNode;\n if (grid.children.length === 0) {\n errors.push(`Grid node \"${grid.id}\" has no children`);\n }\n }\n\n if (node.type === 'pattern') {\n const pattern = node as IRPatternNode;\n if (!pattern.pattern) {\n errors.push(`Pattern node \"${pattern.id}\" is missing pattern meta`);\n }\n if (!pattern.pattern.patternId) {\n errors.push(`Pattern node \"${pattern.id}\" has no patternId`);\n }\n }\n\n if (node.type === 'page') {\n if (!node.id) {\n errors.push('Page node is missing id');\n }\n }\n });\n\n return errors;\n}\n","import { isV3, migrateV2ToV3 } from '@decantr/essence-spec';\nimport type { EssenceFile, EssenceV3 } from '@decantr/essence-spec';\nimport type { ContentResolver } from '@decantr/registry';\nimport { walkIR } from './ir-helpers.js';\nimport { runPipeline } from './pipeline.js';\nimport type { IRAppNode, IRNode, IRPageNode, IRPatternNode } from './types.js';\n\nexport type ExecutionPackType = 'scaffold' | 'section' | 'page' | 'mutation' | 'review';\n\nexport const EXECUTION_PACK_SCHEMA_URLS = {\n scaffold: 'https://decantr.ai/schemas/scaffold-pack.v1.json',\n section: 'https://decantr.ai/schemas/section-pack.v1.json',\n page: 'https://decantr.ai/schemas/page-pack.v1.json',\n mutation: 'https://decantr.ai/schemas/mutation-pack.v1.json',\n review: 'https://decantr.ai/schemas/review-pack.v1.json',\n} as const;\n\nexport const PACK_MANIFEST_SCHEMA_URL = 'https://decantr.ai/schemas/pack-manifest.v1.json';\nexport const EXECUTION_PACK_BUNDLE_SCHEMA_URL = 'https://decantr.ai/schemas/execution-pack-bundle.v1.json';\nexport const SELECTED_EXECUTION_PACK_SCHEMA_URL = 'https://decantr.ai/schemas/selected-execution-pack.v1.json';\n\nexport interface ExecutionPackTarget {\n platform: 'web';\n framework: string | null;\n runtime: string | null;\n adapter: string;\n}\n\nexport interface ExecutionPackScope {\n appId: string;\n pageIds: string[];\n patternIds: string[];\n}\n\nexport interface ExecutionPackExample {\n id: string;\n label: string;\n language: string;\n snippet: string;\n}\n\nexport interface ExecutionPackAntiPattern {\n id: string;\n summary: string;\n guidance: string;\n}\n\nexport interface ExecutionPackSuccessCheck {\n id: string;\n label: string;\n severity: 'error' | 'warn' | 'info';\n}\n\nexport interface ExecutionPackTokenBudget {\n target: number;\n max: number;\n strategy: string[];\n}\n\nexport interface ExecutionPackBase<TData> {\n $schema: string;\n packVersion: '1.0.0';\n packType: ExecutionPackType;\n objective: string;\n target: ExecutionPackTarget;\n preset: string | null;\n scope: ExecutionPackScope;\n requiredSetup: string[];\n allowedVocabulary: string[];\n examples: ExecutionPackExample[];\n antiPatterns: ExecutionPackAntiPattern[];\n successChecks: ExecutionPackSuccessCheck[];\n tokenBudget: ExecutionPackTokenBudget;\n data: TData;\n renderedMarkdown: string;\n}\n\nexport interface PackManifestEntry {\n id: string;\n markdown: string;\n json: string;\n}\n\nexport interface PackManifestSectionEntry extends PackManifestEntry {\n pageIds: string[];\n}\n\nexport interface PackManifestPageEntry extends PackManifestEntry {\n sectionId: string | null;\n sectionRole: string | null;\n}\n\nexport interface PackManifestMutationEntry extends PackManifestEntry {\n mutationType: MutationPackKind;\n}\n\nexport interface ExecutionPackManifest {\n $schema: string;\n version: '1.0.0';\n generatedAt: string;\n scaffold: PackManifestEntry | null;\n review: PackManifestEntry | null;\n sections: PackManifestSectionEntry[];\n pages: PackManifestPageEntry[];\n mutations: PackManifestMutationEntry[];\n}\n\nexport interface ScaffoldPackRoute {\n pageId: string;\n path: string;\n patternIds: string[];\n}\n\nexport interface ScaffoldPackData {\n shell: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routing: 'hash' | 'history' | 'pathname';\n features: string[];\n routes: ScaffoldPackRoute[];\n}\n\nexport interface ScaffoldExecutionPack extends ExecutionPackBase<ScaffoldPackData> {\n packType: 'scaffold';\n}\n\nexport interface SectionPackInput {\n id: string;\n role: string;\n shell: string;\n description: string;\n features: string[];\n pageIds: string[];\n}\n\nexport interface SectionPackRoute {\n pageId: string;\n path: string;\n patternIds: string[];\n}\n\nexport interface SectionPackData {\n sectionId: string;\n role: string;\n shell: string;\n description: string;\n features: string[];\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routes: SectionPackRoute[];\n}\n\nexport interface SectionExecutionPack extends ExecutionPackBase<SectionPackData> {\n packType: 'section';\n}\n\nexport interface PagePackInput {\n pageId: string;\n shell: string;\n sectionId: string | null;\n sectionRole: string | null;\n features: string[];\n}\n\nexport interface PagePackPattern {\n id: string;\n alias: string;\n preset: string;\n layout: string;\n}\n\nexport interface PagePackData {\n pageId: string;\n path: string;\n shell: string;\n sectionId: string | null;\n sectionRole: string | null;\n features: string[];\n surface: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n wiringSignals: string[];\n patterns: PagePackPattern[];\n}\n\nexport interface PageExecutionPack extends ExecutionPackBase<PagePackData> {\n packType: 'page';\n}\n\nexport type MutationPackKind = 'add-page' | 'modify';\n\nexport interface MutationPackData {\n mutationType: MutationPackKind;\n shell: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routing: 'hash' | 'history' | 'pathname';\n features: string[];\n routes: ScaffoldPackRoute[];\n workflow: string[];\n}\n\nexport interface MutationExecutionPack extends ExecutionPackBase<MutationPackData> {\n packType: 'mutation';\n}\n\nexport type ReviewPackKind = 'app';\n\nexport interface ReviewPackData {\n reviewType: ReviewPackKind;\n shell: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routing: 'hash' | 'history' | 'pathname';\n features: string[];\n routes: ScaffoldPackRoute[];\n focusAreas: string[];\n workflow: string[];\n}\n\nexport interface ReviewExecutionPack extends ExecutionPackBase<ReviewPackData> {\n packType: 'review';\n}\n\nexport interface ExecutionPackBundle {\n $schema: string;\n generatedAt: string;\n sourceEssenceVersion: string;\n manifest: ExecutionPackManifest;\n scaffold: ScaffoldExecutionPack;\n review: ReviewExecutionPack;\n sections: SectionExecutionPack[];\n pages: PageExecutionPack[];\n mutations: MutationExecutionPack[];\n}\n\nexport type SelectedExecutionPack =\n | ScaffoldExecutionPack\n | ReviewExecutionPack\n | SectionExecutionPack\n | PageExecutionPack\n | MutationExecutionPack;\n\nexport interface ExecutionPackSelector {\n packType: ExecutionPackType;\n id?: string | null;\n}\n\nexport interface SelectedExecutionPackResponse {\n $schema: string;\n generatedAt: string;\n sourceEssenceVersion: string;\n manifest: ExecutionPackManifest;\n selector: {\n packType: ExecutionPackType;\n id: string | null;\n };\n pack: SelectedExecutionPack;\n}\n\nexport interface ScaffoldPackBuilderOptions {\n objective?: string;\n target?: Partial<ExecutionPackTarget>;\n preset?: string | null;\n requiredSetup?: string[];\n examples?: ExecutionPackExample[];\n antiPatterns?: ExecutionPackAntiPattern[];\n successChecks?: ExecutionPackSuccessCheck[];\n tokenBudget?: Partial<ExecutionPackTokenBudget>;\n}\n\nexport interface SectionPackBuilderOptions extends ScaffoldPackBuilderOptions {}\nexport interface PagePackBuilderOptions extends ScaffoldPackBuilderOptions {}\nexport interface MutationPackBuilderOptions extends ScaffoldPackBuilderOptions {\n mutationType: MutationPackKind;\n workflow?: string[];\n}\nexport interface ReviewPackBuilderOptions extends ScaffoldPackBuilderOptions {\n reviewType?: ReviewPackKind;\n focusAreas?: string[];\n workflow?: string[];\n}\n\nexport interface CompileExecutionPackBundleOptions {\n contentRoot?: string;\n overridePaths?: string[];\n resolver?: ContentResolver;\n}\n\nconst DEFAULT_TARGET: ExecutionPackTarget = {\n platform: 'web',\n framework: null,\n runtime: null,\n adapter: 'generic-web',\n};\n\nconst DEFAULT_TOKEN_BUDGET: ExecutionPackTokenBudget = {\n target: 1400,\n max: 2200,\n strategy: [\n 'Prefer route summaries over repeated prose.',\n 'Use compact vocabulary lists instead of large reference tables.',\n 'Include only task-relevant examples and checks.',\n ],\n};\n\nconst DEFAULT_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'route-topology',\n label: 'Routes and page IDs match the compiled topology.',\n severity: 'error',\n },\n {\n id: 'shell-consistency',\n label: 'The declared shell contract is preserved unless the task explicitly mutates it.',\n severity: 'error',\n },\n {\n id: 'theme-consistency',\n label: 'Theme identity and mode remain consistent across scaffolded routes.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_SECTION_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'section-route-coherence',\n label: 'Section pages and routes remain coherent with the compiled topology.',\n severity: 'error',\n },\n {\n id: 'section-shell-consistency',\n label: 'The section shell contract stays consistent across its routes.',\n severity: 'error',\n },\n {\n id: 'section-pattern-coverage',\n label: 'Primary section patterns are represented without adding off-contract filler sections.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_PAGE_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'page-route-contract',\n label: 'The page keeps the compiled route, shell, and section contract intact.',\n severity: 'error',\n },\n {\n id: 'page-pattern-contract',\n label: 'The page preserves its primary compiled patterns instead of drifting into unrelated layouts.',\n severity: 'error',\n },\n {\n id: 'page-state-contract',\n label: 'Any declared wiring signals remain coherent with the rendered page structure.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_MUTATION_SUCCESS_CHECKS: Record<MutationPackKind, ExecutionPackSuccessCheck[]> = {\n 'add-page': [\n {\n id: 'mutation-essence-first',\n label: 'New pages are declared in the essence before any code generation begins.',\n severity: 'error',\n },\n {\n id: 'mutation-shell-contract',\n label: 'New routes inherit an existing shell and section contract unless the essence changes first.',\n severity: 'error',\n },\n {\n id: 'mutation-refresh',\n label: 'Refresh compiled packs after the mutation so downstream tasks read current topology.',\n severity: 'warn',\n },\n ],\n modify: [\n {\n id: 'mutation-existing-topology',\n label: 'Modified routes remain coherent with the compiled topology unless the essence changes first.',\n severity: 'error',\n },\n {\n id: 'mutation-theme-contract',\n label: 'Theme, shell, and page identity stay aligned with the current contract during edits.',\n severity: 'error',\n },\n {\n id: 'mutation-page-pack-first',\n label: 'Route-local edits should start from the compiled page pack rather than improvised structure.',\n severity: 'warn',\n },\n ],\n};\n\nconst DEFAULT_REVIEW_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'review-contract-baseline',\n label: 'Review findings should use the compiled route, shell, and theme contract as the baseline.',\n severity: 'error',\n },\n {\n id: 'review-evidence',\n label: 'Each critique finding should cite concrete evidence from the generated workspace.',\n severity: 'error',\n },\n {\n id: 'review-remediation',\n label: 'Suggested fixes should point back to code changes or essence updates when contract drift exists.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_REVIEW_ANTI_PATTERNS: ExecutionPackAntiPattern[] = [\n {\n id: 'inline-styles',\n summary: 'Avoid inline style literals as the primary styling path.',\n guidance: 'Move visual styling into tokens.css and treatments.css instead of component-local style objects.',\n },\n {\n id: 'hardcoded-colors',\n summary: 'Avoid hardcoded color literals.',\n guidance: 'Use CSS variables and theme decorators instead of hex, rgb, or hsl values.',\n },\n {\n id: 'utility-framework-leakage',\n summary: 'Avoid utility-framework leakage as the primary design language.',\n guidance: 'Prefer compiled Decantr treatments and contract vocabulary over ad hoc utility class stacks.',\n },\n];\n\nfunction collectPatternIds(page: IRPageNode): string[] {\n const patternIds: string[] = [];\n walkIR(page, (node: IRNode) => {\n if (node.type !== 'pattern') return;\n const patternNode = node as IRPatternNode;\n patternIds.push(patternNode.pattern.patternId);\n });\n return [...new Set(patternIds)];\n}\n\nfunction summarizeRoutes(appNode: IRAppNode): ScaffoldPackRoute[] {\n return appNode.children.map((page) => {\n const pageNode = page as IRPageNode;\n const route = appNode.routes.find((entry) => entry.pageId === pageNode.pageId);\n return {\n pageId: pageNode.pageId,\n path: route?.path || `/${pageNode.pageId}`,\n patternIds: collectPatternIds(pageNode),\n };\n });\n}\n\nfunction summarizeSectionRoutes(appNode: IRAppNode, input: SectionPackInput): SectionPackRoute[] {\n return summarizeRoutes(appNode).filter(route => input.pageIds.includes(route.pageId));\n}\n\nfunction summarizePageRoute(appNode: IRAppNode, pageId: string): ScaffoldPackRoute | null {\n return summarizeRoutes(appNode).find(route => route.pageId === pageId) ?? null;\n}\n\nfunction findPageNode(appNode: IRAppNode, pageId: string): IRPageNode | null {\n const page = appNode.children.find(node => (node as IRPageNode).pageId === pageId);\n return page ? page as IRPageNode : null;\n}\n\nfunction collectPagePatterns(page: IRPageNode): PagePackPattern[] {\n const patterns: PagePackPattern[] = [];\n walkIR(page, (node: IRNode) => {\n if (node.type !== 'pattern') return;\n const patternNode = node as IRPatternNode;\n patterns.push({\n id: patternNode.pattern.patternId,\n alias: patternNode.pattern.alias,\n preset: patternNode.pattern.preset,\n layout: patternNode.pattern.layout,\n });\n });\n return patterns;\n}\n\nfunction mergeTokenBudget(overrides?: Partial<ExecutionPackTokenBudget>): ExecutionPackTokenBudget {\n return {\n target: overrides?.target ?? DEFAULT_TOKEN_BUDGET.target,\n max: overrides?.max ?? DEFAULT_TOKEN_BUDGET.max,\n strategy: overrides?.strategy ?? DEFAULT_TOKEN_BUDGET.strategy,\n };\n}\n\nfunction renderList(title: string, entries: string[]): string[] {\n if (entries.length === 0) return [];\n return [title, ...entries.map(entry => `- ${entry}`), ''];\n}\n\nexport function renderExecutionPackMarkdown(pack: ExecutionPackBase<unknown>): string {\n const lines: string[] = [];\n\n lines.push(`# ${pack.packType.charAt(0).toUpperCase()}${pack.packType.slice(1)} Pack`);\n lines.push('');\n lines.push(`**Objective:** ${pack.objective}`);\n lines.push(`**Target:** ${pack.target.adapter}${pack.target.framework ? ` (${pack.target.framework})` : ''}`);\n lines.push(`**Scope:** pages=${pack.scope.pageIds.join(', ') || 'none'} | patterns=${pack.scope.patternIds.join(', ') || 'none'}`);\n lines.push('');\n\n if (pack.packType === 'scaffold') {\n const scaffoldPack = pack as ScaffoldExecutionPack;\n lines.push('## Scaffold Contract');\n lines.push(`- Shell: ${scaffoldPack.data.shell}`);\n lines.push(`- Theme: ${scaffoldPack.data.theme.id} (${scaffoldPack.data.theme.mode})`);\n lines.push(`- Routing: ${scaffoldPack.data.routing}`);\n if (scaffoldPack.data.features.length > 0) {\n lines.push(`- Features: ${scaffoldPack.data.features.join(', ')}`);\n }\n lines.push('');\n\n lines.push('## Route Plan');\n for (const route of scaffoldPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);\n }\n lines.push('');\n }\n\n if (pack.packType === 'section') {\n const sectionPack = pack as SectionExecutionPack;\n lines.push('## Section Contract');\n lines.push(`- Section: ${sectionPack.data.sectionId}`);\n lines.push(`- Role: ${sectionPack.data.role}`);\n lines.push(`- Shell: ${sectionPack.data.shell}`);\n lines.push(`- Theme: ${sectionPack.data.theme.id} (${sectionPack.data.theme.mode})`);\n if (sectionPack.data.features.length > 0) {\n lines.push(`- Features: ${sectionPack.data.features.join(', ')}`);\n }\n if (sectionPack.data.description) {\n lines.push(`- Description: ${sectionPack.data.description}`);\n }\n lines.push('');\n\n lines.push('## Section Routes');\n for (const route of sectionPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);\n }\n lines.push('');\n }\n\n if (pack.packType === 'page') {\n const pagePack = pack as PageExecutionPack;\n lines.push('## Page Contract');\n lines.push(`- Page: ${pagePack.data.pageId}`);\n lines.push(`- Path: ${pagePack.data.path}`);\n lines.push(`- Shell: ${pagePack.data.shell}`);\n if (pagePack.data.sectionId) {\n const role = pagePack.data.sectionRole ? ` (${pagePack.data.sectionRole})` : '';\n lines.push(`- Section: ${pagePack.data.sectionId}${role}`);\n }\n lines.push(`- Theme: ${pagePack.data.theme.id} (${pagePack.data.theme.mode})`);\n if (pagePack.data.features.length > 0) {\n lines.push(`- Features: ${pagePack.data.features.join(', ')}`);\n }\n if (pagePack.data.surface) {\n lines.push(`- Surface: ${pagePack.data.surface}`);\n }\n lines.push('');\n\n lines.push('## Page Patterns');\n for (const pattern of pagePack.data.patterns) {\n lines.push(`- ${pattern.alias} -> ${pattern.id} [${pattern.layout}${pattern.preset ? ` | ${pattern.preset}` : ''}]`);\n }\n lines.push('');\n\n if (pagePack.data.wiringSignals.length > 0) {\n lines.push('## Wiring Signals');\n for (const signal of pagePack.data.wiringSignals) {\n lines.push(`- ${signal}`);\n }\n lines.push('');\n }\n }\n\n if (pack.packType === 'mutation') {\n const mutationPack = pack as MutationExecutionPack;\n lines.push('## Mutation Contract');\n lines.push(`- Operation: ${mutationPack.data.mutationType}`);\n lines.push(`- Shell: ${mutationPack.data.shell}`);\n lines.push(`- Theme: ${mutationPack.data.theme.id} (${mutationPack.data.theme.mode})`);\n lines.push(`- Routing: ${mutationPack.data.routing}`);\n if (mutationPack.data.features.length > 0) {\n lines.push(`- Features: ${mutationPack.data.features.join(', ')}`);\n }\n lines.push('');\n\n lines.push('## Route Topology');\n for (const route of mutationPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);\n }\n lines.push('');\n\n if (mutationPack.data.workflow.length > 0) {\n lines.push('## Workflow');\n for (const step of mutationPack.data.workflow) {\n lines.push(`- ${step}`);\n }\n lines.push('');\n }\n }\n\n if (pack.packType === 'review') {\n const reviewPack = pack as ReviewExecutionPack;\n lines.push('## Review Contract');\n lines.push(`- Review Type: ${reviewPack.data.reviewType}`);\n lines.push(`- Shell: ${reviewPack.data.shell}`);\n lines.push(`- Theme: ${reviewPack.data.theme.id} (${reviewPack.data.theme.mode})`);\n lines.push(`- Routing: ${reviewPack.data.routing}`);\n if (reviewPack.data.features.length > 0) {\n lines.push(`- Features: ${reviewPack.data.features.join(', ')}`);\n }\n lines.push('');\n\n lines.push('## Review Topology');\n for (const route of reviewPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId} [${patterns}]`);\n }\n lines.push('');\n\n if (reviewPack.data.focusAreas.length > 0) {\n lines.push('## Focus Areas');\n for (const focusArea of reviewPack.data.focusAreas) {\n lines.push(`- ${focusArea}`);\n }\n lines.push('');\n }\n\n if (reviewPack.data.workflow.length > 0) {\n lines.push('## Review Workflow');\n for (const step of reviewPack.data.workflow) {\n lines.push(`- ${step}`);\n }\n lines.push('');\n }\n }\n\n lines.push('## Required Setup');\n if (pack.requiredSetup.length === 0) {\n lines.push('- None declared.');\n } else {\n lines.push(...pack.requiredSetup.map(entry => `- ${entry}`));\n }\n lines.push('');\n\n lines.push('## Allowed Vocabulary');\n if (pack.allowedVocabulary.length === 0) {\n lines.push('- None declared.');\n } else {\n lines.push(...pack.allowedVocabulary.map(entry => `- ${entry}`));\n }\n lines.push('');\n\n lines.push(...renderList('## Success Checks', pack.successChecks.map(entry => `${entry.label} [${entry.severity}]`)));\n lines.push(...renderList('## Anti-Patterns', pack.antiPatterns.map(entry => `${entry.summary}: ${entry.guidance}`)));\n lines.push(...renderList('## Examples', pack.examples.map(entry => `${entry.label} (${entry.language})`)));\n\n lines.push('## Token Budget');\n lines.push(`- Target: ${pack.tokenBudget.target}`);\n lines.push(`- Max: ${pack.tokenBudget.max}`);\n lines.push(...pack.tokenBudget.strategy.map(entry => `- ${entry}`));\n lines.push('');\n\n return lines.join('\\n').trimEnd() + '\\n';\n}\n\nexport function resolvePackAdapter(\n target: string | undefined,\n platformType: string | undefined,\n): string {\n if (target === 'react' && platformType === 'spa') return 'react-vite';\n if (target === 'react') return 'react-web';\n if (target === 'vue' && platformType === 'spa') return 'vue-vite';\n if (target === 'svelte' && platformType === 'spa') return 'sveltekit';\n if (target) return target;\n return 'generic-web';\n}\n\nexport function listPackSections(essence: EssenceV3): SectionPackInput[] {\n const declaredSections = essence.blueprint.sections;\n if (declaredSections && declaredSections.length > 0) {\n return declaredSections.map(section => ({\n id: section.id,\n role: section.role,\n shell: section.shell as string,\n description: section.description,\n features: section.features,\n pageIds: section.pages.map(page => page.id),\n }));\n }\n\n const pages = essence.blueprint.pages ?? [{ id: 'home', layout: ['hero'] }];\n return [{\n id: essence.meta.archetype || 'default',\n role: 'primary',\n shell: (essence.blueprint.shell ?? 'sidebar-main') as string,\n description: `${essence.meta.archetype || 'Application'} section`,\n features: essence.blueprint.features || [],\n pageIds: pages.map(page => page.id),\n }];\n}\n\nexport function listPackPages(essence: EssenceV3): PagePackInput[] {\n const declaredSections = essence.blueprint.sections;\n if (declaredSections && declaredSections.length > 0) {\n return declaredSections.flatMap(section =>\n section.pages.map(page => ({\n pageId: page.id,\n shell: (page.shell_override ?? section.shell) as string,\n sectionId: section.id,\n sectionRole: section.role,\n features: section.features,\n })),\n );\n }\n\n const pages = essence.blueprint.pages ?? [{ id: 'home', layout: ['hero'] }];\n const defaultShell = (essence.blueprint.shell ?? 'sidebar-main') as string;\n return pages.map(page => ({\n pageId: page.id,\n shell: (page.shell_override ?? defaultShell) as string,\n sectionId: essence.meta.archetype || 'default',\n sectionRole: 'primary',\n features: essence.blueprint.features || [],\n }));\n}\n\nexport function buildScaffoldPack(\n appNode: IRAppNode,\n options: ScaffoldPackBuilderOptions = {},\n): ScaffoldExecutionPack {\n const routes = summarizeRoutes(appNode);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n\n const pack: ScaffoldExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.scaffold,\n packVersion: '1.0.0',\n packType: 'scaffold',\n objective: options.objective ?? `Scaffold the ${appNode.theme.id} app shell and declared routes.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Treat the declared routes as the topology source of truth.',\n 'Preserve the resolved theme and shell contract unless the task explicitly mutates them.',\n ],\n allowedVocabulary: [...new Set([\n appNode.shell.config.type,\n appNode.theme.id,\n appNode.theme.mode,\n ...appNode.features,\n ...scopePatternIds,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n shell: appNode.shell.config.type,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routing: appNode.routing,\n features: appNode.features,\n routes,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildSectionPack(\n appNode: IRAppNode,\n input: SectionPackInput,\n options: SectionPackBuilderOptions = {},\n): SectionExecutionPack {\n const routes = summarizeSectionRoutes(appNode, input);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n\n const pack: SectionExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.section,\n packVersion: '1.0.0',\n packType: 'section',\n objective: options.objective ?? `Implement the ${input.id} section using the compiled ${input.shell} shell contract.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Use the declared section routes as the source of truth for this slice of the app.',\n 'Keep the section shell consistent unless the task explicitly changes the shell contract.',\n ],\n allowedVocabulary: [...new Set([\n input.id,\n input.role,\n input.shell,\n appNode.theme.id,\n appNode.theme.mode,\n ...input.features,\n ...scopePatternIds,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_SECTION_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n sectionId: input.id,\n role: input.role,\n shell: input.shell,\n description: input.description,\n features: input.features,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routes,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildPagePack(\n appNode: IRAppNode,\n input: PagePackInput,\n options: PagePackBuilderOptions = {},\n): PageExecutionPack {\n const pageNode = findPageNode(appNode, input.pageId);\n const route = summarizePageRoute(appNode, input.pageId);\n\n if (!pageNode || !route) {\n throw new Error(`Unknown page for page pack: ${input.pageId}`);\n }\n\n const patterns = collectPagePatterns(pageNode);\n\n const pack: PageExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.page,\n packVersion: '1.0.0',\n packType: 'page',\n objective: options.objective ?? `Implement the ${input.pageId} route using the compiled page contract.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: [route.pageId],\n patternIds: [...new Set(patterns.map(pattern => pattern.id))],\n },\n requiredSetup: options.requiredSetup ?? [\n 'Keep the compiled route and shell contract stable for this page.',\n 'Treat the listed page patterns as the primary structure for this route.',\n ],\n allowedVocabulary: [...new Set([\n input.pageId,\n input.shell,\n input.sectionId ?? '',\n input.sectionRole ?? '',\n appNode.theme.id,\n appNode.theme.mode,\n ...input.features,\n ...patterns.flatMap(pattern => [pattern.id, pattern.alias, pattern.layout]),\n ].filter(Boolean))],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_PAGE_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n pageId: route.pageId,\n path: route.path,\n shell: input.shell,\n sectionId: input.sectionId,\n sectionRole: input.sectionRole,\n features: input.features,\n surface: pageNode.surface,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n wiringSignals: pageNode.wiring?.signals.map(signal => signal.name) ?? [],\n patterns,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildMutationPack(\n appNode: IRAppNode,\n options: MutationPackBuilderOptions,\n): MutationExecutionPack {\n const routes = summarizeRoutes(appNode);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n const defaultWorkflow = options.mutationType === 'add-page'\n ? [\n 'Declare the new page in the essence before generating code.',\n 'Refresh Decantr context so section and page packs include the new route.',\n 'Read the relevant section pack and new page pack before implementation.',\n ]\n : [\n 'Read the page pack for the route you are modifying first.',\n 'Stop and update the essence before changing route, shell, or pattern contracts.',\n 'Validate and check drift after code changes complete.',\n ];\n\n const pack: MutationExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.mutation,\n packVersion: '1.0.0',\n packType: 'mutation',\n objective: options.objective ?? `Execute the ${options.mutationType} workflow against the compiled app contract.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Treat the compiled topology as the source of truth until the essence changes.',\n 'Refresh Decantr context after structural mutations so downstream tasks read current packs.',\n ],\n allowedVocabulary: [...new Set([\n options.mutationType,\n appNode.shell.config.type,\n appNode.theme.id,\n appNode.theme.mode,\n ...appNode.features,\n ...scopePatternIds,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_MUTATION_SUCCESS_CHECKS[options.mutationType],\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n mutationType: options.mutationType,\n shell: appNode.shell.config.type,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routing: appNode.routing,\n features: appNode.features,\n routes,\n workflow: options.workflow ?? defaultWorkflow,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildReviewPack(\n appNode: IRAppNode,\n options: ReviewPackBuilderOptions = {},\n): ReviewExecutionPack {\n const routes = summarizeRoutes(appNode);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n const reviewType = options.reviewType ?? 'app';\n const focusAreas = options.focusAreas ?? [\n 'route-topology',\n 'theme-consistency',\n 'treatment-usage',\n 'accessibility',\n 'responsive-design',\n ];\n const workflow = options.workflow ?? [\n 'Read the scaffold pack and page packs before evaluating generated code.',\n 'Compare findings against the compiled route, shell, and theme contract first.',\n 'Escalate contract drift into essence updates when the requested output intentionally changes topology or theme identity.',\n ];\n\n const pack: ReviewExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.review,\n packVersion: '1.0.0',\n packType: 'review',\n objective: options.objective ?? 'Review generated output against the compiled Decantr contract.',\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Read the compiled scaffold and route packs before reviewing code.',\n 'Use concrete evidence from the workspace instead of purely stylistic intuition.',\n ],\n allowedVocabulary: [...new Set([\n reviewType,\n appNode.shell.config.type,\n appNode.theme.id,\n appNode.theme.mode,\n ...appNode.features,\n ...scopePatternIds,\n ...focusAreas,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? DEFAULT_REVIEW_ANTI_PATTERNS,\n successChecks: options.successChecks ?? DEFAULT_REVIEW_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n reviewType,\n shell: appNode.shell.config.type,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routing: appNode.routing,\n features: appNode.features,\n routes,\n focusAreas,\n workflow,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport async function compileExecutionPackBundle(\n essence: EssenceFile,\n options: CompileExecutionPackBundleOptions = {},\n): Promise<ExecutionPackBundle> {\n const effectiveEssence = isV3(essence) ? essence : migrateV2ToV3(essence);\n const generatedAt = new Date().toISOString();\n const sharedTarget = {\n framework: effectiveEssence.meta.target || null,\n runtime: effectiveEssence.meta.platform.type || null,\n adapter: resolvePackAdapter(effectiveEssence.meta.target, effectiveEssence.meta.platform.type),\n };\n\n const pipeline = await runPipeline(essence, {\n contentRoot: options.contentRoot,\n overridePaths: options.overridePaths,\n resolver: options.resolver,\n });\n\n const scaffold = buildScaffoldPack(pipeline.ir, {\n target: sharedTarget,\n });\n const review = buildReviewPack(pipeline.ir, {\n target: sharedTarget,\n });\n const sections = listPackSections(effectiveEssence).map(section => buildSectionPack(pipeline.ir, section, {\n target: sharedTarget,\n }));\n const pages = listPackPages(effectiveEssence).map(page => buildPagePack(pipeline.ir, page, {\n target: sharedTarget,\n }));\n const mutations = (['add-page', 'modify'] as const).map(mutationType => buildMutationPack(pipeline.ir, {\n mutationType,\n target: sharedTarget,\n }));\n\n const manifest: ExecutionPackManifest = {\n $schema: PACK_MANIFEST_SCHEMA_URL,\n version: '1.0.0',\n generatedAt,\n scaffold: {\n id: 'scaffold',\n markdown: 'scaffold-pack.md',\n json: 'scaffold-pack.json',\n },\n review: {\n id: 'review',\n markdown: 'review-pack.md',\n json: 'review-pack.json',\n },\n sections: listPackSections(effectiveEssence).map(section => ({\n id: section.id,\n markdown: `section-${section.id}-pack.md`,\n json: `section-${section.id}-pack.json`,\n pageIds: section.pageIds,\n })),\n pages: listPackPages(effectiveEssence).map(page => ({\n id: page.pageId,\n markdown: `page-${page.pageId}-pack.md`,\n json: `page-${page.pageId}-pack.json`,\n sectionId: page.sectionId,\n sectionRole: page.sectionRole,\n })),\n mutations: (['add-page', 'modify'] as const).map(mutationType => ({\n id: mutationType,\n markdown: `mutation-${mutationType}-pack.md`,\n json: `mutation-${mutationType}-pack.json`,\n mutationType,\n })),\n };\n\n return {\n $schema: EXECUTION_PACK_BUNDLE_SCHEMA_URL,\n generatedAt,\n sourceEssenceVersion: essence.version,\n manifest,\n scaffold,\n review,\n sections,\n pages,\n mutations,\n };\n}\n\nexport function selectExecutionPackFromBundle(\n bundle: ExecutionPackBundle,\n selector: ExecutionPackSelector,\n): SelectedExecutionPackResponse | null {\n const id = selector.id ?? null;\n let pack: SelectedExecutionPack | null = null;\n\n switch (selector.packType) {\n case 'scaffold':\n pack = bundle.scaffold;\n break;\n case 'review':\n pack = bundle.review;\n break;\n case 'section':\n pack = id ? bundle.sections.find((entry) => entry.data.sectionId === id) ?? null : null;\n break;\n case 'page':\n pack = id ? bundle.pages.find((entry) => entry.data.pageId === id) ?? null : null;\n break;\n case 'mutation':\n pack = id ? bundle.mutations.find((entry) => entry.data.mutationType === id) ?? null : null;\n break;\n default:\n pack = null;\n break;\n }\n\n if (!pack) {\n return null;\n }\n\n return {\n $schema: SELECTED_EXECUTION_PACK_SCHEMA_URL,\n generatedAt: bundle.generatedAt,\n sourceEssenceVersion: bundle.sourceEssenceVersion,\n manifest: bundle.manifest,\n selector: {\n packType: selector.packType,\n id,\n },\n pack,\n };\n}\n\nexport async function compileSelectedExecutionPack(\n essence: EssenceFile,\n selector: ExecutionPackSelector,\n options: CompileExecutionPackBundleOptions = {},\n): Promise<SelectedExecutionPackResponse | null> {\n const bundle = await compileExecutionPackBundle(essence, options);\n return selectExecutionPackFromBundle(bundle, selector);\n}\n"],"mappings":"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","names":["isV3","isPatternRef","isColumnLayout","isPatternRef","isColumnLayout","isV3","isV3","migrateV2ToV3","isV3","migrateV2ToV3"]}
1
+ {"version":3,"sources":["../src/pipeline.ts","../src/resolve.ts","../src/utils.ts","../src/ir.ts","../src/ir-helpers.ts","../src/packs.ts"],"sourcesContent":["import type { IRAppNode, IRShellNode, IRStoreNode, IRPageNode, IRLayer } from './types.js';\nimport type { EssenceFile } from '@decantr/essence-spec';\nimport { validateEssence, isV3, migrateV2ToV3 } from '@decantr/essence-spec';\nimport { createResolver } from '@decantr/registry';\nimport type { ContentResolver } from '@decantr/registry';\nimport { resolveEssence } from './resolve.js';\nimport { buildPageIR } from './ir.js';\nimport { pascalCase } from './utils.js';\n\nfunction extractRouting(essence: EssenceFile): 'hash' | 'history' | 'pathname' {\n if (isV3(essence)) {\n return essence.meta.platform.routing || 'hash';\n }\n return (essence as { platform?: { routing?: string } }).platform?.routing as 'hash' | 'history' | 'pathname' || 'hash';\n}\n\nexport interface PipelineOptions {\n /** Path to content directory (patterns, archetypes, themes) */\n contentRoot?: string;\n\n /** Override paths for local content resolution */\n overridePaths?: string[];\n\n /** Only resolve specific page(s) */\n pageFilter?: string;\n\n /** Optional custom resolver for hosted or in-memory execution */\n resolver?: ContentResolver;\n}\n\nexport interface PipelineResult {\n /** The framework-agnostic intermediate representation */\n ir: IRAppNode;\n}\n\n/**\n * Run the Design Pipeline:\n * 1. Validate Essence against schema + guard rules\n * 2. Resolve all references (patterns, theme, wiring) from registry\n * 3. Build framework-agnostic IR tree\n * 4. Return IR (no code generation — that's the consumer's job)\n */\nexport async function runPipeline(\n essence: EssenceFile,\n options: PipelineOptions,\n): Promise<PipelineResult> {\n // 1. Validate\n const validation = validateEssence(essence);\n if (!validation.valid) {\n throw new Error(`Invalid essence: ${validation.errors.join(', ')}`);\n }\n\n // 2. Auto-migrate v2 → v3 before processing\n const effectiveEssence = isV3(essence) ? essence : migrateV2ToV3(essence);\n\n // 3. Create resolver and resolve\n const resolver = options.resolver ?? (() => {\n if (!options.contentRoot) {\n throw new Error('Pipeline options must include either a contentRoot or a resolver.');\n }\n\n return createResolver({\n contentRoot: options.contentRoot,\n overridePaths: options.overridePaths,\n });\n })();\n\n const resolved = await resolveEssence(effectiveEssence, resolver);\n\n // 4. Build IR pages (v3 sources get layer metadata)\n const layer: IRLayer | undefined = resolved.isV3Source ? 'blueprint' : undefined;\n const pageNodes: IRPageNode[] = [];\n for (const rp of resolved.pages) {\n const pageIR = buildPageIR(\n rp.page,\n rp.patterns,\n rp.wiring,\n resolved.registryTheme,\n { gap: resolved.density.gap },\n layer,\n );\n pageNodes.push(pageIR);\n }\n\n // Apply page filter\n let filteredPages = pageNodes;\n if (options.pageFilter) {\n filteredPages = pageNodes.filter(p => p.pageId === options.pageFilter);\n }\n\n // 4. Build shell node\n const shellNode: IRShellNode = {\n type: 'shell',\n id: 'shell',\n children: [],\n config: resolved.shell,\n };\n\n // 5. Build store node\n const storeNode: IRStoreNode = {\n type: 'store',\n id: 'store',\n children: [],\n pageSignals: pageNodes.map(p => ({\n name: p.pageId,\n pascalName: pascalCase(p.pageId),\n })),\n };\n\n // 6. Assemble app node\n const appNode: IRAppNode = {\n type: 'app',\n id: 'app',\n children: filteredPages,\n theme: resolved.theme,\n routes: resolved.routes,\n routing: extractRouting(resolved.essence),\n shell: shellNode,\n store: storeNode,\n features: resolved.features,\n };\n\n return { ir: appNode };\n}\n","import type {\n EssenceFile, Essence, SectionedEssence, EssenceV3, StructurePage,\n LayoutItem, PatternRef, ColumnLayout, BlueprintPage,\n} from '@decantr/essence-spec';\nimport { isSimple, isSectioned, isV3, computeDensity } from '@decantr/essence-spec';\nimport { pascalCase } from './utils.js';\nimport type { ContentResolver, Pattern, Theme as RegistryTheme, ResolvedPreset } from '@decantr/registry';\nimport { resolvePatternPreset, detectWirings } from '@decantr/registry';\nimport type {\n IRWiring, IRWiringSignal, IRShellConfig, IRNavItem,\n IRThemeDecoration, IRTheme, IRRoute, IRVisualEffect,\n} from './types.js';\n\nexport interface ResolvedPage {\n page: StructurePage;\n patterns: Map<string, { pattern: Pattern; preset: ResolvedPreset }>;\n wiring: IRWiring | null;\n}\n\nexport interface ResolvedEssence {\n essence: EssenceFile;\n pages: ResolvedPage[];\n registryTheme: RegistryTheme | null;\n density: { gap: string; level: string };\n theme: IRTheme;\n shell: IRShellConfig;\n routes: IRRoute[];\n features: string[];\n /** True when the source essence was v3 (DNA/Blueprint/Meta) */\n isV3Source: boolean;\n}\n\n// ─── Icon Mapping ─────────────────────────────────────────────\n\nconst NAV_ICONS: Record<string, string> = {\n overview: 'layout-dashboard',\n dashboard: 'layout-dashboard',\n home: 'home',\n analytics: 'bar-chart-3',\n settings: 'settings',\n users: 'users',\n billing: 'credit-card',\n reports: 'file-text',\n catalog: 'grid',\n products: 'package',\n orders: 'shopping-cart',\n messages: 'message-square',\n notifications: 'bell',\n activity: 'activity',\n search: 'search',\n profile: 'user',\n team: 'users',\n integrations: 'puzzle',\n api: 'code',\n docs: 'book-open',\n help: 'help-circle',\n projects: 'folder',\n workflows: 'git-branch',\n monitoring: 'monitor',\n security: 'shield',\n storage: 'database',\n deployments: 'rocket',\n logs: 'scroll-text',\n};\n\n// ─── Core styles that don't need explicit addon registration ──\n\nconst CORE_STYLES = new Set(['auradecantism']);\n\n// ─── Helpers ──────────────────────────────────────────────────\n\nfunction isPatternRef(item: LayoutItem): item is PatternRef {\n return typeof item === 'object' && 'pattern' in item;\n}\n\nfunction isColumnLayout(item: LayoutItem): item is ColumnLayout {\n return typeof item === 'object' && 'cols' in item;\n}\n\nfunction extractLayoutRefs(layout: LayoutItem[]): { id: string; explicitPreset?: string; alias?: string }[] {\n const refs: { id: string; explicitPreset?: string; alias?: string }[] = [];\n for (const item of layout) {\n if (typeof item === 'string') {\n refs.push({ id: item });\n } else if (isPatternRef(item)) {\n refs.push({ id: item.pattern, explicitPreset: item.preset, alias: item.as });\n } else if (isColumnLayout(item)) {\n for (const col of item.cols) {\n refs.push({ id: col });\n }\n }\n }\n return refs;\n}\n\n/** Flatten a layout array so column children are promoted to top-level for wiring detection */\nfunction flattenLayoutForWiring(layout: LayoutItem[]): LayoutItem[] {\n const flat: LayoutItem[] = [];\n for (const item of layout) {\n if (typeof item === 'string') {\n flat.push(item);\n } else if (isPatternRef(item)) {\n flat.push(item);\n } else if (isColumnLayout(item)) {\n // Promote column children as string refs\n for (const col of item.cols) {\n flat.push(col);\n }\n }\n }\n return flat;\n}\n\nfunction routePath(pageId: string, index: number): string {\n if (index === 0) return '/';\n // AUTO: Pages ending in \"-detail\" get a dynamic :id route parameter\n if (pageId.endsWith('-detail')) {\n return `/${pageId}/:id`;\n }\n return `/${pageId}`;\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction buildNavItems(pages: StructurePage[], routes?: IRRoute[]): IRNavItem[] {\n const routeLookup = new Map<string, string>(\n (routes ?? []).map((route) => [route.pageId, route.path]),\n );\n return pages.map((page, i) => ({\n href: routeLookup.get(page.id) ?? routePath(page.id, i),\n icon: NAV_ICONS[page.id] || 'circle',\n label: capitalize(page.id.replace(/-/g, ' ')),\n }));\n}\n\nfunction buildThemeDecoration(theme: RegistryTheme): IRThemeDecoration | null {\n const shell = theme.shell;\n if (!shell) return null;\n // The JSON may have additional fields not in the strict type\n const shellAny = shell as unknown as Record<string, unknown>;\n return {\n root: shell.root || '',\n nav: shell.nav || '',\n header: shell.header || '',\n brand: (shellAny['brand'] as string) || '',\n navLabel: (shellAny['navLabel'] as string) || '',\n // AUTO: default nav style is 'pill' when the theme does not declare one\n navStyle: shell.nav_style || 'pill',\n defaultNavState: (shellAny['default_nav_state'] as string) || 'expanded',\n dimensions: shell.dimensions || null,\n };\n}\n\nfunction buildTheme(essence: Essence, isAddon: boolean): IRTheme {\n return {\n id: essence.theme.id,\n mode: essence.theme.mode,\n shape: essence.theme.shape || null,\n isAddon,\n };\n}\n\nfunction buildThemeFromV3(essence: EssenceV3, isAddon: boolean): IRTheme {\n const dna = essence.dna;\n return {\n id: dna.theme.id,\n mode: dna.theme.mode,\n shape: dna.radius.philosophy || dna.theme.shape || null,\n isAddon,\n };\n}\n\n/** Convert v3 BlueprintPage to the StructurePage shape used by the resolver pipeline */\nfunction blueprintPageToStructurePage(page: BlueprintPage, defaultShell: string): StructurePage {\n return {\n id: page.id,\n shell: page.shell_override ?? defaultShell,\n layout: page.layout,\n ...(page.surface ? { surface: page.surface } : {}),\n };\n}\n\nfunction buildV3Routes(\n essence: EssenceV3,\n blueprintPages: BlueprintPage[],\n structurePages: StructurePage[],\n): IRRoute[] {\n const explicitRoutes = new Map<string, string>();\n\n for (const [path, entry] of Object.entries(essence.blueprint.routes ?? {})) {\n if (entry?.page && !explicitRoutes.has(entry.page)) {\n explicitRoutes.set(entry.page, path);\n }\n }\n\n for (const page of blueprintPages) {\n if (page.route && !explicitRoutes.has(page.id)) {\n explicitRoutes.set(page.id, page.route);\n }\n }\n\n if (explicitRoutes.size > 0) {\n return structurePages.flatMap((page) => {\n const path = explicitRoutes.get(page.id);\n return path ? [{ path, pageId: page.id, shell: page.shell }] : [];\n });\n }\n\n return structurePages.map((page, i) => ({\n path: routePath(page.id, i),\n pageId: page.id,\n shell: page.shell,\n }));\n}\n\nfunction convertWiring(wiringResults: ReturnType<typeof detectWirings>): IRWiring | null {\n if (wiringResults.length === 0) return null;\n\n const signals: IRWiringSignal[] = [];\n const props: Record<string, Record<string, string>> = {};\n const hookProps: Record<string, Record<string, string>> = {};\n const hookSet = new Set<IRWiringSignal['hookType']>();\n\n for (const result of wiringResults) {\n for (const signal of result.signals) {\n // Avoid duplicate signals\n if (!signals.some(s => s.name === signal.name)) {\n const setter = 'set' + signal.name.charAt(0).toUpperCase() + signal.name.slice(1);\n signals.push({\n name: signal.name,\n setter,\n init: signal.init,\n hookType: signal.hookType,\n });\n hookSet.add(signal.hookType);\n }\n }\n for (const [alias, aliasProps] of Object.entries(result.props)) {\n props[alias] = { ...props[alias], ...aliasProps };\n }\n // AUTO: Merge hook-based prop mappings\n for (const [alias, aliasHookProps] of Object.entries(result.hookProps)) {\n hookProps[alias] = { ...hookProps[alias], ...aliasHookProps };\n }\n }\n\n return { signals, props, hooks: [...hookSet], hookProps };\n}\n\n// ─── Visual Effects Resolution ────────────────────────────────\n\nexport function resolveVisualEffects(\n theme: RegistryTheme,\n pattern: Pattern,\n _slot?: string,\n): IRVisualEffect | null {\n const effects = theme.effects;\n if (!effects?.enabled) return null;\n\n const typeMapping = effects.type_mapping || {};\n const componentFallback = effects.component_fallback || {};\n const intensity = effects.intensity || 'medium';\n const intensityValues = effects.intensity_values || {};\n\n // Check pattern tags / components against type_mapping\n let decorators: string[] = [];\n\n // Check if any pattern components match the component_fallback\n for (const comp of pattern.components || []) {\n const effectType = componentFallback[comp];\n if (effectType && typeMapping[effectType]) {\n decorators = [...decorators, ...typeMapping[effectType]];\n }\n }\n\n if (decorators.length === 0) return null;\n\n // Deduplicate\n decorators = [...new Set(decorators)];\n\n return {\n decorators,\n intensity: intensityValues[intensity] || {},\n };\n}\n\n// ─── Main Resolution ─────────────────────────────────────────\n\n/** Resolve all external references in an Essence file */\nexport async function resolveEssence(\n essence: EssenceFile,\n resolver: ContentResolver,\n): Promise<ResolvedEssence> {\n // ─── V3 path: read from dna + blueprint layers ───────────\n if (isV3(essence)) {\n return resolveV3Essence(essence, resolver);\n }\n\n // ─── V2 path: simple or sectioned ────────────────────────\n let simpleEssence: Essence;\n if (isSimple(essence)) {\n simpleEssence = essence;\n } else if (isSectioned(essence)) {\n const sectioned = essence as SectionedEssence;\n if (sectioned.sections.length > 1) {\n throw new Error(\n `Sectioned essences with ${sectioned.sections.length} sections are not yet supported. ` +\n `Only single-section sectioned essences can be processed. ` +\n `Consider migrating to v3 format using migrateV2ToV3().`,\n );\n }\n const firstSection = sectioned.sections[0];\n simpleEssence = {\n version: sectioned.version,\n archetype: firstSection.archetype,\n theme: firstSection.theme,\n personality: sectioned.personality,\n platform: sectioned.platform,\n structure: firstSection.structure,\n features: firstSection.features || [],\n density: sectioned.density,\n guard: sectioned.guard,\n target: sectioned.target,\n };\n } else {\n throw new Error('Invalid essence format');\n }\n\n // 1. Theme resolution (replaces former recipe resolution)\n let registryTheme: RegistryTheme | null = null;\n const themeResult = await resolver.resolve('theme', simpleEssence.theme.id);\n if (themeResult) {\n registryTheme = themeResult.item;\n }\n\n // 2. Density computation\n const themeSpatial = registryTheme?.spatial;\n const density = computeDensity(simpleEssence.personality, themeSpatial ? {\n density_bias: themeSpatial.density_bias,\n content_gap_shift: themeSpatial.content_gap_shift,\n } : undefined);\n\n // 3. Theme\n const themeId = simpleEssence.theme.id;\n const isAddon = themeId.startsWith('custom:') || !CORE_STYLES.has(themeId);\n const theme = buildTheme(simpleEssence, isAddon);\n\n // 4. Resolve each page\n const resolvedPages = await resolvePages(simpleEssence.structure, resolver, registryTheme);\n\n // 5. Shell config\n const shellType = simpleEssence.structure[0]?.shell || 'sidebar-main';\n const brand = pascalCase(simpleEssence.archetype);\n const nav = buildNavItems(simpleEssence.structure);\n const decoration = registryTheme ? buildThemeDecoration(registryTheme) : null;\n\n const shell: IRShellConfig = {\n type: shellType,\n brand,\n nav,\n inset: false,\n decoration,\n };\n\n // 6. Routes\n const routes: IRRoute[] = simpleEssence.structure.map((page, i) => ({\n path: routePath(page.id, i),\n pageId: page.id,\n shell: page.shell,\n }));\n\n return {\n essence,\n pages: resolvedPages,\n registryTheme,\n density: { gap: density.content_gap, level: density.level },\n theme,\n shell,\n routes,\n features: simpleEssence.features ?? [],\n isV3Source: false,\n };\n}\n\n// ─── V3 Resolution ──────────────────────────────────────────\n\nasync function resolveV3Essence(\n essence: EssenceV3,\n resolver: ContentResolver,\n): Promise<ResolvedEssence> {\n const { dna, blueprint, meta } = essence;\n\n // 1. Theme resolution (replaces former recipe resolution)\n let registryTheme: RegistryTheme | null = null;\n const themeResult = await resolver.resolve('theme', dna.theme.id);\n if (themeResult) {\n registryTheme = themeResult.item;\n }\n\n // 2. Density — v3 carries density directly in dna.spacing\n const themeSpatial = registryTheme?.spatial;\n const density = computeDensity(dna.personality, themeSpatial ? {\n density_bias: themeSpatial.density_bias,\n content_gap_shift: themeSpatial.content_gap_shift,\n } : undefined);\n // V3 dna.spacing is authoritative; override computed density with DNA values\n const densityResult = {\n gap: dna.spacing.content_gap || density.content_gap,\n level: dna.spacing.density || density.level,\n };\n\n // 3. Theme from DNA layer\n const themeId = dna.theme.id;\n const isAddon = themeId.startsWith('custom:') || !CORE_STYLES.has(themeId);\n const theme = buildThemeFromV3(essence, isAddon);\n\n // 4. Convert blueprint pages to StructurePage and resolve\n // V3.1 essences may use sections instead of pages; flatten sections into pages\n const blueprintPages = blueprint.pages ?? (\n blueprint.sections\n ? blueprint.sections.flatMap(s => s.pages)\n : [{ id: 'home', layout: ['hero'] as LayoutItem[] }]\n );\n const defaultShell = blueprint.shell ?? (\n blueprint.sections?.[0]?.shell ?? 'sidebar-main'\n );\n const structurePages: StructurePage[] = blueprint.pages\n ? blueprint.pages.map((page) => blueprintPageToStructurePage(page, defaultShell))\n : blueprint.sections\n ? blueprint.sections.flatMap((section) =>\n section.pages.map((page) => blueprintPageToStructurePage(page, section.shell ?? defaultShell)),\n )\n : [blueprintPageToStructurePage({ id: 'home', layout: ['hero'] as LayoutItem[] }, defaultShell)];\n const resolvedPages = await resolvePages(structurePages, resolver, registryTheme);\n\n // 5. Shell config from blueprint\n const shellType = defaultShell;\n const brand = pascalCase(meta.archetype);\n const routes = buildV3Routes(essence, blueprintPages, structurePages);\n const nav = buildNavItems(structurePages, routes);\n const decoration = registryTheme ? buildThemeDecoration(registryTheme) : null;\n\n const shell: IRShellConfig = {\n type: shellType,\n brand,\n nav,\n inset: false,\n decoration,\n };\n\n return {\n essence,\n pages: resolvedPages,\n registryTheme,\n density: densityResult,\n theme,\n shell,\n routes,\n features: blueprint.features ?? [],\n isV3Source: true,\n };\n}\n\n// ─── Shared page resolution ────────────────────────────────\n\nasync function resolvePages(\n pages: StructurePage[],\n resolver: ContentResolver,\n registryTheme: RegistryTheme | null,\n): Promise<ResolvedPage[]> {\n const resolvedPages: ResolvedPage[] = [];\n for (const page of pages) {\n const refs = extractLayoutRefs(page.layout);\n const patterns = new Map<string, { pattern: Pattern; preset: ResolvedPreset }>();\n\n for (const ref of refs) {\n const patternResult = await resolver.resolve('pattern', ref.id);\n if (patternResult) {\n const preset = resolvePatternPreset(\n patternResult.item,\n ref.explicitPreset,\n registryTheme?.pattern_preferences?.default_presets,\n );\n const key = ref.alias || ref.id;\n patterns.set(key, { pattern: patternResult.item, preset });\n }\n }\n\n // Detect wiring (flatten cols so column children are visible)\n const wiringResults = detectWirings(flattenLayoutForWiring(page.layout));\n const wiring = convertWiring(wiringResults);\n\n resolvedPages.push({ page, patterns, wiring });\n }\n return resolvedPages;\n}\n","/** Convert a kebab-case or snake_case string to PascalCase */\nexport function pascalCase(str: string): string {\n return str.split(/[-_]/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('');\n}\n","import type {\n IRPageNode, IRPatternNode, IRGridNode, IRWiring,\n IRCardWrapping, IRPatternMeta, IRVisualEffect, IRNode, IRLayer,\n} from './types.js';\nimport type { StructurePage, LayoutItem, PatternRef, ColumnLayout } from '@decantr/essence-spec';\nimport type { Pattern, Theme as RegistryTheme, ResolvedPreset } from '@decantr/registry';\nimport { resolveVisualEffects } from './resolve.js';\n\nexport interface ResolvedPatternEntry {\n pattern: Pattern;\n preset: ResolvedPreset;\n}\n\nfunction isPatternRef(item: LayoutItem): item is PatternRef {\n return typeof item === 'object' && 'pattern' in item;\n}\n\nfunction isColumnLayout(item: LayoutItem): item is ColumnLayout {\n return typeof item === 'object' && 'cols' in item;\n}\n\nfunction getPatternAlias(item: LayoutItem): string {\n if (typeof item === 'string') return item;\n if (isPatternRef(item)) return item.as || item.pattern;\n return '';\n}\n\nfunction getPatternId(item: LayoutItem): string {\n if (typeof item === 'string') return item;\n if (isPatternRef(item)) return item.pattern;\n return '';\n}\n\nfunction shouldWrapInCard(\n pattern: Pattern,\n preset: ResolvedPreset,\n theme: RegistryTheme | null,\n): boolean {\n // Hero/row/stack layouts are standalone\n const layout = preset.layout.layout;\n if (layout === 'hero' || layout === 'row') return false;\n\n // Pattern explicitly opts out\n if (pattern.contained === false) return false;\n\n // Theme spatial says no cards\n const cardWrapping = theme?.spatial?.card_wrapping;\n if (cardWrapping === 'none') return false;\n\n // Minimal: only wrap if pattern has presets (complex pattern)\n if (cardWrapping === 'minimal') {\n return Object.keys(pattern.presets).length > 0;\n }\n\n // Default: wrap\n return true;\n}\n\nfunction buildCardWrapping(\n pattern: Pattern,\n theme: RegistryTheme | null,\n): IRCardWrapping {\n const mode = theme?.spatial?.card_wrapping || 'always';\n return {\n mode: mode as IRCardWrapping['mode'],\n headerLabel: pattern.name,\n };\n}\n\nfunction buildPatternNode(\n patternId: string,\n alias: string,\n resolved: ResolvedPatternEntry | undefined,\n wiring: IRWiring | null,\n theme: RegistryTheme | null,\n density: { gap: string },\n layer?: IRLayer,\n): IRPatternNode {\n const pattern = resolved?.pattern;\n const preset = resolved?.preset;\n\n const layout = preset?.layout.layout || 'column';\n const isStandalone = layout === 'hero' || layout === 'row';\n const contained = pattern && preset ? shouldWrapInCard(pattern, preset, theme) : false;\n const components = pattern?.components || [];\n\n const patternMeta: IRPatternMeta = {\n patternId,\n preset: preset?.preset || 'default',\n alias,\n layout,\n contained,\n standalone: isStandalone,\n code: preset?.code ? { imports: preset.code.imports, example: preset.code.example } : null,\n components,\n };\n\n const card = contained && !isStandalone && pattern\n ? buildCardWrapping(pattern, theme)\n : null;\n\n const wireProps = wiring?.props[alias] || wiring?.props[patternId] || null;\n\n // Resolve visual effects from theme + pattern when available\n const visualEffects = theme && pattern\n ? resolveVisualEffects(theme, pattern)\n : null;\n\n return {\n type: 'pattern',\n id: alias,\n children: [],\n pattern: patternMeta,\n card,\n visualEffects,\n wireProps,\n spatial: { gap: density.gap },\n ...(layer ? { layer } : {}),\n };\n}\n\n/** Build IR tree for a single page from its resolved structure + patterns */\nexport function buildPageIR(\n page: StructurePage,\n resolvedPatterns: Map<string, ResolvedPatternEntry>,\n wiring: IRWiring | null,\n theme: RegistryTheme | null,\n density: { gap: string },\n layer?: IRLayer,\n): IRPageNode {\n const children: IRNode[] = [];\n\n for (const item of page.layout) {\n if (typeof item === 'string') {\n // Simple string → full-width pattern\n const resolved = resolvedPatterns.get(item);\n children.push(buildPatternNode(item, item, resolved, wiring, theme, density, layer));\n } else if (isPatternRef(item)) {\n // PatternRef → pattern with optional preset/alias\n const alias = item.as || item.pattern;\n const resolved = resolvedPatterns.get(alias) || resolvedPatterns.get(item.pattern);\n children.push(buildPatternNode(item.pattern, alias, resolved, wiring, theme, density, layer));\n } else if (isColumnLayout(item)) {\n // ColumnLayout → grid with pattern children\n const cols = item.cols;\n const breakpoint = item.at || null;\n const spans = item.span || null;\n\n // Normalize spans: fill in missing columns with weight 1\n let normalizedSpans: Record<string, number> | null = null;\n if (spans) {\n normalizedSpans = {};\n for (const col of cols) {\n normalizedSpans[col] = spans[col] || 1;\n }\n }\n\n const gridChildren: IRNode[] = [];\n for (const col of cols) {\n const resolved = resolvedPatterns.get(col);\n gridChildren.push(buildPatternNode(col, col, resolved, wiring, theme, density, layer));\n }\n\n const totalCols = normalizedSpans\n ? Object.values(normalizedSpans).reduce((a, b) => a + b, 0)\n : cols.length;\n\n // AUTO: Pass through multi-breakpoint and container query config from ColumnLayout\n const breakpoints = item.breakpoints?.map(bp => ({ at: bp.at, cols: bp.cols })) || null;\n const responsive = item.responsive || null;\n\n const gridNode: IRGridNode = {\n type: 'grid',\n id: `grid-${cols.join('-')}`,\n children: gridChildren,\n cols: totalCols,\n spans: normalizedSpans,\n breakpoint,\n breakpoints,\n responsive,\n spatial: { gap: density.gap },\n ...(layer ? { layer } : {}),\n };\n children.push(gridNode);\n }\n }\n\n const gapAtom = density.gap.startsWith('_')\n ? density.gap\n : density.gap.startsWith('gap')\n ? `_${density.gap}`\n : `_gap${density.gap}`;\n const surface = page.surface || `_flex _col ${gapAtom} _p4 _overauto _flex1`;\n\n return {\n type: 'page',\n id: page.id,\n children,\n pageId: page.id,\n surface,\n wiring,\n ...(layer ? { layer } : {}),\n };\n}\n","import type { IRNode, IRPatternNode, IRGridNode } from './types.js';\n\n/** Depth-first walk of IR tree, calling visitor on each node */\nexport function walkIR(\n node: IRNode,\n visitor: (node: IRNode, parent: IRNode | null) => void,\n parent: IRNode | null = null,\n): void {\n visitor(node, parent);\n for (const child of node.children) {\n walkIR(child, visitor, node);\n }\n}\n\n/** Find all nodes of a specific type */\nexport function findNodes<T extends IRNode>(root: IRNode, type: string): T[] {\n const results: T[] = [];\n walkIR(root, (node) => {\n if (node.type === type) {\n results.push(node as T);\n }\n });\n return results;\n}\n\n/** Count total patterns in an IR tree */\nexport function countPatterns(root: IRNode): number {\n return findNodes(root, 'pattern').length;\n}\n\n/** Validate IR tree structure (no orphaned grids, patterns have meta, etc.) */\nexport function validateIR(root: IRNode): string[] {\n const errors: string[] = [];\n\n walkIR(root, (node, parent) => {\n if (node.type === 'grid') {\n const grid = node as IRGridNode;\n if (grid.children.length === 0) {\n errors.push(`Grid node \"${grid.id}\" has no children`);\n }\n }\n\n if (node.type === 'pattern') {\n const pattern = node as IRPatternNode;\n if (!pattern.pattern) {\n errors.push(`Pattern node \"${pattern.id}\" is missing pattern meta`);\n }\n if (!pattern.pattern.patternId) {\n errors.push(`Pattern node \"${pattern.id}\" has no patternId`);\n }\n }\n\n if (node.type === 'page') {\n if (!node.id) {\n errors.push('Page node is missing id');\n }\n }\n });\n\n return errors;\n}\n","import { isV3, migrateV2ToV3 } from '@decantr/essence-spec';\nimport type { EssenceFile, EssenceV3 } from '@decantr/essence-spec';\nimport type { ContentResolver } from '@decantr/registry';\nimport { walkIR } from './ir-helpers.js';\nimport { runPipeline } from './pipeline.js';\nimport type { IRAppNode, IRNode, IRPageNode, IRPatternNode } from './types.js';\n\nexport type ExecutionPackType = 'scaffold' | 'section' | 'page' | 'mutation' | 'review';\n\nexport const EXECUTION_PACK_SCHEMA_URLS = {\n scaffold: 'https://decantr.ai/schemas/scaffold-pack.v1.json',\n section: 'https://decantr.ai/schemas/section-pack.v1.json',\n page: 'https://decantr.ai/schemas/page-pack.v1.json',\n mutation: 'https://decantr.ai/schemas/mutation-pack.v1.json',\n review: 'https://decantr.ai/schemas/review-pack.v1.json',\n} as const;\n\nexport const PACK_MANIFEST_SCHEMA_URL = 'https://decantr.ai/schemas/pack-manifest.v1.json';\nexport const EXECUTION_PACK_BUNDLE_SCHEMA_URL = 'https://decantr.ai/schemas/execution-pack-bundle.v1.json';\nexport const SELECTED_EXECUTION_PACK_SCHEMA_URL = 'https://decantr.ai/schemas/selected-execution-pack.v1.json';\n\nexport interface ExecutionPackTarget {\n platform: 'web';\n framework: string | null;\n runtime: string | null;\n adapter: string;\n}\n\nexport interface ExecutionPackScope {\n appId: string;\n pageIds: string[];\n patternIds: string[];\n}\n\nexport interface ExecutionPackExample {\n id: string;\n label: string;\n language: string;\n snippet: string;\n}\n\nexport interface ExecutionPackAntiPattern {\n id: string;\n summary: string;\n guidance: string;\n}\n\nexport interface ExecutionPackSuccessCheck {\n id: string;\n label: string;\n severity: 'error' | 'warn' | 'info';\n}\n\nexport interface ExecutionPackTokenBudget {\n target: number;\n max: number;\n strategy: string[];\n}\n\nexport interface ExecutionPackBase<TData> {\n $schema: string;\n packVersion: '1.0.0';\n packType: ExecutionPackType;\n objective: string;\n target: ExecutionPackTarget;\n preset: string | null;\n scope: ExecutionPackScope;\n requiredSetup: string[];\n allowedVocabulary: string[];\n examples: ExecutionPackExample[];\n antiPatterns: ExecutionPackAntiPattern[];\n successChecks: ExecutionPackSuccessCheck[];\n tokenBudget: ExecutionPackTokenBudget;\n data: TData;\n renderedMarkdown: string;\n}\n\nexport interface PackManifestEntry {\n id: string;\n markdown: string;\n json: string;\n}\n\nexport interface PackManifestSectionEntry extends PackManifestEntry {\n pageIds: string[];\n}\n\nexport interface PackManifestPageEntry extends PackManifestEntry {\n sectionId: string | null;\n sectionRole: string | null;\n}\n\nexport interface PackManifestMutationEntry extends PackManifestEntry {\n mutationType: MutationPackKind;\n}\n\nexport interface ExecutionPackManifest {\n $schema: string;\n version: '1.0.0';\n generatedAt: string;\n scaffold: PackManifestEntry | null;\n review: PackManifestEntry | null;\n sections: PackManifestSectionEntry[];\n pages: PackManifestPageEntry[];\n mutations: PackManifestMutationEntry[];\n}\n\nexport interface ScaffoldPackRoute {\n pageId: string;\n path: string;\n patternIds: string[];\n shell?: string;\n}\n\nexport interface ScaffoldPackData {\n shell: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routing: 'hash' | 'history' | 'pathname';\n features: string[];\n navigation?: {\n commandPalette: boolean;\n hotkeys: Array<{\n key: string;\n route?: string;\n label?: string;\n }>;\n };\n routes: ScaffoldPackRoute[];\n}\n\nexport interface ScaffoldExecutionPack extends ExecutionPackBase<ScaffoldPackData> {\n packType: 'scaffold';\n}\n\nexport interface SectionPackInput {\n id: string;\n role: string;\n shell: string;\n description: string;\n features: string[];\n pageIds: string[];\n}\n\nexport interface SectionPackRoute {\n pageId: string;\n path: string;\n patternIds: string[];\n shell?: string;\n}\n\nexport interface SectionPackData {\n sectionId: string;\n role: string;\n shell: string;\n description: string;\n features: string[];\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routes: SectionPackRoute[];\n}\n\nexport interface SectionExecutionPack extends ExecutionPackBase<SectionPackData> {\n packType: 'section';\n}\n\nexport interface PagePackInput {\n pageId: string;\n shell: string;\n sectionId: string | null;\n sectionRole: string | null;\n features: string[];\n}\n\nexport interface PagePackPattern {\n id: string;\n alias: string;\n preset: string;\n layout: string;\n}\n\nexport interface PagePackData {\n pageId: string;\n path: string;\n shell: string;\n sectionId: string | null;\n sectionRole: string | null;\n features: string[];\n surface: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n wiringSignals: string[];\n patterns: PagePackPattern[];\n}\n\nexport interface PageExecutionPack extends ExecutionPackBase<PagePackData> {\n packType: 'page';\n}\n\nexport type MutationPackKind = 'add-page' | 'modify';\n\nexport interface MutationPackData {\n mutationType: MutationPackKind;\n shell: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routing: 'hash' | 'history' | 'pathname';\n features: string[];\n routes: ScaffoldPackRoute[];\n workflow: string[];\n}\n\nexport interface MutationExecutionPack extends ExecutionPackBase<MutationPackData> {\n packType: 'mutation';\n}\n\nexport type ReviewPackKind = 'app';\n\nexport interface ReviewPackData {\n reviewType: ReviewPackKind;\n shell: string;\n theme: {\n id: string;\n mode: string;\n shape: string | null;\n };\n routing: 'hash' | 'history' | 'pathname';\n features: string[];\n routes: ScaffoldPackRoute[];\n focusAreas: string[];\n workflow: string[];\n}\n\nexport interface ReviewExecutionPack extends ExecutionPackBase<ReviewPackData> {\n packType: 'review';\n}\n\nexport interface ExecutionPackBundle {\n $schema: string;\n generatedAt: string;\n sourceEssenceVersion: string;\n manifest: ExecutionPackManifest;\n scaffold: ScaffoldExecutionPack;\n review: ReviewExecutionPack;\n sections: SectionExecutionPack[];\n pages: PageExecutionPack[];\n mutations: MutationExecutionPack[];\n}\n\nexport type SelectedExecutionPack =\n | ScaffoldExecutionPack\n | ReviewExecutionPack\n | SectionExecutionPack\n | PageExecutionPack\n | MutationExecutionPack;\n\nexport interface ExecutionPackSelector {\n packType: ExecutionPackType;\n id?: string | null;\n}\n\nexport interface SelectedExecutionPackResponse {\n $schema: string;\n generatedAt: string;\n sourceEssenceVersion: string;\n manifest: ExecutionPackManifest;\n selector: {\n packType: ExecutionPackType;\n id: string | null;\n };\n pack: SelectedExecutionPack;\n}\n\nexport interface ScaffoldPackBuilderOptions {\n objective?: string;\n target?: Partial<ExecutionPackTarget>;\n preset?: string | null;\n requiredSetup?: string[];\n examples?: ExecutionPackExample[];\n antiPatterns?: ExecutionPackAntiPattern[];\n successChecks?: ExecutionPackSuccessCheck[];\n tokenBudget?: Partial<ExecutionPackTokenBudget>;\n navigation?: {\n commandPalette: boolean;\n hotkeys: Array<{\n key: string;\n route?: string;\n label?: string;\n }>;\n };\n}\n\nexport interface SectionPackBuilderOptions extends ScaffoldPackBuilderOptions {}\nexport interface PagePackBuilderOptions extends ScaffoldPackBuilderOptions {}\nexport interface MutationPackBuilderOptions extends ScaffoldPackBuilderOptions {\n mutationType: MutationPackKind;\n workflow?: string[];\n}\nexport interface ReviewPackBuilderOptions extends ScaffoldPackBuilderOptions {\n reviewType?: ReviewPackKind;\n focusAreas?: string[];\n workflow?: string[];\n}\n\nexport interface CompileExecutionPackBundleOptions {\n contentRoot?: string;\n overridePaths?: string[];\n resolver?: ContentResolver;\n}\n\nconst DEFAULT_TARGET: ExecutionPackTarget = {\n platform: 'web',\n framework: null,\n runtime: null,\n adapter: 'generic-web',\n};\n\nconst DEFAULT_TOKEN_BUDGET: ExecutionPackTokenBudget = {\n target: 1400,\n max: 2200,\n strategy: [\n 'Prefer route summaries over repeated prose.',\n 'Use compact vocabulary lists instead of large reference tables.',\n 'Include only task-relevant examples and checks.',\n ],\n};\n\nconst DEFAULT_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'route-topology',\n label: 'Routes and page IDs match the compiled topology.',\n severity: 'error',\n },\n {\n id: 'shell-consistency',\n label: 'The declared shell contract is preserved unless the task explicitly mutates it.',\n severity: 'error',\n },\n {\n id: 'theme-consistency',\n label: 'Theme identity and mode remain consistent across scaffolded routes.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_SECTION_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'section-route-coherence',\n label: 'Section pages and routes remain coherent with the compiled topology.',\n severity: 'error',\n },\n {\n id: 'section-shell-consistency',\n label: 'The section shell contract stays consistent across its routes.',\n severity: 'error',\n },\n {\n id: 'section-pattern-coverage',\n label: 'Primary section patterns are represented without adding off-contract filler sections.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_PAGE_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'page-route-contract',\n label: 'The page keeps the compiled route, shell, and section contract intact.',\n severity: 'error',\n },\n {\n id: 'page-pattern-contract',\n label: 'The page preserves its primary compiled patterns instead of drifting into unrelated layouts.',\n severity: 'error',\n },\n {\n id: 'page-state-contract',\n label: 'Any declared wiring signals remain coherent with the rendered page structure.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_MUTATION_SUCCESS_CHECKS: Record<MutationPackKind, ExecutionPackSuccessCheck[]> = {\n 'add-page': [\n {\n id: 'mutation-essence-first',\n label: 'New pages are declared in the essence before any code generation begins.',\n severity: 'error',\n },\n {\n id: 'mutation-shell-contract',\n label: 'New routes inherit an existing shell and section contract unless the essence changes first.',\n severity: 'error',\n },\n {\n id: 'mutation-refresh',\n label: 'Refresh compiled packs after the mutation so downstream tasks read current topology.',\n severity: 'warn',\n },\n ],\n modify: [\n {\n id: 'mutation-existing-topology',\n label: 'Modified routes remain coherent with the compiled topology unless the essence changes first.',\n severity: 'error',\n },\n {\n id: 'mutation-theme-contract',\n label: 'Theme, shell, and page identity stay aligned with the current contract during edits.',\n severity: 'error',\n },\n {\n id: 'mutation-page-pack-first',\n label: 'Route-local edits should start from the compiled page pack rather than improvised structure.',\n severity: 'warn',\n },\n ],\n};\n\nconst DEFAULT_REVIEW_SUCCESS_CHECKS: ExecutionPackSuccessCheck[] = [\n {\n id: 'review-contract-baseline',\n label: 'Review findings should use the compiled route, shell, and theme contract as the baseline.',\n severity: 'error',\n },\n {\n id: 'review-evidence',\n label: 'Each critique finding should cite concrete evidence from the generated workspace.',\n severity: 'error',\n },\n {\n id: 'review-remediation',\n label: 'Suggested fixes should point back to code changes or essence updates when contract drift exists.',\n severity: 'warn',\n },\n];\n\nconst DEFAULT_REVIEW_ANTI_PATTERNS: ExecutionPackAntiPattern[] = [\n {\n id: 'inline-styles',\n summary: 'Avoid inline style literals as the primary styling path.',\n guidance: 'Move visual styling into tokens.css and treatments.css instead of component-local style objects.',\n },\n {\n id: 'hardcoded-colors',\n summary: 'Avoid hardcoded color literals.',\n guidance: 'Use CSS variables and theme decorators instead of hex, rgb, or hsl values.',\n },\n {\n id: 'utility-framework-leakage',\n summary: 'Avoid utility-framework leakage as the primary design language.',\n guidance: 'Prefer compiled Decantr treatments and contract vocabulary over ad hoc utility class stacks.',\n },\n];\n\nfunction collectPatternIds(page: IRPageNode): string[] {\n const patternIds: string[] = [];\n walkIR(page, (node: IRNode) => {\n if (node.type !== 'pattern') return;\n const patternNode = node as IRPatternNode;\n patternIds.push(patternNode.pattern.patternId);\n });\n return [...new Set(patternIds)];\n}\n\nfunction summarizeRoutes(appNode: IRAppNode): ScaffoldPackRoute[] {\n return appNode.routes.flatMap((route) => {\n const pageNode = findPageNode(appNode, route.pageId);\n if (!pageNode) return [];\n return [{\n pageId: pageNode.pageId,\n path: route.path,\n patternIds: collectPatternIds(pageNode),\n shell: route.shell,\n }];\n });\n}\n\nfunction summarizeSectionRoutes(appNode: IRAppNode, input: SectionPackInput): SectionPackRoute[] {\n return summarizeRoutes(appNode).filter(route => input.pageIds.includes(route.pageId));\n}\n\nfunction summarizePageRoute(appNode: IRAppNode, pageId: string): ScaffoldPackRoute | null {\n return summarizeRoutes(appNode).find(route => route.pageId === pageId) ?? null;\n}\n\nfunction findPageNode(appNode: IRAppNode, pageId: string): IRPageNode | null {\n const page = appNode.children.find(node => (node as IRPageNode).pageId === pageId);\n return page ? page as IRPageNode : null;\n}\n\nfunction collectPagePatterns(page: IRPageNode): PagePackPattern[] {\n const patterns: PagePackPattern[] = [];\n walkIR(page, (node: IRNode) => {\n if (node.type !== 'pattern') return;\n const patternNode = node as IRPatternNode;\n patterns.push({\n id: patternNode.pattern.patternId,\n alias: patternNode.pattern.alias,\n preset: patternNode.pattern.preset,\n layout: patternNode.pattern.layout,\n });\n });\n return patterns;\n}\n\nfunction mergeTokenBudget(overrides?: Partial<ExecutionPackTokenBudget>): ExecutionPackTokenBudget {\n return {\n target: overrides?.target ?? DEFAULT_TOKEN_BUDGET.target,\n max: overrides?.max ?? DEFAULT_TOKEN_BUDGET.max,\n strategy: overrides?.strategy ?? DEFAULT_TOKEN_BUDGET.strategy,\n };\n}\n\nfunction renderList(title: string, entries: string[]): string[] {\n if (entries.length === 0) return [];\n return [title, ...entries.map(entry => `- ${entry}`), ''];\n}\n\nexport function renderExecutionPackMarkdown(pack: ExecutionPackBase<unknown>): string {\n const lines: string[] = [];\n\n lines.push(`# ${pack.packType.charAt(0).toUpperCase()}${pack.packType.slice(1)} Pack`);\n lines.push('');\n lines.push(`**Objective:** ${pack.objective}`);\n lines.push(`**Target:** ${pack.target.adapter}${pack.target.framework ? ` (${pack.target.framework})` : ''}`);\n lines.push(`**Scope:** pages=${pack.scope.pageIds.join(', ') || 'none'} | patterns=${pack.scope.patternIds.join(', ') || 'none'}`);\n lines.push('');\n\n if (pack.packType === 'scaffold') {\n const scaffoldPack = pack as ScaffoldExecutionPack;\n const scaffoldShells = [...new Set(scaffoldPack.data.routes.map((route) => route.shell).filter(Boolean))];\n lines.push('## Scaffold Contract');\n lines.push(`- Shell: ${scaffoldPack.data.shell}`);\n if (scaffoldShells.length > 1) {\n const secondaryShells = scaffoldShells.filter((shell) => shell !== scaffoldPack.data.shell);\n lines.push(`- Shells: ${[`${scaffoldPack.data.shell} (primary)`, ...secondaryShells].join(', ')}`);\n }\n lines.push(`- Theme: ${scaffoldPack.data.theme.id} (${scaffoldPack.data.theme.mode})`);\n lines.push(`- Routing: ${scaffoldPack.data.routing}`);\n if (scaffoldPack.data.features.length > 0) {\n lines.push(`- Features: ${scaffoldPack.data.features.join(', ')}`);\n }\n if (scaffoldPack.data.navigation?.commandPalette || scaffoldPack.data.navigation?.hotkeys.length) {\n lines.push('- Navigation:');\n if (scaffoldPack.data.navigation.commandPalette) {\n lines.push(' - command palette required');\n }\n for (const hotkey of scaffoldPack.data.navigation.hotkeys) {\n const target = [hotkey.label, hotkey.route].filter(Boolean).join(' — ');\n lines.push(` - ${hotkey.key}${target ? `: ${target}` : ''}`);\n }\n }\n lines.push('');\n\n lines.push('## Route Plan');\n for (const route of scaffoldPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ''} [${patterns}]`);\n }\n lines.push('');\n }\n\n if (pack.packType === 'section') {\n const sectionPack = pack as SectionExecutionPack;\n lines.push('## Section Contract');\n lines.push(`- Section: ${sectionPack.data.sectionId}`);\n lines.push(`- Role: ${sectionPack.data.role}`);\n lines.push(`- Shell: ${sectionPack.data.shell}`);\n lines.push(`- Theme: ${sectionPack.data.theme.id} (${sectionPack.data.theme.mode})`);\n if (sectionPack.data.features.length > 0) {\n lines.push(`- Features: ${sectionPack.data.features.join(', ')}`);\n }\n if (sectionPack.data.description) {\n lines.push(`- Description: ${sectionPack.data.description}`);\n }\n lines.push('');\n\n lines.push('## Section Routes');\n for (const route of sectionPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ''} [${patterns}]`);\n }\n lines.push('');\n }\n\n if (pack.packType === 'page') {\n const pagePack = pack as PageExecutionPack;\n lines.push('## Page Contract');\n lines.push(`- Page: ${pagePack.data.pageId}`);\n lines.push(`- Path: ${pagePack.data.path}`);\n lines.push(`- Shell: ${pagePack.data.shell}`);\n if (pagePack.data.sectionId) {\n const role = pagePack.data.sectionRole ? ` (${pagePack.data.sectionRole})` : '';\n lines.push(`- Section: ${pagePack.data.sectionId}${role}`);\n }\n lines.push(`- Theme: ${pagePack.data.theme.id} (${pagePack.data.theme.mode})`);\n if (pagePack.data.features.length > 0) {\n lines.push(`- Features: ${pagePack.data.features.join(', ')}`);\n }\n if (pagePack.data.surface) {\n lines.push(`- Surface: ${pagePack.data.surface}`);\n }\n lines.push('');\n\n lines.push('## Page Patterns');\n for (const pattern of pagePack.data.patterns) {\n lines.push(`- ${pattern.alias} -> ${pattern.id} [${pattern.layout}${pattern.preset ? ` | ${pattern.preset}` : ''}]`);\n }\n lines.push('');\n\n if (pagePack.data.wiringSignals.length > 0) {\n lines.push('## Wiring Signals');\n for (const signal of pagePack.data.wiringSignals) {\n lines.push(`- ${signal}`);\n }\n lines.push('');\n }\n }\n\n if (pack.packType === 'mutation') {\n const mutationPack = pack as MutationExecutionPack;\n lines.push('## Mutation Contract');\n lines.push(`- Operation: ${mutationPack.data.mutationType}`);\n lines.push(`- Shell: ${mutationPack.data.shell}`);\n lines.push(`- Theme: ${mutationPack.data.theme.id} (${mutationPack.data.theme.mode})`);\n lines.push(`- Routing: ${mutationPack.data.routing}`);\n if (mutationPack.data.features.length > 0) {\n lines.push(`- Features: ${mutationPack.data.features.join(', ')}`);\n }\n lines.push('');\n\n lines.push('## Route Topology');\n for (const route of mutationPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ''} [${patterns}]`);\n }\n lines.push('');\n\n if (mutationPack.data.workflow.length > 0) {\n lines.push('## Workflow');\n for (const step of mutationPack.data.workflow) {\n lines.push(`- ${step}`);\n }\n lines.push('');\n }\n }\n\n if (pack.packType === 'review') {\n const reviewPack = pack as ReviewExecutionPack;\n lines.push('## Review Contract');\n lines.push(`- Review Type: ${reviewPack.data.reviewType}`);\n lines.push(`- Shell: ${reviewPack.data.shell}`);\n lines.push(`- Theme: ${reviewPack.data.theme.id} (${reviewPack.data.theme.mode})`);\n lines.push(`- Routing: ${reviewPack.data.routing}`);\n if (reviewPack.data.features.length > 0) {\n lines.push(`- Features: ${reviewPack.data.features.join(', ')}`);\n }\n lines.push('');\n\n lines.push('## Review Topology');\n for (const route of reviewPack.data.routes) {\n const patterns = route.patternIds.length > 0 ? route.patternIds.join(', ') : 'none';\n lines.push(`- ${route.path} -> ${route.pageId}${route.shell ? ` @ ${route.shell}` : ''} [${patterns}]`);\n }\n lines.push('');\n\n if (reviewPack.data.focusAreas.length > 0) {\n lines.push('## Focus Areas');\n for (const focusArea of reviewPack.data.focusAreas) {\n lines.push(`- ${focusArea}`);\n }\n lines.push('');\n }\n\n if (reviewPack.data.workflow.length > 0) {\n lines.push('## Review Workflow');\n for (const step of reviewPack.data.workflow) {\n lines.push(`- ${step}`);\n }\n lines.push('');\n }\n }\n\n lines.push('## Required Setup');\n if (pack.requiredSetup.length === 0) {\n lines.push('- None declared.');\n } else {\n lines.push(...pack.requiredSetup.map(entry => `- ${entry}`));\n }\n lines.push('');\n\n lines.push('## Allowed Vocabulary');\n if (pack.allowedVocabulary.length === 0) {\n lines.push('- None declared.');\n } else {\n lines.push(...pack.allowedVocabulary.map(entry => `- ${entry}`));\n }\n lines.push('');\n\n lines.push(...renderList('## Success Checks', pack.successChecks.map(entry => `${entry.label} [${entry.severity}]`)));\n lines.push(...renderList('## Anti-Patterns', pack.antiPatterns.map(entry => `${entry.summary}: ${entry.guidance}`)));\n lines.push(...renderList('## Examples', pack.examples.map(entry => `${entry.label} (${entry.language})`)));\n\n lines.push('## Token Budget');\n lines.push(`- Target: ${pack.tokenBudget.target}`);\n lines.push(`- Max: ${pack.tokenBudget.max}`);\n lines.push(...pack.tokenBudget.strategy.map(entry => `- ${entry}`));\n lines.push('');\n\n return lines.join('\\n').trimEnd() + '\\n';\n}\n\nexport function resolvePackAdapter(\n target: string | undefined,\n platformType: string | undefined,\n): string {\n if (target === 'react' && platformType === 'spa') return 'react-vite';\n if (target === 'react') return 'react-web';\n if (target === 'vue' && platformType === 'spa') return 'vue-vite';\n if (target === 'svelte' && platformType === 'spa') return 'sveltekit';\n if (target) return target;\n return 'generic-web';\n}\n\nexport function listPackSections(essence: EssenceV3): SectionPackInput[] {\n const declaredSections = essence.blueprint.sections;\n if (declaredSections && declaredSections.length > 0) {\n const routedSectionPages = new Set(\n Object.values(essence.blueprint.routes ?? {}).map((entry) => `${entry.section}:${entry.page}`),\n );\n return declaredSections.map((section) => {\n const pageIds = section.pages\n .filter((page) => routedSectionPages.size === 0 || routedSectionPages.has(`${section.id}:${page.id}`))\n .map(page => page.id);\n\n return {\n id: section.id,\n role: section.role,\n shell: section.shell as string,\n description: section.description,\n features: section.features,\n pageIds,\n };\n }).filter((section) => section.pageIds.length > 0);\n }\n\n const pages = essence.blueprint.pages ?? [{ id: 'home', layout: ['hero'] }];\n return [{\n id: essence.meta.archetype || 'default',\n role: 'primary',\n shell: (essence.blueprint.shell ?? 'sidebar-main') as string,\n description: `${essence.meta.archetype || 'Application'} section`,\n features: essence.blueprint.features || [],\n pageIds: pages.map(page => page.id),\n }];\n}\n\nexport function listPackPages(essence: EssenceV3): PagePackInput[] {\n const declaredSections = essence.blueprint.sections;\n if (declaredSections && declaredSections.length > 0) {\n const routedSectionPages = new Set(\n Object.values(essence.blueprint.routes ?? {}).map((entry) => `${entry.section}:${entry.page}`),\n );\n return declaredSections.flatMap(section =>\n section.pages.map(page => ({\n pageId: page.id,\n shell: (page.shell_override ?? section.shell) as string,\n sectionId: section.id,\n sectionRole: section.role,\n features: section.features,\n })).filter((page) => routedSectionPages.size === 0 || routedSectionPages.has(`${page.sectionId}:${page.pageId}`)),\n );\n }\n\n const pages = essence.blueprint.pages ?? [{ id: 'home', layout: ['hero'] }];\n const defaultShell = (essence.blueprint.shell ?? 'sidebar-main') as string;\n return pages.map(page => ({\n pageId: page.id,\n shell: (page.shell_override ?? defaultShell) as string,\n sectionId: essence.meta.archetype || 'default',\n sectionRole: 'primary',\n features: essence.blueprint.features || [],\n }));\n}\n\nexport function buildScaffoldPack(\n appNode: IRAppNode,\n options: ScaffoldPackBuilderOptions = {},\n): ScaffoldExecutionPack {\n const routes = summarizeRoutes(appNode);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n\n const pack: ScaffoldExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.scaffold,\n packVersion: '1.0.0',\n packType: 'scaffold',\n objective: options.objective ?? `Scaffold the ${appNode.theme.id} app shell and declared routes.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Treat the declared routes as the topology source of truth.',\n 'Preserve the resolved theme and shell contract unless the task explicitly mutates them.',\n ],\n allowedVocabulary: [...new Set([\n appNode.shell.config.type,\n appNode.theme.id,\n appNode.theme.mode,\n ...appNode.features,\n ...scopePatternIds,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n shell: appNode.shell.config.type,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routing: appNode.routing,\n features: appNode.features,\n navigation: options.navigation,\n routes,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildSectionPack(\n appNode: IRAppNode,\n input: SectionPackInput,\n options: SectionPackBuilderOptions = {},\n): SectionExecutionPack {\n const routes = summarizeSectionRoutes(appNode, input);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n\n const pack: SectionExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.section,\n packVersion: '1.0.0',\n packType: 'section',\n objective: options.objective ?? `Implement the ${input.id} section using the compiled ${input.shell} shell contract.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Use the declared section routes as the source of truth for this slice of the app.',\n 'Keep the section shell consistent unless the task explicitly changes the shell contract.',\n ],\n allowedVocabulary: [...new Set([\n input.id,\n input.role,\n input.shell,\n appNode.theme.id,\n appNode.theme.mode,\n ...input.features,\n ...scopePatternIds,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_SECTION_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n sectionId: input.id,\n role: input.role,\n shell: input.shell,\n description: input.description,\n features: input.features,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routes,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildPagePack(\n appNode: IRAppNode,\n input: PagePackInput,\n options: PagePackBuilderOptions = {},\n): PageExecutionPack {\n const pageNode = findPageNode(appNode, input.pageId);\n const route = summarizePageRoute(appNode, input.pageId);\n\n if (!pageNode || !route) {\n throw new Error(`Unknown page for page pack: ${input.pageId}`);\n }\n\n const patterns = collectPagePatterns(pageNode);\n\n const pack: PageExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.page,\n packVersion: '1.0.0',\n packType: 'page',\n objective: options.objective ?? `Implement the ${input.pageId} route using the compiled page contract.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: [route.pageId],\n patternIds: [...new Set(patterns.map(pattern => pattern.id))],\n },\n requiredSetup: options.requiredSetup ?? [\n 'Keep the compiled route and shell contract stable for this page.',\n 'Treat the listed page patterns as the primary structure for this route.',\n ],\n allowedVocabulary: [...new Set([\n input.pageId,\n input.shell,\n input.sectionId ?? '',\n input.sectionRole ?? '',\n appNode.theme.id,\n appNode.theme.mode,\n ...input.features,\n ...patterns.flatMap(pattern => [pattern.id, pattern.alias, pattern.layout]),\n ].filter(Boolean))],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_PAGE_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n pageId: route.pageId,\n path: route.path,\n shell: input.shell,\n sectionId: input.sectionId,\n sectionRole: input.sectionRole,\n features: input.features,\n surface: pageNode.surface,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n wiringSignals: pageNode.wiring?.signals.map(signal => signal.name) ?? [],\n patterns,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildMutationPack(\n appNode: IRAppNode,\n options: MutationPackBuilderOptions,\n): MutationExecutionPack {\n const routes = summarizeRoutes(appNode);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n const defaultWorkflow = options.mutationType === 'add-page'\n ? [\n 'Declare the new page in the essence before generating code.',\n 'Refresh Decantr context so section and page packs include the new route.',\n 'Read the relevant section pack and new page pack before implementation.',\n ]\n : [\n 'Read the page pack for the route you are modifying first.',\n 'Stop and update the essence before changing route, shell, or pattern contracts.',\n 'Validate and check drift after code changes complete.',\n ];\n\n const pack: MutationExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.mutation,\n packVersion: '1.0.0',\n packType: 'mutation',\n objective: options.objective ?? `Execute the ${options.mutationType} workflow against the compiled app contract.`,\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Treat the compiled topology as the source of truth until the essence changes.',\n 'Refresh Decantr context after structural mutations so downstream tasks read current packs.',\n ],\n allowedVocabulary: [...new Set([\n options.mutationType,\n appNode.shell.config.type,\n appNode.theme.id,\n appNode.theme.mode,\n ...appNode.features,\n ...scopePatternIds,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? [],\n successChecks: options.successChecks ?? DEFAULT_MUTATION_SUCCESS_CHECKS[options.mutationType],\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n mutationType: options.mutationType,\n shell: appNode.shell.config.type,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routing: appNode.routing,\n features: appNode.features,\n routes,\n workflow: options.workflow ?? defaultWorkflow,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport function buildReviewPack(\n appNode: IRAppNode,\n options: ReviewPackBuilderOptions = {},\n): ReviewExecutionPack {\n const routes = summarizeRoutes(appNode);\n const scopePatternIds = [...new Set(routes.flatMap(route => route.patternIds))];\n const reviewType = options.reviewType ?? 'app';\n const focusAreas = options.focusAreas ?? [\n 'route-topology',\n 'theme-consistency',\n 'treatment-usage',\n 'accessibility',\n 'responsive-design',\n ];\n const workflow = options.workflow ?? [\n 'Read the scaffold pack and page packs before evaluating generated code.',\n 'Compare findings against the compiled route, shell, and theme contract first.',\n 'Escalate contract drift into essence updates when the requested output intentionally changes topology or theme identity.',\n ];\n\n const pack: ReviewExecutionPack = {\n $schema: EXECUTION_PACK_SCHEMA_URLS.review,\n packVersion: '1.0.0',\n packType: 'review',\n objective: options.objective ?? 'Review generated output against the compiled Decantr contract.',\n target: {\n ...DEFAULT_TARGET,\n ...options.target,\n },\n preset: options.preset ?? null,\n scope: {\n appId: appNode.id,\n pageIds: routes.map(route => route.pageId),\n patternIds: scopePatternIds,\n },\n requiredSetup: options.requiredSetup ?? [\n 'Read the compiled scaffold and route packs before reviewing code.',\n 'Use concrete evidence from the workspace instead of purely stylistic intuition.',\n ],\n allowedVocabulary: [...new Set([\n reviewType,\n appNode.shell.config.type,\n appNode.theme.id,\n appNode.theme.mode,\n ...appNode.features,\n ...scopePatternIds,\n ...focusAreas,\n ])],\n examples: options.examples ?? [],\n antiPatterns: options.antiPatterns ?? DEFAULT_REVIEW_ANTI_PATTERNS,\n successChecks: options.successChecks ?? DEFAULT_REVIEW_SUCCESS_CHECKS,\n tokenBudget: mergeTokenBudget(options.tokenBudget),\n data: {\n reviewType,\n shell: appNode.shell.config.type,\n theme: {\n id: appNode.theme.id,\n mode: appNode.theme.mode,\n shape: appNode.theme.shape,\n },\n routing: appNode.routing,\n features: appNode.features,\n routes,\n focusAreas,\n workflow,\n },\n renderedMarkdown: '',\n };\n\n pack.renderedMarkdown = renderExecutionPackMarkdown(pack);\n return pack;\n}\n\nexport async function compileExecutionPackBundle(\n essence: EssenceFile,\n options: CompileExecutionPackBundleOptions = {},\n): Promise<ExecutionPackBundle> {\n const effectiveEssence = isV3(essence) ? essence : migrateV2ToV3(essence);\n const generatedAt = new Date().toISOString();\n const sharedTarget = {\n framework: effectiveEssence.meta.target || null,\n runtime: effectiveEssence.meta.platform.type || null,\n adapter: resolvePackAdapter(effectiveEssence.meta.target, effectiveEssence.meta.platform.type),\n };\n\n const pipeline = await runPipeline(essence, {\n contentRoot: options.contentRoot,\n overridePaths: options.overridePaths,\n resolver: options.resolver,\n });\n\n const scaffold = buildScaffoldPack(pipeline.ir, {\n target: sharedTarget,\n navigation: {\n commandPalette: Boolean(effectiveEssence.meta.navigation?.command_palette),\n hotkeys: Array.isArray(effectiveEssence.meta.navigation?.hotkeys)\n ? effectiveEssence.meta.navigation.hotkeys\n .filter((hotkey): hotkey is { key: string; route?: string; action?: string; label: string } => Boolean(\n hotkey\n && typeof hotkey.key === 'string'\n && typeof hotkey.label === 'string',\n ))\n .map((hotkey) => ({\n key: hotkey.key,\n route: hotkey.route,\n label: hotkey.label,\n }))\n : [],\n },\n });\n const review = buildReviewPack(pipeline.ir, {\n target: sharedTarget,\n });\n const sections = listPackSections(effectiveEssence).map(section => buildSectionPack(pipeline.ir, section, {\n target: sharedTarget,\n }));\n const pages = listPackPages(effectiveEssence).map(page => buildPagePack(pipeline.ir, page, {\n target: sharedTarget,\n }));\n const mutations = (['add-page', 'modify'] as const).map(mutationType => buildMutationPack(pipeline.ir, {\n mutationType,\n target: sharedTarget,\n }));\n\n const manifest: ExecutionPackManifest = {\n $schema: PACK_MANIFEST_SCHEMA_URL,\n version: '1.0.0',\n generatedAt,\n scaffold: {\n id: 'scaffold',\n markdown: 'scaffold-pack.md',\n json: 'scaffold-pack.json',\n },\n review: {\n id: 'review',\n markdown: 'review-pack.md',\n json: 'review-pack.json',\n },\n sections: listPackSections(effectiveEssence).map(section => ({\n id: section.id,\n markdown: `section-${section.id}-pack.md`,\n json: `section-${section.id}-pack.json`,\n pageIds: section.pageIds,\n })),\n pages: listPackPages(effectiveEssence).map(page => ({\n id: page.pageId,\n markdown: `page-${page.pageId}-pack.md`,\n json: `page-${page.pageId}-pack.json`,\n sectionId: page.sectionId,\n sectionRole: page.sectionRole,\n })),\n mutations: (['add-page', 'modify'] as const).map(mutationType => ({\n id: mutationType,\n markdown: `mutation-${mutationType}-pack.md`,\n json: `mutation-${mutationType}-pack.json`,\n mutationType,\n })),\n };\n\n return {\n $schema: EXECUTION_PACK_BUNDLE_SCHEMA_URL,\n generatedAt,\n sourceEssenceVersion: essence.version,\n manifest,\n scaffold,\n review,\n sections,\n pages,\n mutations,\n };\n}\n\nexport function selectExecutionPackFromBundle(\n bundle: ExecutionPackBundle,\n selector: ExecutionPackSelector,\n): SelectedExecutionPackResponse | null {\n const id = selector.id ?? null;\n let pack: SelectedExecutionPack | null = null;\n\n switch (selector.packType) {\n case 'scaffold':\n pack = bundle.scaffold;\n break;\n case 'review':\n pack = bundle.review;\n break;\n case 'section':\n pack = id ? bundle.sections.find((entry) => entry.data.sectionId === id) ?? null : null;\n break;\n case 'page':\n pack = id ? bundle.pages.find((entry) => entry.data.pageId === id) ?? null : null;\n break;\n case 'mutation':\n pack = id ? bundle.mutations.find((entry) => entry.data.mutationType === id) ?? null : null;\n break;\n default:\n pack = null;\n break;\n }\n\n if (!pack) {\n return null;\n }\n\n return {\n $schema: SELECTED_EXECUTION_PACK_SCHEMA_URL,\n generatedAt: bundle.generatedAt,\n sourceEssenceVersion: bundle.sourceEssenceVersion,\n manifest: bundle.manifest,\n selector: {\n packType: selector.packType,\n id,\n },\n pack,\n };\n}\n\nexport async function compileSelectedExecutionPack(\n essence: EssenceFile,\n selector: ExecutionPackSelector,\n options: CompileExecutionPackBundleOptions = {},\n): Promise<SelectedExecutionPackResponse | null> {\n const bundle = await compileExecutionPackBundle(essence, options);\n return selectExecutionPackFromBundle(bundle, selector);\n}\n"],"mappings":"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","names":["isV3","isPatternRef","isColumnLayout","isPatternRef","isColumnLayout","isV3","isV3","migrateV2ToV3","isV3","migrateV2ToV3"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decantr/core",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Decantr core — execution-pack compiler primitives and shared Decantr utilities",
5
5
  "author": "Decantr AI",
6
6
  "license": "MIT",
@@ -39,8 +39,8 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@decantr/registry": "1.0.1",
43
- "@decantr/essence-spec": "1.0.0"
42
+ "@decantr/registry": "1.0.2",
43
+ "@decantr/essence-spec": "1.0.3"
44
44
  },
45
45
  "devDependencies": {},
46
46
  "scripts": {
@@ -144,6 +144,9 @@
144
144
  "path": {
145
145
  "$ref": "#/$defs/nonEmptyString"
146
146
  },
147
+ "shell": {
148
+ "$ref": "#/$defs/nonEmptyString"
149
+ },
147
150
  "patternIds": {
148
151
  "$ref": "#/$defs/stringArray"
149
152
  }