@forgeax/engine-import 0.1.7 → 0.1.19

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/import-product.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-staged-snapshot.ts","../src/scriptable-source-package.ts","../src/source-package.ts","../src/scriptable-pack-host.ts","../src/build-production.ts","../src/catalog-importer-policy.ts","../src/catalog-inventory.ts","../src/importer-registry.ts","../src/source-package-errors.ts","../src/source-package-publication.ts"],"names":["bytes","ref","product","err","ok","AssetGuid","record","ImportError","closureError","fingerprint","stable","AssetError","built","projectScriptablePackMeta","producedGuids","projectScriptablePackSceneComponents","loadAssetConfig","resolve","finalizePackageTransportSource","guid","stat"],"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","// @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';\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\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 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 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(normalizeDependencyPath(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(normalizeDependencyPath(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 // 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 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 };\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 { isScriptablePackAssetKind, type ScriptablePackAssetKind } from '@forgeax/engine-pack';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport {\n type AssetReader,\n projectScriptablePackMeta,\n projectScriptablePackSceneComponents,\n type ScriptablePackDefinition,\n type ScriptablePackError,\n type ScriptablePackReadError,\n type ScriptablePackSourceClosureEntry,\n} from '@forgeax/engine-pack/source';\nimport type {\n AnimationGraph,\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n FontAsset,\n ImportedAsset,\n MaterialAsset,\n MeshAsset,\n Result,\n TilesetAsset,\n} from '@forgeax/engine-types';\n\nexport type { ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';\n\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport {\n createImportProduct,\n type ImportAssetProduct,\n type TerminalImportProduct,\n} from './import-product.js';\n\nfunction commonPathPrefix(paths: readonly string[]): string {\n const first = paths[0];\n if (first === undefined) return '';\n const firstNormalized = first.replaceAll('\\\\', '/');\n const firstDirectory = firstNormalized.slice(0, firstNormalized.lastIndexOf('/'));\n const parts = firstDirectory.split('/');\n let length = parts.length;\n for (const path of paths.slice(1)) {\n const normalized = path.replaceAll('\\\\', '/');\n const candidate = normalized.slice(0, normalized.lastIndexOf('/')).split('/');\n length = Math.min(length, candidate.length);\n for (let index = 0; index < length; index += 1) {\n if (parts[index] !== candidate[index]) {\n length = index;\n break;\n }\n }\n }\n return parts.slice(0, length).join('/');\n}\n\n/** Remove host-specific absolute roots from the source closure fingerprint. */\nfunction stableSourceClosure(\n closure: readonly ScriptablePackSourceClosureEntry[],\n): readonly ScriptablePackSourceClosureEntry[] {\n const root = commonPathPrefix(closure.map((entry) => entry.path));\n return closure\n .map((entry) => ({\n path: entry.path.replaceAll('\\\\', '/').slice(root.length).replace(/^\\/+/, ''),\n digest: entry.digest,\n }))\n .sort((left, right) => left.path.localeCompare(right.path));\n}\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 /** Producer-owned stable output identity from the ScriptablePack definition. */\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 Pack projection; durable 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};\n\nexport type AssetOutputPayload = AssetOutputPayloadByKind[ScriptablePackAssetKind];\n\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('ScriptablePack output producer kind and version must be non-empty');\n }\n if (typeof producer.produce !== 'function') {\n throw new TypeError(`ScriptablePack 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\nexport interface ScriptablePackBuildProduct {\n readonly product: TerminalImportProduct<unknown>;\n /** Raw private outputs for the current staged build generation, never a runtime publication path. */\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n readonly externalEvidence: readonly ScriptablePackExternalEvidence[];\n readonly inputFingerprint: string;\n /** Engine publication fields projected after ordinary producers run. */\n readonly publication?: AssetPublicationEnvelope;\n}\n\n/** Domain-owned structured failure transported without flattening its recovery fields. */\nexport interface ScriptablePackDomainError {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n}\n\nexport type ScriptablePackBuildBridgeResult = Result<\n ScriptablePackBuildProduct,\n ScriptablePackError | AssetError | ImportError | ScriptablePackDomainError\n>;\n\ninterface ObservedRead {\n readonly guid: string;\n readonly asset: Asset;\n readonly generation: number;\n readonly digest: string;\n}\n\nfunction privateClone<T>(value: T): T {\n return structuredClone(value);\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 isStructuredDomainError(value: unknown): value is ScriptablePackDomainError {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as { readonly code?: unknown }).code === 'string' &&\n typeof (value as { readonly expected?: unknown }).expected === 'string' &&\n typeof (value as { readonly hint?: unknown }).hint === 'string'\n );\n}\n\nfunction remapBuildFailureSource(\n value: unknown,\n sourcePath: string,\n): ScriptablePackError | undefined {\n if (value === null || typeof value !== 'object') return undefined;\n const error = value as { readonly code?: unknown; readonly detail?: unknown };\n if (error.code !== 'pack-source-load-failed') return undefined;\n if (error.detail === null || typeof error.detail !== 'object') return undefined;\n const detail = error.detail as { readonly phase?: unknown } & Record<string, unknown>;\n if (detail.phase !== 'build') return undefined;\n return {\n ...(value as ScriptablePackError),\n detail: { ...detail, sourcePath },\n } as ScriptablePackError;\n}\n\nfunction observedAssetReader(source?: ScriptablePackAssetSnapshotSource): {\n readonly reader: AssetReader;\n readonly reads: ReadonlyMap<string, ObservedRead>;\n} {\n const reads = new Map<string, ObservedRead>();\n const reader: AssetReader = {\n async readByGuid<TAsset extends Asset = Asset>(guid: AssetGuidType) {\n const key = AssetGuid.format(guid);\n const cached = reads.get(key);\n if (cached !== undefined) return ok(privateClone(cached.asset) as TAsset);\n if (source === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-found',\n expected: `a host Asset snapshot source for ScriptablePack content read ${key}`,\n hint: 'configure the standard ScriptablePack asset source or remove the content read',\n }),\n );\n }\n const result = await source.readByGuid(guid);\n if (!result.ok) return result;\n const fixed = privateClone(result.value.asset);\n reads.set(key, {\n guid: key,\n asset: fixed,\n generation: result.value.generation,\n digest: result.value.digest,\n });\n return ok(privateClone(fixed) as TAsset);\n },\n };\n return { reader, reads };\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 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 fingerprint(value: unknown): Promise<string> {\n const subtle = globalThis.crypto?.subtle;\n if (subtle === undefined)\n throw new Error('Web Crypto API is required for ScriptablePack fingerprints');\n const digest = await subtle.digest('SHA-256', new TextEncoder().encode(stable(value)));\n const hex = Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join(\n '',\n );\n return `sha256:${hex}`;\n}\n\nfunction outputError(\n definition: ScriptablePackDefinition,\n output: Readonly<Record<string, unknown>>,\n): ScriptablePackError | undefined {\n const declaredKeys = Object.keys(definition.assets);\n const outputKeys = Object.keys(output);\n const outputKeySet = new Set(outputKeys);\n const declaredKeySet = new Set(declaredKeys);\n const missingKeys = declaredKeys.filter((key) => !outputKeySet.has(key));\n const unexpectedSourceKeys = outputKeys.filter((key) => !declaredKeySet.has(key));\n const kindMismatches = declaredKeys.flatMap((sourceKey) => {\n const descriptor = definition.assets[sourceKey];\n const value = output[sourceKey];\n if (descriptor === undefined || value === undefined) return [];\n const actualKind =\n value !== null && typeof value === 'object' && 'kind' in value\n ? String((value as { readonly kind: unknown }).kind)\n : typeof value;\n return actualKind === descriptor.kind\n ? []\n : [{ sourceKey, expected: descriptor.kind, actual: actualKind }];\n });\n if (\n missingKeys.length === 0 &&\n unexpectedSourceKeys.length === 0 &&\n kindMismatches.length === 0\n ) {\n return undefined;\n }\n return {\n code: 'pack-source-output-invalid',\n expected: 'build output keys and kinds to exactly match definition.assets',\n hint: 'inspect sourceKey and GUID topology, then rebuild or cold-cook the ScriptablePack',\n detail: {\n missingGuids: missingKeys.map((key) =>\n AssetGuid.format(definition.assets[key]?.guid as AssetGuidType),\n ),\n unexpectedSourceKeys,\n kindMismatches,\n },\n };\n}\n\nfunction externalClosureError(\n declared: ReadonlySet<string>,\n referenced: ReadonlySet<string>,\n read: ReadonlySet<string>,\n): ScriptablePackError | undefined {\n const used = new Set([...referenced, ...read]);\n const undeclaredReferencedGuids = [...referenced].filter((guid) => !declared.has(guid));\n const undeclaredReadGuids = [...read].filter((guid) => !declared.has(guid));\n const unusedDeclaredGuids = [...declared].filter((guid) => !used.has(guid));\n if (\n undeclaredReferencedGuids.length === 0 &&\n undeclaredReadGuids.length === 0 &&\n unusedDeclaredGuids.length === 0\n ) {\n return undefined;\n }\n return {\n code: 'pack-source-external-closure-mismatch',\n expected: 'externalAssets GUIDs to equal output external refs union AssetReader reads',\n hint: 'inspect refs and AssetReader reads, repair GUID declarations, then rebuild or cold-cook',\n detail: {\n undeclaredReferencedGuids: undeclaredReferencedGuids.sort(),\n undeclaredReadGuids: undeclaredReadGuids.sort(),\n unusedDeclaredGuids: unusedDeclaredGuids.sort(),\n },\n };\n}\n\nfunction productContractError(\n sourceKey: string,\n kind: string,\n product: AssetOutputProduct,\n): ScriptablePackError | undefined {\n const mismatches: { sourceKey: string; expected: string; actual: string }[] = [];\n if (product.payload.kind !== kind) {\n mismatches.push({ sourceKey, expected: kind, actual: product.payload.kind });\n }\n for (const reference of product.refs) {\n if (!AssetGuid.parse(reference.guid).ok) {\n mismatches.push({\n sourceKey,\n expected: 'every producer ref to contain a valid Asset GUID',\n actual: reference.guid,\n });\n break;\n }\n }\n for (const [artifactKey, artifact] of Object.entries(product.artifacts)) {\n if (\n artifactKey.length === 0 ||\n artifactKey.startsWith('/') ||\n artifactKey.includes('..') ||\n artifactKey.includes('\\\\') ||\n artifact.mediaType.trim().length === 0 ||\n !(artifact.bytes instanceof Uint8Array)\n ) {\n mismatches.push({\n sourceKey,\n expected: 'asset-local artifacts with safe keys, mediaType, and Uint8Array bytes',\n actual: artifactKey,\n });\n break;\n }\n }\n if (mismatches.length === 0) return undefined;\n return {\n code: 'pack-source-output-invalid',\n expected: 'producer output refs and asset-local artifacts to satisfy the Pack v2 contract',\n hint: 'inspect sourceKey and artifact provenance, repair refs or bytes, then rebuild or cold-cook',\n detail: { missingGuids: [], unexpectedSourceKeys: [], kindMismatches: mismatches },\n };\n}\n\nexport interface BuildScriptablePackOptions {\n readonly definition: ScriptablePackDefinition;\n readonly sourcePath: string;\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n readonly outputs: AssetOutputProducerRegistry;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n readonly authoringContractVersion: string;\n}\n\n/**\n * Build one external ScriptablePack through the producer-owned Pack bridge.\n * Success preserves payloads, GUID refs, and local artifacts; failure retains\n * `code`, `expected`, `hint`, and `detail` for recovery by the caller.\n */\nexport async function buildScriptablePack(\n options: BuildScriptablePackOptions,\n): Promise<ScriptablePackBuildBridgeResult> {\n const observed = observedAssetReader(options.assetSource);\n let built: Awaited<ReturnType<ScriptablePackDefinition['build']>>;\n try {\n const build = options.definition.build;\n built = await build(observed.reader);\n } catch (error) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'ScriptablePack build to return a structured Result without throwing',\n hint: 'fix the build implementation and return a structured failure for expected authoring errors',\n detail: { reason: error instanceof Error ? error.message : String(error) },\n }),\n );\n }\n if (!built.ok) {\n const remappedBuildFailure = remapBuildFailureSource(built.error, options.sourcePath);\n if (remappedBuildFailure !== undefined) return err(remappedBuildFailure);\n if (\n built.error instanceof ImportError ||\n built.error instanceof AssetError ||\n isStructuredDomainError(built.error)\n ) {\n return err(built.error);\n }\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'ScriptablePack build failure to use a structured domain error',\n hint: 'return an error with code, expected, hint, and optional detail fields',\n detail: { reason: String(built.error) },\n }),\n );\n }\n if (!record(built.value)) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'ScriptablePack build output to be an object keyed by declared sourceKey',\n hint: 'return one concrete Asset payload for each declared sourceKey',\n detail: { reason: 'build output is not an object' },\n }),\n );\n }\n const output = built.value;\n const invalidOutput = outputError(options.definition, output);\n if (invalidOutput !== undefined) return err(invalidOutput);\n\n const assets: ImportedAsset<unknown>[] = [];\n for (const sourceKey of Object.keys(options.definition.assets).sort()) {\n const descriptor = options.definition.assets[sourceKey];\n const asset = output[sourceKey];\n if (descriptor === undefined) continue;\n if (!isAsset(asset)) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: `a concrete Asset payload for sourceKey ${sourceKey}`,\n hint: 'return a durable Asset with a kind from SCRIPTABLE_PACK_ASSET_KINDS',\n detail: { reason: 'build output payload is missing or has an unknown kind' },\n }),\n );\n }\n const producer = options.outputs.get(descriptor.kind);\n if (producer === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: `a domain output producer registered for kind ${descriptor.kind}`,\n hint: 'attach the owning producer capability, inspect registration, then rebuild or cold-cook',\n detail: {\n missingGuids: [AssetGuid.format(descriptor.guid)],\n unexpectedSourceKeys: [],\n kindMismatches: [],\n },\n });\n }\n const product = await producer.produce({\n guid: AssetGuid.format(descriptor.guid),\n sourceKey,\n asset,\n });\n if (!product.ok) return err(product.error);\n const productError = productContractError(sourceKey, descriptor.kind, product.value);\n if (productError !== undefined) return err(productError);\n assets.push({\n guid: AssetGuid.format(descriptor.guid),\n kind: descriptor.kind,\n ...(descriptor.name === undefined ? {} : { name: descriptor.name }),\n payload: product.value.payload,\n refs: product.value.refs,\n artifacts: product.value.artifacts,\n });\n }\n\n const local = new Set(assets.map((asset) => asset.guid.toLowerCase()));\n const referenced = new Set(\n assets\n .flatMap((asset) => asset.refs.map((reference) => reference.guid.toLowerCase()))\n .filter((guid) => !local.has(guid)),\n );\n const read = new Set([...observed.reads.keys()].map((guid) => guid.toLowerCase()));\n const declared = new Set(\n Object.values(options.definition.externalAssets).map((guid) =>\n AssetGuid.format(guid).toLowerCase(),\n ),\n );\n const closureError = externalClosureError(declared, referenced, read);\n if (closureError !== undefined) return err(closureError);\n\n const externalEvidence = [...declared].sort().map((guid): ScriptablePackExternalEvidence => {\n const observedRead = observed.reads.get(guid);\n const isReference = referenced.has(guid);\n return {\n guid,\n usage: observedRead === undefined ? 'reference' : isReference ? 'both' : 'content',\n ...(observedRead === undefined\n ? {}\n : { generation: observedRead.generation, digest: observedRead.digest }),\n };\n });\n // The dependency generation is runtime provenance, not a content identity.\n // It may advance when a fresh AssetRegistry is created even though the\n // referenced bytes are unchanged. Keep it in the receipt for diagnostics,\n // but exclude it from the source fingerprint so an identical source closure\n // and dependency digest produce the same publication fence across Edit and\n // fresh Play worlds.\n const fingerprintEvidence = externalEvidence.map(({ guid, usage, digest }) => ({\n guid,\n usage,\n ...(digest === undefined ? {} : { digest }),\n }));\n const inputFingerprint = await fingerprint({\n meta: projectScriptablePackMeta(options.definition, options.sourcePath),\n sceneComponents: projectScriptablePackSceneComponents(options.definition.sceneComponents),\n sourceClosure: stableSourceClosure(options.sourceClosure),\n externalEvidence: fingerprintEvidence,\n authoringContractVersion: options.authoringContractVersion,\n producerVersions: options.outputs.versions(),\n });\n const refs = assets.flatMap((asset) => asset.refs);\n const artifacts = Object.fromEntries(\n assets.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [`${asset.guid}/${key}`, artifact]),\n ),\n );\n const product = createImportProduct({\n assets,\n sourceDependencies: options.sourceClosure.map((entry) => entry.path),\n refs,\n artifacts,\n receipts: assets.map((asset) => ({\n guid: asset.guid,\n origin: 'sourceMeta' 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: await Promise.all(\n Object.keys(options.definition.assets)\n .sort()\n .map(async (sourceKey) => {\n const descriptor = options.definition.assets[sourceKey];\n const asset = output[sourceKey];\n if (descriptor === undefined || !isAsset(asset)) {\n throw new Error(`validated ScriptablePack output ${sourceKey} is not an Asset`);\n }\n return {\n guid: descriptor.guid,\n sourceKey,\n asset: privateClone(asset),\n digest: await fingerprint(asset),\n };\n }),\n ),\n externalEvidence,\n inputFingerprint,\n });\n}\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 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 { err, ImportError, MATERIAL_TEXTURE_SLOTS, ok } 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((parameter) => parameter.type === 'texture')\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] = addMaterialRef(value, { componentName: '<material>', fieldName });\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 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 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 ordinaryPodProduct(input: AssetOutputInput): AssetOutputProduct {\n const asset = input.asset;\n switch (asset.kind) {\n case 'texture': {\n const texture = asset as TextureAsset;\n return {\n payload: texture,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'image/raw',\n assetCodec: { name: 'raw-image', version: '1' },\n bytes: bytes(texture.data),\n },\n },\n };\n }\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 '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/1',\n materialProduct,\n);\nexport const meshAssetOutputProducer = createSafeProducer('mesh', 'mesh-binary/4', meshProduct);\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 createStandardAssetOutputProducerRegistry(\n sceneComponents: readonly ScriptablePackSceneComponent[] = [],\n): AssetOutputProducerRegistry {\n const registry = new AssetOutputProducerRegistry();\n registry.register(materialAssetOutputProducer);\n registry.register(meshAssetOutputProducer);\n registry.register(createSceneAssetOutputProducer(sceneComponents));\n for (const kind of [\n 'texture',\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 ] as const) {\n registry.register(createSafeProducer(kind, 'ordinary-pod/1', ordinaryPodProduct));\n }\n return registry;\n}\n","import { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { ScriptablePackError } 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 | ScriptablePackError\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(stack: readonly string[], owner: string, guid: string): ScriptablePackError {\n const cycleStart = stack.indexOf(owner);\n const cycle = [...stack.slice(cycleStart), owner];\n return {\n code: 'pack-source-build-cycle',\n expected: 'an acyclic graph of ScriptablePack content dependencies',\n actual: cycle.join(' -> '),\n hint: 'break one content read edge or convert it to a reference-only dependency',\n retryable: false,\n recoveryActions: ['inspect-content-dependency-graph', 'edit-source'],\n detail: { sourcePath: owner, sourceKey: guid, incomingRefs: cycle },\n };\n}\n\nfunction missingOutputError(owner: string, guid: string): ScriptablePackError {\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 { AssetGuid } from '@forgeax/engine-pack/guid';\nimport { projectScriptablePackMeta, type ScriptablePackError } from '@forgeax/engine-pack/source';\nimport type {\n AssetError,\n ImportError,\n ImportedAsset,\n ImportProduct,\n Result,\n} from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport {\n type BuildScriptablePackOptions,\n buildScriptablePack,\n type ScriptablePackDomainError,\n type ScriptablePackExternalEvidence,\n type ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\n\nconst META_ARTIFACT_KEY = 'scriptable-pack.meta.json';\n\nexport interface ScriptableSourcePackageProduct {\n readonly anchorGuid: string;\n readonly declaredGuids: readonly string[];\n readonly product: ImportProduct<unknown>;\n readonly inputFingerprint: string;\n readonly externalEvidence: readonly ScriptablePackExternalEvidence[];\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n}\n\nexport type ScriptableSourcePackageResult = Result<\n ScriptableSourcePackageProduct,\n ScriptablePackError | AssetError | ImportError | ScriptablePackDomainError\n>;\n\nfunction withPrebuiltMeta<P>(\n product: ImportProduct<P>,\n anchorGuid: string,\n meta: unknown,\n): ImportProduct<P> {\n const bytes = new TextEncoder().encode(`${JSON.stringify(meta)}\\n`);\n return {\n ...product,\n assets: product.assets.map(\n (asset): ImportedAsset<P> =>\n asset.guid.toLowerCase() === anchorGuid\n ? {\n ...asset,\n artifacts: {\n ...asset.artifacts,\n [META_ARTIFACT_KEY]: { mediaType: 'application/json', bytes },\n },\n }\n : asset,\n ),\n };\n}\n\nexport async function produceScriptableSourcePackage(\n options: BuildScriptablePackOptions,\n): Promise<ScriptableSourcePackageResult> {\n const built = await buildScriptablePack(options);\n if (!built.ok) return err(built.error);\n const declaredGuids = Object.values(options.definition.assets)\n .map((descriptor) => AssetGuid.format(descriptor.guid).toLowerCase())\n .sort();\n const anchorGuid = declaredGuids[0];\n if (anchorGuid === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'at least one declared ScriptablePack output',\n hint: 'add an output descriptor before building the package',\n detail: { missingGuids: [], unexpectedSourceKeys: [], kindMismatches: [] },\n });\n }\n const product = withPrebuiltMeta(\n built.value.product,\n anchorGuid,\n projectScriptablePackMeta(options.definition, options.sourcePath),\n );\n return ok({\n anchorGuid,\n declaredGuids,\n product,\n stagedOutputs: built.value.stagedOutputs,\n inputFingerprint: built.value.inputFingerprint,\n externalEvidence: built.value.externalEvidence,\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 { createHash } from 'node:crypto';\nimport { stat } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { createAcceptedPublication } from '@forgeax/engine-ddc';\nimport {\n type AuthoredPackInput,\n finalizePackageTransportSource,\n loadAssetConfig,\n type PackageFinalizePolicy,\n resolveAssetSource,\n upgradeLegacyAuthoredPack,\n} from '@forgeax/engine-pack/build';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport { type NativeCooker, NativeCookerRegistry } from '@forgeax/engine-pack/native-cooker';\nimport type { ScanSourceDeclaration } from '@forgeax/engine-pack/scanner';\nimport {\n projectScriptablePackSceneComponents,\n type ScriptablePackDefinition,\n type ScriptablePackSourceClosureEntry,\n} from '@forgeax/engine-pack/source';\nimport { inventoryScriptablePackSource } from '@forgeax/engine-pack/source-node';\nimport type {\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n AssetPublicationOutput,\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 { ScriptablePackDomainError, ScriptablePackStagedOutput } from './scriptable-pack.js';\nimport { createStandardAssetOutputProducerRegistry } from './scriptable-pack-output-producers.js';\nimport {\n createScriptablePackStagedAssetSnapshotSource,\n type ScriptablePackStagedOwner,\n} from './scriptable-pack-staged-snapshot.js';\nimport {\n produceScriptableSourcePackage,\n type ScriptableSourcePackageProduct,\n type ScriptableSourcePackageResult,\n} from './scriptable-source-package.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: Readonly<ScriptablePackDefinition>;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n readonly publicationGeneration: number;\n readonly policy: ScriptablePackTransportPolicy;\n}\n\nexport interface ScriptablePackPublicationFacts {\n readonly outputs: readonly AssetPublicationOutput[];\n readonly refs: ReadonlyMap<string, readonly string[]>;\n}\n\nexport interface PreparedScriptablePack {\n readonly product: ScriptableSourcePackageProduct;\n readonly finalized: FinalizedPackageTransport;\n readonly facts: ScriptablePackPublicationFacts;\n readonly revision: ResourceRevision;\n readonly publication: AssetPublicationEnvelope;\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\nexport type ScriptablePackTransportPolicy =\n | PackageFinalizePolicy\n | ((product: ScriptableSourcePackageProduct) => PackageFinalizePolicy);\n\ntype ScriptablePackHostError =\n ScriptableSourcePackageResult extends Result<unknown, infer E> ? E : never;\n\nexport interface CookedAuthoredPack {\n readonly logicalPackage: DdcPack;\n readonly refsByGuid: ReadonlyMap<string, readonly string[]>;\n}\n\nexport interface AuthoredPackTransport {\n readonly pack: AuthoredPackInput;\n readonly firstGuid?: string;\n readonly cooked?: CookedAuthoredPack;\n readonly finalized?: FinalizedPackageTransport;\n}\n\n/** Build-time capabilities required to expose ordinary Meta products to a ScriptablePack. */\nexport interface ScriptablePackExternalImportOptions {\n readonly importerRegistry: ImporterRegistry;\n readonly fsForImport: ImportRunnerFs;\n /** Package path aliases from forgeax.assets.paths; defaults to the current project config. */\n readonly assetPaths?: Readonly<Record<string, string>>;\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\nexport function scriptablePackInputs(\n sourcePaths: readonly string[],\n declarations: ReadonlyMap<string, ScanSourceDeclaration>,\n cwd: string,\n generationFor: (displaySourcePath: string) => number,\n policyFor: (displaySourcePath: string) => ScriptablePackTransportPolicy,\n): ScriptablePackInput[] {\n return sourcePaths.flatMap((sourcePath) => {\n const declaration = declarations.get(resolve(cwd, sourcePath));\n if (declaration?.format !== 'pack.ts') return [];\n const displaySourcePath = canonicalScriptableSourcePath(sourcePath);\n return [\n {\n sourcePath: resolve(cwd, sourcePath),\n displaySourcePath,\n definition: declaration.definition,\n sourceClosure: declaration.sourceClosure,\n publicationGeneration: generationFor(displaySourcePath),\n policy: policyFor(displaySourcePath),\n },\n ];\n });\n}\n\n/** Materialize one accepted ScriptablePack without duplicating dev/build loops. */\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 guid of product.declaredGuids) {\n const path = paths.receiptPath(guid);\n await sink.writeReceipt(\n path,\n JSON.stringify({\n guid,\n origin: 'sourceMeta',\n status: 'succeeded',\n inputFingerprint: product.inputFingerprint,\n outputDigest: finalized.digest,\n }),\n );\n receipts.set(guid, path);\n }\n return receipts;\n}\n\nexport async function readCookedAuthoredPack(\n authoredPack: AuthoredPackInput,\n cookers: readonly NativeCooker[] = [],\n sourcePath?: string,\n): Promise<CookedAuthoredPack | undefined> {\n const parsed = upgradeLegacyAuthoredPack(authoredPack);\n if (parsed.schemaVersion !== '2.0.0' || parsed.assets === undefined) return undefined;\n const registry = new NativeCookerRegistry();\n for (const cooker of cookers) registry.register(cooker);\n const assets: DdcPack['assets'][number][] = [];\n const refsByGuid = new Map<string, readonly string[]>();\n let hasCookedAsset = false;\n for (const asset of parsed.assets) {\n const shouldCook = asset.execution === 'cooked';\n if (!shouldCook) {\n assets.push({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined ? {} : { sourceIndex: asset.sourceIndex }),\n ...(asset.relations === undefined ? {} : { relations: asset.relations }),\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 source: asset.payload,\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 const refs = [...draft.refs];\n refsByGuid.set(asset.guid.toLowerCase(), refs);\n assets.push({\n guid: draft.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined ? {} : { sourceIndex: asset.sourceIndex }),\n ...(asset.relations === undefined ? {} : { relations: asset.relations }),\n payload: draft.payload as Record<string, unknown>,\n refs,\n artifacts: draft.artifacts,\n });\n }\n return hasCookedAsset\n ? {\n logicalPackage: { schemaVersion: '2.0.0', kind: 'internal-text-package', assets },\n refsByGuid,\n }\n : undefined;\n}\n\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 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 assetPaths = externalImport.assetPaths ?? loadAssetConfig(process.cwd()).paths;\n const resolved = resolveAssetSource(\n declaration.sourcePath,\n declaration.value.source,\n assetPaths,\n );\n if (!resolved.ok) {\n throw new AssetError({\n code: 'asset-not-imported',\n expected: `a resolvable source for Meta dependency ${declaration.sourcePath}`,\n hint: 'repair the Meta source path before rebuilding the ScriptablePack',\n });\n }\n const meta: RunImportMeta = {\n importer: declaration.value.importer,\n source: resolved.value,\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 ${declaration.value.importer} importer to produce Meta dependency outputs`,\n hint: `repair ${declaration.sourcePath} before rebuilding the ScriptablePack`,\n });\n }\n for (const asset of sourcePackage.value.product.assets) {\n const key = asset.guid.toLowerCase();\n if (!required.has(key)) continue;\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n outputs.push({\n guid: parsed.value,\n asset: { kind: asset.kind, ...(asset.payload as Record<string, unknown>) } as Asset,\n });\n }\n continue;\n }\n if (declaration.format !== 'pack.json') continue;\n const declaredAssets = declaration.value.assets.filter((asset) =>\n required.has(asset.guid.toLowerCase()),\n );\n if (declaredAssets.length === 0) continue;\n const cooked = await readCookedAuthoredPack(declaration.value, cookers, declaration.sourcePath);\n for (const asset of cooked?.logicalPackage.assets.filter((item) =>\n required.has(item.guid.toLowerCase()),\n ) ?? declaredAssets) {\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n outputs.push({ guid: parsed.value, asset: { kind: asset.kind, ...asset.payload } as Asset });\n }\n }\n return outputs;\n}\n\n/** Normalize one authored Pack and, when needed, run its registered cooker once. */\nexport async function prepareAuthoredPackTransport(\n authoredPack: AuthoredPackInput,\n cookers: readonly NativeCooker[] | undefined,\n policyFor: (guid: string) => PackageFinalizePolicy,\n sourcePath?: string,\n): Promise<AuthoredPackTransport> {\n const pack = upgradeLegacyAuthoredPack(authoredPack);\n const firstGuid = pack.assets?.[0]?.guid?.toLowerCase();\n if (pack.schemaVersion !== '2.0.0' || firstGuid === undefined) {\n return { pack, ...(firstGuid === undefined ? {} : { firstGuid }) };\n }\n const cooked = await readCookedAuthoredPack(pack, cookers, sourcePath);\n if (cooked === undefined) return { pack, firstGuid };\n return {\n pack,\n firstGuid,\n cooked,\n finalized: await finalizePackageTransportSource(cooked.logicalPackage, policyFor(firstGuid)),\n };\n}\n\n/** Project one produced ScriptablePack into the publication tuple shared by dev and build. */\nexport function projectScriptablePackPublication(\n product: ScriptableSourcePackageProduct,\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) {\n return err({\n code: 'pack-source-output-invalid',\n expected: `ScriptablePack publication output ${guid} to include a product and digest`,\n hint: 'repair the ScriptablePack producer output and rebuild',\n detail: { stage: 'publication', guid },\n });\n }\n outputs.push({\n guid,\n sourceKey: staged.sourceKey ?? guid,\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\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 observedAt = Math.trunc(\n Math.max(\n ...(await Promise.all(sourceClosure.map(async (entry) => (await stat(entry.path)).mtimeMs))),\n ),\n );\n return { digest, observedAt, rootId: displaySourcePath };\n}\n\n/** Produce selected ScriptablePacks through one inventory and one staged owner boundary. */\nexport async function produceScriptablePackProducts(\n sources: readonly ScriptablePackInput[],\n declaredExternalOutputs: readonly ScriptablePackStagedOutput[] = [],\n): Promise<Result<ReadonlyMap<string, PreparedScriptablePack>, ScriptablePackHostError>> {\n const entries = new Map<\n string,\n {\n readonly source: ScriptablePackInput;\n readonly definition: Readonly<ScriptablePackDefinition>;\n readonly closure: readonly ScriptablePackSourceClosureEntry[];\n }\n >();\n for (const source of sources) {\n if (entries.has(source.displaySourcePath)) continue;\n entries.set(source.displaySourcePath, {\n source,\n definition: source.definition,\n closure: source.sourceClosure,\n });\n }\n\n const products = new Map<string, ScriptableSourcePackageProduct>();\n const owners: ScriptablePackStagedOwner[] = [...entries.entries()].map(\n ([displaySourcePath, entry]) => ({\n id: displaySourcePath,\n guids: Object.values(entry.definition.assets).map((asset) => asset.guid),\n async build(source) {\n const produced = await produceScriptableSourcePackage({\n definition: entry.definition,\n sourcePath: displaySourcePath,\n assetSource: source,\n outputs: createStandardAssetOutputProducerRegistry(\n projectScriptablePackSceneComponents(entry.definition.sceneComponents),\n ),\n sourceClosure: entry.closure,\n authoringContractVersion: 'scriptable-pack-production/1',\n });\n if (!produced.ok) return produced;\n const observedClosure = await inventoryScriptablePackSource(entry.source.sourcePath);\n if (JSON.stringify(observedClosure) !== JSON.stringify(entry.closure)) {\n return err({\n code: 'pack-source-load-failed',\n expected: 'the complete ScriptablePack module closure to remain fixed during one build',\n hint: 'retry the build after source and helper writes have settled',\n detail: {\n sourcePath: displaySourcePath,\n reason: 'source-changed',\n phase: 'build',\n diagnostic: 'module closure changed while the staged generation was building',\n },\n });\n }\n products.set(displaySourcePath, produced.value);\n return ok(produced.value.stagedOutputs);\n },\n }),\n );\n const generationDigest = createHash('sha256')\n .update(\n JSON.stringify(\n [...entries.values()]\n .flatMap((entry) => entry.closure)\n .sort((a, b) => a.path.localeCompare(b.path)),\n ),\n )\n .digest();\n const stagedSource = createScriptablePackStagedAssetSnapshotSource({\n generation: generationDigest.readUInt32BE(0),\n owners,\n declaredExternalOutputs,\n });\n\n const prepared = new Map<string, PreparedScriptablePack>();\n for (const source of sources) {\n const entry = entries.get(source.displaySourcePath);\n if (entry === undefined) {\n return err({\n code: 'pack-source-path-invalid',\n expected: 'a ScriptablePack source registered in the current inventory',\n actual: source.displaySourcePath,\n hint: 'rebuild the source inventory before producing this path',\n retryable: true,\n recoveryActions: ['rebuild-source-inventory'],\n detail: { sourcePath: source.displaySourcePath },\n });\n }\n const first = Object.values(entry.definition.assets)[0];\n if (first === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'at least one declared ScriptablePack output',\n hint: 'add an output descriptor before building the package',\n detail: { missingGuids: [], unexpectedSourceKeys: [], kindMismatches: [] },\n });\n }\n const staged = await stagedSource.readByGuid(first.guid);\n if (!staged.ok) return err(staged.error);\n const produced = products.get(source.displaySourcePath);\n if (produced === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'the staged owner build to retain its source-package product',\n hint: 'retry the ScriptablePack production attempt',\n detail: {\n missingGuids: [AssetGuid.format(first.guid)],\n unexpectedSourceKeys: [],\n kindMismatches: [],\n },\n });\n }\n const transportPolicy =\n typeof source.policy === 'function' ? source.policy(produced) : source.policy;\n const logicalPackage = projectImportProductForBuild(produced.product);\n const finalized = await finalizePackageTransportSource(logicalPackage, transportPolicy);\n const facts = projectScriptablePackPublication(produced);\n if (!facts.ok) return err(facts.error);\n const revision = await scriptablePackResourceRevision(\n source.displaySourcePath,\n produced.inputFingerprint,\n source.sourceClosure,\n );\n const publication = createAcceptedPublication({\n sourcePath: source.displaySourcePath,\n sourceRevision: produced.inputFingerprint,\n generation: source.publicationGeneration,\n digest: finalized.digest,\n packageUrl: finalized.packageUrl,\n inputFingerprint: produced.inputFingerprint,\n outputs: facts.value.outputs,\n externalEvidence: produced.externalEvidence,\n });\n prepared.set(source.displaySourcePath, {\n product: produced,\n finalized,\n facts: facts.value,\n revision,\n publication,\n });\n }\n return ok(prepared);\n}\n","import { resolve } from 'node:path';\nimport {\n type CatalogBuildResult,\n createRuntimePackPublication,\n finalizePackageTransportSource,\n loadAssetConfig,\n metaPathForGuid,\n projectCookedPackageEntry,\n} from '@forgeax/engine-pack/build';\nimport type { NativeCooker } from '@forgeax/engine-pack/native-cooker';\nimport type {\n AssetPublicationEnvelope,\n Importer,\n PackIndexEntry,\n ResourceRevision,\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 materializePreparedScriptablePack,\n prepareAuthoredPackTransport,\n produceScriptablePackProducts,\n scriptablePackInputs,\n} from './scriptable-pack-host.js';\nimport {\n finalizeSourcePackage,\n produceSourcePackage,\n sourcePackageAssetsByGuid,\n} from './source-package.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\nexport interface ScriptableBuildPackage {\n readonly packageUrl: string;\n readonly receiptUrls: ReadonlyMap<string, string>;\n readonly refs: ReadonlyMap<string, readonly string[]>;\n readonly revision: ResourceRevision;\n readonly publication: AssetPublicationEnvelope;\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 },\n) {\n return createRuntimePackPublication({\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 generation: context.runtimeBinding?.generation ?? context.generation,\n });\n}\n\nasync function buildAuthoredPackages(\n context: BuildProductionOptions,\n): Promise<ReadonlyMap<string, ScriptableBuildPackage>> {\n const scriptableSources = [\n ...new Set(\n context.inventory.entries\n .filter((entry) => entry.sourcePath.endsWith('.pack.ts'))\n .map((entry) => entry.sourcePath),\n ),\n ];\n if (scriptableSources.length === 0) return new Map();\n const inputs = scriptablePackInputs(\n scriptableSources,\n context.inventory.sourceDeclarations,\n context.cwd,\n () => context.generation,\n () => (product) => ({\n base: context.basePrefix === '' ? '/' : context.basePrefix,\n packagePath: `assets/${product.anchorGuid}.pack.json`,\n artifactPath: scriptableArtifactPath,\n }),\n );\n const preparedResult = await produceScriptablePackProducts(\n inputs,\n await declaredPackExternalOutputs(\n context.inventory.sourceDeclarations,\n context.cookers,\n inputs.flatMap((input) => Object.values(input.definition.externalAssets)),\n {\n importerRegistry: context.importerRegistry,\n fsForImport: context.fsForImport,\n assetPaths: loadAssetConfig(context.cwd).paths,\n },\n ),\n );\n if (!preparedResult.ok) throw context.fail(preparedResult.error);\n\n const result = new Map<string, ScriptableBuildPackage>();\n for (const entry of context.inventory.entries) {\n if (!entry.sourcePath.endsWith('.pack.ts') || result.has(entry.sourcePath)) continue;\n const prepared = preparedResult.value.get(canonicalScriptableSourcePath(entry.sourcePath));\n if (prepared === undefined) {\n throw context.fail({\n code: 'catalog-declaration-missing',\n expected: 'the ScriptablePack inventory to retain every authored Pack source',\n hint: 'rerun the source inventory and rebuild from the accepted declaration set',\n detail: { stage: 'scan', sourcePath: entry.sourcePath },\n });\n }\n const { product, finalized, facts, revision, publication } = prepared;\n const packagePath = `assets/${product.anchorGuid}.pack.json`;\n const runtimePublication = createRuntimePackPublication({\n pack: { assets: finalized.pack.assets },\n scopeId: context.runtimeBinding?.scopeId ?? 'asset-runtime',\n sourcePath: publication.sourcePath,\n sourceRevision: publication.sourceRevision,\n packageUrl: finalized.packageUrl,\n inputFingerprint: publication.receipt.inputFingerprint,\n digest: finalized.digest,\n generation: context.runtimeBinding?.generation ?? publication.generation,\n outputs: facts.outputs,\n externalEvidence: publication.externalEvidence,\n });\n const receiptPaths = await materializePreparedScriptablePack(\n prepared,\n {\n packagePath,\n artifactPath: (path) => `assets/${path}`,\n receiptPath: (guid) => `assets/${guid}.receipt.json`,\n },\n {\n writePackage: (path) => {\n context.sink.emitFile({\n type: 'asset',\n fileName: path,\n originalFileName: `${context.cwd}/${entry.sourcePath}`,\n source: JSON.stringify(runtimePublication.pack),\n });\n },\n writeArtifact: (path, bytes) => {\n context.sink.emitFile({ type: 'asset', fileName: path, source: bytes });\n },\n writeReceipt: (path, source) => {\n context.sink.emitFile({ type: 'asset', fileName: path, source });\n },\n },\n );\n result.set(entry.sourcePath, {\n packageUrl: finalized.packageUrl,\n receiptUrls: new Map(\n [...receiptPaths].map(([guid, path]) => [guid, context.sink.fileUrl(path)]),\n ),\n revision,\n publication: runtimePublication.publication,\n refs: facts.refs,\n });\n }\n return result;\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): 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 entries[index] = {\n ...entry,\n packageUrl,\n ...projection,\n ...(publication === undefined ? {} : { publication }),\n ...(refs === undefined ? {} : { refs }),\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 publication?: AssetPublicationEnvelope;\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 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 updateImportedEntries(\n work.importedEntries,\n options.guids,\n packageUrl,\n options.projection,\n options.refsByGuid,\n options.publication,\n );\n return packageUrl;\n}\n\nasync function emitAuthoredPack(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n entry: PackIndexEntry,\n): Promise<void> {\n const packPath = resolve(work.context.cwd, entry.sourcePath);\n const declaration = work.context.inventory.sourceDeclarations.get(packPath);\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 const prepared = await prepareAuthoredPackTransport(\n declaration.value,\n work.context.cookers,\n (guid) => ({\n base: work.context.basePrefix === '' ? '/' : work.context.basePrefix,\n packagePath: `assets/${guid}.pack.json`,\n artifactPath: (artifactGuid, key) => `${artifactGuid}/${key}.bin`,\n }),\n packPath,\n );\n const outputGuid = prepared.firstGuid ?? entry.guid;\n const authoredPack = prepared.finalized?.pack ?? prepared.pack;\n const runtimePublication =\n authoredPack.assets === undefined || authoredPack.assets.length === 0\n ? undefined\n : runtimePublicationFor(work.context, {\n pack: { assets: authoredPack.assets },\n sourcePath: packPath,\n sourceRevision: prepared.finalized?.sourceRevision ?? entry.sourcePath,\n packageUrl:\n prepared.finalized?.packageUrl ??\n `${work.context.basePrefix === '/' ? '' : work.context.basePrefix}/assets/${outputGuid}.pack.json`,\n ...(prepared.finalized?.digest === undefined\n ? {}\n : { digest: prepared.finalized.digest }),\n });\n await emitPackDocument(work, {\n pack: runtimePublication?.pack ?? authoredPack,\n artifacts: prepared.finalized?.artifacts ?? [],\n packageName: `${outputGuid}.pack.json`,\n originalFileName: packPath,\n guids: prepared.pack.assets?.map((asset) => asset.guid) ?? [outputGuid],\n projection:\n prepared.finalized === undefined\n ? work.context.directCurrentProjection\n : work.context.authoredCookedCurrentProjection,\n ...(prepared.cooked === undefined ? {} : { refsByGuid: prepared.cooked.refsByGuid }),\n ...(runtimePublication === undefined ? {} : { publication: runtimePublication.publication }),\n });\n for (const guid of prepared.pack.assets?.map((asset) => asset.guid) ?? [outputGuid]) {\n guidSeen.add(guid.toLowerCase());\n }\n}\n\nasync function emitFinalizedOwner(\n work: BuildEmissionWork,\n metaPath: 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 sourcePath: metaPath,\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 });\n}\n\nasync function emitBuildEntry(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n entry: PackIndexEntry,\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')) await emitAuthoredPack(work, guidSeen, entry);\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: readonly { readonly guid: string }[] = 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(work, metaPath, subAssets, sourcePackage.value, ownerFinalizer);\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 runtimePublication = runtimePublicationFor(work.context, {\n pack: { assets: finalized.pack.assets },\n sourcePath: metaPath,\n sourceRevision: finalized.sourceRevision,\n packageUrl: finalized.packageUrl,\n digest: finalized.digest,\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 });\n}\n\nexport async function produceBuildAssets(\n context: BuildProductionOptions,\n): Promise<PackIndexEntry[]> {\n const entries = [...context.inventory.entries];\n const authored = await buildAuthoredPackages(context);\n const importedEntries = entries.map((entry) => {\n const scriptable = authored.get(entry.sourcePath);\n if (scriptable === undefined) return entry;\n const cookReceiptUrl = scriptable.receiptUrls.get(entry.guid.toLowerCase());\n return projectCookedPackageEntry(entry, {\n packageUrl: scriptable.packageUrl,\n revision: scriptable.revision,\n refs: scriptable.refs.get(entry.guid.toLowerCase()) ?? [],\n ...(cookReceiptUrl === undefined ? {} : { cookReceiptUrl }),\n publication: scriptable.publication,\n });\n });\n const guidSeen = new Set<string>();\n const work: BuildEmissionWork = { importedEntries, context };\n for (const entry of importedEntries) {\n if (!guidSeen.has(entry.guid.toLowerCase())) await emitBuildEntry(work, guidSeen, entry);\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): Promise<CatalogBuildResult> {\n const options: CatalogBuildProjectionOptions = {\n base,\n scanOptions,\n importerPolicy: (importer) => catalogImporterPolicy(importer, registeredImporterKeys),\n visibility: catalogVisibility,\n };\n return buildCatalogProjection(roots, options);\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 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 '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\nexport function normalizeSourcePackageError(\n error: unknown,\n context: SourcePackageErrorContext,\n): SourcePackageError {\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 '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 { mkdir, rename, rm, stat, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport {\n type DdcEntry,\n type DdcGenerationEntryCandidate,\n DdcGenerationSession,\n type DdcHead,\n DdcLifecycle,\n ddcOutputDigest,\n} from '@forgeax/engine-ddc';\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 };\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}.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 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 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: {\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 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 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: await persistTransport(candidate.input.transport),\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/import-runner.ts","../src/pack-projection.ts","../src/mesh-bin.ts","../src/scriptable-pack.ts","../src/scriptable-pack-output-producers.ts","../src/scriptable-pack-staged-snapshot.ts","../src/scriptable-source-package.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/importer-registry.ts","../src/source-package-errors.ts","../src/source-package-publication.ts"],"names":["bytes","ref","product","err","ok","AssetGuid","record","ImportError","closureError","fingerprint","stable","AssetError","built","projectScriptablePackMeta","producedGuids","projectScriptablePackSceneComponents","resolve","loadAssetConfig","finalizePackageTransportSource","guid","stat"],"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","// @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';\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\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 // 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 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 };\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 { isScriptablePackAssetKind, type ScriptablePackAssetKind } from '@forgeax/engine-pack';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport {\n type AssetReader,\n projectScriptablePackMeta,\n projectScriptablePackSceneComponents,\n type ScriptablePackDefinition,\n type ScriptablePackError,\n type ScriptablePackReadError,\n type ScriptablePackSourceClosureEntry,\n} from '@forgeax/engine-pack/source';\nimport type {\n AnimationGraph,\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n FontAsset,\n ImportedAsset,\n MaterialAsset,\n MeshAsset,\n Result,\n TilesetAsset,\n} from '@forgeax/engine-types';\n\nexport type { ScriptablePackSourceClosureEntry } from '@forgeax/engine-pack/source';\n\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport {\n createImportProduct,\n type ImportAssetProduct,\n type TerminalImportProduct,\n} from './import-product.js';\n\nfunction commonPathPrefix(paths: readonly string[]): string {\n const first = paths[0];\n if (first === undefined) return '';\n const firstNormalized = first.replaceAll('\\\\', '/');\n const firstDirectory = firstNormalized.slice(0, firstNormalized.lastIndexOf('/'));\n const parts = firstDirectory.split('/');\n let length = parts.length;\n for (const path of paths.slice(1)) {\n const normalized = path.replaceAll('\\\\', '/');\n const candidate = normalized.slice(0, normalized.lastIndexOf('/')).split('/');\n length = Math.min(length, candidate.length);\n for (let index = 0; index < length; index += 1) {\n if (parts[index] !== candidate[index]) {\n length = index;\n break;\n }\n }\n }\n return parts.slice(0, length).join('/');\n}\n\n/** Remove host-specific absolute roots from the source closure fingerprint. */\nfunction stableSourceClosure(\n closure: readonly ScriptablePackSourceClosureEntry[],\n): readonly ScriptablePackSourceClosureEntry[] {\n const root = commonPathPrefix(closure.map((entry) => entry.path));\n return closure\n .map((entry) => ({\n path: entry.path.replaceAll('\\\\', '/').slice(root.length).replace(/^\\/+/, ''),\n digest: entry.digest,\n }))\n .sort((left, right) => left.path.localeCompare(right.path));\n}\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 /** Producer-owned stable output identity from the ScriptablePack definition. */\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 Pack projection; durable 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};\n\nexport type AssetOutputPayload = AssetOutputPayloadByKind[ScriptablePackAssetKind];\n\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('ScriptablePack output producer kind and version must be non-empty');\n }\n if (typeof producer.produce !== 'function') {\n throw new TypeError(`ScriptablePack 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\nexport interface ScriptablePackBuildProduct {\n readonly product: TerminalImportProduct<unknown>;\n /** Raw private outputs for the current staged build generation, never a runtime publication path. */\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n readonly externalEvidence: readonly ScriptablePackExternalEvidence[];\n readonly inputFingerprint: string;\n /** Engine publication fields projected after ordinary producers run. */\n readonly publication?: AssetPublicationEnvelope;\n}\n\n/** Domain-owned structured failure transported without flattening its recovery fields. */\nexport interface ScriptablePackDomainError {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n}\n\nexport type ScriptablePackBuildBridgeResult = Result<\n ScriptablePackBuildProduct,\n ScriptablePackError | AssetError | ImportError | ScriptablePackDomainError\n>;\n\ninterface ObservedRead {\n readonly guid: string;\n readonly asset: Asset;\n readonly generation: number;\n readonly digest: string;\n}\n\nfunction privateClone<T>(value: T): T {\n return structuredClone(value);\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 isStructuredDomainError(value: unknown): value is ScriptablePackDomainError {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof (value as { readonly code?: unknown }).code === 'string' &&\n typeof (value as { readonly expected?: unknown }).expected === 'string' &&\n typeof (value as { readonly hint?: unknown }).hint === 'string'\n );\n}\n\nfunction remapBuildFailureSource(\n value: unknown,\n sourcePath: string,\n): ScriptablePackError | undefined {\n if (value === null || typeof value !== 'object') return undefined;\n const error = value as { readonly code?: unknown; readonly detail?: unknown };\n if (error.code !== 'pack-source-load-failed') return undefined;\n if (error.detail === null || typeof error.detail !== 'object') return undefined;\n const detail = error.detail as { readonly phase?: unknown } & Record<string, unknown>;\n if (detail.phase !== 'build') return undefined;\n return {\n ...(value as ScriptablePackError),\n detail: { ...detail, sourcePath },\n } as ScriptablePackError;\n}\n\nfunction observedAssetReader(source?: ScriptablePackAssetSnapshotSource): {\n readonly reader: AssetReader;\n readonly reads: ReadonlyMap<string, ObservedRead>;\n} {\n const reads = new Map<string, ObservedRead>();\n const reader: AssetReader = {\n async readByGuid<TAsset extends Asset = Asset>(guid: AssetGuidType) {\n const key = AssetGuid.format(guid);\n const cached = reads.get(key);\n if (cached !== undefined) return ok(privateClone(cached.asset) as TAsset);\n if (source === undefined) {\n return err(\n new AssetError({\n code: 'asset-not-found',\n expected: `a host Asset snapshot source for ScriptablePack content read ${key}`,\n hint: 'configure the standard ScriptablePack asset source or remove the content read',\n }),\n );\n }\n const result = await source.readByGuid(guid);\n if (!result.ok) return result;\n const fixed = privateClone(result.value.asset);\n reads.set(key, {\n guid: key,\n asset: fixed,\n generation: result.value.generation,\n digest: result.value.digest,\n });\n return ok(privateClone(fixed) as TAsset);\n },\n };\n return { reader, reads };\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 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 fingerprint(value: unknown): Promise<string> {\n const subtle = globalThis.crypto?.subtle;\n if (subtle === undefined)\n throw new Error('Web Crypto API is required for ScriptablePack fingerprints');\n const digest = await subtle.digest('SHA-256', new TextEncoder().encode(stable(value)));\n const hex = Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join(\n '',\n );\n return `sha256:${hex}`;\n}\n\nfunction outputError(\n definition: ScriptablePackDefinition,\n output: Readonly<Record<string, unknown>>,\n): ScriptablePackError | undefined {\n const declaredKeys = Object.keys(definition.assets);\n const outputKeys = Object.keys(output);\n const outputKeySet = new Set(outputKeys);\n const declaredKeySet = new Set(declaredKeys);\n const missingKeys = declaredKeys.filter((key) => !outputKeySet.has(key));\n const unexpectedSourceKeys = outputKeys.filter((key) => !declaredKeySet.has(key));\n const kindMismatches = declaredKeys.flatMap((sourceKey) => {\n const descriptor = definition.assets[sourceKey];\n const value = output[sourceKey];\n if (descriptor === undefined || value === undefined) return [];\n const actualKind =\n value !== null && typeof value === 'object' && 'kind' in value\n ? String((value as { readonly kind: unknown }).kind)\n : typeof value;\n return actualKind === descriptor.kind\n ? []\n : [{ sourceKey, expected: descriptor.kind, actual: actualKind }];\n });\n if (\n missingKeys.length === 0 &&\n unexpectedSourceKeys.length === 0 &&\n kindMismatches.length === 0\n ) {\n return undefined;\n }\n return {\n code: 'pack-source-output-invalid',\n expected: 'build output keys and kinds to exactly match definition.assets',\n hint: 'inspect sourceKey and GUID topology, then rebuild or cold-cook the ScriptablePack',\n detail: {\n missingGuids: missingKeys.map((key) =>\n AssetGuid.format(definition.assets[key]?.guid as AssetGuidType),\n ),\n unexpectedSourceKeys,\n kindMismatches,\n },\n };\n}\n\nfunction externalClosureError(\n declared: ReadonlySet<string>,\n referenced: ReadonlySet<string>,\n read: ReadonlySet<string>,\n): ScriptablePackError | undefined {\n const used = new Set([...referenced, ...read]);\n const undeclaredReferencedGuids = [...referenced].filter((guid) => !declared.has(guid));\n const undeclaredReadGuids = [...read].filter((guid) => !declared.has(guid));\n const unusedDeclaredGuids = [...declared].filter((guid) => !used.has(guid));\n if (\n undeclaredReferencedGuids.length === 0 &&\n undeclaredReadGuids.length === 0 &&\n unusedDeclaredGuids.length === 0\n ) {\n return undefined;\n }\n return {\n code: 'pack-source-external-closure-mismatch',\n expected: 'externalAssets GUIDs to equal output external refs union AssetReader reads',\n hint: 'inspect refs and AssetReader reads, repair GUID declarations, then rebuild or cold-cook',\n detail: {\n undeclaredReferencedGuids: undeclaredReferencedGuids.sort(),\n undeclaredReadGuids: undeclaredReadGuids.sort(),\n unusedDeclaredGuids: unusedDeclaredGuids.sort(),\n },\n };\n}\n\nfunction productContractError(\n sourceKey: string,\n kind: string,\n product: AssetOutputProduct,\n): ScriptablePackError | undefined {\n const mismatches: { sourceKey: string; expected: string; actual: string }[] = [];\n if (product.payload.kind !== kind) {\n mismatches.push({ sourceKey, expected: kind, actual: product.payload.kind });\n }\n for (const reference of product.refs) {\n if (!AssetGuid.parse(reference.guid).ok) {\n mismatches.push({\n sourceKey,\n expected: 'every producer ref to contain a valid Asset GUID',\n actual: reference.guid,\n });\n break;\n }\n }\n for (const [artifactKey, artifact] of Object.entries(product.artifacts)) {\n if (\n artifactKey.length === 0 ||\n artifactKey.startsWith('/') ||\n artifactKey.includes('..') ||\n artifactKey.includes('\\\\') ||\n artifact.mediaType.trim().length === 0 ||\n !(artifact.bytes instanceof Uint8Array)\n ) {\n mismatches.push({\n sourceKey,\n expected: 'asset-local artifacts with safe keys, mediaType, and Uint8Array bytes',\n actual: artifactKey,\n });\n break;\n }\n }\n if (mismatches.length === 0) return undefined;\n return {\n code: 'pack-source-output-invalid',\n expected: 'producer output refs and asset-local artifacts to satisfy the Pack v2 contract',\n hint: 'inspect sourceKey and artifact provenance, repair refs or bytes, then rebuild or cold-cook',\n detail: { missingGuids: [], unexpectedSourceKeys: [], kindMismatches: mismatches },\n };\n}\n\nexport interface BuildScriptablePackOptions {\n readonly definition: ScriptablePackDefinition;\n readonly sourcePath: string;\n readonly assetSource?: ScriptablePackAssetSnapshotSource;\n readonly outputs: AssetOutputProducerRegistry;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n readonly authoringContractVersion: string;\n}\n\n/**\n * Build one external ScriptablePack through the producer-owned Pack bridge.\n * Success preserves payloads, GUID refs, and local artifacts; failure retains\n * `code`, `expected`, `hint`, and `detail` for recovery by the caller.\n */\nexport async function buildScriptablePack(\n options: BuildScriptablePackOptions,\n): Promise<ScriptablePackBuildBridgeResult> {\n const observed = observedAssetReader(options.assetSource);\n let built: Awaited<ReturnType<ScriptablePackDefinition['build']>>;\n try {\n const build = options.definition.build;\n built = await build(observed.reader);\n } catch (error) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'ScriptablePack build to return a structured Result without throwing',\n hint: 'fix the build implementation and return a structured failure for expected authoring errors',\n detail: { reason: error instanceof Error ? error.message : String(error) },\n }),\n );\n }\n if (!built.ok) {\n const remappedBuildFailure = remapBuildFailureSource(built.error, options.sourcePath);\n if (remappedBuildFailure !== undefined) return err(remappedBuildFailure);\n if (\n built.error instanceof ImportError ||\n built.error instanceof AssetError ||\n isStructuredDomainError(built.error)\n ) {\n return err(built.error);\n }\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'ScriptablePack build failure to use a structured domain error',\n hint: 'return an error with code, expected, hint, and optional detail fields',\n detail: { reason: String(built.error) },\n }),\n );\n }\n if (!record(built.value)) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: 'ScriptablePack build output to be an object keyed by declared sourceKey',\n hint: 'return one concrete Asset payload for each declared sourceKey',\n detail: { reason: 'build output is not an object' },\n }),\n );\n }\n const output = built.value;\n const invalidOutput = outputError(options.definition, output);\n if (invalidOutput !== undefined) return err(invalidOutput);\n\n const assets: ImportedAsset<unknown>[] = [];\n for (const sourceKey of Object.keys(options.definition.assets).sort()) {\n const descriptor = options.definition.assets[sourceKey];\n const asset = output[sourceKey];\n if (descriptor === undefined) continue;\n if (!isAsset(asset)) {\n return err(\n new ImportError({\n code: 'import-internal-error',\n expected: `a concrete Asset payload for sourceKey ${sourceKey}`,\n hint: 'return a durable Asset with a kind from SCRIPTABLE_PACK_ASSET_KINDS',\n detail: { reason: 'build output payload is missing or has an unknown kind' },\n }),\n );\n }\n const producer = options.outputs.get(descriptor.kind);\n if (producer === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: `a domain output producer registered for kind ${descriptor.kind}`,\n hint: 'attach the owning producer capability, inspect registration, then rebuild or cold-cook',\n detail: {\n missingGuids: [AssetGuid.format(descriptor.guid)],\n unexpectedSourceKeys: [],\n kindMismatches: [],\n },\n });\n }\n const product = await producer.produce({\n guid: AssetGuid.format(descriptor.guid),\n sourceKey,\n asset,\n });\n if (!product.ok) return err(product.error);\n const productError = productContractError(sourceKey, descriptor.kind, product.value);\n if (productError !== undefined) return err(productError);\n assets.push({\n guid: AssetGuid.format(descriptor.guid),\n kind: descriptor.kind,\n ...(descriptor.name === undefined ? {} : { name: descriptor.name }),\n payload: product.value.payload,\n refs: product.value.refs,\n artifacts: product.value.artifacts,\n });\n }\n\n const local = new Set(assets.map((asset) => asset.guid.toLowerCase()));\n const referenced = new Set(\n assets\n .flatMap((asset) => asset.refs.map((reference) => reference.guid.toLowerCase()))\n .filter((guid) => !local.has(guid)),\n );\n const read = new Set([...observed.reads.keys()].map((guid) => guid.toLowerCase()));\n const declared = new Set(\n Object.values(options.definition.externalAssets).map((guid) =>\n AssetGuid.format(guid).toLowerCase(),\n ),\n );\n const closureError = externalClosureError(declared, referenced, read);\n if (closureError !== undefined) return err(closureError);\n\n const externalEvidence = [...declared].sort().map((guid): ScriptablePackExternalEvidence => {\n const observedRead = observed.reads.get(guid);\n const isReference = referenced.has(guid);\n return {\n guid,\n usage: observedRead === undefined ? 'reference' : isReference ? 'both' : 'content',\n ...(observedRead === undefined\n ? {}\n : { generation: observedRead.generation, digest: observedRead.digest }),\n };\n });\n // The dependency generation is runtime provenance, not a content identity.\n // It may advance when a fresh AssetRegistry is created even though the\n // referenced bytes are unchanged. Keep it in the receipt for diagnostics,\n // but exclude it from the source fingerprint so an identical source closure\n // and dependency digest produce the same publication fence across Edit and\n // fresh Play worlds.\n const fingerprintEvidence = externalEvidence.map(({ guid, usage, digest }) => ({\n guid,\n usage,\n ...(digest === undefined ? {} : { digest }),\n }));\n const inputFingerprint = await fingerprint({\n meta: projectScriptablePackMeta(options.definition, options.sourcePath),\n sceneComponents: projectScriptablePackSceneComponents(options.definition.sceneComponents),\n sourceClosure: stableSourceClosure(options.sourceClosure),\n externalEvidence: fingerprintEvidence,\n authoringContractVersion: options.authoringContractVersion,\n producerVersions: options.outputs.versions(),\n });\n const refs = assets.flatMap((asset) => asset.refs);\n const artifacts = Object.fromEntries(\n assets.flatMap((asset) =>\n Object.entries(asset.artifacts).map(([key, artifact]) => [`${asset.guid}/${key}`, artifact]),\n ),\n );\n const product = createImportProduct({\n assets,\n sourceDependencies: options.sourceClosure.map((entry) => entry.path),\n refs,\n artifacts,\n receipts: assets.map((asset) => ({\n guid: asset.guid,\n origin: 'sourceMeta' 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: await Promise.all(\n Object.keys(options.definition.assets)\n .sort()\n .map(async (sourceKey) => {\n const descriptor = options.definition.assets[sourceKey];\n const asset = output[sourceKey];\n if (descriptor === undefined || !isAsset(asset)) {\n throw new Error(`validated ScriptablePack output ${sourceKey} is not an Asset`);\n }\n return {\n guid: descriptor.guid,\n sourceKey,\n asset: privateClone(asset),\n digest: await fingerprint(asset),\n };\n }),\n ),\n externalEvidence,\n inputFingerprint,\n });\n}\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 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 { err, ImportError, MATERIAL_TEXTURE_SLOTS, ok } 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((parameter) => parameter.type === 'texture')\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] = addMaterialRef(value, { componentName: '<material>', fieldName });\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 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 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 ordinaryPodProduct(input: AssetOutputInput): AssetOutputProduct {\n const asset = input.asset;\n switch (asset.kind) {\n case 'texture': {\n const texture = asset as TextureAsset;\n return {\n payload: texture,\n refs: [],\n artifacts: {\n body: {\n mediaType: 'image/raw',\n assetCodec: { name: 'raw-image', version: '1' },\n bytes: bytes(texture.data),\n },\n },\n };\n }\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 '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/1',\n materialProduct,\n);\nexport const meshAssetOutputProducer = createSafeProducer('mesh', 'mesh-binary/4', meshProduct);\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 createStandardAssetOutputProducerRegistry(\n sceneComponents: readonly ScriptablePackSceneComponent[] = [],\n): AssetOutputProducerRegistry {\n const registry = new AssetOutputProducerRegistry();\n registry.register(materialAssetOutputProducer);\n registry.register(meshAssetOutputProducer);\n registry.register(createSceneAssetOutputProducer(sceneComponents));\n for (const kind of [\n 'texture',\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 ] as const) {\n registry.register(createSafeProducer(kind, 'ordinary-pod/1', ordinaryPodProduct));\n }\n return registry;\n}\n","import { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { ScriptablePackError } 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 | ScriptablePackError\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(stack: readonly string[], owner: string, guid: string): ScriptablePackError {\n const cycleStart = stack.indexOf(owner);\n const cycle = [...stack.slice(cycleStart), owner];\n return {\n code: 'pack-source-build-cycle',\n expected: 'an acyclic graph of ScriptablePack content dependencies',\n actual: cycle.join(' -> '),\n hint: 'break one content read edge or convert it to a reference-only dependency',\n retryable: false,\n recoveryActions: ['inspect-content-dependency-graph', 'edit-source'],\n detail: { sourcePath: owner, sourceKey: guid, incomingRefs: cycle },\n };\n}\n\nfunction missingOutputError(owner: string, guid: string): ScriptablePackError {\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 { AssetGuid } from '@forgeax/engine-pack/guid';\nimport { projectScriptablePackMeta, type ScriptablePackError } from '@forgeax/engine-pack/source';\nimport type {\n AssetError,\n ImportError,\n ImportedAsset,\n ImportProduct,\n Result,\n} from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport {\n type BuildScriptablePackOptions,\n buildScriptablePack,\n type ScriptablePackDomainError,\n type ScriptablePackExternalEvidence,\n type ScriptablePackStagedOutput,\n} from './scriptable-pack.js';\n\nconst META_ARTIFACT_KEY = 'scriptable-pack.meta.json';\n\nexport interface ScriptableSourcePackageProduct {\n readonly anchorGuid: string;\n readonly declaredGuids: readonly string[];\n readonly product: ImportProduct<unknown>;\n readonly inputFingerprint: string;\n readonly externalEvidence: readonly ScriptablePackExternalEvidence[];\n readonly stagedOutputs: readonly ScriptablePackStagedOutput[];\n}\n\nexport type ScriptableSourcePackageResult = Result<\n ScriptableSourcePackageProduct,\n ScriptablePackError | AssetError | ImportError | ScriptablePackDomainError\n>;\n\nfunction withPrebuiltMeta<P>(\n product: ImportProduct<P>,\n anchorGuid: string,\n meta: unknown,\n): ImportProduct<P> {\n const bytes = new TextEncoder().encode(`${JSON.stringify(meta)}\\n`);\n return {\n ...product,\n assets: product.assets.map(\n (asset): ImportedAsset<P> =>\n asset.guid.toLowerCase() === anchorGuid\n ? {\n ...asset,\n artifacts: {\n ...asset.artifacts,\n [META_ARTIFACT_KEY]: { mediaType: 'application/json', bytes },\n },\n }\n : asset,\n ),\n };\n}\n\nexport async function produceScriptableSourcePackage(\n options: BuildScriptablePackOptions,\n): Promise<ScriptableSourcePackageResult> {\n const built = await buildScriptablePack(options);\n if (!built.ok) return err(built.error);\n const declaredGuids = Object.values(options.definition.assets)\n .map((descriptor) => AssetGuid.format(descriptor.guid).toLowerCase())\n .sort();\n const anchorGuid = declaredGuids[0];\n if (anchorGuid === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'at least one declared ScriptablePack output',\n hint: 'add an output descriptor before building the package',\n detail: { missingGuids: [], unexpectedSourceKeys: [], kindMismatches: [] },\n });\n }\n const product = withPrebuiltMeta(\n built.value.product,\n anchorGuid,\n projectScriptablePackMeta(options.definition, options.sourcePath),\n );\n return ok({\n anchorGuid,\n declaredGuids,\n product,\n stagedOutputs: built.value.stagedOutputs,\n inputFingerprint: built.value.inputFingerprint,\n externalEvidence: built.value.externalEvidence,\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 { createHash } from 'node:crypto';\nimport { stat } from 'node:fs/promises';\nimport { isAbsolute, relative, resolve } from 'node:path';\nimport { createAcceptedPublication } from '@forgeax/engine-ddc';\nimport {\n type AuthoredPackInput,\n finalizePackageTransportSource,\n loadAssetConfig,\n type PackageFinalizePolicy,\n resolveAssetSource,\n upgradeLegacyAuthoredPack,\n} from '@forgeax/engine-pack/build';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport { type NativeCooker, NativeCookerRegistry } from '@forgeax/engine-pack/native-cooker';\nimport type { ScanSourceDeclaration } from '@forgeax/engine-pack/scanner';\nimport {\n projectScriptablePackSceneComponents,\n type ScriptablePackDefinition,\n type ScriptablePackSourceClosureEntry,\n} from '@forgeax/engine-pack/source';\nimport { inventoryScriptablePackSource } from '@forgeax/engine-pack/source-node';\nimport type {\n Asset,\n AssetGuid as AssetGuidType,\n AssetPublicationEnvelope,\n AssetPublicationOutput,\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 { ScriptablePackDomainError, ScriptablePackStagedOutput } from './scriptable-pack.js';\nimport { createStandardAssetOutputProducerRegistry } from './scriptable-pack-output-producers.js';\nimport {\n createScriptablePackStagedAssetSnapshotSource,\n type ScriptablePackStagedOwner,\n} from './scriptable-pack-staged-snapshot.js';\nimport {\n produceScriptableSourcePackage,\n type ScriptableSourcePackageProduct,\n type ScriptableSourcePackageResult,\n} from './scriptable-source-package.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: Readonly<ScriptablePackDefinition>;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n readonly publicationGeneration: number;\n readonly policy: ScriptablePackTransportPolicy;\n}\n\nexport interface ScriptablePackPublicationFacts {\n readonly outputs: readonly AssetPublicationOutput[];\n readonly refs: ReadonlyMap<string, readonly string[]>;\n}\n\nexport interface PreparedScriptablePack {\n readonly product: ScriptableSourcePackageProduct;\n readonly finalized: FinalizedPackageTransport;\n readonly facts: ScriptablePackPublicationFacts;\n readonly revision: ResourceRevision;\n readonly publication: AssetPublicationEnvelope;\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\nexport type ScriptablePackTransportPolicy =\n | PackageFinalizePolicy\n | ((product: ScriptableSourcePackageProduct) => PackageFinalizePolicy);\n\ntype ScriptablePackHostError =\n ScriptableSourcePackageResult extends Result<unknown, infer E> ? E : never;\n\nexport interface CookedAuthoredPack {\n readonly logicalPackage: DdcPack;\n readonly refsByGuid: ReadonlyMap<string, readonly string[]>;\n}\n\nexport interface AuthoredPackTransport {\n readonly pack: AuthoredPackInput;\n readonly firstGuid?: string;\n readonly cooked?: CookedAuthoredPack;\n readonly finalized?: FinalizedPackageTransport;\n}\n\n/** Build-time capabilities required to expose ordinary Meta products to a ScriptablePack. */\nexport interface ScriptablePackExternalImportOptions {\n readonly importerRegistry: ImporterRegistry;\n readonly fsForImport: ImportRunnerFs;\n /** Package path aliases from forgeax.assets.paths; defaults to the current project config. */\n readonly assetPaths?: Readonly<Record<string, string>>;\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\nexport function scriptablePackInputs(\n sourcePaths: readonly string[],\n declarations: ReadonlyMap<string, ScanSourceDeclaration>,\n cwd: string,\n generationFor: (displaySourcePath: string) => number,\n policyFor: (displaySourcePath: string) => ScriptablePackTransportPolicy,\n sourceIdentityFor?: (sourcePath: string) => string,\n): ScriptablePackInput[] {\n return sourcePaths.flatMap((sourcePath) => {\n const declaration = declarations.get(resolve(cwd, sourcePath));\n if (declaration?.format !== 'pack.ts') return [];\n const projected = sourceIdentityFor?.(sourcePath);\n const catalogSourcePath =\n projected === undefined || isAbsolute(projected) ? relative(cwd, sourcePath) : projected;\n const displaySourcePath = canonicalScriptableSourcePath(catalogSourcePath);\n return [\n {\n sourcePath: resolve(cwd, sourcePath),\n displaySourcePath,\n definition: declaration.definition,\n sourceClosure: declaration.sourceClosure,\n publicationGeneration: generationFor(displaySourcePath),\n policy: policyFor(displaySourcePath),\n },\n ];\n });\n}\n\n/** Materialize one accepted ScriptablePack without duplicating dev/build loops. */\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 guid of product.declaredGuids) {\n const path = paths.receiptPath(guid);\n await sink.writeReceipt(\n path,\n JSON.stringify({\n guid,\n origin: 'sourceMeta',\n status: 'succeeded',\n inputFingerprint: product.inputFingerprint,\n outputDigest: finalized.digest,\n }),\n );\n receipts.set(guid, path);\n }\n return receipts;\n}\n\nexport async function readCookedAuthoredPack(\n authoredPack: AuthoredPackInput,\n cookers: readonly NativeCooker[] = [],\n sourcePath?: string,\n): Promise<CookedAuthoredPack | undefined> {\n const parsed = upgradeLegacyAuthoredPack(authoredPack);\n if (parsed.schemaVersion !== '2.0.0' || parsed.assets === undefined) return undefined;\n const registry = new NativeCookerRegistry();\n for (const cooker of cookers) registry.register(cooker);\n const assets: DdcPack['assets'][number][] = [];\n const refsByGuid = new Map<string, readonly string[]>();\n let hasCookedAsset = false;\n for (const asset of parsed.assets) {\n const shouldCook = asset.execution === 'cooked';\n if (!shouldCook) {\n assets.push({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined ? {} : { sourceIndex: asset.sourceIndex }),\n ...(asset.relations === undefined ? {} : { relations: asset.relations }),\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 source: asset.payload,\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 const refs = [...draft.refs];\n refsByGuid.set(asset.guid.toLowerCase(), refs);\n assets.push({\n guid: draft.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined ? {} : { sourceIndex: asset.sourceIndex }),\n ...(asset.relations === undefined ? {} : { relations: asset.relations }),\n payload: draft.payload as Record<string, unknown>,\n refs,\n artifacts: draft.artifacts,\n });\n }\n return hasCookedAsset\n ? {\n logicalPackage: { schemaVersion: '2.0.0', kind: 'internal-text-package', assets },\n refsByGuid,\n }\n : undefined;\n}\n\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 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 assetPaths = externalImport.assetPaths ?? loadAssetConfig(process.cwd()).paths;\n const resolved = resolveAssetSource(\n declaration.sourcePath,\n declaration.value.source,\n assetPaths,\n );\n if (!resolved.ok) {\n throw new AssetError({\n code: 'asset-not-imported',\n expected: `a resolvable source for Meta dependency ${declaration.sourcePath}`,\n hint: 'repair the Meta source path before rebuilding the ScriptablePack',\n });\n }\n const meta: RunImportMeta = {\n importer: declaration.value.importer,\n source: resolved.value,\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 ${declaration.value.importer} importer to produce Meta dependency outputs`,\n hint: `repair ${declaration.sourcePath} before rebuilding the ScriptablePack`,\n });\n }\n for (const asset of sourcePackage.value.product.assets) {\n const key = asset.guid.toLowerCase();\n if (!required.has(key)) continue;\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n outputs.push({\n guid: parsed.value,\n asset: { kind: asset.kind, ...(asset.payload as Record<string, unknown>) } as Asset,\n });\n }\n continue;\n }\n if (declaration.format !== 'pack.json') continue;\n const declaredAssets = declaration.value.assets.filter((asset) =>\n required.has(asset.guid.toLowerCase()),\n );\n if (declaredAssets.length === 0) continue;\n const cooked = await readCookedAuthoredPack(declaration.value, cookers, declaration.sourcePath);\n for (const asset of cooked?.logicalPackage.assets.filter((item) =>\n required.has(item.guid.toLowerCase()),\n ) ?? declaredAssets) {\n const parsed = AssetGuid.parse(asset.guid);\n if (!parsed.ok) throw parsed.error;\n outputs.push({ guid: parsed.value, asset: { kind: asset.kind, ...asset.payload } as Asset });\n }\n }\n return outputs;\n}\n\n/** Normalize one authored Pack and, when needed, run its registered cooker once. */\nexport async function prepareAuthoredPackTransport(\n authoredPack: AuthoredPackInput,\n cookers: readonly NativeCooker[] | undefined,\n policyFor: (guid: string) => PackageFinalizePolicy,\n sourcePath?: string,\n): Promise<AuthoredPackTransport> {\n const pack = upgradeLegacyAuthoredPack(authoredPack);\n const firstGuid = pack.assets?.[0]?.guid?.toLowerCase();\n if (pack.schemaVersion !== '2.0.0' || firstGuid === undefined) {\n return { pack, ...(firstGuid === undefined ? {} : { firstGuid }) };\n }\n const cooked = await readCookedAuthoredPack(pack, cookers, sourcePath);\n if (cooked === undefined) return { pack, firstGuid };\n return {\n pack,\n firstGuid,\n cooked,\n finalized: await finalizePackageTransportSource(cooked.logicalPackage, policyFor(firstGuid)),\n };\n}\n\n/** Project one produced ScriptablePack into the publication tuple shared by dev and build. */\nexport function projectScriptablePackPublication(\n product: ScriptableSourcePackageProduct,\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) {\n return err({\n code: 'pack-source-output-invalid',\n expected: `ScriptablePack publication output ${guid} to include a product and digest`,\n hint: 'repair the ScriptablePack producer output and rebuild',\n detail: { stage: 'publication', guid },\n });\n }\n outputs.push({\n guid,\n sourceKey: staged.sourceKey ?? guid,\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\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 observedAt = Math.trunc(\n Math.max(\n ...(await Promise.all(sourceClosure.map(async (entry) => (await stat(entry.path)).mtimeMs))),\n ),\n );\n return { digest, observedAt, rootId: displaySourcePath };\n}\n\n/** Produce selected ScriptablePacks through one inventory and one staged owner boundary. */\nexport async function produceScriptablePackProducts(\n sources: readonly ScriptablePackInput[],\n declaredExternalOutputs: readonly ScriptablePackStagedOutput[] = [],\n): Promise<Result<ReadonlyMap<string, PreparedScriptablePack>, ScriptablePackHostError>> {\n const entries = new Map<\n string,\n {\n readonly source: ScriptablePackInput;\n readonly definition: Readonly<ScriptablePackDefinition>;\n readonly closure: readonly ScriptablePackSourceClosureEntry[];\n }\n >();\n for (const source of sources) {\n if (entries.has(source.displaySourcePath)) continue;\n entries.set(source.displaySourcePath, {\n source,\n definition: source.definition,\n closure: source.sourceClosure,\n });\n }\n\n const products = new Map<string, ScriptableSourcePackageProduct>();\n const owners: ScriptablePackStagedOwner[] = [...entries.entries()].map(\n ([displaySourcePath, entry]) => ({\n id: displaySourcePath,\n guids: Object.values(entry.definition.assets).map((asset) => asset.guid),\n async build(source) {\n const produced = await produceScriptableSourcePackage({\n definition: entry.definition,\n sourcePath: displaySourcePath,\n assetSource: source,\n outputs: createStandardAssetOutputProducerRegistry(\n projectScriptablePackSceneComponents(entry.definition.sceneComponents),\n ),\n sourceClosure: entry.closure,\n authoringContractVersion: 'scriptable-pack-production/1',\n });\n if (!produced.ok) return produced;\n const observedClosure = await inventoryScriptablePackSource(entry.source.sourcePath);\n if (JSON.stringify(observedClosure) !== JSON.stringify(entry.closure)) {\n return err({\n code: 'pack-source-load-failed',\n expected: 'the complete ScriptablePack module closure to remain fixed during one build',\n hint: 'retry the build after source and helper writes have settled',\n detail: {\n sourcePath: displaySourcePath,\n reason: 'source-changed',\n phase: 'build',\n diagnostic: 'module closure changed while the staged generation was building',\n },\n });\n }\n products.set(displaySourcePath, produced.value);\n return ok(produced.value.stagedOutputs);\n },\n }),\n );\n const generationDigest = createHash('sha256')\n .update(\n JSON.stringify(\n [...entries.values()]\n .flatMap((entry) => entry.closure)\n .sort((a, b) => a.path.localeCompare(b.path)),\n ),\n )\n .digest();\n const stagedSource = createScriptablePackStagedAssetSnapshotSource({\n generation: generationDigest.readUInt32BE(0),\n owners,\n declaredExternalOutputs,\n });\n\n const prepared = new Map<string, PreparedScriptablePack>();\n for (const source of sources) {\n const entry = entries.get(source.displaySourcePath);\n if (entry === undefined) {\n return err({\n code: 'pack-source-path-invalid',\n expected: 'a ScriptablePack source registered in the current inventory',\n actual: source.displaySourcePath,\n hint: 'rebuild the source inventory before producing this path',\n retryable: true,\n recoveryActions: ['rebuild-source-inventory'],\n detail: { sourcePath: source.displaySourcePath },\n });\n }\n const first = Object.values(entry.definition.assets)[0];\n if (first === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'at least one declared ScriptablePack output',\n hint: 'add an output descriptor before building the package',\n detail: { missingGuids: [], unexpectedSourceKeys: [], kindMismatches: [] },\n });\n }\n const staged = await stagedSource.readByGuid(first.guid);\n if (!staged.ok) return err(staged.error);\n const produced = products.get(source.displaySourcePath);\n if (produced === undefined) {\n return err({\n code: 'pack-source-output-invalid',\n expected: 'the staged owner build to retain its source-package product',\n hint: 'retry the ScriptablePack production attempt',\n detail: {\n missingGuids: [AssetGuid.format(first.guid)],\n unexpectedSourceKeys: [],\n kindMismatches: [],\n },\n });\n }\n const transportPolicy =\n typeof source.policy === 'function' ? source.policy(produced) : source.policy;\n const logicalPackage = projectImportProductForBuild(produced.product);\n const finalized = await finalizePackageTransportSource(logicalPackage, transportPolicy);\n const facts = projectScriptablePackPublication(produced);\n if (!facts.ok) return err(facts.error);\n const revision = await scriptablePackResourceRevision(\n source.displaySourcePath,\n produced.inputFingerprint,\n source.sourceClosure,\n );\n const publication = createAcceptedPublication({\n sourcePath: source.displaySourcePath,\n sourceRevision: produced.inputFingerprint,\n generation: source.publicationGeneration,\n digest: finalized.digest,\n packageUrl: finalized.packageUrl,\n inputFingerprint: produced.inputFingerprint,\n outputs: facts.value.outputs,\n externalEvidence: produced.externalEvidence,\n });\n prepared.set(source.displaySourcePath, {\n product: produced,\n finalized,\n facts: facts.value,\n revision,\n publication,\n });\n }\n return ok(prepared);\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 { resolve } from 'node:path';\nimport {\n type CatalogBuildResult,\n createRuntimePackPublication,\n finalizePackageTransportSource,\n loadAssetConfig,\n metaPathForGuid,\n projectCookedPackageEntry,\n} from '@forgeax/engine-pack/build';\nimport type { NativeCooker } from '@forgeax/engine-pack/native-cooker';\nimport type {\n AssetPublicationEnvelope,\n Importer,\n PackIndexEntry,\n ResourceRevision,\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 materializePreparedScriptablePack,\n prepareAuthoredPackTransport,\n produceScriptablePackProducts,\n scriptablePackInputs,\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\nexport interface ScriptableBuildPackage {\n readonly packageUrl: string;\n readonly receiptUrls: ReadonlyMap<string, string>;\n readonly refs: ReadonlyMap<string, readonly string[]>;\n readonly revision: ResourceRevision;\n readonly publication: AssetPublicationEnvelope;\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 },\n) {\n return createRuntimePackPublication({\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 generation: context.runtimeBinding?.generation ?? context.generation,\n });\n}\n\nasync function buildAuthoredPackages(\n context: BuildProductionOptions,\n): Promise<ReadonlyMap<string, ScriptableBuildPackage>> {\n const scriptableSources = [...context.inventory.sourceDeclarations.entries()]\n .filter(([, declaration]) => declaration.format === 'pack.ts')\n .map(([sourcePath]) => sourcePath);\n if (scriptableSources.length === 0) return new Map();\n const inputs = scriptablePackInputs(\n scriptableSources,\n context.inventory.sourceDeclarations,\n context.cwd,\n () => context.generation,\n () => (product) => ({\n base: context.basePrefix === '' ? '/' : context.basePrefix,\n packagePath: `assets/${product.anchorGuid}.pack.json`,\n artifactPath: scriptableArtifactPath,\n }),\n context.fsForImport.sourceIdentityFor,\n );\n const preparedResult = await produceScriptablePackProducts(\n inputs,\n await declaredPackExternalOutputs(\n context.inventory.sourceDeclarations,\n context.cookers,\n inputs.flatMap((input) => Object.values(input.definition.externalAssets)),\n {\n importerRegistry: context.importerRegistry,\n fsForImport: context.fsForImport,\n assetPaths: loadAssetConfig(context.cwd).paths,\n },\n ),\n );\n if (!preparedResult.ok) throw context.fail(preparedResult.error);\n\n const result = new Map<string, ScriptableBuildPackage>();\n for (const entry of context.inventory.entries) {\n if (!entry.sourcePath.endsWith('.pack.ts') || result.has(entry.sourcePath)) continue;\n const prepared = preparedResult.value.get(canonicalScriptableSourcePath(entry.sourcePath));\n if (prepared === undefined) {\n throw context.fail({\n code: 'catalog-declaration-missing',\n expected: 'the ScriptablePack inventory to retain every authored Pack source',\n hint: 'rerun the source inventory and rebuild from the accepted declaration set',\n detail: { stage: 'scan', sourcePath: entry.sourcePath },\n });\n }\n const { product, finalized, facts, revision, publication } = prepared;\n const packagePath = `assets/${product.anchorGuid}.pack.json`;\n const runtimePublication = createRuntimePackPublication({\n pack: { assets: finalized.pack.assets },\n scopeId: context.runtimeBinding?.scopeId ?? 'asset-runtime',\n sourcePath: publication.sourcePath,\n sourceRevision: publication.sourceRevision,\n packageUrl: finalized.packageUrl,\n inputFingerprint: publication.receipt.inputFingerprint,\n digest: finalized.digest,\n generation: context.runtimeBinding?.generation ?? publication.generation,\n outputs: facts.outputs,\n externalEvidence: publication.externalEvidence,\n });\n const receiptPaths = await materializePreparedScriptablePack(\n prepared,\n {\n packagePath,\n artifactPath: (path) => `assets/${path}`,\n receiptPath: (guid) => `assets/${guid}.receipt.json`,\n },\n {\n writePackage: (path) => {\n context.sink.emitFile({\n type: 'asset',\n fileName: path,\n originalFileName: `${context.cwd}/${entry.sourcePath}`,\n source: JSON.stringify(runtimePublication.pack),\n });\n },\n writeArtifact: (path, bytes) => {\n context.sink.emitFile({ type: 'asset', fileName: path, source: bytes });\n },\n writeReceipt: (path, source) => {\n context.sink.emitFile({ type: 'asset', fileName: path, source });\n },\n },\n );\n result.set(entry.sourcePath, {\n packageUrl: finalized.packageUrl,\n receiptUrls: new Map(\n [...receiptPaths].map(([guid, path]) => [guid, context.sink.fileUrl(path)]),\n ),\n revision,\n publication: runtimePublication.publication,\n refs: facts.refs,\n });\n }\n return result;\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): 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 entries[index] = {\n ...entry,\n packageUrl,\n ...projection,\n ...(sourcePath === undefined ? {} : { sourcePath }),\n ...(publication === undefined ? {} : { publication }),\n ...(refs === undefined ? {} : { refs }),\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 publication?: AssetPublicationEnvelope;\n readonly sourcePath?: string;\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 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 updateImportedEntries(\n work.importedEntries,\n options.guids,\n packageUrl,\n options.projection,\n options.refsByGuid,\n options.publication,\n options.sourcePath,\n );\n return packageUrl;\n}\n\nasync function emitAuthoredPack(\n work: BuildEmissionWork,\n guidSeen: Set<string>,\n entry: PackIndexEntry,\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 const prepared = await prepareAuthoredPackTransport(\n declaration.value,\n work.context.cookers,\n (guid) => ({\n base: work.context.basePrefix === '' ? '/' : work.context.basePrefix,\n packagePath: `assets/${guid}.pack.json`,\n artifactPath: (artifactGuid, key) => `${artifactGuid}/${key}.bin`,\n }),\n packPath,\n );\n const outputGuid = prepared.firstGuid ?? entry.guid;\n const authoredPack = prepared.finalized?.pack ?? prepared.pack;\n const runtimePublication =\n authoredPack.assets === undefined || authoredPack.assets.length === 0\n ? undefined\n : runtimePublicationFor(work.context, {\n pack: { assets: authoredPack.assets },\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\n ? {}\n : { digest: prepared.finalized.digest }),\n });\n await emitPackDocument(work, {\n pack: runtimePublication?.pack ?? authoredPack,\n artifacts: prepared.finalized?.artifacts ?? [],\n packageName: `${outputGuid}.pack.json`,\n originalFileName: packPath,\n guids: prepared.pack.assets?.map((asset) => asset.guid) ?? [outputGuid],\n projection:\n prepared.finalized === undefined\n ? work.context.directCurrentProjection\n : work.context.authoredCookedCurrentProjection,\n ...(prepared.cooked === undefined ? {} : { refsByGuid: prepared.cooked.refsByGuid }),\n ...(runtimePublication === undefined ? {} : { publication: runtimePublication.publication }),\n });\n for (const guid of prepared.pack.assets?.map((asset) => asset.guid) ?? [outputGuid]) {\n guidSeen.add(guid.toLowerCase());\n }\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): 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')) await emitAuthoredPack(work, guidSeen, entry);\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: readonly { readonly guid: string }[] = 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 });\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 entries = [...context.inventory.entries];\n const authored = await buildAuthoredPackages(context);\n const importedEntries = entries.map((entry) => {\n const scriptable = authored.get(entry.sourcePath);\n if (scriptable === undefined) return entry;\n const cookReceiptUrl = scriptable.receiptUrls.get(entry.guid.toLowerCase());\n return projectCookedPackageEntry(entry, {\n packageUrl: scriptable.packageUrl,\n revision: scriptable.revision,\n refs: scriptable.refs.get(entry.guid.toLowerCase()) ?? [],\n ...(cookReceiptUrl === undefined ? {} : { cookReceiptUrl }),\n publication: scriptable.publication,\n });\n });\n const guidSeen = new Set<string>();\n const work: BuildEmissionWork = { importedEntries, context };\n for (const entry of importedEntries) {\n if (!guidSeen.has(entry.guid.toLowerCase())) await emitBuildEntry(work, guidSeen, entry);\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","// @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 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 '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 '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 { mkdir, rename, rm, stat, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport {\n type DdcEntry,\n type DdcGenerationEntryCandidate,\n DdcGenerationSession,\n type DdcHead,\n DdcLifecycle,\n ddcOutputDigest,\n} from '@forgeax/engine-ddc';\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 };\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}.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 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 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: {\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 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 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: await persistTransport(candidate.input.transport),\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"]}