@forgeax/engine-import 0.1.28 → 0.1.29
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/dist/index.mjs +1161 -1092
- package/dist/index.mjs.map +1 -1
- package/dist/scriptable-pack-build.d.ts.map +1 -1
- package/dist/scriptable-pack-output-producers.d.ts.map +1 -1
- package/dist/scriptable-pack.d.ts +6 -1
- package/dist/scriptable-pack.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/__tests__/scriptable-pack-build.unit.test.ts +64 -1
- package/src/__tests__/scriptable-pack-host.unit.test.ts +4 -4
- package/src/__tests__/scriptable-pack-production-producers.unit.test.ts +65 -26
- package/src/scriptable-pack-build.ts +55 -3
- package/src/scriptable-pack-output-producers.ts +24 -2
- package/src/scriptable-pack.ts +6 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/import-product.ts","../src/mesh-lod.ts","../src/import-runner.ts","../src/pack-projection.ts","../src/scriptable-pack-build.ts","../src/mesh-bin.ts","../src/scriptable-pack.ts","../src/scriptable-pack-output-producers.ts","../src/source-package.ts","../src/scriptable-pack-host.ts","../src/source-path.ts","../src/build-production.ts","../src/catalog-importer-policy.ts","../src/catalog-inventory.ts","../src/ies/parse-lm63.ts","../src/ies/resample-type-c.ts","../src/ies/ies-importer.ts","../src/importer-registry.ts","../src/scriptable-pack-file-snapshot.ts","../src/scriptable-pack-staged-snapshot.ts","../src/source-package-errors.ts","../src/source-package-publication.ts"],"names":["bytes","digest","ref","err","ok","product","ImportError","invalidProduct","artifacts","AssetGuid","producedGuids","AssetError","cooked","NativeCookerRegistry","isEngineMaterial","BUILTIN_MESH_ASSETS","PackageId","isScriptablePackAssetKind","known","missing","finalized","facts","displaySourcePath","revision","parsePackSourceJson","resolve","projectDirectPackJson","prepared","finalizePackageTransportSource","guid","span","factor","IES_PROFILE_WIDTH","IES_PROFILE_HEIGHT","IMPORT_ERROR_HINTS","isRecord","stable","record","stat","built","createHash"],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n ArtifactDescriptor,\n AssetRef,\n CookProduct,\n CookReceipt,\n ImportedArtifactBody,\n ImportedAsset,\n ImportProduct,\n Result,\n} from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\n\nexport interface TerminalImportProduct<P = unknown> extends ImportProduct<P> {\n readonly refs: readonly AssetRef[];\n readonly artifacts: Readonly<Record<string, ImportedArtifactBody>>;\n readonly receipts: readonly CookReceipt[];\n readonly diagnostics: readonly unknown[];\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n}\n\nexport interface ImportAssetProduct<P = unknown> {\n readonly payload: P;\n readonly refs: readonly AssetRef[];\n readonly artifacts: Readonly<Record<string, ImportedArtifactBody>>;\n}\n\nexport interface ImportProductContractError {\n readonly code: 'import-product-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly field: string };\n}\n\nfunction invalidProduct(field: string): Result<never, ImportProductContractError> {\n return err({\n code: 'import-product-invalid',\n expected: 'a complete terminal import product with source identity',\n hint: 'preserve refs, artifacts, receipts, diagnostics, and source revision at the product boundary',\n detail: { field },\n });\n}\n\nexport function createImportProduct<P = unknown>(\n input: TerminalImportProduct<P>,\n): Result<TerminalImportProduct<P>, ImportProductContractError> {\n if (!Array.isArray(input.assets)) return invalidProduct('assets');\n if (!Array.isArray(input.sourceDependencies)) return invalidProduct('sourceDependencies');\n if (input.sourceRevision.trim().length === 0) return invalidProduct('sourceRevision');\n if (!Array.isArray(input.refs)) return invalidProduct('refs');\n if (input.artifacts === null || typeof input.artifacts !== 'object') {\n return invalidProduct('artifacts');\n }\n if (!Array.isArray(input.receipts)) return invalidProduct('receipts');\n if (!Array.isArray(input.diagnostics)) return invalidProduct('diagnostics');\n return ok({ ...input });\n}\n\nasync function sha256Hex(bytes: Uint8Array): Promise<string> {\n const subtle = globalThis.crypto?.subtle;\n if (subtle === undefined) throw new Error('Web Crypto API is required for importer digests');\n const owned = new Uint8Array(bytes.byteLength);\n owned.set(bytes);\n const digest = await subtle.digest('SHA-256', owned.buffer);\n return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n\nasync function artifactDigest(bytes: Uint8Array): Promise<string> {\n return `sha256:${await sha256Hex(bytes)}`;\n}\n\nfunction concatBytes(chunks: readonly (Uint8Array | string)[]): Uint8Array {\n const encoder = new TextEncoder();\n const encoded = chunks.map((chunk) =>\n typeof chunk === 'string' ? encoder.encode(chunk) : chunk,\n );\n const totalLength = encoded.reduce((total, chunk) => total + chunk.byteLength, 0);\n const bytes = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of encoded) {\n bytes.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return bytes;\n}\n\nasync function productDigest(\n asset: ImportedAsset<unknown>,\n artifacts: Readonly<Record<string, ArtifactDescriptor>>,\n): Promise<string> {\n const chunks: (Uint8Array | string)[] = [\n JSON.stringify(projectImportedAssetPayload(asset)),\n JSON.stringify(asset.refs.map((ref) => ref.guid)),\n JSON.stringify(artifacts),\n ];\n for (const [key, artifact] of Object.entries(asset.artifacts).sort(([left], [right]) =>\n left.localeCompare(right),\n )) {\n chunks.push(key, artifact.bytes);\n }\n return `sha256:${await sha256Hex(concatBytes(chunks))}`;\n}\n\nasync function artifactDescriptors(\n artifacts: Readonly<Record<string, ImportedArtifactBody>>,\n): Promise<Readonly<Record<string, ArtifactDescriptor>>> {\n const entries: [string, ArtifactDescriptor][] = [];\n for (const [path, artifact] of Object.entries(artifacts)) {\n entries.push([\n path,\n {\n path,\n mediaType: artifact.mediaType,\n byteLength: artifact.bytes.byteLength,\n integrity: { algorithm: 'sha256' as const, digest: await artifactDigest(artifact.bytes) },\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n },\n ]);\n }\n return Object.fromEntries(entries);\n}\n\nexport function projectImportedAssetPayload(\n asset: ImportedAsset<unknown>,\n): Record<string, unknown> {\n const payload = asset.payload as Record<string, unknown>;\n if (Object.keys(asset.artifacts).length === 0) return payload;\n if (asset.kind === 'mesh') return { kind: 'mesh' };\n if (asset.kind === 'texture' || asset.kind === 'equirect') {\n const { data: _runtimeBytes, ...metadata } = payload;\n return metadata;\n }\n return payload;\n}\n\n/** Convert each importer asset into the shared completed producer product. */\nexport function finalizeImportProducts(\n product: ImportProduct<unknown>,\n inputFingerprint: string,\n): Promise<readonly CookProduct[]> {\n return (async () => {\n const products: CookProduct[] = [];\n for (const asset of product.assets) {\n const artifacts = await artifactDescriptors(asset.artifacts);\n const digest = await productDigest(asset, artifacts);\n products.push({\n guid: asset.guid,\n payload: asset.payload,\n refs: asset.refs.map((ref) => ref.guid),\n artifacts,\n digest,\n receipt: {\n guid: asset.guid,\n origin: 'sourceMeta' as const,\n status: 'succeeded' as const,\n inputFingerprint,\n outputDigest: digest,\n },\n });\n }\n return products;\n })();\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\n\nexport interface MeshLodMetaEntry {\n readonly sourceKey: string;\n readonly meshGuid: string;\n readonly screenCoverage?: number;\n}\n\nexport interface MeshLodContractInput {\n readonly lods: readonly Readonly<{ meshGuid: string; screenCoverage: number }>[];\n readonly lodHysteresis?: number;\n readonly rootMeshGuid?: string;\n readonly refs?: readonly string[];\n readonly generation?: number;\n readonly rootBounds?: MeshLodBounds;\n readonly lodBounds?: readonly MeshLodBounds[];\n readonly rootMaterialSlots?: readonly MeshLodMaterialSlot[];\n readonly lodMaterialSlots?: readonly (readonly MeshLodMaterialSlot[])[];\n readonly relations?: readonly MeshLodRelation[];\n}\n\nexport interface MeshLodBounds {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n}\n\nexport interface MeshLodMaterialSlot {\n readonly sourceKey: string;\n}\n\nexport interface MeshLodRelation {\n readonly from: string;\n readonly to: string;\n}\n\nexport type MeshLodContractError =\n | { readonly code: 'mesh-lod-contract-invalid'; readonly reason: string }\n | {\n readonly code: 'mesh-lod-topology-change';\n readonly reason: string;\n readonly previousIndices: readonly number[];\n readonly nextIndices: readonly number[];\n }\n | { readonly code: 'mesh-lod-authority-conflict'; readonly reason: string };\n\nexport interface ReconciledMeshLodMeta {\n readonly lods: readonly (MeshLodMetaEntry & { readonly screenCoverage: number })[];\n}\n\n/** Generate the shared first-import screen coverage defaults, including LOD0. */\nexport function deriveDefaultLodScreenCoverages(levelCount: number): readonly number[] {\n if (!Number.isInteger(levelCount) || levelCount < 1 || levelCount > 8) {\n throw new RangeError('levelCount must be an integer in [1, 8]');\n }\n return Array.from(\n { length: levelCount - 1 },\n (_, index) => Math.round(0.5 * 0.4 ** index * 1_000_000) / 1_000_000,\n );\n}\n\nexport function validateMeshLodContract(\n input: MeshLodContractInput,\n): Result<\n Readonly<{ lods: readonly Readonly<{ meshGuid: string; screenCoverage: number }>[] }>,\n MeshLodContractError\n> {\n if (input.lods.length > 7) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'at most seven lower-detail levels are supported',\n });\n }\n if (\n input.lodHysteresis !== undefined &&\n (!Number.isFinite(input.lodHysteresis) || input.lodHysteresis < 0 || input.lodHysteresis >= 1)\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'lodHysteresis must be finite and in [0, 1)',\n });\n }\n if (\n input.generation !== undefined &&\n (!Number.isSafeInteger(input.generation) || input.generation < 0)\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'generation must be a non-negative safe integer',\n });\n }\n const guids = new Set<string>();\n let previous = 1;\n for (const level of input.lods) {\n if (level.meshGuid.trim() === '' || guids.has(level.meshGuid)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'LOD mesh GUIDs must be unique and non-empty',\n });\n }\n if (\n !Number.isFinite(level.screenCoverage) ||\n level.screenCoverage <= 0 ||\n level.screenCoverage > 1\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'screenCoverage must be finite and in (0, 1]',\n });\n }\n if (level.screenCoverage >= previous) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'screenCoverage must strictly decrease by level',\n });\n }\n guids.add(level.meshGuid);\n previous = level.screenCoverage;\n }\n if (input.refs !== undefined) {\n const refs = new Set(input.refs);\n for (const level of input.lods) {\n if (!refs.has(level.meshGuid)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'every lower-detail mesh GUID must be enclosed by root refs',\n });\n }\n }\n }\n if (\n input.rootMeshGuid !== undefined &&\n input.refs !== undefined &&\n !input.refs.includes(input.rootMeshGuid)\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'root mesh GUID must be included in refs',\n });\n }\n if (input.rootBounds !== undefined) {\n if (!validBounds(input.rootBounds)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'root bounds must be finite and ordered',\n });\n }\n for (const bounds of input.lodBounds ?? []) {\n if (!validBounds(bounds) || !encloses(input.rootBounds, bounds)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'root bounds must enclose every lower-detail bounds',\n });\n }\n }\n }\n if (input.lodBounds !== undefined && input.lodBounds.length !== input.lods.length) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'lod bounds must cover every lower level',\n });\n }\n if (input.rootMaterialSlots !== undefined || input.lodMaterialSlots !== undefined) {\n const rootSlots = input.rootMaterialSlots ?? [];\n const lowerSlots = input.lodMaterialSlots ?? [];\n if (\n lowerSlots.length !== input.lods.length ||\n lowerSlots.some((slots) => !sameSlots(rootSlots, slots))\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'lower-detail material slots must preserve root sourceKey order',\n });\n }\n }\n if (input.relations !== undefined && hasCycle(input.relations)) {\n return err({ code: 'mesh-lod-contract-invalid', reason: 'LOD relations must be acyclic' });\n }\n return ok({ lods: input.lods });\n}\n\nfunction validBounds(bounds: MeshLodBounds): boolean {\n const [minX, minY, minZ] = bounds.min;\n const [maxX, maxY, maxZ] = bounds.max;\n return (\n [minX, minY, minZ, maxX, maxY, maxZ].every(Number.isFinite) &&\n minX <= maxX &&\n minY <= maxY &&\n minZ <= maxZ\n );\n}\n\nfunction encloses(root: MeshLodBounds, child: MeshLodBounds): boolean {\n return (\n child.min[0] >= root.min[0] &&\n child.min[1] >= root.min[1] &&\n child.min[2] >= root.min[2] &&\n child.max[0] <= root.max[0] &&\n child.max[1] <= root.max[1] &&\n child.max[2] <= root.max[2]\n );\n}\n\nfunction sameSlots(\n root: readonly MeshLodMaterialSlot[],\n child: readonly MeshLodMaterialSlot[],\n): boolean {\n return (\n root.length === child.length &&\n root.every((slot, index) => slot.sourceKey === child[index]?.sourceKey)\n );\n}\n\nfunction hasCycle(relations: readonly MeshLodRelation[]): boolean {\n const edges = new Map<string, string[]>();\n for (const relation of relations)\n edges.set(relation.from, [...(edges.get(relation.from) ?? []), relation.to]);\n const visiting = new Set<string>();\n const visited = new Set<string>();\n const visit = (node: string): boolean => {\n if (visiting.has(node)) return true;\n if (visited.has(node)) return false;\n visiting.add(node);\n for (const next of edges.get(node) ?? []) if (visit(next)) return true;\n visiting.delete(node);\n visited.add(node);\n return false;\n };\n return [...edges.keys()].some(visit);\n}\n\n/** Preserve sidecar facts by sourceKey while permitting only suffix changes. */\nexport function reconcileMeshLodMeta(\n previous: readonly MeshLodMetaEntry[],\n next: readonly MeshLodMetaEntry[],\n): Result<ReconciledMeshLodMeta, MeshLodContractError> {\n const overlap = Math.min(previous.length, next.length);\n for (let index = 0; index < overlap; index++) {\n const oldEntry = previous[index];\n const nextEntry = next[index];\n if (oldEntry?.sourceKey !== nextEntry?.sourceKey) {\n return err({\n code: 'mesh-lod-topology-change',\n reason: 'existing LOD source keys must remain prefix-stable',\n previousIndices: [index],\n nextIndices: [index],\n });\n }\n if (oldEntry?.meshGuid !== nextEntry?.meshGuid) {\n return err({\n code: 'mesh-lod-authority-conflict',\n reason: `sourceKey ${nextEntry?.sourceKey ?? '<missing>'} changed mesh GUID`,\n });\n }\n }\n const defaults = deriveDefaultLodScreenCoverages(next.length + 1);\n const lods = next.map((entry, index) => ({\n ...entry,\n screenCoverage: previous[index]?.screenCoverage ?? entry.screenCoverage ?? defaults[index] ?? 0,\n }));\n const valid = validateMeshLodContract({\n lods: lods.map(({ meshGuid, screenCoverage }) => ({ meshGuid, screenCoverage })),\n });\n if (!valid.ok) return valid;\n return ok({ lods });\n}\n","// @forgeax/engine-import - import runner (feat-20260603-asset-import-loader-injection M2 / w15).\n//\n// The build-time orchestration that turns one parsed `*.meta.json` sidecar\n// into the logical Pack v2 package. It is the consumer side of\n// the ImporterRegistry: it reads `meta.importer`, looks up the registered\n// Importer, calls `importer.import(ctx)`, enforces the GUID import-stable iron\n// law against the produced asset set, then folds the produced PODs into\n// logical `assets[]` rows. Artifact bytes stay with their owning asset;\n// final paths and integrity belong to M3.\n//\n// Error model (charter P3, ImportErrorCode 5 closed members):\n// - importer-not-registered : registry.get(meta.importer) === undefined\n// - source-read-failed : ctx.readSource() failed\n// - import-internal-error : importer conversion or CookProduct finalization threw (never bare-throws out)\n// - guid-mismatch : produced a GUID not declared in subAssets[]\n// - import-produced-no-assets: produced [], or omitted a declared GUID\n//\n// The reserved key `importer: 'shader'` is skipped (plan-strategy D-4 /\n// research Finding 10): shader sidecars are consumed by the orthogonal\n// `@forgeax/engine-vite-plugin-shader` transform pipeline, never by asset\n// import. `runImport` returns `{ ok: true, value: { skipped: 'shader' } }`\n// for them so the caller can account for the sidecar without writing a DDC.\n\nimport type {\n AssetRelation,\n CatalogDiagnostic,\n CookProduct,\n ImportContext,\n ImportDiagnostic,\n ImportError as ImportErrorType,\n ImportedArtifactBody,\n ImportProduct,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideMap,\n} from '@forgeax/engine-types';\nimport {\n canonicalizeSourceOverrides,\n IMPORT_ERROR_HINTS,\n ImportError,\n validateSourceOverrideMap,\n} from '@forgeax/engine-types';\nimport {\n createImportProduct,\n finalizeImportProducts,\n type TerminalImportProduct,\n} from './import-product.js';\nimport type { ImporterRegistry } from './importer-registry.js';\nimport { validateMeshLodContract } from './mesh-lod.js';\n\n/** Reserved `meta.importer` key consumed by vite-plugin-shader, not the import runner. */\nexport const SHADER_RESERVED_IMPORTER_KEY = 'shader';\n\n/**\n * Classify an importer throw as a build-time module-LOAD failure (the importer\n * module / native addon could not be imported) vs a conversion THROW (the\n * loaded importer ran and threw). feat-20260629 D-5: both keep the\n * `import-internal-error` code, but a load failure surfaces `.detail.loadError`\n * so AI users distinguish \"my importer is not loadable / not built\" from \"my\n * importer ran and crashed\" without parsing `.message`.\n *\n * Node signals a module-load failure via `err.code` (`MODULE_NOT_FOUND` for\n * CJS `require`, `ERR_MODULE_NOT_FOUND` for ESM `import()`, `ERR_DLOPEN_FAILED`\n * for a broken native `.node` addon) or a recognizable message. Native FBX-style\n * bindings throw a plain Error whose message names the missing addon.\n */\nfunction isModuleLoadFailure(e: unknown): boolean {\n if (!(e instanceof Error)) return false;\n const code = (e as { code?: unknown }).code;\n if (\n code === 'MODULE_NOT_FOUND' ||\n code === 'ERR_MODULE_NOT_FOUND' ||\n code === 'ERR_DLOPEN_FAILED'\n ) {\n return true;\n }\n const msg = e.message;\n return (\n msg.includes('Cannot find module') || msg.includes('native addon') || msg.includes('.node')\n );\n}\n\nfunction declarationsSourceKey(\n declarations: readonly { readonly guid: string; readonly sourceKey?: string }[],\n guid: string,\n): string | undefined {\n return declarations.find((declaration) => declaration.guid === guid)?.sourceKey;\n}\n\n/**\n * bug-20260610-pack-typed-array-roundtrip: normalise a value tree so every\n * typed-array becomes a plain `number[]`. The DDC pack is serialised via\n * `JSON.stringify`; left as-is, a `Float32Array` round-trips to an indexed\n * object (`{ \"0\": v0, ... }`) and the runtime mesh / animation-clip loaders\n * reject it with `asset-parse-failed`. Walking the tree once at the importer\n * boundary keeps every downstream consumer (build emitFile, dev startMetaImport,\n * and any future pack-cache tool) aligned on the same on-disk shape.\n */\nexport function normaliseForPack(value: unknown): unknown {\n if (value === null || value === undefined) return value;\n if (\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Uint32Array ||\n value instanceof Int8Array ||\n value instanceof Int16Array ||\n value instanceof Int32Array\n ) {\n return Array.from(value as ArrayLike<number>);\n }\n if (Array.isArray(value)) {\n return value.map(normaliseForPack);\n }\n if (typeof value === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n out[k] = normaliseForPack(v);\n }\n return out;\n }\n return value;\n}\n\n/** Result envelope returned by {@link runImport} (mirrors the engine `Result<T,E>` shape). */\nexport type RunImportResult =\n | { readonly ok: true; readonly value: RunImportOk }\n | { readonly ok: false; readonly error: ImportErrorType };\n\nexport type RunImportProductResult =\n | {\n readonly ok: true;\n readonly value:\n | { readonly skipped: 'shader' }\n | {\n readonly product: TerminalImportProduct;\n readonly cookProducts: readonly CookProduct[];\n };\n }\n | { readonly ok: false; readonly error: ImportErrorType };\n\n/**\n * Success payload. `skipped: 'shader'` marks a reserved shader sidecar the\n * runner intentionally did not import (no DDC written); otherwise `pack` is the\n * logical Pack v2 document. Artifact bytes remain owned by each asset.\n */\nexport type RunImportOk =\n | { readonly skipped: 'shader' }\n | {\n readonly product: TerminalImportProduct;\n readonly cookProducts: readonly CookProduct[];\n readonly pack: DdcPack;\n };\n\n/** The logical Pack v2 document consumed by the shared finalizer. */\nexport interface DdcPack {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'internal-text-package';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly assets: ReadonlyArray<{\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly relations?: readonly AssetRelation[];\n readonly payload: Record<string, unknown>;\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, ImportedArtifactBody>>;\n }>;\n}\n\n/** Minimal parsed-meta shape the runner reads (a superset of the sidecar). */\nexport interface RunImportMeta {\n readonly importer: string;\n readonly source: string;\n /** Scanner-owned source declaration revision; avoids reopening validated Meta. */\n readonly sourceRevision?: string;\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly importSettings?: Readonly<Record<string, unknown>>;\n readonly sourceOverrides?: SourceOverrideMap;\n /** Skip the normalized DDC pack when a downstream finalizer owns publication. */\n readonly buildPack?: boolean;\n readonly subAssets: ReadonlyArray<{\n readonly guid: string;\n readonly sourceIndex: number;\n readonly kind: string;\n readonly sourceKey?: string;\n readonly relations?: readonly AssetRelation[];\n }>;\n}\n\nfunction declarationFields(\n declaration: RunImportMeta['subAssets'][number] | undefined,\n): Pick<DdcPack['assets'][number], 'sourceKey' | 'sourceIndex' | 'relations'> {\n if (declaration === undefined) return {};\n return {\n sourceIndex: declaration.sourceIndex,\n ...(declaration.sourceKey !== undefined ? { sourceKey: declaration.sourceKey } : {}),\n ...(declaration.relations !== undefined ? { relations: declaration.relations } : {}),\n };\n}\n\n/** Filesystem + decode capabilities the runner needs to drive an importer.\n *\n * `readSource` reads the primary source bytes addressed by `meta.source`.\n * `readSibling` reads a co-located file (e.g. an external `.bin` / `.png`\n * referenced from a `.gltf` via relative URI). Optional today so existing\n * callers stay green; importers that depend on it (gltfImporter texture\n * external-uri path) gate on its presence and surface a structured\n * `'source-read-failed'` ImportError when the host did not wire it.\n *\n * `decodeImage` is the M3 D-1 seam: gltfImporter funnels all three image\n * sources (bufferView / data-uri / external-uri) through one callback so\n * `@forgeax/engine-gltf` carries no `from '@forgeax/engine-image'` edge\n * (the grep gate `packages/gltf/scripts/check-no-image-import.mjs` enforces\n * this). The concrete decode lives in `@forgeax/engine-image/image-importer`;\n * the build-time orchestrator binds the callback when constructing this\n * `ImportRunnerFs`.\n */\nexport interface ImportRunnerFs {\n /**\n * Map a physical read path to the host's stable logical source identity.\n *\n * Hosts may expose the same source through different filesystem coordinates\n * (for example a symlink farm in a browser Vite root). The identity is used\n * only for dependency/revision facts; `readSource` and `readSibling` still\n * receive the physical path supplied by the importer.\n */\n sourceIdentityFor?(sourcePath: string): string;\n readSource(\n sourcePath: string,\n ): Promise<\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: unknown }\n >;\n readSibling?(\n sourcePath: string,\n uri: string,\n ): Promise<\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: unknown }\n >;\n decodeImage?: ImportContext['decodeImage'];\n}\n\n/**\n * Resolve an `images[].uri` (or any sibling reference) against the directory\n * of `meta.source`. Pure path arithmetic — no I/O. Used as the default\n * `readSibling` fallback when the host did not wire one explicitly.\n */\nfunction joinSiblingPath(sourcePath: string, uri: string): string {\n const slash = Math.max(sourcePath.lastIndexOf('/'), sourcePath.lastIndexOf('\\\\'));\n const dir = slash >= 0 ? sourcePath.slice(0, slash + 1) : '';\n return `${dir}${uri}`;\n}\n\nfunction normalizeDependencyPath(path: string): string {\n const slash = path.replaceAll('\\\\', '/');\n const parts: string[] = [];\n for (const part of slash.split('/')) {\n if (part === '' || part === '.') continue;\n if (part === '..') {\n parts.pop();\n } else {\n parts.push(part);\n }\n }\n return parts.join('/');\n}\n\nfunction dependencyIdentity(fs: ImportRunnerFs, sourcePath: string): string {\n return normalizeDependencyPath(fs.sourceIdentityFor?.(sourcePath) ?? sourcePath);\n}\n\nfunction errResult(error: ImportErrorType): {\n readonly ok: false;\n readonly error: ImportErrorType;\n} {\n return { ok: false, error };\n}\n\nfunction sourceKeyActual(value: unknown): string {\n if (typeof value === 'string') return JSON.stringify(value);\n if (value === undefined) return 'missing';\n return typeof value;\n}\n\ntype SourceReaderErrorMetadata = {\n readonly code?: unknown;\n readonly name?: unknown;\n readonly message?: unknown;\n readonly detail?: unknown;\n};\n\nfunction sourceReadFailureReason(error: unknown): string {\n if (typeof error !== 'object' || error === null) {\n return typeof error === 'string' ? error : 'unknown';\n }\n const metadata = error as SourceReaderErrorMetadata;\n const token =\n typeof metadata.code === 'string'\n ? metadata.code\n : typeof metadata.name === 'string'\n ? metadata.name\n : undefined;\n switch (token) {\n case 'ENOENT':\n case 'NotFoundError':\n return 'not-found';\n case 'EACCES':\n case 'EPERM':\n case 'PermissionDeniedError':\n case 'NotAllowedError':\n case 'SecurityError':\n return 'permission-denied';\n case 'EAGAIN':\n case 'EBUSY':\n case 'EINTR':\n case 'ECONNABORTED':\n case 'ECONNREFUSED':\n case 'ECONNRESET':\n case 'EHOSTUNREACH':\n case 'ENETDOWN':\n case 'ENETUNREACH':\n case 'ETIMEDOUT':\n case 'EPIPE':\n case 'ABORT_ERR':\n case 'AbortError':\n case 'TimeoutError':\n return 'transient';\n default:\n if (typeof metadata.detail === 'object' && metadata.detail !== null) {\n const reason = (metadata.detail as { readonly reason?: unknown }).reason;\n if (typeof reason === 'string' && reason.length > 0) return reason;\n }\n if (typeof metadata.message === 'string' && metadata.message.length > 0) {\n return metadata.message;\n }\n return 'unknown';\n }\n}\n\n/**\n * Validate producer identity before source work or DDC product finalization.\n * Multi-output declarations cannot recover identity from sourceIndex, array\n * order, or a path, so every row must carry one unique semantic sourceKey.\n * Single-output declarations may omit the key for legacy source compatibility;\n * producers that expose a semantic output should still declare it so Catalog\n * evidence remains stable when the output later gains siblings.\n */\nfunction validateOutputSourceKeys(meta: RunImportMeta): ImportErrorType | undefined {\n if (meta.subAssets.length <= 1) return undefined;\n\n const diagnostics: ImportDiagnostic[] = [];\n const seen = new Map<string, number>();\n for (const [index, declaration] of meta.subAssets.entries()) {\n const sourcePath = `${meta.source}#subAssets[${index}]`;\n const sourceRange = { start: 0, end: 0, line: 1, column: 1 };\n const sourceKey = declaration.sourceKey;\n if (typeof sourceKey !== 'string' || sourceKey.trim().length === 0) {\n diagnostics.push({\n code: 'source-key-required',\n severity: 'error',\n sourcePath,\n sourceRange,\n rule: 'import-output-source-key',\n expected: 'a non-empty producer-owned sourceKey',\n actual: sourceKeyActual(sourceKey),\n hint: 'publish a stable semantic sourceKey; sourceIndex is only a locator',\n });\n continue;\n }\n const prior = seen.get(sourceKey);\n if (prior !== undefined) {\n diagnostics.push({\n code: 'duplicate-source-key',\n severity: 'error',\n sourcePath,\n sourceRange,\n rule: 'import-output-source-key-unique',\n expected: 'sourceKey to be unique within one imported package',\n actual: `${JSON.stringify(sourceKey)} duplicates subAssets[${prior}]`,\n hint: 'rename the duplicate semantic output before writing Meta',\n });\n continue;\n }\n seen.set(sourceKey, index);\n }\n if (diagnostics.length === 0) return undefined;\n return new ImportError({\n code: 'source-validation-failed',\n expected: 'every writable imported output to declare a unique non-empty sourceKey',\n hint: IMPORT_ERROR_HINTS['source-validation-failed'],\n detail: { diagnostics },\n });\n}\n\n/**\n * Run the importer for one parsed meta sidecar and produce its DDC.\n *\n * @param meta the parsed `*.meta.json` (importer + source + subAssets[]).\n * @param registry the wired {@link ImporterRegistry}.\n * @param fs the source-read capability (injected so the runner stays\n * testable without touching real disk).\n */\nexport function runImport(\n meta: RunImportMeta & { readonly buildPack: false },\n registry: ImporterRegistry,\n fs: ImportRunnerFs,\n): Promise<RunImportProductResult>;\nexport function runImport(\n meta: RunImportMeta,\n registry: ImporterRegistry,\n fs: ImportRunnerFs,\n): Promise<RunImportResult>;\nexport async function runImport(\n meta: RunImportMeta,\n registry: ImporterRegistry,\n fs: ImportRunnerFs,\n): Promise<RunImportResult | RunImportProductResult> {\n // Reserved shader key: orthogonal vite-plugin-shader pipeline owns these.\n if (meta.importer === SHADER_RESERVED_IMPORTER_KEY) {\n return { ok: true, value: { skipped: 'shader' } };\n }\n\n const sourceKeyError = validateOutputSourceKeys(meta);\n if (sourceKeyError !== undefined) return errResult(sourceKeyError);\n\n const declaredSourceKeys = meta.subAssets.flatMap((subAsset) =>\n subAsset.sourceKey === undefined ? [] : [subAsset.sourceKey],\n );\n const sourceOverridesResult = validateSourceOverrideMap(meta.sourceOverrides, declaredSourceKeys);\n if (!sourceOverridesResult.ok) {\n const error = new ImportError({\n code: sourceOverridesResult.error.code,\n expected: sourceOverridesResult.error.expected,\n hint: IMPORT_ERROR_HINTS[sourceOverridesResult.error.code],\n detail: {\n sourceKey: sourceOverridesResult.error.actual,\n declaredSourceKeys,\n reason: sourceOverridesResult.error.hint,\n },\n });\n if (sourceOverridesResult.error.actual !== undefined) {\n Object.assign(error, { actual: sourceOverridesResult.error.actual });\n }\n return errResult(error);\n }\n\n const importer = registry.get(meta.importer);\n if (importer === undefined) {\n return errResult(\n new ImportError({\n code: 'importer-not-registered',\n expected: `an importer registered for meta.importer \"${meta.importer}\"`,\n hint: IMPORT_ERROR_HINTS['importer-not-registered'],\n detail: {\n importer: meta.importer,\n registeredImporters: registry.registeredImporters(),\n },\n }),\n );\n }\n\n const dependencies = new Set<string>();\n const readSource = async (sourcePath: string) => {\n dependencies.add(dependencyIdentity(fs, sourcePath));\n try {\n return await fs.readSource(sourcePath);\n } catch (error) {\n return { ok: false as const, error };\n }\n };\n\n const readSibling = async (\n uri: string,\n ): Promise<\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: ImportErrorType }\n > => {\n let inner:\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: unknown }\n | { readonly ok: false; readonly error: ImportErrorType };\n try {\n if (fs.readSibling) {\n dependencies.add(dependencyIdentity(fs, joinSiblingPath(meta.source, uri)));\n inner = await fs.readSibling(meta.source, uri);\n } else {\n inner = await readSource(joinSiblingPath(meta.source, uri));\n }\n } catch (error) {\n inner = { ok: false, error };\n }\n if (inner.ok) {\n return { ok: true, value: inner.value };\n }\n return {\n ok: false,\n error: new ImportError({\n code: 'source-read-failed',\n expected: `readable sibling file \"${uri}\" co-located with meta.source \"${meta.source}\"`,\n hint: IMPORT_ERROR_HINTS['source-read-failed'],\n detail: {\n source: uri,\n reason: sourceReadFailureReason(inner.error),\n },\n }),\n };\n };\n\n const decodeImage: ImportContext['decodeImage'] =\n fs.decodeImage ??\n (async () => {\n throw new Error(\n 'ImportRunnerFs.decodeImage was not provided; gltfImporter texture extraction requires the host (vite-plugin-pack / cli-gltf / test) to bind decodeImage when constructing the ImportRunnerFs',\n );\n });\n\n const canonicalSourceOverrides = canonicalizeSourceOverrides(sourceOverridesResult.value);\n const ctx: ImportContext = {\n source: meta.source,\n readSource: () => readSource(meta.source),\n readSibling,\n decodeImage,\n subAssets: meta.subAssets.map(({ guid, sourceIndex, sourceKey, kind }) => ({\n guid,\n sourceIndex,\n ...(sourceKey === undefined ? {} : { sourceKey }),\n kind,\n })),\n importSettings: meta.importSettings ?? {},\n ...(canonicalSourceOverrides === undefined\n ? {}\n : { sourceOverrides: canonicalSourceOverrides }),\n };\n\n // Probe the source once up-front so a missing/unreadable source surfaces as\n // source-read-failed rather than as an opaque import-internal-error inside\n // the importer (charter P3 precise attribution).\n const sourceProbe = await readSource(meta.source);\n if (!sourceProbe.ok) {\n return errResult(\n new ImportError({\n code: 'source-read-failed',\n expected: `readable source file at meta.source \"${meta.source}\"`,\n hint: IMPORT_ERROR_HINTS['source-read-failed'],\n detail: {\n source: meta.source,\n reason: sourceReadFailureReason(sourceProbe.error),\n },\n }),\n );\n }\n\n let product: ImportProduct;\n try {\n const imported = (await importer.import(ctx)) as\n | { readonly ok: boolean; readonly value?: ImportProduct; readonly error?: ImportErrorType }\n | undefined;\n if (\n imported === undefined ||\n imported === null ||\n typeof imported !== 'object' ||\n !('ok' in imported)\n ) {\n throw new Error(\n 'importer returned a legacy or malformed result; expected ImportResult<ImportProduct>',\n );\n } else {\n if (!imported.ok) {\n if (imported.error === undefined)\n throw new Error('importer returned an invalid failure result');\n if (imported.error instanceof ImportError) return errResult(imported.error);\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer \"${meta.importer}\" to return a structured ImportError`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { reason: String(imported.error) },\n }),\n );\n }\n if (imported.value === undefined)\n throw new Error('importer returned an invalid success result');\n const value = imported.value;\n if (\n value === undefined ||\n !Array.isArray(value.assets) ||\n !Array.isArray(value.sourceDependencies) ||\n 'artifacts' in value\n ) {\n throw new Error('importer returned an invalid ImportProduct');\n }\n for (const asset of value.assets) {\n if (\n asset === null ||\n typeof asset !== 'object' ||\n !('artifacts' in asset) ||\n asset.artifacts === null ||\n typeof asset.artifacts !== 'object' ||\n Array.isArray(asset.artifacts)\n ) {\n throw new Error('importer returned an asset without local artifacts');\n }\n }\n product = value;\n }\n } catch (e) {\n if (e instanceof ImportError) return errResult(e);\n const message = e instanceof Error ? e.message : String(e);\n // D-5: a module-LOAD failure rides `.detail.loadError`; a conversion THROW\n // rides `.detail.reason`. Same `import-internal-error` code (no new closed\n // union member); AI users branch on the `.detail` shape.\n if (isModuleLoadFailure(e)) {\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer module \"${meta.importer}\" to load (module + native addon present)`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { loadError: message },\n }),\n );\n }\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer \"${meta.importer}\" to convert the source without throwing`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { reason: message },\n }),\n );\n }\n\n const produced = product.assets;\n\n // LOD is a producer-authored MeshAsset fact. Validate it once at the\n // import boundary so malformed coverage never reaches DDC or runtime.\n for (const asset of produced) {\n if (asset.kind !== 'mesh' || asset.payload === null || typeof asset.payload !== 'object')\n continue;\n const payload = asset.payload as {\n readonly lods?: readonly {\n readonly mesh?: unknown;\n readonly meshGuid?: unknown;\n readonly screenCoverage?: unknown;\n }[];\n readonly lodHysteresis?: unknown;\n };\n if (payload.lods === undefined) continue;\n const lods = payload.lods.map((level) => ({\n meshGuid:\n typeof level.meshGuid === 'string'\n ? level.meshGuid\n : typeof level.mesh === 'string'\n ? level.mesh\n : JSON.stringify(level.mesh),\n screenCoverage: level.screenCoverage,\n }));\n const validated = validateMeshLodContract({\n lods: lods as readonly { meshGuid: string; screenCoverage: number }[],\n ...(payload.lodHysteresis === undefined\n ? {}\n : { lodHysteresis: payload.lodHysteresis as number }),\n });\n if (!validated.ok) {\n return errResult(\n new ImportError({\n code: validated.error.code,\n expected: 'MeshAsset LOD facts to satisfy the shared contract',\n hint: IMPORT_ERROR_HINTS[validated.error.code],\n detail: {\n meshLodSourceKey: declarationsSourceKey(meta.subAssets, asset.guid),\n reason: validated.error.reason,\n ...(validated.error.code === 'mesh-lod-topology-change'\n ? {\n previousIndices: validated.error.previousIndices,\n nextIndices: validated.error.nextIndices,\n }\n : {}),\n },\n }),\n );\n }\n }\n\n // GUID import-stable iron law: the produced GUID set must be a superset of\n // the declared set, and must not contain any GUID the meta never declared.\n const declared = new Set(meta.subAssets.map((s) => s.guid));\n const producedGuids = new Set(produced.map((a) => a.guid));\n\n const unexpectedGuids = [...producedGuids].filter((g) => !declared.has(g));\n if (unexpectedGuids.length > 0) {\n return errResult(\n new ImportError({\n code: 'guid-mismatch',\n expected: 'every produced GUID to be declared in meta.subAssets[]',\n hint: IMPORT_ERROR_HINTS['guid-mismatch'],\n detail: { unexpectedGuids },\n }),\n );\n }\n\n const missingGuids = [...declared].filter((g) => !producedGuids.has(g));\n if (produced.length === 0 || missingGuids.length > 0) {\n return errResult(\n new ImportError({\n code: 'import-produced-no-assets',\n expected:\n produced.length === 0\n ? 'the importer to produce at least one ImportedAsset'\n : 'the produced GUID set to be a superset of meta.subAssets[]',\n hint: IMPORT_ERROR_HINTS['import-produced-no-assets'],\n detail: { missingGuids },\n }),\n );\n }\n\n const declarations = new Map(\n meta.subAssets.map((declaration) => [declaration.guid, declaration]),\n );\n const productWithDependencies = {\n ...product,\n sourceDependencies: [...dependencies],\n };\n const inputFingerprint = `source:${[...dependencies].sort().join('|')}`;\n let cookProducts: readonly CookProduct[];\n try {\n cookProducts = await finalizeImportProducts(productWithDependencies, inputFingerprint);\n } catch (e) {\n const reason = e instanceof Error ? e.message : String(e);\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer \"${meta.importer}\" finalization to produce complete CookProduct digests`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { reason: `finalization/digest: ${reason}` },\n }),\n );\n }\n const terminalProduct = createImportProduct({\n ...productWithDependencies,\n refs: productWithDependencies.assets.flatMap((asset) => asset.refs),\n artifacts: Object.fromEntries(\n productWithDependencies.assets.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [\n `${asset.guid}/${key}`,\n artifact,\n ]),\n ),\n ),\n receipts: cookProducts.map((product) => product.receipt),\n diagnostics: meta.diagnostics ?? [],\n sourceRevision: inputFingerprint,\n });\n if (!terminalProduct.ok) {\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: 'the import product to retain complete terminal producer facts',\n hint: 'preserve source identity and producer evidence when returning the import product',\n detail: { reason: terminalProduct.error.detail.field },\n }),\n );\n }\n if (meta.buildPack === false) {\n return {\n ok: true,\n value: { product: terminalProduct.value, cookProducts },\n };\n }\n\n const assets = produced.map((a) => {\n const outputFields = declarationFields(declarations.get(a.guid));\n return {\n guid: a.guid,\n kind: a.kind,\n ...outputFields,\n ...(a.name !== undefined ? { name: a.name } : {}),\n // bug-20260610: mesh / scene / animation-clip payloads carry Float32Array\n // / Uint16Array / Uint32Array fields. JSON.stringify on a typed array\n // serialises to `{ \"0\": v0, \"1\": v1, ... }` (a plain object), which the\n // runtime mesh / animation loaders reject (`vertexData instanceof\n // Float32Array` and `Array.isArray(vertexData)` both fail). Convert\n // every typed-array field to a plain Array here so the pack is JSON-\n // roundtrip safe end-to-end. This matches the convention every\n // existing pack-fixture test uses (`vertices: Array.from(...)`).\n payload: normaliseForPack(a.payload as unknown) as Record<string, unknown>,\n refs: a.refs.map((r) => r.guid),\n artifacts: a.artifacts,\n };\n });\n\n const pack: DdcPack = {\n schemaVersion: '2.0.0',\n kind: 'internal-text-package',\n ...(meta.packageId !== undefined ? { packageId: meta.packageId } : {}),\n ...(meta.provenance !== undefined ? { provenance: meta.provenance } : {}),\n ...(meta.revision !== undefined ? { revision: meta.revision } : {}),\n ...(meta.diagnostics !== undefined ? { diagnostics: meta.diagnostics } : {}),\n assets,\n };\n\n return {\n ok: true,\n value: {\n product: terminalProduct.value,\n cookProducts,\n pack,\n },\n };\n}\n","import type { ImportProduct } from '@forgeax/engine-types';\nimport { projectImportedAssetPayload } from './import-product.js';\nimport { type DdcPack, normaliseForPack } from './import-runner.js';\n\n/** Project one validated import product into the canonical Pack v2 payload. */\nexport function projectImportProductForBuild(\n product: Pick<ImportProduct<unknown>, 'assets'>,\n): DdcPack {\n return {\n schemaVersion: '2.0.0',\n kind: 'internal-text-package',\n assets: product.assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: normaliseForPack(projectImportedAssetPayload(asset)) as Record<string, unknown>,\n refs: asset.refs.map((reference) => reference.guid),\n artifacts: asset.artifacts,\n })),\n };\n}\n","import { BUILTIN_MESH_ASSETS } from '@forgeax/engine-pack/builtin';\nimport { type NativeCooker, NativeCookerRegistry } from '@forgeax/engine-pack/native-cooker';\nimport {\n type AnyScriptablePackDefinition,\n AssetGuid,\n isScriptablePackAssetKind,\n isValidPackSourceKey,\n type PackAuthoringError,\n PackageId,\n type PackBuildContextWithoutParameters,\n type PackBuildContextWithParameters,\n type PackParameterDefinition,\n type PackParameterValue,\n resolvePackParameterValues,\n} from '@forgeax/engine-pack/source';\nimport { isEngineMaterial } from '@forgeax/engine-shader';\nimport type {\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n ImportedAsset,\n Result,\n} from '@forgeax/engine-types';\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport {\n createImportProduct,\n type ImportAssetProduct,\n type TerminalImportProduct,\n} from './import-product.js';\nimport type {\n AssetOutputProducer,\n AssetOutputProducerRegistry,\n PackBuildProduct,\n ScriptablePackAssetSnapshotSource,\n ScriptablePackDomainError,\n ScriptablePackExternalEvidence,\n ScriptablePackSourceClosureEntry,\n ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\n\nexport interface ScriptablePackBuildOptions {\n readonly definition: AnyScriptablePackDefinition;\n readonly sourcePath: string;\n /** Instance identity. Omitted for a root source and defaults to definition.packageId. */\n readonly subjectPackageId?: PackageId;\n /** Sparse instance values; defaults are applied before build. */\n readonly values?: Readonly<Record<string, unknown>>;\n /** Effective parent values supplied by the inheritance resolver. */\n readonly inheritedValues?: Readonly<Record<string, PackParameterValue>>;\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n readonly outputs: AssetOutputProducerRegistry;\n /** Optional build-time cookers for authored producer outputs that need artifacts. */\n readonly cookers?: readonly NativeCooker[];\n readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];\n readonly authoringContractVersion?: string;\n /** Known published GUIDs used for the optional global reference gate. */\n readonly availableGuids?: ReadonlySet<string>;\n /** Worklist mode defers reference closure until every subject is materialized. */\n readonly deferReferenceValidation?: boolean;\n readonly publication?: AssetPublicationEnvelope;\n}\n\nexport interface ScriptablePackBuildProduct extends PackBuildProduct {\n readonly publication?: AssetPublicationEnvelope;\n}\n\nexport type ScriptablePackBuildResult = Result<\n ScriptablePackBuildProduct,\n | PackAuthoringError\n | ScriptablePackDomainError\n | AssetError\n | ImportError\n | {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n }\n>;\n\ninterface ObservedRead {\n readonly guid: string;\n readonly asset: Asset;\n readonly generation: number;\n readonly digest: string;\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isAsset(value: unknown): value is Asset {\n return record(value) && typeof value.kind === 'string' && isScriptablePackAssetKind(value.kind);\n}\n\nfunction needsMaterialCook(asset: Asset): asset is Extract<Asset, { readonly kind: 'material' }> {\n return asset.kind === 'material' && Array.isArray(asset.passes) && !isEngineMaterial(asset);\n}\n\nfunction clone<T>(value: T): T {\n return structuredClone(value);\n}\n\nfunction stable(value: unknown): string {\n if (value instanceof Uint8Array) return JSON.stringify(Array.from(value));\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const object = value as Record<string, unknown>;\n return `{${Object.keys(object)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(object[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nasync function digest(value: unknown): Promise<string> {\n const crypto = globalThis.crypto?.subtle;\n if (crypto === undefined) throw new Error('Web Crypto API is required for Pack fingerprints');\n const bytes = await crypto.digest('SHA-256', new TextEncoder().encode(stable(value)));\n return `sha256:${Array.from(new Uint8Array(bytes), (byte) => byte.toString(16).padStart(2, '0')).join('')}`;\n}\n\nfunction observedReader(source: ScriptablePackAssetSnapshotSource | undefined): {\n readonly reader: {\n readByGuid<TAsset extends Asset = Asset>(guid: AssetGuidType): Promise<Result<TAsset, unknown>>;\n };\n readonly reads: ReadonlyMap<string, ObservedRead>;\n} {\n const reads = new Map<string, ObservedRead>();\n const reader = {\n async readByGuid<TAsset extends Asset = Asset>(\n guid: AssetGuidType,\n ): Promise<Result<TAsset, unknown>> {\n const key = AssetGuid.format(guid).toLowerCase();\n const cached = reads.get(key);\n if (cached !== undefined) return ok(clone(cached.asset) as TAsset);\n if (source === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-found',\n expected: `a published Asset snapshot for content dependency ${key}`,\n hint: 'publish the dependency or remove the content read from the Pack build',\n detail: { sourcePath: key },\n }),\n );\n }\n const result = await source.readByGuid(guid);\n if (!result.ok) return result;\n const asset = clone(result.value.asset);\n reads.set(key, {\n guid: key,\n asset,\n generation: result.value.generation,\n digest: result.value.digest,\n });\n return ok(clone(asset) as TAsset);\n },\n };\n return { reader, reads };\n}\n\nfunction buildContext(\n packageId: PackageId,\n values: Readonly<Record<string, PackParameterValue>> | undefined,\n reader: ReturnType<typeof observedReader>['reader'],\n):\n | PackBuildContextWithParameters<readonly [PackParameterDefinition, ...PackParameterDefinition[]]>\n | PackBuildContextWithoutParameters {\n if (values === undefined) return { packageId, readByGuid: reader.readByGuid };\n return { packageId, values, readByGuid: reader.readByGuid } as PackBuildContextWithParameters<\n readonly [PackParameterDefinition, ...PackParameterDefinition[]]\n >;\n}\n\nfunction sourceKeyFailure(sourcePath: string, sourceKey: unknown): PackAuthoringError {\n return {\n code: 'pack-source-key-invalid',\n expected: 'a sourceKey matching the Pack source-key grammar',\n hint: 'return stable lower-case semantic keys instead of paths or output indexes',\n detail: { sourcePath, sourceKey },\n };\n}\n\nfunction outputValueError(\n sourcePath: string,\n sourceKey: string,\n expected: string,\n actual: unknown,\n): PackAuthoringError {\n return {\n code: 'pack-parameter-invalid',\n expected,\n hint: 'repair the build output and rebuild the Pack from a fresh generation',\n detail: { sourcePath, sourceKey, actual: typeof actual === 'string' ? actual : typeof actual },\n };\n}\n\nfunction referenceError(\n code: 'pack-output-reference-missing' | 'pack-output-reference-conflict',\n sourcePath: string,\n guids: readonly string[],\n): PackAuthoringError {\n return {\n code,\n expected:\n code === 'pack-output-reference-missing'\n ? 'every output reference to resolve to a local or published AssetGuid'\n : 'removed output GUIDs to have no incoming references',\n hint:\n code === 'pack-output-reference-missing'\n ? 'build or publish the referenced Pack before verifying this output'\n : 'migrate incoming references before publishing the topology change',\n detail: { sourcePath, guids: [...guids].sort() },\n };\n}\n\nfunction productError(\n sourcePath: string,\n sourceKey: string,\n producer: AssetOutputProducer,\n product: unknown,\n): PackAuthoringError | undefined {\n if (!record(product)) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return an asset product object`,\n product,\n );\n }\n if (!Array.isArray(product.refs)) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return a refs array`,\n product.refs,\n );\n }\n if (!record(product.artifacts)) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return an artifacts object`,\n product.artifacts,\n );\n }\n const payload = product.payload;\n if (!record(payload) || payload.kind !== producer.kind) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return a matching payload kind`,\n payload,\n );\n }\n for (const ref of product.refs) {\n if (!record(ref) || typeof ref.guid !== 'string' || !AssetGuid.parse(ref.guid).ok) {\n return outputValueError(\n sourcePath,\n sourceKey,\n 'producer refs to contain valid AssetGuid values',\n ref,\n );\n }\n }\n for (const [key, artifact] of Object.entries(product.artifacts)) {\n if (\n key.length === 0 ||\n key.startsWith('/') ||\n key.includes('..') ||\n key.includes('\\\\') ||\n !record(artifact) ||\n typeof artifact.mediaType !== 'string' ||\n !(artifact.bytes instanceof Uint8Array)\n ) {\n return outputValueError(\n sourcePath,\n sourceKey,\n 'asset-local artifacts with safe keys and bytes',\n key,\n );\n }\n }\n return undefined;\n}\n\nfunction errorCode(value: unknown): string | undefined {\n return record(value) && typeof value.code === 'string' ? value.code : undefined;\n}\n\nfunction normalizedGuidSet(value: ReadonlySet<string> | undefined): Set<string> | undefined {\n return value === undefined ? undefined : new Set([...value].map((guid) => guid.toLowerCase()));\n}\n\n/**\n * Execute a v2 Pack source and project its dynamic output map through the\n * existing importer producers. No output GUID or output manifest is read.\n */\nexport async function buildScriptablePack(\n options: ScriptablePackBuildOptions,\n): Promise<ScriptablePackBuildResult> {\n const subjectPackageId = options.subjectPackageId ?? options.definition.packageId;\n const availableGuids = normalizedGuidSet(options.availableGuids);\n const observed = observedReader(options.assetSource);\n let effectiveValues: Readonly<Record<string, PackParameterValue>> | undefined;\n if ('parameters' in options.definition) {\n const resolved = resolvePackParameterValues(\n options.definition,\n options.values ?? {},\n options.inheritedValues,\n );\n if (!resolved.ok) return resolved;\n effectiveValues = resolved.value;\n } else if (options.values !== undefined && Object.keys(options.values).length > 0) {\n return err(\n outputValueError(\n options.sourcePath,\n '$.values',\n 'zero-parameter Packs to omit values and instance capabilities',\n options.values,\n ),\n );\n } else if (\n options.subjectPackageId !== undefined &&\n PackageId.format(options.subjectPackageId).toLowerCase() !==\n PackageId.format(options.definition.packageId).toLowerCase()\n ) {\n return err({\n code: 'pack-parent-has-no-parameters',\n expected: 'a ScriptablePack source with parameters for an independent instance packageId',\n hint: 'use clone for a zero-parameter Pack instead of building it as an instance',\n detail: {\n sourcePath: options.sourcePath,\n rootPackageId: PackageId.format(options.definition.packageId),\n subjectPackageId: PackageId.format(options.subjectPackageId),\n },\n });\n }\n\n let built:\n | Result<Record<string, Asset>, unknown>\n | Promise<Result<Record<string, Asset>, unknown>>;\n try {\n const context = buildContext(subjectPackageId, effectiveValues, observed.reader);\n built = options.definition.build(context as never);\n built = await built;\n } catch (cause) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'Pack build to return a structured Result without throwing',\n hint: 'repair the authoring function and return err(...) for expected failures',\n detail: {\n reason: `${options.sourcePath}: ${cause instanceof Error ? cause.message : String(cause)}`,\n },\n }),\n );\n }\n if (!record(built) || typeof built.ok !== 'boolean') {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'Pack build to return a Result object',\n hint: 'return ok(sourceKeyToAsset) or err(structuredError) from the authoring function',\n detail: { reason: `${options.sourcePath}: malformed build result` },\n }),\n );\n }\n if (!built.ok) {\n if (errorCode(built.error) !== undefined) return err(built.error as never);\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'a structured Pack build error',\n hint: 'return an error carrying code, expected, hint and detail',\n detail: { reason: `${options.sourcePath}: ${String(built.error)}` },\n }),\n );\n }\n if (!record(built.value)) {\n return err(\n outputValueError(\n options.sourcePath,\n '$',\n 'build to return a sourceKey-to-Asset object',\n built.value,\n ),\n );\n }\n\n const imported: ImportedAsset<unknown>[] = [];\n const stagedOutputs: ScriptablePackStagedOutput[] = [];\n const localGuids = new Set<string>();\n const materialCookerRegistry = new NativeCookerRegistry();\n for (const cooker of options.cookers ?? []) materialCookerRegistry.register(cooker);\n const nativeFingerprints = new Map<string, string>();\n for (const sourceKey of Object.keys(built.value).sort()) {\n if (!isValidPackSourceKey(sourceKey))\n return err(sourceKeyFailure(options.sourcePath, sourceKey));\n const asset = built.value[sourceKey];\n if (!isAsset(asset)) {\n return err(\n outputValueError(\n options.sourcePath,\n sourceKey,\n 'a concrete Asset with a supported kind',\n asset,\n ),\n );\n }\n const guid = AssetGuid.format(AssetGuid.derive(subjectPackageId, sourceKey));\n const normalizedGuid = guid.toLowerCase();\n if (localGuids.has(normalizedGuid) || availableGuids?.has(normalizedGuid)) {\n return err({\n code: 'pack-guid-collision',\n expected: 'derived output GUIDs to be unique in the global source index',\n hint: 'change the colliding packageId or repair the source index before publishing',\n detail: { sourcePath: options.sourcePath, guid },\n });\n }\n localGuids.add(normalizedGuid);\n const producer = options.outputs.get(asset.kind);\n if (producer === undefined) {\n return err(\n outputValueError(\n options.sourcePath,\n sourceKey,\n `a registered output producer for ${asset.kind}`,\n asset.kind,\n ),\n );\n }\n let produced: unknown;\n try {\n produced = await producer.produce({ guid, sourceKey, asset });\n } catch (cause) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: `producer ${producer.kind} to return a structured Result without throwing`,\n hint: 'repair the output producer and return err(...) for expected failures',\n detail: {\n reason: `${options.sourcePath}:${sourceKey}: ${cause instanceof Error ? cause.message : String(cause)}`,\n },\n }),\n );\n }\n if (!record(produced) || typeof produced.ok !== 'boolean') {\n return err(\n outputValueError(\n options.sourcePath,\n sourceKey,\n `producer ${producer.kind} to return a Result`,\n produced,\n ),\n );\n }\n if (!produced.ok) {\n if (errorCode(produced.error) !== undefined) return err(produced.error as never);\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: `producer ${producer.kind} to return a structured error`,\n hint: 'return an error carrying code, expected, hint and detail',\n detail: { reason: `${options.sourcePath}:${sourceKey}: ${String(produced.error)}` },\n }),\n );\n }\n const invalidProduct = productError(options.sourcePath, sourceKey, producer, produced.value);\n if (invalidProduct !== undefined) return err(invalidProduct);\n const product = produced.value as ImportAssetProduct<unknown>;\n let payload = product.payload;\n let artifacts = product.artifacts;\n if (needsMaterialCook(asset) && materialCookerRegistry.get('material') !== undefined) {\n const cooked = await materialCookerRegistry.runDraft('material', {\n guid,\n source: asset,\n sourceKey,\n sourcePath: options.sourcePath,\n refs: product.refs.map((reference) => reference.guid),\n });\n if (!cooked.ok) return err(cooked.error);\n if (cooked.value.guid.toLowerCase() !== normalizedGuid) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'the authored material cooker to preserve the derived AssetGuid',\n hint: 'repair the native material cooker output GUID and rebuild the Pack',\n detail: {\n sourcePath: options.sourcePath,\n sourceKey,\n expectedGuid: guid,\n actualGuid: cooked.value.guid,\n },\n });\n }\n payload = cooked.value.payload;\n artifacts = cooked.value.artifacts;\n nativeFingerprints.set(sourceKey, cooked.value.inputFingerprint);\n }\n imported.push({\n guid,\n kind: asset.kind,\n payload,\n refs: product.refs,\n artifacts,\n });\n stagedOutputs.push({\n guid: AssetGuid.derive(subjectPackageId, sourceKey),\n sourceKey,\n asset: clone(asset),\n digest: await digest(asset),\n });\n }\n\n const referenced = new Set<string>();\n for (const asset of imported) {\n for (const ref of asset.refs) {\n const guid = ref.guid.toLowerCase();\n if (!localGuids.has(guid)) referenced.add(guid);\n }\n }\n if (options.deferReferenceValidation !== true) {\n const missing = [...referenced].filter(\n (guid) => availableGuids !== undefined && !availableGuids.has(guid),\n );\n if (missing.length > 0)\n return err(referenceError('pack-output-reference-missing', options.sourcePath, missing));\n }\n\n const externalEvidence: ScriptablePackExternalEvidence[] = [...observed.reads.values()]\n .sort((left, right) => left.guid.localeCompare(right.guid))\n .map(\n (read): ScriptablePackExternalEvidence => ({\n guid: read.guid,\n usage: referenced.has(read.guid) ? 'both' : 'content',\n generation: read.generation,\n digest: read.digest,\n }),\n );\n const authoredInputFingerprint = await digest({\n packageId: PackageId.format(subjectPackageId),\n sourcePath: options.sourcePath,\n sourceClosure: options.sourceClosure ?? [],\n values: effectiveValues,\n externalEvidence: externalEvidence.map(({ guid, usage, digest: evidenceDigest }) => ({\n guid,\n usage,\n digest: evidenceDigest,\n })),\n authoringContractVersion: options.authoringContractVersion ?? 'scriptable-pack/1',\n producerVersions: options.outputs.versions(),\n });\n const inputFingerprint =\n nativeFingerprints.size === 0\n ? authoredInputFingerprint\n : await digest({\n sourceRevision: authoredInputFingerprint,\n nativeCookers: [...nativeFingerprints.entries()].sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n });\n const refs = imported.flatMap((asset) => asset.refs);\n const artifacts = Object.fromEntries(\n imported.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [`${asset.guid}/${key}`, artifact]),\n ),\n );\n const product = createImportProduct({\n assets: imported,\n sourceDependencies: (options.sourceClosure ?? []).map((entry) => entry.path),\n refs,\n artifacts,\n receipts: imported.map((asset) => ({\n guid: asset.guid,\n origin: 'authoredPack' as const,\n status: 'succeeded' as const,\n inputFingerprint,\n })),\n diagnostics: [],\n sourceRevision: inputFingerprint,\n sourceKey: options.sourcePath,\n });\n if (!product.ok) return err(product.error);\n return ok({\n product: product.value,\n stagedOutputs,\n externalEvidence,\n inputFingerprint,\n ...(options.publication === undefined ? {} : { publication: options.publication }),\n });\n}\n\nexport interface ScriptablePackBuildWorkItem {\n readonly definition: AnyScriptablePackDefinition;\n readonly sourcePath: string;\n readonly subjectPackageId?: PackageId;\n readonly values?: Readonly<Record<string, unknown>>;\n readonly inheritedValues?: Readonly<Record<string, PackParameterValue>>;\n readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];\n}\n\nexport interface ScriptablePackBuildWorklistOptions {\n readonly subjects: readonly ScriptablePackBuildWorkItem[];\n readonly outputs: AssetOutputProducerRegistry;\n /** Optional build-time cookers forwarded to each authored Pack subject. */\n readonly cookers?: readonly NativeCooker[];\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n readonly availableGuids?: ReadonlySet<string>;\n readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;\n readonly maxPasses?: number;\n}\n\nexport interface ScriptablePackBuildWorklistProduct {\n readonly products: readonly TerminalImportProduct<unknown>[];\n readonly buildProducts: readonly ScriptablePackBuildProduct[];\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n readonly iterations: number;\n}\n\nfunction stagedSource(\n staged: ReadonlyMap<string, ScriptablePackStagedOutput>,\n fallback: ScriptablePackAssetSnapshotSource | undefined,\n): ScriptablePackAssetSnapshotSource {\n return {\n async readByGuid(guid) {\n const key = AssetGuid.format(guid).toLowerCase();\n const local = staged.get(key);\n if (local !== undefined) {\n return ok({\n asset: clone(local.asset),\n generation: 1,\n digest: local.digest ?? 'sha256:staged',\n });\n }\n if (fallback === undefined) {\n return err({\n code: 'asset-not-found',\n expected: 'a staged or published content dependency',\n hint: 'wait for the dependency subject to materialize',\n detail: { guid: key },\n });\n }\n return fallback.readByGuid(guid);\n },\n };\n}\n\n/** Build subjects in stable passes; content reads may wait for a later subject. */\nexport async function buildScriptablePackWorklist(\n options: ScriptablePackBuildWorklistOptions,\n): Promise<\n Result<\n ScriptablePackBuildWorklistProduct,\n | PackAuthoringError\n | ScriptablePackDomainError\n | AssetError\n | ImportError\n | {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n }\n >\n> {\n const orderedSubjects = [...options.subjects].sort((left, right) =>\n left.sourcePath.localeCompare(right.sourcePath),\n );\n const pending = new Map(\n orderedSubjects.map((subject, index) => [`${index}:${subject.sourcePath}`, subject]),\n );\n const staged = new Map<string, ScriptablePackStagedOutput>();\n const results = new Map<string, ScriptablePackBuildProduct>();\n const availableGuids = new Set([\n ...(normalizedGuidSet(options.availableGuids) ?? []),\n ...BUILTIN_MESH_ASSETS.map((asset) => asset.guid.toLowerCase()),\n ]);\n const maxPasses = options.maxPasses ?? Math.max(1, options.subjects.length + 1);\n let iterations = 0;\n for (; iterations < maxPasses && pending.size > 0; iterations += 1) {\n let progress = false;\n const waiting = new Set<string>();\n for (const [key, subject] of pending) {\n const result = await buildScriptablePack({\n definition: subject.definition,\n sourcePath: subject.sourcePath,\n ...(subject.subjectPackageId === undefined\n ? {}\n : { subjectPackageId: subject.subjectPackageId }),\n ...(subject.values === undefined ? {} : { values: subject.values }),\n ...(subject.inheritedValues === undefined\n ? {}\n : { inheritedValues: subject.inheritedValues }),\n ...(subject.sourceClosure === undefined ? {} : { sourceClosure: subject.sourceClosure }),\n outputs: options.outputs,\n ...(options.cookers === undefined ? {} : { cookers: options.cookers }),\n assetSource: stagedSource(staged, options.assetSource),\n availableGuids: new Set([...availableGuids, ...staged.keys()]),\n deferReferenceValidation: true,\n });\n if (result.ok) {\n results.set(key, result.value);\n for (const output of result.value.stagedOutputs)\n staged.set(AssetGuid.format(output.guid).toLowerCase(), output);\n pending.delete(key);\n progress = true;\n continue;\n }\n if (errorCode(result.error) === 'asset-not-found') {\n const detail =\n record(result.error) && record(result.error.detail) ? result.error.detail : undefined;\n const guid =\n detail !== undefined && typeof detail.guid === 'string' ? detail.guid : undefined;\n if (guid !== undefined) waiting.add(guid.toLowerCase());\n continue;\n }\n return result;\n }\n if (pending.size === 0) break;\n if (!progress) {\n return err({\n code: 'pack-content-dependency-stalled',\n expected: 'the content dependency worklist to make progress',\n hint: 'inspect waitingGuids and repair the missing output or content-read cycle, then rebuild',\n detail: {\n waitingGuids: [...waiting].sort(),\n pendingSubjects: [...pending.values()].map((subject) => subject.sourcePath).sort(),\n iterations: iterations + 1,\n },\n });\n }\n }\n if (pending.size > 0) {\n return err({\n code: 'pack-content-dependency-stalled',\n expected: 'the content dependency worklist to finish within its bounded retry budget',\n hint: 'inspect pendingSubjects and waitingGuids, then repair the dependency graph',\n detail: {\n pendingSubjects: [...pending.values()].map((subject) => subject.sourcePath).sort(),\n waitingGuids: [],\n iterations,\n },\n });\n }\n const knownGuids = new Set([...availableGuids, ...staged.keys()]);\n const missingReferences = new Set<string>();\n for (const product of results.values()) {\n const contentReads = new Set(product.externalEvidence.map((read) => read.guid.toLowerCase()));\n for (const asset of product.product.assets) {\n for (const reference of asset.refs) {\n const guid = reference.guid.toLowerCase();\n if (!knownGuids.has(guid) && !contentReads.has(guid)) missingReferences.add(guid);\n }\n }\n }\n if (missingReferences.size > 0) {\n return err(\n referenceError('pack-output-reference-missing', 'worklist', [...missingReferences].sort()),\n );\n }\n const removed = [...(options.incomingRefs?.keys() ?? [])].filter(\n (guid) => !staged.has(guid.toLowerCase()),\n );\n const referencedRemoved = removed.filter(\n (guid) => (options.incomingRefs?.get(guid) ?? []).length > 0,\n );\n if (referencedRemoved.length > 0)\n return err(referenceError('pack-output-reference-conflict', 'worklist', referencedRemoved));\n return ok({\n products: [...results.values()].map((result) => result.product),\n buildProducts: [...results.values()],\n stagedOutputs: [...staged.values()],\n iterations: pending.size === 0 && options.subjects.length > 0 ? iterations + 1 : iterations,\n });\n}\n","import { deriveVertexLayoutProjection } from '@forgeax/engine-geometry';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport {\n MESH_BIN_HEADER_V4_BYTES,\n type MeshBinContractError,\n type MeshBinHeaderV4,\n writeMeshBinHeader,\n} from '@forgeax/engine-pack/mesh-bin-contract';\nimport {\n err,\n type MeshAsset,\n ok,\n type Result,\n type VertexAttributeMap,\n} from '@forgeax/engine-types';\n\ntype MeshPayloadIn = { readonly [Key in keyof MeshAsset]?: MeshAsset[Key] | undefined } & {\n readonly vertexCount?: number;\n};\n\nexport type MeshBinEncodeError =\n | MeshBinContractError\n | {\n readonly code: 'mesh-bin-payload-invalid';\n readonly subject: 'mesh-bin';\n readonly sourceKey: string;\n readonly expected: string;\n readonly actual: string;\n readonly recovery: string;\n };\n\nfunction failure(sourceKey: string, expected: string, actual: string): MeshBinEncodeError {\n return {\n code: 'mesh-bin-payload-invalid',\n subject: 'mesh-bin',\n sourceKey,\n expected,\n actual,\n recovery: 're-cook the source with its Meta sidecar through the build-time importer',\n };\n}\n\nfunction asAttributeMap(value: unknown): VertexAttributeMap {\n return (value ?? {}) as VertexAttributeMap;\n}\n\nfunction jsonValue(value: unknown): unknown {\n if (value instanceof Float32Array || value instanceof Uint16Array) return Array.from(value);\n if (Array.isArray(value)) return value.map(jsonValue);\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value).map(([key, nested]) => [key, jsonValue(nested)]),\n );\n }\n return value;\n}\n\nfunction refsMeta(payload: MeshPayloadIn, refs: readonly string[]): Record<string, unknown> {\n const materialSlots = (payload.materialSlots ?? [{ slotName: 'Default' }]).map(\n (slot, slotIndex) => {\n const defaultMaterial = slot.defaultMaterial;\n let defaultMaterialRef: number | undefined;\n if (defaultMaterial !== undefined) {\n const guid = AssetGuid.format(defaultMaterial);\n defaultMaterialRef = refs.findIndex((candidate) => candidate.toLowerCase() === guid);\n if (defaultMaterialRef < 0) {\n throw new Error(\n `material slot ${slotIndex} default material ${guid} is absent from refs`,\n );\n }\n }\n return {\n slotName: slot.slotName,\n ...(slot.sourceKey === undefined ? {} : { sourceKey: slot.sourceKey }),\n ...(defaultMaterialRef === undefined ? {} : { defaultMaterialRef }),\n };\n },\n );\n if (payload.lods !== undefined && payload.lods.length > 7) {\n throw new Error('MeshAsset LOD chain supports at most seven lower-detail levels');\n }\n let previousCoverage = 1;\n const seenLodGuids = new Set<string>();\n const lods = payload.lods?.map((lod, lodIndex) => {\n const guid = AssetGuid.format(lod.mesh).toLowerCase();\n const meshRef = refs.findIndex((candidate) => candidate.toLowerCase() === guid);\n if (meshRef < 0) {\n throw new Error(`LOD ${lodIndex} mesh ${guid} is absent from refs`);\n }\n if (seenLodGuids.has(guid)) {\n throw new Error(`LOD ${lodIndex} mesh ${guid} is duplicated`);\n }\n if (\n !Number.isFinite(lod.screenCoverage) ||\n lod.screenCoverage <= 0 ||\n lod.screenCoverage > 1 ||\n lod.screenCoverage >= previousCoverage\n ) {\n throw new Error(\n `LOD ${lodIndex} screenCoverage must be finite, in (0, 1], and strictly decreasing`,\n );\n }\n seenLodGuids.add(guid);\n previousCoverage = lod.screenCoverage;\n return { meshRef, screenCoverage: lod.screenCoverage };\n });\n if (\n payload.lodHysteresis !== undefined &&\n (!Number.isFinite(payload.lodHysteresis) ||\n payload.lodHysteresis < 0 ||\n payload.lodHysteresis >= 1)\n ) {\n throw new Error('lodHysteresis must be finite and in [0, 1)');\n }\n return {\n submeshes:\n payload.submeshes === undefined || payload.submeshes.length === 0\n ? [{ indexOffset: 0, indexCount: payload.indices?.length ?? 0, materialSlot: 0 }]\n : payload.submeshes,\n materialSlots,\n ...(payload.aabb === undefined ? {} : { aabb: jsonValue(payload.aabb) }),\n ...(payload.morphTargets === undefined\n ? {}\n : { morphTargets: jsonValue(payload.morphTargets) }),\n ...(payload.morphWeights === undefined\n ? {}\n : { morphWeights: jsonValue(payload.morphWeights) }),\n ...(lods === undefined ? {} : { lods }),\n ...(payload.lodHysteresis === undefined ? {} : { lodHysteresis: payload.lodHysteresis }),\n };\n}\n\n/** Encode one canonical v4 mesh binary. No legacy version is accepted or emitted. */\nexport function packMeshBinV4(\n payload: MeshPayloadIn,\n sourceKey: string,\n refs: readonly string[] = [],\n): Result<Uint8Array, MeshBinEncodeError> {\n try {\n const vertices = payload.vertices;\n const indices = payload.indices;\n if (!(vertices instanceof Float32Array)) {\n return err(\n failure(sourceKey, 'Float32Array interleaved vertices', 'vertices is not Float32Array'),\n );\n }\n if (\n indices !== undefined &&\n !(indices instanceof Uint16Array || indices instanceof Uint32Array)\n ) {\n return err(\n failure(sourceKey, 'Uint16Array or Uint32Array indices', 'indices has an unsupported type'),\n );\n }\n const attributes = asAttributeMap(payload.attributes);\n const projection = deriveVertexLayoutProjection(attributes);\n if (projection.attributes.length === 0 || projection.arrayStride === 0) {\n return err(\n failure(\n sourceKey,\n 'a non-empty canonical geometry projection',\n 'projection has no attributes',\n ),\n );\n }\n const vertexCount = payload.vertexCount ?? vertices.byteLength / projection.arrayStride;\n if (!Number.isSafeInteger(vertexCount) || vertexCount < 0) {\n return err(\n failure(sourceKey, 'a non-negative safe vertex cardinality', `vertexCount=${vertexCount}`),\n );\n }\n if (vertices.byteLength !== vertexCount * projection.arrayStride) {\n return err(\n failure(\n sourceKey,\n `vertices.byteLength=${vertexCount * projection.arrayStride}`,\n `vertices.byteLength=${vertices.byteLength}; stride=${projection.arrayStride}`,\n ),\n );\n }\n for (const attribute of projection.attributes) {\n const value = attributes[attribute.key];\n const components = attribute.byteLength / (attribute.format === 'uint16x4' ? 2 : 4);\n if (\n value === undefined ||\n (!(value instanceof Float32Array) && !(value instanceof Uint16Array)) ||\n value.length !== vertexCount * components\n ) {\n return err(\n failure(\n sourceKey,\n `${attribute.key} cardinality=${vertexCount * components}`,\n `${attribute.key} cardinality=${value?.byteLength ?? 'missing'}`,\n ),\n );\n }\n }\n const interleaved = new Uint8Array(vertexCount * projection.arrayStride);\n const interleavedView = new DataView(interleaved.buffer);\n for (const attribute of projection.attributes) {\n const value = attributes[attribute.key];\n if (value === undefined) continue;\n const components = attribute.byteLength / (attribute.format === 'uint16x4' ? 2 : 4);\n for (let vertex = 0; vertex < vertexCount; vertex++) {\n for (let component = 0; component < components; component++) {\n const sourceIndex = vertex * components + component;\n const targetOffset =\n vertex * projection.arrayStride +\n attribute.offset +\n component * (attribute.format === 'uint16x4' ? 2 : 4);\n if (attribute.format === 'uint16x4') {\n interleavedView.setUint16(targetOffset, (value as Uint16Array)[sourceIndex] ?? 0, true);\n } else {\n interleavedView.setFloat32(\n targetOffset,\n (value as Float32Array)[sourceIndex] ?? 0,\n true,\n );\n }\n }\n }\n }\n const indexCount = indices?.length ?? 0;\n const indexWidth = indices === undefined || indexCount === 0 ? 0 : indices.BYTES_PER_ELEMENT;\n const indexBytes = indexCount * indexWidth;\n if (!Number.isSafeInteger(indexBytes) || indexBytes > 0xffffffff) {\n return err(failure(sourceKey, 'safe index payload byte length', `indexBytes=${indexBytes}`));\n }\n const meta = new TextEncoder().encode(JSON.stringify(refsMeta(payload, refs)));\n const header: MeshBinHeaderV4 = {\n version: 4,\n projectionVersion: projection.schemaVersion,\n mask: projection.mask,\n digest: projection.digest,\n stride: projection.arrayStride,\n vertexCount,\n vertexBytes: interleaved.byteLength,\n indexCount,\n indexWidth: indexWidth as 0 | 2 | 4,\n indexBytes,\n jsonBytes: meta.byteLength,\n };\n const total = MESH_BIN_HEADER_V4_BYTES + interleaved.byteLength + indexBytes + meta.byteLength;\n if (!Number.isSafeInteger(total) || total > 0xffffffff) {\n return err(failure(sourceKey, 'safe mesh binary byte length', `total=${total}`));\n }\n const out = new Uint8Array(total);\n writeMeshBinHeader(header, out);\n let offset = MESH_BIN_HEADER_V4_BYTES;\n out.set(interleaved, offset);\n offset += interleaved.byteLength;\n if (indices !== undefined && indexBytes > 0) {\n out.set(new Uint8Array(indices.buffer, indices.byteOffset, indices.byteLength), offset);\n offset += indexBytes;\n }\n out.set(meta, offset);\n return ok(out);\n } catch (error) {\n return err(\n failure(\n sourceKey,\n 'valid canonical mesh payload',\n error instanceof Error ? error.message : String(error),\n ),\n );\n }\n}\n","import type { ScriptablePackAssetKind } from '@forgeax/engine-pack';\nimport type {\n AssetReader,\n PackAuthoringError,\n ScriptablePackReadError,\n} from '@forgeax/engine-pack/source';\nimport type {\n AnimationGraph,\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n FontAsset,\n ImportError,\n ImportedAsset,\n MaterialAsset,\n MeshAsset,\n Result,\n TilesetAsset,\n} from '@forgeax/engine-types';\nimport type { ImportAssetProduct, TerminalImportProduct } from './import-product.js';\n\nexport type { ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';\n\nexport interface ScriptablePackAssetSnapshot {\n readonly asset: Asset;\n readonly generation: number;\n readonly digest: string;\n}\n\nexport interface ScriptablePackStagedOutput {\n readonly guid: AssetGuidType;\n readonly sourceKey: string;\n readonly asset: Asset;\n readonly digest?: string;\n}\n\nexport interface ScriptablePackAssetSnapshotSource {\n readByGuid(\n guid: AssetGuidType,\n ): Promise<Result<ScriptablePackAssetSnapshot, ScriptablePackReadError>>;\n}\n\nexport interface AssetOutputInput {\n readonly guid: string;\n readonly sourceKey: string;\n readonly asset: Asset;\n}\n\ntype MaterialPackPayload = Omit<MaterialAsset, 'parent' | 'values'> & {\n readonly parent?: number;\n readonly values?: Readonly<Record<string, unknown>>;\n};\n\ntype ScenePackPayload = { readonly kind: 'scene'; readonly [key: string]: unknown };\n\ntype FontPackPayload = Omit<FontAsset, 'atlas' | 'sampler'> & {\n readonly atlasGuid: string;\n readonly samplerGuid: string;\n};\n\ntype TilesetPackPayload = Omit<TilesetAsset, 'atlases'> & { readonly atlases: readonly number[] };\n\ntype AnimationGraphPackPayload = Omit<AnimationGraph, 'nodes'> & {\n readonly nodes: readonly (\n | Exclude<AnimationGraph['nodes'][number], { readonly type: 'clip' }>\n | (Omit<Extract<AnimationGraph['nodes'][number], { readonly type: 'clip' }>, 'clip'> & {\n readonly clip: number;\n })\n )[];\n};\n\n/** Serialized producer payloads; runtime Assets never carry ref indices. */\nexport type AssetOutputPayloadByKind = {\n readonly mesh: MeshAsset;\n readonly material: MaterialPackPayload;\n readonly scene: ScenePackPayload;\n readonly texture: Extract<Asset, { readonly kind: 'texture' }>;\n readonly equirect: Extract<Asset, { readonly kind: 'equirect' }>;\n readonly sampler: Extract<Asset, { readonly kind: 'sampler' }>;\n readonly font: FontPackPayload;\n readonly 'render-pipeline': Extract<Asset, { readonly kind: 'render-pipeline' }>;\n readonly tileset: TilesetPackPayload;\n readonly video: Extract<Asset, { readonly kind: 'video' }>;\n readonly skeleton: Extract<Asset, { readonly kind: 'skeleton' }>;\n readonly skin: Extract<Asset, { readonly kind: 'skin' }>;\n readonly 'animation-clip': Extract<Asset, { readonly kind: 'animation-clip' }>;\n readonly 'animation-graph': AnimationGraphPackPayload;\n readonly audio: Extract<Asset, { readonly kind: 'audio' }>;\n readonly 'particle-effect': Extract<Asset, { readonly kind: 'particle-effect' }>;\n readonly 'ies-profile': Extract<Asset, { readonly kind: 'ies-profile' }>;\n};\n\nexport type AssetOutputPayload = AssetOutputPayloadByKind[ScriptablePackAssetKind];\nexport type AssetOutputProduct = ImportAssetProduct<AssetOutputPayload>;\n\nexport interface AssetOutputProducer {\n readonly kind: string;\n readonly version: string;\n produce(\n input: AssetOutputInput,\n ): Result<AssetOutputProduct, ImportError> | Promise<Result<AssetOutputProduct, ImportError>>;\n}\n\nexport class AssetOutputProducerRegistry {\n private readonly producers = new Map<string, AssetOutputProducer>();\n\n register(producer: AssetOutputProducer): void {\n if (producer.kind.trim().length === 0 || producer.version.trim().length === 0) {\n throw new TypeError('Pack output producer kind and version must be non-empty');\n }\n if (typeof producer.produce !== 'function') {\n throw new TypeError(`Pack output producer ${producer.kind} must expose produce`);\n }\n this.producers.set(producer.kind, producer);\n }\n\n get(kind: string): AssetOutputProducer | undefined {\n return this.producers.get(kind);\n }\n\n versions(): Readonly<Record<string, string>> {\n return Object.fromEntries(\n [...this.producers.entries()]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([kind, producer]) => [kind, producer.version]),\n );\n }\n}\n\nexport type ScriptablePackExternalUsage = 'reference' | 'content' | 'both';\n\nexport interface ScriptablePackExternalEvidence {\n readonly guid: string;\n readonly usage: ScriptablePackExternalUsage;\n readonly generation?: number;\n readonly digest?: string;\n}\n\n/** Shared terminal product envelope for every Pack source form. */\nexport interface PackBuildProduct {\n readonly product: TerminalImportProduct<unknown>;\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n readonly externalEvidence: readonly ScriptablePackExternalEvidence[];\n readonly inputFingerprint: string;\n readonly publication?: AssetPublicationEnvelope;\n}\n\nexport interface ScriptablePackDomainError {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n}\n\n/** The source authoring contract is owned by Pack; this alias keeps reader typing local. */\nexport type ScriptablePackAssetReader = AssetReader;\nexport type ScriptablePackAuthoringError = PackAuthoringError;\nexport type ScriptablePackImportedAsset = ImportedAsset<unknown>;\n","import { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { ScriptablePackSceneComponent } from '@forgeax/engine-pack/source';\nimport { externalizeSceneAsset } from '@forgeax/engine-scene';\nimport type {\n AnimationGraph,\n AssetGuid as AssetGuidType,\n AssetRef,\n AudioClipAsset,\n EquirectAsset,\n FontAsset,\n IesProfileAsset,\n ImportedArtifactBody,\n MaterialAsset,\n MaterialTextureReference,\n MaterialTextureValue,\n MeshAsset,\n ParticleEffectAsset,\n RenderPipelineAsset,\n SamplerAsset,\n SceneAsset,\n SkeletonAsset,\n SkinAsset,\n TextureAsset,\n TilesetAsset,\n VideoAsset,\n} from '@forgeax/engine-types';\nimport {\n deriveTextureLayout,\n err,\n ImportError,\n MATERIAL_TEXTURE_SLOTS,\n ok,\n} from '@forgeax/engine-types';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { bytesToHex } from '@noble/hashes/utils.js';\nimport { packMeshBinV4 } from './mesh-bin.js';\nimport {\n type AssetOutputInput,\n type AssetOutputProducer,\n AssetOutputProducerRegistry,\n type AssetOutputProduct,\n} from './scriptable-pack.js';\n\nfunction producerError(input: AssetOutputInput, reason: unknown): ImportError {\n return new ImportError({\n code: 'import-internal-error',\n expected: `ScriptablePack ${input.asset.kind} output ${input.sourceKey} to satisfy its domain producer contract`,\n hint: 'fix the generated Asset payload and rebuild the ScriptablePack',\n detail: { reason: reason instanceof Error ? reason.message : String(reason) },\n });\n}\n\nfunction formatGuid(value: AssetGuidType | string): string {\n if (typeof value === 'string') {\n const parsed = AssetGuid.parse(value);\n if (!parsed.ok) throw parsed.error;\n return AssetGuid.format(parsed.value);\n }\n return AssetGuid.format(value);\n}\n\nfunction canonical(value: unknown): string {\n if (Array.isArray(value)) return `[${value.map(canonical).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n return `{${Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => `${JSON.stringify(key)}:${canonical(child)}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nfunction particleProgramArtifact(effect: ParticleEffectAsset): {\n readonly program: ParticleEffectAsset['program'];\n readonly bytes: Uint8Array;\n readonly fingerprint: string;\n} {\n const artifactProgram = { format: effect.program.format, emitters: effect.program.emitters };\n const bytes = new TextEncoder().encode(canonical(artifactProgram));\n const fingerprint = `sha256:${bytesToHex(sha256(bytes))}`;\n return {\n program: { ...effect.program, fingerprint },\n bytes,\n fingerprint,\n };\n}\n\nfunction materialProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'material') throw new TypeError('expected MaterialAsset');\n const material = input.asset as MaterialAsset;\n const refs: AssetRef[] = [];\n const addRef = (\n guid: AssetGuidType | string,\n sourceField: NonNullable<AssetRef['sourceField']>,\n ): number => {\n refs.push({ guid: formatGuid(guid), sourceField });\n return refs.length - 1;\n };\n\n const addMaterialRef = (\n value: MaterialTextureReference,\n sourceField: NonNullable<AssetRef['sourceField']>,\n ): number => {\n if (typeof value === 'number') {\n throw new TypeError('material texture references must be GUIDs, not runtime handles');\n }\n return addRef(value, sourceField);\n };\n\n const textureFields =\n material.parameters === undefined\n ? new Set<string>(MATERIAL_TEXTURE_SLOTS)\n : new Set(\n material.parameters\n .filter(\n (parameter) => parameter.type === 'texture' || parameter.type === 'texture_cube',\n )\n .map((parameter) => parameter.name),\n );\n\n const parent =\n material.parent === undefined ? undefined : addRef(material.parent, { fieldName: 'parent' });\n const values: Record<string, unknown> = {};\n for (const fieldName of Object.keys(material.values ?? {}).sort()) {\n const value = material.values?.[fieldName];\n if (typeof value === 'string' && textureFields.has(fieldName)) {\n values[fieldName] = {\n texture: addMaterialRef(value, { componentName: '<material>', fieldName }),\n };\n } else if (\n value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n 'texture' in value\n ) {\n const texture = value as MaterialTextureValue;\n values[fieldName] = {\n ...texture,\n texture: addMaterialRef(texture.texture, { componentName: '<material>', fieldName }),\n ...(texture.sampler === undefined\n ? {}\n : {\n sampler: addMaterialRef(texture.sampler, {\n componentName: '<material>',\n fieldName: `${fieldName}.sampler`,\n }),\n }),\n };\n } else {\n values[fieldName] = value;\n }\n }\n\n const { parent: _parent, values: _values, ...materialShape } = material;\n return {\n payload: {\n ...materialShape,\n ...(parent === undefined ? {} : { parent }),\n ...(material.values === undefined ? {} : { values }),\n },\n refs,\n artifacts: {},\n };\n}\n\nfunction meshProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'mesh') throw new TypeError('expected MeshAsset');\n const mesh = input.asset as MeshAsset;\n const refs: AssetRef[] = [];\n for (let slotIndex = 0; slotIndex < mesh.materialSlots.length; slotIndex++) {\n const defaultMaterial = mesh.materialSlots[slotIndex]?.defaultMaterial;\n if (defaultMaterial === undefined) continue;\n refs.push({\n guid: formatGuid(defaultMaterial),\n sourceField: { fieldName: 'materialSlots', arrayIndex: slotIndex },\n });\n }\n const seenRefs = new Set(refs.map((reference) => reference.guid.toLowerCase()));\n for (const [lodIndex, lod] of (mesh.lods ?? []).entries()) {\n const guid = formatGuid(lod.mesh);\n if (seenRefs.has(guid.toLowerCase())) continue;\n seenRefs.add(guid.toLowerCase());\n refs.push({ guid, sourceField: { fieldName: 'lods', arrayIndex: lodIndex } });\n }\n return {\n payload: mesh,\n refs,\n artifacts: {\n body: {\n mediaType: 'application/x-forgeax-mesh',\n assetCodec: { name: 'mesh-binary', version: '4' },\n bytes: (() => {\n const packed = packMeshBinV4(\n mesh,\n input.sourceKey,\n refs.map((reference) => reference.guid),\n );\n if (!packed.ok) {\n throw packed.error;\n }\n return packed.value;\n })(),\n },\n },\n };\n}\n\nfunction sceneProduct(\n input: AssetOutputInput,\n components: ReadonlyMap<string, Readonly<Record<string, string>>>,\n): AssetOutputProduct {\n if (input.asset.kind !== 'scene') throw new TypeError('expected SceneAsset');\n const externalized = externalizeSceneAsset(input.asset as SceneAsset, (componentName) => {\n const schema = components.get(componentName);\n if (schema === undefined) {\n throw new TypeError(\n `ScriptablePack scene component ${componentName} is missing from sceneComponents`,\n );\n }\n return schema;\n });\n if (!externalized.ok) throw new TypeError(`scene field ${externalized.error.field} is invalid`);\n return {\n payload: { kind: 'scene', ...externalized.value.payload },\n refs: externalized.value.refs,\n artifacts: {},\n };\n}\n\nfunction containsAssetGuid(value: unknown): boolean {\n if (typeof value === 'string') return AssetGuid.parse(value).ok;\n if (Array.isArray(value)) return value.some(containsAssetGuid);\n if (value !== null && typeof value === 'object') {\n return Object.values(value as Record<string, unknown>).some(containsAssetGuid);\n }\n return false;\n}\n\n/**\n * Direct v3 scenes migrated from Pack v2 already carry runtime ref indices in\n * their component payload. There is no component-schema authority in a JSON\n * direct entry, so preserve that transport shape and let the entry's explicit\n * refs provide the closure. A GUID-bearing scene is still sent through the\n * schema-backed producer and therefore fails closed when no schema is present.\n */\nfunction preExternalizedSceneProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'scene') throw new TypeError('expected SceneAsset');\n if (containsAssetGuid(input.asset)) {\n throw new TypeError('direct scene payload must use explicit refs with runtime indices');\n }\n return {\n payload: { ...(input.asset as SceneAsset), kind: 'scene' },\n refs: [],\n artifacts: {},\n };\n}\n\nfunction createSafeProducer(\n kind: AssetOutputProducer['kind'],\n version: string,\n product: (input: AssetOutputInput) => AssetOutputProduct,\n): AssetOutputProducer {\n return {\n kind,\n version,\n produce(input) {\n try {\n return ok(product(input));\n } catch (error) {\n return err(producerError(input, error));\n }\n },\n };\n}\n\nfunction jsonArtifact(value: unknown): ImportedArtifactBody {\n return {\n mediaType: 'application/json',\n assetCodec: { name: 'forgeax-json', version: '1' },\n bytes: new TextEncoder().encode(JSON.stringify(value)),\n };\n}\n\nfunction ref(guid: AssetGuidType, fieldName: string, arrayIndex?: number): AssetRef {\n return {\n guid: formatGuid(guid),\n sourceField: { fieldName, ...(arrayIndex === undefined ? {} : { arrayIndex }) },\n };\n}\n\nfunction bytes(value: Uint8Array | Uint8ClampedArray): Uint8Array {\n return Uint8Array.from(value);\n}\n\nfunction textureProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'texture') throw new TypeError('expected TextureAsset');\n const texture = input.asset as TextureAsset;\n const layout = deriveTextureLayout({\n shape: texture.shape,\n format: texture.format,\n mips: texture.mips,\n actualByteLength: texture.data.byteLength,\n order: 'mip-major,image-major,row-major',\n });\n if (!layout.ok) {\n const expectedBytes =\n layout.error.code === 'texture-packing-invalid'\n ? layout.error.detail.expectedBytes\n : texture.data.byteLength;\n const actualBytes =\n layout.error.code === 'texture-packing-invalid'\n ? layout.error.detail.actualBytes\n : texture.data.byteLength;\n throw new TypeError(\n `texture data is not canonical: expected ${expectedBytes} bytes, got ${actualBytes}`,\n );\n }\n return {\n payload: texture,\n refs: [],\n artifacts: {\n body: {\n mediaType:\n texture.format === 'r8unorm'\n ? 'application/x-forgeax-r8'\n : `application/x-forgeax-${texture.format}`,\n assetCodec: { name: texture.format, version: '1' },\n bytes: bytes(texture.data),\n },\n },\n };\n}\n\nfunction ordinaryPodProduct(input: AssetOutputInput): AssetOutputProduct {\n const asset = input.asset;\n switch (asset.kind) {\n case 'texture':\n return textureProduct(input);\n case 'equirect': {\n const equirect = asset as EquirectAsset;\n return {\n payload: equirect,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'image/raw',\n assetCodec: { name: 'raw-image', version: '1' },\n bytes: bytes(equirect.data),\n },\n },\n };\n }\n case 'sampler': {\n const sampler = asset as SamplerAsset;\n return { payload: sampler, refs: [], artifacts: { body: jsonArtifact(sampler) } };\n }\n case 'font': {\n const font = asset as FontAsset;\n const atlas = ref(font.atlas, 'atlas');\n const sampler = ref(font.sampler, 'sampler');\n return {\n payload: {\n kind: font.kind,\n glyphs: font.glyphs,\n common: font.common,\n atlasGuid: atlas.guid,\n samplerGuid: sampler.guid,\n },\n refs: [atlas, sampler],\n artifacts: { body: jsonArtifact(font) },\n };\n }\n case 'render-pipeline': {\n const pipeline = asset as RenderPipelineAsset;\n return {\n payload: pipeline,\n refs: [],\n artifacts: { body: jsonArtifact(pipeline) },\n };\n }\n case 'tileset': {\n const tileset = asset as TilesetAsset;\n const refs = tileset.atlases.map((atlas, index) => {\n const parsed = AssetGuid.parse(atlas);\n if (!parsed.ok) throw parsed.error;\n return ref(parsed.value, 'atlases', index);\n });\n return {\n payload: { ...tileset, atlases: refs.map((_entry, index) => index) },\n refs,\n artifacts: { body: jsonArtifact(tileset) },\n };\n }\n case 'video': {\n const video = asset as VideoAsset;\n try {\n const url = new URL(video.url);\n if (url.protocol !== 'http:' && url.protocol !== 'https:')\n throw new Error('unsupported URL scheme');\n } catch (error) {\n throw new TypeError(\n `video URL is invalid: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n return { payload: video, refs: [], artifacts: {} };\n }\n case 'skeleton': {\n const skeleton = asset as SkeletonAsset;\n return {\n payload: skeleton,\n refs: [],\n artifacts: { body: jsonArtifact(skeleton) },\n };\n }\n case 'skin': {\n const skin = asset as SkinAsset;\n const skeletonGuid = AssetGuid.parse(skin.skeletonGuid);\n if (!skeletonGuid.ok) throw skeletonGuid.error;\n return {\n payload: skin,\n refs: [ref(skeletonGuid.value, 'skeletonGuid')],\n artifacts: { body: jsonArtifact(skin) },\n };\n }\n case 'animation-clip':\n return {\n payload: asset,\n refs: [],\n artifacts: { body: jsonArtifact(asset) },\n };\n case 'animation-graph': {\n const graph = asset as AnimationGraph;\n const refs: AssetRef[] = [];\n const nodes = graph.nodes.map((node, index) => {\n if (node.type !== 'clip') return node;\n const parsed = AssetGuid.parse(node.clip);\n if (!parsed.ok) throw parsed.error;\n const referenceIndex = refs.push(ref(parsed.value, 'nodes', index)) - 1;\n return { ...node, clip: referenceIndex };\n });\n return {\n payload: { kind: graph.kind, root: graph.root, nodes },\n refs,\n artifacts: { body: jsonArtifact(graph) },\n };\n }\n case 'audio': {\n const audio = asset as AudioClipAsset;\n return {\n payload: {\n kind: audio.kind,\n sourceKey: audio.sourceKey,\n mediaType: audio.mediaType,\n bytes: audio.bytes.slice(),\n },\n refs: [],\n artifacts: {\n source: {\n mediaType: audio.mediaType,\n assetCodec: { name: 'browser-audio', version: '1' },\n bytes: audio.bytes.slice(),\n },\n },\n };\n }\n case 'particle-effect': {\n const effect = asset as ParticleEffectAsset;\n const cooked = particleProgramArtifact(effect);\n return {\n payload: { ...effect, programFingerprint: cooked.fingerprint, program: cooked.program },\n refs: [],\n artifacts: {\n 'particle-effect/program.json': {\n mediaType: 'application/json',\n assetCodec: { name: 'forgeax-vfx-program', version: effect.program.format },\n bytes: cooked.bytes,\n },\n },\n };\n }\n case 'ies-profile': {\n const profile = asset as IesProfileAsset;\n return {\n payload: profile,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'application/octet-stream',\n assetCodec: { name: 'forgeax-ies-profile', version: '1' },\n bytes: bytes(profile.data),\n },\n },\n };\n }\n case 'material':\n case 'mesh':\n case 'scene':\n throw new TypeError(`ordinary producer received already-owned ${asset.kind} asset`);\n }\n}\n\nexport const materialAssetOutputProducer = createSafeProducer(\n 'material',\n 'material-pack/2',\n materialProduct,\n);\nexport const meshAssetOutputProducer = createSafeProducer('mesh', 'mesh-binary/4', meshProduct);\nexport const textureAssetOutputProducer = createSafeProducer(\n 'texture',\n 'texture-pack/1',\n textureProduct,\n);\n\nexport function createSceneAssetOutputProducer(\n sceneComponents: readonly ScriptablePackSceneComponent[] = [],\n): AssetOutputProducer {\n const schemas = new Map(\n sceneComponents.map((component) => [component.name, component.fields] as const),\n );\n return createSafeProducer('scene', 'scene-pack/3', (input) => sceneProduct(input, schemas));\n}\n\nexport function createPreExternalizedSceneAssetOutputProducer(): AssetOutputProducer {\n return createSafeProducer('scene', 'scene-pack/3', preExternalizedSceneProduct);\n}\n\nexport function createStandardAssetOutputProducerRegistry(\n sceneComponents: readonly ScriptablePackSceneComponent[] = [],\n): AssetOutputProducerRegistry {\n const registry = new AssetOutputProducerRegistry();\n registry.register(materialAssetOutputProducer);\n registry.register(meshAssetOutputProducer);\n registry.register(textureAssetOutputProducer);\n registry.register(createSceneAssetOutputProducer(sceneComponents));\n for (const kind of [\n 'equirect',\n 'sampler',\n 'font',\n 'render-pipeline',\n 'tileset',\n 'video',\n 'skeleton',\n 'skin',\n 'animation-clip',\n 'animation-graph',\n 'audio',\n 'particle-effect',\n 'ies-profile',\n ] as const) {\n registry.register(createSafeProducer(kind, 'ordinary-pod/1', ordinaryPodProduct));\n }\n return registry;\n}\n","import type {\n ImportErrorDetail,\n ImportedAsset,\n ImportProduct,\n ImportProductFinalizeOptions,\n ImportProductFinalizeResult,\n Result,\n} from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport type { ImportRunnerFs, RunImportMeta } from './import-runner.js';\nimport { runImport } from './import-runner.js';\nimport type { ImporterRegistry } from './importer-registry.js';\n\nexport type ProducerReadiness = 'before-consume' | 'on-demand';\n\nexport interface ProducerReadinessError {\n readonly code: 'producer-readiness-invalid';\n readonly expected: \"'before-consume' or 'on-demand'\";\n readonly hint: 'set producerReadiness to before-consume or on-demand';\n readonly detail: { readonly value: unknown };\n}\n\nexport type ProducerReadinessResult =\n | { readonly ok: true; readonly value: ProducerReadiness }\n | { readonly ok: false; readonly error: ProducerReadinessError };\n\nexport function parseProducerReadiness(value: unknown): ProducerReadinessResult {\n if (value === undefined || value === 'before-consume' || value === 'on-demand') {\n return { ok: true, value: value ?? 'before-consume' };\n }\n return {\n ok: false,\n error: {\n code: 'producer-readiness-invalid',\n expected: \"'before-consume' or 'on-demand'\",\n hint: 'set producerReadiness to before-consume or on-demand',\n detail: { value },\n },\n };\n}\n\nexport interface SourcePackageProducerInput {\n readonly meta: RunImportMeta;\n readonly registry: ImporterRegistry;\n readonly fs: ImportRunnerFs;\n}\n\nexport interface SourcePackageClosureDetail {\n readonly stage: 'closure';\n readonly declaredGuids: readonly string[];\n readonly producedGuids: readonly string[];\n readonly missingGuids: readonly string[];\n readonly unexpectedGuids: readonly string[];\n readonly duplicateGuids: readonly string[];\n}\n\nexport interface SourcePackageClosureError {\n readonly code: 'source-package-guid-closure-mismatch';\n readonly expected: string;\n readonly hint: string;\n readonly detail: SourcePackageClosureDetail;\n}\n\nexport interface SourcePackageProduct {\n readonly anchorGuid: string;\n readonly declaredGuids: readonly string[];\n readonly product: ImportProduct<unknown>;\n}\n\ntype SourcePackageFinalizeError = Extract<\n ImportProductFinalizeResult,\n { readonly ok: false }\n>['error'];\n\n/** Apply an importer-owned transport finalizer without teaching the adapter its kind. */\nexport function finalizeSourcePackage(\n product: ImportProduct<unknown>,\n finalizer:\n | ((\n product: ImportProduct<unknown>,\n options: ImportProductFinalizeOptions,\n ) => ImportProductFinalizeResult)\n | undefined,\n artifactUrl: ImportProductFinalizeOptions['artifactUrl'],\n): Result<ImportProduct<unknown>, SourcePackageFinalizeError> {\n if (finalizer === undefined) return ok(product);\n const result = finalizer(product, { artifactUrl });\n if (!result.ok) return err(result.error);\n return ok({\n ...product,\n assets: product.assets.map((asset, index) =>\n index === 0 ? { ...asset, payload: result.value.asset } : asset,\n ),\n });\n}\n\nexport type SourcePackageProducerResult =\n | { readonly ok: true; readonly value: SourcePackageProduct }\n | { readonly ok: false; readonly error: SourcePackageClosureError };\n\nfunction closureError(\n declaredGuids: readonly string[],\n producedGuids: readonly string[],\n): SourcePackageClosureError {\n const declared = new Set(declaredGuids.map((guid) => guid.toLowerCase()));\n const produced = new Set(producedGuids.map((guid) => guid.toLowerCase()));\n const counts = new Map<string, number>();\n for (const guid of producedGuids) {\n const key = guid.toLowerCase();\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n const duplicateGuids = [...counts.entries()]\n .filter(([, count]) => count > 1)\n .map(([guid]) => guid);\n return {\n code: 'source-package-guid-closure-mismatch',\n expected: 'the importer to return exactly one asset for every declared Meta GUID',\n hint: 'repair the Meta declaration or importer output, then rebuild the whole source package',\n detail: {\n stage: 'closure',\n declaredGuids,\n producedGuids,\n missingGuids: declaredGuids.filter((guid) => !produced.has(guid.toLowerCase())),\n unexpectedGuids: producedGuids.filter((guid) => !declared.has(guid.toLowerCase())),\n duplicateGuids,\n },\n };\n}\n\nfunction producedGuidsFromImportFailure(\n declaredGuids: readonly string[],\n detail: ImportErrorDetail,\n): readonly string[] {\n if ('missingGuids' in detail) {\n return declaredGuids.filter((guid) => !detail.missingGuids.includes(guid));\n }\n if ('unexpectedGuids' in detail) return [...declaredGuids, ...detail.unexpectedGuids];\n return [];\n}\n\nexport async function produceSourcePackage(\n input: SourcePackageProducerInput,\n): Promise<SourcePackageProducerResult> {\n const declaredGuids = input.meta.subAssets.map((asset) => asset.guid);\n const result = await runImport(input.meta, input.registry, input.fs);\n if (!result.ok) {\n const producedGuids = producedGuidsFromImportFailure(declaredGuids, result.error.detail);\n return {\n ok: false,\n error: closureError(declaredGuids, producedGuids),\n };\n }\n if ('skipped' in result.value) {\n return { ok: false, error: closureError(declaredGuids, []) };\n }\n\n const producedGuids = result.value.product.assets.map((asset) => asset.guid);\n const declaredSet = new Set(declaredGuids.map((guid) => guid.toLowerCase()));\n const producedSet = new Set(producedGuids.map((guid) => guid.toLowerCase()));\n const hasDuplicate =\n new Set(producedGuids.map((guid) => guid.toLowerCase())).size !== producedGuids.length;\n const complete =\n !hasDuplicate &&\n declaredGuids.length === producedGuids.length &&\n declaredGuids.every((guid) => producedSet.has(guid.toLowerCase())) &&\n producedGuids.every((guid) => declaredSet.has(guid.toLowerCase()));\n if (!complete) return { ok: false, error: closureError(declaredGuids, producedGuids) };\n\n const product = result.value.product;\n const anchorGuid = [...declaredGuids].sort((left, right) => left.localeCompare(right))[0];\n if (anchorGuid === undefined)\n return { ok: false, error: closureError(declaredGuids, producedGuids) };\n return {\n ok: true,\n value: {\n anchorGuid,\n declaredGuids,\n product,\n },\n };\n}\n\nexport function sourcePackageAssetsByGuid(\n source: SourcePackageProduct,\n): ReadonlyMap<string, ImportedAsset<unknown>> {\n return new Map(source.product.assets.map((asset) => [asset.guid.toLowerCase(), asset]));\n}\n","import { stat } from 'node:fs/promises';\nimport { createAcceptedPublication } from '@forgeax/engine-ddc';\nimport { normalizeMeshPayload } from '@forgeax/engine-geometry';\nimport {\n finalizePackageTransportSource,\n type PackageFinalizePolicy,\n type PackageProductAsset,\n packageTransportRevision,\n resolveAssetSource,\n} from '@forgeax/engine-pack/build';\nimport { BUILTIN_MESH_ASSETS } from '@forgeax/engine-pack/builtin';\nimport { AssetGuid, PackageId, type PackageId as PackageIdType } from '@forgeax/engine-pack/guid';\nimport {\n type NativeCookDraft,\n type NativeCooker,\n NativeCookerRegistry,\n} from '@forgeax/engine-pack/native-cooker';\nimport type {\n LegacyPackInventoryDocument,\n ScanSourceDeclaration,\n} from '@forgeax/engine-pack/scanner';\nimport {\n type AnyScriptablePackDefinition,\n type DirectPackAssetProjection,\n isScriptablePackAssetKind,\n parsePackSourceJson,\n projectDirectPackJson,\n projectScriptablePackSceneComponents,\n type ScriptablePackSourceClosureEntry,\n} from '@forgeax/engine-pack/source';\nimport { isEngineMaterial } from '@forgeax/engine-shader';\nimport type {\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n AssetPublicationOutput,\n AssetRef,\n ImportedArtifactBody,\n ImportedAsset,\n MaterialAsset,\n ResourceRevision,\n Result,\n} from '@forgeax/engine-types';\nimport { AssetError, err, ok } from '@forgeax/engine-types';\nimport type { DdcPack, ImportRunnerFs, RunImportMeta } from './import-runner.js';\nimport type { ImporterRegistry } from './importer-registry.js';\nimport { projectImportProductForBuild } from './pack-projection.js';\nimport type {\n ScriptablePackAssetSnapshotSource,\n ScriptablePackDomainError,\n ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\nimport {\n buildScriptablePack,\n buildScriptablePackWorklist,\n type ScriptablePackBuildProduct,\n type ScriptablePackBuildWorkItem,\n} from './scriptable-pack-build.js';\nimport {\n createPreExternalizedSceneAssetOutputProducer,\n createStandardAssetOutputProducerRegistry,\n} from './scriptable-pack-output-producers.js';\nimport { produceSourcePackage } from './source-package.js';\n\ntype FinalizedPackageTransport = Awaited<ReturnType<typeof finalizePackageTransportSource>>;\n\nexport interface ScriptablePackInput {\n readonly sourcePath: string;\n readonly displaySourcePath: string;\n readonly definition: AnyScriptablePackDefinition;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n readonly publicationGeneration: number;\n readonly policy:\n | PackageFinalizePolicy\n | ((product: ScriptablePackBuildProduct) => PackageFinalizePolicy);\n readonly subjectPackageId?: PackageIdType;\n readonly values?: Readonly<Record<string, unknown>>;\n readonly inheritedValues?: Readonly<\n Record<string, import('@forgeax/engine-pack/source').PackParameterValue>\n >;\n}\n\nexport interface PreparedScriptablePack {\n readonly product: ScriptablePackBuildProduct;\n readonly finalized: FinalizedPackageTransport;\n readonly facts: ScriptablePackPublicationFacts;\n readonly revision: ResourceRevision;\n readonly publication: AssetPublicationEnvelope;\n}\n\nexport interface ScriptablePackProductionOptions {\n readonly sources: readonly ScriptablePackInput[];\n readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n /** Build-time producers used for custom or otherwise uncooked asset rows. */\n readonly cookers?: readonly NativeCooker[];\n readonly availableGuids?: ReadonlySet<string>;\n readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;\n readonly maxPasses?: number;\n}\n\nexport interface ScriptablePackPublicationFacts {\n readonly outputs: readonly AssetPublicationOutput[];\n readonly refs: ReadonlyMap<string, readonly string[]>;\n}\n\nexport interface ScriptablePackTransportPaths {\n readonly packagePath: string;\n readonly artifactPath: (path: string) => string;\n readonly receiptPath: (guid: string) => string;\n}\n\nexport interface ScriptablePackTransportSink {\n writePackage(path: string, body: string): void | Promise<void>;\n writeArtifact(path: string, bytes: Uint8Array, mimeType: string): void | Promise<void>;\n writeReceipt(path: string, body: string): void | Promise<void>;\n}\n\n/** Build-time capabilities required to expose ordinary Meta products to a Pack. */\nexport interface ScriptablePackExternalImportOptions {\n readonly importerRegistry: ImporterRegistry;\n readonly fsForImport: ImportRunnerFs;\n}\n\nexport function canonicalScriptableSourcePath(sourcePath: string): string {\n const normalized = sourcePath.replaceAll('\\\\', '/');\n const marker = '/assets/';\n const markerIndex = normalized.indexOf(marker);\n return markerIndex < 0 ? normalized : normalized.slice(markerIndex + 1);\n}\n\n/** Stage materialized outputs owned by Meta or an already-cooked Pack v2 document. */\nexport async function declaredPackExternalOutputs(\n declarations: ReadonlyMap<string, ScanSourceDeclaration>,\n cookers: readonly NativeCooker[] = [],\n requiredGuids: readonly AssetGuidType[] = [],\n externalImport?: ScriptablePackExternalImportOptions,\n): Promise<readonly ScriptablePackStagedOutput[]> {\n if (requiredGuids.length === 0) return [];\n const required = new Set(requiredGuids.map((guid) => AssetGuid.format(guid).toLowerCase()));\n const available = new Set(required);\n for (const declaration of declarations.values()) {\n if (declaration.format !== 'meta.json') continue;\n for (const asset of declaration.value.subAssets) {\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n available.add(AssetGuid.format(parsed.value).toLowerCase());\n }\n }\n const outputs: ScriptablePackStagedOutput[] = [];\n for (const declaration of declarations.values()) {\n if (declaration.format === 'meta.json') {\n if (externalImport === undefined) continue;\n if (!declaration.value.subAssets.some((asset) => required.has(asset.guid.toLowerCase()))) {\n continue;\n }\n const resolved = resolveAssetSource(declaration.sourcePath, declaration.value.source);\n const meta: RunImportMeta = {\n importer: declaration.value.importer,\n source: resolved,\n sourceRevision: declaration.sourceRevision,\n ...(declaration.value.packageId === undefined\n ? {}\n : { packageId: declaration.value.packageId }),\n ...(declaration.value.provenance === undefined\n ? {}\n : { provenance: declaration.value.provenance }),\n ...(declaration.value.revision === undefined\n ? {}\n : { revision: declaration.value.revision }),\n ...(declaration.value.diagnostics === undefined\n ? {}\n : { diagnostics: declaration.value.diagnostics }),\n importSettings: declaration.value.importSettings,\n ...(declaration.value.sourceOverrides === undefined\n ? {}\n : { sourceOverrides: declaration.value.sourceOverrides }),\n subAssets: declaration.value.subAssets.map(({ guid, sourceIndex, sourceKey, kind }) => ({\n guid,\n sourceIndex,\n ...(sourceKey === undefined ? {} : { sourceKey }),\n kind,\n })),\n buildPack: false,\n };\n const sourcePackage = await produceSourcePackage({\n meta,\n registry: externalImport.importerRegistry,\n fs: externalImport.fsForImport,\n });\n if (!sourcePackage.ok) {\n throw new AssetError({\n code: 'asset-not-imported',\n expected: 'the Meta importer to produce the requested dependency',\n hint: 'repair the Meta source and rerun the Pack build',\n detail: { sourcePath: declaration.sourcePath },\n });\n }\n for (const asset of sourcePackage.value.product.assets) {\n if (!required.has(asset.guid.toLowerCase())) continue;\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n const declared = declaration.value.subAssets.find(\n (candidate) => candidate.guid.toLowerCase() === asset.guid.toLowerCase(),\n );\n outputs.push({\n guid: parsed.value,\n sourceKey: declared?.sourceKey ?? asset.guid,\n asset: { ...(asset.payload as Record<string, unknown>), kind: asset.kind } as Asset,\n });\n }\n continue;\n }\n if (declaration.format !== 'pack.json') continue;\n if (declaration.value.schemaVersion === '3.0.0') {\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok || parsed.value.format !== 'direct') continue;\n const projected = projectDirectPackJson(parsed.value);\n if (!projected.ok) continue;\n const prepared = await prepareDirectPackTransport({\n projected: projected.value,\n sourcePath: declaration.sourcePath,\n sourceRevision: declaration.sourceRevision,\n availableGuids: available,\n ...(cookers.length === 0 ? {} : { cookers }),\n policy: {\n base: '/',\n packagePath: `assets/${projected.value.packageId}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}/${key}.bin`,\n sink: () => {},\n },\n });\n if (!prepared.ok) throw prepared.error;\n const cookedByGuid = new Map(\n prepared.value.finalized.pack.assets.map((asset) => [asset.guid.toLowerCase(), asset]),\n );\n for (const asset of projected.value.assets) {\n if (!required.has(asset.guid.toLowerCase())) continue;\n const parsedGuid = AssetGuid.parse(asset.guid);\n if (!parsedGuid.ok) throw parsedGuid.error;\n const cooked = cookedByGuid.get(asset.guid.toLowerCase());\n if (cooked === undefined) {\n throw new AssetError({\n code: 'asset-not-imported',\n expected: 'the direct Pack producer to retain every declared output',\n hint: 'repair the direct Pack output and rerun the Pack build',\n detail: { sourcePath: declaration.sourcePath },\n });\n }\n outputs.push({\n guid: parsedGuid.value,\n sourceKey: asset.sourceKey,\n asset: { kind: cooked.kind, ...cooked.payload } as Asset,\n });\n }\n continue;\n }\n const cooked = await readCookedAuthoredPack(declaration.value, cookers, declaration.sourcePath);\n for (const asset of cooked?.logicalPackage.assets ?? declaration.value.assets) {\n if (!required.has(asset.guid.toLowerCase())) continue;\n const parsedGuid = AssetGuid.parse(asset.guid);\n if (!parsedGuid.ok) throw parsedGuid.error;\n outputs.push({\n guid: parsedGuid.value,\n sourceKey: asset.sourceKey ?? asset.guid,\n asset: { ...asset.payload, kind: asset.kind } as Asset,\n });\n }\n }\n return outputs;\n}\n\n/** Cook the explicit legacy Pack v2 transport without exposing v1 authoring APIs. */\nexport async function readCookedAuthoredPack(\n authoredPack: LegacyPackInventoryDocument,\n cookers: readonly NativeCooker[] = [],\n sourcePath?: string,\n): Promise<\n | {\n readonly logicalPackage: Pick<DdcPack, 'assets'>;\n readonly refsByGuid: ReadonlyMap<string, readonly string[]>;\n }\n | undefined\n> {\n if (authoredPack.schemaVersion !== '2.0.0') return undefined;\n const registry = new NativeCookerRegistry();\n for (const cooker of cookers) registry.register(cooker);\n const assets: PackageProductAsset[] = [];\n const refsByGuid = new Map<string, readonly string[]>();\n let hasCookedAsset = false;\n for (const asset of authoredPack.assets) {\n if (asset.execution !== 'cooked') {\n assets.push({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: {},\n });\n continue;\n }\n if (isEngineOwnedMaterial(asset)) {\n // Engine-owned material payloads are already cooked, but a legacy Pack\n // source still needs to be projected into the runtime transport route.\n // Mark the package as cooked so prepareLegacyPackTransport stages a\n // published body instead of falling back to the source URL, which the\n // dev route intentionally rejects for cooked v2 inputs.\n hasCookedAsset = true;\n refsByGuid.set(asset.guid.toLowerCase(), [...asset.refs]);\n assets.push({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: {},\n });\n continue;\n }\n hasCookedAsset = true;\n const result = await registry.runDraft(asset.kind, {\n guid: asset.guid,\n // Pack v2 stores the asset kind beside payload. Native producer APIs\n // consume the runtime Asset shape, so reconstruct that one boundary\n // field before invoking the cooker.\n source: nativeCookSource(asset),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(sourcePath === undefined ? {} : { sourcePath }),\n refs: asset.refs,\n });\n if (!result.ok) throw result.error;\n const draft = result.value;\n refsByGuid.set(asset.guid.toLowerCase(), [...draft.refs]);\n assets.push({\n guid: draft.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: draft.payload as Record<string, unknown>,\n refs: [...draft.refs],\n artifacts: draft.artifacts,\n });\n }\n return hasCookedAsset\n ? {\n logicalPackage: { assets },\n refsByGuid,\n }\n : undefined;\n}\n\nexport interface LegacyPackTransport {\n readonly pack: LegacyPackInventoryDocument;\n readonly firstGuid?: string;\n readonly cooked?: Awaited<ReturnType<typeof readCookedAuthoredPack>>;\n readonly finalized?: FinalizedPackageTransport;\n}\n\nexport interface DirectPackTransport {\n readonly projected: {\n readonly packageId: string;\n readonly assets: readonly DirectPackAssetProjection[];\n };\n readonly product: ScriptablePackBuildProduct;\n readonly finalized: FinalizedPackageTransport;\n readonly facts: ScriptablePackPublicationFacts;\n readonly revision: ResourceRevision;\n}\n\nexport interface DirectPackTransportInput {\n readonly projected: DirectPackTransport['projected'];\n readonly sourcePath: string;\n readonly displaySourcePath?: string;\n readonly sourceRevision: string;\n readonly policy: PackageFinalizePolicy;\n readonly availableGuids?: ReadonlySet<string>;\n readonly cookers?: readonly NativeCooker[];\n}\n\nfunction directReference(guid: string): AssetRef {\n return { guid, sourceField: { fieldName: 'refs' } };\n}\n\nfunction mergeDirectReferences(\n produced: readonly AssetRef[],\n declared: readonly string[],\n): readonly AssetRef[] {\n const merged = [...produced];\n const seen = new Set(produced.map((reference) => reference.guid.toLowerCase()));\n for (const guid of declared) {\n const parsed = AssetGuid.parse(guid);\n if (!parsed.ok) throw parsed.error;\n const normalized = AssetGuid.format(parsed.value);\n if (seen.has(normalized.toLowerCase())) continue;\n seen.add(normalized.toLowerCase());\n merged.push(directReference(normalized));\n }\n return merged;\n}\n\nfunction directReferenceFailure(\n sourcePath: string,\n guids: readonly string[],\n): {\n readonly code: 'pack-output-reference-missing';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly sourcePath: string; readonly guids: readonly string[] };\n} {\n return {\n code: 'pack-output-reference-missing',\n expected: 'every direct Pack reference to resolve to a local or published AssetGuid',\n hint: 'publish the referenced Pack or repair the direct refs before rebuilding the Pack',\n detail: { sourcePath, guids: [...guids].sort() },\n };\n}\n\nfunction directInputFingerprint(\n sourceRevision: string,\n nativeFingerprints: ReadonlyMap<string, string>,\n): string {\n if (nativeFingerprints.size === 0) return sourceRevision;\n return `sha256:${packageTransportRevision({\n sourceRevision,\n nativeCookers: [...nativeFingerprints.entries()].sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n })}`;\n}\n\nfunction importedAssetArtifacts(\n assets: readonly ImportedAsset<unknown>[],\n): Readonly<Record<string, ImportedArtifactBody>> {\n return Object.fromEntries(\n assets.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [`${asset.guid}/${key}`, artifact]),\n ),\n );\n}\n\nfunction rawDirectProduct(input: DirectPackTransportInput): ScriptablePackBuildProduct {\n const inputFingerprint = `sha256:${packageTransportRevision({\n packageId: input.projected.packageId,\n sourceRevision: input.sourceRevision,\n assets: input.projected.assets,\n })}`;\n const assets: ImportedAsset<unknown>[] = input.projected.assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: directRuntimePayload(asset),\n refs: asset.refs.map(directReference),\n artifacts: {},\n }));\n return {\n product: {\n assets,\n sourceDependencies: [input.sourcePath],\n refs: assets.flatMap((asset) => asset.refs),\n artifacts: importedAssetArtifacts(assets),\n receipts: assets.map((asset) => ({\n guid: asset.guid,\n origin: 'authoredPack' as const,\n status: 'succeeded' as const,\n inputFingerprint,\n })),\n diagnostics: [],\n sourceRevision: inputFingerprint,\n sourceKey: input.sourcePath,\n },\n stagedOutputs: input.projected.assets.map((asset) => ({\n guid: directGuid(asset.guid),\n sourceKey: asset.sourceKey,\n asset: {\n ...(directRuntimePayload(asset) as Record<string, unknown>),\n kind: asset.kind,\n } as Asset,\n digest: `sha256:${packageTransportRevision({ kind: asset.kind, payload: asset.payload })}`,\n })),\n externalEvidence: [],\n inputFingerprint,\n };\n}\n\nfunction directGuid(value: string): AssetGuidType {\n const parsed = AssetGuid.parse(value);\n if (!parsed.ok) throw parsed.error;\n return parsed.value;\n}\n\nfunction nativeRefs(refs: readonly string[]): AssetRef[] {\n return refs.map((guid) => {\n const parsed = AssetGuid.parse(guid);\n if (!parsed.ok) throw parsed.error;\n return { guid: AssetGuid.format(parsed.value) };\n });\n}\n\nfunction nativeCookSource(asset: { readonly kind: string; readonly payload: unknown }): unknown {\n if (\n asset.kind !== 'material' ||\n asset.payload === null ||\n typeof asset.payload !== 'object' ||\n Array.isArray(asset.payload)\n ) {\n return asset.payload;\n }\n return { ...(asset.payload as Record<string, unknown>), kind: asset.kind };\n}\n\nfunction isEngineOwnedMaterial(asset: {\n readonly kind: string;\n readonly payload: unknown;\n}): boolean {\n if (\n asset.kind !== 'material' ||\n asset.payload === null ||\n typeof asset.payload !== 'object' ||\n Array.isArray(asset.payload)\n ) {\n return false;\n }\n return isEngineMaterial(asset.payload as Pick<MaterialAsset, 'passes'>);\n}\n\nfunction directRuntimePayload(asset: DirectPackAssetProjection): unknown {\n if (\n asset.kind !== 'ui' ||\n asset.payload === null ||\n typeof asset.payload !== 'object' ||\n Array.isArray(asset.payload)\n ) {\n return asset.payload;\n }\n return { ...(asset.payload as Record<string, unknown>), guid: asset.guid };\n}\n\nfunction directAssetForProducer(asset: DirectPackAssetProjection): Asset {\n const payload = {\n ...(directRuntimePayload(asset) as Record<string, unknown>),\n kind: asset.kind,\n };\n if (asset.kind !== 'mesh') return payload as Asset;\n return (normalizeMeshPayload(payload, asset.refs) ?? payload) as Asset;\n}\n\n/** Cook one direct v3 Pack through the same producer/finalizer seam as pack.ts. */\nexport async function prepareDirectPackTransport(\n input: DirectPackTransportInput,\n): Promise<Result<DirectPackTransport, unknown>> {\n const localGuids = new Set(input.projected.assets.map((asset) => asset.guid.toLowerCase()));\n const availableGuids = new Set(\n [...(input.availableGuids ?? []), ...BUILTIN_MESH_ASSETS.map((asset) => asset.guid)].filter(\n (guid) => !localGuids.has(guid.toLowerCase()),\n ),\n );\n const directArtifacts = input.projected.assets.find(\n (asset) => asset.artifacts !== undefined && Object.keys(asset.artifacts).length > 0,\n );\n if (directArtifacts !== undefined) {\n return err({\n code: 'pack-parameter-invalid',\n expected: 'direct v3 authoring entries to leave artifacts empty for the producer',\n hint: 'remove authored artifact data and let the registered Asset producer create it',\n detail: { sourcePath: input.sourcePath, sourceKey: directArtifacts.sourceKey },\n });\n }\n const packageId = PackageId.parse(input.projected.packageId);\n if (!packageId.ok) return err(packageId.error);\n const cookerRegistry = new NativeCookerRegistry();\n for (const cooker of input.cookers ?? []) cookerRegistry.register(cooker);\n const nativeDrafts = new Map<string, NativeCookDraft>();\n const nativeFingerprints = new Map<string, string>();\n for (const asset of input.projected.assets) {\n if (!isScriptablePackAssetKind(asset.kind)) continue;\n if (cookerRegistry.get(asset.kind) === undefined) continue;\n if (isEngineOwnedMaterial(asset)) continue;\n const draft = await cookerRegistry.runDraft(asset.kind, {\n guid: asset.guid,\n // Direct v3 entries keep `kind` at the entry boundary. Reattach it for\n // producer contracts such as MaterialAsset, whose payload is otherwise\n // intentionally allowed to omit the discriminant.\n source: nativeCookSource(asset),\n sourceKey: asset.sourceKey,\n sourcePath: input.sourcePath,\n refs: asset.refs,\n });\n if (!draft.ok) return err(draft.error);\n if (draft.value.guid.toLowerCase() !== asset.guid.toLowerCase()) {\n return err({\n code: 'pack-parameter-invalid',\n expected: 'a direct Pack cooker to preserve the derived AssetGuid',\n hint: 'repair the native cooker output GUID and rebuild the direct Pack',\n detail: {\n sourcePath: input.sourcePath,\n sourceKey: asset.sourceKey,\n expectedGuid: asset.guid,\n actualGuid: draft.value.guid,\n },\n });\n }\n nativeDrafts.set(asset.guid.toLowerCase(), draft.value);\n nativeFingerprints.set(asset.sourceKey, draft.value.inputFingerprint);\n }\n const unsupported = input.projected.assets.filter(\n (asset) => !isScriptablePackAssetKind(asset.kind),\n );\n if (unsupported.length > 0 && unsupported.length !== input.projected.assets.length) {\n return err({\n code: 'pack-parameter-invalid',\n expected: 'a direct Pack to contain only producer-backed Engine Assets or only direct PODs',\n hint: 'split custom direct PODs from producer-backed Assets into separate Packs',\n detail: {\n sourcePath: input.sourcePath,\n unsupportedKinds: [...new Set(unsupported.map((asset) => asset.kind))].sort(),\n },\n });\n }\n if (unsupported.length === input.projected.assets.length) {\n const raw = rawDirectProduct(input);\n const known = new Set([...availableGuids, ...localGuids]);\n const missing = new Set<string>();\n for (const asset of raw.product.assets) {\n for (const reference of asset.refs) {\n if (!known.has(reference.guid.toLowerCase())) missing.add(reference.guid.toLowerCase());\n }\n }\n if (missing.size > 0) return err(directReferenceFailure(input.sourcePath, [...missing]));\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(raw.product),\n input.policy,\n );\n const facts = projectScriptablePackPublication(raw);\n if (!facts.ok) return facts;\n const displaySourcePath = input.displaySourcePath ?? input.sourcePath;\n const revision = await scriptablePackResourceRevision(displaySourcePath, raw.inputFingerprint, [\n { path: input.sourcePath, digest: input.sourceRevision },\n ]);\n return ok({\n projected: input.projected,\n product: raw,\n finalized,\n facts: facts.value,\n revision,\n });\n }\n const definition = {\n schemaVersion: '2.0.0' as const,\n packageId: packageId.value,\n build: () =>\n ok(\n Object.fromEntries(\n input.projected.assets.map((asset) => [\n asset.sourceKey,\n {\n ...((nativeDrafts.get(asset.guid.toLowerCase())?.payload as\n | Record<string, unknown>\n | undefined) ?? directAssetForProducer(asset)),\n kind: asset.kind,\n } as Asset,\n ]),\n ),\n ),\n } as AnyScriptablePackDefinition;\n const outputs = createStandardAssetOutputProducerRegistry();\n outputs.register(createPreExternalizedSceneAssetOutputProducer());\n const built = await buildScriptablePack({\n definition,\n sourcePath: input.sourcePath,\n outputs,\n sourceClosure: [{ path: input.sourcePath, digest: input.sourceRevision }],\n availableGuids,\n deferReferenceValidation: true,\n });\n if (!built.ok) return built;\n const declaredByGuid = new Map(\n input.projected.assets.map((asset) => [asset.guid.toLowerCase(), asset.refs]),\n );\n const assets = built.value.product.assets.map((asset) => ({\n ...asset,\n ...(nativeDrafts.has(asset.guid.toLowerCase())\n ? {\n payload: nativeDrafts.get(asset.guid.toLowerCase())?.payload as Record<string, unknown>,\n refs: mergeDirectReferences(\n nativeRefs(nativeDrafts.get(asset.guid.toLowerCase())?.refs ?? []),\n declaredByGuid.get(asset.guid.toLowerCase()) ?? [],\n ),\n artifacts: nativeDrafts.get(asset.guid.toLowerCase())?.artifacts ?? {},\n }\n : {\n refs: mergeDirectReferences(\n asset.refs,\n declaredByGuid.get(asset.guid.toLowerCase()) ?? [],\n ),\n }),\n }));\n const missing = new Set<string>();\n const known = new Set([...availableGuids, ...localGuids]);\n for (const asset of assets) {\n for (const reference of asset.refs) {\n if (!known.has(reference.guid.toLowerCase())) missing.add(reference.guid.toLowerCase());\n }\n }\n if (missing.size > 0) return err(directReferenceFailure(input.sourcePath, [...missing]));\n const inputFingerprint = directInputFingerprint(built.value.inputFingerprint, nativeFingerprints);\n const stagedOutputs = input.projected.assets.map((asset) => ({\n guid: directGuid(asset.guid),\n sourceKey: asset.sourceKey,\n asset: directAssetForProducer(asset),\n digest: `sha256:${packageTransportRevision({ kind: asset.kind, payload: asset.payload })}`,\n }));\n const product: ScriptablePackBuildProduct = {\n ...built.value,\n inputFingerprint,\n stagedOutputs,\n product: {\n ...built.value.product,\n assets,\n refs: assets.flatMap((asset) => asset.refs),\n artifacts: importedAssetArtifacts(assets),\n receipts: built.value.product.receipts.map((receipt) => ({\n ...receipt,\n inputFingerprint,\n })),\n sourceRevision: inputFingerprint,\n },\n };\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(product.product),\n input.policy,\n );\n const facts = projectScriptablePackPublication(product);\n if (!facts.ok) return facts;\n const displaySourcePath = input.displaySourcePath ?? input.sourcePath;\n const revision = await scriptablePackResourceRevision(\n displaySourcePath,\n product.inputFingerprint,\n [{ path: input.sourcePath, digest: input.sourceRevision }],\n );\n return ok({\n projected: input.projected,\n product,\n finalized,\n facts: facts.value,\n revision,\n });\n}\n\n/** Normalize one explicit Pack v2 transport and invoke its registered cookers once. */\nexport async function prepareLegacyPackTransport(\n authoredPack: LegacyPackInventoryDocument,\n cookers: readonly NativeCooker[] | undefined,\n policyFor: (guid: string) => PackageFinalizePolicy,\n sourcePath?: string,\n): Promise<LegacyPackTransport> {\n const firstGuid = authoredPack.assets[0]?.guid?.toLowerCase();\n if (authoredPack.schemaVersion !== '2.0.0' || firstGuid === undefined) {\n return { pack: authoredPack, ...(firstGuid === undefined ? {} : { firstGuid }) };\n }\n const cooked = await readCookedAuthoredPack(authoredPack, cookers, sourcePath);\n if (cooked === undefined) return { pack: authoredPack, firstGuid };\n return {\n pack: authoredPack,\n firstGuid,\n cooked,\n finalized: await finalizePackageTransportSource(cooked.logicalPackage, policyFor(firstGuid)),\n };\n}\n\n/** Materialize a dynamic Pack product through the same dev transport seam. */\nexport async function materializePreparedScriptablePack(\n prepared: PreparedScriptablePack,\n paths: ScriptablePackTransportPaths,\n sink: ScriptablePackTransportSink,\n): Promise<ReadonlyMap<string, string>> {\n const { product, finalized } = prepared;\n await sink.writePackage(paths.packagePath, JSON.stringify(finalized.pack));\n for (const artifact of finalized.artifacts) {\n await sink.writeArtifact(\n paths.artifactPath(artifact.path),\n artifact.bytes,\n artifact.path.endsWith('.json') ? 'application/json' : artifact.mediaType,\n );\n }\n const receipts = new Map<string, string>();\n for (const asset of product.product.assets) {\n const path = paths.receiptPath(asset.guid);\n await sink.writeReceipt(\n path,\n JSON.stringify({\n guid: asset.guid,\n origin: 'sourceMeta',\n status: 'succeeded',\n inputFingerprint: product.inputFingerprint,\n outputDigest: finalized.digest,\n }),\n );\n receipts.set(asset.guid.toLowerCase(), path);\n }\n return receipts;\n}\n\nfunction projectScriptablePackPublication(\n product: ScriptablePackBuildProduct,\n): Result<ScriptablePackPublicationFacts, ScriptablePackDomainError> {\n const assets = new Map(product.product.assets.map((asset) => [asset.guid.toLowerCase(), asset]));\n const outputs: AssetPublicationOutput[] = [];\n for (const staged of product.stagedOutputs) {\n const guid = AssetGuid.format(staged.guid).toLowerCase();\n const asset = assets.get(guid);\n if (asset === undefined || staged.digest === undefined || staged.sourceKey === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: `ScriptablePack publication output ${guid} to include a product, sourceKey, and digest`,\n hint: 'repair the dynamic Pack output and rebuild the current generation',\n detail: { stage: 'publication', guid },\n });\n }\n outputs.push({\n guid,\n sourceKey: staged.sourceKey,\n kind: asset.kind,\n digest: staged.digest,\n refs: asset.refs.map((reference) => reference.guid),\n });\n }\n return ok({\n outputs,\n refs: new Map(\n product.product.assets.map((asset) => [\n asset.guid.toLowerCase(),\n asset.refs.map((reference) => reference.guid),\n ]),\n ),\n });\n}\n\nfunction snapshotSourceForStagedOutputs(\n outputs: readonly ScriptablePackStagedOutput[],\n): import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined {\n if (outputs.length === 0) return undefined;\n const byGuid = new Map(\n outputs.map((output) => [AssetGuid.format(output.guid).toLowerCase(), output]),\n );\n return {\n async readByGuid(guid) {\n const key = AssetGuid.format(guid).toLowerCase();\n const output = byGuid.get(key);\n if (output === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-found',\n expected: `an available Asset snapshot for ${key}`,\n hint: 'publish the referenced Pack or repair the content dependency',\n }),\n );\n }\n return ok({\n asset: structuredClone(output.asset),\n generation: 1,\n digest: output.digest ?? 'sha256:staged',\n });\n },\n };\n}\n\nfunction composeScriptablePackAssetSource(\n staged: import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined,\n published: import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined,\n): import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined {\n if (staged === undefined) return published;\n if (published === undefined) return staged;\n return {\n async readByGuid(guid) {\n const local = await staged.readByGuid(guid);\n if (local.ok || local.error.code !== 'asset-not-found') return local;\n return published.readByGuid(guid);\n },\n };\n}\n\n/**\n * Build ScriptablePack sources in one generation and hand their terminal\n * products to the ordinary Pack v2 finalizer. The worklist is deliberately\n * below publication: it only decides which current-generation products exist.\n */\nexport async function produceScriptablePackProducts(\n options: ScriptablePackProductionOptions,\n): Promise<Result<ReadonlyMap<string, PreparedScriptablePack>, unknown>> {\n if (options.sources.length === 0) return ok(new Map());\n const external = options.declaredExternalOutputs ?? [];\n const assetSource = composeScriptablePackAssetSource(\n snapshotSourceForStagedOutputs(external),\n options.assetSource,\n );\n const availableGuids = new Set([\n ...(options.availableGuids ?? []),\n ...external.map((output) => AssetGuid.format(output.guid).toLowerCase()),\n ]);\n const workItems: ScriptablePackBuildWorkItem[] = options.sources.map((source) => ({\n definition: source.definition,\n sourcePath: source.sourcePath,\n ...(source.subjectPackageId === undefined ? {} : { subjectPackageId: source.subjectPackageId }),\n ...(source.values === undefined ? {} : { values: source.values }),\n ...(source.inheritedValues === undefined ? {} : { inheritedValues: source.inheritedValues }),\n sourceClosure: source.sourceClosure,\n }));\n const worklist = await buildScriptablePackWorklist({\n subjects: workItems,\n outputs: createStandardAssetOutputProducerRegistry(\n options.sources.flatMap((source) =>\n projectScriptablePackSceneComponents(source.definition.sceneComponents),\n ),\n ),\n ...(options.cookers === undefined ? {} : { cookers: options.cookers }),\n ...(assetSource === undefined ? {} : { assetSource }),\n availableGuids,\n ...(options.incomingRefs === undefined ? {} : { incomingRefs: options.incomingRefs }),\n ...(options.maxPasses === undefined ? {} : { maxPasses: options.maxPasses }),\n });\n if (!worklist.ok) return worklist;\n\n const productsBySource = new Map(\n worklist.value.buildProducts\n .filter((product) => product.product.sourceKey !== undefined)\n .map((product) => [product.product.sourceKey as string, product]),\n );\n const prepared = new Map<string, PreparedScriptablePack>();\n for (const source of options.sources) {\n const product = productsBySource.get(source.sourcePath);\n if (product === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'one terminal dynamic Pack product for every source subject',\n hint: 'rerun the bounded generation worklist and inspect its subject map',\n detail: { sourcePath: source.sourcePath },\n });\n }\n const policy = typeof source.policy === 'function' ? source.policy(product) : source.policy;\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(product.product),\n policy,\n );\n const facts = projectScriptablePackPublication(product);\n if (!facts.ok) return facts;\n const revision = await scriptablePackResourceRevision(\n source.displaySourcePath,\n product.inputFingerprint,\n source.sourceClosure,\n );\n const publication = createAcceptedPublication({\n sourcePath: source.displaySourcePath,\n sourceRevision: product.inputFingerprint,\n generation: source.publicationGeneration,\n digest: finalized.digest,\n packageUrl: finalized.packageUrl,\n inputFingerprint: product.inputFingerprint,\n outputs: facts.value.outputs,\n externalEvidence: product.externalEvidence,\n });\n prepared.set(source.displaySourcePath, {\n product: {\n ...product,\n },\n finalized,\n facts: facts.value,\n revision,\n publication,\n });\n }\n return ok(prepared);\n}\n\n/** Project the immutable module closure into the Catalog revision contract. */\nasync function scriptablePackResourceRevision(\n displaySourcePath: string,\n digest: string,\n sourceClosure: readonly ScriptablePackSourceClosureEntry[],\n): Promise<ResourceRevision> {\n const mtimes = await Promise.all(\n sourceClosure.map(async (entry) => {\n try {\n return (await stat(entry.path)).mtimeMs;\n } catch (error) {\n // Direct Pack declarations may be supplied with a logical source path\n // and sourceText rather than a file-backed module. The digest remains\n // the authoritative revision in that case; preserve filesystem errors\n // other than a missing path so real source failures stay visible.\n if (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n (error.code === 'ENOENT' || error.code === 'ENOTDIR')\n ) {\n return 0;\n }\n throw error;\n }\n }),\n );\n const observedAt = mtimes.length === 0 ? 0 : Math.trunc(Math.max(...mtimes));\n return { digest, observedAt, rootId: displaySourcePath };\n}\n","import { resolve } from 'node:path';\nimport { catalogSourcePathFor } from '@forgeax/engine-pack/build';\nimport type { ScanSourceDeclaration } from '@forgeax/engine-pack/scanner';\n\nfunction normalizeCatalogPath(path: string): string {\n return path.replaceAll('\\\\', '/').replace(/^\\.\\//, '');\n}\n\nexport interface CatalogSourceDeclaration {\n readonly sourcePath: string;\n readonly declaration: ScanSourceDeclaration;\n}\n\n/**\n * Resolve a Catalog row's logical source locator back to its physical scanner\n * declaration. Catalog rows are host identities; declaration maps remain\n * physical because production still has to read those files from disk.\n */\nexport function sourceDeclarationForCatalogPath(\n sourcePath: string,\n declarations: ReadonlyMap<string, ScanSourceDeclaration>,\n sourceIdentityFor?: (sourcePath: string) => string,\n cwd = process.cwd(),\n): CatalogSourceDeclaration | undefined {\n const normalized = normalizeCatalogPath(sourcePath);\n const direct = declarations.get(resolve(cwd, sourcePath));\n if (direct !== undefined) {\n return { sourcePath: resolve(cwd, sourcePath), declaration: direct };\n }\n for (const [physicalPath, declaration] of declarations) {\n if (catalogSourcePathFor(cwd, physicalPath, sourceIdentityFor) === normalized) {\n return { sourcePath: physicalPath, declaration };\n }\n }\n return undefined;\n}\n","import { isAbsolute, relative, resolve } from 'node:path';\nimport {\n type CatalogBuildResult,\n createRuntimePackPublication,\n finalizePackageTransportSource,\n metaPathForGuid,\n projectPackageCatalog,\n} from '@forgeax/engine-pack/build';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { NativeCooker } from '@forgeax/engine-pack/native-cooker';\nimport type { LegacyPackInventoryDocument } from '@forgeax/engine-pack/scanner';\nimport {\n PackageId,\n parsePackSourceJson,\n projectDirectPackJson,\n resolvePackParameterInheritance,\n} from '@forgeax/engine-pack/source';\nimport { loadScriptablePack } from '@forgeax/engine-pack/source-node';\nimport type {\n AssetPublicationEnvelope,\n AssetPublicationOutput,\n CookReceipt,\n Importer,\n PackIndexEntry,\n RuntimeAssetBinding,\n} from '@forgeax/engine-types';\nimport type { ImportRunnerFs } from './import-runner.js';\nimport type { ImporterRegistry } from './importer-registry.js';\nimport { projectImportProductForBuild } from './pack-projection.js';\nimport {\n canonicalScriptableSourcePath,\n declaredPackExternalOutputs,\n type PreparedScriptablePack,\n prepareDirectPackTransport,\n prepareLegacyPackTransport,\n produceScriptablePackProducts,\n type ScriptablePackInput,\n} from './scriptable-pack-host.js';\nimport {\n finalizeSourcePackage,\n produceSourcePackage,\n sourcePackageAssetsByGuid,\n} from './source-package.js';\nimport { sourceDeclarationForCatalogPath } from './source-path.js';\n\nexport interface BuildProductionFailure {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n readonly cause?: unknown;\n}\n\nexport interface BuildProductionFile {\n readonly type: 'asset';\n readonly fileName?: string;\n readonly name?: string;\n readonly originalFileName?: string;\n readonly source: string | Uint8Array;\n}\n\nexport interface BuildProductionSink {\n emitFile(file: BuildProductionFile): string;\n getFileName(referenceId: string): string;\n fileUrl(fileName: string): string;\n}\n\nexport interface BuildProductionOptions {\n readonly inventory: CatalogBuildResult;\n readonly cwd: string;\n readonly basePrefix: string;\n readonly generation: number;\n readonly cookers: readonly NativeCooker[];\n readonly importerRegistry: ImporterRegistry;\n readonly fsForImport: ImportRunnerFs;\n readonly cookedCurrentProjection: Record<string, unknown>;\n readonly directCurrentProjection: Record<string, unknown>;\n readonly authoredCookedCurrentProjection: Record<string, unknown>;\n readonly runtimeBinding?: Pick<RuntimeAssetBinding, 'scopeId' | 'generation'>;\n readonly sink: BuildProductionSink;\n readonly fail: (failure: BuildProductionFailure) => Error;\n}\n\nfunction scriptableArtifactPath(guid: string, key: string): string {\n return `${guid.toLowerCase()}/${key.includes('.') ? key : `${key}.bin`}`;\n}\n\nfunction runtimePublicationFor(\n context: BuildProductionOptions,\n input: {\n readonly pack: Parameters<typeof createRuntimePackPublication>[0]['pack'];\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly packageUrl: string;\n readonly digest?: string;\n readonly inputFingerprint?: string;\n /** Preserve producer-declared semantic keys on generic publication output rows. */\n readonly sourceKeys?: ReadonlyMap<string, string>;\n readonly outputs?: readonly AssetPublicationOutput[];\n readonly externalEvidence?: readonly import('@forgeax/engine-types').AssetPublicationExternalEvidence[];\n },\n) {\n const publicationInput = {\n pack: input.pack,\n scopeId: context.runtimeBinding?.scopeId ?? 'asset-runtime',\n sourcePath: input.sourcePath,\n sourceRevision: input.sourceRevision,\n packageUrl: input.packageUrl,\n ...(input.digest === undefined ? {} : { digest: input.digest }),\n ...(input.inputFingerprint === undefined ? {} : { inputFingerprint: input.inputFingerprint }),\n ...(input.outputs === undefined ? {} : { outputs: input.outputs }),\n ...(input.externalEvidence === undefined ? {} : { externalEvidence: input.externalEvidence }),\n generation: context.runtimeBinding?.generation ?? context.generation,\n };\n if (input.sourceKeys === undefined) return createRuntimePackPublication(publicationInput);\n const derived = createRuntimePackPublication(publicationInput);\n const outputs = derived.publication.outputs.map((output) => ({\n ...output,\n sourceKey: input.sourceKeys?.get(output.guid.toLowerCase()) ?? output.sourceKey,\n }));\n return createRuntimePackPublication({ ...publicationInput, outputs });\n}\n\nfunction sourceKeysFor(\n declarations: readonly { readonly guid: string; readonly sourceKey?: string }[],\n): ReadonlyMap<string, string> {\n return new Map(\n declarations.flatMap((declaration) =>\n declaration.sourceKey === undefined\n ? []\n : [[declaration.guid.toLowerCase(), declaration.sourceKey] as const],\n ),\n );\n}\n\ninterface PackBuildBundle {\n readonly input: ScriptablePackInput;\n readonly prepared: PreparedScriptablePack;\n readonly entries: readonly PackIndexEntry[];\n}\n\ntype PackSourceSubject = {\n readonly kind: 'source';\n readonly packageId: PackageId;\n readonly sourcePath: string;\n readonly definition: import('@forgeax/engine-pack/source').AnyScriptablePackDefinition;\n readonly sourceClosure: readonly import('@forgeax/engine-pack/source').ScriptablePackSourceClosureEntry[];\n};\n\ntype PackInstanceSubject = {\n readonly kind: 'instance';\n readonly packageId: PackageId;\n readonly parent: PackageId;\n readonly values: Readonly<Record<string, unknown>>;\n readonly sourcePath: string;\n};\n\ntype PackDirectSubject = {\n readonly kind: 'direct';\n readonly packageId: PackageId;\n readonly sourcePath: string;\n};\n\ntype PackSourceIndexSubject = PackSourceSubject | PackInstanceSubject | PackDirectSubject;\n\nfunction dynamicFailure(context: BuildProductionOptions, value: unknown): never {\n const candidate = value !== null && typeof value === 'object' ? value : {};\n const error = candidate as {\n readonly code?: unknown;\n readonly expected?: unknown;\n readonly hint?: unknown;\n readonly detail?: unknown;\n };\n throw context.fail({\n code: typeof error.code === 'string' ? error.code : 'pack-build-failed',\n expected:\n typeof error.expected === 'string'\n ? error.expected\n : 'the Pack source generation to produce a valid terminal result',\n hint:\n typeof error.hint === 'string'\n ? error.hint\n : 'inspect the Pack source subject and rebuild the current generation',\n ...(error.detail === undefined ? {} : { detail: error.detail }),\n });\n}\n\nfunction packCatalogSourcePath(context: BuildProductionOptions, sourcePath: string): string {\n const projected = context.fsForImport.sourceIdentityFor?.(sourcePath);\n const logical =\n projected === undefined || isAbsolute(projected)\n ? relative(context.cwd, sourcePath)\n : projected;\n return canonicalScriptableSourcePath(logical).replaceAll('\\\\', '/');\n}\n\n/** Build ScriptablePack roots and Pack JSON instances before normal emission. */\nasync function buildPackSources(\n context: BuildProductionOptions,\n): Promise<readonly PackBuildBundle[]> {\n const subjects = new Map<string, PackSourceIndexSubject>();\n for (const [sourcePath, declaration] of context.inventory.sourceDeclarations) {\n if (declaration.format === 'pack.ts') {\n const key = PackageId.format(declaration.definition.packageId).toLowerCase();\n subjects.set(key, {\n kind: 'source',\n packageId: declaration.definition.packageId,\n sourcePath,\n definition: declaration.definition,\n sourceClosure: declaration.sourceClosure,\n });\n continue;\n }\n if (declaration.format !== 'pack.json' || declaration.value.schemaVersion !== '3.0.0') {\n continue;\n }\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok) dynamicFailure(context, parsed.error);\n if (parsed.value.format === 'direct') {\n subjects.set(PackageId.format(parsed.value.packageId).toLowerCase(), {\n kind: 'direct',\n packageId: parsed.value.packageId,\n sourcePath,\n });\n } else {\n subjects.set(PackageId.format(parsed.value.packageId).toLowerCase(), {\n kind: 'instance',\n packageId: parsed.value.packageId,\n parent: parsed.value.parent,\n values: parsed.value.values,\n sourcePath,\n });\n }\n }\n const sourceSubject = (packageId: PackageId): PackSourceSubject | undefined => {\n const subject = subjects.get(PackageId.format(packageId).toLowerCase());\n return subject?.kind === 'source' ? subject : undefined;\n };\n const readSubject = async (packageId: PackageId) => {\n const subject = subjects.get(PackageId.format(packageId).toLowerCase());\n if (subject === undefined) return undefined;\n if (subject.kind === 'source') {\n return {\n format: 'source' as const,\n packageId: subject.packageId,\n parameters: 'parameters' in subject.definition ? subject.definition.parameters : [],\n } satisfies import('@forgeax/engine-pack/source').PackParameterRootSubject;\n }\n if (subject.kind === 'instance') {\n return {\n format: 'instance' as const,\n packageId: subject.packageId,\n parent: subject.parent,\n values: subject.values,\n } satisfies import('@forgeax/engine-pack/source').PackParameterInstanceSubject;\n }\n return {\n format: 'direct' as const,\n packageId: subject.packageId,\n } satisfies import('@forgeax/engine-pack/source').PackDirectSubject;\n };\n\n const orderedSubjects = [...subjects.values()].sort((left, right) =>\n left.sourcePath.localeCompare(right.sourcePath),\n );\n const inputs: ScriptablePackInput[] = [];\n for (const subject of orderedSubjects) {\n if (subject.kind === 'source') {\n const packageId = PackageId.format(subject.packageId);\n const loaded = await loadScriptablePack(subject.sourcePath);\n if (!loaded.ok) dynamicFailure(context, loaded.error);\n if (PackageId.format(loaded.value.packageId) !== packageId) {\n dynamicFailure(context, {\n code: 'pack-source-revision-conflict',\n expected: 'the ScriptablePack source packageId to remain fixed during production',\n hint: 'retry after source writes settle and rebuild the current generation',\n detail: {\n sourcePath: subject.sourcePath,\n scannedPackageId: packageId,\n loadedPackageId: PackageId.format(loaded.value.packageId),\n },\n });\n }\n inputs.push({\n sourcePath: subject.sourcePath,\n displaySourcePath: packCatalogSourcePath(context, subject.sourcePath),\n definition: loaded.value,\n sourceClosure: subject.sourceClosure,\n publicationGeneration: context.generation,\n policy: {\n base: context.basePrefix === '' ? '/' : context.basePrefix,\n packagePath: `assets/${packageId}.pack.json`,\n artifactPath: scriptableArtifactPath,\n },\n });\n }\n }\n for (const subject of orderedSubjects) {\n if (subject.kind !== 'instance') continue;\n const resolved = await resolvePackParameterInheritance(\n {\n format: 'instance',\n packageId: subject.packageId,\n parent: subject.parent,\n values: subject.values,\n },\n readSubject,\n );\n if (!resolved.ok) dynamicFailure(context, resolved.error);\n const root = sourceSubject(resolved.value.rootPackageId);\n if (root === undefined) {\n dynamicFailure(context, {\n code: 'pack-parent-has-no-parameters',\n expected: 'the instance parent chain to terminate at a ScriptablePack source',\n hint: 'point the instance at a ScriptablePack *.pack.ts source with parameters',\n detail: { packageId: PackageId.format(subject.packageId) },\n });\n }\n const loaded = await loadScriptablePack(root.sourcePath);\n if (!loaded.ok) dynamicFailure(context, loaded.error);\n if (PackageId.format(loaded.value.packageId) !== PackageId.format(root.packageId)) {\n dynamicFailure(context, {\n code: 'pack-source-revision-conflict',\n expected: 'the ScriptablePack parent packageId to remain fixed during production',\n hint: 'retry after source writes settle and rebuild the current generation',\n detail: {\n sourcePath: root.sourcePath,\n scannedPackageId: PackageId.format(root.packageId),\n loadedPackageId: PackageId.format(loaded.value.packageId),\n },\n });\n }\n const packageId = PackageId.format(subject.packageId);\n inputs.push({\n sourcePath: subject.sourcePath,\n displaySourcePath: packCatalogSourcePath(context, subject.sourcePath),\n definition: loaded.value,\n sourceClosure: root.sourceClosure,\n subjectPackageId: subject.packageId,\n values: resolved.value.values,\n publicationGeneration: context.generation,\n policy: {\n base: context.basePrefix === '' ? '/' : context.basePrefix,\n packagePath: `assets/${packageId}.pack.json`,\n artifactPath: scriptableArtifactPath,\n },\n });\n }\n if (inputs.length === 0) return [];\n\n const requiredGuids = context.inventory.entries.flatMap((entry) => {\n const parsed = AssetGuid.parse(entry.guid);\n if (!parsed.ok) dynamicFailure(context, parsed.error);\n return [parsed.value];\n });\n const externalOutputs = await declaredPackExternalOutputs(\n context.inventory.sourceDeclarations,\n context.cookers,\n requiredGuids,\n {\n importerRegistry: context.importerRegistry,\n fsForImport: context.fsForImport,\n },\n );\n const availableGuids = new Set(requiredGuids.map((guid) => AssetGuid.format(guid).toLowerCase()));\n const built = await produceScriptablePackProducts({\n sources: inputs,\n declaredExternalOutputs: externalOutputs,\n cookers: context.cookers,\n availableGuids,\n });\n if (!built.ok) dynamicFailure(context, built.error);\n\n const bundles: PackBuildBundle[] = [];\n for (const input of inputs) {\n const prepared = built.value.get(input.displaySourcePath);\n if (prepared === undefined) {\n dynamicFailure(context, {\n code: 'pack-build-failed',\n expected: 'the worklist to return one prepared result per source subject',\n hint: 'rerun Pack source generation from a clean inventory',\n detail: { sourcePath: input.sourcePath },\n });\n }\n const packageId = PackageId.format(input.subjectPackageId ?? input.definition.packageId);\n const stagedByGuid = new Map(\n prepared.product.stagedOutputs.map((output) => [\n AssetGuid.format(output.guid).toLowerCase(),\n output,\n ]),\n );\n const entries = projectPackageCatalog(\n prepared.product.product.assets.map((asset, sourceIndex) => {\n const staged = stagedByGuid.get(asset.guid.toLowerCase());\n return {\n guid: asset.guid,\n kind: asset.kind,\n sourcePath: input.displaySourcePath,\n sourceIndex,\n ...(staged?.sourceKey === undefined ? {} : { sourceKey: staged.sourceKey }),\n refs: asset.refs.map((reference) => reference.guid),\n execution: 'cooked' as const,\n packageId,\n provenance: { provider: 'pack-ts', version: '2.0.0' },\n };\n }),\n `${context.basePrefix === '/' ? '' : context.basePrefix}/${input.displaySourcePath}`,\n );\n bundles.push({ input, prepared, entries });\n }\n return bundles;\n}\n\nfunction updateImportedEntries(\n entries: PackIndexEntry[],\n guids: readonly string[],\n packageUrl: string,\n projection: Record<string, unknown> = {},\n refsByGuid?: ReadonlyMap<string, readonly string[]>,\n publication?: AssetPublicationEnvelope,\n sourcePath?: string,\n receiptUrls?: ReadonlyMap<string, string>,\n revision?: PackIndexEntry['revision'],\n): void {\n const selected = new Set(guids.map((guid) => guid.toLowerCase()));\n for (let index = 0; index < entries.length; index += 1) {\n const entry = entries[index];\n if (entry === undefined || !selected.has(entry.guid.toLowerCase())) continue;\n const refs = refsByGuid?.get(entry.guid.toLowerCase());\n const cookReceiptUrl = receiptUrls?.get(entry.guid.toLowerCase());\n entries[index] = {\n ...entry,\n packageUrl,\n ...projection,\n ...(sourcePath === undefined ? {} : { sourcePath }),\n ...(publication === undefined ? {} : { publication }),\n ...(refs === undefined ? {} : { refs }),\n ...(cookReceiptUrl === undefined ? {} : { cookReceiptUrl }),\n ...(revision === undefined ? {} : { revision }),\n };\n }\n}\n\ninterface BuildEmissionWork {\n readonly importedEntries: PackIndexEntry[];\n readonly context: BuildProductionOptions;\n}\n\ninterface PackEmissionOptions {\n readonly pack: unknown;\n readonly artifacts: readonly { readonly path: string; readonly bytes: Uint8Array }[];\n readonly packageName: string;\n readonly originalFileName: string;\n readonly guids: readonly string[];\n readonly projection?: Record<string, unknown>;\n readonly refsByGuid?: ReadonlyMap<string, readonly string[]>;\n readonly receipts?: readonly CookReceipt[];\n readonly receiptOutputDigest?: string;\n readonly publication?: AssetPublicationEnvelope;\n readonly sourcePath?: string;\n readonly revision?: PackIndexEntry['revision'];\n}\n\nasync function emitPackDocument(\n work: BuildEmissionWork,\n options: PackEmissionOptions,\n): Promise<string> {\n for (const artifact of options.artifacts) {\n work.context.sink.emitFile({\n type: 'asset',\n fileName: `assets/${artifact.path}`,\n source: artifact.bytes,\n });\n }\n const referenceId = work.context.sink.emitFile({\n type: 'asset',\n fileName: options.packageName.startsWith('assets/')\n ? options.packageName\n : `assets/${options.packageName}`,\n name: options.packageName,\n originalFileName: options.originalFileName,\n source: JSON.stringify(options.pack),\n });\n const packageUrl = work.context.sink.fileUrl(work.context.sink.getFileName(referenceId));\n const receiptUrls = new Map<string, string>();\n for (const receipt of options.receipts ?? []) {\n const guid = receipt.guid.toLowerCase();\n const receiptReferenceId = work.context.sink.emitFile({\n type: 'asset',\n fileName: `assets/${guid}.receipt.json`,\n name: `${guid}.receipt.json`,\n originalFileName: options.originalFileName,\n source: JSON.stringify({\n ...receipt,\n ...(receipt.outputDigest === undefined && options.receiptOutputDigest === undefined\n ? {}\n : { outputDigest: receipt.outputDigest ?? options.receiptOutputDigest }),\n }),\n });\n receiptUrls.set(\n guid,\n work.context.sink.fileUrl(work.context.sink.getFileName(receiptReferenceId)),\n );\n }\n updateImportedEntries(\n work.importedEntries,\n options.guids,\n packageUrl,\n options.projection,\n options.refsByGuid,\n options.publication,\n options.sourcePath,\n receiptUrls,\n options.revision,\n );\n return packageUrl;\n}\n\nasync function emitAuthoredPack(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n entry: PackIndexEntry,\n availableGuids: ReadonlySet<string>,\n): Promise<void> {\n const sourceDeclaration = sourceDeclarationForCatalogPath(\n entry.sourcePath,\n work.context.inventory.sourceDeclarations,\n work.context.fsForImport.sourceIdentityFor,\n work.context.cwd,\n );\n const packPath = sourceDeclaration?.sourcePath ?? resolve(work.context.cwd, entry.sourcePath);\n const declaration = sourceDeclaration?.declaration;\n if (declaration?.format !== 'pack.json') {\n throw work.context.fail({\n code: 'catalog-declaration-missing',\n expected: 'the inventory to retain the authored Pack declaration',\n hint: 'rerun Pack inventory before emitting the authored Pack',\n detail: { stage: 'scan', sourcePath: packPath },\n });\n }\n if (declaration.value.schemaVersion === '3.0.0') {\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok) dynamicFailure(work.context, parsed.error);\n if (parsed.value.format !== 'direct') {\n dynamicFailure(work.context, {\n code: 'catalog-declaration-missing',\n expected: 'a direct v3 Pack declaration for an indexed authored output',\n hint: 'instances are built from their ScriptablePack parent and do not have direct Catalog rows',\n detail: { stage: 'scan', sourcePath: packPath },\n });\n }\n const projected = projectDirectPackJson(parsed.value);\n if (!projected.ok) dynamicFailure(work.context, projected.error);\n const prepared = await prepareDirectPackTransport({\n projected: projected.value,\n sourcePath: packPath,\n sourceRevision: declaration.sourceRevision,\n availableGuids,\n cookers: work.context.cookers,\n policy: {\n base: work.context.basePrefix === '' ? '/' : work.context.basePrefix,\n packagePath: `assets/${projected.value.packageId}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}/${key}.bin`,\n sink: () => {},\n },\n });\n if (!prepared.ok) dynamicFailure(work.context, prepared.error);\n const { product, finalized, facts, revision } = prepared.value;\n const publication = runtimePublicationFor(work.context, {\n pack: finalized.pack,\n sourcePath: entry.sourcePath,\n sourceRevision: product.inputFingerprint,\n packageUrl: finalized.packageUrl,\n digest: finalized.digest,\n inputFingerprint: product.inputFingerprint,\n outputs: facts.outputs,\n externalEvidence: product.externalEvidence,\n });\n await emitPackDocument(work, {\n pack: publication.pack,\n artifacts: finalized.artifacts,\n packageName: `${prepared.value.projected.packageId}.pack.json`,\n originalFileName: packPath,\n guids: product.product.assets.map((asset) => asset.guid),\n projection: work.context.authoredCookedCurrentProjection,\n refsByGuid: facts.refs,\n receipts: product.product.receipts,\n receiptOutputDigest: finalized.digest,\n publication: publication.publication,\n sourcePath: entry.sourcePath,\n revision,\n });\n for (const asset of product.product.assets) guidSeen.add(asset.guid.toLowerCase());\n return;\n }\n // Legacy array-shaped documents are runtime Pack transport, not an\n // authoring input anymore. Preserve the explicit v2 native-cooker seam for\n // cooked transport while keeping source evaluation out of this path.\n const legacy = declaration.value as LegacyPackInventoryDocument;\n const prepared = await prepareLegacyPackTransport(\n legacy,\n work.context.cookers,\n (guid) => ({\n base: work.context.basePrefix === '' ? '/' : work.context.basePrefix,\n packagePath: `assets/${guid}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}/${key}.bin`,\n }),\n packPath,\n );\n const outputGuid = prepared.firstGuid ?? entry.guid;\n const authoredPack = prepared.finalized?.pack ?? {\n schemaVersion: '2.0.0' as const,\n kind: 'internal-text-package' as const,\n assets: legacy.assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: asset.artifacts ?? {},\n })),\n };\n const runtimePublication = runtimePublicationFor(work.context, {\n pack: authoredPack,\n sourcePath: entry.sourcePath,\n sourceRevision: declaration.sourceRevision,\n packageUrl:\n prepared.finalized?.packageUrl ??\n `${work.context.basePrefix === '/' ? '' : work.context.basePrefix}/assets/${outputGuid}.pack.json`,\n ...(prepared.finalized?.digest === undefined ? {} : { digest: prepared.finalized.digest }),\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: prepared.finalized?.artifacts ?? [],\n packageName: `${outputGuid}.pack.json`,\n originalFileName: packPath,\n guids: authoredPack.assets.map((asset) => asset.guid),\n projection:\n prepared.finalized === undefined\n ? work.context.directCurrentProjection\n : work.context.authoredCookedCurrentProjection,\n refsByGuid: new Map(authoredPack.assets.map((asset) => [asset.guid.toLowerCase(), asset.refs])),\n ...(prepared.finalized?.receipts === undefined\n ? {}\n : {\n receipts: prepared.finalized.receipts,\n receiptOutputDigest: prepared.finalized.digest,\n }),\n publication: runtimePublication.publication,\n sourcePath: entry.sourcePath,\n });\n for (const guid of authoredPack.assets.map((asset) => asset.guid)) {\n guidSeen.add(guid.toLowerCase());\n }\n}\n\nasync function emitScriptablePack(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n bundle: PackBuildBundle,\n): Promise<void> {\n const { input, prepared } = bundle;\n const packageId = PackageId.format(input.subjectPackageId ?? input.definition.packageId);\n const runtimePublication = createRuntimePackPublication({\n pack: { assets: prepared.finalized.pack.assets },\n scopeId: work.context.runtimeBinding?.scopeId ?? 'asset-runtime',\n sourcePath: input.displaySourcePath,\n sourceRevision: prepared.product.inputFingerprint,\n packageUrl: prepared.finalized.packageUrl,\n inputFingerprint: prepared.product.inputFingerprint,\n digest: prepared.finalized.digest,\n generation: work.context.runtimeBinding?.generation ?? prepared.publication.generation,\n outputs: prepared.facts.outputs,\n externalEvidence: prepared.product.externalEvidence,\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: prepared.finalized.artifacts,\n packageName: `${packageId}.pack.json`,\n originalFileName: input.sourcePath,\n guids: prepared.product.product.assets.map((asset) => asset.guid),\n projection: work.context.authoredCookedCurrentProjection,\n refsByGuid: prepared.facts.refs,\n receipts: prepared.product.product.receipts,\n receiptOutputDigest: prepared.finalized.digest,\n publication: runtimePublication.publication,\n sourcePath: input.displaySourcePath,\n revision: prepared.revision,\n });\n for (const asset of prepared.product.product.assets) guidSeen.add(asset.guid.toLowerCase());\n}\n\nasync function emitFinalizedOwner(\n work: BuildEmissionWork,\n metaPath: string,\n sourcePath: string,\n subAssets: readonly { readonly guid: string }[],\n sourcePackage: Extract<\n Awaited<ReturnType<typeof produceSourcePackage>>,\n { readonly ok: true }\n >['value'],\n ownerFinalizer: NonNullable<Importer['finalize']>,\n): Promise<void> {\n const ownerGuid = subAssets[0]?.guid;\n if (ownerGuid === undefined) return;\n const artifactPaths = new Map<string, string>();\n const sourceAsset = sourcePackage.product.assets[0];\n for (const [path, artifact] of Object.entries(sourceAsset?.artifacts ?? {})) {\n const ref = work.context.sink.emitFile({\n type: 'asset',\n name: path,\n originalFileName: path,\n source: artifact.bytes,\n });\n artifactPaths.set(path, work.context.sink.getFileName(ref));\n }\n const ownerProduct = finalizeSourcePackage(sourcePackage.product, ownerFinalizer, (artifact) =>\n work.context.sink.fileUrl(artifactPaths.get(artifact.path) ?? artifact.path),\n );\n if (!ownerProduct.ok) throw work.context.fail(ownerProduct.error);\n const ownerPackage = await finalizePackageTransportSource(\n projectImportProductForBuild(ownerProduct.value),\n {\n base: work.context.basePrefix,\n packagePath: `assets/${ownerGuid}.pack.json`,\n artifactPath: (_guid, key) => {\n const emittedPath = artifactPaths.get(key);\n if (emittedPath === undefined) {\n throw work.context.fail({\n code: 'producer-artifact-missing',\n expected: `producer artifact ${key} to be emitted before Pack finalization`,\n hint: 'repair the importer finalizer artifact closure and rebuild',\n detail: { stage: 'finalize', metaPath, artifact: key },\n });\n }\n return emittedPath.replace(/^assets\\//, '');\n },\n sink: () => {},\n },\n );\n const runtimePublication = runtimePublicationFor(work.context, {\n pack: { assets: ownerPackage.pack.assets },\n // The Catalog entry identifies the imported source, while metaPath is the\n // sidecar declaration that drove the import. Keep publication fences on\n // the Catalog identity in production just as the dev importer does.\n sourcePath,\n sourceRevision: ownerPackage.sourceRevision,\n packageUrl: ownerPackage.packageUrl,\n digest: ownerPackage.digest,\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: ownerPackage.artifacts,\n packageName: `${ownerGuid}.pack.json`,\n originalFileName: metaPath,\n guids: subAssets.map((sub) => sub.guid),\n projection: work.context.cookedCurrentProjection,\n refsByGuid: new Map(\n ownerProduct.value.assets.map((asset) => [\n asset.guid.toLowerCase(),\n asset.refs.map((ref) => ref.guid),\n ]),\n ),\n publication: runtimePublication.publication,\n sourcePath,\n });\n}\n\nasync function emitBuildEntry(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n entry: PackIndexEntry,\n availableGuids: ReadonlySet<string>,\n): Promise<void> {\n const guid = entry.guid.toLowerCase();\n const metaPath = metaPathForGuid(work.context.inventory.declarations, guid);\n if (metaPath === undefined) {\n if (entry.sourcePath.endsWith('.pack.json'))\n await emitAuthoredPack(work, guidSeen, entry, availableGuids);\n else guidSeen.add(guid);\n return;\n }\n const declaration = work.context.inventory.declarations.get(metaPath);\n if (declaration === undefined) {\n throw work.context.fail({\n code: 'catalog-declaration-missing',\n expected: 'every indexed Meta path to have one validated producer declaration',\n hint: 'rerun the inventory and repair the Catalog declaration index',\n detail: { metaPath },\n });\n }\n const runMeta = { ...declaration, buildPack: false };\n const subAssets = runMeta.subAssets;\n for (const sub of subAssets) guidSeen.add(sub.guid.toLowerCase());\n const sourcePackage = await produceSourcePackage({\n meta: runMeta,\n registry: work.context.importerRegistry,\n fs: work.context.fsForImport,\n });\n if (!sourcePackage.ok) throw work.context.fail(sourcePackage.error);\n const ownerFinalizer = work.context.importerRegistry.get(runMeta.importer)?.finalize;\n if (ownerFinalizer !== undefined) {\n await emitFinalizedOwner(\n work,\n metaPath,\n canonicalScriptableSourcePath(entry.sourcePath),\n subAssets,\n sourcePackage.value,\n ownerFinalizer,\n );\n return;\n }\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(sourcePackage.value.product),\n {\n base: work.context.basePrefix,\n packagePath: `assets/${subAssets[0]?.guid ?? 'pack'}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}-${key}.bin`,\n sink: () => {},\n },\n );\n const productByGuid = sourcePackageAssetsByGuid(sourcePackage.value);\n const canonicalSourcePath = canonicalScriptableSourcePath(entry.sourcePath);\n const runtimePublication = runtimePublicationFor(work.context, {\n pack: { assets: finalized.pack.assets },\n // See emitFinalizedOwner: the sidecar path is an import driver, not the\n // stable source identity carried by the Catalog row.\n sourcePath: canonicalSourcePath,\n sourceRevision: finalized.sourceRevision,\n packageUrl: finalized.packageUrl,\n digest: finalized.digest,\n sourceKeys: sourceKeysFor(subAssets),\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: finalized.artifacts,\n packageName: `${subAssets[0]?.guid ?? 'pack'}.pack.json`,\n originalFileName: metaPath,\n guids: subAssets.map((sub) => sub.guid),\n projection: work.context.cookedCurrentProjection,\n refsByGuid: new Map(\n [...productByGuid].map(([guid, asset]) => [guid, asset.refs.map((ref) => ref.guid)]),\n ),\n publication: runtimePublication.publication,\n sourcePath: canonicalSourcePath,\n });\n}\n\nexport async function produceBuildAssets(\n context: BuildProductionOptions,\n): Promise<PackIndexEntry[]> {\n const dynamicBundles = await buildPackSources(context);\n const entries = [\n ...context.inventory.entries,\n ...dynamicBundles.flatMap((bundle) => bundle.entries),\n ];\n const availableGuids = new Set(entries.map((entry) => entry.guid.toLowerCase()));\n const importedEntries = [...entries];\n const guidSeen = new Set<string>();\n const work: BuildEmissionWork = { importedEntries, context };\n for (const bundle of dynamicBundles) {\n await emitScriptablePack(work, guidSeen, bundle);\n }\n for (const entry of importedEntries) {\n if (!guidSeen.has(entry.guid.toLowerCase()))\n await emitBuildEntry(work, guidSeen, entry, availableGuids);\n }\n return importedEntries;\n}\n","import type { CatalogImporterPolicy } from '@forgeax/engine-pack/build';\nimport { SHADER_RESERVED_IMPORTER_KEY } from './import-runner.js';\n\nexport type { CatalogImporterPolicy } from '@forgeax/engine-pack/build';\n\n/** Provider keys whose external declarations have a standard Catalog route. */\nexport const DEFAULT_CATALOG_IMPORTER_KEYS = [\n 'image',\n 'gltf',\n 'fbx',\n 'audio',\n 'font',\n 'ui',\n] as const;\n\nexport type CatalogImporterDisposition = 'publish' | 'exclude' | 'missing';\n\n/**\n * Resolve Catalog visibility from provider registration, not from a Vite\n * adapter's importer list. The shader transform is deliberately excluded;\n * every other provider must either be a standard provider or be registered by\n * the host before its declarations can become authoritative.\n */\nexport function catalogImporterPolicy(\n importer: string,\n hostImporterKeys: ReadonlySet<string>,\n): CatalogImporterPolicy {\n if (importer === SHADER_RESERVED_IMPORTER_KEY) {\n return {\n disposition: 'exclude',\n hostProvided: false,\n expected: 'the provider must publish cooked runtime output before Catalog projection',\n hint: 'remove the source declaration from Pack roots or publish its cooked runtime module',\n };\n }\n if ((DEFAULT_CATALOG_IMPORTER_KEYS as readonly string[]).includes(importer)) {\n return {\n disposition: 'publish',\n hostProvided: false,\n expected: 'a standard Catalog provider declaration',\n hint: 'let the provider producer materialize the declared output',\n };\n }\n if (hostImporterKeys.has(importer)) {\n return {\n disposition: 'publish',\n hostProvided: true,\n expected: 'a registered host Catalog provider declaration',\n hint: 'let the registered provider materialize the declared output',\n };\n }\n return {\n disposition: 'missing',\n hostProvided: false,\n expected: 'the sidecar importer must be present in the registered provider set',\n hint: 'wire the provider through the host importer registry before building the Catalog',\n };\n}\n","import {\n buildCatalogProjection,\n type CatalogBuildProjectionOptions,\n type CatalogBuildResult,\n type CatalogProducerVisibility,\n} from '@forgeax/engine-pack/build';\nimport type { ScanOptions } from '@forgeax/engine-pack/scanner';\nimport { catalogImporterPolicy } from './catalog-importer-policy.js';\n\nexport async function buildCatalogResult(\n roots: readonly string[],\n base = '/',\n registeredImporterKeys: ReadonlySet<string> = new Set(),\n scanOptions: ScanOptions = {},\n catalogVisibility: CatalogProducerVisibility = () => true,\n sourceIdentityFor?: (sourcePath: string) => string,\n): Promise<CatalogBuildResult> {\n const options: CatalogBuildProjectionOptions = {\n base,\n scanOptions,\n importerPolicy: (importer) => catalogImporterPolicy(importer, registeredImporterKeys),\n visibility: catalogVisibility,\n ...(sourceIdentityFor === undefined ? {} : { sourceIdentityFor }),\n };\n return buildCatalogProjection(roots, options);\n}\n","import type { Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\n\nexport interface Lm63TypeC {\n readonly tilt: 'NONE';\n readonly verticalAnglesDeg: readonly number[];\n readonly horizontalAnglesDeg: readonly number[];\n readonly candela: readonly number[];\n}\n\nexport interface Lm63ParseError {\n readonly code: 'invalid-ies' | 'unsupported-tilt' | 'unsupported-photometric-type';\n readonly reason: string;\n}\n\nfunction numericTokens(source: string, startLine: number): number[] {\n return source\n .split(/\\r?\\n/)\n .slice(startLine)\n .join(' ')\n .replaceAll(',', ' ')\n .split(/\\s+/)\n .filter((token) => token.length > 0)\n .map(Number);\n}\n\nfunction allFinite(values: readonly number[]): boolean {\n return values.every(Number.isFinite);\n}\n\nexport function parseLm63TypeC(source: string): Result<Lm63TypeC, Lm63ParseError> {\n const lines = source.split(/\\r?\\n/);\n const tiltLine = lines.findIndex((line) => /^\\s*TILT\\s*=/i.test(line));\n if (tiltLine < 0) return err({ code: 'invalid-ies', reason: 'missing TILT declaration' });\n const tiltSource = lines[tiltLine];\n if (tiltSource === undefined)\n return err({ code: 'invalid-ies', reason: 'missing TILT declaration' });\n const tilt = tiltSource\n .slice(tiltSource.indexOf('=') + 1)\n .trim()\n .toUpperCase();\n if (tilt !== 'NONE') return err({ code: 'unsupported-tilt', reason: `TILT=${tilt}` });\n\n const values = numericTokens(source, tiltLine + 1);\n if (values.length < 12 || !allFinite(values.slice(0, 12))) {\n return err({ code: 'invalid-ies', reason: 'numeric header is incomplete or non-finite' });\n }\n const verticalCount = values[3];\n const horizontalCount = values[4];\n const photometricType = values[5];\n if (\n verticalCount === undefined ||\n horizontalCount === undefined ||\n photometricType === undefined\n ) {\n return err({ code: 'invalid-ies', reason: 'numeric header is incomplete or non-finite' });\n }\n if (photometricType !== 1) {\n return err({\n code: 'unsupported-photometric-type',\n reason: `photometric type ${photometricType} is not Type C`,\n });\n }\n if (\n !Number.isInteger(verticalCount) ||\n !Number.isInteger(horizontalCount) ||\n verticalCount < 2 ||\n horizontalCount < 1\n ) {\n return err({ code: 'invalid-ies', reason: 'angle counts are invalid' });\n }\n\n const angleOffset = 12;\n const verticalEnd = angleOffset + verticalCount;\n const horizontalEnd = verticalEnd + horizontalCount;\n const candelaEnd = horizontalEnd + verticalCount * horizontalCount;\n if (values.length < candelaEnd) {\n return err({ code: 'invalid-ies', reason: 'angle or candela table is incomplete' });\n }\n const verticalAnglesDeg = values.slice(angleOffset, verticalEnd);\n const horizontalAnglesDeg = values.slice(verticalEnd, horizontalEnd);\n const candelaMultiplier = values[2];\n if (candelaMultiplier === undefined) {\n return err({ code: 'invalid-ies', reason: 'numeric header is incomplete or non-finite' });\n }\n const candela = values.slice(horizontalEnd, candelaEnd).map((value) => value * candelaMultiplier);\n if (\n !allFinite(verticalAnglesDeg) ||\n !allFinite(horizontalAnglesDeg) ||\n !allFinite(candela) ||\n verticalAnglesDeg[0] !== 0 ||\n verticalAnglesDeg[verticalAnglesDeg.length - 1] !== 180 ||\n horizontalAnglesDeg[0] !== 0\n ) {\n return err({ code: 'invalid-ies', reason: 'Type C angles or candela values are invalid' });\n }\n return ok({ tilt: 'NONE', verticalAnglesDeg, horizontalAnglesDeg, candela });\n}\n","import { IES_PROFILE_HEIGHT, IES_PROFILE_WIDTH, type IesProfileAsset } from '@forgeax/engine-types';\nimport type { Lm63TypeC } from './parse-lm63.js';\n\nfunction horizontalTable(source: Lm63TypeC): { angles: number[]; values: number[] } {\n const angles = [...source.horizontalAnglesDeg];\n const values = [...source.candela];\n const verticalCount = source.verticalAnglesDeg.length;\n const lastAngle = angles.at(-1);\n if (lastAngle === undefined) return { angles, values };\n if (lastAngle < 360) {\n for (let index = angles.length - 2; index > 0; index--) {\n const angle = angles[index];\n if (angle === undefined) continue;\n angles.push(360 - angle);\n const row = source.horizontalAnglesDeg.length - 1 - index;\n values.push(\n ...source.candela.slice(row * verticalCount, row * verticalCount + verticalCount),\n );\n }\n }\n return { angles, values };\n}\n\nfunction interpolate(\n values: readonly number[],\n angles: readonly number[],\n angle: number,\n verticalIndex: number,\n verticalCount: number,\n): number {\n const wrapped = ((angle % 360) + 360) % 360;\n const last = angles.length - 1;\n const finalAngle = angles[last];\n const firstAngle = angles[0];\n if (finalAngle === undefined || firstAngle === undefined) return Number.NaN;\n for (let index = 0; index < last; index++) {\n const left = angles[index];\n const right = angles[index + 1];\n if (left === undefined || right === undefined) continue;\n if (wrapped < left || wrapped > right) continue;\n const span = right - left;\n const factor = span === 0 ? 0 : (wrapped - left) / span;\n const a = values[index * verticalCount + verticalIndex] ?? 0;\n const b = values[(index + 1) * verticalCount + verticalIndex] ?? 0;\n return a + (b - a) * factor;\n }\n const first = values[verticalIndex] ?? 0;\n const finalRow = (angles.length - 1) * verticalCount + verticalIndex;\n const final = values[finalRow] ?? 0;\n const span = 360 - finalAngle + firstAngle;\n const factor = span === 0 ? 0 : (wrapped - finalAngle + 360) / span;\n return final + (first - final) * factor;\n}\n\nfunction toFloat16(value: number): number {\n if (value === 0) return 0;\n const sign = value < 0 ? 0x8000 : 0;\n const absolute = Math.abs(value);\n if (!Number.isFinite(absolute)) return sign | 0x7c00;\n const exponent = Math.floor(Math.log2(absolute));\n if (exponent < -14) return sign | Math.round(absolute / 2 ** -24);\n if (exponent > 15) return sign | 0x7c00;\n const mantissa = Math.round((absolute / 2 ** exponent - 1) * 1024);\n return sign | ((exponent + 15) << 10) | Math.min(mantissa, 1023);\n}\n\nexport function readFloat16LE(bytes: Uint8Array, offset: number): number {\n const bits = (bytes[offset] ?? 0) | ((bytes[offset + 1] ?? 0) << 8);\n const sign = (bits & 0x8000) === 0 ? 1 : -1;\n const exponent = (bits >>> 10) & 0x1f;\n const fraction = bits & 0x03ff;\n if (exponent === 0) return sign * 2 ** -14 * (fraction / 2 ** 10);\n if (exponent === 0x1f) return fraction === 0 ? sign * Infinity : Number.NaN;\n return sign * 2 ** (exponent - 15) * (1 + fraction / 2 ** 10);\n}\n\nexport function resampleTypeC(source: Lm63TypeC): Uint8Array {\n const table = horizontalTable(source);\n const verticalCount = source.verticalAnglesDeg.length;\n const output = new Uint8Array(IES_PROFILE_WIDTH * IES_PROFILE_HEIGHT * 2);\n let peak = 0;\n const samples: number[] = [];\n for (let y = 0; y < IES_PROFILE_HEIGHT; y++) {\n const vertical = (y / (IES_PROFILE_HEIGHT - 1)) * 180;\n let lower = 0;\n while (lower + 1 < verticalCount && (source.verticalAnglesDeg[lower + 1] ?? 0) < vertical)\n lower++;\n const upper = Math.min(lower + 1, verticalCount - 1);\n const left = source.verticalAnglesDeg[lower] ?? 0;\n const right = source.verticalAnglesDeg[upper] ?? 0;\n const factor = right === left ? 0 : (vertical - left) / (right - left);\n for (let x = 0; x < IES_PROFILE_WIDTH; x++) {\n const horizontal = (x / IES_PROFILE_WIDTH) * 360;\n const low = interpolate(table.values, table.angles, horizontal, lower, verticalCount);\n const high = interpolate(table.values, table.angles, horizontal, upper, verticalCount);\n const value = low + (high - low) * factor;\n samples.push(Math.max(0, value));\n peak = Math.max(peak, value);\n }\n }\n const divisor = peak > 0 ? peak : 1;\n for (let index = 0; index < samples.length; index++) {\n const bits = toFloat16((samples[index] ?? 0) / divisor);\n output[index * 2] = bits & 0xff;\n output[index * 2 + 1] = bits >>> 8;\n }\n return output satisfies IesProfileAsset['data'];\n}\n","import type {\n IesProfileAsset,\n ImportContext,\n Importer,\n ImportResult,\n Result,\n} from '@forgeax/engine-types';\nimport {\n err,\n IES_PROFILE_BYTE_LENGTH,\n IES_PROFILE_HEIGHT,\n IES_PROFILE_WIDTH,\n IMPORT_ERROR_HINTS,\n ImportError,\n ok,\n} from '@forgeax/engine-types';\nimport { parseLm63TypeC } from './parse-lm63.js';\nimport { resampleTypeC } from './resample-type-c.js';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction decodeFloat16(bytes: Uint8Array, offset: number): number {\n const bits = (bytes[offset] ?? 0) | ((bytes[offset + 1] ?? 0) << 8);\n const sign = (bits & 0x8000) === 0 ? 1 : -1;\n const exponent = (bits >>> 10) & 0x1f;\n const fraction = bits & 0x03ff;\n if (exponent === 0) return sign * 2 ** -14 * (fraction / 2 ** 10);\n if (exponent === 0x1f) return fraction === 0 ? sign * Infinity : Number.NaN;\n return sign * 2 ** (exponent - 15) * (1 + fraction / 2 ** 10);\n}\n\nexport function validateIesProfilePayload(value: unknown): Result<IesProfileAsset, Error> {\n if (!isRecord(value) || value.kind !== 'ies-profile') {\n return err(new Error('IES payload kind must be ies-profile'));\n }\n const data = value.data;\n if (!(data instanceof Uint8Array) || data.byteLength !== IES_PROFILE_BYTE_LENGTH) {\n return err(\n new Error(\n `IES payload must contain ${IES_PROFILE_WIDTH}x${IES_PROFILE_HEIGHT} little-endian f16 samples`,\n ),\n );\n }\n for (let offset = 0; offset < data.byteLength; offset += 2) {\n if (!Number.isFinite(decodeFloat16(data, offset))) {\n return err(new Error('IES payload contains a non-finite f16 sample'));\n }\n }\n return ok(value as unknown as IesProfileAsset);\n}\n\nfunction sourceValidationError(ctx: ImportContext, reason: string): ImportError {\n return new ImportError({\n code: 'source-validation-failed',\n expected: 'LM-63 Type C source with TILT=NONE',\n hint: IMPORT_ERROR_HINTS['source-validation-failed'],\n detail: {\n diagnostics: [\n {\n code: 'ies-source-invalid',\n severity: 'error',\n sourcePath: ctx.source,\n sourceRange: { start: 0, end: 0, line: 1, column: 1 },\n rule: 'LM-63 Type C TILT=NONE',\n expected: 'LM-63 Type C source with TILT=NONE',\n actual: reason,\n hint: 'repair the IES source and rerun the build-time importer',\n },\n ],\n },\n });\n}\n\nasync function importIes(ctx: ImportContext): Promise<ImportResult> {\n const source = await ctx.readSource();\n if (!source.ok) {\n return {\n ok: false,\n error: new ImportError({\n code: 'source-read-failed',\n expected: `readable IES source at ${ctx.source}`,\n hint: IMPORT_ERROR_HINTS['source-read-failed'],\n detail: { source: ctx.source, reason: String(source.error) },\n }),\n };\n }\n const parsed = parseLm63TypeC(new TextDecoder().decode(source.value));\n if (!parsed.ok) return { ok: false, error: sourceValidationError(ctx, parsed.error.reason) };\n const declaration = ctx.subAssets.find((asset) => asset.kind === 'ies-profile');\n if (declaration === undefined) {\n return {\n ok: false,\n error: sourceValidationError(ctx, 'missing ies-profile sub-asset declaration'),\n };\n }\n const data = resampleTypeC(parsed.value);\n const payload: IesProfileAsset = { kind: 'ies-profile', data };\n return {\n ok: true,\n value: {\n assets: [\n {\n guid: declaration.guid,\n kind: 'ies-profile',\n payload,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'application/octet-stream',\n assetCodec: { name: 'forgeax-ies-profile', version: '1' },\n bytes: data,\n },\n },\n },\n ],\n sourceDependencies: [ctx.source],\n },\n };\n}\n\nexport const iesImporter: Importer = {\n key: 'ies',\n import: importIes,\n};\n","// @forgeax/engine-import - ImporterRegistry (feat-20260603-asset-import-loader-injection M2 / w14).\n//\n// The build-time twin of the runtime LoaderRegistry\n// (packages/runtime/src/loader-registry.ts): an injectable table that maps a\n// `meta.importer` string key -> an `Importer` (the contract SSOT lives in\n// `@forgeax/engine-types`). The import runner holds one of these and dispatches\n// on `meta.importer` through `get(key)` instead of a hardcoded\n// `if (importer === ...)` chain (plan-strategy D-1).\n//\n// Shape mirrors the runtime LoaderRegistry + Console `Registry`\n// (packages/console/src/registry.ts) register/lookup pattern (research\n// Finding 8). The injected unit is an **object** `{ key, import }`, not a bare\n// function, so a \"one importer key -> one Importer\" dispatch table is the\n// natural shape.\n//\n// Fail-fast semantics (charter P3): `register` throws on a malformed importer\n// (empty key or non-function `import`) at wire time, so a misconfigured host\n// surfaces immediately rather than at the first import run. `register` is\n// idempotent on a repeated key (last write wins, no throw) so re-wiring a\n// registry across build invocations is safe.\n\nimport type { Importer, ImporterCapabilities, ImportSubAsset } from '@forgeax/engine-types';\n\n/**\n * Injectable `meta.importer` -> {@link Importer} table held by the import\n * runner.\n *\n * @example Wire + dispatch (build tooling side)\n * ```ts\n * import { ImporterRegistry } from '@forgeax/engine-import';\n * import { gltfImporter } from '@forgeax/engine-gltf';\n * const importers = new ImporterRegistry();\n * importers.register(gltfImporter);\n * const gltf = importers.get('gltf'); // Importer | undefined\n * ```\n */\nexport class ImporterRegistry {\n private readonly importers = new Map<string, Importer>();\n\n /**\n * Register an importer for its `importer.key`. Fail-fast on a malformed\n * importer (charter P3); idempotent on a repeated key (last write wins).\n *\n * @param importer the `{ key, import }` object to register.\n * @throws TypeError when `importer.key` is empty or `importer.import` is not\n * a function - a wire-time misconfiguration the host must fix.\n */\n register(importer: Importer): void {\n if (typeof importer.key !== 'string' || importer.key.length === 0) {\n throw new TypeError(\n `ImporterRegistry.register: importer.key must be a non-empty string (got ${JSON.stringify(importer.key)})`,\n );\n }\n if (typeof importer.import !== 'function') {\n throw new TypeError(\n `ImporterRegistry.register: importer.import must be a function for key \"${importer.key}\"`,\n );\n }\n this.importers.set(importer.key, importer);\n }\n\n /**\n * Look up the importer registered for `key`. Returns `undefined` when no\n * importer is wired - the import runner maps that to a structured\n * `ImportError(code='importer-not-registered')` with the registered keys in\n * `.detail.registeredImporters` (charter P3).\n */\n get(key: string): Importer | undefined {\n return this.importers.get(key);\n }\n\n /**\n * The importer keys currently wired, in insertion order. Fed into the\n * `importer-not-registered` error `.detail.registeredImporters` so AI users\n * see exactly what is injectable.\n */\n registeredImporters(): readonly string[] {\n return [...this.importers.keys()];\n }\n\n /** Project the first registered producer capability into the runner context. */\n contextCapabilities(): ImporterCapabilities {\n for (const importer of this.importers.values()) {\n const decoder = importer.capabilities?.decodeImage;\n if (decoder !== undefined) return { decodeImage: decoder };\n }\n return {};\n }\n\n /** Ask the registered producer whether a declaration has a Catalog product. */\n shouldPublishCatalog(input: {\n readonly importer: string;\n readonly importSettings: Readonly<Record<string, unknown>>;\n readonly subAssets: readonly ImportSubAsset[];\n }): boolean {\n return (\n this.get(input.importer)?.capabilities?.catalog?.publish?.({\n importSettings: input.importSettings,\n subAssets: input.subAssets,\n }) ?? true\n );\n }\n}\n","import { createHash } from 'node:crypto';\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { isScriptablePackAssetKind, validatePack } from '@forgeax/engine-pack';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { Asset, AssetGuid as AssetGuidType, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport type {\n ScriptablePackAssetSnapshot,\n ScriptablePackAssetSnapshotSource,\n} from './scriptable-pack.js';\n\nexport interface ScriptablePackFileAssetSnapshotSourceOptions {\n readonly assetRoots: readonly string[];\n}\n\nexport type ScriptablePackFileAssetSnapshotError =\n | {\n readonly code: 'scriptable-pack-file-root-unreadable';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly root: string; readonly reason: string };\n }\n | {\n readonly code: 'scriptable-pack-file-unreadable';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly path: string; readonly reason: string };\n }\n | {\n readonly code: 'scriptable-pack-file-json-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly path: string; readonly reason: string };\n }\n | {\n readonly code: 'scriptable-pack-file-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly path: string;\n readonly ajvErrors: readonly { readonly instancePath: string; readonly message: string }[];\n };\n }\n | {\n readonly code: 'scriptable-pack-file-guid-collision';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly guid: string; readonly paths: readonly [string, string] };\n }\n | {\n readonly code: 'scriptable-pack-file-asset-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly path: string; readonly guid: string; readonly reason: string };\n }\n | {\n readonly code: 'asset-not-found';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly guid: string };\n };\n\ninterface PackAssetRow {\n readonly guid: string;\n readonly kind: string;\n readonly payload: unknown;\n readonly refs: readonly string[];\n readonly [key: string]: unknown;\n}\n\ninterface PackDocument {\n readonly assets: readonly PackAssetRow[];\n readonly [key: string]: unknown;\n}\n\ninterface IndexedAsset {\n readonly asset: Asset;\n readonly digest: string;\n}\n\ninterface SnapshotIndex {\n readonly generation: number;\n readonly assets: ReadonlyMap<string, IndexedAsset>;\n}\n\ntype SnapshotResult<T> = Result<T, ScriptablePackFileAssetSnapshotError>;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction stable(value: unknown): string {\n if (value instanceof ArrayBuffer) {\n return `ArrayBuffer:${JSON.stringify(Array.from(new Uint8Array(value)))}`;\n }\n if (ArrayBuffer.isView(value)) {\n return `${value.constructor.name}:${JSON.stringify(\n Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)),\n )}`;\n }\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(record[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nfunction digest(value: unknown): string {\n return `sha256:${createHash('sha256').update(stable(value)).digest('hex')}`;\n}\n\nfunction generationFromDigest(value: string): number {\n const parsed = Number.parseInt(value.slice('sha256:'.length, 'sha256:'.length + 8), 16);\n return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : 1;\n}\n\nfunction reasonOf(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nasync function collectPackFiles(\n assetRoots: readonly string[],\n): Promise<SnapshotResult<readonly string[]>> {\n const files = new Set<string>();\n\n async function visit(directory: string): Promise<SnapshotResult<void>> {\n let entries: import('node:fs').Dirent[];\n try {\n entries = (await readdir(directory, { withFileTypes: true })) as import('node:fs').Dirent[];\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-root-unreadable',\n expected: 'every configured ScriptablePack asset root to be readable',\n hint: 'restore the asset root or configure a readable directory, then retry the ScriptablePack build',\n detail: { root: directory, reason: reasonOf(error) },\n });\n }\n\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n const child = resolve(directory, entry.name);\n if (entry.isDirectory()) {\n const nested = await visit(child);\n if (!nested.ok) return nested;\n } else if (entry.isFile() && entry.name.endsWith('.pack.json')) {\n files.add(child);\n }\n }\n return ok(undefined);\n }\n\n for (const rawRoot of [...new Set(assetRoots.map((root) => resolve(root)))].sort((a, b) =>\n a.localeCompare(b),\n )) {\n let info: import('node:fs').Stats;\n try {\n info = await stat(rawRoot);\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-root-unreadable',\n expected: 'every configured ScriptablePack asset root to exist and be readable',\n hint: 'restore the asset root or configure a readable directory, then retry the ScriptablePack build',\n detail: { root: rawRoot, reason: reasonOf(error) },\n });\n }\n if (info.isFile()) {\n if (rawRoot.endsWith('.pack.json')) files.add(rawRoot);\n continue;\n }\n if (!info.isDirectory()) {\n return err({\n code: 'scriptable-pack-file-root-unreadable',\n expected: 'every configured ScriptablePack asset root to be a file or directory',\n hint: 'configure an asset root containing ordinary .pack.json files, then retry the ScriptablePack build',\n detail: { root: rawRoot, reason: 'root is neither a file nor a directory' },\n });\n }\n const visited = await visit(rawRoot);\n if (!visited.ok) return visited;\n }\n\n return ok([...files].sort((left, right) => left.localeCompare(right)));\n}\n\nfunction invalidPack(\n path: string,\n errors: readonly { readonly instancePath: string; readonly message: string }[],\n): ScriptablePackFileAssetSnapshotError {\n return {\n code: 'scriptable-pack-file-invalid',\n expected: 'a schema-valid ordinary .pack.json package',\n hint: 'repair the Pack JSON against the package schema, then retry the ScriptablePack build',\n detail: { path, ajvErrors: errors },\n };\n}\n\nfunction assetFromRow(\n path: string,\n row: PackAssetRow,\n): SnapshotResult<{ readonly asset: Asset; readonly digest: string }> {\n if (!isScriptablePackAssetKind(row.kind)) {\n return err({\n code: 'scriptable-pack-file-asset-invalid',\n expected: 'an ordinary ScriptablePack Asset kind from SCRIPTABLE_PACK_ASSET_KINDS',\n hint: 'use an ordinary engine Asset kind or keep the custom payload outside this Asset snapshot source',\n detail: { path, guid: row.guid, reason: `unsupported kind ${JSON.stringify(row.kind)}` },\n });\n }\n if (!isRecord(row.payload)) {\n return err({\n code: 'scriptable-pack-file-asset-invalid',\n expected: 'the Pack row payload to be a JSON object',\n hint: 'write a complete ordinary Asset payload in the .pack.json row, then retry the ScriptablePack build',\n detail: { path, guid: row.guid, reason: 'payload is not an object' },\n });\n }\n const payloadKind = row.payload.kind;\n if (payloadKind !== undefined && payloadKind !== row.kind) {\n return err({\n code: 'scriptable-pack-file-asset-invalid',\n expected: 'the row kind and payload.kind to agree',\n hint: 'repair the duplicated kind discriminant in the .pack.json row, then retry the ScriptablePack build',\n detail: {\n path,\n guid: row.guid,\n reason: `row kind ${JSON.stringify(row.kind)} does not match payload.kind ${JSON.stringify(payloadKind)}`,\n },\n });\n }\n const asset = { ...row.payload, kind: row.kind } as Asset;\n return ok({ asset, digest: digest(asset) });\n}\n\nasync function indexPackFiles(\n assetRoots: readonly string[],\n): Promise<SnapshotResult<SnapshotIndex>> {\n const files = await collectPackFiles(assetRoots);\n if (!files.ok) return files;\n\n const byGuid = new Map<string, IndexedAsset>();\n const pathsByGuid = new Map<string, string>();\n const documents: PackDocument[] = [];\n\n for (const path of files.value) {\n let body: string;\n try {\n body = await readFile(path, 'utf8');\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-unreadable',\n expected: 'a readable .pack.json file',\n hint: 'restore the .pack.json file, then retry the ScriptablePack build',\n detail: { path, reason: reasonOf(error) },\n });\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(body) as unknown;\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-json-invalid',\n expected: 'a parseable JSON .pack.json file',\n hint: 'repair or restore the .pack.json file, then retry the ScriptablePack build',\n detail: { path, reason: reasonOf(error) },\n });\n }\n\n if (!validatePack(parsed)) {\n return err(\n invalidPack(\n path,\n (validatePack.errors ?? []).map((error) => ({\n instancePath: error.instancePath,\n message: error.message ?? 'unknown schema validation error',\n })),\n ),\n );\n }\n\n const document = parsed as PackDocument;\n documents.push(document);\n for (const row of document.assets) {\n const existingPath = pathsByGuid.get(row.guid.toLowerCase());\n if (existingPath !== undefined) {\n return err({\n code: 'scriptable-pack-file-guid-collision',\n expected: 'each ordinary Pack asset GUID to be declared by exactly one .pack.json file',\n hint: 'remove the duplicate GUID declaration or keep one authoritative .pack.json package, then retry',\n detail: { guid: row.guid.toLowerCase(), paths: [existingPath, path] },\n });\n }\n const asset = assetFromRow(path, row);\n if (!asset.ok) return asset;\n const key = row.guid.toLowerCase();\n pathsByGuid.set(key, path);\n byGuid.set(key, asset.value);\n }\n }\n\n const sourceDigest = digest(\n [...documents].sort((left, right) => stable(left).localeCompare(stable(right))),\n );\n return ok({\n generation: generationFromDigest(sourceDigest),\n assets: byGuid,\n });\n}\n\n/**\n * Create a build-time ScriptablePack reader backed by ordinary `.pack.json`\n * files below the configured asset roots. The first read builds one immutable\n * GUID index; subsequent reads return private Asset snapshots from that index.\n */\nexport function createScriptablePackFileAssetSnapshotSource(\n options: ScriptablePackFileAssetSnapshotSourceOptions,\n): ScriptablePackAssetSnapshotSource {\n const index = indexPackFiles(options.assetRoots);\n return {\n async readByGuid(\n guid: AssetGuidType,\n ): Promise<Result<ScriptablePackAssetSnapshot, ScriptablePackFileAssetSnapshotError>> {\n const key = AssetGuid.format(guid).toLowerCase();\n const indexed = await index;\n if (!indexed.ok) return indexed;\n const asset = indexed.value.assets.get(key);\n if (asset === undefined) {\n return err({\n code: 'asset-not-found',\n expected: `an ordinary .pack.json asset with GUID ${key} under the configured asset roots`,\n hint: 'add the dependency to an asset root or declare it as a ScriptablePack external reference, then retry',\n detail: { guid: key },\n });\n }\n return ok({\n asset: structuredClone(asset.asset),\n generation: indexed.value.generation,\n digest: asset.digest,\n });\n },\n };\n}\n","import { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { PackAuthoringError } from '@forgeax/engine-pack/source';\nimport type { Asset, AssetGuid as AssetGuidType, ImportError, Result } from '@forgeax/engine-types';\nimport { AssetError, err, ok } from '@forgeax/engine-types';\nimport type {\n ScriptablePackAssetSnapshot,\n ScriptablePackAssetSnapshotSource,\n ScriptablePackDomainError,\n ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\n\nexport type ScriptablePackSnapshotError =\n | AssetError\n | ImportError\n | PackAuthoringError\n | ScriptablePackDomainError;\n\nexport interface ScriptablePackStagedOwner {\n readonly id: string;\n readonly guids: readonly AssetGuidType[];\n build(\n source: ScriptablePackAssetSnapshotSource,\n ): Promise<Result<readonly ScriptablePackStagedOutput[], ScriptablePackSnapshotError>>;\n}\n\nexport interface ScriptablePackStagedSnapshotOptions {\n readonly generation: number;\n readonly owners: readonly ScriptablePackStagedOwner[];\n readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];\n}\n\nfunction stable(value: unknown): string {\n if (ArrayBuffer.isView(value)) {\n return `${value.constructor.name}:${JSON.stringify(Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)))}`;\n }\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(record[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nasync function assetDigest(asset: Asset): Promise<string> {\n const bytes = new TextEncoder().encode(stable(asset));\n const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes);\n return `sha256:${Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join('')}`;\n}\n\nfunction cycleError(\n stack: readonly string[],\n owner: string,\n guid: string,\n): ScriptablePackDomainError {\n const cycleStart = stack.indexOf(owner);\n const cycle = [...stack.slice(cycleStart), owner];\n return {\n code: 'pack-content-dependency-stalled',\n expected: 'the content dependency worklist to make progress',\n hint: 'inspect the waiting GUID and pending subjects, then break the content-read cycle',\n detail: { waitingGuids: [guid], pendingSubjects: cycle, iterations: 1 },\n };\n}\n\nfunction missingOutputError(owner: string, guid: string): ScriptablePackDomainError {\n return {\n code: 'pack-source-output-invalid',\n expected: `owner ${owner} to stage every declared output including ${guid}`,\n hint: 'return one output for every GUID declared by the staged owner',\n detail: { missingGuids: [guid], unexpectedSourceKeys: [], kindMismatches: [] },\n };\n}\n\n/**\n * One-build authority for current-generation ScriptablePack content reads.\n * Local owners are built lazily, memoized, and never resolved through an old Catalog/DDC generation.\n */\nexport function createScriptablePackStagedAssetSnapshotSource(\n options: ScriptablePackStagedSnapshotOptions,\n): ScriptablePackAssetSnapshotSource {\n const owners =\n options.declaredExternalOutputs === undefined || options.declaredExternalOutputs.length === 0\n ? options.owners\n : [\n {\n id: '<declared-pack-external>',\n guids: options.declaredExternalOutputs.map((output) => output.guid),\n async build() {\n return ok(options.declaredExternalOutputs ?? []);\n },\n } satisfies ScriptablePackStagedOwner,\n ...options.owners,\n ];\n const ownerByGuid = new Map<string, ScriptablePackStagedOwner>();\n for (const owner of owners) {\n if (owner.id.trim().length === 0) throw new TypeError('staged owner id must be non-empty');\n for (const guid of owner.guids) {\n const key = AssetGuid.format(guid).toLowerCase();\n const existing = ownerByGuid.get(key);\n if (existing !== undefined) {\n throw new TypeError(`staged GUID ${key} is owned by both ${existing.id} and ${owner.id}`);\n }\n ownerByGuid.set(key, owner);\n }\n }\n\n const snapshots = new Map<string, ScriptablePackAssetSnapshot>();\n const builds = new Map<string, Promise<Result<void, ScriptablePackSnapshotError>>>();\n\n const sourceFor = (stack: readonly string[]): ScriptablePackAssetSnapshotSource => ({\n async readByGuid(guid) {\n const key = AssetGuid.format(guid).toLowerCase();\n const cached = snapshots.get(key);\n if (cached !== undefined) return ok(structuredClone(cached));\n const owner = ownerByGuid.get(key);\n if (owner === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-imported',\n expected: 'a staged local owner for the requested GUID',\n hint: 'declare the local ScriptablePack output before rebuilding the generation',\n }),\n );\n }\n if (stack.includes(owner.id)) return err(cycleError(stack, owner.id, key));\n\n let building = builds.get(owner.id);\n if (building === undefined) {\n building = (async () => {\n const built = await owner.build(sourceFor([...stack, owner.id]));\n if (!built.ok) {\n builds.delete(owner.id);\n return built;\n }\n const next = new Map<string, ScriptablePackAssetSnapshot>();\n for (const output of built.value) {\n const outputGuid = AssetGuid.format(output.guid).toLowerCase();\n if (ownerByGuid.get(outputGuid) !== owner) {\n builds.delete(owner.id);\n return err(missingOutputError(owner.id, outputGuid));\n }\n next.set(outputGuid, {\n asset: structuredClone(output.asset),\n generation: options.generation,\n digest: output.digest ?? (await assetDigest(output.asset)),\n });\n }\n for (const declared of owner.guids) {\n const declaredGuid = AssetGuid.format(declared).toLowerCase();\n if (!next.has(declaredGuid)) {\n builds.delete(owner.id);\n return err(missingOutputError(owner.id, declaredGuid));\n }\n }\n for (const [outputGuid, snapshot] of next) snapshots.set(outputGuid, snapshot);\n return ok(undefined);\n })();\n builds.set(owner.id, building);\n }\n const built = await building;\n if (!built.ok) return built;\n const staged = snapshots.get(key);\n return staged === undefined\n ? err(missingOutputError(owner.id, key))\n : ok(structuredClone(staged));\n },\n });\n\n return sourceFor([]);\n}\n","import type { ImportError } from '@forgeax/engine-types';\n\nconst SOURCE_PACKAGE_ERROR_POLICY = {\n 'source-package-meta-invalid': {\n expected: 'a valid source Meta declaration with complete GUID topology',\n hint: 'repair the Meta declaration, then rebuild or cold-cook the source package',\n },\n 'source-package-importer-missing': {\n expected: 'a registered importer for the source Meta importer key',\n hint: 'register the named importer, then rebuild or cold-cook the source package',\n },\n 'source-package-conversion-failed': {\n expected: 'the configured importer to convert the source successfully',\n hint: 'repair the source or importer, then rebuild or cold-cook the source package',\n },\n 'source-package-ddc-failed': {\n expected: 'a readable persistent DDC entry with matching integrity evidence',\n hint: 'discard the invalid derived entry, then rebuild or cold-cook the source package',\n },\n 'source-package-publication-invalid': {\n expected: 'a complete Pack body, refs, artifacts, and route integrity',\n hint: 'repair the missing product bytes, then rebuild or cold-cook the source package',\n },\n 'source-package-guid-closure-mismatch': {\n expected: 'exactly one produced asset for every declared GUID',\n hint: 'repair the Meta topology or importer output, then rebuild the whole source package',\n },\n} as const;\n\nexport type SourcePackageErrorCode = keyof typeof SOURCE_PACKAGE_ERROR_POLICY;\n\nexport type SourcePackageErrorStage =\n | 'meta'\n | 'importer'\n | 'conversion'\n | 'closure'\n | 'ddc'\n | 'route-integrity';\n\nexport interface SourcePackageErrorContext {\n readonly sourceMeta: string;\n readonly anchorGuid: string;\n readonly affectedGuids: readonly string[];\n readonly producer: string;\n readonly importer: string;\n}\n\nexport interface SourcePackageErrorDetail extends SourcePackageErrorContext {\n readonly stage: SourcePackageErrorStage;\n readonly reason?: string;\n readonly missing?: readonly string[];\n readonly unexpected?: readonly string[];\n readonly registeredImporters?: readonly string[];\n}\n\nexport interface SourcePackageError {\n readonly code: SourcePackageErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: SourcePackageErrorDetail;\n}\n\nexport function sourcePackageError(\n code: SourcePackageErrorCode,\n context: SourcePackageErrorContext,\n detail: Omit<SourcePackageErrorDetail, keyof SourcePackageErrorContext>,\n): SourcePackageError {\n const policy = SOURCE_PACKAGE_ERROR_POLICY[code];\n return {\n code,\n expected: policy?.expected as string,\n hint: policy?.hint as string,\n detail: { ...context, ...detail },\n };\n}\n\nfunction unknownReason(error: unknown): string {\n if (error !== null && typeof error === 'object') {\n const value = error as Record<string, unknown>;\n if (typeof value.code === 'string') {\n const detail = value.detail;\n const reason =\n detail !== null && typeof detail === 'object' && 'reason' in detail\n ? (detail as { readonly reason?: unknown }).reason\n : undefined;\n const diagnostic =\n detail !== null && typeof detail === 'object' && 'diagnostic' in detail\n ? (detail as { readonly diagnostic?: unknown }).diagnostic\n : undefined;\n return `${value.code}: ${\n typeof diagnostic === 'string'\n ? diagnostic\n : typeof reason === 'string'\n ? reason\n : String(value.expected ?? 'producer failure')\n }`;\n }\n }\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction importFailureCode(error: ImportError): SourcePackageErrorCode {\n switch (error.code) {\n case 'importer-not-registered':\n return 'source-package-importer-missing';\n case 'import-produced-no-assets':\n case 'guid-mismatch':\n case 'source-validation-failed':\n return 'source-package-guid-closure-mismatch';\n case 'source-read-failed':\n case 'import-internal-error':\n case 'mesh-material-slot-topology-change':\n case 'mesh-lod-contract-invalid':\n case 'mesh-lod-topology-change':\n case 'mesh-lod-authority-conflict':\n case 'unknown-source-key':\n case 'duplicate-source-key':\n case 'invalid-source-overrides':\n case 'invalid-source-override-payload':\n return 'source-package-conversion-failed';\n }\n}\n\nconst IMPORT_ERROR_CODES = new Set([\n 'importer-not-registered',\n 'source-read-failed',\n 'import-produced-no-assets',\n 'guid-mismatch',\n 'mesh-material-slot-topology-change',\n 'mesh-lod-contract-invalid',\n 'mesh-lod-topology-change',\n 'mesh-lod-authority-conflict',\n 'import-internal-error',\n 'source-validation-failed',\n 'unknown-source-key',\n 'duplicate-source-key',\n 'invalid-source-overrides',\n 'invalid-source-override-payload',\n]);\n\nfunction findNormalizableCause(error: unknown, seen = new Set<unknown>()): unknown {\n if (error === null || typeof error !== 'object' || seen.has(error)) return undefined;\n seen.add(error);\n if (isSourcePackageError(error) || isScriptablePackFailure(error) || isImportError(error)) {\n return error;\n }\n const cause = (error as { readonly cause?: unknown }).cause;\n return cause === undefined ? undefined : findNormalizableCause(cause, seen);\n}\n\n/** Return whether an error chain contains a source-package/import contract error. */\nexport function containsSourcePackageError(error: unknown, seen = new Set<unknown>()): boolean {\n if (error === null || typeof error !== 'object' || seen.has(error)) return false;\n seen.add(error);\n if (isSourcePackageError(error) || isImportError(error)) return true;\n const cause = (error as { readonly cause?: unknown }).cause;\n return cause !== undefined && containsSourcePackageError(cause, seen);\n}\n\nexport function normalizeSourcePackageError(\n error: unknown,\n context: SourcePackageErrorContext,\n): SourcePackageError {\n const cause = findNormalizableCause(error);\n if (cause !== undefined && cause !== error) return normalizeSourcePackageError(cause, context);\n if (isSourcePackageError(error)) return error;\n if (isScriptablePackFailure(error)) {\n return sourcePackageError('source-package-conversion-failed', context, {\n stage: 'conversion',\n reason: unknownReason(error),\n });\n }\n if (isImportError(error)) {\n const code = importFailureCode(error);\n const detail: Omit<SourcePackageErrorDetail, keyof SourcePackageErrorContext> = {\n stage: code === 'source-package-importer-missing' ? 'importer' : 'conversion',\n reason: unknownReason(error),\n ...(code === 'source-package-importer-missing' && 'registeredImporters' in error.detail\n ? { registeredImporters: error.detail.registeredImporters }\n : {}),\n };\n return sourcePackageError(code, context, detail);\n }\n return sourcePackageError(contextErrorStage(error), context, {\n stage: 'conversion',\n reason: unknownReason(error),\n });\n}\n\nfunction isSourcePackageError(error: unknown): error is SourcePackageError {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof error.code === 'string' &&\n error.code in SOURCE_PACKAGE_ERROR_POLICY &&\n 'expected' in error &&\n typeof error.expected === 'string' &&\n 'hint' in error &&\n typeof error.hint === 'string' &&\n 'detail' in error &&\n error.detail !== null &&\n typeof error.detail === 'object'\n );\n}\n\nfunction contextErrorStage(error: unknown): SourcePackageErrorCode {\n return error instanceof SyntaxError\n ? 'source-package-meta-invalid'\n : 'source-package-conversion-failed';\n}\n\nfunction isImportError(error: unknown): error is ImportError {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof error.code === 'string' &&\n IMPORT_ERROR_CODES.has(error.code) &&\n 'expected' in error &&\n 'hint' in error &&\n 'detail' in error\n );\n}\n\nfunction isScriptablePackFailure(error: unknown): error is {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail: unknown;\n} {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof error.code === 'string' &&\n error.code.startsWith('pack-source-') &&\n 'expected' in error &&\n typeof error.expected === 'string' &&\n 'hint' in error &&\n typeof error.hint === 'string' &&\n 'detail' in error\n );\n}\n","import { createHash, randomUUID } from 'node:crypto';\nimport { mkdir, rename, rm, stat, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport {\n type DdcArtifact,\n type DdcEntry,\n type DdcGenerationEntryCandidate,\n DdcGenerationSession,\n type DdcHead,\n DdcLifecycle,\n ddcOutputDigest,\n} from '@forgeax/engine-ddc';\nimport { canonicalDdcJson } from '@forgeax/engine-ddc/key';\nimport {\n type CatalogEntry,\n err,\n ok,\n type ResourceRevision,\n type Result,\n} from '@forgeax/engine-types';\nimport {\n type SourcePackageError,\n type SourcePackageErrorContext,\n sourcePackageError,\n} from './source-package-errors.js';\n\ninterface SourcePackageDdcEntryInput {\n readonly root: string;\n readonly entry: DdcEntry;\n readonly context: SourcePackageErrorContext;\n}\n\ninterface StagedSourcePackageDdc extends DdcGenerationEntryCandidate {\n readonly root: string;\n readonly session: DdcGenerationSession;\n readonly context: SourcePackageErrorContext;\n}\n\nexport interface ImportPublicationInput {\n readonly root: string;\n readonly guid: string;\n readonly desiredKey: string;\n readonly pack: unknown;\n readonly previousCatalog: readonly CatalogEntry[];\n readonly nextCatalog: readonly CatalogEntry[];\n readonly publishedGuids: readonly string[];\n readonly transport?: {\n readonly path: string;\n readonly body: string;\n /** Complete package-relative artifact closure for the published Pack. */\n readonly artifacts?: readonly ImportPublicationArtifact[];\n };\n}\n\nexport interface ImportPublicationArtifact {\n readonly path: string;\n readonly mediaType: string;\n readonly bytes: Uint8Array;\n}\n\nexport interface ImportPublicationError {\n readonly code: SourcePackageError['code'];\n readonly expected: string;\n readonly hint: string;\n readonly detail: string;\n readonly diagnostic: SourcePackageError;\n}\n\nexport type ImportPublicationResult =\n | {\n readonly ok: true;\n readonly key: string;\n readonly head: DdcHead;\n readonly catalog: readonly CatalogEntry[];\n readonly revision: ResourceRevision;\n readonly transportPersisted: boolean;\n }\n | { readonly ok: false; readonly error: ImportPublicationError; readonly head: DdcHead };\n\nexport interface StagedImportPublication {\n readonly input: ImportPublicationInput;\n readonly ddc: StagedSourcePackageDdc;\n readonly key: string;\n readonly head: DdcHead;\n readonly catalog: readonly CatalogEntry[];\n readonly revision: ResourceRevision;\n}\n\nexport type StagedImportPublicationResult =\n | { readonly ok: true; readonly candidate: StagedImportPublication }\n | { readonly ok: false; readonly error: ImportPublicationError; readonly head: DdcHead };\n\nfunction inspectHead(root: string, guid: string, desiredKey: string): Promise<DdcHead> {\n return new DdcLifecycle(root).inspect(guid, desiredKey);\n}\n\nconst PUBLICATION_SETTLE_TIMEOUT_MS = 5_000;\nconst PUBLICATION_SETTLE_POLL_MS = 10;\n\nasync function inspectAfterSupersededCommit(candidate: StagedSourcePackageDdc): Promise<DdcHead> {\n let head = await inspectHead(candidate.root, candidate.lease.guid, candidate.lease.desiredKey);\n if (head.state === 'current' && head.currentKey === candidate.lease.desiredKey) return head;\n\n // A newer owner may already have superseded this lease while it is still\n // cooking. The strict DDC CAS correctly returns `stale` to this candidate;\n // wait for that owner to publish before turning an equivalent publication\n // into a user-visible import failure. The wait is bounded so a crashed\n // owner never leaves the caller hanging and a different desired key still\n // fails closed.\n const deadline = Date.now() + PUBLICATION_SETTLE_TIMEOUT_MS;\n while (\n Date.now() < deadline &&\n head.activeLease !== undefined &&\n head.activeLease.attempt !== candidate.lease.attempt &&\n head.activeLease.desiredKey === candidate.lease.desiredKey\n ) {\n await new Promise((resolve) => setTimeout(resolve, PUBLICATION_SETTLE_POLL_MS));\n head = await inspectHead(candidate.root, candidate.lease.guid, candidate.lease.desiredKey);\n if (head.state === 'current' && head.currentKey === candidate.lease.desiredKey) return head;\n }\n return head;\n}\n\nasync function stageSourcePackageDdc(\n input: SourcePackageDdcEntryInput,\n): Promise<Result<StagedSourcePackageDdc, SourcePackageError>> {\n const session = new DdcGenerationSession(input.root, { generation: 1 });\n try {\n const candidate = await session.stageEntry(input.entry);\n return ok({ ...candidate, root: input.root, session, context: input.context });\n } catch (error) {\n return err(\n sourcePackageError('source-package-ddc-failed', input.context, {\n stage: 'ddc',\n reason: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n}\n\nasync function commitSourcePackageDdc(\n candidate: StagedSourcePackageDdc,\n): Promise<Result<DdcHead, SourcePackageError>> {\n try {\n const commit = await candidate.session.commitEntry(candidate, candidate.lease.desiredKey);\n if (commit.result !== 'current') {\n const head = await inspectAfterSupersededCommit(candidate);\n if (head.state === 'current' && head.currentKey === candidate.lease.desiredKey) {\n return ok(head);\n }\n return err(\n sourcePackageError('source-package-ddc-failed', candidate.context, {\n stage: 'ddc',\n reason: `DDC lifecycle commit returned ${commit.result}`,\n }),\n );\n }\n return ok(await inspectHead(candidate.root, candidate.lease.guid, candidate.lease.desiredKey));\n } catch (error) {\n return err(\n sourcePackageError('source-package-ddc-failed', candidate.context, {\n stage: 'ddc',\n reason: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n}\n\nasync function persistTransport(transport: ImportPublicationInput['transport']): Promise<boolean> {\n if (transport === undefined) return true;\n const directory = dirname(transport.path);\n const temporary = `${transport.path}.${randomUUID()}.tmp`;\n try {\n await mkdir(directory, { recursive: true });\n if (((await stat(directory)).mode & 0o222) === 0) {\n throw new Error('transport directory is read-only');\n }\n await writeFile(temporary, transport.body);\n await rename(temporary, transport.path);\n return true;\n } catch {\n await rm(temporary, { force: true }).catch(() => {});\n return false;\n }\n}\n\nfunction importPublicationFailure(error: SourcePackageError): ImportPublicationError {\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: error.detail.reason ?? error.detail.stage,\n diagnostic: error,\n };\n}\n\nfunction publicationArtifacts(\n transport: ImportPublicationInput['transport'],\n): Readonly<Record<string, DdcArtifact>> {\n return Object.fromEntries(\n (transport?.artifacts ?? []).map((artifact) => [\n artifact.path,\n { mediaType: artifact.mediaType, bytes: artifact.bytes },\n ]),\n );\n}\n\nfunction publicationContext(input: ImportPublicationInput): SourcePackageErrorContext {\n return {\n sourceMeta: '<import-publication>',\n anchorGuid: input.guid,\n affectedGuids: input.publishedGuids,\n producer: 'source-package/import-publication',\n importer: 'import-publication',\n };\n}\n\n/**\n * Validate the Pack-to-transport closure before DDC staging can advance its\n * head. The Pack is the authority for required artifact paths; a missing or\n * mismatched body must never become a published `current` generation.\n */\nfunction validatePublicationArtifactClosure(\n input: ImportPublicationInput,\n): Result<Readonly<Record<string, DdcArtifact>>, SourcePackageError> {\n const context = publicationContext(input);\n const pack = input.pack;\n if (\n pack === null ||\n typeof pack !== 'object' ||\n (pack as { readonly schemaVersion?: unknown }).schemaVersion !== '2.0.0' ||\n (pack as { readonly kind?: unknown }).kind !== 'internal-text-package'\n ) {\n return ok(publicationArtifacts(input.transport));\n }\n const assets = (pack as { readonly assets?: unknown }).assets;\n if (!Array.isArray(assets)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'published Pack does not contain an assets array',\n }),\n );\n }\n\n const required = new Map<\n string,\n {\n readonly mediaType?: string;\n readonly byteLength?: number;\n readonly integrity?: { readonly algorithm: string; readonly digest: string };\n }\n >();\n for (const asset of assets) {\n if (asset === null || typeof asset !== 'object') {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'published Pack contains a non-object asset row',\n }),\n );\n }\n const rawArtifacts = (asset as { readonly artifacts?: unknown }).artifacts;\n if (rawArtifacts === undefined) continue;\n if (rawArtifacts === null || typeof rawArtifacts !== 'object' || Array.isArray(rawArtifacts)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'published Pack contains an invalid asset artifact map',\n }),\n );\n }\n for (const [localKey, rawDescriptor] of Object.entries(\n rawArtifacts as Record<string, unknown>,\n )) {\n if (rawDescriptor === null || typeof rawDescriptor !== 'object') {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact descriptor ${localKey} is not an object`,\n }),\n );\n }\n const descriptor = rawDescriptor as Record<string, unknown>;\n const path = descriptor.path;\n if (typeof path !== 'string' || path.length === 0) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact descriptor ${localKey} has no package-relative path`,\n }),\n );\n }\n const mediaType = descriptor.mediaType;\n const byteLength = descriptor.byteLength;\n const integrityValue = descriptor.integrity;\n const integrity =\n integrityValue !== null && typeof integrityValue === 'object'\n ? {\n algorithm: (integrityValue as { readonly algorithm?: unknown }).algorithm,\n digest: (integrityValue as { readonly digest?: unknown }).digest,\n }\n : undefined;\n if (\n (mediaType !== undefined && typeof mediaType !== 'string') ||\n (byteLength !== undefined &&\n (!Number.isSafeInteger(byteLength) || (byteLength as number) < 0)) ||\n (integrityValue !== undefined &&\n (integrity === undefined ||\n typeof integrity.algorithm !== 'string' ||\n typeof integrity.digest !== 'string'))\n ) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact descriptor ${path} has invalid metadata`,\n }),\n );\n }\n if (required.has(path)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact path ${path} is declared more than once`,\n }),\n );\n }\n required.set(path, {\n ...(typeof mediaType === 'string' ? { mediaType } : {}),\n ...(typeof byteLength === 'number' ? { byteLength } : {}),\n ...(integrity !== undefined &&\n typeof integrity.algorithm === 'string' &&\n typeof integrity.digest === 'string'\n ? { integrity: { algorithm: integrity.algorithm, digest: integrity.digest } }\n : {}),\n });\n }\n }\n\n const available = new Map<string, ImportPublicationArtifact>();\n const duplicatePaths: string[] = [];\n for (const artifact of input.transport?.artifacts ?? []) {\n if (available.has(artifact.path)) duplicatePaths.push(artifact.path);\n available.set(artifact.path, artifact);\n }\n const missing: string[] = [];\n const mismatched: string[] = [...duplicatePaths.map((path) => `${path}: duplicate body`)];\n for (const path of available.keys()) {\n if (!required.has(path)) mismatched.push(`${path}: unexpected body`);\n }\n for (const [path, descriptor] of required) {\n const artifact = available.get(path);\n if (artifact === undefined) {\n missing.push(path);\n continue;\n }\n if (!(artifact.bytes instanceof Uint8Array)) {\n mismatched.push(`${path}: body is not Uint8Array`);\n continue;\n }\n if (descriptor.mediaType !== undefined && artifact.mediaType !== descriptor.mediaType) {\n mismatched.push(`${path}: media type mismatch`);\n }\n if (\n descriptor.byteLength !== undefined &&\n artifact.bytes.byteLength !== descriptor.byteLength\n ) {\n mismatched.push(`${path}: byte length mismatch`);\n }\n if (descriptor.integrity !== undefined) {\n const actualDigest = `sha256:${createHash('sha256').update(artifact.bytes).digest('hex')}`;\n if (\n descriptor.integrity.algorithm !== 'sha256' ||\n descriptor.integrity.digest !== actualDigest\n ) {\n mismatched.push(`${path}: integrity mismatch`);\n }\n }\n }\n if (missing.length > 0 || mismatched.length > 0) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'Pack artifact closure is incomplete or mismatched',\n ...(missing.length === 0 ? {} : { missing }),\n ...(mismatched.length === 0 ? {} : { unexpected: mismatched }),\n }),\n );\n }\n\n if (input.transport !== undefined) {\n let transportedPack: unknown;\n try {\n transportedPack = JSON.parse(input.transport.body) as unknown;\n } catch {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'transport body is not valid JSON for the published Pack',\n }),\n );\n }\n if (canonicalDdcJson(transportedPack) !== canonicalDdcJson(pack)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'transport body does not match the published Pack',\n }),\n );\n }\n }\n\n return ok(publicationArtifacts(input.transport));\n}\n\nfunction projectImportPublication(\n input: ImportPublicationInput,\n head: DdcHead,\n observedAt: number,\n): { readonly catalog: readonly CatalogEntry[]; readonly revision: ResourceRevision } {\n const digest = head.currentKey ?? input.desiredKey;\n const revision: ResourceRevision = { digest, observedAt, rootId: input.root };\n const published = new Set(input.publishedGuids.map((guid) => guid.toLowerCase()));\n const catalog = input.nextCatalog.map((row) => {\n if (!published.has(row.guid.toLowerCase())) return row;\n const previousLkg =\n head.lastKnownGoodKey === undefined\n ? undefined\n : input.previousCatalog.find(\n (candidate) =>\n candidate.guid.toLowerCase() === row.guid.toLowerCase() &&\n candidate.revision?.digest === head.lastKnownGoodKey,\n );\n const projection =\n row.projection === undefined\n ? undefined\n : (() => {\n const { lastKnownGood: _staleLastKnownGood, ...withoutLastKnownGood } = row.projection;\n return previousLkg?.packageUrl === undefined\n ? withoutLastKnownGood\n : { ...withoutLastKnownGood, lastKnownGood: { packageUrl: previousLkg.packageUrl } };\n })();\n return {\n ...row,\n revision,\n ...(projection === undefined ? {} : { projection }),\n };\n });\n return { catalog, revision };\n}\n\nexport async function publishImportPublication(\n input: ImportPublicationInput,\n): Promise<ImportPublicationResult> {\n const staged = await stageImportPublication(input);\n if (!staged.ok) return staged;\n return commitImportPublication(staged.candidate);\n}\n\nexport async function stageImportPublication(\n input: ImportPublicationInput,\n): Promise<StagedImportPublicationResult> {\n const validatedArtifacts = validatePublicationArtifactClosure(input);\n if (!validatedArtifacts.ok) {\n return {\n ok: false,\n error: importPublicationFailure(validatedArtifacts.error),\n head: await inspectHead(input.root, input.guid, input.desiredKey),\n };\n }\n const artifacts = validatedArtifacts.value;\n const staged = await stageSourcePackageDdc({\n root: input.root,\n entry: {\n key: input.desiredKey,\n guid: input.guid,\n payload: input.pack,\n refs: [],\n artifacts,\n receipt: {\n guid: input.guid,\n key: input.desiredKey,\n producer: 'engine-import/source-package-publication',\n inputFingerprint: input.desiredKey,\n outputDigest: ddcOutputDigest({\n guid: input.guid,\n payload: input.pack,\n refs: [],\n artifacts,\n }),\n },\n },\n context: publicationContext(input),\n });\n if (!staged.ok) {\n return {\n ok: false,\n error: importPublicationFailure(staged.error),\n head: await inspectHead(input.root, input.guid, input.desiredKey),\n };\n }\n const lastKnownGoodKey =\n staged.value.previousHead.currentKey !== undefined &&\n staged.value.previousHead.currentKey !== input.desiredKey\n ? staged.value.previousHead.currentKey\n : staged.value.previousHead.lastKnownGoodKey;\n const projectedHead: DdcHead = {\n ...staged.value.previousHead,\n state: 'cooking',\n currentKey: input.desiredKey,\n ...(lastKnownGoodKey === undefined ? {} : { lastKnownGoodKey }),\n };\n const projected = projectImportPublication(input, projectedHead, Date.now());\n return {\n ok: true,\n candidate: {\n input,\n ddc: staged.value,\n key: input.desiredKey,\n head: projectedHead,\n catalog: projected.catalog,\n revision: projected.revision,\n },\n };\n}\n\nexport async function commitImportPublication(\n candidate: StagedImportPublication,\n): Promise<ImportPublicationResult> {\n const publication = await commitSourcePackageDdc(candidate.ddc);\n if (!publication.ok) {\n return {\n ok: false,\n error: importPublicationFailure(publication.error),\n head: await inspectHead(\n candidate.input.root,\n candidate.input.guid,\n candidate.input.desiredKey,\n ),\n };\n }\n const transportPersisted = await persistTransport(candidate.input.transport);\n if (!transportPersisted) {\n await restoreImportPublication(candidate);\n return {\n ok: false,\n error: {\n code: 'source-package-publication-invalid',\n expected: 'the sidecar and DDC publication to commit atomically',\n hint: 'repair the sidecar destination, then rebuild or cold-cook the source package',\n detail: 'sidecar transport persistence failed; restored the previous DDC/LKG generation',\n diagnostic: sourcePackageError(\n 'source-package-publication-invalid',\n {\n sourceMeta: '<import-publication>',\n anchorGuid: candidate.input.guid,\n affectedGuids: candidate.input.publishedGuids,\n producer: 'source-package/import-publication',\n importer: 'import-publication',\n },\n { stage: 'route-integrity', reason: 'sidecar transport persistence failed' },\n ),\n },\n head: await inspectHead(\n candidate.input.root,\n candidate.input.guid,\n candidate.input.desiredKey,\n ),\n };\n }\n const projected = projectImportPublication(candidate.input, publication.value, Date.now());\n return {\n ok: true,\n key: candidate.input.desiredKey,\n head: publication.value,\n catalog: projected.catalog,\n revision: projected.revision,\n transportPersisted,\n };\n}\n\nexport async function discardImportPublication(candidate: StagedImportPublication): Promise<void> {\n await candidate.ddc.session.discardEntry(candidate.ddc);\n}\n\nexport async function restoreImportPublication(candidate: StagedImportPublication): Promise<void> {\n await candidate.ddc.session.restoreEntry(candidate.ddc);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/import-product.ts","../src/mesh-lod.ts","../src/import-runner.ts","../src/pack-projection.ts","../src/mesh-bin.ts","../src/scriptable-pack.ts","../src/scriptable-pack-output-producers.ts","../src/scriptable-pack-build.ts","../src/source-package.ts","../src/scriptable-pack-host.ts","../src/source-path.ts","../src/build-production.ts","../src/catalog-importer-policy.ts","../src/catalog-inventory.ts","../src/ies/parse-lm63.ts","../src/ies/resample-type-c.ts","../src/ies/ies-importer.ts","../src/importer-registry.ts","../src/scriptable-pack-file-snapshot.ts","../src/scriptable-pack-staged-snapshot.ts","../src/source-package-errors.ts","../src/source-package-publication.ts"],"names":["bytes","digest","ref","err","ok","product","AssetGuid","ImportError","invalidProduct","artifacts","refs","producedGuids","AssetError","cooked","NativeCookerRegistry","isEngineMaterial","BUILTIN_MESH_ASSETS","PackageId","isScriptablePackAssetKind","known","missing","finalized","facts","displaySourcePath","revision","parsePackSourceJson","resolve","projectDirectPackJson","prepared","finalizePackageTransportSource","guid","span","factor","IES_PROFILE_WIDTH","IES_PROFILE_HEIGHT","IMPORT_ERROR_HINTS","isRecord","stable","record","stat","built","createHash"],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n ArtifactDescriptor,\n AssetRef,\n CookProduct,\n CookReceipt,\n ImportedArtifactBody,\n ImportedAsset,\n ImportProduct,\n Result,\n} from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\n\nexport interface TerminalImportProduct<P = unknown> extends ImportProduct<P> {\n readonly refs: readonly AssetRef[];\n readonly artifacts: Readonly<Record<string, ImportedArtifactBody>>;\n readonly receipts: readonly CookReceipt[];\n readonly diagnostics: readonly unknown[];\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n}\n\nexport interface ImportAssetProduct<P = unknown> {\n readonly payload: P;\n readonly refs: readonly AssetRef[];\n readonly artifacts: Readonly<Record<string, ImportedArtifactBody>>;\n}\n\nexport interface ImportProductContractError {\n readonly code: 'import-product-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly field: string };\n}\n\nfunction invalidProduct(field: string): Result<never, ImportProductContractError> {\n return err({\n code: 'import-product-invalid',\n expected: 'a complete terminal import product with source identity',\n hint: 'preserve refs, artifacts, receipts, diagnostics, and source revision at the product boundary',\n detail: { field },\n });\n}\n\nexport function createImportProduct<P = unknown>(\n input: TerminalImportProduct<P>,\n): Result<TerminalImportProduct<P>, ImportProductContractError> {\n if (!Array.isArray(input.assets)) return invalidProduct('assets');\n if (!Array.isArray(input.sourceDependencies)) return invalidProduct('sourceDependencies');\n if (input.sourceRevision.trim().length === 0) return invalidProduct('sourceRevision');\n if (!Array.isArray(input.refs)) return invalidProduct('refs');\n if (input.artifacts === null || typeof input.artifacts !== 'object') {\n return invalidProduct('artifacts');\n }\n if (!Array.isArray(input.receipts)) return invalidProduct('receipts');\n if (!Array.isArray(input.diagnostics)) return invalidProduct('diagnostics');\n return ok({ ...input });\n}\n\nasync function sha256Hex(bytes: Uint8Array): Promise<string> {\n const subtle = globalThis.crypto?.subtle;\n if (subtle === undefined) throw new Error('Web Crypto API is required for importer digests');\n const owned = new Uint8Array(bytes.byteLength);\n owned.set(bytes);\n const digest = await subtle.digest('SHA-256', owned.buffer);\n return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n\nasync function artifactDigest(bytes: Uint8Array): Promise<string> {\n return `sha256:${await sha256Hex(bytes)}`;\n}\n\nfunction concatBytes(chunks: readonly (Uint8Array | string)[]): Uint8Array {\n const encoder = new TextEncoder();\n const encoded = chunks.map((chunk) =>\n typeof chunk === 'string' ? encoder.encode(chunk) : chunk,\n );\n const totalLength = encoded.reduce((total, chunk) => total + chunk.byteLength, 0);\n const bytes = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of encoded) {\n bytes.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return bytes;\n}\n\nasync function productDigest(\n asset: ImportedAsset<unknown>,\n artifacts: Readonly<Record<string, ArtifactDescriptor>>,\n): Promise<string> {\n const chunks: (Uint8Array | string)[] = [\n JSON.stringify(projectImportedAssetPayload(asset)),\n JSON.stringify(asset.refs.map((ref) => ref.guid)),\n JSON.stringify(artifacts),\n ];\n for (const [key, artifact] of Object.entries(asset.artifacts).sort(([left], [right]) =>\n left.localeCompare(right),\n )) {\n chunks.push(key, artifact.bytes);\n }\n return `sha256:${await sha256Hex(concatBytes(chunks))}`;\n}\n\nasync function artifactDescriptors(\n artifacts: Readonly<Record<string, ImportedArtifactBody>>,\n): Promise<Readonly<Record<string, ArtifactDescriptor>>> {\n const entries: [string, ArtifactDescriptor][] = [];\n for (const [path, artifact] of Object.entries(artifacts)) {\n entries.push([\n path,\n {\n path,\n mediaType: artifact.mediaType,\n byteLength: artifact.bytes.byteLength,\n integrity: { algorithm: 'sha256' as const, digest: await artifactDigest(artifact.bytes) },\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n },\n ]);\n }\n return Object.fromEntries(entries);\n}\n\nexport function projectImportedAssetPayload(\n asset: ImportedAsset<unknown>,\n): Record<string, unknown> {\n const payload = asset.payload as Record<string, unknown>;\n if (Object.keys(asset.artifacts).length === 0) return payload;\n if (asset.kind === 'mesh') return { kind: 'mesh' };\n if (asset.kind === 'texture' || asset.kind === 'equirect') {\n const { data: _runtimeBytes, ...metadata } = payload;\n return metadata;\n }\n return payload;\n}\n\n/** Convert each importer asset into the shared completed producer product. */\nexport function finalizeImportProducts(\n product: ImportProduct<unknown>,\n inputFingerprint: string,\n): Promise<readonly CookProduct[]> {\n return (async () => {\n const products: CookProduct[] = [];\n for (const asset of product.assets) {\n const artifacts = await artifactDescriptors(asset.artifacts);\n const digest = await productDigest(asset, artifacts);\n products.push({\n guid: asset.guid,\n payload: asset.payload,\n refs: asset.refs.map((ref) => ref.guid),\n artifacts,\n digest,\n receipt: {\n guid: asset.guid,\n origin: 'sourceMeta' as const,\n status: 'succeeded' as const,\n inputFingerprint,\n outputDigest: digest,\n },\n });\n }\n return products;\n })();\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\n\nexport interface MeshLodMetaEntry {\n readonly sourceKey: string;\n readonly meshGuid: string;\n readonly screenCoverage?: number;\n}\n\nexport interface MeshLodContractInput {\n readonly lods: readonly Readonly<{ meshGuid: string; screenCoverage: number }>[];\n readonly lodHysteresis?: number;\n readonly rootMeshGuid?: string;\n readonly refs?: readonly string[];\n readonly generation?: number;\n readonly rootBounds?: MeshLodBounds;\n readonly lodBounds?: readonly MeshLodBounds[];\n readonly rootMaterialSlots?: readonly MeshLodMaterialSlot[];\n readonly lodMaterialSlots?: readonly (readonly MeshLodMaterialSlot[])[];\n readonly relations?: readonly MeshLodRelation[];\n}\n\nexport interface MeshLodBounds {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n}\n\nexport interface MeshLodMaterialSlot {\n readonly sourceKey: string;\n}\n\nexport interface MeshLodRelation {\n readonly from: string;\n readonly to: string;\n}\n\nexport type MeshLodContractError =\n | { readonly code: 'mesh-lod-contract-invalid'; readonly reason: string }\n | {\n readonly code: 'mesh-lod-topology-change';\n readonly reason: string;\n readonly previousIndices: readonly number[];\n readonly nextIndices: readonly number[];\n }\n | { readonly code: 'mesh-lod-authority-conflict'; readonly reason: string };\n\nexport interface ReconciledMeshLodMeta {\n readonly lods: readonly (MeshLodMetaEntry & { readonly screenCoverage: number })[];\n}\n\n/** Generate the shared first-import screen coverage defaults, including LOD0. */\nexport function deriveDefaultLodScreenCoverages(levelCount: number): readonly number[] {\n if (!Number.isInteger(levelCount) || levelCount < 1 || levelCount > 8) {\n throw new RangeError('levelCount must be an integer in [1, 8]');\n }\n return Array.from(\n { length: levelCount - 1 },\n (_, index) => Math.round(0.5 * 0.4 ** index * 1_000_000) / 1_000_000,\n );\n}\n\nexport function validateMeshLodContract(\n input: MeshLodContractInput,\n): Result<\n Readonly<{ lods: readonly Readonly<{ meshGuid: string; screenCoverage: number }>[] }>,\n MeshLodContractError\n> {\n if (input.lods.length > 7) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'at most seven lower-detail levels are supported',\n });\n }\n if (\n input.lodHysteresis !== undefined &&\n (!Number.isFinite(input.lodHysteresis) || input.lodHysteresis < 0 || input.lodHysteresis >= 1)\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'lodHysteresis must be finite and in [0, 1)',\n });\n }\n if (\n input.generation !== undefined &&\n (!Number.isSafeInteger(input.generation) || input.generation < 0)\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'generation must be a non-negative safe integer',\n });\n }\n const guids = new Set<string>();\n let previous = 1;\n for (const level of input.lods) {\n if (level.meshGuid.trim() === '' || guids.has(level.meshGuid)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'LOD mesh GUIDs must be unique and non-empty',\n });\n }\n if (\n !Number.isFinite(level.screenCoverage) ||\n level.screenCoverage <= 0 ||\n level.screenCoverage > 1\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'screenCoverage must be finite and in (0, 1]',\n });\n }\n if (level.screenCoverage >= previous) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'screenCoverage must strictly decrease by level',\n });\n }\n guids.add(level.meshGuid);\n previous = level.screenCoverage;\n }\n if (input.refs !== undefined) {\n const refs = new Set(input.refs);\n for (const level of input.lods) {\n if (!refs.has(level.meshGuid)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'every lower-detail mesh GUID must be enclosed by root refs',\n });\n }\n }\n }\n if (\n input.rootMeshGuid !== undefined &&\n input.refs !== undefined &&\n !input.refs.includes(input.rootMeshGuid)\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'root mesh GUID must be included in refs',\n });\n }\n if (input.rootBounds !== undefined) {\n if (!validBounds(input.rootBounds)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'root bounds must be finite and ordered',\n });\n }\n for (const bounds of input.lodBounds ?? []) {\n if (!validBounds(bounds) || !encloses(input.rootBounds, bounds)) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'root bounds must enclose every lower-detail bounds',\n });\n }\n }\n }\n if (input.lodBounds !== undefined && input.lodBounds.length !== input.lods.length) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'lod bounds must cover every lower level',\n });\n }\n if (input.rootMaterialSlots !== undefined || input.lodMaterialSlots !== undefined) {\n const rootSlots = input.rootMaterialSlots ?? [];\n const lowerSlots = input.lodMaterialSlots ?? [];\n if (\n lowerSlots.length !== input.lods.length ||\n lowerSlots.some((slots) => !sameSlots(rootSlots, slots))\n ) {\n return err({\n code: 'mesh-lod-contract-invalid',\n reason: 'lower-detail material slots must preserve root sourceKey order',\n });\n }\n }\n if (input.relations !== undefined && hasCycle(input.relations)) {\n return err({ code: 'mesh-lod-contract-invalid', reason: 'LOD relations must be acyclic' });\n }\n return ok({ lods: input.lods });\n}\n\nfunction validBounds(bounds: MeshLodBounds): boolean {\n const [minX, minY, minZ] = bounds.min;\n const [maxX, maxY, maxZ] = bounds.max;\n return (\n [minX, minY, minZ, maxX, maxY, maxZ].every(Number.isFinite) &&\n minX <= maxX &&\n minY <= maxY &&\n minZ <= maxZ\n );\n}\n\nfunction encloses(root: MeshLodBounds, child: MeshLodBounds): boolean {\n return (\n child.min[0] >= root.min[0] &&\n child.min[1] >= root.min[1] &&\n child.min[2] >= root.min[2] &&\n child.max[0] <= root.max[0] &&\n child.max[1] <= root.max[1] &&\n child.max[2] <= root.max[2]\n );\n}\n\nfunction sameSlots(\n root: readonly MeshLodMaterialSlot[],\n child: readonly MeshLodMaterialSlot[],\n): boolean {\n return (\n root.length === child.length &&\n root.every((slot, index) => slot.sourceKey === child[index]?.sourceKey)\n );\n}\n\nfunction hasCycle(relations: readonly MeshLodRelation[]): boolean {\n const edges = new Map<string, string[]>();\n for (const relation of relations)\n edges.set(relation.from, [...(edges.get(relation.from) ?? []), relation.to]);\n const visiting = new Set<string>();\n const visited = new Set<string>();\n const visit = (node: string): boolean => {\n if (visiting.has(node)) return true;\n if (visited.has(node)) return false;\n visiting.add(node);\n for (const next of edges.get(node) ?? []) if (visit(next)) return true;\n visiting.delete(node);\n visited.add(node);\n return false;\n };\n return [...edges.keys()].some(visit);\n}\n\n/** Preserve sidecar facts by sourceKey while permitting only suffix changes. */\nexport function reconcileMeshLodMeta(\n previous: readonly MeshLodMetaEntry[],\n next: readonly MeshLodMetaEntry[],\n): Result<ReconciledMeshLodMeta, MeshLodContractError> {\n const overlap = Math.min(previous.length, next.length);\n for (let index = 0; index < overlap; index++) {\n const oldEntry = previous[index];\n const nextEntry = next[index];\n if (oldEntry?.sourceKey !== nextEntry?.sourceKey) {\n return err({\n code: 'mesh-lod-topology-change',\n reason: 'existing LOD source keys must remain prefix-stable',\n previousIndices: [index],\n nextIndices: [index],\n });\n }\n if (oldEntry?.meshGuid !== nextEntry?.meshGuid) {\n return err({\n code: 'mesh-lod-authority-conflict',\n reason: `sourceKey ${nextEntry?.sourceKey ?? '<missing>'} changed mesh GUID`,\n });\n }\n }\n const defaults = deriveDefaultLodScreenCoverages(next.length + 1);\n const lods = next.map((entry, index) => ({\n ...entry,\n screenCoverage: previous[index]?.screenCoverage ?? entry.screenCoverage ?? defaults[index] ?? 0,\n }));\n const valid = validateMeshLodContract({\n lods: lods.map(({ meshGuid, screenCoverage }) => ({ meshGuid, screenCoverage })),\n });\n if (!valid.ok) return valid;\n return ok({ lods });\n}\n","// @forgeax/engine-import - import runner (feat-20260603-asset-import-loader-injection M2 / w15).\n//\n// The build-time orchestration that turns one parsed `*.meta.json` sidecar\n// into the logical Pack v2 package. It is the consumer side of\n// the ImporterRegistry: it reads `meta.importer`, looks up the registered\n// Importer, calls `importer.import(ctx)`, enforces the GUID import-stable iron\n// law against the produced asset set, then folds the produced PODs into\n// logical `assets[]` rows. Artifact bytes stay with their owning asset;\n// final paths and integrity belong to M3.\n//\n// Error model (charter P3, ImportErrorCode 5 closed members):\n// - importer-not-registered : registry.get(meta.importer) === undefined\n// - source-read-failed : ctx.readSource() failed\n// - import-internal-error : importer conversion or CookProduct finalization threw (never bare-throws out)\n// - guid-mismatch : produced a GUID not declared in subAssets[]\n// - import-produced-no-assets: produced [], or omitted a declared GUID\n//\n// The reserved key `importer: 'shader'` is skipped (plan-strategy D-4 /\n// research Finding 10): shader sidecars are consumed by the orthogonal\n// `@forgeax/engine-vite-plugin-shader` transform pipeline, never by asset\n// import. `runImport` returns `{ ok: true, value: { skipped: 'shader' } }`\n// for them so the caller can account for the sidecar without writing a DDC.\n\nimport type {\n AssetRelation,\n CatalogDiagnostic,\n CookProduct,\n ImportContext,\n ImportDiagnostic,\n ImportError as ImportErrorType,\n ImportedArtifactBody,\n ImportProduct,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideMap,\n} from '@forgeax/engine-types';\nimport {\n canonicalizeSourceOverrides,\n IMPORT_ERROR_HINTS,\n ImportError,\n validateSourceOverrideMap,\n} from '@forgeax/engine-types';\nimport {\n createImportProduct,\n finalizeImportProducts,\n type TerminalImportProduct,\n} from './import-product.js';\nimport type { ImporterRegistry } from './importer-registry.js';\nimport { validateMeshLodContract } from './mesh-lod.js';\n\n/** Reserved `meta.importer` key consumed by vite-plugin-shader, not the import runner. */\nexport const SHADER_RESERVED_IMPORTER_KEY = 'shader';\n\n/**\n * Classify an importer throw as a build-time module-LOAD failure (the importer\n * module / native addon could not be imported) vs a conversion THROW (the\n * loaded importer ran and threw). feat-20260629 D-5: both keep the\n * `import-internal-error` code, but a load failure surfaces `.detail.loadError`\n * so AI users distinguish \"my importer is not loadable / not built\" from \"my\n * importer ran and crashed\" without parsing `.message`.\n *\n * Node signals a module-load failure via `err.code` (`MODULE_NOT_FOUND` for\n * CJS `require`, `ERR_MODULE_NOT_FOUND` for ESM `import()`, `ERR_DLOPEN_FAILED`\n * for a broken native `.node` addon) or a recognizable message. Native FBX-style\n * bindings throw a plain Error whose message names the missing addon.\n */\nfunction isModuleLoadFailure(e: unknown): boolean {\n if (!(e instanceof Error)) return false;\n const code = (e as { code?: unknown }).code;\n if (\n code === 'MODULE_NOT_FOUND' ||\n code === 'ERR_MODULE_NOT_FOUND' ||\n code === 'ERR_DLOPEN_FAILED'\n ) {\n return true;\n }\n const msg = e.message;\n return (\n msg.includes('Cannot find module') || msg.includes('native addon') || msg.includes('.node')\n );\n}\n\nfunction declarationsSourceKey(\n declarations: readonly { readonly guid: string; readonly sourceKey?: string }[],\n guid: string,\n): string | undefined {\n return declarations.find((declaration) => declaration.guid === guid)?.sourceKey;\n}\n\n/**\n * bug-20260610-pack-typed-array-roundtrip: normalise a value tree so every\n * typed-array becomes a plain `number[]`. The DDC pack is serialised via\n * `JSON.stringify`; left as-is, a `Float32Array` round-trips to an indexed\n * object (`{ \"0\": v0, ... }`) and the runtime mesh / animation-clip loaders\n * reject it with `asset-parse-failed`. Walking the tree once at the importer\n * boundary keeps every downstream consumer (build emitFile, dev startMetaImport,\n * and any future pack-cache tool) aligned on the same on-disk shape.\n */\nexport function normaliseForPack(value: unknown): unknown {\n if (value === null || value === undefined) return value;\n if (\n value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Uint32Array ||\n value instanceof Int8Array ||\n value instanceof Int16Array ||\n value instanceof Int32Array\n ) {\n return Array.from(value as ArrayLike<number>);\n }\n if (Array.isArray(value)) {\n return value.map(normaliseForPack);\n }\n if (typeof value === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n out[k] = normaliseForPack(v);\n }\n return out;\n }\n return value;\n}\n\n/** Result envelope returned by {@link runImport} (mirrors the engine `Result<T,E>` shape). */\nexport type RunImportResult =\n | { readonly ok: true; readonly value: RunImportOk }\n | { readonly ok: false; readonly error: ImportErrorType };\n\nexport type RunImportProductResult =\n | {\n readonly ok: true;\n readonly value:\n | { readonly skipped: 'shader' }\n | {\n readonly product: TerminalImportProduct;\n readonly cookProducts: readonly CookProduct[];\n };\n }\n | { readonly ok: false; readonly error: ImportErrorType };\n\n/**\n * Success payload. `skipped: 'shader'` marks a reserved shader sidecar the\n * runner intentionally did not import (no DDC written); otherwise `pack` is the\n * logical Pack v2 document. Artifact bytes remain owned by each asset.\n */\nexport type RunImportOk =\n | { readonly skipped: 'shader' }\n | {\n readonly product: TerminalImportProduct;\n readonly cookProducts: readonly CookProduct[];\n readonly pack: DdcPack;\n };\n\n/** The logical Pack v2 document consumed by the shared finalizer. */\nexport interface DdcPack {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'internal-text-package';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly assets: ReadonlyArray<{\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly relations?: readonly AssetRelation[];\n readonly payload: Record<string, unknown>;\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, ImportedArtifactBody>>;\n }>;\n}\n\n/** Minimal parsed-meta shape the runner reads (a superset of the sidecar). */\nexport interface RunImportMeta {\n readonly importer: string;\n readonly source: string;\n /** Scanner-owned source declaration revision; avoids reopening validated Meta. */\n readonly sourceRevision?: string;\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly importSettings?: Readonly<Record<string, unknown>>;\n readonly sourceOverrides?: SourceOverrideMap;\n /** Skip the normalized DDC pack when a downstream finalizer owns publication. */\n readonly buildPack?: boolean;\n readonly subAssets: ReadonlyArray<{\n readonly guid: string;\n readonly sourceIndex: number;\n readonly kind: string;\n readonly sourceKey?: string;\n readonly relations?: readonly AssetRelation[];\n }>;\n}\n\nfunction declarationFields(\n declaration: RunImportMeta['subAssets'][number] | undefined,\n): Pick<DdcPack['assets'][number], 'sourceKey' | 'sourceIndex' | 'relations'> {\n if (declaration === undefined) return {};\n return {\n sourceIndex: declaration.sourceIndex,\n ...(declaration.sourceKey !== undefined ? { sourceKey: declaration.sourceKey } : {}),\n ...(declaration.relations !== undefined ? { relations: declaration.relations } : {}),\n };\n}\n\n/** Filesystem + decode capabilities the runner needs to drive an importer.\n *\n * `readSource` reads the primary source bytes addressed by `meta.source`.\n * `readSibling` reads a co-located file (e.g. an external `.bin` / `.png`\n * referenced from a `.gltf` via relative URI). Optional today so existing\n * callers stay green; importers that depend on it (gltfImporter texture\n * external-uri path) gate on its presence and surface a structured\n * `'source-read-failed'` ImportError when the host did not wire it.\n *\n * `decodeImage` is the M3 D-1 seam: gltfImporter funnels all three image\n * sources (bufferView / data-uri / external-uri) through one callback so\n * `@forgeax/engine-gltf` carries no `from '@forgeax/engine-image'` edge\n * (the grep gate `packages/gltf/scripts/check-no-image-import.mjs` enforces\n * this). The concrete decode lives in `@forgeax/engine-image/image-importer`;\n * the build-time orchestrator binds the callback when constructing this\n * `ImportRunnerFs`.\n */\nexport interface ImportRunnerFs {\n /**\n * Map a physical read path to the host's stable logical source identity.\n *\n * Hosts may expose the same source through different filesystem coordinates\n * (for example a symlink farm in a browser Vite root). The identity is used\n * only for dependency/revision facts; `readSource` and `readSibling` still\n * receive the physical path supplied by the importer.\n */\n sourceIdentityFor?(sourcePath: string): string;\n readSource(\n sourcePath: string,\n ): Promise<\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: unknown }\n >;\n readSibling?(\n sourcePath: string,\n uri: string,\n ): Promise<\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: unknown }\n >;\n decodeImage?: ImportContext['decodeImage'];\n}\n\n/**\n * Resolve an `images[].uri` (or any sibling reference) against the directory\n * of `meta.source`. Pure path arithmetic — no I/O. Used as the default\n * `readSibling` fallback when the host did not wire one explicitly.\n */\nfunction joinSiblingPath(sourcePath: string, uri: string): string {\n const slash = Math.max(sourcePath.lastIndexOf('/'), sourcePath.lastIndexOf('\\\\'));\n const dir = slash >= 0 ? sourcePath.slice(0, slash + 1) : '';\n return `${dir}${uri}`;\n}\n\nfunction normalizeDependencyPath(path: string): string {\n const slash = path.replaceAll('\\\\', '/');\n const parts: string[] = [];\n for (const part of slash.split('/')) {\n if (part === '' || part === '.') continue;\n if (part === '..') {\n parts.pop();\n } else {\n parts.push(part);\n }\n }\n return parts.join('/');\n}\n\nfunction dependencyIdentity(fs: ImportRunnerFs, sourcePath: string): string {\n return normalizeDependencyPath(fs.sourceIdentityFor?.(sourcePath) ?? sourcePath);\n}\n\nfunction errResult(error: ImportErrorType): {\n readonly ok: false;\n readonly error: ImportErrorType;\n} {\n return { ok: false, error };\n}\n\nfunction sourceKeyActual(value: unknown): string {\n if (typeof value === 'string') return JSON.stringify(value);\n if (value === undefined) return 'missing';\n return typeof value;\n}\n\ntype SourceReaderErrorMetadata = {\n readonly code?: unknown;\n readonly name?: unknown;\n readonly message?: unknown;\n readonly detail?: unknown;\n};\n\nfunction sourceReadFailureReason(error: unknown): string {\n if (typeof error !== 'object' || error === null) {\n return typeof error === 'string' ? error : 'unknown';\n }\n const metadata = error as SourceReaderErrorMetadata;\n const token =\n typeof metadata.code === 'string'\n ? metadata.code\n : typeof metadata.name === 'string'\n ? metadata.name\n : undefined;\n switch (token) {\n case 'ENOENT':\n case 'NotFoundError':\n return 'not-found';\n case 'EACCES':\n case 'EPERM':\n case 'PermissionDeniedError':\n case 'NotAllowedError':\n case 'SecurityError':\n return 'permission-denied';\n case 'EAGAIN':\n case 'EBUSY':\n case 'EINTR':\n case 'ECONNABORTED':\n case 'ECONNREFUSED':\n case 'ECONNRESET':\n case 'EHOSTUNREACH':\n case 'ENETDOWN':\n case 'ENETUNREACH':\n case 'ETIMEDOUT':\n case 'EPIPE':\n case 'ABORT_ERR':\n case 'AbortError':\n case 'TimeoutError':\n return 'transient';\n default:\n if (typeof metadata.detail === 'object' && metadata.detail !== null) {\n const reason = (metadata.detail as { readonly reason?: unknown }).reason;\n if (typeof reason === 'string' && reason.length > 0) return reason;\n }\n if (typeof metadata.message === 'string' && metadata.message.length > 0) {\n return metadata.message;\n }\n return 'unknown';\n }\n}\n\n/**\n * Validate producer identity before source work or DDC product finalization.\n * Multi-output declarations cannot recover identity from sourceIndex, array\n * order, or a path, so every row must carry one unique semantic sourceKey.\n * Single-output declarations may omit the key for legacy source compatibility;\n * producers that expose a semantic output should still declare it so Catalog\n * evidence remains stable when the output later gains siblings.\n */\nfunction validateOutputSourceKeys(meta: RunImportMeta): ImportErrorType | undefined {\n if (meta.subAssets.length <= 1) return undefined;\n\n const diagnostics: ImportDiagnostic[] = [];\n const seen = new Map<string, number>();\n for (const [index, declaration] of meta.subAssets.entries()) {\n const sourcePath = `${meta.source}#subAssets[${index}]`;\n const sourceRange = { start: 0, end: 0, line: 1, column: 1 };\n const sourceKey = declaration.sourceKey;\n if (typeof sourceKey !== 'string' || sourceKey.trim().length === 0) {\n diagnostics.push({\n code: 'source-key-required',\n severity: 'error',\n sourcePath,\n sourceRange,\n rule: 'import-output-source-key',\n expected: 'a non-empty producer-owned sourceKey',\n actual: sourceKeyActual(sourceKey),\n hint: 'publish a stable semantic sourceKey; sourceIndex is only a locator',\n });\n continue;\n }\n const prior = seen.get(sourceKey);\n if (prior !== undefined) {\n diagnostics.push({\n code: 'duplicate-source-key',\n severity: 'error',\n sourcePath,\n sourceRange,\n rule: 'import-output-source-key-unique',\n expected: 'sourceKey to be unique within one imported package',\n actual: `${JSON.stringify(sourceKey)} duplicates subAssets[${prior}]`,\n hint: 'rename the duplicate semantic output before writing Meta',\n });\n continue;\n }\n seen.set(sourceKey, index);\n }\n if (diagnostics.length === 0) return undefined;\n return new ImportError({\n code: 'source-validation-failed',\n expected: 'every writable imported output to declare a unique non-empty sourceKey',\n hint: IMPORT_ERROR_HINTS['source-validation-failed'],\n detail: { diagnostics },\n });\n}\n\n/**\n * Run the importer for one parsed meta sidecar and produce its DDC.\n *\n * @param meta the parsed `*.meta.json` (importer + source + subAssets[]).\n * @param registry the wired {@link ImporterRegistry}.\n * @param fs the source-read capability (injected so the runner stays\n * testable without touching real disk).\n */\nexport function runImport(\n meta: RunImportMeta & { readonly buildPack: false },\n registry: ImporterRegistry,\n fs: ImportRunnerFs,\n): Promise<RunImportProductResult>;\nexport function runImport(\n meta: RunImportMeta,\n registry: ImporterRegistry,\n fs: ImportRunnerFs,\n): Promise<RunImportResult>;\nexport async function runImport(\n meta: RunImportMeta,\n registry: ImporterRegistry,\n fs: ImportRunnerFs,\n): Promise<RunImportResult | RunImportProductResult> {\n // Reserved shader key: orthogonal vite-plugin-shader pipeline owns these.\n if (meta.importer === SHADER_RESERVED_IMPORTER_KEY) {\n return { ok: true, value: { skipped: 'shader' } };\n }\n\n const sourceKeyError = validateOutputSourceKeys(meta);\n if (sourceKeyError !== undefined) return errResult(sourceKeyError);\n\n const declaredSourceKeys = meta.subAssets.flatMap((subAsset) =>\n subAsset.sourceKey === undefined ? [] : [subAsset.sourceKey],\n );\n const sourceOverridesResult = validateSourceOverrideMap(meta.sourceOverrides, declaredSourceKeys);\n if (!sourceOverridesResult.ok) {\n const error = new ImportError({\n code: sourceOverridesResult.error.code,\n expected: sourceOverridesResult.error.expected,\n hint: IMPORT_ERROR_HINTS[sourceOverridesResult.error.code],\n detail: {\n sourceKey: sourceOverridesResult.error.actual,\n declaredSourceKeys,\n reason: sourceOverridesResult.error.hint,\n },\n });\n if (sourceOverridesResult.error.actual !== undefined) {\n Object.assign(error, { actual: sourceOverridesResult.error.actual });\n }\n return errResult(error);\n }\n\n const importer = registry.get(meta.importer);\n if (importer === undefined) {\n return errResult(\n new ImportError({\n code: 'importer-not-registered',\n expected: `an importer registered for meta.importer \"${meta.importer}\"`,\n hint: IMPORT_ERROR_HINTS['importer-not-registered'],\n detail: {\n importer: meta.importer,\n registeredImporters: registry.registeredImporters(),\n },\n }),\n );\n }\n\n const dependencies = new Set<string>();\n const readSource = async (sourcePath: string) => {\n dependencies.add(dependencyIdentity(fs, sourcePath));\n try {\n return await fs.readSource(sourcePath);\n } catch (error) {\n return { ok: false as const, error };\n }\n };\n\n const readSibling = async (\n uri: string,\n ): Promise<\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: ImportErrorType }\n > => {\n let inner:\n | { readonly ok: true; readonly value: Uint8Array }\n | { readonly ok: false; readonly error: unknown }\n | { readonly ok: false; readonly error: ImportErrorType };\n try {\n if (fs.readSibling) {\n dependencies.add(dependencyIdentity(fs, joinSiblingPath(meta.source, uri)));\n inner = await fs.readSibling(meta.source, uri);\n } else {\n inner = await readSource(joinSiblingPath(meta.source, uri));\n }\n } catch (error) {\n inner = { ok: false, error };\n }\n if (inner.ok) {\n return { ok: true, value: inner.value };\n }\n return {\n ok: false,\n error: new ImportError({\n code: 'source-read-failed',\n expected: `readable sibling file \"${uri}\" co-located with meta.source \"${meta.source}\"`,\n hint: IMPORT_ERROR_HINTS['source-read-failed'],\n detail: {\n source: uri,\n reason: sourceReadFailureReason(inner.error),\n },\n }),\n };\n };\n\n const decodeImage: ImportContext['decodeImage'] =\n fs.decodeImage ??\n (async () => {\n throw new Error(\n 'ImportRunnerFs.decodeImage was not provided; gltfImporter texture extraction requires the host (vite-plugin-pack / cli-gltf / test) to bind decodeImage when constructing the ImportRunnerFs',\n );\n });\n\n const canonicalSourceOverrides = canonicalizeSourceOverrides(sourceOverridesResult.value);\n const ctx: ImportContext = {\n source: meta.source,\n readSource: () => readSource(meta.source),\n readSibling,\n decodeImage,\n subAssets: meta.subAssets.map(({ guid, sourceIndex, sourceKey, kind }) => ({\n guid,\n sourceIndex,\n ...(sourceKey === undefined ? {} : { sourceKey }),\n kind,\n })),\n importSettings: meta.importSettings ?? {},\n ...(canonicalSourceOverrides === undefined\n ? {}\n : { sourceOverrides: canonicalSourceOverrides }),\n };\n\n // Probe the source once up-front so a missing/unreadable source surfaces as\n // source-read-failed rather than as an opaque import-internal-error inside\n // the importer (charter P3 precise attribution).\n const sourceProbe = await readSource(meta.source);\n if (!sourceProbe.ok) {\n return errResult(\n new ImportError({\n code: 'source-read-failed',\n expected: `readable source file at meta.source \"${meta.source}\"`,\n hint: IMPORT_ERROR_HINTS['source-read-failed'],\n detail: {\n source: meta.source,\n reason: sourceReadFailureReason(sourceProbe.error),\n },\n }),\n );\n }\n\n let product: ImportProduct;\n try {\n const imported = (await importer.import(ctx)) as\n | { readonly ok: boolean; readonly value?: ImportProduct; readonly error?: ImportErrorType }\n | undefined;\n if (\n imported === undefined ||\n imported === null ||\n typeof imported !== 'object' ||\n !('ok' in imported)\n ) {\n throw new Error(\n 'importer returned a legacy or malformed result; expected ImportResult<ImportProduct>',\n );\n } else {\n if (!imported.ok) {\n if (imported.error === undefined)\n throw new Error('importer returned an invalid failure result');\n if (imported.error instanceof ImportError) return errResult(imported.error);\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer \"${meta.importer}\" to return a structured ImportError`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { reason: String(imported.error) },\n }),\n );\n }\n if (imported.value === undefined)\n throw new Error('importer returned an invalid success result');\n const value = imported.value;\n if (\n value === undefined ||\n !Array.isArray(value.assets) ||\n !Array.isArray(value.sourceDependencies) ||\n 'artifacts' in value\n ) {\n throw new Error('importer returned an invalid ImportProduct');\n }\n for (const asset of value.assets) {\n if (\n asset === null ||\n typeof asset !== 'object' ||\n !('artifacts' in asset) ||\n asset.artifacts === null ||\n typeof asset.artifacts !== 'object' ||\n Array.isArray(asset.artifacts)\n ) {\n throw new Error('importer returned an asset without local artifacts');\n }\n }\n product = value;\n }\n } catch (e) {\n if (e instanceof ImportError) return errResult(e);\n const message = e instanceof Error ? e.message : String(e);\n // D-5: a module-LOAD failure rides `.detail.loadError`; a conversion THROW\n // rides `.detail.reason`. Same `import-internal-error` code (no new closed\n // union member); AI users branch on the `.detail` shape.\n if (isModuleLoadFailure(e)) {\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer module \"${meta.importer}\" to load (module + native addon present)`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { loadError: message },\n }),\n );\n }\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer \"${meta.importer}\" to convert the source without throwing`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { reason: message },\n }),\n );\n }\n\n const produced = product.assets;\n\n // LOD is a producer-authored MeshAsset fact. Validate it once at the\n // import boundary so malformed coverage never reaches DDC or runtime.\n for (const asset of produced) {\n if (asset.kind !== 'mesh' || asset.payload === null || typeof asset.payload !== 'object')\n continue;\n const payload = asset.payload as {\n readonly lods?: readonly {\n readonly mesh?: unknown;\n readonly meshGuid?: unknown;\n readonly screenCoverage?: unknown;\n }[];\n readonly lodHysteresis?: unknown;\n };\n if (payload.lods === undefined) continue;\n const lods = payload.lods.map((level) => ({\n meshGuid:\n typeof level.meshGuid === 'string'\n ? level.meshGuid\n : typeof level.mesh === 'string'\n ? level.mesh\n : JSON.stringify(level.mesh),\n screenCoverage: level.screenCoverage,\n }));\n const validated = validateMeshLodContract({\n lods: lods as readonly { meshGuid: string; screenCoverage: number }[],\n ...(payload.lodHysteresis === undefined\n ? {}\n : { lodHysteresis: payload.lodHysteresis as number }),\n });\n if (!validated.ok) {\n return errResult(\n new ImportError({\n code: validated.error.code,\n expected: 'MeshAsset LOD facts to satisfy the shared contract',\n hint: IMPORT_ERROR_HINTS[validated.error.code],\n detail: {\n meshLodSourceKey: declarationsSourceKey(meta.subAssets, asset.guid),\n reason: validated.error.reason,\n ...(validated.error.code === 'mesh-lod-topology-change'\n ? {\n previousIndices: validated.error.previousIndices,\n nextIndices: validated.error.nextIndices,\n }\n : {}),\n },\n }),\n );\n }\n }\n\n // GUID import-stable iron law: the produced GUID set must be a superset of\n // the declared set, and must not contain any GUID the meta never declared.\n const declared = new Set(meta.subAssets.map((s) => s.guid));\n const producedGuids = new Set(produced.map((a) => a.guid));\n\n const unexpectedGuids = [...producedGuids].filter((g) => !declared.has(g));\n if (unexpectedGuids.length > 0) {\n return errResult(\n new ImportError({\n code: 'guid-mismatch',\n expected: 'every produced GUID to be declared in meta.subAssets[]',\n hint: IMPORT_ERROR_HINTS['guid-mismatch'],\n detail: { unexpectedGuids },\n }),\n );\n }\n\n const missingGuids = [...declared].filter((g) => !producedGuids.has(g));\n if (produced.length === 0 || missingGuids.length > 0) {\n return errResult(\n new ImportError({\n code: 'import-produced-no-assets',\n expected:\n produced.length === 0\n ? 'the importer to produce at least one ImportedAsset'\n : 'the produced GUID set to be a superset of meta.subAssets[]',\n hint: IMPORT_ERROR_HINTS['import-produced-no-assets'],\n detail: { missingGuids },\n }),\n );\n }\n\n const declarations = new Map(\n meta.subAssets.map((declaration) => [declaration.guid, declaration]),\n );\n const productWithDependencies = {\n ...product,\n sourceDependencies: [...dependencies],\n };\n const inputFingerprint = `source:${[...dependencies].sort().join('|')}`;\n let cookProducts: readonly CookProduct[];\n try {\n cookProducts = await finalizeImportProducts(productWithDependencies, inputFingerprint);\n } catch (e) {\n const reason = e instanceof Error ? e.message : String(e);\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: `importer \"${meta.importer}\" finalization to produce complete CookProduct digests`,\n hint: IMPORT_ERROR_HINTS['import-internal-error'],\n detail: { reason: `finalization/digest: ${reason}` },\n }),\n );\n }\n const terminalProduct = createImportProduct({\n ...productWithDependencies,\n refs: productWithDependencies.assets.flatMap((asset) => asset.refs),\n artifacts: Object.fromEntries(\n productWithDependencies.assets.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [\n `${asset.guid}/${key}`,\n artifact,\n ]),\n ),\n ),\n receipts: cookProducts.map((product) => product.receipt),\n diagnostics: meta.diagnostics ?? [],\n sourceRevision: inputFingerprint,\n });\n if (!terminalProduct.ok) {\n return errResult(\n new ImportError({\n code: 'import-internal-error',\n expected: 'the import product to retain complete terminal producer facts',\n hint: 'preserve source identity and producer evidence when returning the import product',\n detail: { reason: terminalProduct.error.detail.field },\n }),\n );\n }\n if (meta.buildPack === false) {\n return {\n ok: true,\n value: { product: terminalProduct.value, cookProducts },\n };\n }\n\n const assets = produced.map((a) => {\n const outputFields = declarationFields(declarations.get(a.guid));\n return {\n guid: a.guid,\n kind: a.kind,\n ...outputFields,\n ...(a.name !== undefined ? { name: a.name } : {}),\n // bug-20260610: mesh / scene / animation-clip payloads carry Float32Array\n // / Uint16Array / Uint32Array fields. JSON.stringify on a typed array\n // serialises to `{ \"0\": v0, \"1\": v1, ... }` (a plain object), which the\n // runtime mesh / animation loaders reject (`vertexData instanceof\n // Float32Array` and `Array.isArray(vertexData)` both fail). Convert\n // every typed-array field to a plain Array here so the pack is JSON-\n // roundtrip safe end-to-end. This matches the convention every\n // existing pack-fixture test uses (`vertices: Array.from(...)`).\n payload: normaliseForPack(a.payload as unknown) as Record<string, unknown>,\n refs: a.refs.map((r) => r.guid),\n artifacts: a.artifacts,\n };\n });\n\n const pack: DdcPack = {\n schemaVersion: '2.0.0',\n kind: 'internal-text-package',\n ...(meta.packageId !== undefined ? { packageId: meta.packageId } : {}),\n ...(meta.provenance !== undefined ? { provenance: meta.provenance } : {}),\n ...(meta.revision !== undefined ? { revision: meta.revision } : {}),\n ...(meta.diagnostics !== undefined ? { diagnostics: meta.diagnostics } : {}),\n assets,\n };\n\n return {\n ok: true,\n value: {\n product: terminalProduct.value,\n cookProducts,\n pack,\n },\n };\n}\n","import type { ImportProduct } from '@forgeax/engine-types';\nimport { projectImportedAssetPayload } from './import-product.js';\nimport { type DdcPack, normaliseForPack } from './import-runner.js';\n\n/** Project one validated import product into the canonical Pack v2 payload. */\nexport function projectImportProductForBuild(\n product: Pick<ImportProduct<unknown>, 'assets'>,\n): DdcPack {\n return {\n schemaVersion: '2.0.0',\n kind: 'internal-text-package',\n assets: product.assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: normaliseForPack(projectImportedAssetPayload(asset)) as Record<string, unknown>,\n refs: asset.refs.map((reference) => reference.guid),\n artifacts: asset.artifacts,\n })),\n };\n}\n","import { deriveVertexLayoutProjection } from '@forgeax/engine-geometry';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport {\n MESH_BIN_HEADER_V4_BYTES,\n type MeshBinContractError,\n type MeshBinHeaderV4,\n writeMeshBinHeader,\n} from '@forgeax/engine-pack/mesh-bin-contract';\nimport {\n err,\n type MeshAsset,\n ok,\n type Result,\n type VertexAttributeMap,\n} from '@forgeax/engine-types';\n\ntype MeshPayloadIn = { readonly [Key in keyof MeshAsset]?: MeshAsset[Key] | undefined } & {\n readonly vertexCount?: number;\n};\n\nexport type MeshBinEncodeError =\n | MeshBinContractError\n | {\n readonly code: 'mesh-bin-payload-invalid';\n readonly subject: 'mesh-bin';\n readonly sourceKey: string;\n readonly expected: string;\n readonly actual: string;\n readonly recovery: string;\n };\n\nfunction failure(sourceKey: string, expected: string, actual: string): MeshBinEncodeError {\n return {\n code: 'mesh-bin-payload-invalid',\n subject: 'mesh-bin',\n sourceKey,\n expected,\n actual,\n recovery: 're-cook the source with its Meta sidecar through the build-time importer',\n };\n}\n\nfunction asAttributeMap(value: unknown): VertexAttributeMap {\n return (value ?? {}) as VertexAttributeMap;\n}\n\nfunction jsonValue(value: unknown): unknown {\n if (value instanceof Float32Array || value instanceof Uint16Array) return Array.from(value);\n if (Array.isArray(value)) return value.map(jsonValue);\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value).map(([key, nested]) => [key, jsonValue(nested)]),\n );\n }\n return value;\n}\n\nfunction refsMeta(payload: MeshPayloadIn, refs: readonly string[]): Record<string, unknown> {\n const materialSlots = (payload.materialSlots ?? [{ slotName: 'Default' }]).map(\n (slot, slotIndex) => {\n const defaultMaterial = slot.defaultMaterial;\n let defaultMaterialRef: number | undefined;\n if (defaultMaterial !== undefined) {\n const guid = AssetGuid.format(defaultMaterial);\n defaultMaterialRef = refs.findIndex((candidate) => candidate.toLowerCase() === guid);\n if (defaultMaterialRef < 0) {\n throw new Error(\n `material slot ${slotIndex} default material ${guid} is absent from refs`,\n );\n }\n }\n return {\n slotName: slot.slotName,\n ...(slot.sourceKey === undefined ? {} : { sourceKey: slot.sourceKey }),\n ...(defaultMaterialRef === undefined ? {} : { defaultMaterialRef }),\n };\n },\n );\n if (payload.lods !== undefined && payload.lods.length > 7) {\n throw new Error('MeshAsset LOD chain supports at most seven lower-detail levels');\n }\n let previousCoverage = 1;\n const seenLodGuids = new Set<string>();\n const lods = payload.lods?.map((lod, lodIndex) => {\n const guid = AssetGuid.format(lod.mesh).toLowerCase();\n const meshRef = refs.findIndex((candidate) => candidate.toLowerCase() === guid);\n if (meshRef < 0) {\n throw new Error(`LOD ${lodIndex} mesh ${guid} is absent from refs`);\n }\n if (seenLodGuids.has(guid)) {\n throw new Error(`LOD ${lodIndex} mesh ${guid} is duplicated`);\n }\n if (\n !Number.isFinite(lod.screenCoverage) ||\n lod.screenCoverage <= 0 ||\n lod.screenCoverage > 1 ||\n lod.screenCoverage >= previousCoverage\n ) {\n throw new Error(\n `LOD ${lodIndex} screenCoverage must be finite, in (0, 1], and strictly decreasing`,\n );\n }\n seenLodGuids.add(guid);\n previousCoverage = lod.screenCoverage;\n return { meshRef, screenCoverage: lod.screenCoverage };\n });\n if (\n payload.lodHysteresis !== undefined &&\n (!Number.isFinite(payload.lodHysteresis) ||\n payload.lodHysteresis < 0 ||\n payload.lodHysteresis >= 1)\n ) {\n throw new Error('lodHysteresis must be finite and in [0, 1)');\n }\n return {\n submeshes:\n payload.submeshes === undefined || payload.submeshes.length === 0\n ? [{ indexOffset: 0, indexCount: payload.indices?.length ?? 0, materialSlot: 0 }]\n : payload.submeshes,\n materialSlots,\n ...(payload.aabb === undefined ? {} : { aabb: jsonValue(payload.aabb) }),\n ...(payload.morphTargets === undefined\n ? {}\n : { morphTargets: jsonValue(payload.morphTargets) }),\n ...(payload.morphWeights === undefined\n ? {}\n : { morphWeights: jsonValue(payload.morphWeights) }),\n ...(lods === undefined ? {} : { lods }),\n ...(payload.lodHysteresis === undefined ? {} : { lodHysteresis: payload.lodHysteresis }),\n };\n}\n\n/** Encode one canonical v4 mesh binary. No legacy version is accepted or emitted. */\nexport function packMeshBinV4(\n payload: MeshPayloadIn,\n sourceKey: string,\n refs: readonly string[] = [],\n): Result<Uint8Array, MeshBinEncodeError> {\n try {\n const vertices = payload.vertices;\n const indices = payload.indices;\n if (!(vertices instanceof Float32Array)) {\n return err(\n failure(sourceKey, 'Float32Array interleaved vertices', 'vertices is not Float32Array'),\n );\n }\n if (\n indices !== undefined &&\n !(indices instanceof Uint16Array || indices instanceof Uint32Array)\n ) {\n return err(\n failure(sourceKey, 'Uint16Array or Uint32Array indices', 'indices has an unsupported type'),\n );\n }\n const attributes = asAttributeMap(payload.attributes);\n const projection = deriveVertexLayoutProjection(attributes);\n if (projection.attributes.length === 0 || projection.arrayStride === 0) {\n return err(\n failure(\n sourceKey,\n 'a non-empty canonical geometry projection',\n 'projection has no attributes',\n ),\n );\n }\n const vertexCount = payload.vertexCount ?? vertices.byteLength / projection.arrayStride;\n if (!Number.isSafeInteger(vertexCount) || vertexCount < 0) {\n return err(\n failure(sourceKey, 'a non-negative safe vertex cardinality', `vertexCount=${vertexCount}`),\n );\n }\n if (vertices.byteLength !== vertexCount * projection.arrayStride) {\n return err(\n failure(\n sourceKey,\n `vertices.byteLength=${vertexCount * projection.arrayStride}`,\n `vertices.byteLength=${vertices.byteLength}; stride=${projection.arrayStride}`,\n ),\n );\n }\n for (const attribute of projection.attributes) {\n const value = attributes[attribute.key];\n const components = attribute.byteLength / (attribute.format === 'uint16x4' ? 2 : 4);\n if (\n value === undefined ||\n (!(value instanceof Float32Array) && !(value instanceof Uint16Array)) ||\n value.length !== vertexCount * components\n ) {\n return err(\n failure(\n sourceKey,\n `${attribute.key} cardinality=${vertexCount * components}`,\n `${attribute.key} cardinality=${value?.byteLength ?? 'missing'}`,\n ),\n );\n }\n }\n const interleaved = new Uint8Array(vertexCount * projection.arrayStride);\n const interleavedView = new DataView(interleaved.buffer);\n for (const attribute of projection.attributes) {\n const value = attributes[attribute.key];\n if (value === undefined) continue;\n const components = attribute.byteLength / (attribute.format === 'uint16x4' ? 2 : 4);\n for (let vertex = 0; vertex < vertexCount; vertex++) {\n for (let component = 0; component < components; component++) {\n const sourceIndex = vertex * components + component;\n const targetOffset =\n vertex * projection.arrayStride +\n attribute.offset +\n component * (attribute.format === 'uint16x4' ? 2 : 4);\n if (attribute.format === 'uint16x4') {\n interleavedView.setUint16(targetOffset, (value as Uint16Array)[sourceIndex] ?? 0, true);\n } else {\n interleavedView.setFloat32(\n targetOffset,\n (value as Float32Array)[sourceIndex] ?? 0,\n true,\n );\n }\n }\n }\n }\n const indexCount = indices?.length ?? 0;\n const indexWidth = indices === undefined || indexCount === 0 ? 0 : indices.BYTES_PER_ELEMENT;\n const indexBytes = indexCount * indexWidth;\n if (!Number.isSafeInteger(indexBytes) || indexBytes > 0xffffffff) {\n return err(failure(sourceKey, 'safe index payload byte length', `indexBytes=${indexBytes}`));\n }\n const meta = new TextEncoder().encode(JSON.stringify(refsMeta(payload, refs)));\n const header: MeshBinHeaderV4 = {\n version: 4,\n projectionVersion: projection.schemaVersion,\n mask: projection.mask,\n digest: projection.digest,\n stride: projection.arrayStride,\n vertexCount,\n vertexBytes: interleaved.byteLength,\n indexCount,\n indexWidth: indexWidth as 0 | 2 | 4,\n indexBytes,\n jsonBytes: meta.byteLength,\n };\n const total = MESH_BIN_HEADER_V4_BYTES + interleaved.byteLength + indexBytes + meta.byteLength;\n if (!Number.isSafeInteger(total) || total > 0xffffffff) {\n return err(failure(sourceKey, 'safe mesh binary byte length', `total=${total}`));\n }\n const out = new Uint8Array(total);\n writeMeshBinHeader(header, out);\n let offset = MESH_BIN_HEADER_V4_BYTES;\n out.set(interleaved, offset);\n offset += interleaved.byteLength;\n if (indices !== undefined && indexBytes > 0) {\n out.set(new Uint8Array(indices.buffer, indices.byteOffset, indices.byteLength), offset);\n offset += indexBytes;\n }\n out.set(meta, offset);\n return ok(out);\n } catch (error) {\n return err(\n failure(\n sourceKey,\n 'valid canonical mesh payload',\n error instanceof Error ? error.message : String(error),\n ),\n );\n }\n}\n","import type { ScriptablePackAssetKind } from '@forgeax/engine-pack';\nimport type {\n AssetReader,\n PackAuthoringError,\n ScriptablePackReadError,\n} from '@forgeax/engine-pack/source';\nimport type {\n AnimationGraph,\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n FontAsset,\n ImportError,\n ImportedAsset,\n MaterialAsset,\n MeshAsset,\n Result,\n TilesetAsset,\n} from '@forgeax/engine-types';\nimport type { ImportAssetProduct, TerminalImportProduct } from './import-product.js';\n\nexport type { ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';\n\nexport interface ScriptablePackAssetSnapshot {\n readonly asset: Asset;\n readonly generation: number;\n readonly digest: string;\n}\n\nexport interface ScriptablePackStagedOutput {\n readonly guid: AssetGuidType;\n readonly sourceKey: string;\n readonly asset: Asset;\n readonly digest?: string;\n}\n\nexport interface ScriptablePackAssetSnapshotSource {\n readByGuid(\n guid: AssetGuidType,\n ): Promise<Result<ScriptablePackAssetSnapshot, ScriptablePackReadError>>;\n}\n\nexport interface AssetOutputInput {\n readonly guid: string;\n readonly sourceKey: string;\n readonly asset: Asset;\n /** Filesystem-backed authoring host; absent for pure payload projections. */\n readonly sourcePath?: string;\n}\n\ntype MaterialPackPayload = Omit<MaterialAsset, 'parent' | 'values'> & {\n readonly parent?: number;\n readonly values?: Readonly<Record<string, unknown>>;\n};\n\ntype ScenePackPayload = { readonly kind: 'scene'; readonly [key: string]: unknown };\n\ntype FontPackPayload = Omit<FontAsset, 'atlas' | 'sampler'> & {\n readonly atlasGuid: string;\n readonly samplerGuid: string;\n};\n\ntype TilesetPackPayload = Omit<TilesetAsset, 'atlases'> & { readonly atlases: readonly number[] };\n\ntype AnimationGraphPackPayload = Omit<AnimationGraph, 'nodes'> & {\n readonly nodes: readonly (\n | Exclude<AnimationGraph['nodes'][number], { readonly type: 'clip' }>\n | (Omit<Extract<AnimationGraph['nodes'][number], { readonly type: 'clip' }>, 'clip'> & {\n readonly clip: number;\n })\n )[];\n};\n\n/** Serialized producer payloads; runtime Assets never carry ref indices. */\nexport type AssetOutputPayloadByKind = {\n readonly mesh: MeshAsset;\n readonly material: MaterialPackPayload;\n readonly scene: ScenePackPayload;\n readonly texture: Extract<Asset, { readonly kind: 'texture' }>;\n readonly equirect: Extract<Asset, { readonly kind: 'equirect' }>;\n readonly sampler: Extract<Asset, { readonly kind: 'sampler' }>;\n readonly font: FontPackPayload;\n readonly 'render-pipeline': Extract<Asset, { readonly kind: 'render-pipeline' }>;\n readonly tileset: TilesetPackPayload;\n readonly video: Extract<Asset, { readonly kind: 'video' }>;\n readonly skeleton: Extract<Asset, { readonly kind: 'skeleton' }>;\n readonly skin: Extract<Asset, { readonly kind: 'skin' }>;\n readonly 'animation-clip': Extract<Asset, { readonly kind: 'animation-clip' }>;\n readonly 'animation-graph': AnimationGraphPackPayload;\n readonly audio: Extract<Asset, { readonly kind: 'audio' }>;\n readonly 'particle-effect': Extract<Asset, { readonly kind: 'particle-effect' }>;\n readonly 'ies-profile': Extract<Asset, { readonly kind: 'ies-profile' }>;\n};\n\nexport type AssetOutputPayload = AssetOutputPayloadByKind[ScriptablePackAssetKind];\nexport interface AssetOutputProduct extends ImportAssetProduct<AssetOutputPayload> {\n readonly inputFingerprint?: string;\n readonly sourceDependencies?: readonly string[];\n}\n\nexport interface AssetOutputProducer {\n readonly kind: string;\n readonly version: string;\n produce(\n input: AssetOutputInput,\n ): Result<AssetOutputProduct, ImportError> | Promise<Result<AssetOutputProduct, ImportError>>;\n}\n\nexport class AssetOutputProducerRegistry {\n private readonly producers = new Map<string, AssetOutputProducer>();\n\n register(producer: AssetOutputProducer): void {\n if (producer.kind.trim().length === 0 || producer.version.trim().length === 0) {\n throw new TypeError('Pack output producer kind and version must be non-empty');\n }\n if (typeof producer.produce !== 'function') {\n throw new TypeError(`Pack output producer ${producer.kind} must expose produce`);\n }\n this.producers.set(producer.kind, producer);\n }\n\n get(kind: string): AssetOutputProducer | undefined {\n return this.producers.get(kind);\n }\n\n versions(): Readonly<Record<string, string>> {\n return Object.fromEntries(\n [...this.producers.entries()]\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([kind, producer]) => [kind, producer.version]),\n );\n }\n}\n\nexport type ScriptablePackExternalUsage = 'reference' | 'content' | 'both';\n\nexport interface ScriptablePackExternalEvidence {\n readonly guid: string;\n readonly usage: ScriptablePackExternalUsage;\n readonly generation?: number;\n readonly digest?: string;\n}\n\n/** Shared terminal product envelope for every Pack source form. */\nexport interface PackBuildProduct {\n readonly product: TerminalImportProduct<unknown>;\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n readonly externalEvidence: readonly ScriptablePackExternalEvidence[];\n readonly inputFingerprint: string;\n readonly publication?: AssetPublicationEnvelope;\n}\n\nexport interface ScriptablePackDomainError {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n}\n\n/** The source authoring contract is owned by Pack; this alias keeps reader typing local. */\nexport type ScriptablePackAssetReader = AssetReader;\nexport type ScriptablePackAuthoringError = PackAuthoringError;\nexport type ScriptablePackImportedAsset = ImportedAsset<unknown>;\n","import { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { ScriptablePackSceneComponent } from '@forgeax/engine-pack/source';\nimport { externalizeSceneAsset } from '@forgeax/engine-scene';\nimport type {\n AnimationGraph,\n AssetGuid as AssetGuidType,\n AssetRef,\n AudioClipAsset,\n EquirectAsset,\n FontAsset,\n IesProfileAsset,\n ImportedArtifactBody,\n MaterialAsset,\n MaterialTextureReference,\n MaterialTextureValue,\n MeshAsset,\n ParticleEffectAsset,\n RenderPipelineAsset,\n SamplerAsset,\n SceneAsset,\n SkeletonAsset,\n SkinAsset,\n TextureAsset,\n TilesetAsset,\n VideoAsset,\n} from '@forgeax/engine-types';\nimport {\n deriveTextureLayout,\n err,\n ImportError,\n MATERIAL_TEXTURE_SLOTS,\n ok,\n} from '@forgeax/engine-types';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { bytesToHex } from '@noble/hashes/utils.js';\nimport { packMeshBinV4 } from './mesh-bin.js';\nimport {\n type AssetOutputInput,\n type AssetOutputProducer,\n AssetOutputProducerRegistry,\n type AssetOutputProduct,\n} from './scriptable-pack.js';\n\nfunction producerError(input: AssetOutputInput, reason: unknown): ImportError {\n return new ImportError({\n code: 'import-internal-error',\n expected: `ScriptablePack ${input.asset.kind} output ${input.sourceKey} to satisfy its domain producer contract`,\n hint: 'fix the generated Asset payload and rebuild the ScriptablePack',\n detail: { reason: reason instanceof Error ? reason.message : String(reason) },\n });\n}\n\nfunction formatGuid(value: AssetGuidType | string): string {\n if (typeof value === 'string') {\n const parsed = AssetGuid.parse(value);\n if (!parsed.ok) throw parsed.error;\n return AssetGuid.format(parsed.value);\n }\n return AssetGuid.format(value);\n}\n\nfunction canonical(value: unknown): string {\n if (Array.isArray(value)) return `[${value.map(canonical).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n return `{${Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => `${JSON.stringify(key)}:${canonical(child)}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nfunction particleProgramArtifact(effect: ParticleEffectAsset): {\n readonly program: ParticleEffectAsset['program'];\n readonly bytes: Uint8Array;\n readonly fingerprint: string;\n} {\n const artifactProgram = { format: effect.program.format, emitters: effect.program.emitters };\n const bytes = new TextEncoder().encode(canonical(artifactProgram));\n const fingerprint = `sha256:${bytesToHex(sha256(bytes))}`;\n return {\n program: { ...effect.program, fingerprint },\n bytes,\n fingerprint,\n };\n}\n\nfunction materialProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'material') throw new TypeError('expected MaterialAsset');\n const material = input.asset as MaterialAsset;\n const refs: AssetRef[] = [];\n const addRef = (\n guid: AssetGuidType | string,\n sourceField: NonNullable<AssetRef['sourceField']>,\n ): number => {\n refs.push({ guid: formatGuid(guid), sourceField });\n return refs.length - 1;\n };\n\n const addMaterialRef = (\n value: MaterialTextureReference,\n sourceField: NonNullable<AssetRef['sourceField']>,\n ): number => {\n if (typeof value === 'number') {\n throw new TypeError('material texture references must be GUIDs, not runtime handles');\n }\n return addRef(value, sourceField);\n };\n\n const textureFields =\n material.parameters === undefined\n ? new Set<string>(MATERIAL_TEXTURE_SLOTS)\n : new Set(\n material.parameters\n .filter(\n (parameter) => parameter.type === 'texture' || parameter.type === 'texture_cube',\n )\n .map((parameter) => parameter.name),\n );\n\n const parent =\n material.parent === undefined ? undefined : addRef(material.parent, { fieldName: 'parent' });\n const values: Record<string, unknown> = {};\n for (const fieldName of Object.keys(material.values ?? {}).sort()) {\n const value = material.values?.[fieldName];\n if (typeof value === 'string' && textureFields.has(fieldName)) {\n values[fieldName] = {\n texture: addMaterialRef(value, { componentName: '<material>', fieldName }),\n };\n } else if (\n value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n 'texture' in value\n ) {\n const texture = value as MaterialTextureValue;\n values[fieldName] = {\n ...texture,\n texture: addMaterialRef(texture.texture, { componentName: '<material>', fieldName }),\n ...(texture.sampler === undefined\n ? {}\n : {\n sampler: addMaterialRef(texture.sampler, {\n componentName: '<material>',\n fieldName: `${fieldName}.sampler`,\n }),\n }),\n };\n } else {\n values[fieldName] = value;\n }\n }\n\n const { parent: _parent, values: _values, ...materialShape } = material;\n return {\n payload: {\n ...materialShape,\n ...(parent === undefined ? {} : { parent }),\n ...(material.values === undefined ? {} : { values }),\n },\n refs,\n artifacts: {},\n };\n}\n\nfunction meshProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'mesh') throw new TypeError('expected MeshAsset');\n const mesh = input.asset as MeshAsset;\n const refs: AssetRef[] = [];\n for (let slotIndex = 0; slotIndex < mesh.materialSlots.length; slotIndex++) {\n const defaultMaterial = mesh.materialSlots[slotIndex]?.defaultMaterial;\n if (defaultMaterial === undefined) continue;\n refs.push({\n guid: formatGuid(defaultMaterial),\n sourceField: { fieldName: 'materialSlots', arrayIndex: slotIndex },\n });\n }\n const seenRefs = new Set(refs.map((reference) => reference.guid.toLowerCase()));\n for (const [lodIndex, lod] of (mesh.lods ?? []).entries()) {\n const guid = formatGuid(lod.mesh);\n if (seenRefs.has(guid.toLowerCase())) continue;\n seenRefs.add(guid.toLowerCase());\n refs.push({ guid, sourceField: { fieldName: 'lods', arrayIndex: lodIndex } });\n }\n return {\n payload: mesh,\n refs,\n artifacts: {\n body: {\n mediaType: 'application/x-forgeax-mesh',\n assetCodec: { name: 'mesh-binary', version: '4' },\n bytes: (() => {\n const packed = packMeshBinV4(\n mesh,\n input.sourceKey,\n refs.map((reference) => reference.guid),\n );\n if (!packed.ok) {\n throw packed.error;\n }\n return packed.value;\n })(),\n },\n },\n };\n}\n\nfunction sceneProduct(\n input: AssetOutputInput,\n components: ReadonlyMap<string, Readonly<Record<string, string>>>,\n): AssetOutputProduct {\n if (input.asset.kind !== 'scene') throw new TypeError('expected SceneAsset');\n const externalized = externalizeSceneAsset(input.asset as SceneAsset, (componentName) => {\n const schema = components.get(componentName);\n if (schema === undefined) {\n throw new TypeError(\n `ScriptablePack scene component ${componentName} is missing from sceneComponents`,\n );\n }\n return schema;\n });\n if (!externalized.ok) throw new TypeError(`scene field ${externalized.error.field} is invalid`);\n return {\n payload: { kind: 'scene', ...externalized.value.payload },\n refs: externalized.value.refs,\n artifacts: {},\n };\n}\n\nfunction containsAssetGuid(value: unknown): boolean {\n if (typeof value === 'string') return AssetGuid.parse(value).ok;\n if (Array.isArray(value)) return value.some(containsAssetGuid);\n if (value !== null && typeof value === 'object') {\n return Object.values(value as Record<string, unknown>).some(containsAssetGuid);\n }\n return false;\n}\n\n/**\n * Direct v3 scenes migrated from Pack v2 already carry runtime ref indices in\n * their component payload. There is no component-schema authority in a JSON\n * direct entry, so preserve that transport shape and let the entry's explicit\n * refs provide the closure. A GUID-bearing scene is still sent through the\n * schema-backed producer and therefore fails closed when no schema is present.\n */\nfunction preExternalizedSceneProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'scene') throw new TypeError('expected SceneAsset');\n if (containsAssetGuid(input.asset)) {\n throw new TypeError('direct scene payload must use explicit refs with runtime indices');\n }\n return {\n payload: { ...(input.asset as SceneAsset), kind: 'scene' },\n refs: [],\n artifacts: {},\n };\n}\n\nfunction createSafeProducer(\n kind: AssetOutputProducer['kind'],\n version: string,\n product: (input: AssetOutputInput) => AssetOutputProduct,\n): AssetOutputProducer {\n return {\n kind,\n version,\n produce(input) {\n try {\n return ok(product(input));\n } catch (error) {\n return err(producerError(input, error));\n }\n },\n };\n}\n\nfunction jsonArtifact(value: unknown): ImportedArtifactBody {\n return {\n mediaType: 'application/json',\n assetCodec: { name: 'forgeax-json', version: '1' },\n bytes: new TextEncoder().encode(JSON.stringify(value)),\n };\n}\n\nfunction ref(guid: AssetGuidType, fieldName: string, arrayIndex?: number): AssetRef {\n return {\n guid: formatGuid(guid),\n sourceField: { fieldName, ...(arrayIndex === undefined ? {} : { arrayIndex }) },\n };\n}\n\nfunction bytes(value: Uint8Array | Uint8ClampedArray): Uint8Array {\n return Uint8Array.from(value);\n}\n\nfunction textureProduct(input: AssetOutputInput): AssetOutputProduct {\n if (input.asset.kind !== 'texture') throw new TypeError('expected TextureAsset');\n const texture = input.asset as TextureAsset;\n const layout = deriveTextureLayout({\n shape: texture.shape,\n format: texture.format,\n mips: texture.mips,\n actualByteLength: texture.data.byteLength,\n order: 'mip-major,image-major,row-major',\n });\n if (!layout.ok) {\n const expectedBytes =\n layout.error.code === 'texture-packing-invalid'\n ? layout.error.detail.expectedBytes\n : texture.data.byteLength;\n const actualBytes =\n layout.error.code === 'texture-packing-invalid'\n ? layout.error.detail.actualBytes\n : texture.data.byteLength;\n throw new TypeError(\n `texture data is not canonical: expected ${expectedBytes} bytes, got ${actualBytes}`,\n );\n }\n return {\n payload: texture,\n refs: [],\n artifacts: {\n body: {\n mediaType:\n texture.format === 'r8unorm'\n ? 'application/x-forgeax-r8'\n : `application/x-forgeax-${texture.format}`,\n assetCodec: { name: texture.format, version: '1' },\n bytes: bytes(texture.data),\n },\n },\n };\n}\n\nfunction ordinaryPodProduct(input: AssetOutputInput): AssetOutputProduct {\n const asset = input.asset;\n switch (asset.kind) {\n case 'texture':\n return textureProduct(input);\n case 'equirect': {\n const equirect = asset as EquirectAsset;\n return {\n payload: equirect,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'image/raw',\n assetCodec: { name: 'raw-image', version: '1' },\n bytes: bytes(equirect.data),\n },\n },\n };\n }\n case 'sampler': {\n const sampler = asset as SamplerAsset;\n return { payload: sampler, refs: [], artifacts: { body: jsonArtifact(sampler) } };\n }\n case 'font': {\n const font = asset as FontAsset;\n const atlas = ref(font.atlas, 'atlas');\n const sampler = ref(font.sampler, 'sampler');\n return {\n payload: {\n kind: font.kind,\n glyphs: font.glyphs,\n common: font.common,\n atlasGuid: atlas.guid,\n samplerGuid: sampler.guid,\n },\n refs: [atlas, sampler],\n artifacts: { body: jsonArtifact(font) },\n };\n }\n case 'render-pipeline': {\n const pipeline = asset as RenderPipelineAsset;\n return {\n payload: pipeline,\n refs: [],\n artifacts: { body: jsonArtifact(pipeline) },\n };\n }\n case 'tileset': {\n const tileset = asset as TilesetAsset;\n const refs = tileset.atlases.map((atlas, index) => {\n const parsed = AssetGuid.parse(atlas);\n if (!parsed.ok) throw parsed.error;\n return ref(parsed.value, 'atlases', index);\n });\n return {\n payload: { ...tileset, atlases: refs.map((_entry, index) => index) },\n refs,\n artifacts: { body: jsonArtifact(tileset) },\n };\n }\n case 'video': {\n const video = asset as VideoAsset;\n try {\n const url = new URL(video.url);\n if (url.protocol !== 'http:' && url.protocol !== 'https:')\n throw new Error('unsupported URL scheme');\n } catch (error) {\n throw new TypeError(\n `video URL is invalid: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n return { payload: video, refs: [], artifacts: {} };\n }\n case 'skeleton': {\n const skeleton = asset as SkeletonAsset;\n return {\n payload: skeleton,\n refs: [],\n artifacts: { body: jsonArtifact(skeleton) },\n };\n }\n case 'skin': {\n const skin = asset as SkinAsset;\n const skeletonGuid = AssetGuid.parse(skin.skeletonGuid);\n if (!skeletonGuid.ok) throw skeletonGuid.error;\n return {\n payload: skin,\n refs: [ref(skeletonGuid.value, 'skeletonGuid')],\n artifacts: { body: jsonArtifact(skin) },\n };\n }\n case 'animation-clip':\n return {\n payload: asset,\n refs: [],\n artifacts: { body: jsonArtifact(asset) },\n };\n case 'animation-graph': {\n const graph = asset as AnimationGraph;\n const refs: AssetRef[] = [];\n const nodes = graph.nodes.map((node, index) => {\n if (node.type !== 'clip') return node;\n const parsed = AssetGuid.parse(node.clip);\n if (!parsed.ok) throw parsed.error;\n const referenceIndex = refs.push(ref(parsed.value, 'nodes', index)) - 1;\n return { ...node, clip: referenceIndex };\n });\n return {\n payload: { kind: graph.kind, root: graph.root, nodes },\n refs,\n artifacts: { body: jsonArtifact(graph) },\n };\n }\n case 'audio': {\n const audio = asset as AudioClipAsset;\n return {\n payload: {\n kind: audio.kind,\n sourceKey: audio.sourceKey,\n mediaType: audio.mediaType,\n bytes: audio.bytes.slice(),\n },\n refs: [],\n artifacts: {\n source: {\n mediaType: audio.mediaType,\n assetCodec: { name: 'browser-audio', version: '1' },\n bytes: audio.bytes.slice(),\n },\n },\n };\n }\n case 'particle-effect': {\n const effect = asset as ParticleEffectAsset;\n const cooked = particleProgramArtifact(effect);\n const refs = new Set<string>();\n for (const emitter of cooked.program.emitters) {\n for (const renderer of emitter.renderers) {\n if (!('material' in renderer) || typeof renderer.material !== 'string') {\n throw new Error(`Particle emitter '${emitter.id}' requires a renderer Material GUID`);\n }\n refs.add(formatGuid(renderer.material));\n if ('kind' in renderer && renderer.kind === 'mesh') {\n if (!('mesh' in renderer) || typeof renderer.mesh !== 'string') {\n throw new Error(`Particle emitter '${emitter.id}' requires a renderer Mesh GUID`);\n }\n refs.add(formatGuid(renderer.mesh));\n }\n }\n }\n return {\n payload: { ...effect, programFingerprint: cooked.fingerprint, program: cooked.program },\n refs: [...refs].sort().map((guid) => ({ guid })),\n artifacts: {\n 'particle-effect/program.json': {\n mediaType: 'application/json',\n assetCodec: { name: 'forgeax-vfx-program', version: effect.program.format },\n bytes: cooked.bytes,\n },\n },\n };\n }\n case 'ies-profile': {\n const profile = asset as IesProfileAsset;\n return {\n payload: profile,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'application/octet-stream',\n assetCodec: { name: 'forgeax-ies-profile', version: '1' },\n bytes: bytes(profile.data),\n },\n },\n };\n }\n case 'material':\n case 'mesh':\n case 'scene':\n throw new TypeError(`ordinary producer received already-owned ${asset.kind} asset`);\n }\n}\n\nexport const materialAssetOutputProducer = createSafeProducer(\n 'material',\n 'material-pack/2',\n materialProduct,\n);\n\nexport const meshAssetOutputProducer = createSafeProducer('mesh', 'mesh-binary/4', meshProduct);\nexport const textureAssetOutputProducer = createSafeProducer(\n 'texture',\n 'texture-pack/1',\n textureProduct,\n);\n\nexport function createSceneAssetOutputProducer(\n sceneComponents: readonly ScriptablePackSceneComponent[] = [],\n): AssetOutputProducer {\n const schemas = new Map(\n sceneComponents.map((component) => [component.name, component.fields] as const),\n );\n return createSafeProducer('scene', 'scene-pack/3', (input) => sceneProduct(input, schemas));\n}\n\nexport function createPreExternalizedSceneAssetOutputProducer(): AssetOutputProducer {\n return createSafeProducer('scene', 'scene-pack/3', preExternalizedSceneProduct);\n}\n\nexport function createStandardAssetOutputProducerRegistry(\n sceneComponents: readonly ScriptablePackSceneComponent[] = [],\n): AssetOutputProducerRegistry {\n const registry = new AssetOutputProducerRegistry();\n registry.register(materialAssetOutputProducer);\n registry.register(meshAssetOutputProducer);\n registry.register(textureAssetOutputProducer);\n registry.register(createSceneAssetOutputProducer(sceneComponents));\n for (const kind of [\n 'equirect',\n 'sampler',\n 'font',\n 'render-pipeline',\n 'tileset',\n 'video',\n 'skeleton',\n 'skin',\n 'animation-clip',\n 'animation-graph',\n 'audio',\n 'particle-effect',\n 'ies-profile',\n ] as const) {\n registry.register(\n createSafeProducer(\n kind,\n kind === 'particle-effect' ? 'particle-effect/2' : 'ordinary-pod/1',\n ordinaryPodProduct,\n ),\n );\n }\n return registry;\n}\n","import { BUILTIN_MESH_ASSETS } from '@forgeax/engine-pack/builtin';\nimport { type NativeCooker, NativeCookerRegistry } from '@forgeax/engine-pack/native-cooker';\nimport {\n type AnyScriptablePackDefinition,\n AssetGuid,\n isScriptablePackAssetKind,\n isValidPackSourceKey,\n type PackAuthoringError,\n PackageId,\n type PackBuildContextWithoutParameters,\n type PackBuildContextWithParameters,\n type PackParameterDefinition,\n type PackParameterValue,\n resolvePackParameterValues,\n} from '@forgeax/engine-pack/source';\nimport { isEngineMaterial } from '@forgeax/engine-shader';\nimport type {\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n AssetRef,\n ImportedAsset,\n Result,\n} from '@forgeax/engine-types';\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport {\n createImportProduct,\n type ImportAssetProduct,\n type TerminalImportProduct,\n} from './import-product.js';\nimport type {\n AssetOutputProducer,\n AssetOutputProducerRegistry,\n PackBuildProduct,\n ScriptablePackAssetSnapshotSource,\n ScriptablePackDomainError,\n ScriptablePackExternalEvidence,\n ScriptablePackSourceClosureEntry,\n ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\nimport { materialAssetOutputProducer } from './scriptable-pack-output-producers.js';\n\nexport interface ScriptablePackBuildOptions {\n readonly definition: AnyScriptablePackDefinition;\n readonly sourcePath: string;\n /** Instance identity. Omitted for a root source and defaults to definition.packageId. */\n readonly subjectPackageId?: PackageId;\n /** Sparse instance values; defaults are applied before build. */\n readonly values?: Readonly<Record<string, unknown>>;\n /** Effective parent values supplied by the inheritance resolver. */\n readonly inheritedValues?: Readonly<Record<string, PackParameterValue>>;\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n readonly outputs: AssetOutputProducerRegistry;\n /** Optional build-time cookers for authored producer outputs that need artifacts. */\n readonly cookers?: readonly NativeCooker[];\n readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];\n readonly authoringContractVersion?: string;\n /** Known published GUIDs used for the optional global reference gate. */\n readonly availableGuids?: ReadonlySet<string>;\n /** Worklist mode defers reference closure until every subject is materialized. */\n readonly deferReferenceValidation?: boolean;\n readonly publication?: AssetPublicationEnvelope;\n}\n\nexport interface ScriptablePackBuildProduct extends PackBuildProduct {\n readonly publication?: AssetPublicationEnvelope;\n}\n\nexport type ScriptablePackBuildResult = Result<\n ScriptablePackBuildProduct,\n | PackAuthoringError\n | ScriptablePackDomainError\n | AssetError\n | ImportError\n | {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n }\n>;\n\ninterface ObservedRead {\n readonly guid: string;\n readonly asset: Asset;\n readonly generation: number;\n readonly digest: string;\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isAsset(value: unknown): value is Asset {\n return record(value) && typeof value.kind === 'string' && isScriptablePackAssetKind(value.kind);\n}\n\nfunction needsMaterialCook(asset: Asset): asset is Extract<Asset, { readonly kind: 'material' }> {\n return asset.kind === 'material' && Array.isArray(asset.passes) && !isEngineMaterial(asset);\n}\n\nfunction clone<T>(value: T): T {\n return structuredClone(value);\n}\n\nfunction stable(value: unknown): string {\n if (value instanceof Uint8Array) return JSON.stringify(Array.from(value));\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const object = value as Record<string, unknown>;\n return `{${Object.keys(object)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(object[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nasync function digest(value: unknown): Promise<string> {\n const crypto = globalThis.crypto?.subtle;\n if (crypto === undefined) throw new Error('Web Crypto API is required for Pack fingerprints');\n const bytes = await crypto.digest('SHA-256', new TextEncoder().encode(stable(value)));\n return `sha256:${Array.from(new Uint8Array(bytes), (byte) => byte.toString(16).padStart(2, '0')).join('')}`;\n}\n\nfunction observedReader(source: ScriptablePackAssetSnapshotSource | undefined): {\n readonly reader: {\n readByGuid<TAsset extends Asset = Asset>(guid: AssetGuidType): Promise<Result<TAsset, unknown>>;\n };\n readonly reads: ReadonlyMap<string, ObservedRead>;\n} {\n const reads = new Map<string, ObservedRead>();\n const reader = {\n async readByGuid<TAsset extends Asset = Asset>(\n guid: AssetGuidType,\n ): Promise<Result<TAsset, unknown>> {\n const key = AssetGuid.format(guid).toLowerCase();\n const cached = reads.get(key);\n if (cached !== undefined) return ok(clone(cached.asset) as TAsset);\n if (source === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-found',\n expected: `a published Asset snapshot for content dependency ${key}`,\n hint: 'publish the dependency or remove the content read from the Pack build',\n detail: { sourcePath: key },\n }),\n );\n }\n const result = await source.readByGuid(guid);\n if (!result.ok) return result;\n const asset = clone(result.value.asset);\n reads.set(key, {\n guid: key,\n asset,\n generation: result.value.generation,\n digest: result.value.digest,\n });\n return ok(clone(asset) as TAsset);\n },\n };\n return { reader, reads };\n}\n\nfunction buildContext(\n packageId: PackageId,\n values: Readonly<Record<string, PackParameterValue>> | undefined,\n reader: ReturnType<typeof observedReader>['reader'],\n):\n | PackBuildContextWithParameters<readonly [PackParameterDefinition, ...PackParameterDefinition[]]>\n | PackBuildContextWithoutParameters {\n if (values === undefined) return { packageId, readByGuid: reader.readByGuid };\n return { packageId, values, readByGuid: reader.readByGuid } as PackBuildContextWithParameters<\n readonly [PackParameterDefinition, ...PackParameterDefinition[]]\n >;\n}\n\nfunction sourceKeyFailure(sourcePath: string, sourceKey: unknown): PackAuthoringError {\n return {\n code: 'pack-source-key-invalid',\n expected: 'a sourceKey matching the Pack source-key grammar',\n hint: 'return stable lower-case semantic keys instead of paths or output indexes',\n detail: { sourcePath, sourceKey },\n };\n}\n\nfunction outputValueError(\n sourcePath: string,\n sourceKey: string,\n expected: string,\n actual: unknown,\n): PackAuthoringError {\n return {\n code: 'pack-parameter-invalid',\n expected,\n hint: 'repair the build output and rebuild the Pack from a fresh generation',\n detail: { sourcePath, sourceKey, actual: typeof actual === 'string' ? actual : typeof actual },\n };\n}\n\nfunction referenceError(\n code: 'pack-output-reference-missing' | 'pack-output-reference-conflict',\n sourcePath: string,\n guids: readonly string[],\n): PackAuthoringError {\n return {\n code,\n expected:\n code === 'pack-output-reference-missing'\n ? 'every output reference to resolve to a local or published AssetGuid'\n : 'removed output GUIDs to have no incoming references',\n hint:\n code === 'pack-output-reference-missing'\n ? 'build or publish the referenced Pack before verifying this output'\n : 'migrate incoming references before publishing the topology change',\n detail: { sourcePath, guids: [...guids].sort() },\n };\n}\n\nfunction productError(\n sourcePath: string,\n sourceKey: string,\n producer: AssetOutputProducer,\n product: unknown,\n): PackAuthoringError | undefined {\n if (!record(product)) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return an asset product object`,\n product,\n );\n }\n if (!Array.isArray(product.refs)) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return a refs array`,\n product.refs,\n );\n }\n if (!record(product.artifacts)) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return an artifacts object`,\n product.artifacts,\n );\n }\n const payload = product.payload;\n if (!record(payload) || payload.kind !== producer.kind) {\n return outputValueError(\n sourcePath,\n sourceKey,\n `producer ${producer.kind} to return a matching payload kind`,\n payload,\n );\n }\n for (const ref of product.refs) {\n if (!record(ref) || typeof ref.guid !== 'string' || !AssetGuid.parse(ref.guid).ok) {\n return outputValueError(\n sourcePath,\n sourceKey,\n 'producer refs to contain valid AssetGuid values',\n ref,\n );\n }\n }\n for (const [key, artifact] of Object.entries(product.artifacts)) {\n if (\n key.length === 0 ||\n key.startsWith('/') ||\n key.includes('..') ||\n key.includes('\\\\') ||\n !record(artifact) ||\n typeof artifact.mediaType !== 'string' ||\n !(artifact.bytes instanceof Uint8Array)\n ) {\n return outputValueError(\n sourcePath,\n sourceKey,\n 'asset-local artifacts with safe keys and bytes',\n key,\n );\n }\n }\n return undefined;\n}\n\nfunction errorCode(value: unknown): string | undefined {\n return record(value) && typeof value.code === 'string' ? value.code : undefined;\n}\n\nfunction normalizedGuidSet(value: ReadonlySet<string> | undefined): Set<string> | undefined {\n return value === undefined ? undefined : new Set([...value].map((guid) => guid.toLowerCase()));\n}\n\n/**\n * Execute a v2 Pack source and project its dynamic output map through the\n * existing importer producers. No output GUID or output manifest is read.\n */\nexport async function buildScriptablePack(\n options: ScriptablePackBuildOptions,\n): Promise<ScriptablePackBuildResult> {\n const subjectPackageId = options.subjectPackageId ?? options.definition.packageId;\n const availableGuids = normalizedGuidSet(options.availableGuids);\n const observed = observedReader(options.assetSource);\n let effectiveValues: Readonly<Record<string, PackParameterValue>> | undefined;\n if ('parameters' in options.definition) {\n const resolved = resolvePackParameterValues(\n options.definition,\n options.values ?? {},\n options.inheritedValues,\n );\n if (!resolved.ok) return resolved;\n effectiveValues = resolved.value;\n } else if (options.values !== undefined && Object.keys(options.values).length > 0) {\n return err(\n outputValueError(\n options.sourcePath,\n '$.values',\n 'zero-parameter Packs to omit values and instance capabilities',\n options.values,\n ),\n );\n } else if (\n options.subjectPackageId !== undefined &&\n PackageId.format(options.subjectPackageId).toLowerCase() !==\n PackageId.format(options.definition.packageId).toLowerCase()\n ) {\n return err({\n code: 'pack-parent-has-no-parameters',\n expected: 'a ScriptablePack source with parameters for an independent instance packageId',\n hint: 'use clone for a zero-parameter Pack instead of building it as an instance',\n detail: {\n sourcePath: options.sourcePath,\n rootPackageId: PackageId.format(options.definition.packageId),\n subjectPackageId: PackageId.format(options.subjectPackageId),\n },\n });\n }\n\n let built:\n | Result<Record<string, Asset>, unknown>\n | Promise<Result<Record<string, Asset>, unknown>>;\n try {\n const context = buildContext(subjectPackageId, effectiveValues, observed.reader);\n built = options.definition.build(context as never);\n built = await built;\n } catch (cause) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'Pack build to return a structured Result without throwing',\n hint: 'repair the authoring function and return err(...) for expected failures',\n detail: {\n reason: `${options.sourcePath}: ${cause instanceof Error ? cause.message : String(cause)}`,\n },\n }),\n );\n }\n if (!record(built) || typeof built.ok !== 'boolean') {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'Pack build to return a Result object',\n hint: 'return ok(sourceKeyToAsset) or err(structuredError) from the authoring function',\n detail: { reason: `${options.sourcePath}: malformed build result` },\n }),\n );\n }\n if (!built.ok) {\n if (errorCode(built.error) !== undefined) return err(built.error as never);\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'a structured Pack build error',\n hint: 'return an error carrying code, expected, hint and detail',\n detail: { reason: `${options.sourcePath}: ${String(built.error)}` },\n }),\n );\n }\n if (!record(built.value)) {\n return err(\n outputValueError(\n options.sourcePath,\n '$',\n 'build to return a sourceKey-to-Asset object',\n built.value,\n ),\n );\n }\n\n const imported: ImportedAsset<unknown>[] = [];\n const stagedOutputs: ScriptablePackStagedOutput[] = [];\n const localGuids = new Set<string>();\n const materialCookerRegistry = new NativeCookerRegistry();\n for (const cooker of options.cookers ?? []) materialCookerRegistry.register(cooker);\n const nativeFingerprints = new Map<string, string>();\n for (const sourceKey of Object.keys(built.value).sort()) {\n if (!isValidPackSourceKey(sourceKey))\n return err(sourceKeyFailure(options.sourcePath, sourceKey));\n const asset = built.value[sourceKey];\n if (!isAsset(asset)) {\n return err(\n outputValueError(\n options.sourcePath,\n sourceKey,\n 'a concrete Asset with a supported kind',\n asset,\n ),\n );\n }\n const guid = AssetGuid.format(AssetGuid.derive(subjectPackageId, sourceKey));\n const normalizedGuid = guid.toLowerCase();\n if (localGuids.has(normalizedGuid) || availableGuids?.has(normalizedGuid)) {\n return err({\n code: 'pack-guid-collision',\n expected: 'derived output GUIDs to be unique in the global source index',\n hint: 'change the colliding packageId or repair the source index before publishing',\n detail: { sourcePath: options.sourcePath, guid },\n });\n }\n localGuids.add(normalizedGuid);\n const producer = options.outputs.get(asset.kind);\n if (producer === undefined) {\n return err(\n outputValueError(\n options.sourcePath,\n sourceKey,\n `a registered output producer for ${asset.kind}`,\n asset.kind,\n ),\n );\n }\n let produced: unknown;\n try {\n produced = await producer.produce({ guid, sourceKey, asset });\n } catch (cause) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: `producer ${producer.kind} to return a structured Result without throwing`,\n hint: 'repair the output producer and return err(...) for expected failures',\n detail: {\n reason: `${options.sourcePath}:${sourceKey}: ${cause instanceof Error ? cause.message : String(cause)}`,\n },\n }),\n );\n }\n if (!record(produced) || typeof produced.ok !== 'boolean') {\n return err(\n outputValueError(\n options.sourcePath,\n sourceKey,\n `producer ${producer.kind} to return a Result`,\n produced,\n ),\n );\n }\n if (!produced.ok) {\n if (errorCode(produced.error) !== undefined) return err(produced.error as never);\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: `producer ${producer.kind} to return a structured error`,\n hint: 'return an error carrying code, expected, hint and detail',\n detail: { reason: `${options.sourcePath}:${sourceKey}: ${String(produced.error)}` },\n }),\n );\n }\n const invalidProduct = productError(options.sourcePath, sourceKey, producer, produced.value);\n if (invalidProduct !== undefined) return err(invalidProduct);\n const product = produced.value as ImportAssetProduct<unknown>;\n let payload = product.payload;\n let artifacts = product.artifacts;\n let refs = product.refs;\n if (needsMaterialCook(asset) && materialCookerRegistry.get('material') !== undefined) {\n const cooked = await materialCookerRegistry.runDraft('material', {\n guid,\n source: asset,\n sourceKey,\n sourcePath: options.sourcePath,\n refs: product.refs.map((reference) => reference.guid),\n });\n if (!cooked.ok) return err(cooked.error);\n if (cooked.value.guid.toLowerCase() !== normalizedGuid) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'the authored material cooker to preserve the derived AssetGuid',\n hint: 'repair the native material cooker output GUID and rebuild the Pack',\n detail: {\n sourcePath: options.sourcePath,\n sourceKey,\n expectedGuid: guid,\n actualGuid: cooked.value.guid,\n },\n });\n }\n // Native cooking owns shader/program composition, but the Pack output\n // producer owns the serialized wire shape. Re-project the cooked\n // material once so texture/sampler/parent values become refsIndex\n // entries again instead of leaking authored GUID strings into JSON.\n const cookedAsset = cooked.value.payload;\n if (!isAsset(cookedAsset) || cookedAsset.kind !== 'material') {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'the authored material cooker to return a material payload',\n hint: 'repair the native material cooker payload and rebuild the Pack',\n detail: { sourcePath: options.sourcePath, sourceKey },\n });\n }\n const projected = await materialAssetOutputProducer.produce({\n guid,\n sourceKey,\n asset: cookedAsset,\n });\n if (!projected.ok) return err(projected.error);\n const projectedInvalid = productError(\n options.sourcePath,\n sourceKey,\n materialAssetOutputProducer,\n projected.value,\n );\n if (projectedInvalid !== undefined) return err(projectedInvalid);\n payload = projected.value.payload;\n artifacts = {\n ...product.artifacts,\n ...cooked.value.artifacts,\n ...projected.value.artifacts,\n };\n const mergedRefs: AssetRef[] = [...projected.value.refs];\n const seenRefs = new Set(mergedRefs.map((reference) => reference.guid.toLowerCase()));\n for (const cookerRef of cooked.value.refs) {\n const parsed = AssetGuid.parse(cookerRef);\n if (!parsed.ok) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'the authored material cooker refs to contain valid AssetGuid values',\n hint: 'repair the native material cooker refs and rebuild the Pack',\n detail: { sourcePath: options.sourcePath, sourceKey, ref: cookerRef },\n });\n }\n const formatted = AssetGuid.format(parsed.value);\n const normalizedRef = formatted.toLowerCase();\n if (seenRefs.has(normalizedRef)) continue;\n seenRefs.add(normalizedRef);\n mergedRefs.push({ guid: formatted });\n }\n refs = mergedRefs;\n nativeFingerprints.set(sourceKey, cooked.value.inputFingerprint);\n }\n imported.push({\n guid,\n kind: asset.kind,\n payload,\n refs,\n artifacts,\n });\n stagedOutputs.push({\n guid: AssetGuid.derive(subjectPackageId, sourceKey),\n sourceKey,\n asset: clone(asset),\n digest: await digest(asset),\n });\n }\n\n const referenced = new Set<string>();\n for (const asset of imported) {\n for (const ref of asset.refs) {\n const guid = ref.guid.toLowerCase();\n if (!localGuids.has(guid)) referenced.add(guid);\n }\n }\n if (options.deferReferenceValidation !== true) {\n const missing = [...referenced].filter(\n (guid) => availableGuids !== undefined && !availableGuids.has(guid),\n );\n if (missing.length > 0)\n return err(referenceError('pack-output-reference-missing', options.sourcePath, missing));\n }\n\n const externalEvidence: ScriptablePackExternalEvidence[] = [...observed.reads.values()]\n .sort((left, right) => left.guid.localeCompare(right.guid))\n .map(\n (read): ScriptablePackExternalEvidence => ({\n guid: read.guid,\n usage: referenced.has(read.guid) ? 'both' : 'content',\n generation: read.generation,\n digest: read.digest,\n }),\n );\n const authoredInputFingerprint = await digest({\n packageId: PackageId.format(subjectPackageId),\n sourcePath: options.sourcePath,\n sourceClosure: options.sourceClosure ?? [],\n values: effectiveValues,\n externalEvidence: externalEvidence.map(({ guid, usage, digest: evidenceDigest }) => ({\n guid,\n usage,\n digest: evidenceDigest,\n })),\n authoringContractVersion: options.authoringContractVersion ?? 'scriptable-pack/1',\n producerVersions: options.outputs.versions(),\n });\n const inputFingerprint =\n nativeFingerprints.size === 0\n ? authoredInputFingerprint\n : await digest({\n sourceRevision: authoredInputFingerprint,\n nativeCookers: [...nativeFingerprints.entries()].sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n });\n const refs = imported.flatMap((asset) => asset.refs);\n const artifacts = Object.fromEntries(\n imported.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [`${asset.guid}/${key}`, artifact]),\n ),\n );\n const product = createImportProduct({\n assets: imported,\n sourceDependencies: (options.sourceClosure ?? []).map((entry) => entry.path),\n refs,\n artifacts,\n receipts: imported.map((asset) => ({\n guid: asset.guid,\n origin: 'authoredPack' as const,\n status: 'succeeded' as const,\n inputFingerprint,\n })),\n diagnostics: [],\n sourceRevision: inputFingerprint,\n sourceKey: options.sourcePath,\n });\n if (!product.ok) return err(product.error);\n return ok({\n product: product.value,\n stagedOutputs,\n externalEvidence,\n inputFingerprint,\n ...(options.publication === undefined ? {} : { publication: options.publication }),\n });\n}\n\nexport interface ScriptablePackBuildWorkItem {\n readonly definition: AnyScriptablePackDefinition;\n readonly sourcePath: string;\n readonly subjectPackageId?: PackageId;\n readonly values?: Readonly<Record<string, unknown>>;\n readonly inheritedValues?: Readonly<Record<string, PackParameterValue>>;\n readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];\n}\n\nexport interface ScriptablePackBuildWorklistOptions {\n readonly subjects: readonly ScriptablePackBuildWorkItem[];\n readonly outputs: AssetOutputProducerRegistry;\n /** Optional build-time cookers forwarded to each authored Pack subject. */\n readonly cookers?: readonly NativeCooker[];\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n readonly availableGuids?: ReadonlySet<string>;\n readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;\n readonly maxPasses?: number;\n}\n\nexport interface ScriptablePackBuildWorklistProduct {\n readonly products: readonly TerminalImportProduct<unknown>[];\n readonly buildProducts: readonly ScriptablePackBuildProduct[];\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n readonly iterations: number;\n}\n\nfunction stagedSource(\n staged: ReadonlyMap<string, ScriptablePackStagedOutput>,\n fallback: ScriptablePackAssetSnapshotSource | undefined,\n): ScriptablePackAssetSnapshotSource {\n return {\n async readByGuid(guid) {\n const key = AssetGuid.format(guid).toLowerCase();\n const local = staged.get(key);\n if (local !== undefined) {\n return ok({\n asset: clone(local.asset),\n generation: 1,\n digest: local.digest ?? 'sha256:staged',\n });\n }\n if (fallback === undefined) {\n return err({\n code: 'asset-not-found',\n expected: 'a staged or published content dependency',\n hint: 'wait for the dependency subject to materialize',\n detail: { guid: key },\n });\n }\n return fallback.readByGuid(guid);\n },\n };\n}\n\n/** Build subjects in stable passes; content reads may wait for a later subject. */\nexport async function buildScriptablePackWorklist(\n options: ScriptablePackBuildWorklistOptions,\n): Promise<\n Result<\n ScriptablePackBuildWorklistProduct,\n | PackAuthoringError\n | ScriptablePackDomainError\n | AssetError\n | ImportError\n | {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n }\n >\n> {\n const orderedSubjects = [...options.subjects].sort((left, right) =>\n left.sourcePath.localeCompare(right.sourcePath),\n );\n const pending = new Map(\n orderedSubjects.map((subject, index) => [`${index}:${subject.sourcePath}`, subject]),\n );\n const staged = new Map<string, ScriptablePackStagedOutput>();\n const results = new Map<string, ScriptablePackBuildProduct>();\n const availableGuids = new Set([\n ...(normalizedGuidSet(options.availableGuids) ?? []),\n ...BUILTIN_MESH_ASSETS.map((asset) => asset.guid.toLowerCase()),\n ]);\n const maxPasses = options.maxPasses ?? Math.max(1, options.subjects.length + 1);\n let iterations = 0;\n for (; iterations < maxPasses && pending.size > 0; iterations += 1) {\n let progress = false;\n const waiting = new Set<string>();\n for (const [key, subject] of pending) {\n const result = await buildScriptablePack({\n definition: subject.definition,\n sourcePath: subject.sourcePath,\n ...(subject.subjectPackageId === undefined\n ? {}\n : { subjectPackageId: subject.subjectPackageId }),\n ...(subject.values === undefined ? {} : { values: subject.values }),\n ...(subject.inheritedValues === undefined\n ? {}\n : { inheritedValues: subject.inheritedValues }),\n ...(subject.sourceClosure === undefined ? {} : { sourceClosure: subject.sourceClosure }),\n outputs: options.outputs,\n ...(options.cookers === undefined ? {} : { cookers: options.cookers }),\n assetSource: stagedSource(staged, options.assetSource),\n availableGuids: new Set([...availableGuids, ...staged.keys()]),\n deferReferenceValidation: true,\n });\n if (result.ok) {\n results.set(key, result.value);\n for (const output of result.value.stagedOutputs)\n staged.set(AssetGuid.format(output.guid).toLowerCase(), output);\n pending.delete(key);\n progress = true;\n continue;\n }\n if (errorCode(result.error) === 'asset-not-found') {\n const detail =\n record(result.error) && record(result.error.detail) ? result.error.detail : undefined;\n const guid =\n detail !== undefined && typeof detail.guid === 'string' ? detail.guid : undefined;\n if (guid !== undefined) waiting.add(guid.toLowerCase());\n continue;\n }\n return result;\n }\n if (pending.size === 0) break;\n if (!progress) {\n return err({\n code: 'pack-content-dependency-stalled',\n expected: 'the content dependency worklist to make progress',\n hint: 'inspect waitingGuids and repair the missing output or content-read cycle, then rebuild',\n detail: {\n waitingGuids: [...waiting].sort(),\n pendingSubjects: [...pending.values()].map((subject) => subject.sourcePath).sort(),\n iterations: iterations + 1,\n },\n });\n }\n }\n if (pending.size > 0) {\n return err({\n code: 'pack-content-dependency-stalled',\n expected: 'the content dependency worklist to finish within its bounded retry budget',\n hint: 'inspect pendingSubjects and waitingGuids, then repair the dependency graph',\n detail: {\n pendingSubjects: [...pending.values()].map((subject) => subject.sourcePath).sort(),\n waitingGuids: [],\n iterations,\n },\n });\n }\n const knownGuids = new Set([...availableGuids, ...staged.keys()]);\n const missingReferences = new Set<string>();\n for (const product of results.values()) {\n const contentReads = new Set(product.externalEvidence.map((read) => read.guid.toLowerCase()));\n for (const asset of product.product.assets) {\n for (const reference of asset.refs) {\n const guid = reference.guid.toLowerCase();\n if (!knownGuids.has(guid) && !contentReads.has(guid)) missingReferences.add(guid);\n }\n }\n }\n if (missingReferences.size > 0) {\n return err(\n referenceError('pack-output-reference-missing', 'worklist', [...missingReferences].sort()),\n );\n }\n const removed = [...(options.incomingRefs?.keys() ?? [])].filter(\n (guid) => !staged.has(guid.toLowerCase()),\n );\n const referencedRemoved = removed.filter(\n (guid) => (options.incomingRefs?.get(guid) ?? []).length > 0,\n );\n if (referencedRemoved.length > 0)\n return err(referenceError('pack-output-reference-conflict', 'worklist', referencedRemoved));\n return ok({\n products: [...results.values()].map((result) => result.product),\n buildProducts: [...results.values()],\n stagedOutputs: [...staged.values()],\n iterations: pending.size === 0 && options.subjects.length > 0 ? iterations + 1 : iterations,\n });\n}\n","import type {\n ImportErrorDetail,\n ImportedAsset,\n ImportProduct,\n ImportProductFinalizeOptions,\n ImportProductFinalizeResult,\n Result,\n} from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport type { ImportRunnerFs, RunImportMeta } from './import-runner.js';\nimport { runImport } from './import-runner.js';\nimport type { ImporterRegistry } from './importer-registry.js';\n\nexport type ProducerReadiness = 'before-consume' | 'on-demand';\n\nexport interface ProducerReadinessError {\n readonly code: 'producer-readiness-invalid';\n readonly expected: \"'before-consume' or 'on-demand'\";\n readonly hint: 'set producerReadiness to before-consume or on-demand';\n readonly detail: { readonly value: unknown };\n}\n\nexport type ProducerReadinessResult =\n | { readonly ok: true; readonly value: ProducerReadiness }\n | { readonly ok: false; readonly error: ProducerReadinessError };\n\nexport function parseProducerReadiness(value: unknown): ProducerReadinessResult {\n if (value === undefined || value === 'before-consume' || value === 'on-demand') {\n return { ok: true, value: value ?? 'before-consume' };\n }\n return {\n ok: false,\n error: {\n code: 'producer-readiness-invalid',\n expected: \"'before-consume' or 'on-demand'\",\n hint: 'set producerReadiness to before-consume or on-demand',\n detail: { value },\n },\n };\n}\n\nexport interface SourcePackageProducerInput {\n readonly meta: RunImportMeta;\n readonly registry: ImporterRegistry;\n readonly fs: ImportRunnerFs;\n}\n\nexport interface SourcePackageClosureDetail {\n readonly stage: 'closure';\n readonly declaredGuids: readonly string[];\n readonly producedGuids: readonly string[];\n readonly missingGuids: readonly string[];\n readonly unexpectedGuids: readonly string[];\n readonly duplicateGuids: readonly string[];\n}\n\nexport interface SourcePackageClosureError {\n readonly code: 'source-package-guid-closure-mismatch';\n readonly expected: string;\n readonly hint: string;\n readonly detail: SourcePackageClosureDetail;\n}\n\nexport interface SourcePackageProduct {\n readonly anchorGuid: string;\n readonly declaredGuids: readonly string[];\n readonly product: ImportProduct<unknown>;\n}\n\ntype SourcePackageFinalizeError = Extract<\n ImportProductFinalizeResult,\n { readonly ok: false }\n>['error'];\n\n/** Apply an importer-owned transport finalizer without teaching the adapter its kind. */\nexport function finalizeSourcePackage(\n product: ImportProduct<unknown>,\n finalizer:\n | ((\n product: ImportProduct<unknown>,\n options: ImportProductFinalizeOptions,\n ) => ImportProductFinalizeResult)\n | undefined,\n artifactUrl: ImportProductFinalizeOptions['artifactUrl'],\n): Result<ImportProduct<unknown>, SourcePackageFinalizeError> {\n if (finalizer === undefined) return ok(product);\n const result = finalizer(product, { artifactUrl });\n if (!result.ok) return err(result.error);\n return ok({\n ...product,\n assets: product.assets.map((asset, index) =>\n index === 0 ? { ...asset, payload: result.value.asset } : asset,\n ),\n });\n}\n\nexport type SourcePackageProducerResult =\n | { readonly ok: true; readonly value: SourcePackageProduct }\n | { readonly ok: false; readonly error: SourcePackageClosureError };\n\nfunction closureError(\n declaredGuids: readonly string[],\n producedGuids: readonly string[],\n): SourcePackageClosureError {\n const declared = new Set(declaredGuids.map((guid) => guid.toLowerCase()));\n const produced = new Set(producedGuids.map((guid) => guid.toLowerCase()));\n const counts = new Map<string, number>();\n for (const guid of producedGuids) {\n const key = guid.toLowerCase();\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n const duplicateGuids = [...counts.entries()]\n .filter(([, count]) => count > 1)\n .map(([guid]) => guid);\n return {\n code: 'source-package-guid-closure-mismatch',\n expected: 'the importer to return exactly one asset for every declared Meta GUID',\n hint: 'repair the Meta declaration or importer output, then rebuild the whole source package',\n detail: {\n stage: 'closure',\n declaredGuids,\n producedGuids,\n missingGuids: declaredGuids.filter((guid) => !produced.has(guid.toLowerCase())),\n unexpectedGuids: producedGuids.filter((guid) => !declared.has(guid.toLowerCase())),\n duplicateGuids,\n },\n };\n}\n\nfunction producedGuidsFromImportFailure(\n declaredGuids: readonly string[],\n detail: ImportErrorDetail,\n): readonly string[] {\n if ('missingGuids' in detail) {\n return declaredGuids.filter((guid) => !detail.missingGuids.includes(guid));\n }\n if ('unexpectedGuids' in detail) return [...declaredGuids, ...detail.unexpectedGuids];\n return [];\n}\n\nexport async function produceSourcePackage(\n input: SourcePackageProducerInput,\n): Promise<SourcePackageProducerResult> {\n const declaredGuids = input.meta.subAssets.map((asset) => asset.guid);\n const result = await runImport(input.meta, input.registry, input.fs);\n if (!result.ok) {\n const producedGuids = producedGuidsFromImportFailure(declaredGuids, result.error.detail);\n return {\n ok: false,\n error: closureError(declaredGuids, producedGuids),\n };\n }\n if ('skipped' in result.value) {\n return { ok: false, error: closureError(declaredGuids, []) };\n }\n\n const producedGuids = result.value.product.assets.map((asset) => asset.guid);\n const declaredSet = new Set(declaredGuids.map((guid) => guid.toLowerCase()));\n const producedSet = new Set(producedGuids.map((guid) => guid.toLowerCase()));\n const hasDuplicate =\n new Set(producedGuids.map((guid) => guid.toLowerCase())).size !== producedGuids.length;\n const complete =\n !hasDuplicate &&\n declaredGuids.length === producedGuids.length &&\n declaredGuids.every((guid) => producedSet.has(guid.toLowerCase())) &&\n producedGuids.every((guid) => declaredSet.has(guid.toLowerCase()));\n if (!complete) return { ok: false, error: closureError(declaredGuids, producedGuids) };\n\n const product = result.value.product;\n const anchorGuid = [...declaredGuids].sort((left, right) => left.localeCompare(right))[0];\n if (anchorGuid === undefined)\n return { ok: false, error: closureError(declaredGuids, producedGuids) };\n return {\n ok: true,\n value: {\n anchorGuid,\n declaredGuids,\n product,\n },\n };\n}\n\nexport function sourcePackageAssetsByGuid(\n source: SourcePackageProduct,\n): ReadonlyMap<string, ImportedAsset<unknown>> {\n return new Map(source.product.assets.map((asset) => [asset.guid.toLowerCase(), asset]));\n}\n","import { stat } from 'node:fs/promises';\nimport { createAcceptedPublication } from '@forgeax/engine-ddc';\nimport { normalizeMeshPayload } from '@forgeax/engine-geometry';\nimport {\n finalizePackageTransportSource,\n type PackageFinalizePolicy,\n type PackageProductAsset,\n packageTransportRevision,\n resolveAssetSource,\n} from '@forgeax/engine-pack/build';\nimport { BUILTIN_MESH_ASSETS } from '@forgeax/engine-pack/builtin';\nimport { AssetGuid, PackageId, type PackageId as PackageIdType } from '@forgeax/engine-pack/guid';\nimport {\n type NativeCookDraft,\n type NativeCooker,\n NativeCookerRegistry,\n} from '@forgeax/engine-pack/native-cooker';\nimport type {\n LegacyPackInventoryDocument,\n ScanSourceDeclaration,\n} from '@forgeax/engine-pack/scanner';\nimport {\n type AnyScriptablePackDefinition,\n type DirectPackAssetProjection,\n isScriptablePackAssetKind,\n parsePackSourceJson,\n projectDirectPackJson,\n projectScriptablePackSceneComponents,\n type ScriptablePackSourceClosureEntry,\n} from '@forgeax/engine-pack/source';\nimport { isEngineMaterial } from '@forgeax/engine-shader';\nimport type {\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n AssetPublicationOutput,\n AssetRef,\n ImportedArtifactBody,\n ImportedAsset,\n MaterialAsset,\n ResourceRevision,\n Result,\n} from '@forgeax/engine-types';\nimport { AssetError, err, ok } from '@forgeax/engine-types';\nimport type { DdcPack, ImportRunnerFs, RunImportMeta } from './import-runner.js';\nimport type { ImporterRegistry } from './importer-registry.js';\nimport { projectImportProductForBuild } from './pack-projection.js';\nimport type {\n ScriptablePackAssetSnapshotSource,\n ScriptablePackDomainError,\n ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\nimport {\n buildScriptablePack,\n buildScriptablePackWorklist,\n type ScriptablePackBuildProduct,\n type ScriptablePackBuildWorkItem,\n} from './scriptable-pack-build.js';\nimport {\n createPreExternalizedSceneAssetOutputProducer,\n createStandardAssetOutputProducerRegistry,\n} from './scriptable-pack-output-producers.js';\nimport { produceSourcePackage } from './source-package.js';\n\ntype FinalizedPackageTransport = Awaited<ReturnType<typeof finalizePackageTransportSource>>;\n\nexport interface ScriptablePackInput {\n readonly sourcePath: string;\n readonly displaySourcePath: string;\n readonly definition: AnyScriptablePackDefinition;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n readonly publicationGeneration: number;\n readonly policy:\n | PackageFinalizePolicy\n | ((product: ScriptablePackBuildProduct) => PackageFinalizePolicy);\n readonly subjectPackageId?: PackageIdType;\n readonly values?: Readonly<Record<string, unknown>>;\n readonly inheritedValues?: Readonly<\n Record<string, import('@forgeax/engine-pack/source').PackParameterValue>\n >;\n}\n\nexport interface PreparedScriptablePack {\n readonly product: ScriptablePackBuildProduct;\n readonly finalized: FinalizedPackageTransport;\n readonly facts: ScriptablePackPublicationFacts;\n readonly revision: ResourceRevision;\n readonly publication: AssetPublicationEnvelope;\n}\n\nexport interface ScriptablePackProductionOptions {\n readonly sources: readonly ScriptablePackInput[];\n readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n /** Build-time producers used for custom or otherwise uncooked asset rows. */\n readonly cookers?: readonly NativeCooker[];\n readonly availableGuids?: ReadonlySet<string>;\n readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;\n readonly maxPasses?: number;\n}\n\nexport interface ScriptablePackPublicationFacts {\n readonly outputs: readonly AssetPublicationOutput[];\n readonly refs: ReadonlyMap<string, readonly string[]>;\n}\n\nexport interface ScriptablePackTransportPaths {\n readonly packagePath: string;\n readonly artifactPath: (path: string) => string;\n readonly receiptPath: (guid: string) => string;\n}\n\nexport interface ScriptablePackTransportSink {\n writePackage(path: string, body: string): void | Promise<void>;\n writeArtifact(path: string, bytes: Uint8Array, mimeType: string): void | Promise<void>;\n writeReceipt(path: string, body: string): void | Promise<void>;\n}\n\n/** Build-time capabilities required to expose ordinary Meta products to a Pack. */\nexport interface ScriptablePackExternalImportOptions {\n readonly importerRegistry: ImporterRegistry;\n readonly fsForImport: ImportRunnerFs;\n}\n\nexport function canonicalScriptableSourcePath(sourcePath: string): string {\n const normalized = sourcePath.replaceAll('\\\\', '/');\n const marker = '/assets/';\n const markerIndex = normalized.indexOf(marker);\n return markerIndex < 0 ? normalized : normalized.slice(markerIndex + 1);\n}\n\n/** Stage materialized outputs owned by Meta or an already-cooked Pack v2 document. */\nexport async function declaredPackExternalOutputs(\n declarations: ReadonlyMap<string, ScanSourceDeclaration>,\n cookers: readonly NativeCooker[] = [],\n requiredGuids: readonly AssetGuidType[] = [],\n externalImport?: ScriptablePackExternalImportOptions,\n): Promise<readonly ScriptablePackStagedOutput[]> {\n if (requiredGuids.length === 0) return [];\n const required = new Set(requiredGuids.map((guid) => AssetGuid.format(guid).toLowerCase()));\n const available = new Set(required);\n for (const declaration of declarations.values()) {\n if (declaration.format !== 'meta.json') continue;\n for (const asset of declaration.value.subAssets) {\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n available.add(AssetGuid.format(parsed.value).toLowerCase());\n }\n }\n const outputs: ScriptablePackStagedOutput[] = [];\n for (const declaration of declarations.values()) {\n if (declaration.format === 'meta.json') {\n if (externalImport === undefined) continue;\n if (!declaration.value.subAssets.some((asset) => required.has(asset.guid.toLowerCase()))) {\n continue;\n }\n const resolved = resolveAssetSource(declaration.sourcePath, declaration.value.source);\n const meta: RunImportMeta = {\n importer: declaration.value.importer,\n source: resolved,\n sourceRevision: declaration.sourceRevision,\n ...(declaration.value.packageId === undefined\n ? {}\n : { packageId: declaration.value.packageId }),\n ...(declaration.value.provenance === undefined\n ? {}\n : { provenance: declaration.value.provenance }),\n ...(declaration.value.revision === undefined\n ? {}\n : { revision: declaration.value.revision }),\n ...(declaration.value.diagnostics === undefined\n ? {}\n : { diagnostics: declaration.value.diagnostics }),\n importSettings: declaration.value.importSettings,\n ...(declaration.value.sourceOverrides === undefined\n ? {}\n : { sourceOverrides: declaration.value.sourceOverrides }),\n subAssets: declaration.value.subAssets.map(({ guid, sourceIndex, sourceKey, kind }) => ({\n guid,\n sourceIndex,\n ...(sourceKey === undefined ? {} : { sourceKey }),\n kind,\n })),\n buildPack: false,\n };\n const sourcePackage = await produceSourcePackage({\n meta,\n registry: externalImport.importerRegistry,\n fs: externalImport.fsForImport,\n });\n if (!sourcePackage.ok) {\n throw new AssetError({\n code: 'asset-not-imported',\n expected: 'the Meta importer to produce the requested dependency',\n hint: 'repair the Meta source and rerun the Pack build',\n detail: { sourcePath: declaration.sourcePath },\n });\n }\n for (const asset of sourcePackage.value.product.assets) {\n if (!required.has(asset.guid.toLowerCase())) continue;\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n const declared = declaration.value.subAssets.find(\n (candidate) => candidate.guid.toLowerCase() === asset.guid.toLowerCase(),\n );\n outputs.push({\n guid: parsed.value,\n sourceKey: declared?.sourceKey ?? asset.guid,\n asset: { ...(asset.payload as Record<string, unknown>), kind: asset.kind } as Asset,\n });\n }\n continue;\n }\n if (declaration.format !== 'pack.json') continue;\n if (declaration.value.schemaVersion === '3.0.0') {\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok || parsed.value.format !== 'direct') continue;\n const projected = projectDirectPackJson(parsed.value);\n if (!projected.ok) continue;\n const prepared = await prepareDirectPackTransport({\n projected: projected.value,\n sourcePath: declaration.sourcePath,\n sourceRevision: declaration.sourceRevision,\n availableGuids: available,\n ...(cookers.length === 0 ? {} : { cookers }),\n policy: {\n base: '/',\n packagePath: `assets/${projected.value.packageId}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}/${key}.bin`,\n sink: () => {},\n },\n });\n if (!prepared.ok) throw prepared.error;\n const cookedByGuid = new Map(\n prepared.value.finalized.pack.assets.map((asset) => [asset.guid.toLowerCase(), asset]),\n );\n for (const asset of projected.value.assets) {\n if (!required.has(asset.guid.toLowerCase())) continue;\n const parsedGuid = AssetGuid.parse(asset.guid);\n if (!parsedGuid.ok) throw parsedGuid.error;\n const cooked = cookedByGuid.get(asset.guid.toLowerCase());\n if (cooked === undefined) {\n throw new AssetError({\n code: 'asset-not-imported',\n expected: 'the direct Pack producer to retain every declared output',\n hint: 'repair the direct Pack output and rerun the Pack build',\n detail: { sourcePath: declaration.sourcePath },\n });\n }\n outputs.push({\n guid: parsedGuid.value,\n sourceKey: asset.sourceKey,\n asset: { kind: cooked.kind, ...cooked.payload } as Asset,\n });\n }\n continue;\n }\n const cooked = await readCookedAuthoredPack(declaration.value, cookers, declaration.sourcePath);\n for (const asset of cooked?.logicalPackage.assets ?? declaration.value.assets) {\n if (!required.has(asset.guid.toLowerCase())) continue;\n const parsedGuid = AssetGuid.parse(asset.guid);\n if (!parsedGuid.ok) throw parsedGuid.error;\n outputs.push({\n guid: parsedGuid.value,\n sourceKey: asset.sourceKey ?? asset.guid,\n asset: { ...asset.payload, kind: asset.kind } as Asset,\n });\n }\n }\n return outputs;\n}\n\n/** Cook the explicit legacy Pack v2 transport without exposing v1 authoring APIs. */\nexport async function readCookedAuthoredPack(\n authoredPack: LegacyPackInventoryDocument,\n cookers: readonly NativeCooker[] = [],\n sourcePath?: string,\n): Promise<\n | {\n readonly logicalPackage: Pick<DdcPack, 'assets'>;\n readonly refsByGuid: ReadonlyMap<string, readonly string[]>;\n }\n | undefined\n> {\n if (authoredPack.schemaVersion !== '2.0.0') return undefined;\n const registry = new NativeCookerRegistry();\n for (const cooker of cookers) registry.register(cooker);\n const assets: PackageProductAsset[] = [];\n const refsByGuid = new Map<string, readonly string[]>();\n let hasCookedAsset = false;\n for (const asset of authoredPack.assets) {\n if (asset.execution !== 'cooked') {\n assets.push({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: {},\n });\n continue;\n }\n if (isEngineOwnedMaterial(asset)) {\n // Engine-owned material payloads are already cooked, but a legacy Pack\n // source still needs to be projected into the runtime transport route.\n // Mark the package as cooked so prepareLegacyPackTransport stages a\n // published body instead of falling back to the source URL, which the\n // dev route intentionally rejects for cooked v2 inputs.\n hasCookedAsset = true;\n refsByGuid.set(asset.guid.toLowerCase(), [...asset.refs]);\n assets.push({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: {},\n });\n continue;\n }\n hasCookedAsset = true;\n const result = await registry.runDraft(asset.kind, {\n guid: asset.guid,\n // Pack v2 stores the asset kind beside payload. Native producer APIs\n // consume the runtime Asset shape, so reconstruct that one boundary\n // field before invoking the cooker.\n source: nativeCookSource(asset),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(sourcePath === undefined ? {} : { sourcePath }),\n refs: asset.refs,\n });\n if (!result.ok) throw result.error;\n const draft = result.value;\n refsByGuid.set(asset.guid.toLowerCase(), [...draft.refs]);\n assets.push({\n guid: draft.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: draft.payload as Record<string, unknown>,\n refs: [...draft.refs],\n artifacts: draft.artifacts,\n });\n }\n return hasCookedAsset\n ? {\n logicalPackage: { assets },\n refsByGuid,\n }\n : undefined;\n}\n\nexport interface LegacyPackTransport {\n readonly pack: LegacyPackInventoryDocument;\n readonly firstGuid?: string;\n readonly cooked?: Awaited<ReturnType<typeof readCookedAuthoredPack>>;\n readonly finalized?: FinalizedPackageTransport;\n}\n\nexport interface DirectPackTransport {\n readonly projected: {\n readonly packageId: string;\n readonly assets: readonly DirectPackAssetProjection[];\n };\n readonly product: ScriptablePackBuildProduct;\n readonly finalized: FinalizedPackageTransport;\n readonly facts: ScriptablePackPublicationFacts;\n readonly revision: ResourceRevision;\n}\n\nexport interface DirectPackTransportInput {\n readonly projected: DirectPackTransport['projected'];\n readonly sourcePath: string;\n readonly displaySourcePath?: string;\n readonly sourceRevision: string;\n readonly policy: PackageFinalizePolicy;\n readonly availableGuids?: ReadonlySet<string>;\n readonly cookers?: readonly NativeCooker[];\n}\n\nfunction directReference(guid: string): AssetRef {\n return { guid, sourceField: { fieldName: 'refs' } };\n}\n\nfunction mergeDirectReferences(\n produced: readonly AssetRef[],\n declared: readonly string[],\n): readonly AssetRef[] {\n const merged = [...produced];\n const seen = new Set(produced.map((reference) => reference.guid.toLowerCase()));\n for (const guid of declared) {\n const parsed = AssetGuid.parse(guid);\n if (!parsed.ok) throw parsed.error;\n const normalized = AssetGuid.format(parsed.value);\n if (seen.has(normalized.toLowerCase())) continue;\n seen.add(normalized.toLowerCase());\n merged.push(directReference(normalized));\n }\n return merged;\n}\n\nfunction directReferenceFailure(\n sourcePath: string,\n guids: readonly string[],\n): {\n readonly code: 'pack-output-reference-missing';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly sourcePath: string; readonly guids: readonly string[] };\n} {\n return {\n code: 'pack-output-reference-missing',\n expected: 'every direct Pack reference to resolve to a local or published AssetGuid',\n hint: 'publish the referenced Pack or repair the direct refs before rebuilding the Pack',\n detail: { sourcePath, guids: [...guids].sort() },\n };\n}\n\nfunction directInputFingerprint(\n sourceRevision: string,\n nativeFingerprints: ReadonlyMap<string, string>,\n): string {\n if (nativeFingerprints.size === 0) return sourceRevision;\n return `sha256:${packageTransportRevision({\n sourceRevision,\n nativeCookers: [...nativeFingerprints.entries()].sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n })}`;\n}\n\nfunction importedAssetArtifacts(\n assets: readonly ImportedAsset<unknown>[],\n): Readonly<Record<string, ImportedArtifactBody>> {\n return Object.fromEntries(\n assets.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [`${asset.guid}/${key}`, artifact]),\n ),\n );\n}\n\nfunction rawDirectProduct(input: DirectPackTransportInput): ScriptablePackBuildProduct {\n const inputFingerprint = `sha256:${packageTransportRevision({\n packageId: input.projected.packageId,\n sourceRevision: input.sourceRevision,\n assets: input.projected.assets,\n })}`;\n const assets: ImportedAsset<unknown>[] = input.projected.assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: directRuntimePayload(asset),\n refs: asset.refs.map(directReference),\n artifacts: {},\n }));\n return {\n product: {\n assets,\n sourceDependencies: [input.sourcePath],\n refs: assets.flatMap((asset) => asset.refs),\n artifacts: importedAssetArtifacts(assets),\n receipts: assets.map((asset) => ({\n guid: asset.guid,\n origin: 'authoredPack' as const,\n status: 'succeeded' as const,\n inputFingerprint,\n })),\n diagnostics: [],\n sourceRevision: inputFingerprint,\n sourceKey: input.sourcePath,\n },\n stagedOutputs: input.projected.assets.map((asset) => ({\n guid: directGuid(asset.guid),\n sourceKey: asset.sourceKey,\n asset: {\n ...(directRuntimePayload(asset) as Record<string, unknown>),\n kind: asset.kind,\n } as Asset,\n digest: `sha256:${packageTransportRevision({ kind: asset.kind, payload: asset.payload })}`,\n })),\n externalEvidence: [],\n inputFingerprint,\n };\n}\n\nfunction directGuid(value: string): AssetGuidType {\n const parsed = AssetGuid.parse(value);\n if (!parsed.ok) throw parsed.error;\n return parsed.value;\n}\n\nfunction nativeRefs(refs: readonly string[]): AssetRef[] {\n return refs.map((guid) => {\n const parsed = AssetGuid.parse(guid);\n if (!parsed.ok) throw parsed.error;\n return { guid: AssetGuid.format(parsed.value) };\n });\n}\n\nfunction nativeCookSource(asset: { readonly kind: string; readonly payload: unknown }): unknown {\n if (\n asset.kind !== 'material' ||\n asset.payload === null ||\n typeof asset.payload !== 'object' ||\n Array.isArray(asset.payload)\n ) {\n return asset.payload;\n }\n return { ...(asset.payload as Record<string, unknown>), kind: asset.kind };\n}\n\nfunction isEngineOwnedMaterial(asset: {\n readonly kind: string;\n readonly payload: unknown;\n}): boolean {\n if (\n asset.kind !== 'material' ||\n asset.payload === null ||\n typeof asset.payload !== 'object' ||\n Array.isArray(asset.payload)\n ) {\n return false;\n }\n return isEngineMaterial(asset.payload as Pick<MaterialAsset, 'passes'>);\n}\n\nfunction directRuntimePayload(asset: DirectPackAssetProjection): unknown {\n if (\n asset.kind !== 'ui' ||\n asset.payload === null ||\n typeof asset.payload !== 'object' ||\n Array.isArray(asset.payload)\n ) {\n return asset.payload;\n }\n return { ...(asset.payload as Record<string, unknown>), guid: asset.guid };\n}\n\nfunction directAssetForProducer(asset: DirectPackAssetProjection): Asset {\n const payload = {\n ...(directRuntimePayload(asset) as Record<string, unknown>),\n kind: asset.kind,\n };\n if (asset.kind !== 'mesh') return payload as Asset;\n return (normalizeMeshPayload(payload, asset.refs) ?? payload) as Asset;\n}\n\n/** Cook one direct v3 Pack through the same producer/finalizer seam as pack.ts. */\nexport async function prepareDirectPackTransport(\n input: DirectPackTransportInput,\n): Promise<Result<DirectPackTransport, unknown>> {\n const localGuids = new Set(input.projected.assets.map((asset) => asset.guid.toLowerCase()));\n const availableGuids = new Set(\n [...(input.availableGuids ?? []), ...BUILTIN_MESH_ASSETS.map((asset) => asset.guid)].filter(\n (guid) => !localGuids.has(guid.toLowerCase()),\n ),\n );\n const directArtifacts = input.projected.assets.find(\n (asset) => asset.artifacts !== undefined && Object.keys(asset.artifacts).length > 0,\n );\n if (directArtifacts !== undefined) {\n return err({\n code: 'pack-parameter-invalid',\n expected: 'direct v3 authoring entries to leave artifacts empty for the producer',\n hint: 'remove authored artifact data and let the registered Asset producer create it',\n detail: { sourcePath: input.sourcePath, sourceKey: directArtifacts.sourceKey },\n });\n }\n const packageId = PackageId.parse(input.projected.packageId);\n if (!packageId.ok) return err(packageId.error);\n const cookerRegistry = new NativeCookerRegistry();\n for (const cooker of input.cookers ?? []) cookerRegistry.register(cooker);\n const nativeDrafts = new Map<string, NativeCookDraft>();\n const nativeFingerprints = new Map<string, string>();\n for (const asset of input.projected.assets) {\n if (!isScriptablePackAssetKind(asset.kind)) continue;\n if (cookerRegistry.get(asset.kind) === undefined) continue;\n if (isEngineOwnedMaterial(asset)) continue;\n const draft = await cookerRegistry.runDraft(asset.kind, {\n guid: asset.guid,\n // Direct v3 entries keep `kind` at the entry boundary. Reattach it for\n // producer contracts such as MaterialAsset, whose payload is otherwise\n // intentionally allowed to omit the discriminant.\n source: nativeCookSource(asset),\n sourceKey: asset.sourceKey,\n sourcePath: input.sourcePath,\n refs: asset.refs,\n });\n if (!draft.ok) return err(draft.error);\n if (draft.value.guid.toLowerCase() !== asset.guid.toLowerCase()) {\n return err({\n code: 'pack-parameter-invalid',\n expected: 'a direct Pack cooker to preserve the derived AssetGuid',\n hint: 'repair the native cooker output GUID and rebuild the direct Pack',\n detail: {\n sourcePath: input.sourcePath,\n sourceKey: asset.sourceKey,\n expectedGuid: asset.guid,\n actualGuid: draft.value.guid,\n },\n });\n }\n nativeDrafts.set(asset.guid.toLowerCase(), draft.value);\n nativeFingerprints.set(asset.sourceKey, draft.value.inputFingerprint);\n }\n const unsupported = input.projected.assets.filter(\n (asset) => !isScriptablePackAssetKind(asset.kind),\n );\n if (unsupported.length > 0 && unsupported.length !== input.projected.assets.length) {\n return err({\n code: 'pack-parameter-invalid',\n expected: 'a direct Pack to contain only producer-backed Engine Assets or only direct PODs',\n hint: 'split custom direct PODs from producer-backed Assets into separate Packs',\n detail: {\n sourcePath: input.sourcePath,\n unsupportedKinds: [...new Set(unsupported.map((asset) => asset.kind))].sort(),\n },\n });\n }\n if (unsupported.length === input.projected.assets.length) {\n const raw = rawDirectProduct(input);\n const known = new Set([...availableGuids, ...localGuids]);\n const missing = new Set<string>();\n for (const asset of raw.product.assets) {\n for (const reference of asset.refs) {\n if (!known.has(reference.guid.toLowerCase())) missing.add(reference.guid.toLowerCase());\n }\n }\n if (missing.size > 0) return err(directReferenceFailure(input.sourcePath, [...missing]));\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(raw.product),\n input.policy,\n );\n const facts = projectScriptablePackPublication(raw);\n if (!facts.ok) return facts;\n const displaySourcePath = input.displaySourcePath ?? input.sourcePath;\n const revision = await scriptablePackResourceRevision(displaySourcePath, raw.inputFingerprint, [\n { path: input.sourcePath, digest: input.sourceRevision },\n ]);\n return ok({\n projected: input.projected,\n product: raw,\n finalized,\n facts: facts.value,\n revision,\n });\n }\n const definition = {\n schemaVersion: '2.0.0' as const,\n packageId: packageId.value,\n build: () =>\n ok(\n Object.fromEntries(\n input.projected.assets.map((asset) => [\n asset.sourceKey,\n {\n ...((nativeDrafts.get(asset.guid.toLowerCase())?.payload as\n | Record<string, unknown>\n | undefined) ?? directAssetForProducer(asset)),\n kind: asset.kind,\n } as Asset,\n ]),\n ),\n ),\n } as AnyScriptablePackDefinition;\n const outputs = createStandardAssetOutputProducerRegistry();\n outputs.register(createPreExternalizedSceneAssetOutputProducer());\n const built = await buildScriptablePack({\n definition,\n sourcePath: input.sourcePath,\n outputs,\n sourceClosure: [{ path: input.sourcePath, digest: input.sourceRevision }],\n availableGuids,\n deferReferenceValidation: true,\n });\n if (!built.ok) return built;\n const declaredByGuid = new Map(\n input.projected.assets.map((asset) => [asset.guid.toLowerCase(), asset.refs]),\n );\n const assets = built.value.product.assets.map((asset) => ({\n ...asset,\n ...(nativeDrafts.has(asset.guid.toLowerCase())\n ? {\n payload: nativeDrafts.get(asset.guid.toLowerCase())?.payload as Record<string, unknown>,\n refs: mergeDirectReferences(\n nativeRefs(nativeDrafts.get(asset.guid.toLowerCase())?.refs ?? []),\n declaredByGuid.get(asset.guid.toLowerCase()) ?? [],\n ),\n artifacts: nativeDrafts.get(asset.guid.toLowerCase())?.artifacts ?? {},\n }\n : {\n refs: mergeDirectReferences(\n asset.refs,\n declaredByGuid.get(asset.guid.toLowerCase()) ?? [],\n ),\n }),\n }));\n const missing = new Set<string>();\n const known = new Set([...availableGuids, ...localGuids]);\n for (const asset of assets) {\n for (const reference of asset.refs) {\n if (!known.has(reference.guid.toLowerCase())) missing.add(reference.guid.toLowerCase());\n }\n }\n if (missing.size > 0) return err(directReferenceFailure(input.sourcePath, [...missing]));\n const inputFingerprint = directInputFingerprint(built.value.inputFingerprint, nativeFingerprints);\n const stagedOutputs = input.projected.assets.map((asset) => ({\n guid: directGuid(asset.guid),\n sourceKey: asset.sourceKey,\n asset: directAssetForProducer(asset),\n digest: `sha256:${packageTransportRevision({ kind: asset.kind, payload: asset.payload })}`,\n }));\n const product: ScriptablePackBuildProduct = {\n ...built.value,\n inputFingerprint,\n stagedOutputs,\n product: {\n ...built.value.product,\n assets,\n refs: assets.flatMap((asset) => asset.refs),\n artifacts: importedAssetArtifacts(assets),\n receipts: built.value.product.receipts.map((receipt) => ({\n ...receipt,\n inputFingerprint,\n })),\n sourceRevision: inputFingerprint,\n },\n };\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(product.product),\n input.policy,\n );\n const facts = projectScriptablePackPublication(product);\n if (!facts.ok) return facts;\n const displaySourcePath = input.displaySourcePath ?? input.sourcePath;\n const revision = await scriptablePackResourceRevision(\n displaySourcePath,\n product.inputFingerprint,\n [{ path: input.sourcePath, digest: input.sourceRevision }],\n );\n return ok({\n projected: input.projected,\n product,\n finalized,\n facts: facts.value,\n revision,\n });\n}\n\n/** Normalize one explicit Pack v2 transport and invoke its registered cookers once. */\nexport async function prepareLegacyPackTransport(\n authoredPack: LegacyPackInventoryDocument,\n cookers: readonly NativeCooker[] | undefined,\n policyFor: (guid: string) => PackageFinalizePolicy,\n sourcePath?: string,\n): Promise<LegacyPackTransport> {\n const firstGuid = authoredPack.assets[0]?.guid?.toLowerCase();\n if (authoredPack.schemaVersion !== '2.0.0' || firstGuid === undefined) {\n return { pack: authoredPack, ...(firstGuid === undefined ? {} : { firstGuid }) };\n }\n const cooked = await readCookedAuthoredPack(authoredPack, cookers, sourcePath);\n if (cooked === undefined) return { pack: authoredPack, firstGuid };\n return {\n pack: authoredPack,\n firstGuid,\n cooked,\n finalized: await finalizePackageTransportSource(cooked.logicalPackage, policyFor(firstGuid)),\n };\n}\n\n/** Materialize a dynamic Pack product through the same dev transport seam. */\nexport async function materializePreparedScriptablePack(\n prepared: PreparedScriptablePack,\n paths: ScriptablePackTransportPaths,\n sink: ScriptablePackTransportSink,\n): Promise<ReadonlyMap<string, string>> {\n const { product, finalized } = prepared;\n await sink.writePackage(paths.packagePath, JSON.stringify(finalized.pack));\n for (const artifact of finalized.artifacts) {\n await sink.writeArtifact(\n paths.artifactPath(artifact.path),\n artifact.bytes,\n artifact.path.endsWith('.json') ? 'application/json' : artifact.mediaType,\n );\n }\n const receipts = new Map<string, string>();\n for (const asset of product.product.assets) {\n const path = paths.receiptPath(asset.guid);\n await sink.writeReceipt(\n path,\n JSON.stringify({\n guid: asset.guid,\n origin: 'sourceMeta',\n status: 'succeeded',\n inputFingerprint: product.inputFingerprint,\n outputDigest: finalized.digest,\n }),\n );\n receipts.set(asset.guid.toLowerCase(), path);\n }\n return receipts;\n}\n\nfunction projectScriptablePackPublication(\n product: ScriptablePackBuildProduct,\n): Result<ScriptablePackPublicationFacts, ScriptablePackDomainError> {\n const assets = new Map(product.product.assets.map((asset) => [asset.guid.toLowerCase(), asset]));\n const outputs: AssetPublicationOutput[] = [];\n for (const staged of product.stagedOutputs) {\n const guid = AssetGuid.format(staged.guid).toLowerCase();\n const asset = assets.get(guid);\n if (asset === undefined || staged.digest === undefined || staged.sourceKey === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: `ScriptablePack publication output ${guid} to include a product, sourceKey, and digest`,\n hint: 'repair the dynamic Pack output and rebuild the current generation',\n detail: { stage: 'publication', guid },\n });\n }\n outputs.push({\n guid,\n sourceKey: staged.sourceKey,\n kind: asset.kind,\n digest: staged.digest,\n refs: asset.refs.map((reference) => reference.guid),\n });\n }\n return ok({\n outputs,\n refs: new Map(\n product.product.assets.map((asset) => [\n asset.guid.toLowerCase(),\n asset.refs.map((reference) => reference.guid),\n ]),\n ),\n });\n}\n\nfunction snapshotSourceForStagedOutputs(\n outputs: readonly ScriptablePackStagedOutput[],\n): import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined {\n if (outputs.length === 0) return undefined;\n const byGuid = new Map(\n outputs.map((output) => [AssetGuid.format(output.guid).toLowerCase(), output]),\n );\n return {\n async readByGuid(guid) {\n const key = AssetGuid.format(guid).toLowerCase();\n const output = byGuid.get(key);\n if (output === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-found',\n expected: `an available Asset snapshot for ${key}`,\n hint: 'publish the referenced Pack or repair the content dependency',\n }),\n );\n }\n return ok({\n asset: structuredClone(output.asset),\n generation: 1,\n digest: output.digest ?? 'sha256:staged',\n });\n },\n };\n}\n\nfunction composeScriptablePackAssetSource(\n staged: import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined,\n published: import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined,\n): import('./scriptable-pack.js').ScriptablePackAssetSnapshotSource | undefined {\n if (staged === undefined) return published;\n if (published === undefined) return staged;\n return {\n async readByGuid(guid) {\n const local = await staged.readByGuid(guid);\n if (local.ok || local.error.code !== 'asset-not-found') return local;\n return published.readByGuid(guid);\n },\n };\n}\n\n/**\n * Build ScriptablePack sources in one generation and hand their terminal\n * products to the ordinary Pack v2 finalizer. The worklist is deliberately\n * below publication: it only decides which current-generation products exist.\n */\nexport async function produceScriptablePackProducts(\n options: ScriptablePackProductionOptions,\n): Promise<Result<ReadonlyMap<string, PreparedScriptablePack>, unknown>> {\n if (options.sources.length === 0) return ok(new Map());\n const external = options.declaredExternalOutputs ?? [];\n const assetSource = composeScriptablePackAssetSource(\n snapshotSourceForStagedOutputs(external),\n options.assetSource,\n );\n const availableGuids = new Set([\n ...(options.availableGuids ?? []),\n ...external.map((output) => AssetGuid.format(output.guid).toLowerCase()),\n ]);\n const workItems: ScriptablePackBuildWorkItem[] = options.sources.map((source) => ({\n definition: source.definition,\n sourcePath: source.sourcePath,\n ...(source.subjectPackageId === undefined ? {} : { subjectPackageId: source.subjectPackageId }),\n ...(source.values === undefined ? {} : { values: source.values }),\n ...(source.inheritedValues === undefined ? {} : { inheritedValues: source.inheritedValues }),\n sourceClosure: source.sourceClosure,\n }));\n const worklist = await buildScriptablePackWorklist({\n subjects: workItems,\n outputs: createStandardAssetOutputProducerRegistry(\n options.sources.flatMap((source) =>\n projectScriptablePackSceneComponents(source.definition.sceneComponents),\n ),\n ),\n ...(options.cookers === undefined ? {} : { cookers: options.cookers }),\n ...(assetSource === undefined ? {} : { assetSource }),\n availableGuids,\n ...(options.incomingRefs === undefined ? {} : { incomingRefs: options.incomingRefs }),\n ...(options.maxPasses === undefined ? {} : { maxPasses: options.maxPasses }),\n });\n if (!worklist.ok) return worklist;\n\n const productsBySource = new Map(\n worklist.value.buildProducts\n .filter((product) => product.product.sourceKey !== undefined)\n .map((product) => [product.product.sourceKey as string, product]),\n );\n const prepared = new Map<string, PreparedScriptablePack>();\n for (const source of options.sources) {\n const product = productsBySource.get(source.sourcePath);\n if (product === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'one terminal dynamic Pack product for every source subject',\n hint: 'rerun the bounded generation worklist and inspect its subject map',\n detail: { sourcePath: source.sourcePath },\n });\n }\n const policy = typeof source.policy === 'function' ? source.policy(product) : source.policy;\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(product.product),\n policy,\n );\n const facts = projectScriptablePackPublication(product);\n if (!facts.ok) return facts;\n const revision = await scriptablePackResourceRevision(\n source.displaySourcePath,\n product.inputFingerprint,\n source.sourceClosure,\n );\n const publication = createAcceptedPublication({\n sourcePath: source.displaySourcePath,\n sourceRevision: product.inputFingerprint,\n generation: source.publicationGeneration,\n digest: finalized.digest,\n packageUrl: finalized.packageUrl,\n inputFingerprint: product.inputFingerprint,\n outputs: facts.value.outputs,\n externalEvidence: product.externalEvidence,\n });\n prepared.set(source.displaySourcePath, {\n product: {\n ...product,\n },\n finalized,\n facts: facts.value,\n revision,\n publication,\n });\n }\n return ok(prepared);\n}\n\n/** Project the immutable module closure into the Catalog revision contract. */\nasync function scriptablePackResourceRevision(\n displaySourcePath: string,\n digest: string,\n sourceClosure: readonly ScriptablePackSourceClosureEntry[],\n): Promise<ResourceRevision> {\n const mtimes = await Promise.all(\n sourceClosure.map(async (entry) => {\n try {\n return (await stat(entry.path)).mtimeMs;\n } catch (error) {\n // Direct Pack declarations may be supplied with a logical source path\n // and sourceText rather than a file-backed module. The digest remains\n // the authoritative revision in that case; preserve filesystem errors\n // other than a missing path so real source failures stay visible.\n if (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n (error.code === 'ENOENT' || error.code === 'ENOTDIR')\n ) {\n return 0;\n }\n throw error;\n }\n }),\n );\n const observedAt = mtimes.length === 0 ? 0 : Math.trunc(Math.max(...mtimes));\n return { digest, observedAt, rootId: displaySourcePath };\n}\n","import { resolve } from 'node:path';\nimport { catalogSourcePathFor } from '@forgeax/engine-pack/build';\nimport type { ScanSourceDeclaration } from '@forgeax/engine-pack/scanner';\n\nfunction normalizeCatalogPath(path: string): string {\n return path.replaceAll('\\\\', '/').replace(/^\\.\\//, '');\n}\n\nexport interface CatalogSourceDeclaration {\n readonly sourcePath: string;\n readonly declaration: ScanSourceDeclaration;\n}\n\n/**\n * Resolve a Catalog row's logical source locator back to its physical scanner\n * declaration. Catalog rows are host identities; declaration maps remain\n * physical because production still has to read those files from disk.\n */\nexport function sourceDeclarationForCatalogPath(\n sourcePath: string,\n declarations: ReadonlyMap<string, ScanSourceDeclaration>,\n sourceIdentityFor?: (sourcePath: string) => string,\n cwd = process.cwd(),\n): CatalogSourceDeclaration | undefined {\n const normalized = normalizeCatalogPath(sourcePath);\n const direct = declarations.get(resolve(cwd, sourcePath));\n if (direct !== undefined) {\n return { sourcePath: resolve(cwd, sourcePath), declaration: direct };\n }\n for (const [physicalPath, declaration] of declarations) {\n if (catalogSourcePathFor(cwd, physicalPath, sourceIdentityFor) === normalized) {\n return { sourcePath: physicalPath, declaration };\n }\n }\n return undefined;\n}\n","import { isAbsolute, relative, resolve } from 'node:path';\nimport {\n type CatalogBuildResult,\n createRuntimePackPublication,\n finalizePackageTransportSource,\n metaPathForGuid,\n projectPackageCatalog,\n} from '@forgeax/engine-pack/build';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { NativeCooker } from '@forgeax/engine-pack/native-cooker';\nimport type { LegacyPackInventoryDocument } from '@forgeax/engine-pack/scanner';\nimport {\n PackageId,\n parsePackSourceJson,\n projectDirectPackJson,\n resolvePackParameterInheritance,\n} from '@forgeax/engine-pack/source';\nimport { loadScriptablePack } from '@forgeax/engine-pack/source-node';\nimport type {\n AssetPublicationEnvelope,\n AssetPublicationOutput,\n CookReceipt,\n Importer,\n PackIndexEntry,\n RuntimeAssetBinding,\n} from '@forgeax/engine-types';\nimport type { ImportRunnerFs } from './import-runner.js';\nimport type { ImporterRegistry } from './importer-registry.js';\nimport { projectImportProductForBuild } from './pack-projection.js';\nimport {\n canonicalScriptableSourcePath,\n declaredPackExternalOutputs,\n type PreparedScriptablePack,\n prepareDirectPackTransport,\n prepareLegacyPackTransport,\n produceScriptablePackProducts,\n type ScriptablePackInput,\n} from './scriptable-pack-host.js';\nimport {\n finalizeSourcePackage,\n produceSourcePackage,\n sourcePackageAssetsByGuid,\n} from './source-package.js';\nimport { sourceDeclarationForCatalogPath } from './source-path.js';\n\nexport interface BuildProductionFailure {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n readonly cause?: unknown;\n}\n\nexport interface BuildProductionFile {\n readonly type: 'asset';\n readonly fileName?: string;\n readonly name?: string;\n readonly originalFileName?: string;\n readonly source: string | Uint8Array;\n}\n\nexport interface BuildProductionSink {\n emitFile(file: BuildProductionFile): string;\n getFileName(referenceId: string): string;\n fileUrl(fileName: string): string;\n}\n\nexport interface BuildProductionOptions {\n readonly inventory: CatalogBuildResult;\n readonly cwd: string;\n readonly basePrefix: string;\n readonly generation: number;\n readonly cookers: readonly NativeCooker[];\n readonly importerRegistry: ImporterRegistry;\n readonly fsForImport: ImportRunnerFs;\n readonly cookedCurrentProjection: Record<string, unknown>;\n readonly directCurrentProjection: Record<string, unknown>;\n readonly authoredCookedCurrentProjection: Record<string, unknown>;\n readonly runtimeBinding?: Pick<RuntimeAssetBinding, 'scopeId' | 'generation'>;\n readonly sink: BuildProductionSink;\n readonly fail: (failure: BuildProductionFailure) => Error;\n}\n\nfunction scriptableArtifactPath(guid: string, key: string): string {\n return `${guid.toLowerCase()}/${key.includes('.') ? key : `${key}.bin`}`;\n}\n\nfunction runtimePublicationFor(\n context: BuildProductionOptions,\n input: {\n readonly pack: Parameters<typeof createRuntimePackPublication>[0]['pack'];\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly packageUrl: string;\n readonly digest?: string;\n readonly inputFingerprint?: string;\n /** Preserve producer-declared semantic keys on generic publication output rows. */\n readonly sourceKeys?: ReadonlyMap<string, string>;\n readonly outputs?: readonly AssetPublicationOutput[];\n readonly externalEvidence?: readonly import('@forgeax/engine-types').AssetPublicationExternalEvidence[];\n },\n) {\n const publicationInput = {\n pack: input.pack,\n scopeId: context.runtimeBinding?.scopeId ?? 'asset-runtime',\n sourcePath: input.sourcePath,\n sourceRevision: input.sourceRevision,\n packageUrl: input.packageUrl,\n ...(input.digest === undefined ? {} : { digest: input.digest }),\n ...(input.inputFingerprint === undefined ? {} : { inputFingerprint: input.inputFingerprint }),\n ...(input.outputs === undefined ? {} : { outputs: input.outputs }),\n ...(input.externalEvidence === undefined ? {} : { externalEvidence: input.externalEvidence }),\n generation: context.runtimeBinding?.generation ?? context.generation,\n };\n if (input.sourceKeys === undefined) return createRuntimePackPublication(publicationInput);\n const derived = createRuntimePackPublication(publicationInput);\n const outputs = derived.publication.outputs.map((output) => ({\n ...output,\n sourceKey: input.sourceKeys?.get(output.guid.toLowerCase()) ?? output.sourceKey,\n }));\n return createRuntimePackPublication({ ...publicationInput, outputs });\n}\n\nfunction sourceKeysFor(\n declarations: readonly { readonly guid: string; readonly sourceKey?: string }[],\n): ReadonlyMap<string, string> {\n return new Map(\n declarations.flatMap((declaration) =>\n declaration.sourceKey === undefined\n ? []\n : [[declaration.guid.toLowerCase(), declaration.sourceKey] as const],\n ),\n );\n}\n\ninterface PackBuildBundle {\n readonly input: ScriptablePackInput;\n readonly prepared: PreparedScriptablePack;\n readonly entries: readonly PackIndexEntry[];\n}\n\ntype PackSourceSubject = {\n readonly kind: 'source';\n readonly packageId: PackageId;\n readonly sourcePath: string;\n readonly definition: import('@forgeax/engine-pack/source').AnyScriptablePackDefinition;\n readonly sourceClosure: readonly import('@forgeax/engine-pack/source').ScriptablePackSourceClosureEntry[];\n};\n\ntype PackInstanceSubject = {\n readonly kind: 'instance';\n readonly packageId: PackageId;\n readonly parent: PackageId;\n readonly values: Readonly<Record<string, unknown>>;\n readonly sourcePath: string;\n};\n\ntype PackDirectSubject = {\n readonly kind: 'direct';\n readonly packageId: PackageId;\n readonly sourcePath: string;\n};\n\ntype PackSourceIndexSubject = PackSourceSubject | PackInstanceSubject | PackDirectSubject;\n\nfunction dynamicFailure(context: BuildProductionOptions, value: unknown): never {\n const candidate = value !== null && typeof value === 'object' ? value : {};\n const error = candidate as {\n readonly code?: unknown;\n readonly expected?: unknown;\n readonly hint?: unknown;\n readonly detail?: unknown;\n };\n throw context.fail({\n code: typeof error.code === 'string' ? error.code : 'pack-build-failed',\n expected:\n typeof error.expected === 'string'\n ? error.expected\n : 'the Pack source generation to produce a valid terminal result',\n hint:\n typeof error.hint === 'string'\n ? error.hint\n : 'inspect the Pack source subject and rebuild the current generation',\n ...(error.detail === undefined ? {} : { detail: error.detail }),\n });\n}\n\nfunction packCatalogSourcePath(context: BuildProductionOptions, sourcePath: string): string {\n const projected = context.fsForImport.sourceIdentityFor?.(sourcePath);\n const logical =\n projected === undefined || isAbsolute(projected)\n ? relative(context.cwd, sourcePath)\n : projected;\n return canonicalScriptableSourcePath(logical).replaceAll('\\\\', '/');\n}\n\n/** Build ScriptablePack roots and Pack JSON instances before normal emission. */\nasync function buildPackSources(\n context: BuildProductionOptions,\n): Promise<readonly PackBuildBundle[]> {\n const subjects = new Map<string, PackSourceIndexSubject>();\n for (const [sourcePath, declaration] of context.inventory.sourceDeclarations) {\n if (declaration.format === 'pack.ts') {\n const key = PackageId.format(declaration.definition.packageId).toLowerCase();\n subjects.set(key, {\n kind: 'source',\n packageId: declaration.definition.packageId,\n sourcePath,\n definition: declaration.definition,\n sourceClosure: declaration.sourceClosure,\n });\n continue;\n }\n if (declaration.format !== 'pack.json' || declaration.value.schemaVersion !== '3.0.0') {\n continue;\n }\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok) dynamicFailure(context, parsed.error);\n if (parsed.value.format === 'direct') {\n subjects.set(PackageId.format(parsed.value.packageId).toLowerCase(), {\n kind: 'direct',\n packageId: parsed.value.packageId,\n sourcePath,\n });\n } else {\n subjects.set(PackageId.format(parsed.value.packageId).toLowerCase(), {\n kind: 'instance',\n packageId: parsed.value.packageId,\n parent: parsed.value.parent,\n values: parsed.value.values,\n sourcePath,\n });\n }\n }\n const sourceSubject = (packageId: PackageId): PackSourceSubject | undefined => {\n const subject = subjects.get(PackageId.format(packageId).toLowerCase());\n return subject?.kind === 'source' ? subject : undefined;\n };\n const readSubject = async (packageId: PackageId) => {\n const subject = subjects.get(PackageId.format(packageId).toLowerCase());\n if (subject === undefined) return undefined;\n if (subject.kind === 'source') {\n return {\n format: 'source' as const,\n packageId: subject.packageId,\n parameters: 'parameters' in subject.definition ? subject.definition.parameters : [],\n } satisfies import('@forgeax/engine-pack/source').PackParameterRootSubject;\n }\n if (subject.kind === 'instance') {\n return {\n format: 'instance' as const,\n packageId: subject.packageId,\n parent: subject.parent,\n values: subject.values,\n } satisfies import('@forgeax/engine-pack/source').PackParameterInstanceSubject;\n }\n return {\n format: 'direct' as const,\n packageId: subject.packageId,\n } satisfies import('@forgeax/engine-pack/source').PackDirectSubject;\n };\n\n const orderedSubjects = [...subjects.values()].sort((left, right) =>\n left.sourcePath.localeCompare(right.sourcePath),\n );\n const inputs: ScriptablePackInput[] = [];\n for (const subject of orderedSubjects) {\n if (subject.kind === 'source') {\n const packageId = PackageId.format(subject.packageId);\n const loaded = await loadScriptablePack(subject.sourcePath);\n if (!loaded.ok) dynamicFailure(context, loaded.error);\n if (PackageId.format(loaded.value.packageId) !== packageId) {\n dynamicFailure(context, {\n code: 'pack-source-revision-conflict',\n expected: 'the ScriptablePack source packageId to remain fixed during production',\n hint: 'retry after source writes settle and rebuild the current generation',\n detail: {\n sourcePath: subject.sourcePath,\n scannedPackageId: packageId,\n loadedPackageId: PackageId.format(loaded.value.packageId),\n },\n });\n }\n inputs.push({\n sourcePath: subject.sourcePath,\n displaySourcePath: packCatalogSourcePath(context, subject.sourcePath),\n definition: loaded.value,\n sourceClosure: subject.sourceClosure,\n publicationGeneration: context.generation,\n policy: {\n base: context.basePrefix === '' ? '/' : context.basePrefix,\n packagePath: `assets/${packageId}.pack.json`,\n artifactPath: scriptableArtifactPath,\n },\n });\n }\n }\n for (const subject of orderedSubjects) {\n if (subject.kind !== 'instance') continue;\n const resolved = await resolvePackParameterInheritance(\n {\n format: 'instance',\n packageId: subject.packageId,\n parent: subject.parent,\n values: subject.values,\n },\n readSubject,\n );\n if (!resolved.ok) dynamicFailure(context, resolved.error);\n const root = sourceSubject(resolved.value.rootPackageId);\n if (root === undefined) {\n dynamicFailure(context, {\n code: 'pack-parent-has-no-parameters',\n expected: 'the instance parent chain to terminate at a ScriptablePack source',\n hint: 'point the instance at a ScriptablePack *.pack.ts source with parameters',\n detail: { packageId: PackageId.format(subject.packageId) },\n });\n }\n const loaded = await loadScriptablePack(root.sourcePath);\n if (!loaded.ok) dynamicFailure(context, loaded.error);\n if (PackageId.format(loaded.value.packageId) !== PackageId.format(root.packageId)) {\n dynamicFailure(context, {\n code: 'pack-source-revision-conflict',\n expected: 'the ScriptablePack parent packageId to remain fixed during production',\n hint: 'retry after source writes settle and rebuild the current generation',\n detail: {\n sourcePath: root.sourcePath,\n scannedPackageId: PackageId.format(root.packageId),\n loadedPackageId: PackageId.format(loaded.value.packageId),\n },\n });\n }\n const packageId = PackageId.format(subject.packageId);\n inputs.push({\n sourcePath: subject.sourcePath,\n displaySourcePath: packCatalogSourcePath(context, subject.sourcePath),\n definition: loaded.value,\n sourceClosure: root.sourceClosure,\n subjectPackageId: subject.packageId,\n values: resolved.value.values,\n publicationGeneration: context.generation,\n policy: {\n base: context.basePrefix === '' ? '/' : context.basePrefix,\n packagePath: `assets/${packageId}.pack.json`,\n artifactPath: scriptableArtifactPath,\n },\n });\n }\n if (inputs.length === 0) return [];\n\n const requiredGuids = context.inventory.entries.flatMap((entry) => {\n const parsed = AssetGuid.parse(entry.guid);\n if (!parsed.ok) dynamicFailure(context, parsed.error);\n return [parsed.value];\n });\n const externalOutputs = await declaredPackExternalOutputs(\n context.inventory.sourceDeclarations,\n context.cookers,\n requiredGuids,\n {\n importerRegistry: context.importerRegistry,\n fsForImport: context.fsForImport,\n },\n );\n const availableGuids = new Set(requiredGuids.map((guid) => AssetGuid.format(guid).toLowerCase()));\n const built = await produceScriptablePackProducts({\n sources: inputs,\n declaredExternalOutputs: externalOutputs,\n cookers: context.cookers,\n availableGuids,\n });\n if (!built.ok) dynamicFailure(context, built.error);\n\n const bundles: PackBuildBundle[] = [];\n for (const input of inputs) {\n const prepared = built.value.get(input.displaySourcePath);\n if (prepared === undefined) {\n dynamicFailure(context, {\n code: 'pack-build-failed',\n expected: 'the worklist to return one prepared result per source subject',\n hint: 'rerun Pack source generation from a clean inventory',\n detail: { sourcePath: input.sourcePath },\n });\n }\n const packageId = PackageId.format(input.subjectPackageId ?? input.definition.packageId);\n const stagedByGuid = new Map(\n prepared.product.stagedOutputs.map((output) => [\n AssetGuid.format(output.guid).toLowerCase(),\n output,\n ]),\n );\n const entries = projectPackageCatalog(\n prepared.product.product.assets.map((asset, sourceIndex) => {\n const staged = stagedByGuid.get(asset.guid.toLowerCase());\n return {\n guid: asset.guid,\n kind: asset.kind,\n sourcePath: input.displaySourcePath,\n sourceIndex,\n ...(staged?.sourceKey === undefined ? {} : { sourceKey: staged.sourceKey }),\n refs: asset.refs.map((reference) => reference.guid),\n execution: 'cooked' as const,\n packageId,\n provenance: { provider: 'pack-ts', version: '2.0.0' },\n };\n }),\n `${context.basePrefix === '/' ? '' : context.basePrefix}/${input.displaySourcePath}`,\n );\n bundles.push({ input, prepared, entries });\n }\n return bundles;\n}\n\nfunction updateImportedEntries(\n entries: PackIndexEntry[],\n guids: readonly string[],\n packageUrl: string,\n projection: Record<string, unknown> = {},\n refsByGuid?: ReadonlyMap<string, readonly string[]>,\n publication?: AssetPublicationEnvelope,\n sourcePath?: string,\n receiptUrls?: ReadonlyMap<string, string>,\n revision?: PackIndexEntry['revision'],\n): void {\n const selected = new Set(guids.map((guid) => guid.toLowerCase()));\n for (let index = 0; index < entries.length; index += 1) {\n const entry = entries[index];\n if (entry === undefined || !selected.has(entry.guid.toLowerCase())) continue;\n const refs = refsByGuid?.get(entry.guid.toLowerCase());\n const cookReceiptUrl = receiptUrls?.get(entry.guid.toLowerCase());\n entries[index] = {\n ...entry,\n packageUrl,\n ...projection,\n ...(sourcePath === undefined ? {} : { sourcePath }),\n ...(publication === undefined ? {} : { publication }),\n ...(refs === undefined ? {} : { refs }),\n ...(cookReceiptUrl === undefined ? {} : { cookReceiptUrl }),\n ...(revision === undefined ? {} : { revision }),\n };\n }\n}\n\ninterface BuildEmissionWork {\n readonly importedEntries: PackIndexEntry[];\n readonly context: BuildProductionOptions;\n}\n\ninterface PackEmissionOptions {\n readonly pack: unknown;\n readonly artifacts: readonly { readonly path: string; readonly bytes: Uint8Array }[];\n readonly packageName: string;\n readonly originalFileName: string;\n readonly guids: readonly string[];\n readonly projection?: Record<string, unknown>;\n readonly refsByGuid?: ReadonlyMap<string, readonly string[]>;\n readonly receipts?: readonly CookReceipt[];\n readonly receiptOutputDigest?: string;\n readonly publication?: AssetPublicationEnvelope;\n readonly sourcePath?: string;\n readonly revision?: PackIndexEntry['revision'];\n}\n\nasync function emitPackDocument(\n work: BuildEmissionWork,\n options: PackEmissionOptions,\n): Promise<string> {\n for (const artifact of options.artifacts) {\n work.context.sink.emitFile({\n type: 'asset',\n fileName: `assets/${artifact.path}`,\n source: artifact.bytes,\n });\n }\n const referenceId = work.context.sink.emitFile({\n type: 'asset',\n fileName: options.packageName.startsWith('assets/')\n ? options.packageName\n : `assets/${options.packageName}`,\n name: options.packageName,\n originalFileName: options.originalFileName,\n source: JSON.stringify(options.pack),\n });\n const packageUrl = work.context.sink.fileUrl(work.context.sink.getFileName(referenceId));\n const receiptUrls = new Map<string, string>();\n for (const receipt of options.receipts ?? []) {\n const guid = receipt.guid.toLowerCase();\n const receiptReferenceId = work.context.sink.emitFile({\n type: 'asset',\n fileName: `assets/${guid}.receipt.json`,\n name: `${guid}.receipt.json`,\n originalFileName: options.originalFileName,\n source: JSON.stringify({\n ...receipt,\n ...(receipt.outputDigest === undefined && options.receiptOutputDigest === undefined\n ? {}\n : { outputDigest: receipt.outputDigest ?? options.receiptOutputDigest }),\n }),\n });\n receiptUrls.set(\n guid,\n work.context.sink.fileUrl(work.context.sink.getFileName(receiptReferenceId)),\n );\n }\n updateImportedEntries(\n work.importedEntries,\n options.guids,\n packageUrl,\n options.projection,\n options.refsByGuid,\n options.publication,\n options.sourcePath,\n receiptUrls,\n options.revision,\n );\n return packageUrl;\n}\n\nasync function emitAuthoredPack(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n entry: PackIndexEntry,\n availableGuids: ReadonlySet<string>,\n): Promise<void> {\n const sourceDeclaration = sourceDeclarationForCatalogPath(\n entry.sourcePath,\n work.context.inventory.sourceDeclarations,\n work.context.fsForImport.sourceIdentityFor,\n work.context.cwd,\n );\n const packPath = sourceDeclaration?.sourcePath ?? resolve(work.context.cwd, entry.sourcePath);\n const declaration = sourceDeclaration?.declaration;\n if (declaration?.format !== 'pack.json') {\n throw work.context.fail({\n code: 'catalog-declaration-missing',\n expected: 'the inventory to retain the authored Pack declaration',\n hint: 'rerun Pack inventory before emitting the authored Pack',\n detail: { stage: 'scan', sourcePath: packPath },\n });\n }\n if (declaration.value.schemaVersion === '3.0.0') {\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok) dynamicFailure(work.context, parsed.error);\n if (parsed.value.format !== 'direct') {\n dynamicFailure(work.context, {\n code: 'catalog-declaration-missing',\n expected: 'a direct v3 Pack declaration for an indexed authored output',\n hint: 'instances are built from their ScriptablePack parent and do not have direct Catalog rows',\n detail: { stage: 'scan', sourcePath: packPath },\n });\n }\n const projected = projectDirectPackJson(parsed.value);\n if (!projected.ok) dynamicFailure(work.context, projected.error);\n const prepared = await prepareDirectPackTransport({\n projected: projected.value,\n sourcePath: packPath,\n sourceRevision: declaration.sourceRevision,\n availableGuids,\n cookers: work.context.cookers,\n policy: {\n base: work.context.basePrefix === '' ? '/' : work.context.basePrefix,\n packagePath: `assets/${projected.value.packageId}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}/${key}.bin`,\n sink: () => {},\n },\n });\n if (!prepared.ok) dynamicFailure(work.context, prepared.error);\n const { product, finalized, facts, revision } = prepared.value;\n const publication = runtimePublicationFor(work.context, {\n pack: finalized.pack,\n sourcePath: entry.sourcePath,\n sourceRevision: product.inputFingerprint,\n packageUrl: finalized.packageUrl,\n digest: finalized.digest,\n inputFingerprint: product.inputFingerprint,\n outputs: facts.outputs,\n externalEvidence: product.externalEvidence,\n });\n await emitPackDocument(work, {\n pack: publication.pack,\n artifacts: finalized.artifacts,\n packageName: `${prepared.value.projected.packageId}.pack.json`,\n originalFileName: packPath,\n guids: product.product.assets.map((asset) => asset.guid),\n projection: work.context.authoredCookedCurrentProjection,\n refsByGuid: facts.refs,\n receipts: product.product.receipts,\n receiptOutputDigest: finalized.digest,\n publication: publication.publication,\n sourcePath: entry.sourcePath,\n revision,\n });\n for (const asset of product.product.assets) guidSeen.add(asset.guid.toLowerCase());\n return;\n }\n // Legacy array-shaped documents are runtime Pack transport, not an\n // authoring input anymore. Preserve the explicit v2 native-cooker seam for\n // cooked transport while keeping source evaluation out of this path.\n const legacy = declaration.value as LegacyPackInventoryDocument;\n const prepared = await prepareLegacyPackTransport(\n legacy,\n work.context.cookers,\n (guid) => ({\n base: work.context.basePrefix === '' ? '/' : work.context.basePrefix,\n packagePath: `assets/${guid}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}/${key}.bin`,\n }),\n packPath,\n );\n const outputGuid = prepared.firstGuid ?? entry.guid;\n const authoredPack = prepared.finalized?.pack ?? {\n schemaVersion: '2.0.0' as const,\n kind: 'internal-text-package' as const,\n assets: legacy.assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: asset.artifacts ?? {},\n })),\n };\n const runtimePublication = runtimePublicationFor(work.context, {\n pack: authoredPack,\n sourcePath: entry.sourcePath,\n sourceRevision: declaration.sourceRevision,\n packageUrl:\n prepared.finalized?.packageUrl ??\n `${work.context.basePrefix === '/' ? '' : work.context.basePrefix}/assets/${outputGuid}.pack.json`,\n ...(prepared.finalized?.digest === undefined ? {} : { digest: prepared.finalized.digest }),\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: prepared.finalized?.artifacts ?? [],\n packageName: `${outputGuid}.pack.json`,\n originalFileName: packPath,\n guids: authoredPack.assets.map((asset) => asset.guid),\n projection:\n prepared.finalized === undefined\n ? work.context.directCurrentProjection\n : work.context.authoredCookedCurrentProjection,\n refsByGuid: new Map(authoredPack.assets.map((asset) => [asset.guid.toLowerCase(), asset.refs])),\n ...(prepared.finalized?.receipts === undefined\n ? {}\n : {\n receipts: prepared.finalized.receipts,\n receiptOutputDigest: prepared.finalized.digest,\n }),\n publication: runtimePublication.publication,\n sourcePath: entry.sourcePath,\n });\n for (const guid of authoredPack.assets.map((asset) => asset.guid)) {\n guidSeen.add(guid.toLowerCase());\n }\n}\n\nasync function emitScriptablePack(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n bundle: PackBuildBundle,\n): Promise<void> {\n const { input, prepared } = bundle;\n const packageId = PackageId.format(input.subjectPackageId ?? input.definition.packageId);\n const runtimePublication = createRuntimePackPublication({\n pack: { assets: prepared.finalized.pack.assets },\n scopeId: work.context.runtimeBinding?.scopeId ?? 'asset-runtime',\n sourcePath: input.displaySourcePath,\n sourceRevision: prepared.product.inputFingerprint,\n packageUrl: prepared.finalized.packageUrl,\n inputFingerprint: prepared.product.inputFingerprint,\n digest: prepared.finalized.digest,\n generation: work.context.runtimeBinding?.generation ?? prepared.publication.generation,\n outputs: prepared.facts.outputs,\n externalEvidence: prepared.product.externalEvidence,\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: prepared.finalized.artifacts,\n packageName: `${packageId}.pack.json`,\n originalFileName: input.sourcePath,\n guids: prepared.product.product.assets.map((asset) => asset.guid),\n projection: work.context.authoredCookedCurrentProjection,\n refsByGuid: prepared.facts.refs,\n receipts: prepared.product.product.receipts,\n receiptOutputDigest: prepared.finalized.digest,\n publication: runtimePublication.publication,\n sourcePath: input.displaySourcePath,\n revision: prepared.revision,\n });\n for (const asset of prepared.product.product.assets) guidSeen.add(asset.guid.toLowerCase());\n}\n\nasync function emitFinalizedOwner(\n work: BuildEmissionWork,\n metaPath: string,\n sourcePath: string,\n subAssets: readonly { readonly guid: string }[],\n sourcePackage: Extract<\n Awaited<ReturnType<typeof produceSourcePackage>>,\n { readonly ok: true }\n >['value'],\n ownerFinalizer: NonNullable<Importer['finalize']>,\n): Promise<void> {\n const ownerGuid = subAssets[0]?.guid;\n if (ownerGuid === undefined) return;\n const artifactPaths = new Map<string, string>();\n const sourceAsset = sourcePackage.product.assets[0];\n for (const [path, artifact] of Object.entries(sourceAsset?.artifacts ?? {})) {\n const ref = work.context.sink.emitFile({\n type: 'asset',\n name: path,\n originalFileName: path,\n source: artifact.bytes,\n });\n artifactPaths.set(path, work.context.sink.getFileName(ref));\n }\n const ownerProduct = finalizeSourcePackage(sourcePackage.product, ownerFinalizer, (artifact) =>\n work.context.sink.fileUrl(artifactPaths.get(artifact.path) ?? artifact.path),\n );\n if (!ownerProduct.ok) throw work.context.fail(ownerProduct.error);\n const ownerPackage = await finalizePackageTransportSource(\n projectImportProductForBuild(ownerProduct.value),\n {\n base: work.context.basePrefix,\n packagePath: `assets/${ownerGuid}.pack.json`,\n artifactPath: (_guid, key) => {\n const emittedPath = artifactPaths.get(key);\n if (emittedPath === undefined) {\n throw work.context.fail({\n code: 'producer-artifact-missing',\n expected: `producer artifact ${key} to be emitted before Pack finalization`,\n hint: 'repair the importer finalizer artifact closure and rebuild',\n detail: { stage: 'finalize', metaPath, artifact: key },\n });\n }\n return emittedPath.replace(/^assets\\//, '');\n },\n sink: () => {},\n },\n );\n const runtimePublication = runtimePublicationFor(work.context, {\n pack: { assets: ownerPackage.pack.assets },\n // The Catalog entry identifies the imported source, while metaPath is the\n // sidecar declaration that drove the import. Keep publication fences on\n // the Catalog identity in production just as the dev importer does.\n sourcePath,\n sourceRevision: ownerPackage.sourceRevision,\n packageUrl: ownerPackage.packageUrl,\n digest: ownerPackage.digest,\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: ownerPackage.artifacts,\n packageName: `${ownerGuid}.pack.json`,\n originalFileName: metaPath,\n guids: subAssets.map((sub) => sub.guid),\n projection: work.context.cookedCurrentProjection,\n refsByGuid: new Map(\n ownerProduct.value.assets.map((asset) => [\n asset.guid.toLowerCase(),\n asset.refs.map((ref) => ref.guid),\n ]),\n ),\n publication: runtimePublication.publication,\n sourcePath,\n });\n}\n\nasync function emitBuildEntry(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n entry: PackIndexEntry,\n availableGuids: ReadonlySet<string>,\n): Promise<void> {\n const guid = entry.guid.toLowerCase();\n const metaPath = metaPathForGuid(work.context.inventory.declarations, guid);\n if (metaPath === undefined) {\n if (entry.sourcePath.endsWith('.pack.json'))\n await emitAuthoredPack(work, guidSeen, entry, availableGuids);\n else guidSeen.add(guid);\n return;\n }\n const declaration = work.context.inventory.declarations.get(metaPath);\n if (declaration === undefined) {\n throw work.context.fail({\n code: 'catalog-declaration-missing',\n expected: 'every indexed Meta path to have one validated producer declaration',\n hint: 'rerun the inventory and repair the Catalog declaration index',\n detail: { metaPath },\n });\n }\n const runMeta = { ...declaration, buildPack: false };\n const subAssets = runMeta.subAssets;\n for (const sub of subAssets) guidSeen.add(sub.guid.toLowerCase());\n const sourcePackage = await produceSourcePackage({\n meta: runMeta,\n registry: work.context.importerRegistry,\n fs: work.context.fsForImport,\n });\n if (!sourcePackage.ok) throw work.context.fail(sourcePackage.error);\n const ownerFinalizer = work.context.importerRegistry.get(runMeta.importer)?.finalize;\n if (ownerFinalizer !== undefined) {\n await emitFinalizedOwner(\n work,\n metaPath,\n canonicalScriptableSourcePath(entry.sourcePath),\n subAssets,\n sourcePackage.value,\n ownerFinalizer,\n );\n return;\n }\n const finalized = await finalizePackageTransportSource(\n projectImportProductForBuild(sourcePackage.value.product),\n {\n base: work.context.basePrefix,\n packagePath: `assets/${subAssets[0]?.guid ?? 'pack'}.pack.json`,\n artifactPath: (assetGuid, key) => `${assetGuid}-${key}.bin`,\n sink: () => {},\n },\n );\n const productByGuid = sourcePackageAssetsByGuid(sourcePackage.value);\n const canonicalSourcePath = canonicalScriptableSourcePath(entry.sourcePath);\n const runtimePublication = runtimePublicationFor(work.context, {\n pack: { assets: finalized.pack.assets },\n // See emitFinalizedOwner: the sidecar path is an import driver, not the\n // stable source identity carried by the Catalog row.\n sourcePath: canonicalSourcePath,\n sourceRevision: finalized.sourceRevision,\n packageUrl: finalized.packageUrl,\n digest: finalized.digest,\n sourceKeys: sourceKeysFor(subAssets),\n });\n await emitPackDocument(work, {\n pack: runtimePublication.pack,\n artifacts: finalized.artifacts,\n packageName: `${subAssets[0]?.guid ?? 'pack'}.pack.json`,\n originalFileName: metaPath,\n guids: subAssets.map((sub) => sub.guid),\n projection: work.context.cookedCurrentProjection,\n refsByGuid: new Map(\n [...productByGuid].map(([guid, asset]) => [guid, asset.refs.map((ref) => ref.guid)]),\n ),\n publication: runtimePublication.publication,\n sourcePath: canonicalSourcePath,\n });\n}\n\nexport async function produceBuildAssets(\n context: BuildProductionOptions,\n): Promise<PackIndexEntry[]> {\n const dynamicBundles = await buildPackSources(context);\n const entries = [\n ...context.inventory.entries,\n ...dynamicBundles.flatMap((bundle) => bundle.entries),\n ];\n const availableGuids = new Set(entries.map((entry) => entry.guid.toLowerCase()));\n const importedEntries = [...entries];\n const guidSeen = new Set<string>();\n const work: BuildEmissionWork = { importedEntries, context };\n for (const bundle of dynamicBundles) {\n await emitScriptablePack(work, guidSeen, bundle);\n }\n for (const entry of importedEntries) {\n if (!guidSeen.has(entry.guid.toLowerCase()))\n await emitBuildEntry(work, guidSeen, entry, availableGuids);\n }\n return importedEntries;\n}\n","import type { CatalogImporterPolicy } from '@forgeax/engine-pack/build';\nimport { SHADER_RESERVED_IMPORTER_KEY } from './import-runner.js';\n\nexport type { CatalogImporterPolicy } from '@forgeax/engine-pack/build';\n\n/** Provider keys whose external declarations have a standard Catalog route. */\nexport const DEFAULT_CATALOG_IMPORTER_KEYS = [\n 'image',\n 'gltf',\n 'fbx',\n 'audio',\n 'font',\n 'ui',\n] as const;\n\nexport type CatalogImporterDisposition = 'publish' | 'exclude' | 'missing';\n\n/**\n * Resolve Catalog visibility from provider registration, not from a Vite\n * adapter's importer list. The shader transform is deliberately excluded;\n * every other provider must either be a standard provider or be registered by\n * the host before its declarations can become authoritative.\n */\nexport function catalogImporterPolicy(\n importer: string,\n hostImporterKeys: ReadonlySet<string>,\n): CatalogImporterPolicy {\n if (importer === SHADER_RESERVED_IMPORTER_KEY) {\n return {\n disposition: 'exclude',\n hostProvided: false,\n expected: 'the provider must publish cooked runtime output before Catalog projection',\n hint: 'remove the source declaration from Pack roots or publish its cooked runtime module',\n };\n }\n if ((DEFAULT_CATALOG_IMPORTER_KEYS as readonly string[]).includes(importer)) {\n return {\n disposition: 'publish',\n hostProvided: false,\n expected: 'a standard Catalog provider declaration',\n hint: 'let the provider producer materialize the declared output',\n };\n }\n if (hostImporterKeys.has(importer)) {\n return {\n disposition: 'publish',\n hostProvided: true,\n expected: 'a registered host Catalog provider declaration',\n hint: 'let the registered provider materialize the declared output',\n };\n }\n return {\n disposition: 'missing',\n hostProvided: false,\n expected: 'the sidecar importer must be present in the registered provider set',\n hint: 'wire the provider through the host importer registry before building the Catalog',\n };\n}\n","import {\n buildCatalogProjection,\n type CatalogBuildProjectionOptions,\n type CatalogBuildResult,\n type CatalogProducerVisibility,\n} from '@forgeax/engine-pack/build';\nimport type { ScanOptions } from '@forgeax/engine-pack/scanner';\nimport { catalogImporterPolicy } from './catalog-importer-policy.js';\n\nexport async function buildCatalogResult(\n roots: readonly string[],\n base = '/',\n registeredImporterKeys: ReadonlySet<string> = new Set(),\n scanOptions: ScanOptions = {},\n catalogVisibility: CatalogProducerVisibility = () => true,\n sourceIdentityFor?: (sourcePath: string) => string,\n): Promise<CatalogBuildResult> {\n const options: CatalogBuildProjectionOptions = {\n base,\n scanOptions,\n importerPolicy: (importer) => catalogImporterPolicy(importer, registeredImporterKeys),\n visibility: catalogVisibility,\n ...(sourceIdentityFor === undefined ? {} : { sourceIdentityFor }),\n };\n return buildCatalogProjection(roots, options);\n}\n","import type { Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\n\nexport interface Lm63TypeC {\n readonly tilt: 'NONE';\n readonly verticalAnglesDeg: readonly number[];\n readonly horizontalAnglesDeg: readonly number[];\n readonly candela: readonly number[];\n}\n\nexport interface Lm63ParseError {\n readonly code: 'invalid-ies' | 'unsupported-tilt' | 'unsupported-photometric-type';\n readonly reason: string;\n}\n\nfunction numericTokens(source: string, startLine: number): number[] {\n return source\n .split(/\\r?\\n/)\n .slice(startLine)\n .join(' ')\n .replaceAll(',', ' ')\n .split(/\\s+/)\n .filter((token) => token.length > 0)\n .map(Number);\n}\n\nfunction allFinite(values: readonly number[]): boolean {\n return values.every(Number.isFinite);\n}\n\nexport function parseLm63TypeC(source: string): Result<Lm63TypeC, Lm63ParseError> {\n const lines = source.split(/\\r?\\n/);\n const tiltLine = lines.findIndex((line) => /^\\s*TILT\\s*=/i.test(line));\n if (tiltLine < 0) return err({ code: 'invalid-ies', reason: 'missing TILT declaration' });\n const tiltSource = lines[tiltLine];\n if (tiltSource === undefined)\n return err({ code: 'invalid-ies', reason: 'missing TILT declaration' });\n const tilt = tiltSource\n .slice(tiltSource.indexOf('=') + 1)\n .trim()\n .toUpperCase();\n if (tilt !== 'NONE') return err({ code: 'unsupported-tilt', reason: `TILT=${tilt}` });\n\n const values = numericTokens(source, tiltLine + 1);\n if (values.length < 12 || !allFinite(values.slice(0, 12))) {\n return err({ code: 'invalid-ies', reason: 'numeric header is incomplete or non-finite' });\n }\n const verticalCount = values[3];\n const horizontalCount = values[4];\n const photometricType = values[5];\n if (\n verticalCount === undefined ||\n horizontalCount === undefined ||\n photometricType === undefined\n ) {\n return err({ code: 'invalid-ies', reason: 'numeric header is incomplete or non-finite' });\n }\n if (photometricType !== 1) {\n return err({\n code: 'unsupported-photometric-type',\n reason: `photometric type ${photometricType} is not Type C`,\n });\n }\n if (\n !Number.isInteger(verticalCount) ||\n !Number.isInteger(horizontalCount) ||\n verticalCount < 2 ||\n horizontalCount < 1\n ) {\n return err({ code: 'invalid-ies', reason: 'angle counts are invalid' });\n }\n\n const angleOffset = 12;\n const verticalEnd = angleOffset + verticalCount;\n const horizontalEnd = verticalEnd + horizontalCount;\n const candelaEnd = horizontalEnd + verticalCount * horizontalCount;\n if (values.length < candelaEnd) {\n return err({ code: 'invalid-ies', reason: 'angle or candela table is incomplete' });\n }\n const verticalAnglesDeg = values.slice(angleOffset, verticalEnd);\n const horizontalAnglesDeg = values.slice(verticalEnd, horizontalEnd);\n const candelaMultiplier = values[2];\n if (candelaMultiplier === undefined) {\n return err({ code: 'invalid-ies', reason: 'numeric header is incomplete or non-finite' });\n }\n const candela = values.slice(horizontalEnd, candelaEnd).map((value) => value * candelaMultiplier);\n if (\n !allFinite(verticalAnglesDeg) ||\n !allFinite(horizontalAnglesDeg) ||\n !allFinite(candela) ||\n verticalAnglesDeg[0] !== 0 ||\n verticalAnglesDeg[verticalAnglesDeg.length - 1] !== 180 ||\n horizontalAnglesDeg[0] !== 0\n ) {\n return err({ code: 'invalid-ies', reason: 'Type C angles or candela values are invalid' });\n }\n return ok({ tilt: 'NONE', verticalAnglesDeg, horizontalAnglesDeg, candela });\n}\n","import { IES_PROFILE_HEIGHT, IES_PROFILE_WIDTH, type IesProfileAsset } from '@forgeax/engine-types';\nimport type { Lm63TypeC } from './parse-lm63.js';\n\nfunction horizontalTable(source: Lm63TypeC): { angles: number[]; values: number[] } {\n const angles = [...source.horizontalAnglesDeg];\n const values = [...source.candela];\n const verticalCount = source.verticalAnglesDeg.length;\n const lastAngle = angles.at(-1);\n if (lastAngle === undefined) return { angles, values };\n if (lastAngle < 360) {\n for (let index = angles.length - 2; index > 0; index--) {\n const angle = angles[index];\n if (angle === undefined) continue;\n angles.push(360 - angle);\n const row = source.horizontalAnglesDeg.length - 1 - index;\n values.push(\n ...source.candela.slice(row * verticalCount, row * verticalCount + verticalCount),\n );\n }\n }\n return { angles, values };\n}\n\nfunction interpolate(\n values: readonly number[],\n angles: readonly number[],\n angle: number,\n verticalIndex: number,\n verticalCount: number,\n): number {\n const wrapped = ((angle % 360) + 360) % 360;\n const last = angles.length - 1;\n const finalAngle = angles[last];\n const firstAngle = angles[0];\n if (finalAngle === undefined || firstAngle === undefined) return Number.NaN;\n for (let index = 0; index < last; index++) {\n const left = angles[index];\n const right = angles[index + 1];\n if (left === undefined || right === undefined) continue;\n if (wrapped < left || wrapped > right) continue;\n const span = right - left;\n const factor = span === 0 ? 0 : (wrapped - left) / span;\n const a = values[index * verticalCount + verticalIndex] ?? 0;\n const b = values[(index + 1) * verticalCount + verticalIndex] ?? 0;\n return a + (b - a) * factor;\n }\n const first = values[verticalIndex] ?? 0;\n const finalRow = (angles.length - 1) * verticalCount + verticalIndex;\n const final = values[finalRow] ?? 0;\n const span = 360 - finalAngle + firstAngle;\n const factor = span === 0 ? 0 : (wrapped - finalAngle + 360) / span;\n return final + (first - final) * factor;\n}\n\nfunction toFloat16(value: number): number {\n if (value === 0) return 0;\n const sign = value < 0 ? 0x8000 : 0;\n const absolute = Math.abs(value);\n if (!Number.isFinite(absolute)) return sign | 0x7c00;\n const exponent = Math.floor(Math.log2(absolute));\n if (exponent < -14) return sign | Math.round(absolute / 2 ** -24);\n if (exponent > 15) return sign | 0x7c00;\n const mantissa = Math.round((absolute / 2 ** exponent - 1) * 1024);\n return sign | ((exponent + 15) << 10) | Math.min(mantissa, 1023);\n}\n\nexport function readFloat16LE(bytes: Uint8Array, offset: number): number {\n const bits = (bytes[offset] ?? 0) | ((bytes[offset + 1] ?? 0) << 8);\n const sign = (bits & 0x8000) === 0 ? 1 : -1;\n const exponent = (bits >>> 10) & 0x1f;\n const fraction = bits & 0x03ff;\n if (exponent === 0) return sign * 2 ** -14 * (fraction / 2 ** 10);\n if (exponent === 0x1f) return fraction === 0 ? sign * Infinity : Number.NaN;\n return sign * 2 ** (exponent - 15) * (1 + fraction / 2 ** 10);\n}\n\nexport function resampleTypeC(source: Lm63TypeC): Uint8Array {\n const table = horizontalTable(source);\n const verticalCount = source.verticalAnglesDeg.length;\n const output = new Uint8Array(IES_PROFILE_WIDTH * IES_PROFILE_HEIGHT * 2);\n let peak = 0;\n const samples: number[] = [];\n for (let y = 0; y < IES_PROFILE_HEIGHT; y++) {\n const vertical = (y / (IES_PROFILE_HEIGHT - 1)) * 180;\n let lower = 0;\n while (lower + 1 < verticalCount && (source.verticalAnglesDeg[lower + 1] ?? 0) < vertical)\n lower++;\n const upper = Math.min(lower + 1, verticalCount - 1);\n const left = source.verticalAnglesDeg[lower] ?? 0;\n const right = source.verticalAnglesDeg[upper] ?? 0;\n const factor = right === left ? 0 : (vertical - left) / (right - left);\n for (let x = 0; x < IES_PROFILE_WIDTH; x++) {\n const horizontal = (x / IES_PROFILE_WIDTH) * 360;\n const low = interpolate(table.values, table.angles, horizontal, lower, verticalCount);\n const high = interpolate(table.values, table.angles, horizontal, upper, verticalCount);\n const value = low + (high - low) * factor;\n samples.push(Math.max(0, value));\n peak = Math.max(peak, value);\n }\n }\n const divisor = peak > 0 ? peak : 1;\n for (let index = 0; index < samples.length; index++) {\n const bits = toFloat16((samples[index] ?? 0) / divisor);\n output[index * 2] = bits & 0xff;\n output[index * 2 + 1] = bits >>> 8;\n }\n return output satisfies IesProfileAsset['data'];\n}\n","import type {\n IesProfileAsset,\n ImportContext,\n Importer,\n ImportResult,\n Result,\n} from '@forgeax/engine-types';\nimport {\n err,\n IES_PROFILE_BYTE_LENGTH,\n IES_PROFILE_HEIGHT,\n IES_PROFILE_WIDTH,\n IMPORT_ERROR_HINTS,\n ImportError,\n ok,\n} from '@forgeax/engine-types';\nimport { parseLm63TypeC } from './parse-lm63.js';\nimport { resampleTypeC } from './resample-type-c.js';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction decodeFloat16(bytes: Uint8Array, offset: number): number {\n const bits = (bytes[offset] ?? 0) | ((bytes[offset + 1] ?? 0) << 8);\n const sign = (bits & 0x8000) === 0 ? 1 : -1;\n const exponent = (bits >>> 10) & 0x1f;\n const fraction = bits & 0x03ff;\n if (exponent === 0) return sign * 2 ** -14 * (fraction / 2 ** 10);\n if (exponent === 0x1f) return fraction === 0 ? sign * Infinity : Number.NaN;\n return sign * 2 ** (exponent - 15) * (1 + fraction / 2 ** 10);\n}\n\nexport function validateIesProfilePayload(value: unknown): Result<IesProfileAsset, Error> {\n if (!isRecord(value) || value.kind !== 'ies-profile') {\n return err(new Error('IES payload kind must be ies-profile'));\n }\n const data = value.data;\n if (!(data instanceof Uint8Array) || data.byteLength !== IES_PROFILE_BYTE_LENGTH) {\n return err(\n new Error(\n `IES payload must contain ${IES_PROFILE_WIDTH}x${IES_PROFILE_HEIGHT} little-endian f16 samples`,\n ),\n );\n }\n for (let offset = 0; offset < data.byteLength; offset += 2) {\n if (!Number.isFinite(decodeFloat16(data, offset))) {\n return err(new Error('IES payload contains a non-finite f16 sample'));\n }\n }\n return ok(value as unknown as IesProfileAsset);\n}\n\nfunction sourceValidationError(ctx: ImportContext, reason: string): ImportError {\n return new ImportError({\n code: 'source-validation-failed',\n expected: 'LM-63 Type C source with TILT=NONE',\n hint: IMPORT_ERROR_HINTS['source-validation-failed'],\n detail: {\n diagnostics: [\n {\n code: 'ies-source-invalid',\n severity: 'error',\n sourcePath: ctx.source,\n sourceRange: { start: 0, end: 0, line: 1, column: 1 },\n rule: 'LM-63 Type C TILT=NONE',\n expected: 'LM-63 Type C source with TILT=NONE',\n actual: reason,\n hint: 'repair the IES source and rerun the build-time importer',\n },\n ],\n },\n });\n}\n\nasync function importIes(ctx: ImportContext): Promise<ImportResult> {\n const source = await ctx.readSource();\n if (!source.ok) {\n return {\n ok: false,\n error: new ImportError({\n code: 'source-read-failed',\n expected: `readable IES source at ${ctx.source}`,\n hint: IMPORT_ERROR_HINTS['source-read-failed'],\n detail: { source: ctx.source, reason: String(source.error) },\n }),\n };\n }\n const parsed = parseLm63TypeC(new TextDecoder().decode(source.value));\n if (!parsed.ok) return { ok: false, error: sourceValidationError(ctx, parsed.error.reason) };\n const declaration = ctx.subAssets.find((asset) => asset.kind === 'ies-profile');\n if (declaration === undefined) {\n return {\n ok: false,\n error: sourceValidationError(ctx, 'missing ies-profile sub-asset declaration'),\n };\n }\n const data = resampleTypeC(parsed.value);\n const payload: IesProfileAsset = { kind: 'ies-profile', data };\n return {\n ok: true,\n value: {\n assets: [\n {\n guid: declaration.guid,\n kind: 'ies-profile',\n payload,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'application/octet-stream',\n assetCodec: { name: 'forgeax-ies-profile', version: '1' },\n bytes: data,\n },\n },\n },\n ],\n sourceDependencies: [ctx.source],\n },\n };\n}\n\nexport const iesImporter: Importer = {\n key: 'ies',\n import: importIes,\n};\n","// @forgeax/engine-import - ImporterRegistry (feat-20260603-asset-import-loader-injection M2 / w14).\n//\n// The build-time twin of the runtime LoaderRegistry\n// (packages/runtime/src/loader-registry.ts): an injectable table that maps a\n// `meta.importer` string key -> an `Importer` (the contract SSOT lives in\n// `@forgeax/engine-types`). The import runner holds one of these and dispatches\n// on `meta.importer` through `get(key)` instead of a hardcoded\n// `if (importer === ...)` chain (plan-strategy D-1).\n//\n// Shape mirrors the runtime LoaderRegistry + Console `Registry`\n// (packages/console/src/registry.ts) register/lookup pattern (research\n// Finding 8). The injected unit is an **object** `{ key, import }`, not a bare\n// function, so a \"one importer key -> one Importer\" dispatch table is the\n// natural shape.\n//\n// Fail-fast semantics (charter P3): `register` throws on a malformed importer\n// (empty key or non-function `import`) at wire time, so a misconfigured host\n// surfaces immediately rather than at the first import run. `register` is\n// idempotent on a repeated key (last write wins, no throw) so re-wiring a\n// registry across build invocations is safe.\n\nimport type { Importer, ImporterCapabilities, ImportSubAsset } from '@forgeax/engine-types';\n\n/**\n * Injectable `meta.importer` -> {@link Importer} table held by the import\n * runner.\n *\n * @example Wire + dispatch (build tooling side)\n * ```ts\n * import { ImporterRegistry } from '@forgeax/engine-import';\n * import { gltfImporter } from '@forgeax/engine-gltf';\n * const importers = new ImporterRegistry();\n * importers.register(gltfImporter);\n * const gltf = importers.get('gltf'); // Importer | undefined\n * ```\n */\nexport class ImporterRegistry {\n private readonly importers = new Map<string, Importer>();\n\n /**\n * Register an importer for its `importer.key`. Fail-fast on a malformed\n * importer (charter P3); idempotent on a repeated key (last write wins).\n *\n * @param importer the `{ key, import }` object to register.\n * @throws TypeError when `importer.key` is empty or `importer.import` is not\n * a function - a wire-time misconfiguration the host must fix.\n */\n register(importer: Importer): void {\n if (typeof importer.key !== 'string' || importer.key.length === 0) {\n throw new TypeError(\n `ImporterRegistry.register: importer.key must be a non-empty string (got ${JSON.stringify(importer.key)})`,\n );\n }\n if (typeof importer.import !== 'function') {\n throw new TypeError(\n `ImporterRegistry.register: importer.import must be a function for key \"${importer.key}\"`,\n );\n }\n this.importers.set(importer.key, importer);\n }\n\n /**\n * Look up the importer registered for `key`. Returns `undefined` when no\n * importer is wired - the import runner maps that to a structured\n * `ImportError(code='importer-not-registered')` with the registered keys in\n * `.detail.registeredImporters` (charter P3).\n */\n get(key: string): Importer | undefined {\n return this.importers.get(key);\n }\n\n /**\n * The importer keys currently wired, in insertion order. Fed into the\n * `importer-not-registered` error `.detail.registeredImporters` so AI users\n * see exactly what is injectable.\n */\n registeredImporters(): readonly string[] {\n return [...this.importers.keys()];\n }\n\n /** Project the first registered producer capability into the runner context. */\n contextCapabilities(): ImporterCapabilities {\n for (const importer of this.importers.values()) {\n const decoder = importer.capabilities?.decodeImage;\n if (decoder !== undefined) return { decodeImage: decoder };\n }\n return {};\n }\n\n /** Ask the registered producer whether a declaration has a Catalog product. */\n shouldPublishCatalog(input: {\n readonly importer: string;\n readonly importSettings: Readonly<Record<string, unknown>>;\n readonly subAssets: readonly ImportSubAsset[];\n }): boolean {\n return (\n this.get(input.importer)?.capabilities?.catalog?.publish?.({\n importSettings: input.importSettings,\n subAssets: input.subAssets,\n }) ?? true\n );\n }\n}\n","import { createHash } from 'node:crypto';\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { isScriptablePackAssetKind, validatePack } from '@forgeax/engine-pack';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { Asset, AssetGuid as AssetGuidType, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport type {\n ScriptablePackAssetSnapshot,\n ScriptablePackAssetSnapshotSource,\n} from './scriptable-pack.js';\n\nexport interface ScriptablePackFileAssetSnapshotSourceOptions {\n readonly assetRoots: readonly string[];\n}\n\nexport type ScriptablePackFileAssetSnapshotError =\n | {\n readonly code: 'scriptable-pack-file-root-unreadable';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly root: string; readonly reason: string };\n }\n | {\n readonly code: 'scriptable-pack-file-unreadable';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly path: string; readonly reason: string };\n }\n | {\n readonly code: 'scriptable-pack-file-json-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly path: string; readonly reason: string };\n }\n | {\n readonly code: 'scriptable-pack-file-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly path: string;\n readonly ajvErrors: readonly { readonly instancePath: string; readonly message: string }[];\n };\n }\n | {\n readonly code: 'scriptable-pack-file-guid-collision';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly guid: string; readonly paths: readonly [string, string] };\n }\n | {\n readonly code: 'scriptable-pack-file-asset-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly path: string; readonly guid: string; readonly reason: string };\n }\n | {\n readonly code: 'asset-not-found';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly guid: string };\n };\n\ninterface PackAssetRow {\n readonly guid: string;\n readonly kind: string;\n readonly payload: unknown;\n readonly refs: readonly string[];\n readonly [key: string]: unknown;\n}\n\ninterface PackDocument {\n readonly assets: readonly PackAssetRow[];\n readonly [key: string]: unknown;\n}\n\ninterface IndexedAsset {\n readonly asset: Asset;\n readonly digest: string;\n}\n\ninterface SnapshotIndex {\n readonly generation: number;\n readonly assets: ReadonlyMap<string, IndexedAsset>;\n}\n\ntype SnapshotResult<T> = Result<T, ScriptablePackFileAssetSnapshotError>;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction stable(value: unknown): string {\n if (value instanceof ArrayBuffer) {\n return `ArrayBuffer:${JSON.stringify(Array.from(new Uint8Array(value)))}`;\n }\n if (ArrayBuffer.isView(value)) {\n return `${value.constructor.name}:${JSON.stringify(\n Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)),\n )}`;\n }\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(record[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nfunction digest(value: unknown): string {\n return `sha256:${createHash('sha256').update(stable(value)).digest('hex')}`;\n}\n\nfunction generationFromDigest(value: string): number {\n const parsed = Number.parseInt(value.slice('sha256:'.length, 'sha256:'.length + 8), 16);\n return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : 1;\n}\n\nfunction reasonOf(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nasync function collectPackFiles(\n assetRoots: readonly string[],\n): Promise<SnapshotResult<readonly string[]>> {\n const files = new Set<string>();\n\n async function visit(directory: string): Promise<SnapshotResult<void>> {\n let entries: import('node:fs').Dirent[];\n try {\n entries = (await readdir(directory, { withFileTypes: true })) as import('node:fs').Dirent[];\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-root-unreadable',\n expected: 'every configured ScriptablePack asset root to be readable',\n hint: 'restore the asset root or configure a readable directory, then retry the ScriptablePack build',\n detail: { root: directory, reason: reasonOf(error) },\n });\n }\n\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n const child = resolve(directory, entry.name);\n if (entry.isDirectory()) {\n const nested = await visit(child);\n if (!nested.ok) return nested;\n } else if (entry.isFile() && entry.name.endsWith('.pack.json')) {\n files.add(child);\n }\n }\n return ok(undefined);\n }\n\n for (const rawRoot of [...new Set(assetRoots.map((root) => resolve(root)))].sort((a, b) =>\n a.localeCompare(b),\n )) {\n let info: import('node:fs').Stats;\n try {\n info = await stat(rawRoot);\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-root-unreadable',\n expected: 'every configured ScriptablePack asset root to exist and be readable',\n hint: 'restore the asset root or configure a readable directory, then retry the ScriptablePack build',\n detail: { root: rawRoot, reason: reasonOf(error) },\n });\n }\n if (info.isFile()) {\n if (rawRoot.endsWith('.pack.json')) files.add(rawRoot);\n continue;\n }\n if (!info.isDirectory()) {\n return err({\n code: 'scriptable-pack-file-root-unreadable',\n expected: 'every configured ScriptablePack asset root to be a file or directory',\n hint: 'configure an asset root containing ordinary .pack.json files, then retry the ScriptablePack build',\n detail: { root: rawRoot, reason: 'root is neither a file nor a directory' },\n });\n }\n const visited = await visit(rawRoot);\n if (!visited.ok) return visited;\n }\n\n return ok([...files].sort((left, right) => left.localeCompare(right)));\n}\n\nfunction invalidPack(\n path: string,\n errors: readonly { readonly instancePath: string; readonly message: string }[],\n): ScriptablePackFileAssetSnapshotError {\n return {\n code: 'scriptable-pack-file-invalid',\n expected: 'a schema-valid ordinary .pack.json package',\n hint: 'repair the Pack JSON against the package schema, then retry the ScriptablePack build',\n detail: { path, ajvErrors: errors },\n };\n}\n\nfunction assetFromRow(\n path: string,\n row: PackAssetRow,\n): SnapshotResult<{ readonly asset: Asset; readonly digest: string }> {\n if (!isScriptablePackAssetKind(row.kind)) {\n return err({\n code: 'scriptable-pack-file-asset-invalid',\n expected: 'an ordinary ScriptablePack Asset kind from SCRIPTABLE_PACK_ASSET_KINDS',\n hint: 'use an ordinary engine Asset kind or keep the custom payload outside this Asset snapshot source',\n detail: { path, guid: row.guid, reason: `unsupported kind ${JSON.stringify(row.kind)}` },\n });\n }\n if (!isRecord(row.payload)) {\n return err({\n code: 'scriptable-pack-file-asset-invalid',\n expected: 'the Pack row payload to be a JSON object',\n hint: 'write a complete ordinary Asset payload in the .pack.json row, then retry the ScriptablePack build',\n detail: { path, guid: row.guid, reason: 'payload is not an object' },\n });\n }\n const payloadKind = row.payload.kind;\n if (payloadKind !== undefined && payloadKind !== row.kind) {\n return err({\n code: 'scriptable-pack-file-asset-invalid',\n expected: 'the row kind and payload.kind to agree',\n hint: 'repair the duplicated kind discriminant in the .pack.json row, then retry the ScriptablePack build',\n detail: {\n path,\n guid: row.guid,\n reason: `row kind ${JSON.stringify(row.kind)} does not match payload.kind ${JSON.stringify(payloadKind)}`,\n },\n });\n }\n const asset = { ...row.payload, kind: row.kind } as Asset;\n return ok({ asset, digest: digest(asset) });\n}\n\nasync function indexPackFiles(\n assetRoots: readonly string[],\n): Promise<SnapshotResult<SnapshotIndex>> {\n const files = await collectPackFiles(assetRoots);\n if (!files.ok) return files;\n\n const byGuid = new Map<string, IndexedAsset>();\n const pathsByGuid = new Map<string, string>();\n const documents: PackDocument[] = [];\n\n for (const path of files.value) {\n let body: string;\n try {\n body = await readFile(path, 'utf8');\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-unreadable',\n expected: 'a readable .pack.json file',\n hint: 'restore the .pack.json file, then retry the ScriptablePack build',\n detail: { path, reason: reasonOf(error) },\n });\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(body) as unknown;\n } catch (error) {\n return err({\n code: 'scriptable-pack-file-json-invalid',\n expected: 'a parseable JSON .pack.json file',\n hint: 'repair or restore the .pack.json file, then retry the ScriptablePack build',\n detail: { path, reason: reasonOf(error) },\n });\n }\n\n if (!validatePack(parsed)) {\n return err(\n invalidPack(\n path,\n (validatePack.errors ?? []).map((error) => ({\n instancePath: error.instancePath,\n message: error.message ?? 'unknown schema validation error',\n })),\n ),\n );\n }\n\n const document = parsed as PackDocument;\n documents.push(document);\n for (const row of document.assets) {\n const existingPath = pathsByGuid.get(row.guid.toLowerCase());\n if (existingPath !== undefined) {\n return err({\n code: 'scriptable-pack-file-guid-collision',\n expected: 'each ordinary Pack asset GUID to be declared by exactly one .pack.json file',\n hint: 'remove the duplicate GUID declaration or keep one authoritative .pack.json package, then retry',\n detail: { guid: row.guid.toLowerCase(), paths: [existingPath, path] },\n });\n }\n const asset = assetFromRow(path, row);\n if (!asset.ok) return asset;\n const key = row.guid.toLowerCase();\n pathsByGuid.set(key, path);\n byGuid.set(key, asset.value);\n }\n }\n\n const sourceDigest = digest(\n [...documents].sort((left, right) => stable(left).localeCompare(stable(right))),\n );\n return ok({\n generation: generationFromDigest(sourceDigest),\n assets: byGuid,\n });\n}\n\n/**\n * Create a build-time ScriptablePack reader backed by ordinary `.pack.json`\n * files below the configured asset roots. The first read builds one immutable\n * GUID index; subsequent reads return private Asset snapshots from that index.\n */\nexport function createScriptablePackFileAssetSnapshotSource(\n options: ScriptablePackFileAssetSnapshotSourceOptions,\n): ScriptablePackAssetSnapshotSource {\n const index = indexPackFiles(options.assetRoots);\n return {\n async readByGuid(\n guid: AssetGuidType,\n ): Promise<Result<ScriptablePackAssetSnapshot, ScriptablePackFileAssetSnapshotError>> {\n const key = AssetGuid.format(guid).toLowerCase();\n const indexed = await index;\n if (!indexed.ok) return indexed;\n const asset = indexed.value.assets.get(key);\n if (asset === undefined) {\n return err({\n code: 'asset-not-found',\n expected: `an ordinary .pack.json asset with GUID ${key} under the configured asset roots`,\n hint: 'add the dependency to an asset root or declare it as a ScriptablePack external reference, then retry',\n detail: { guid: key },\n });\n }\n return ok({\n asset: structuredClone(asset.asset),\n generation: indexed.value.generation,\n digest: asset.digest,\n });\n },\n };\n}\n","import { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { PackAuthoringError } from '@forgeax/engine-pack/source';\nimport type { Asset, AssetGuid as AssetGuidType, ImportError, Result } from '@forgeax/engine-types';\nimport { AssetError, err, ok } from '@forgeax/engine-types';\nimport type {\n ScriptablePackAssetSnapshot,\n ScriptablePackAssetSnapshotSource,\n ScriptablePackDomainError,\n ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\n\nexport type ScriptablePackSnapshotError =\n | AssetError\n | ImportError\n | PackAuthoringError\n | ScriptablePackDomainError;\n\nexport interface ScriptablePackStagedOwner {\n readonly id: string;\n readonly guids: readonly AssetGuidType[];\n build(\n source: ScriptablePackAssetSnapshotSource,\n ): Promise<Result<readonly ScriptablePackStagedOutput[], ScriptablePackSnapshotError>>;\n}\n\nexport interface ScriptablePackStagedSnapshotOptions {\n readonly generation: number;\n readonly owners: readonly ScriptablePackStagedOwner[];\n readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];\n}\n\nfunction stable(value: unknown): string {\n if (ArrayBuffer.isView(value)) {\n return `${value.constructor.name}:${JSON.stringify(Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)))}`;\n }\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(record[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nasync function assetDigest(asset: Asset): Promise<string> {\n const bytes = new TextEncoder().encode(stable(asset));\n const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes);\n return `sha256:${Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join('')}`;\n}\n\nfunction cycleError(\n stack: readonly string[],\n owner: string,\n guid: string,\n): ScriptablePackDomainError {\n const cycleStart = stack.indexOf(owner);\n const cycle = [...stack.slice(cycleStart), owner];\n return {\n code: 'pack-content-dependency-stalled',\n expected: 'the content dependency worklist to make progress',\n hint: 'inspect the waiting GUID and pending subjects, then break the content-read cycle',\n detail: { waitingGuids: [guid], pendingSubjects: cycle, iterations: 1 },\n };\n}\n\nfunction missingOutputError(owner: string, guid: string): ScriptablePackDomainError {\n return {\n code: 'pack-source-output-invalid',\n expected: `owner ${owner} to stage every declared output including ${guid}`,\n hint: 'return one output for every GUID declared by the staged owner',\n detail: { missingGuids: [guid], unexpectedSourceKeys: [], kindMismatches: [] },\n };\n}\n\n/**\n * One-build authority for current-generation ScriptablePack content reads.\n * Local owners are built lazily, memoized, and never resolved through an old Catalog/DDC generation.\n */\nexport function createScriptablePackStagedAssetSnapshotSource(\n options: ScriptablePackStagedSnapshotOptions,\n): ScriptablePackAssetSnapshotSource {\n const owners =\n options.declaredExternalOutputs === undefined || options.declaredExternalOutputs.length === 0\n ? options.owners\n : [\n {\n id: '<declared-pack-external>',\n guids: options.declaredExternalOutputs.map((output) => output.guid),\n async build() {\n return ok(options.declaredExternalOutputs ?? []);\n },\n } satisfies ScriptablePackStagedOwner,\n ...options.owners,\n ];\n const ownerByGuid = new Map<string, ScriptablePackStagedOwner>();\n for (const owner of owners) {\n if (owner.id.trim().length === 0) throw new TypeError('staged owner id must be non-empty');\n for (const guid of owner.guids) {\n const key = AssetGuid.format(guid).toLowerCase();\n const existing = ownerByGuid.get(key);\n if (existing !== undefined) {\n throw new TypeError(`staged GUID ${key} is owned by both ${existing.id} and ${owner.id}`);\n }\n ownerByGuid.set(key, owner);\n }\n }\n\n const snapshots = new Map<string, ScriptablePackAssetSnapshot>();\n const builds = new Map<string, Promise<Result<void, ScriptablePackSnapshotError>>>();\n\n const sourceFor = (stack: readonly string[]): ScriptablePackAssetSnapshotSource => ({\n async readByGuid(guid) {\n const key = AssetGuid.format(guid).toLowerCase();\n const cached = snapshots.get(key);\n if (cached !== undefined) return ok(structuredClone(cached));\n const owner = ownerByGuid.get(key);\n if (owner === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-imported',\n expected: 'a staged local owner for the requested GUID',\n hint: 'declare the local ScriptablePack output before rebuilding the generation',\n }),\n );\n }\n if (stack.includes(owner.id)) return err(cycleError(stack, owner.id, key));\n\n let building = builds.get(owner.id);\n if (building === undefined) {\n building = (async () => {\n const built = await owner.build(sourceFor([...stack, owner.id]));\n if (!built.ok) {\n builds.delete(owner.id);\n return built;\n }\n const next = new Map<string, ScriptablePackAssetSnapshot>();\n for (const output of built.value) {\n const outputGuid = AssetGuid.format(output.guid).toLowerCase();\n if (ownerByGuid.get(outputGuid) !== owner) {\n builds.delete(owner.id);\n return err(missingOutputError(owner.id, outputGuid));\n }\n next.set(outputGuid, {\n asset: structuredClone(output.asset),\n generation: options.generation,\n digest: output.digest ?? (await assetDigest(output.asset)),\n });\n }\n for (const declared of owner.guids) {\n const declaredGuid = AssetGuid.format(declared).toLowerCase();\n if (!next.has(declaredGuid)) {\n builds.delete(owner.id);\n return err(missingOutputError(owner.id, declaredGuid));\n }\n }\n for (const [outputGuid, snapshot] of next) snapshots.set(outputGuid, snapshot);\n return ok(undefined);\n })();\n builds.set(owner.id, building);\n }\n const built = await building;\n if (!built.ok) return built;\n const staged = snapshots.get(key);\n return staged === undefined\n ? err(missingOutputError(owner.id, key))\n : ok(structuredClone(staged));\n },\n });\n\n return sourceFor([]);\n}\n","import type { ImportError } from '@forgeax/engine-types';\n\nconst SOURCE_PACKAGE_ERROR_POLICY = {\n 'source-package-meta-invalid': {\n expected: 'a valid source Meta declaration with complete GUID topology',\n hint: 'repair the Meta declaration, then rebuild or cold-cook the source package',\n },\n 'source-package-importer-missing': {\n expected: 'a registered importer for the source Meta importer key',\n hint: 'register the named importer, then rebuild or cold-cook the source package',\n },\n 'source-package-conversion-failed': {\n expected: 'the configured importer to convert the source successfully',\n hint: 'repair the source or importer, then rebuild or cold-cook the source package',\n },\n 'source-package-ddc-failed': {\n expected: 'a readable persistent DDC entry with matching integrity evidence',\n hint: 'discard the invalid derived entry, then rebuild or cold-cook the source package',\n },\n 'source-package-publication-invalid': {\n expected: 'a complete Pack body, refs, artifacts, and route integrity',\n hint: 'repair the missing product bytes, then rebuild or cold-cook the source package',\n },\n 'source-package-guid-closure-mismatch': {\n expected: 'exactly one produced asset for every declared GUID',\n hint: 'repair the Meta topology or importer output, then rebuild the whole source package',\n },\n} as const;\n\nexport type SourcePackageErrorCode = keyof typeof SOURCE_PACKAGE_ERROR_POLICY;\n\nexport type SourcePackageErrorStage =\n | 'meta'\n | 'importer'\n | 'conversion'\n | 'closure'\n | 'ddc'\n | 'route-integrity';\n\nexport interface SourcePackageErrorContext {\n readonly sourceMeta: string;\n readonly anchorGuid: string;\n readonly affectedGuids: readonly string[];\n readonly producer: string;\n readonly importer: string;\n}\n\nexport interface SourcePackageErrorDetail extends SourcePackageErrorContext {\n readonly stage: SourcePackageErrorStage;\n readonly reason?: string;\n readonly missing?: readonly string[];\n readonly unexpected?: readonly string[];\n readonly registeredImporters?: readonly string[];\n}\n\nexport interface SourcePackageError {\n readonly code: SourcePackageErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: SourcePackageErrorDetail;\n}\n\nexport function sourcePackageError(\n code: SourcePackageErrorCode,\n context: SourcePackageErrorContext,\n detail: Omit<SourcePackageErrorDetail, keyof SourcePackageErrorContext>,\n): SourcePackageError {\n const policy = SOURCE_PACKAGE_ERROR_POLICY[code];\n return {\n code,\n expected: policy?.expected as string,\n hint: policy?.hint as string,\n detail: { ...context, ...detail },\n };\n}\n\nfunction unknownReason(error: unknown): string {\n if (error !== null && typeof error === 'object') {\n const value = error as Record<string, unknown>;\n if (typeof value.code === 'string') {\n const detail = value.detail;\n const reason =\n detail !== null && typeof detail === 'object' && 'reason' in detail\n ? (detail as { readonly reason?: unknown }).reason\n : undefined;\n const diagnostic =\n detail !== null && typeof detail === 'object' && 'diagnostic' in detail\n ? (detail as { readonly diagnostic?: unknown }).diagnostic\n : undefined;\n return `${value.code}: ${\n typeof diagnostic === 'string'\n ? diagnostic\n : typeof reason === 'string'\n ? reason\n : String(value.expected ?? 'producer failure')\n }`;\n }\n }\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction importFailureCode(error: ImportError): SourcePackageErrorCode {\n switch (error.code) {\n case 'importer-not-registered':\n return 'source-package-importer-missing';\n case 'import-produced-no-assets':\n case 'guid-mismatch':\n case 'source-validation-failed':\n return 'source-package-guid-closure-mismatch';\n case 'source-read-failed':\n case 'import-internal-error':\n case 'mesh-material-slot-topology-change':\n case 'mesh-lod-contract-invalid':\n case 'mesh-lod-topology-change':\n case 'mesh-lod-authority-conflict':\n case 'unknown-source-key':\n case 'duplicate-source-key':\n case 'invalid-source-overrides':\n case 'invalid-source-override-payload':\n return 'source-package-conversion-failed';\n }\n}\n\nconst IMPORT_ERROR_CODES = new Set([\n 'importer-not-registered',\n 'source-read-failed',\n 'import-produced-no-assets',\n 'guid-mismatch',\n 'mesh-material-slot-topology-change',\n 'mesh-lod-contract-invalid',\n 'mesh-lod-topology-change',\n 'mesh-lod-authority-conflict',\n 'import-internal-error',\n 'source-validation-failed',\n 'unknown-source-key',\n 'duplicate-source-key',\n 'invalid-source-overrides',\n 'invalid-source-override-payload',\n]);\n\nfunction findNormalizableCause(error: unknown, seen = new Set<unknown>()): unknown {\n if (error === null || typeof error !== 'object' || seen.has(error)) return undefined;\n seen.add(error);\n if (isSourcePackageError(error) || isScriptablePackFailure(error) || isImportError(error)) {\n return error;\n }\n const cause = (error as { readonly cause?: unknown }).cause;\n return cause === undefined ? undefined : findNormalizableCause(cause, seen);\n}\n\n/** Return whether an error chain contains a source-package/import contract error. */\nexport function containsSourcePackageError(error: unknown, seen = new Set<unknown>()): boolean {\n if (error === null || typeof error !== 'object' || seen.has(error)) return false;\n seen.add(error);\n if (isSourcePackageError(error) || isImportError(error)) return true;\n const cause = (error as { readonly cause?: unknown }).cause;\n return cause !== undefined && containsSourcePackageError(cause, seen);\n}\n\nexport function normalizeSourcePackageError(\n error: unknown,\n context: SourcePackageErrorContext,\n): SourcePackageError {\n const cause = findNormalizableCause(error);\n if (cause !== undefined && cause !== error) return normalizeSourcePackageError(cause, context);\n if (isSourcePackageError(error)) return error;\n if (isScriptablePackFailure(error)) {\n return sourcePackageError('source-package-conversion-failed', context, {\n stage: 'conversion',\n reason: unknownReason(error),\n });\n }\n if (isImportError(error)) {\n const code = importFailureCode(error);\n const detail: Omit<SourcePackageErrorDetail, keyof SourcePackageErrorContext> = {\n stage: code === 'source-package-importer-missing' ? 'importer' : 'conversion',\n reason: unknownReason(error),\n ...(code === 'source-package-importer-missing' && 'registeredImporters' in error.detail\n ? { registeredImporters: error.detail.registeredImporters }\n : {}),\n };\n return sourcePackageError(code, context, detail);\n }\n return sourcePackageError(contextErrorStage(error), context, {\n stage: 'conversion',\n reason: unknownReason(error),\n });\n}\n\nfunction isSourcePackageError(error: unknown): error is SourcePackageError {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof error.code === 'string' &&\n error.code in SOURCE_PACKAGE_ERROR_POLICY &&\n 'expected' in error &&\n typeof error.expected === 'string' &&\n 'hint' in error &&\n typeof error.hint === 'string' &&\n 'detail' in error &&\n error.detail !== null &&\n typeof error.detail === 'object'\n );\n}\n\nfunction contextErrorStage(error: unknown): SourcePackageErrorCode {\n return error instanceof SyntaxError\n ? 'source-package-meta-invalid'\n : 'source-package-conversion-failed';\n}\n\nfunction isImportError(error: unknown): error is ImportError {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof error.code === 'string' &&\n IMPORT_ERROR_CODES.has(error.code) &&\n 'expected' in error &&\n 'hint' in error &&\n 'detail' in error\n );\n}\n\nfunction isScriptablePackFailure(error: unknown): error is {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail: unknown;\n} {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof error.code === 'string' &&\n error.code.startsWith('pack-source-') &&\n 'expected' in error &&\n typeof error.expected === 'string' &&\n 'hint' in error &&\n typeof error.hint === 'string' &&\n 'detail' in error\n );\n}\n","import { createHash, randomUUID } from 'node:crypto';\nimport { mkdir, rename, rm, stat, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport {\n type DdcArtifact,\n type DdcEntry,\n type DdcGenerationEntryCandidate,\n DdcGenerationSession,\n type DdcHead,\n DdcLifecycle,\n ddcOutputDigest,\n} from '@forgeax/engine-ddc';\nimport { canonicalDdcJson } from '@forgeax/engine-ddc/key';\nimport {\n type CatalogEntry,\n err,\n ok,\n type ResourceRevision,\n type Result,\n} from '@forgeax/engine-types';\nimport {\n type SourcePackageError,\n type SourcePackageErrorContext,\n sourcePackageError,\n} from './source-package-errors.js';\n\ninterface SourcePackageDdcEntryInput {\n readonly root: string;\n readonly entry: DdcEntry;\n readonly context: SourcePackageErrorContext;\n}\n\ninterface StagedSourcePackageDdc extends DdcGenerationEntryCandidate {\n readonly root: string;\n readonly session: DdcGenerationSession;\n readonly context: SourcePackageErrorContext;\n}\n\nexport interface ImportPublicationInput {\n readonly root: string;\n readonly guid: string;\n readonly desiredKey: string;\n readonly pack: unknown;\n readonly previousCatalog: readonly CatalogEntry[];\n readonly nextCatalog: readonly CatalogEntry[];\n readonly publishedGuids: readonly string[];\n readonly transport?: {\n readonly path: string;\n readonly body: string;\n /** Complete package-relative artifact closure for the published Pack. */\n readonly artifacts?: readonly ImportPublicationArtifact[];\n };\n}\n\nexport interface ImportPublicationArtifact {\n readonly path: string;\n readonly mediaType: string;\n readonly bytes: Uint8Array;\n}\n\nexport interface ImportPublicationError {\n readonly code: SourcePackageError['code'];\n readonly expected: string;\n readonly hint: string;\n readonly detail: string;\n readonly diagnostic: SourcePackageError;\n}\n\nexport type ImportPublicationResult =\n | {\n readonly ok: true;\n readonly key: string;\n readonly head: DdcHead;\n readonly catalog: readonly CatalogEntry[];\n readonly revision: ResourceRevision;\n readonly transportPersisted: boolean;\n }\n | { readonly ok: false; readonly error: ImportPublicationError; readonly head: DdcHead };\n\nexport interface StagedImportPublication {\n readonly input: ImportPublicationInput;\n readonly ddc: StagedSourcePackageDdc;\n readonly key: string;\n readonly head: DdcHead;\n readonly catalog: readonly CatalogEntry[];\n readonly revision: ResourceRevision;\n}\n\nexport type StagedImportPublicationResult =\n | { readonly ok: true; readonly candidate: StagedImportPublication }\n | { readonly ok: false; readonly error: ImportPublicationError; readonly head: DdcHead };\n\nfunction inspectHead(root: string, guid: string, desiredKey: string): Promise<DdcHead> {\n return new DdcLifecycle(root).inspect(guid, desiredKey);\n}\n\nconst PUBLICATION_SETTLE_TIMEOUT_MS = 5_000;\nconst PUBLICATION_SETTLE_POLL_MS = 10;\n\nasync function inspectAfterSupersededCommit(candidate: StagedSourcePackageDdc): Promise<DdcHead> {\n let head = await inspectHead(candidate.root, candidate.lease.guid, candidate.lease.desiredKey);\n if (head.state === 'current' && head.currentKey === candidate.lease.desiredKey) return head;\n\n // A newer owner may already have superseded this lease while it is still\n // cooking. The strict DDC CAS correctly returns `stale` to this candidate;\n // wait for that owner to publish before turning an equivalent publication\n // into a user-visible import failure. The wait is bounded so a crashed\n // owner never leaves the caller hanging and a different desired key still\n // fails closed.\n const deadline = Date.now() + PUBLICATION_SETTLE_TIMEOUT_MS;\n while (\n Date.now() < deadline &&\n head.activeLease !== undefined &&\n head.activeLease.attempt !== candidate.lease.attempt &&\n head.activeLease.desiredKey === candidate.lease.desiredKey\n ) {\n await new Promise((resolve) => setTimeout(resolve, PUBLICATION_SETTLE_POLL_MS));\n head = await inspectHead(candidate.root, candidate.lease.guid, candidate.lease.desiredKey);\n if (head.state === 'current' && head.currentKey === candidate.lease.desiredKey) return head;\n }\n return head;\n}\n\nasync function stageSourcePackageDdc(\n input: SourcePackageDdcEntryInput,\n): Promise<Result<StagedSourcePackageDdc, SourcePackageError>> {\n const session = new DdcGenerationSession(input.root, { generation: 1 });\n try {\n const candidate = await session.stageEntry(input.entry);\n return ok({ ...candidate, root: input.root, session, context: input.context });\n } catch (error) {\n return err(\n sourcePackageError('source-package-ddc-failed', input.context, {\n stage: 'ddc',\n reason: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n}\n\nasync function commitSourcePackageDdc(\n candidate: StagedSourcePackageDdc,\n): Promise<Result<DdcHead, SourcePackageError>> {\n try {\n const commit = await candidate.session.commitEntry(candidate, candidate.lease.desiredKey);\n if (commit.result !== 'current') {\n const head = await inspectAfterSupersededCommit(candidate);\n if (head.state === 'current' && head.currentKey === candidate.lease.desiredKey) {\n return ok(head);\n }\n return err(\n sourcePackageError('source-package-ddc-failed', candidate.context, {\n stage: 'ddc',\n reason: `DDC lifecycle commit returned ${commit.result}`,\n }),\n );\n }\n return ok(await inspectHead(candidate.root, candidate.lease.guid, candidate.lease.desiredKey));\n } catch (error) {\n return err(\n sourcePackageError('source-package-ddc-failed', candidate.context, {\n stage: 'ddc',\n reason: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n}\n\nasync function persistTransport(transport: ImportPublicationInput['transport']): Promise<boolean> {\n if (transport === undefined) return true;\n const directory = dirname(transport.path);\n const temporary = `${transport.path}.${randomUUID()}.tmp`;\n try {\n await mkdir(directory, { recursive: true });\n if (((await stat(directory)).mode & 0o222) === 0) {\n throw new Error('transport directory is read-only');\n }\n await writeFile(temporary, transport.body);\n await rename(temporary, transport.path);\n return true;\n } catch {\n await rm(temporary, { force: true }).catch(() => {});\n return false;\n }\n}\n\nfunction importPublicationFailure(error: SourcePackageError): ImportPublicationError {\n return {\n code: error.code,\n expected: error.expected,\n hint: error.hint,\n detail: error.detail.reason ?? error.detail.stage,\n diagnostic: error,\n };\n}\n\nfunction publicationArtifacts(\n transport: ImportPublicationInput['transport'],\n): Readonly<Record<string, DdcArtifact>> {\n return Object.fromEntries(\n (transport?.artifacts ?? []).map((artifact) => [\n artifact.path,\n { mediaType: artifact.mediaType, bytes: artifact.bytes },\n ]),\n );\n}\n\nfunction publicationContext(input: ImportPublicationInput): SourcePackageErrorContext {\n return {\n sourceMeta: '<import-publication>',\n anchorGuid: input.guid,\n affectedGuids: input.publishedGuids,\n producer: 'source-package/import-publication',\n importer: 'import-publication',\n };\n}\n\n/**\n * Validate the Pack-to-transport closure before DDC staging can advance its\n * head. The Pack is the authority for required artifact paths; a missing or\n * mismatched body must never become a published `current` generation.\n */\nfunction validatePublicationArtifactClosure(\n input: ImportPublicationInput,\n): Result<Readonly<Record<string, DdcArtifact>>, SourcePackageError> {\n const context = publicationContext(input);\n const pack = input.pack;\n if (\n pack === null ||\n typeof pack !== 'object' ||\n (pack as { readonly schemaVersion?: unknown }).schemaVersion !== '2.0.0' ||\n (pack as { readonly kind?: unknown }).kind !== 'internal-text-package'\n ) {\n return ok(publicationArtifacts(input.transport));\n }\n const assets = (pack as { readonly assets?: unknown }).assets;\n if (!Array.isArray(assets)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'published Pack does not contain an assets array',\n }),\n );\n }\n\n const required = new Map<\n string,\n {\n readonly mediaType?: string;\n readonly byteLength?: number;\n readonly integrity?: { readonly algorithm: string; readonly digest: string };\n }\n >();\n for (const asset of assets) {\n if (asset === null || typeof asset !== 'object') {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'published Pack contains a non-object asset row',\n }),\n );\n }\n const rawArtifacts = (asset as { readonly artifacts?: unknown }).artifacts;\n if (rawArtifacts === undefined) continue;\n if (rawArtifacts === null || typeof rawArtifacts !== 'object' || Array.isArray(rawArtifacts)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'published Pack contains an invalid asset artifact map',\n }),\n );\n }\n for (const [localKey, rawDescriptor] of Object.entries(\n rawArtifacts as Record<string, unknown>,\n )) {\n if (rawDescriptor === null || typeof rawDescriptor !== 'object') {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact descriptor ${localKey} is not an object`,\n }),\n );\n }\n const descriptor = rawDescriptor as Record<string, unknown>;\n const path = descriptor.path;\n if (typeof path !== 'string' || path.length === 0) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact descriptor ${localKey} has no package-relative path`,\n }),\n );\n }\n const mediaType = descriptor.mediaType;\n const byteLength = descriptor.byteLength;\n const integrityValue = descriptor.integrity;\n const integrity =\n integrityValue !== null && typeof integrityValue === 'object'\n ? {\n algorithm: (integrityValue as { readonly algorithm?: unknown }).algorithm,\n digest: (integrityValue as { readonly digest?: unknown }).digest,\n }\n : undefined;\n if (\n (mediaType !== undefined && typeof mediaType !== 'string') ||\n (byteLength !== undefined &&\n (!Number.isSafeInteger(byteLength) || (byteLength as number) < 0)) ||\n (integrityValue !== undefined &&\n (integrity === undefined ||\n typeof integrity.algorithm !== 'string' ||\n typeof integrity.digest !== 'string'))\n ) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact descriptor ${path} has invalid metadata`,\n }),\n );\n }\n if (required.has(path)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: `artifact path ${path} is declared more than once`,\n }),\n );\n }\n required.set(path, {\n ...(typeof mediaType === 'string' ? { mediaType } : {}),\n ...(typeof byteLength === 'number' ? { byteLength } : {}),\n ...(integrity !== undefined &&\n typeof integrity.algorithm === 'string' &&\n typeof integrity.digest === 'string'\n ? { integrity: { algorithm: integrity.algorithm, digest: integrity.digest } }\n : {}),\n });\n }\n }\n\n const available = new Map<string, ImportPublicationArtifact>();\n const duplicatePaths: string[] = [];\n for (const artifact of input.transport?.artifacts ?? []) {\n if (available.has(artifact.path)) duplicatePaths.push(artifact.path);\n available.set(artifact.path, artifact);\n }\n const missing: string[] = [];\n const mismatched: string[] = [...duplicatePaths.map((path) => `${path}: duplicate body`)];\n for (const path of available.keys()) {\n if (!required.has(path)) mismatched.push(`${path}: unexpected body`);\n }\n for (const [path, descriptor] of required) {\n const artifact = available.get(path);\n if (artifact === undefined) {\n missing.push(path);\n continue;\n }\n if (!(artifact.bytes instanceof Uint8Array)) {\n mismatched.push(`${path}: body is not Uint8Array`);\n continue;\n }\n if (descriptor.mediaType !== undefined && artifact.mediaType !== descriptor.mediaType) {\n mismatched.push(`${path}: media type mismatch`);\n }\n if (\n descriptor.byteLength !== undefined &&\n artifact.bytes.byteLength !== descriptor.byteLength\n ) {\n mismatched.push(`${path}: byte length mismatch`);\n }\n if (descriptor.integrity !== undefined) {\n const actualDigest = `sha256:${createHash('sha256').update(artifact.bytes).digest('hex')}`;\n if (\n descriptor.integrity.algorithm !== 'sha256' ||\n descriptor.integrity.digest !== actualDigest\n ) {\n mismatched.push(`${path}: integrity mismatch`);\n }\n }\n }\n if (missing.length > 0 || mismatched.length > 0) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'Pack artifact closure is incomplete or mismatched',\n ...(missing.length === 0 ? {} : { missing }),\n ...(mismatched.length === 0 ? {} : { unexpected: mismatched }),\n }),\n );\n }\n\n if (input.transport !== undefined) {\n let transportedPack: unknown;\n try {\n transportedPack = JSON.parse(input.transport.body) as unknown;\n } catch {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'transport body is not valid JSON for the published Pack',\n }),\n );\n }\n if (canonicalDdcJson(transportedPack) !== canonicalDdcJson(pack)) {\n return err(\n sourcePackageError('source-package-publication-invalid', context, {\n stage: 'route-integrity',\n reason: 'transport body does not match the published Pack',\n }),\n );\n }\n }\n\n return ok(publicationArtifacts(input.transport));\n}\n\nfunction projectImportPublication(\n input: ImportPublicationInput,\n head: DdcHead,\n observedAt: number,\n): { readonly catalog: readonly CatalogEntry[]; readonly revision: ResourceRevision } {\n const digest = head.currentKey ?? input.desiredKey;\n const revision: ResourceRevision = { digest, observedAt, rootId: input.root };\n const published = new Set(input.publishedGuids.map((guid) => guid.toLowerCase()));\n const catalog = input.nextCatalog.map((row) => {\n if (!published.has(row.guid.toLowerCase())) return row;\n const previousLkg =\n head.lastKnownGoodKey === undefined\n ? undefined\n : input.previousCatalog.find(\n (candidate) =>\n candidate.guid.toLowerCase() === row.guid.toLowerCase() &&\n candidate.revision?.digest === head.lastKnownGoodKey,\n );\n const projection =\n row.projection === undefined\n ? undefined\n : (() => {\n const { lastKnownGood: _staleLastKnownGood, ...withoutLastKnownGood } = row.projection;\n return previousLkg?.packageUrl === undefined\n ? withoutLastKnownGood\n : { ...withoutLastKnownGood, lastKnownGood: { packageUrl: previousLkg.packageUrl } };\n })();\n return {\n ...row,\n revision,\n ...(projection === undefined ? {} : { projection }),\n };\n });\n return { catalog, revision };\n}\n\nexport async function publishImportPublication(\n input: ImportPublicationInput,\n): Promise<ImportPublicationResult> {\n const staged = await stageImportPublication(input);\n if (!staged.ok) return staged;\n return commitImportPublication(staged.candidate);\n}\n\nexport async function stageImportPublication(\n input: ImportPublicationInput,\n): Promise<StagedImportPublicationResult> {\n const validatedArtifacts = validatePublicationArtifactClosure(input);\n if (!validatedArtifacts.ok) {\n return {\n ok: false,\n error: importPublicationFailure(validatedArtifacts.error),\n head: await inspectHead(input.root, input.guid, input.desiredKey),\n };\n }\n const artifacts = validatedArtifacts.value;\n const staged = await stageSourcePackageDdc({\n root: input.root,\n entry: {\n key: input.desiredKey,\n guid: input.guid,\n payload: input.pack,\n refs: [],\n artifacts,\n receipt: {\n guid: input.guid,\n key: input.desiredKey,\n producer: 'engine-import/source-package-publication',\n inputFingerprint: input.desiredKey,\n outputDigest: ddcOutputDigest({\n guid: input.guid,\n payload: input.pack,\n refs: [],\n artifacts,\n }),\n },\n },\n context: publicationContext(input),\n });\n if (!staged.ok) {\n return {\n ok: false,\n error: importPublicationFailure(staged.error),\n head: await inspectHead(input.root, input.guid, input.desiredKey),\n };\n }\n const lastKnownGoodKey =\n staged.value.previousHead.currentKey !== undefined &&\n staged.value.previousHead.currentKey !== input.desiredKey\n ? staged.value.previousHead.currentKey\n : staged.value.previousHead.lastKnownGoodKey;\n const projectedHead: DdcHead = {\n ...staged.value.previousHead,\n state: 'cooking',\n currentKey: input.desiredKey,\n ...(lastKnownGoodKey === undefined ? {} : { lastKnownGoodKey }),\n };\n const projected = projectImportPublication(input, projectedHead, Date.now());\n return {\n ok: true,\n candidate: {\n input,\n ddc: staged.value,\n key: input.desiredKey,\n head: projectedHead,\n catalog: projected.catalog,\n revision: projected.revision,\n },\n };\n}\n\nexport async function commitImportPublication(\n candidate: StagedImportPublication,\n): Promise<ImportPublicationResult> {\n const publication = await commitSourcePackageDdc(candidate.ddc);\n if (!publication.ok) {\n return {\n ok: false,\n error: importPublicationFailure(publication.error),\n head: await inspectHead(\n candidate.input.root,\n candidate.input.guid,\n candidate.input.desiredKey,\n ),\n };\n }\n const transportPersisted = await persistTransport(candidate.input.transport);\n if (!transportPersisted) {\n await restoreImportPublication(candidate);\n return {\n ok: false,\n error: {\n code: 'source-package-publication-invalid',\n expected: 'the sidecar and DDC publication to commit atomically',\n hint: 'repair the sidecar destination, then rebuild or cold-cook the source package',\n detail: 'sidecar transport persistence failed; restored the previous DDC/LKG generation',\n diagnostic: sourcePackageError(\n 'source-package-publication-invalid',\n {\n sourceMeta: '<import-publication>',\n anchorGuid: candidate.input.guid,\n affectedGuids: candidate.input.publishedGuids,\n producer: 'source-package/import-publication',\n importer: 'import-publication',\n },\n { stage: 'route-integrity', reason: 'sidecar transport persistence failed' },\n ),\n },\n head: await inspectHead(\n candidate.input.root,\n candidate.input.guid,\n candidate.input.desiredKey,\n ),\n };\n }\n const projected = projectImportPublication(candidate.input, publication.value, Date.now());\n return {\n ok: true,\n key: candidate.input.desiredKey,\n head: publication.value,\n catalog: projected.catalog,\n revision: projected.revision,\n transportPersisted,\n };\n}\n\nexport async function discardImportPublication(candidate: StagedImportPublication): Promise<void> {\n await candidate.ddc.session.discardEntry(candidate.ddc);\n}\n\nexport async function restoreImportPublication(candidate: StagedImportPublication): Promise<void> {\n await candidate.ddc.session.restoreEntry(candidate.ddc);\n}\n"]}
|