{"version":3,"sources":["../src/errors.ts","../src/uuid-v5.ts","../src/guid.ts","../src/plugin-asset.ts","../src/scriptable-pack-wire.ts","../src/pack-authoring.ts","../src/scriptable-pack.ts"],"names":["err","ok","descriptors","definition","values"],"mappings":"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","file":"scriptable-pack.mjs","sourcesContent":["// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Structured surface: .code / .expected / .hint / .detail, plus optional typed .cause\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\nimport type { PackAuthoringError } from './pack-authoring.js';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n *   case 'pack-guid-collision':\n *     console.error(err.detail.paths);\n *     break;\n *   case 'pack-cyclic-reference':\n *     console.error(err.detail.cycle);\n *     break;\n *   // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n  readonly code: PackErrorCode;\n  readonly expected: string;\n  readonly hint: string;\n  readonly detail: PackErrorDetail;\n  override readonly cause?: PackAuthoringError;\n\n  constructor(args: {\n    code: PackErrorCode;\n    expected: string;\n    hint: string;\n    detail: PackErrorDetail;\n    cause?: PackAuthoringError;\n  }) {\n    super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n    this.name = 'PackError';\n    this.code = args.code;\n    this.expected = args.expected;\n    this.hint = args.hint;\n    this.detail = args.detail;\n    if (args.cause !== undefined) this.cause = args.cause;\n  }\n}\n","import { sha1 } from '@noble/hashes/legacy.js';\n\n/** Internal UUIDv5 kernel; each caller owns its namespace and name validation. */\nexport function uuidV5(namespace: Uint8Array, name: string): Uint8Array {\n  const nameBytes = new TextEncoder().encode(name);\n  const input = new Uint8Array(namespace.byteLength + nameBytes.byteLength);\n  input.set(namespace, 0);\n  input.set(nameBytes, namespace.byteLength);\n  const result = sha1(input).slice(0, 16);\n  // RFC 4122: UUID version 5, RFC variant.\n  result[6] = ((result[6] ?? 0) & 0x0f) | 0x50;\n  result[8] = ((result[8] ?? 0) & 0x3f) | 0x80;\n  return result;\n}\n","import { uuidv7obj } from 'uuidv7';\nimport { PackError } from './errors.js';\nimport { uuidV5 } from './uuid-v5.js';\n\n/**\n * 16-byte UUID branded ABI. Prevents assignment from plain Uint8Array or string.\n * Brand field mirrors the declaration in @forgeax/engine-types for cross-package\n * structural compatibility (both use __guidBrand: 'AssetGuid').\n */\nexport type AssetGuid = Uint8Array & { readonly __guidBrand: 'AssetGuid' };\n\n/** Pack-level identity. It is intentionally not assignable to AssetGuid. */\nexport type PackageId = Uint8Array & { readonly __packageIdBrand: 'PackageId' };\n\n/** Minimal Result alias for this module (structurally compatible with ScanResult). */\nexport type GuidResult<T, E> =\n  | { readonly ok: true; readonly value: T }\n  | { readonly ok: false; readonly error: E };\n\nfunction brand(bytes: Uint8Array): AssetGuid {\n  return bytes as AssetGuid;\n}\n\nconst HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n\nfunction bytesToDashForm(bytes: Uint8Array): string {\n  const h = HEX_BYTE;\n  // biome-ignore lint/style/noNonNullAssertion: length guaranteed 16\n  return `${h[bytes[0]!]}${h[bytes[1]!]}${h[bytes[2]!]}${h[bytes[3]!]}-${h[bytes[4]!]}${h[bytes[5]!]}-${h[bytes[6]!]}${h[bytes[7]!]}-${h[bytes[8]!]}${h[bytes[9]!]}-${h[bytes[10]!]}${h[bytes[11]!]}${h[bytes[12]!]}${h[bytes[13]!]}${h[bytes[14]!]}${h[bytes[15]!]}`;\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/** Stable author-owned output identity. Paths and payloads are not identity inputs. */\nexport const PACK_SOURCE_KEY_RE = /^[a-z0-9][a-z0-9._-]*(\\/[a-z0-9][a-z0-9._-]*)*$/;\n\nexport function isValidPackSourceKey(value: unknown): value is string {\n  return typeof value === 'string' && PACK_SOURCE_KEY_RE.test(value);\n}\n\nexport function isValidAssetGuidString(value: unknown): value is string {\n  return typeof value === 'string' && UUID_RE.test(value);\n}\n\nfunction dashFormToBytes(dashForm: string): Uint8Array {\n  const hex = dashForm.replace(/-/g, '');\n  const bytes = new Uint8Array(16);\n  for (let i = 0; i < 16; i++) {\n    bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n  }\n  return bytes;\n}\n\nfunction randomUuidBytes(): Uint8Array {\n  const uuid = uuidv7obj();\n  const bytes = new Uint8Array(16);\n  bytes.set(uuid.bytes);\n  return bytes;\n}\n\nfunction packageId(value: Uint8Array): PackageId {\n  return value as PackageId;\n}\n\n/** Utilities for the pack-level UUID identity. */\nexport const PackageId = {\n  parse(dashForm: string): GuidResult<PackageId, PackError> {\n    const parsed = AssetGuid.parse(dashForm);\n    return parsed.ok ? { ok: true, value: packageId(parsed.value) } : parsed;\n  },\n  format(value: PackageId): string {\n    return bytesToDashForm(value);\n  },\n  random(): PackageId {\n    return packageId(randomUuidBytes());\n  },\n} as const;\n\nfunction derivedGuid(namespace: PackageId, sourceKey: string): AssetGuid {\n  if (!(namespace instanceof Uint8Array) || namespace.byteLength !== 16) {\n    throw new TypeError('AssetGuid.derive requires a 16-byte PackageId');\n  }\n  if (!isValidPackSourceKey(sourceKey)) {\n    const error = new TypeError(\n      `AssetGuid.derive received invalid sourceKey ${JSON.stringify(sourceKey)}`,\n    ) as TypeError & { readonly code?: string };\n    Object.defineProperty(error, 'code', { value: 'pack-source-key-invalid' });\n    throw error;\n  }\n  return brand(uuidV5(namespace, sourceKey));\n}\n\n/**\n * Utilities for the AssetGuid branded 16-byte UUID type.\n * Declare the type via `import type { AssetGuid } from '@forgeax/engine-pack/guid'`\n * or `import type { AssetGuid } from '@forgeax/engine-types'`.\n */\nexport const AssetGuid = {\n  /**\n   * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.\n   * Returns Ok(AssetGuid) on success or Err(PackError) with code 'pack-guid-malformed' on failure.\n   * Never throws for expected failures (requirements §4.2 / §14 / charter proposition 4).\n   */\n  parse(dashForm: string): GuidResult<AssetGuid, PackError> {\n    if (!isValidAssetGuidString(dashForm)) {\n      return {\n        ok: false,\n        error: new PackError({\n          code: 'pack-guid-malformed',\n          expected: '36-char RFC 4122 dash-form UUID',\n          hint: 'use AssetGuid.random() or a UUIDv7 generator; all GUID fields must be 36-char RFC 4122 dash-form',\n          detail: {\n            raw: dashForm,\n            reason: 'expected 36-char RFC 4122 dash-form UUID',\n          },\n        }),\n      };\n    }\n    return { ok: true, value: brand(dashFormToBytes(dashForm)) };\n  },\n\n  /**\n   * Format an AssetGuid as a 36-char RFC 4122 lowercase dash-form string.\n   */\n  format(guid: AssetGuid): string {\n    return bytesToDashForm(guid);\n  },\n\n  /**\n   * Test byte-by-byte equality between two AssetGuids.\n   */\n  equals(a: AssetGuid, b: AssetGuid): boolean {\n    for (let i = 0; i < 16; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  },\n\n  /**\n   * Mint a new time-ordered UUIDv7 as an AssetGuid.\n   * Works in both Node.js and browser environments.\n   */\n  random(): AssetGuid {\n    return brand(randomUuidBytes());\n  },\n\n  /** Derive the stable UUIDv5 projection for one Pack subject and sourceKey. */\n  derive(namespace: PackageId, sourceKey: string): AssetGuid {\n    return derivedGuid(namespace, sourceKey);\n  },\n} as const;\n","import { isToolCommandContract, type ToolCommandContract } from '@forgeax/engine-tool-runtime';\nimport type { PluginAsset, PluginConfigValue, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport { isValidAssetGuidString } from './guid.js';\n\nexport interface PluginModuleReference {\n  readonly specifier: string;\n  readonly export?: string;\n}\n\nexport interface PluginAssetSource {\n  readonly kind: 'plugin';\n  readonly module: PluginModuleReference;\n  readonly config?: PluginConfigValue;\n  readonly toolContract?: PluginModuleReference | ToolCommandContract;\n}\n\nexport interface PluginSourceError {\n  readonly code: 'plugin-source-invalid';\n  readonly expected: string;\n  readonly hint: string;\n  readonly detail: { readonly path: string; readonly reason: string };\n}\n\nfunction invalid(path: string, reason: string): PluginSourceError {\n  return {\n    code: 'plugin-source-invalid',\n    expected:\n      'a static module reference and a finite JSON configuration with explicit $asset markers',\n    hint: 'repair this Pack output before rebuilding its program closure',\n    detail: { path, reason },\n  };\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n  return (\n    value !== null &&\n    typeof value === 'object' &&\n    (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null)\n  );\n}\n\nfunction moduleReference(value: unknown, path: string): PluginSourceError | undefined {\n  if (!record(value)) return invalid(path, 'expected a module reference object');\n  if (Object.keys(value).some((key) => key !== 'specifier' && key !== 'export')) {\n    return invalid(path, 'unknown module reference field');\n  }\n  if (\n    typeof value.specifier !== 'string' ||\n    !value.specifier.trim() ||\n    /[\\0\\r\\n]/.test(value.specifier) ||\n    value.specifier.startsWith('/') ||\n    /^[a-zA-Z]:/.test(value.specifier)\n  ) {\n    return invalid(`${path}.specifier`, 'expected a relative path or package specifier');\n  }\n  if (value.export !== undefined && (typeof value.export !== 'string' || !value.export)) {\n    return invalid(`${path}.export`, 'expected a non-empty export name');\n  }\n  return undefined;\n}\n\nfunction configTree(\n  value: unknown,\n  path: string,\n  refs: Set<string> | undefined,\n  ancestors: Set<object>,\n): Result<PluginConfigValue, PluginSourceError> {\n  if (value === null || typeof value === 'boolean' || typeof value === 'string') return ok(value);\n  if (typeof value === 'number' && Number.isFinite(value)) return ok(value);\n  if (!Array.isArray(value) && !record(value))\n    return err(invalid(path, 'expected finite JSON data'));\n  if (ancestors.has(value)) return err(invalid(path, 'cyclic configuration'));\n  ancestors.add(value);\n  try {\n    if (Array.isArray(value)) {\n      const result: PluginConfigValue[] = [];\n      for (let index = 0; index < value.length; index++) {\n        const child = configTree(value[index], `${path}[${index}]`, refs, ancestors);\n        if (!child.ok) return child;\n        result.push(child.value);\n      }\n      if (\n        Reflect.ownKeys(value).some(\n          (key) => typeof key === 'symbol' || (key !== 'length' && !/^(0|[1-9][0-9]*)$/.test(key)),\n        )\n      ) {\n        return err(invalid(path, 'array has non-JSON properties'));\n      }\n      return ok(result);\n    }\n    const output: Record<string, PluginConfigValue> = {};\n    const keys = Reflect.ownKeys(value);\n    if (refs !== undefined && Object.hasOwn(value, '$asset')) {\n      if (\n        keys.length !== 1 ||\n        typeof value.$asset !== 'string' ||\n        !isValidAssetGuidString(value.$asset) ||\n        value.$asset !== value.$asset.toLowerCase()\n      ) {\n        return err(invalid(path, '$asset must be the sole field and contain a canonical UUID'));\n      }\n      refs.add(value.$asset);\n      return ok(value.$asset);\n    }\n    for (const key of keys) {\n      if (typeof key !== 'string') return err(invalid(path, 'symbol property is not JSON'));\n      const descriptor = Object.getOwnPropertyDescriptor(value, key);\n      if (!descriptor?.enumerable || !('value' in descriptor)) {\n        return err(invalid(`${path}.${key}`, 'accessors and hidden fields are not JSON'));\n      }\n      const child = configTree(descriptor.value, `${path}.${key}`, refs, ancestors);\n      if (!child.ok) return child;\n      // Preserve JSON data keys such as __proto__ without invoking inherited setters.\n      Object.defineProperty(output, key, {\n        value: child.value,\n        enumerable: true,\n        configurable: true,\n        writable: true,\n      });\n    }\n    return ok(output);\n  } finally {\n    ancestors.delete(value);\n  }\n}\n\nexport function lowerPluginConfig(value: unknown): Result<\n  {\n    readonly config: PluginConfigValue;\n    readonly refs: readonly string[];\n  },\n  PluginSourceError\n> {\n  const refs = new Set<string>();\n  const result = configTree(value, '$.config', refs, new Set());\n  return result.ok ? ok({ config: result.value, refs: [...refs].sort() }) : result;\n}\n\nexport function validatePluginAssetSource(\n  value: unknown,\n): Result<PluginAssetSource, PluginSourceError> {\n  if (!record(value) || value.kind !== 'plugin') return err(invalid('$', 'expected plugin source'));\n  if (\n    Object.keys(value).some((key) => !['kind', 'module', 'config', 'toolContract'].includes(key))\n  ) {\n    return err(invalid('$', 'unknown plugin source field'));\n  }\n  const moduleError = moduleReference(value.module, '$.module');\n  if (moduleError) return err(moduleError);\n  if (value.toolContract !== undefined && !isToolCommandContract(value.toolContract)) {\n    const contractError = moduleReference(value.toolContract, '$.toolContract');\n    if (contractError) return err(contractError);\n  }\n  if (Object.hasOwn(value, 'config')) {\n    const config = lowerPluginConfig(value.config);\n    if (!config.ok) return config;\n  }\n  return ok(value as unknown as PluginAssetSource);\n}\n\n/** Pure executor-reference lowering shared by static delivery and runtime source admission. */\nexport function lowerPluginToolContract(\n  contract: ToolCommandContract,\n  resolve: (module: PluginModuleReference) => string,\n): Result<ToolCommandContract, PluginSourceError> {\n  if (!isToolCommandContract(contract))\n    return err(invalid('$.toolContract', 'expected a pure tool command contract'));\n  try {\n    const commands = structuredClone(contract.commands).map(\n      ({ executor, exportName, ...command }) => {\n        if (executor === undefined) return command;\n        const reference = {\n          specifier: executor,\n          ...(exportName === undefined ? {} : { export: exportName }),\n        };\n        const error = moduleReference(reference, '$.toolContract.executor');\n        if (error) throw new TypeError(error.detail.reason);\n        const program = resolve(reference);\n        if (typeof program !== 'string' || !program.length)\n          throw new TypeError(`missing executor program ${executor}`);\n        return { ...command, executor: program };\n      },\n    );\n    return ok({ schemaVersion: '1.0.0', commands });\n  } catch (cause) {\n    return err(invalid('$.toolContract', cause instanceof Error ? cause.message : String(cause)));\n  }\n}\n\nexport function validatePluginAsset(value: unknown): Result<PluginAsset, PluginSourceError> {\n  if (\n    !record(value) ||\n    value.kind !== 'plugin' ||\n    typeof value.program !== 'string' ||\n    !value.program\n  ) {\n    return err(invalid('$', 'expected a cooked plugin definition with a program key'));\n  }\n  if (Object.keys(value).some((key) => !['kind', 'program', 'config'].includes(key))) {\n    return err(invalid('$', 'unknown cooked plugin field'));\n  }\n  if (Object.hasOwn(value, 'config')) {\n    const config = configTree(value.config, '$.config', undefined, new Set());\n    if (!config.ok) return config;\n  }\n  return ok(value as unknown as PluginAsset);\n}\n","import type { PackParameterList, ScriptablePackDefinition } from './pack-authoring.js';\n\nconst definitionFields = [\n  'schemaVersion',\n  'packageId',\n  'name',\n  'parameters',\n  'sceneComponents',\n  'runtime',\n  'build',\n] as const satisfies readonly (keyof ScriptablePackDefinition<PackParameterList>)[];\nconst declaredFields = new Set<string>(definitionFields);\n\n/** Admission and worker projection use the same authored vocabulary. */\nexport function isScriptablePackField(name: string): boolean {\n  return declaredFields.has(name);\n}\n\nexport interface StructuredFailure {\n  readonly name?: unknown;\n  readonly code?: unknown;\n  readonly expected?: unknown;\n  readonly actual?: unknown;\n  readonly hint?: unknown;\n  readonly detail?: unknown;\n  readonly message?: unknown;\n}\n\n/** Preserve structured diagnostics across either direction of the worker port. */\nexport function projectFailure(value: object): StructuredFailure {\n  const failure = value as Record<string, unknown>;\n  return {\n    name: failure.name,\n    code: failure.code,\n    expected: failure.expected,\n    actual: failure.actual,\n    hint: failure.hint,\n    detail: failure.detail,\n    message: failure.message,\n  };\n}\n","import type { Asset, AssetGuid, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport {\n  AssetGuid as AssetGuidCodec,\n  isValidAssetGuidString,\n  isValidPackSourceKey,\n  PackageId,\n} from './guid.js';\nimport {\n  lowerPluginConfig,\n  type PluginAssetSource,\n  validatePluginAssetSource,\n} from './plugin-asset.js';\nimport type { ScriptablePackSceneComponentInput } from './scriptable-pack.js';\nimport { isScriptablePackField } from './scriptable-pack-wire.js';\n\n/** Values deliberately stay finite and serialisable at the authoring boundary. */\nexport type PackParameterScalar = boolean | number | string;\nexport type PackParameterValue = PackParameterScalar | readonly number[] | AssetGuid;\n\nexport type PackParameterType =\n  | 'bool'\n  | 'u32'\n  | 'i32'\n  | 'f32'\n  | 'f64'\n  | 'string'\n  | 'enum'\n  | 'vec2'\n  | 'vec3'\n  | 'vec4'\n  | 'color'\n  | 'asset-guid';\n\nexport const PACK_PARAMETER_TYPES = [\n  'bool',\n  'u32',\n  'i32',\n  'f32',\n  'f64',\n  'string',\n  'enum',\n  'vec2',\n  'vec3',\n  'vec4',\n  'color',\n  'asset-guid',\n] as const satisfies readonly PackParameterType[];\n\nexport interface PackParameterDefinition<\n  TName extends string = string,\n  TType extends PackParameterType = PackParameterType,\n  TDefault extends PackParameterValue = PackParameterValue,\n> {\n  readonly name: TName;\n  readonly type: TType;\n  readonly default: TDefault;\n  readonly minimum?: number;\n  readonly maximum?: number;\n  /** Closed choices are required for `enum` and forbidden for other types. */\n  readonly values?: readonly PackParameterScalar[];\n  /** Optional authoring-only kind constraint for asset GUID parameters. */\n  readonly kind?: Asset['kind'];\n}\n\nexport type PackParameterValueFor<T extends PackParameterType> = T extends 'bool'\n  ? boolean\n  : T extends 'u32' | 'i32' | 'f32' | 'f64'\n    ? number\n    : T extends 'string' | 'enum'\n      ? string\n      : T extends 'vec2'\n        ? readonly [number, number]\n        : T extends 'vec3'\n          ? readonly [number, number, number]\n          : T extends 'vec4' | 'color'\n            ? readonly [number, number, number, number]\n            : T extends 'asset-guid'\n              ? AssetGuid\n              : never;\n\nexport type PackParameterValues<TParameters extends readonly PackParameterDefinition[]> = Readonly<{\n  [TParameter in TParameters[number] as TParameter['name']]: TParameter extends {\n    readonly type: infer TType extends PackParameterType;\n  }\n    ? TType extends 'enum'\n      ? TParameter extends { readonly values: readonly (infer TValue)[] }\n        ? Extract<TValue, string>\n        : string\n      : PackParameterValueFor<TType>\n    : never;\n}>;\n\nexport interface PackAuthoringError {\n  readonly code: PackAuthoringErrorCode;\n  readonly expected: string;\n  readonly hint: string;\n  readonly actual?: string;\n  readonly detail: Readonly<Record<string, unknown>>;\n}\n\nexport type PackAuthoringErrorCode =\n  | 'pack-package-id-invalid'\n  | 'pack-package-id-collision'\n  | 'pack-source-key-invalid'\n  | 'pack-guid-collision'\n  | 'pack-parent-not-found'\n  | 'pack-parent-cycle'\n  | 'pack-parent-has-no-parameters'\n  | 'pack-parameter-invalid'\n  | 'pack-content-dependency-stalled'\n  | 'pack-output-reference-missing'\n  | 'pack-output-reference-conflict'\n  | 'pack-output-not-materialized'\n  | 'asset-not-ready'\n  | 'pack-source-revision-conflict'\n  | 'pack-source-path-invalid'\n  | 'pack-source-not-found'\n  | 'pack-source-mutation-unsupported'\n  | 'pack-source-write-failed';\n\nfunction authoringError(\n  code: PackAuthoringErrorCode,\n  expected: string,\n  hint: string,\n  detail: Readonly<Record<string, unknown>> = {},\n  actual?: string,\n): PackAuthoringError {\n  return {\n    code,\n    expected,\n    hint,\n    ...(actual === undefined ? {} : { actual }),\n    detail,\n  };\n}\n\nfunction failure<T = never>(error: PackAuthoringError): Result<T, PackAuthoringError> {\n  return err(error);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateSceneComponents(\n  value: unknown,\n): Result<readonly ScriptablePackSceneComponentInput[] | undefined, PackAuthoringError> {\n  if (value === undefined) return ok(undefined);\n  if (!Array.isArray(value)) {\n    return failure(\n      parameterFailure(\n        '$.sceneComponents',\n        'an array of component schema records',\n        value,\n        'sceneComponents is not an array',\n      ),\n    );\n  }\n  const components: ScriptablePackSceneComponentInput[] = [];\n  const names = new Set<string>();\n  for (const [componentIndex, candidate] of value.entries()) {\n    if (!isRecord(candidate) || typeof candidate.name !== 'string' || !isRecord(candidate.fields)) {\n      return failure(\n        parameterFailure(\n          `$.sceneComponents[${componentIndex}]`,\n          'a component record with name and fields',\n          candidate,\n          'scene component schema is malformed',\n        ),\n      );\n    }\n    if (candidate.name.length === 0 || names.has(candidate.name)) {\n      return failure(\n        parameterFailure(\n          `$.sceneComponents[${componentIndex}].name`,\n          'a non-empty unique component name',\n          candidate.name,\n          'scene component names must be unique',\n        ),\n      );\n    }\n    names.add(candidate.name);\n    const fields: Record<string, string | { readonly type: string }> = {};\n    for (const [fieldName, field] of Object.entries(candidate.fields)) {\n      if (\n        (typeof field === 'string' && field.length === 0) ||\n        (typeof field !== 'string' &&\n          (!isRecord(field) || typeof field.type !== 'string' || field.type.length === 0))\n      ) {\n        return failure(\n          parameterFailure(\n            `$.sceneComponents[${componentIndex}].fields.${fieldName}`,\n            'a field type string or { type: string }',\n            field,\n            'scene component field schema is malformed',\n          ),\n        );\n      }\n      fields[fieldName] = field as string | { readonly type: string };\n    }\n    components.push({ name: candidate.name, fields });\n  }\n  return ok(components);\n}\n\nfunction isPackageId(value: unknown): value is PackageId {\n  return value instanceof Uint8Array && value.byteLength === 16;\n}\n\nfunction cloneValue<T>(value: T): T {\n  if (value instanceof Uint8Array) return value.slice() as T;\n  if (Array.isArray(value)) return value.map((item) => cloneValue(item)) as T;\n  return value;\n}\n\nfunction sourceKeyFailure(sourceKey: unknown, propertyPath = '$.sourceKey'): PackAuthoringError {\n  return authoringError(\n    'pack-source-key-invalid',\n    'a sourceKey matching ^[a-z0-9][a-z0-9._-]*(/[a-z0-9][a-z0-9._-]*)*$',\n    'use a stable lower-case semantic key; do not derive it from file paths or output order',\n    { propertyPath, sourceKey },\n    typeof sourceKey === 'string' ? sourceKey : undefined,\n  );\n}\n\nfunction parameterFailure(\n  propertyPath: string,\n  expected: string,\n  actual: unknown,\n  reason: string,\n): PackAuthoringError {\n  return authoringError(\n    'pack-parameter-invalid',\n    expected,\n    'repair the parameter declaration or the instance values, then inspect and rebuild',\n    { propertyPath, reason, actual: typeof actual === 'string' ? actual : JSON.stringify(actual) },\n  );\n}\n\nfunction numericType(type: PackParameterType): boolean {\n  return type === 'u32' || type === 'i32' || type === 'f32' || type === 'f64';\n}\n\nfunction vectorLength(type: PackParameterType): number | undefined {\n  switch (type) {\n    case 'vec2':\n      return 2;\n    case 'vec3':\n      return 3;\n    case 'vec4':\n    case 'color':\n      return 4;\n    default:\n      return undefined;\n  }\n}\n\nfunction parameterValueError(\n  parameter: PackParameterDefinition,\n  value: unknown,\n  propertyPath: string,\n): PackAuthoringError | undefined {\n  const { type } = parameter;\n  if (type === 'bool') {\n    return typeof value === 'boolean'\n      ? undefined\n      : parameterFailure(propertyPath, 'a boolean', value, 'bool value has the wrong type');\n  }\n  if (numericType(type)) {\n    if (typeof value !== 'number' || !Number.isFinite(value)) {\n      return parameterFailure(\n        propertyPath,\n        'a finite number',\n        value,\n        'numeric value is not finite',\n      );\n    }\n    if ((type === 'u32' || type === 'i32') && !Number.isInteger(value)) {\n      return parameterFailure(\n        propertyPath,\n        'an integer',\n        value,\n        'integer parameter received a fraction',\n      );\n    }\n    if (type === 'u32' && (value < 0 || value > 0xffff_ffff)) {\n      return parameterFailure(\n        propertyPath,\n        'an unsigned 32-bit integer',\n        value,\n        'u32 value is outside [0, 2^32 - 1]',\n      );\n    }\n    if (type === 'i32' && (value < -0x8000_0000 || value > 0x7fff_ffff)) {\n      return parameterFailure(\n        propertyPath,\n        'a signed 32-bit integer',\n        value,\n        'i32 value is outside [-2^31, 2^31 - 1]',\n      );\n    }\n    if (type === 'f32' && !Number.isFinite(Math.fround(value))) {\n      return parameterFailure(\n        propertyPath,\n        'a finite IEEE-754 32-bit float',\n        value,\n        'f32 value overflows binary32',\n      );\n    }\n    if (parameter.minimum !== undefined && value < parameter.minimum) {\n      return parameterFailure(\n        propertyPath,\n        `a number >= ${parameter.minimum}`,\n        value,\n        'value is below minimum',\n      );\n    }\n    if (parameter.maximum !== undefined && value > parameter.maximum) {\n      return parameterFailure(\n        propertyPath,\n        `a number <= ${parameter.maximum}`,\n        value,\n        'value is above maximum',\n      );\n    }\n    return undefined;\n  }\n  if (type === 'string') {\n    return typeof value === 'string'\n      ? undefined\n      : parameterFailure(propertyPath, 'a string', value, 'string parameter has the wrong type');\n  }\n  if (type === 'enum') {\n    if (typeof value !== 'string') {\n      return parameterFailure(\n        propertyPath,\n        'one of the declared enum strings',\n        value,\n        'enum value has the wrong type',\n      );\n    }\n    if (parameter.values === undefined || !parameter.values.includes(value)) {\n      return parameterFailure(\n        propertyPath,\n        'one of the declared enum values',\n        value,\n        'enum value is not declared',\n      );\n    }\n    return undefined;\n  }\n  const length = vectorLength(type);\n  if (length !== undefined) {\n    if (\n      !Array.isArray(value) ||\n      value.length !== length ||\n      value.some((component) => typeof component !== 'number' || !Number.isFinite(component))\n    ) {\n      return parameterFailure(\n        propertyPath,\n        `a finite numeric vector with ${length} components`,\n        value,\n        'vector value has the wrong shape',\n      );\n    }\n    if (type === 'color' && value.some((component) => component < 0 || component > 1)) {\n      return parameterFailure(\n        propertyPath,\n        'an RGBA color with components in [0, 1]',\n        value,\n        'color component is outside [0, 1]',\n      );\n    }\n    return undefined;\n  }\n  if (type === 'asset-guid') {\n    const validString = typeof value === 'string' && isValidAssetGuidString(value);\n    if (!(value instanceof Uint8Array && value.byteLength === 16) && !validString) {\n      return parameterFailure(\n        propertyPath,\n        'a 16-byte AssetGuid or UUID string',\n        value,\n        'asset GUID value is malformed',\n      );\n    }\n    return undefined;\n  }\n  return parameterFailure(\n    propertyPath,\n    'a supported Pack parameter type',\n    value,\n    'unknown parameter type',\n  );\n}\n\nfunction normalizeParameterValue(\n  parameter: PackParameterDefinition,\n  value: unknown,\n  propertyPath: string,\n): Result<PackParameterValue, PackAuthoringError> {\n  const error = parameterValueError(parameter, value, propertyPath);\n  if (error !== undefined) return failure(error);\n  if (parameter.type === 'asset-guid' && typeof value === 'string') {\n    const parsed = AssetGuidCodec.parse(value);\n    if (!parsed.ok) {\n      return failure(\n        parameterFailure(\n          propertyPath,\n          'a valid AssetGuid UUID string',\n          value,\n          'asset GUID parser rejected the value',\n        ),\n      );\n    }\n    return ok(parsed.value);\n  }\n  return ok(cloneValue(value as PackParameterValue));\n}\n\nfunction validateParameterDefinitions(\n  parameters: unknown,\n  propertyPath = '$.parameters',\n): Result<readonly PackParameterDefinition[], PackAuthoringError> {\n  if (!Array.isArray(parameters) || parameters.length === 0) {\n    return failure(\n      parameterFailure(\n        propertyPath,\n        'a non-empty parameter descriptor array',\n        parameters,\n        'parameters must be explicit and non-empty',\n      ),\n    );\n  }\n  const names = new Set<string>();\n  const normalized: PackParameterDefinition[] = [];\n  for (const [index, candidate] of parameters.entries()) {\n    const path = `${propertyPath}[${index}]`;\n    if (!isRecord(candidate))\n      return failure(\n        parameterFailure(\n          path,\n          'a parameter descriptor object',\n          candidate,\n          'descriptor is not an object',\n        ),\n      );\n    const name = candidate.name;\n    if (typeof name !== 'string' || !/^[A-Za-z][A-Za-z0-9_.-]*$/.test(name)) {\n      return failure(\n        parameterFailure(\n          `${path}.name`,\n          'a unique identifier-like parameter name',\n          name,\n          'parameter name is invalid',\n        ),\n      );\n    }\n    if (names.has(name))\n      return failure(\n        parameterFailure(\n          `${path}.name`,\n          'a unique parameter name',\n          name,\n          'parameter name is duplicated',\n        ),\n      );\n    names.add(name);\n    const unknown = Object.keys(candidate).find(\n      (key) => !['name', 'type', 'default', 'minimum', 'maximum', 'values', 'kind'].includes(key),\n    );\n    if (unknown !== undefined) {\n      return failure(\n        parameterFailure(\n          `${path}.${unknown}`,\n          'only name, type, default, minimum, maximum, values, and kind fields',\n          candidate[unknown],\n          'parameter descriptors are a closed authoring schema',\n        ),\n      );\n    }\n    const type = candidate.type;\n    if (typeof type !== 'string' || !(PACK_PARAMETER_TYPES as readonly string[]).includes(type)) {\n      return failure(\n        parameterFailure(\n          `${path}.type`,\n          PACK_PARAMETER_TYPES.join(' | '),\n          type,\n          'parameter type is not supported',\n        ),\n      );\n    }\n    const typed = {\n      ...candidate,\n      name,\n      type: type as PackParameterType,\n    } as PackParameterDefinition;\n    if (typed.values !== undefined) {\n      if (\n        typed.type !== 'enum' ||\n        !Array.isArray(typed.values) ||\n        typed.values.length === 0 ||\n        typed.values.some((item) => typeof item !== 'string') ||\n        new Set(typed.values).size !== typed.values.length\n      ) {\n        return failure(\n          parameterFailure(\n            `${path}.values`,\n            'unique non-empty strings for enum',\n            typed.values,\n            'enum values are malformed',\n          ),\n        );\n      }\n    } else if (typed.type === 'enum') {\n      return failure(\n        parameterFailure(\n          `${path}.values`,\n          'a non-empty enum choices array',\n          typed.values,\n          'enum has no choices',\n        ),\n      );\n    }\n    if (\n      typed.kind !== undefined &&\n      (typed.type !== 'asset-guid' || typeof typed.kind !== 'string')\n    ) {\n      return failure(\n        parameterFailure(\n          `${path}.kind`,\n          'a kind constraint only on asset-guid parameters',\n          typed.kind,\n          'kind is misplaced',\n        ),\n      );\n    }\n    for (const field of ['minimum', 'maximum'] as const) {\n      const bound = typed[field];\n      if (bound !== undefined && (typeof bound !== 'number' || !Number.isFinite(bound))) {\n        return failure(\n          parameterFailure(\n            `${path}.${field}`,\n            'a finite numeric bound',\n            bound,\n            'numeric bound is invalid',\n          ),\n        );\n      }\n    }\n    if (!numericType(typed.type) && (typed.minimum !== undefined || typed.maximum !== undefined)) {\n      return failure(\n        parameterFailure(\n          path,\n          'minimum/maximum only on numeric parameters',\n          typed,\n          'numeric bounds are not meaningful for this parameter type',\n        ),\n      );\n    }\n    if (\n      typed.minimum !== undefined &&\n      typed.maximum !== undefined &&\n      typed.minimum > typed.maximum\n    ) {\n      return failure(\n        parameterFailure(path, 'minimum <= maximum', typed, 'numeric bounds are reversed'),\n      );\n    }\n    const defaultResult = normalizeParameterValue(typed, typed.default, `${path}.default`);\n    if (!defaultResult.ok) return defaultResult;\n    normalized.push({\n      ...typed,\n      default: defaultResult.value,\n      ...(typed.values === undefined ? {} : { values: Object.freeze([...typed.values]) }),\n    });\n  }\n  return ok(Object.freeze(normalized));\n}\n\nexport interface PackBuildReadContext {\n  readByGuid<TAsset extends PackOutput = Asset>(guid: AssetGuid): Promise<Result<TAsset, unknown>>;\n}\n\nexport interface PackBuildContextWithoutParameters extends PackBuildReadContext {\n  readonly packageId: PackageId;\n}\n\nexport interface PackBuildContextWithParameters<\n  TParameters extends readonly PackParameterDefinition[],\n> extends PackBuildReadContext {\n  readonly packageId: PackageId;\n  readonly values: PackParameterValues<TParameters>;\n}\n\nexport type PackBuildContext<TParameters extends readonly PackParameterDefinition[] | undefined> =\n  TParameters extends readonly PackParameterDefinition[]\n    ? PackBuildContextWithParameters<TParameters>\n    : PackBuildContextWithoutParameters;\n\n/** Build-only custom source. The host derives identity and invokes the kind's NativeCooker. */\nexport interface PackCookSource {\n  readonly kind: string;\n  readonly execution: 'cooked';\n  readonly source: unknown;\n}\n\nexport type PackOutput = Asset | PluginAssetSource | PackCookSource;\nexport type PackOutputMap = Readonly<Record<string, PackOutput>>;\nexport type PackBuildResult<TError = unknown> =\n  | Result<PackOutputMap, TError>\n  | Promise<Result<PackOutputMap, TError>>;\n\nexport interface ScriptablePackRuntime {\n  /** Complete asset read closure, including dependencies of non-default parameter branches. */\n  readonly dependencies: readonly string[];\n}\n\ninterface PackDefinitionBase {\n  readonly schemaVersion: '2.0.0';\n  readonly packageId: PackageId;\n  readonly name?: string;\n  readonly runtime?: ScriptablePackRuntime;\n  /** Neutral component schemas used only to externalize SceneAsset refs at cook time. */\n  readonly sceneComponents?: readonly ScriptablePackSceneComponentInput[];\n}\n\nexport type ScriptablePackDefinition<\n  TParameters extends readonly PackParameterDefinition[] | undefined = undefined,\n> = PackDefinitionBase &\n  (TParameters extends readonly PackParameterDefinition[]\n    ? {\n        readonly parameters: TParameters;\n        readonly build: (context: PackBuildContextWithParameters<TParameters>) => PackBuildResult;\n      }\n    : {\n        readonly build: (context: PackBuildContextWithoutParameters) => PackBuildResult;\n      });\n\nexport type PackParameterList = readonly [PackParameterDefinition, ...PackParameterDefinition[]];\ntype NonEmptyParameters = PackParameterList;\ntype NoParameterPackInput = PackDefinitionBase & {\n  readonly parameters?: never;\n  readonly build: (context: PackBuildContextWithoutParameters) => PackBuildResult;\n};\ntype ScriptablePackDefinitionInput<TParameters extends NonEmptyParameters> = PackDefinitionBase & {\n  readonly parameters: TParameters;\n  readonly build: (context: PackBuildContextWithParameters<TParameters>) => PackBuildResult;\n};\n\n/** Convert a UUID literal into the distinct Pack-level identity brand. */\nexport function definePackageId(value: string | PackageId): PackageId {\n  if (isPackageId(value)) return value.slice() as PackageId;\n  const parsed = PackageId.parse(value);\n  if (!parsed.ok) {\n    const error = authoringError(\n      'pack-package-id-invalid',\n      'a 36-character RFC 4122 UUID packageId',\n      'use PackageId.random() or repair the packageId literal before loading the Pack',\n      { value },\n      value,\n    );\n    throw Object.assign(new TypeError(error.hint), error);\n  }\n  return parsed.value;\n}\n\nfunction cloneDefinition(\n  definition: ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>,\n): ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined> {\n  const parameters =\n    'parameters' in definition\n      ? Object.freeze(\n          definition.parameters.map((parameter) =>\n            Object.freeze({\n              ...parameter,\n              default: cloneValue(parameter.default),\n              ...(parameter.values === undefined\n                ? {}\n                : { values: Object.freeze(parameter.values.map((value) => cloneValue(value))) }),\n            }),\n          ),\n        )\n      : undefined;\n  const sceneComponents =\n    definition.sceneComponents === undefined\n      ? undefined\n      : Object.freeze(\n          definition.sceneComponents.map((component) =>\n            Object.freeze({\n              name: component.name,\n              fields: Object.freeze({ ...component.fields }),\n            }),\n          ),\n        );\n  return Object.freeze({\n    ...definition,\n    packageId: definition.packageId.slice() as PackageId,\n    ...(parameters === undefined ? {} : { parameters }),\n    ...(sceneComponents === undefined ? {} : { sceneComponents }),\n    ...(definition.runtime === undefined\n      ? {}\n      : {\n          runtime: Object.freeze({\n            dependencies: Object.freeze([...definition.runtime.dependencies]),\n          }),\n        }),\n  }) as ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>;\n}\n\n/**\n * Define the only executable authoring shape. A missing `parameters` property\n * is meaningful: its build context has no `values` member.\n */\nexport function definePack(definition: NoParameterPackInput): ScriptablePackDefinition<undefined>;\nexport function definePack<const TParameters extends NonEmptyParameters>(\n  definition: ScriptablePackDefinitionInput<TParameters>,\n): ScriptablePackDefinition<TParameters>;\nexport function definePack(\n  definition: NoParameterPackInput | ScriptablePackDefinitionInput<NonEmptyParameters>,\n): ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined> {\n  const validated = validatePackDefinition(definition);\n  if (!validated.ok) throw Object.assign(new TypeError(validated.error.hint), validated.error);\n  return cloneDefinition(\n    validated.value as\n      | ScriptablePackDefinition<NonEmptyParameters>\n      | ScriptablePackDefinition<undefined>,\n  );\n}\n\n/** Union used only at orchestration boundaries that accept either source form. */\nexport type AnyScriptablePackDefinition =\n  | ScriptablePackDefinition<PackParameterList>\n  | ScriptablePackDefinition<undefined>;\n\nexport interface ScriptablePackSourceMeta {\n  readonly schemaVersion: '2.0.0';\n  readonly kind: 'scriptable-pack-source';\n  readonly packageId: string;\n  readonly source: string;\n  readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n  readonly runtime?: ScriptablePackRuntime;\n}\n\n/** Ephemeral scan evidence; it intentionally contains no output GUID table. */\nexport function projectScriptablePackMeta(\n  definition: AnyScriptablePackDefinition,\n  sourcePath: string,\n): ScriptablePackSourceMeta {\n  return {\n    schemaVersion: '2.0.0',\n    kind: 'scriptable-pack-source',\n    packageId: PackageId.format(definition.packageId),\n    source: sourcePath,\n    ...(definition.runtime === undefined\n      ? {}\n      : {\n          runtime: { dependencies: [...definition.runtime.dependencies] },\n        }),\n    ...('parameters' in definition\n      ? {\n          parameters: definition.parameters.map((parameter) => ({\n            name: parameter.name,\n            type: parameter.type,\n            default: jsonParameterValue(parameter.default),\n            ...(parameter.minimum === undefined ? {} : { minimum: parameter.minimum }),\n            ...(parameter.maximum === undefined ? {} : { maximum: parameter.maximum }),\n            ...(parameter.values === undefined ? {} : { values: parameter.values }),\n            ...(parameter.kind === undefined ? {} : { kind: parameter.kind }),\n          })),\n        }\n      : {}),\n  };\n}\n\nfunction jsonParameterValue(value: PackParameterValue): unknown {\n  return value instanceof Uint8Array ? AssetGuidCodec.format(value) : value;\n}\n\n/** Runtime validation used by the isolated module loader and source scanner. */\nexport function validatePackDefinition(\n  value: unknown,\n  sourcePath?: string,\n): Result<\n  ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>,\n  PackAuthoringError\n> {\n  if (!isRecord(value))\n    return failure(\n      parameterFailure('$', 'a Pack definition object', value, 'definition is not an object'),\n    );\n  const unknown = Object.keys(value).find((key) => !isScriptablePackField(key));\n  if (unknown !== undefined) {\n    return failure(\n      parameterFailure(\n        `$.${unknown}`,\n        'only schemaVersion, packageId, name, parameters, sceneComponents, runtime, and build fields',\n        value[unknown],\n        'legacy static output declarations and external asset tables are not part of v2 authoring',\n      ),\n    );\n  }\n  if (value.schemaVersion !== '2.0.0') {\n    return failure(\n      parameterFailure(\n        '$.schemaVersion',\n        \"the literal '2.0.0'\",\n        value.schemaVersion,\n        'authoring source schema is unsupported',\n      ),\n    );\n  }\n  if (!isPackageId(value.packageId)) {\n    return failure(\n      authoringError(\n        'pack-package-id-invalid',\n        'a 16-byte PackageId',\n        'use definePackageId() for the stable source identity',\n        { sourcePath, propertyPath: '$.packageId' },\n        typeof value.packageId === 'string' ? value.packageId : undefined,\n      ),\n    );\n  }\n  if (value.name !== undefined && typeof value.name !== 'string') {\n    return failure(\n      parameterFailure('$.name', 'a string when present', value.name, 'display name is malformed'),\n    );\n  }\n  if (typeof value.build !== 'function') {\n    return failure(\n      parameterFailure('$.build', 'a build function', value.build, 'build is not callable'),\n    );\n  }\n  const sceneComponents = validateSceneComponents(value.sceneComponents);\n  if (!sceneComponents.ok) return sceneComponents;\n  let runtime: ScriptablePackRuntime | undefined;\n  if (value.runtime !== undefined) {\n    const candidate = value.runtime;\n    if (\n      !isRecord(candidate) ||\n      Object.keys(candidate).some((key) => key !== 'dependencies') ||\n      !Array.isArray(candidate.dependencies) ||\n      candidate.dependencies.some(\n        (guid) =>\n          typeof guid !== 'string' || !isValidAssetGuidString(guid) || guid !== guid.toLowerCase(),\n      ) ||\n      new Set(candidate.dependencies).size !== candidate.dependencies.length\n    ) {\n      return failure(\n        parameterFailure(\n          '$.runtime',\n          'a dependencies array of unique canonical asset UUIDs',\n          candidate,\n          'runtime generation requires an explicit complete read closure',\n        ),\n      );\n    }\n    runtime = Object.freeze({ dependencies: Object.freeze([...candidate.dependencies]) });\n  }\n  const hasParameters = Object.hasOwn(value, 'parameters');\n  if (!hasParameters) {\n    return ok(\n      Object.freeze({\n        schemaVersion: '2.0.0',\n        packageId: value.packageId,\n        ...(value.name === undefined ? {} : { name: value.name }),\n        ...(runtime === undefined ? {} : { runtime }),\n        ...(sceneComponents.value === undefined ? {} : { sceneComponents: sceneComponents.value }),\n        build: value.build,\n      }) as ScriptablePackDefinition<undefined>,\n    );\n  }\n  const parameters = validateParameterDefinitions(value.parameters);\n  if (!parameters.ok) return parameters;\n  return ok(\n    Object.freeze({\n      schemaVersion: '2.0.0',\n      packageId: value.packageId,\n      ...(value.name === undefined ? {} : { name: value.name }),\n      ...(runtime === undefined ? {} : { runtime }),\n      ...(sceneComponents.value === undefined ? {} : { sceneComponents: sceneComponents.value }),\n      parameters: parameters.value,\n      build: value.build,\n    }) as ScriptablePackDefinition<NonEmptyParameters>,\n  );\n}\n\nexport function hasPackParameters(\n  value: ScriptablePackDefinition | unknown,\n): value is ScriptablePackDefinition<NonEmptyParameters> {\n  return isRecord(value) && Array.isArray(value.parameters) && value.parameters.length > 0;\n}\n\n/** Resolve defaults plus a sparse instance override with shallow replacement. */\nexport function resolvePackParameterValues(\n  definition: ScriptablePackDefinition<NonEmptyParameters>,\n  overrides: unknown = {},\n  inheritedValues?: Readonly<Record<string, PackParameterValue>>,\n): Result<PackParameterValues<NonEmptyParameters>, PackAuthoringError> {\n  if (!isRecord(overrides)) {\n    return failure(\n      parameterFailure(\n        '$.values',\n        'an object of sparse parameter overrides',\n        overrides,\n        'values is not an object',\n      ),\n    );\n  }\n  const descriptors = new Map(\n    definition.parameters.map((parameter) => [parameter.name, parameter]),\n  );\n  for (const name of Object.keys(overrides)) {\n    if (!descriptors.has(name)) {\n      return failure(\n        parameterFailure(\n          `$.values.${name}`,\n          'a declared parameter name',\n          name,\n          'instance contains an unknown parameter',\n        ),\n      );\n    }\n  }\n  const values: Record<string, PackParameterValue> = {};\n  for (const parameter of definition.parameters) {\n    const raw = Object.hasOwn(overrides, parameter.name)\n      ? overrides[parameter.name]\n      : (inheritedValues?.[parameter.name] ?? parameter.default);\n    const normalized = normalizeParameterValue(parameter, raw, `$.values.${parameter.name}`);\n    if (!normalized.ok) return normalized;\n    values[parameter.name] = normalized.value;\n  }\n  return ok(Object.freeze(values) as PackParameterValues<NonEmptyParameters>);\n}\n\nexport interface DirectPackJsonAsset {\n  readonly kind: string;\n  readonly payload: Readonly<Record<string, unknown>>;\n  readonly refs: readonly string[];\n  readonly name?: string;\n  readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n}\n\nexport interface DirectPackJson {\n  readonly schemaVersion: '3.0.0';\n  readonly packageId: string;\n  /** Plugin source refs derive from $asset markers; other kinds supply refs. */\n  readonly assets: Readonly<\n    Record<string, Omit<DirectPackJsonAsset, 'refs'> & { readonly refs?: readonly string[] }>\n  >;\n}\n\nexport interface PackInstanceJson {\n  readonly schemaVersion: '3.0.0';\n  readonly packageId: string;\n  readonly parent: string;\n  readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport interface ParsedDirectPackJson {\n  readonly format: 'direct';\n  readonly schemaVersion: '3.0.0';\n  readonly packageId: PackageId;\n  readonly assets: Readonly<Record<string, DirectPackJsonAsset>>;\n}\n\nexport interface ParsedPackInstanceJson {\n  readonly format: 'instance';\n  readonly schemaVersion: '3.0.0';\n  readonly packageId: PackageId;\n  readonly parent: PackageId;\n  readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport type ParsedPackJson = ParsedDirectPackJson | ParsedPackInstanceJson;\n\nfunction jsonError(\n  propertyPath: string,\n  expected: string,\n  actual: unknown,\n  reason: string,\n): Result<never, PackAuthoringError> {\n  return failure(\n    authoringError(\n      'pack-parameter-invalid',\n      expected,\n      'repair the v3 pack.json authoring data, then rerun scan or rebuild',\n      {\n        propertyPath,\n        reason,\n        actual: typeof actual === 'string' ? actual : JSON.stringify(actual),\n      },\n    ),\n  );\n}\n\nfunction parsePackageId(\n  value: unknown,\n  propertyPath: string,\n): Result<PackageId, PackAuthoringError> {\n  if (typeof value !== 'string') {\n    return failure(\n      authoringError(\n        'pack-package-id-invalid',\n        'a UUID string',\n        'repair packageId in the authoring file',\n        { propertyPath, value },\n      ),\n    );\n  }\n  const parsed = PackageId.parse(value);\n  if (!parsed.ok) {\n    return failure(\n      authoringError(\n        'pack-package-id-invalid',\n        'a 36-character RFC 4122 UUID',\n        'repair packageId or use the authoring gateway to mint one',\n        { propertyPath, value },\n        value,\n      ),\n    );\n  }\n  return ok(parsed.value);\n}\n\nfunction parsePackJsonAsset(\n  value: unknown,\n  sourceKey: string,\n): Result<DirectPackJsonAsset, PackAuthoringError> {\n  if (!isRecord(value))\n    return jsonError(\n      `$.assets.${sourceKey}`,\n      'an asset entry object',\n      value,\n      'asset entry is not an object',\n    );\n  const allowed = new Set(['kind', 'payload', 'refs', 'name', 'artifacts']);\n  const unknown = Object.keys(value).find((key) => !allowed.has(key));\n  if (unknown !== undefined)\n    return jsonError(\n      `$.assets.${sourceKey}.${unknown}`,\n      'no GUID or extra authoring field',\n      value[unknown],\n      'direct v3 entries derive identity from their object key',\n    );\n  if (typeof value.kind !== 'string' || value.kind.length === 0)\n    return jsonError(\n      `$.assets.${sourceKey}.kind`,\n      'a non-empty asset kind',\n      value.kind,\n      'asset kind is missing',\n    );\n  if (!isRecord(value.payload))\n    return jsonError(\n      `$.assets.${sourceKey}.payload`,\n      'a JSON object payload',\n      value.payload,\n      'payload must be a plain object',\n    );\n  let refs: readonly string[];\n  if (value.kind === 'plugin') {\n    if (Object.hasOwn(value, 'refs'))\n      return jsonError(\n        `$.assets.${sourceKey}.refs`,\n        'producer-derived plugin references',\n        value.refs,\n        'use $asset configuration markers instead of authored refs',\n      );\n    const plugin = validatePluginAssetSource({ ...value.payload, kind: 'plugin' });\n    if (!plugin.ok)\n      return jsonError(\n        `$.assets.${sourceKey}.payload${plugin.error.detail.path.slice(1)}`,\n        plugin.error.expected,\n        value.payload,\n        plugin.error.detail.reason,\n      );\n    refs =\n      plugin.value.config === undefined ? [] : lowerPluginConfig(plugin.value.config).unwrap().refs;\n  } else if (\n    !Array.isArray(value.refs) ||\n    value.refs.some((ref) => typeof ref !== 'string' || !isValidAssetGuidString(ref))\n  ) {\n    return jsonError(\n      `$.assets.${sourceKey}.refs`,\n      'an array of UUID references',\n      value.refs,\n      'references must already be real AssetGuids',\n    );\n  } else refs = value.refs;\n  if (value.name !== undefined && (typeof value.name !== 'string' || value.name.length === 0))\n    return jsonError(\n      `$.assets.${sourceKey}.name`,\n      'a non-empty display name when present',\n      value.name,\n      'asset name is malformed',\n    );\n  if (value.artifacts !== undefined && !isRecord(value.artifacts))\n    return jsonError(\n      `$.assets.${sourceKey}.artifacts`,\n      'an artifact descriptor object when present',\n      value.artifacts,\n      'artifacts are not an object',\n    );\n  const base: DirectPackJsonAsset = {\n    kind: value.kind,\n    payload: value.payload,\n    refs: Object.freeze([...refs]),\n    ...(value.name === undefined ? {} : { name: value.name }),\n  };\n  if (value.artifacts === undefined) return ok(base);\n  const withArtifacts: DirectPackJsonAsset = {\n    ...base,\n    artifacts: value.artifacts as NonNullable<DirectPackJsonAsset['artifacts']>,\n  };\n  return ok(withArtifacts);\n}\n\n/** Parse the two mutually exclusive v3 pack.json branches. */\nexport function parsePackSourceJson(value: unknown): Result<ParsedPackJson, PackAuthoringError> {\n  if (!isRecord(value))\n    return jsonError('$', 'a v3 pack.json object', value, 'document is not an object');\n  if (value.schemaVersion !== '3.0.0')\n    return jsonError(\n      '$.schemaVersion',\n      \"the literal '3.0.0'\",\n      value.schemaVersion,\n      'document schema is not v3',\n    );\n  const unknown = Object.keys(value).find(\n    (key) => !['schemaVersion', 'packageId', 'assets', 'parent', 'values'].includes(key),\n  );\n  if (unknown !== undefined)\n    return jsonError(\n      `$.${unknown}`,\n      'no extra top-level authoring fields',\n      value[unknown],\n      'keep the v3 document to packageId+assets or packageId+parent+values',\n    );\n  const packageResult = parsePackageId(value.packageId, '$.packageId');\n  if (!packageResult.ok) return packageResult;\n  const hasAssets = Object.hasOwn(value, 'assets');\n  const hasParent = Object.hasOwn(value, 'parent');\n  const hasValues = Object.hasOwn(value, 'values');\n  if (hasAssets && (hasParent || hasValues))\n    return jsonError(\n      '$',\n      'assets or parent+values, never both',\n      value,\n      'direct and instance branches are mutually exclusive',\n    );\n  if (hasAssets) {\n    if (!isRecord(value.assets))\n      return jsonError(\n        '$.assets',\n        'a sourceKey to asset object',\n        value.assets,\n        'direct assets are not an object',\n      );\n    const assets: Record<string, DirectPackJsonAsset> = {};\n    for (const [sourceKey, entry] of Object.entries(value.assets)) {\n      if (!isValidPackSourceKey(sourceKey))\n        return failure(sourceKeyFailure(sourceKey, `$.assets.${sourceKey}`));\n      const parsed = parsePackJsonAsset(entry, sourceKey);\n      if (!parsed.ok) return parsed;\n      assets[sourceKey] = parsed.value;\n    }\n    return ok({\n      format: 'direct',\n      schemaVersion: '3.0.0',\n      packageId: packageResult.value,\n      assets: Object.freeze(assets),\n    });\n  }\n  if (!hasParent || !hasValues || hasAssets)\n    return jsonError(\n      '$',\n      'parent and values for an instance document',\n      value,\n      'instance branch is incomplete',\n    );\n  const parentResult = parsePackageId(value.parent, '$.parent');\n  if (!parentResult.ok) return parentResult;\n  if (!isRecord(value.values))\n    return jsonError(\n      '$.values',\n      'a sparse parameter object',\n      value.values,\n      'instance values are not an object',\n    );\n  return ok({\n    format: 'instance',\n    schemaVersion: '3.0.0',\n    packageId: packageResult.value,\n    parent: parentResult.value,\n    values: Object.freeze({ ...value.values }),\n  });\n}\n\nexport interface DirectPackAssetProjection extends DirectPackJsonAsset {\n  readonly guid: string;\n  readonly sourceKey: string;\n}\n\nexport interface DirectPackProjection {\n  readonly packageId: string;\n  readonly assets: readonly DirectPackAssetProjection[];\n}\n\n/** Add the computed GUIDs needed by the ordinary Pack v2 publication path. */\nexport function projectDirectPackJson(value: ParsedDirectPackJson): DirectPackProjection {\n  const assets: DirectPackAssetProjection[] = [];\n  for (const [sourceKey, entry] of Object.entries(value.assets).sort(([left], [right]) =>\n    left.localeCompare(right),\n  )) {\n    assets.push({\n      ...entry,\n      guid: AssetGuidCodec.format(AssetGuidCodec.derive(value.packageId, sourceKey)),\n      sourceKey,\n    });\n  }\n  return { packageId: PackageId.format(value.packageId), assets: Object.freeze(assets) };\n}\n\nexport interface PackParameterRootSubject {\n  readonly format: 'source';\n  readonly packageId: PackageId;\n  readonly parameters: readonly PackParameterDefinition[];\n}\n\nexport interface PackParameterInstanceSubject {\n  readonly format: 'instance';\n  readonly packageId: PackageId;\n  readonly parent: PackageId;\n  readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport interface PackDirectSubject {\n  readonly format: 'direct';\n  readonly packageId: PackageId;\n}\n\nexport type PackParameterInheritanceSubject =\n  | PackParameterRootSubject\n  | PackParameterInstanceSubject\n  | PackDirectSubject;\n\nexport interface ResolvedPackParameterInheritance {\n  readonly packageId: PackageId;\n  readonly rootPackageId: PackageId;\n  readonly values: Readonly<Record<string, PackParameterValue>>;\n  readonly parentChain: readonly string[];\n  readonly parameters: readonly PackParameterDefinition[];\n}\n\nexport type PackParameterSubjectReader = (\n  packageId: PackageId,\n) =>\n  | PackParameterInheritanceSubject\n  | undefined\n  | Promise<PackParameterInheritanceSubject | undefined>;\n\nfunction subjectId(subject: PackParameterInheritanceSubject): string {\n  return PackageId.format(subject.packageId).toLowerCase();\n}\n\n/** Resolve one finite parent chain. Every instance keeps its own packageId. */\nexport async function resolvePackParameterInheritance(\n  subject: PackParameterInheritanceSubject,\n  readParent: PackParameterSubjectReader,\n): Promise<Result<ResolvedPackParameterInheritance, PackAuthoringError>> {\n  const visited = new Set<string>();\n\n  async function visit(\n    current: PackParameterInheritanceSubject,\n    path: readonly string[],\n  ): Promise<Result<ResolvedPackParameterInheritance, PackAuthoringError>> {\n    const currentId = subjectId(current);\n    if (visited.has(currentId) || path.includes(currentId)) {\n      return failure(\n        authoringError(\n          'pack-parent-cycle',\n          'a finite acyclic Pack parent chain',\n          'inspect parentChain and repair the first repeated packageId',\n          { packageId: currentId, parentChain: [...path, currentId] },\n        ),\n      );\n    }\n    visited.add(currentId);\n    const nextPath = [...path, currentId];\n    if (current.format === 'direct') {\n      return failure(\n        authoringError(\n          'pack-parent-has-no-parameters',\n          'a ScriptablePack source with parameters as the parent',\n          'direct packs cannot be instance parents; point the instance at a ScriptablePack source with parameters',\n          { packageId: currentId },\n        ),\n      );\n    }\n    if (current.format === 'source') {\n      const descriptors = validateParameterDefinitions(current.parameters, '$.parameters');\n      if (!descriptors.ok) return descriptors;\n      if (descriptors.value.length === 0) {\n        return failure(\n          authoringError(\n            'pack-parent-has-no-parameters',\n            'the parent source to declare a non-empty parameter list',\n            'use clone for an independent zero-parameter Pack instead of creating an empty instance',\n            { packageId: currentId },\n          ),\n        );\n      }\n      const definition = {\n        schemaVersion: '2.0.0',\n        packageId: current.packageId,\n        parameters: descriptors.value as NonEmptyParameters,\n        build: () => ok({}),\n      } as ScriptablePackDefinition<NonEmptyParameters>;\n      const values = resolvePackParameterValues(definition);\n      if (!values.ok) return values;\n      return ok({\n        packageId: current.packageId,\n        rootPackageId: current.packageId,\n        values: values.value,\n        parentChain: [],\n        parameters: descriptors.value,\n      });\n    }\n    const parent = await readParent(current.parent);\n    if (parent === undefined) {\n      return failure(\n        authoringError(\n          'pack-parent-not-found',\n          'the parent packageId to resolve in the source index',\n          'inspect the parent locator or recreate the instance from a live ScriptablePack with parameters',\n          { packageId: currentId, parent: PackageId.format(current.parent) },\n        ),\n      );\n    }\n    if (\n      PackageId.format(parent.packageId).toLowerCase() !==\n      PackageId.format(current.parent).toLowerCase()\n    ) {\n      return failure(\n        authoringError(\n          'pack-parent-not-found',\n          'the parent reader to return the requested packageId',\n          'repair the Source Index locator and retry inheritance resolution',\n          {\n            packageId: currentId,\n            requestedParent: PackageId.format(current.parent),\n            observedParent: PackageId.format(parent.packageId),\n          },\n        ),\n      );\n    }\n    const resolvedParent = await visit(parent, nextPath);\n    if (!resolvedParent.ok) return resolvedParent;\n    const descriptors = resolvedParent.value.parameters;\n    const definition = {\n      schemaVersion: '2.0.0',\n      packageId: resolvedParent.value.rootPackageId,\n      parameters: descriptors as NonEmptyParameters,\n      build: () => ok({}),\n    } as ScriptablePackDefinition<NonEmptyParameters>;\n    const values = resolvePackParameterValues(\n      definition,\n      current.values,\n      resolvedParent.value.values,\n    );\n    if (!values.ok) return values;\n    return ok({\n      packageId: current.packageId,\n      rootPackageId: resolvedParent.value.rootPackageId,\n      values: values.value,\n      parentChain: [PackageId.format(current.parent), ...resolvedParent.value.parentChain],\n      parameters: descriptors,\n    });\n  }\n\n  return visit(subject, []);\n}\n\nexport const PACK_AUTHORING_OPERATION_IDS = [\n  'asset.list',\n  'asset.inspect',\n  'asset.resolve',\n  'asset.verify',\n  'asset-source.create',\n  'asset-source.clone',\n  'asset-source.import',\n  'asset-source.create-instance',\n  'asset-source.apply-values',\n  'asset-source.rebuild',\n  'asset-source.cold-cook',\n] as const;\n\nexport type PackAuthoringOperationId = (typeof PACK_AUTHORING_OPERATION_IDS)[number];\n\nexport interface PackAuthoringOperation {\n  readonly requestId: string;\n  readonly expectedRevision?: string;\n  readonly operation: PackAuthoringOperationId;\n  readonly subject?: string;\n  readonly sourcePath?: string;\n  readonly sourceRoot?: string;\n  readonly targetPath?: string;\n  readonly packageId?: string;\n  /** Parent package identity used by asset-source.create-instance. */\n  readonly parentPackageId?: string;\n  /** JSON-facing alias accepted by adapters at the operation boundary. */\n  readonly parent?: string;\n  readonly sourceKey?: string;\n  readonly values?: Readonly<Record<string, unknown>>;\n  /** `pack.ts` or `pack.json`; omitted defaults to the target extension. */\n  readonly format?: 'pack.ts' | 'pack.json';\n  /** Direct v3 entries for asset-source.create. */\n  readonly initialAssets?: Readonly<Record<string, DirectPackJsonAsset>>;\n  /** Explicit non-empty parameter declarations for a generated pack.ts scaffold. */\n  readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n  /** Required proof level for asset.resolve. */\n  readonly require?: 'identity' | 'present' | 'ready';\n}\n\nexport type PackAuthoringResolutionStatus = 'identity' | 'present' | 'ready';\n\nexport interface PackAuthoringOperationResult {\n  readonly operation: PackAuthoringOperationId;\n  readonly requestId: string;\n  readonly schemaVersion?: 'asset-verification-v1';\n  readonly sourcePath?: string;\n  readonly targetPath?: string;\n  readonly revision?: string;\n  readonly packageId?: string;\n  readonly parentPackageId?: string;\n  readonly sourceKey?: string;\n  readonly guid?: string;\n  readonly format?: 'pack.ts' | 'pack.json' | 'direct' | 'instance';\n  readonly status?: PackAuthoringResolutionStatus;\n  readonly kind?: string;\n  readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n  readonly values?: Readonly<Record<string, unknown>>;\n  /** Authored payload of the selected direct Pack output, never the whole source. */\n  readonly payload?: Readonly<Record<string, unknown>>;\n  readonly effectiveValues?: Readonly<Record<string, unknown>>;\n  readonly parentChain?: readonly string[];\n  readonly assets?: readonly Readonly<Record<string, unknown>>[];\n  readonly sources?: readonly Readonly<Record<string, unknown>>[];\n  readonly capabilities?: readonly PackAuthoringOperationId[];\n  readonly snapshot?: {\n    readonly sourceCount: number;\n    readonly assetCount: number;\n  };\n  /** Bounded source/output facts for read-only verification consumers. */\n  readonly scope?: {\n    readonly sourceCount: number;\n    readonly assetCount: number;\n    readonly sourcePaths: readonly string[];\n    readonly omittedSourceCount: number;\n    readonly assetLimit: number;\n    readonly truncated: boolean;\n    readonly scriptablePackSourceCount: number;\n    readonly scriptablePackSources: readonly {\n      readonly sourcePath: string;\n      readonly packageId: string;\n      readonly output: 'unproduced';\n      readonly reason: 'producer-not-run';\n    }[];\n    readonly omittedScriptablePackSourceCount: number;\n  };\n  readonly summary?: {\n    readonly assetCount: number;\n    readonly emittedAssetCount: number;\n    readonly materialCount: number;\n    readonly unproducedAssetCount: number;\n    readonly unknownAssetCount: number;\n    readonly unmaterializedScriptablePackCount: number;\n  };\n}\n\nexport interface PackAuthoringGatewayPort<TResult = unknown> {\n  execute(operation: PackAuthoringOperation): Promise<Result<TResult, PackAuthoringError>>;\n}\n\n/** One idempotent gateway wrapper shared by Editor and CLI adapters. */\nexport function createPackAuthoringGateway<TResult = unknown>(\n  port: PackAuthoringGatewayPort<TResult>,\n): PackAuthoringGatewayPort<TResult> {\n  const requests = new Map<\n    string,\n    { fingerprint: string; result: Promise<Result<TResult, PackAuthoringError>> }\n  >();\n  return {\n    execute(operation) {\n      if (typeof operation.requestId !== 'string' || operation.requestId.trim().length === 0) {\n        return Promise.resolve(\n          failure(\n            authoringError(\n              'pack-source-revision-conflict',\n              'a non-empty caller-minted requestId',\n              'mint a new requestId and retry',\n              { requestId: operation.requestId },\n            ),\n          ),\n        );\n      }\n      let fingerprint: string;\n      try {\n        fingerprint = JSON.stringify(operation);\n      } catch (cause) {\n        return Promise.resolve(\n          failure(\n            authoringError(\n              'pack-parameter-invalid',\n              'a JSON-serialisable authoring operation',\n              'remove non-serialisable operation fields and retry with a new requestId',\n              {\n                requestId: operation.requestId,\n                cause: cause instanceof Error ? cause.message : String(cause),\n              },\n            ),\n          ),\n        );\n      }\n      const previous = requests.get(operation.requestId);\n      if (previous !== undefined) {\n        if (previous.fingerprint === fingerprint) return previous.result;\n        return Promise.resolve(\n          failure(\n            authoringError(\n              'pack-source-revision-conflict',\n              'one immutable operation per requestId',\n              'read the original result or mint a new requestId',\n              { requestId: operation.requestId },\n            ),\n          ),\n        );\n      }\n      const result = Promise.resolve()\n        .then(() => port.execute(operation))\n        .catch(\n          (cause): Result<TResult, PackAuthoringError> =>\n            failure(\n              authoringError(\n                'pack-parameter-invalid',\n                'the Pack authoring port to return a structured Result',\n                'repair the gateway port failure, then retry with a new requestId',\n                {\n                  requestId: operation.requestId,\n                  cause: cause instanceof Error ? cause.message : String(cause),\n                },\n              ),\n            ),\n        );\n      requests.set(operation.requestId, { fingerprint, result });\n      return result;\n    },\n  };\n}\n\nexport const PACK_AUTHORING_OPERATION_DESCRIPTORS = PACK_AUTHORING_OPERATION_IDS.map((id) => ({\n  id,\n  domain: id.startsWith('asset-source.') ? 'session' : 'asset',\n  readOnly: id.startsWith('asset.'),\n  requiresRevision: !id.startsWith('asset.') && id !== 'asset-source.create',\n})) as readonly {\n  id: PackAuthoringOperationId;\n  domain: 'asset' | 'session';\n  readOnly: boolean;\n  requiresRevision: boolean;\n}[];\n","import type { Asset, AssetGuid, Result } from '@forgeax/engine-types';\nimport type { PackOutput } from './pack-authoring.js';\n\n/**\n * Build-time Pack vocabulary shared by the source loader and output\n * producers. ScriptablePack and Pack authoring definitions live in the shared\n * Pack authoring implementation; this facade is the browser-safe source entry.\n */\nexport * from './guid.js';\nexport * from './pack-authoring.js';\nexport * from './plugin-asset.js';\n\n/** Closed ordinary kind vocabulary shared by Pack discovery and producers. */\nexport type ScriptablePackAssetKind = Asset['kind'];\n\nexport const SCRIPTABLE_PACK_ASSET_KINDS = [\n  'plugin',\n  'mesh',\n  'material',\n  'scene',\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  'ies-profile',\n  'terrain',\n  'navigation-mesh',\n] as const satisfies readonly ScriptablePackAssetKind[];\n\nexport function isScriptablePackAssetKind(value: string): value is ScriptablePackAssetKind {\n  return (SCRIPTABLE_PACK_ASSET_KINDS as readonly string[]).includes(value);\n}\n\nexport const SCRIPTABLE_PACK_CAPABILITY_MANIFEST = {\n  assetKinds: SCRIPTABLE_PACK_ASSET_KINDS,\n  durablePayload: true,\n  refs: true,\n  artifacts: true,\n  hostCapabilities: ['audio-install', 'video-play', 'particle-execute'] as const,\n} as const;\n\nexport interface ScriptablePackSceneComponentInput {\n  readonly name: string;\n  readonly fields: Readonly<Record<string, string | { readonly type: string }>>;\n}\n\nexport interface ScriptablePackSceneComponent {\n  readonly name: string;\n  readonly fields: Readonly<Record<string, string>>;\n}\n\nfunction sceneComponentFieldType(value: unknown): string | undefined {\n  if (typeof value === 'string') return value;\n  if (value === null || typeof value !== 'object' || Array.isArray(value)) return undefined;\n  const type = (value as { readonly type?: unknown }).type;\n  return typeof type === 'string' ? type : undefined;\n}\n\nexport function projectScriptablePackSceneComponents(\n  components: readonly ScriptablePackSceneComponentInput[] | undefined,\n): readonly ScriptablePackSceneComponent[] {\n  return (components ?? []).map((component) => ({\n    name: component.name,\n    fields: Object.fromEntries(\n      Object.entries(component.fields).map(([fieldName, field]) => [\n        fieldName,\n        sceneComponentFieldType(field) as string,\n      ]),\n    ),\n  }));\n}\n\n/** Source closure evidence used to fence one isolated build generation. */\nexport interface ScriptablePackSourceClosureEntry {\n  readonly path: string;\n  readonly digest: string;\n}\n\n/** AssetReader is intentionally a small, realm-neutral source boundary. */\nexport interface AssetReader {\n  readByGuid<TAsset extends PackOutput = Asset>(\n    guid: AssetGuid,\n  ): Promise<Result<TAsset, ScriptablePackReadError>>;\n}\n\nexport interface ScriptablePackReadError {\n  readonly code: string;\n  readonly expected: string;\n  readonly hint: string;\n  readonly detail?: unknown;\n}\n"]}