import type { CatalogDiagnostic, ProviderProvenance, ResourceRevision, SourceOverrideDescriptor } from '@forgeax/engine-types'; import { PackError } from './errors.js'; import { PackageId } from './guid.js'; import { type AnyScriptablePackDefinition, type PackAuthoringError, type PackParameterValue, type ParsedPackJson, type ScriptablePackSourceMeta } from './pack-authoring.js'; import type { ScriptablePackSourceClosureEntry } from './scriptable-pack.js'; import { type ScriptablePackModuleExecutor } from './scriptable-pack-node.js'; import { type ScriptablePackSourceSnapshot } from './scriptable-pack-source-snapshot.js'; export type ScanResult = { readonly ok: true; readonly value: T; } | { readonly ok: false; readonly error: E; }; /** Host-owned source paths that should not enter the Pack catalog. */ export interface ScanOptions { readonly ignorePath?: (path: string) => boolean; readonly scriptablePack?: ScriptablePackScanOptions; } /** One bounded executor policy shared by ScriptablePack inventory and production. */ export interface ScriptablePackScanOptions { readonly sourceSnapshot?: ScriptablePackSourceSnapshot; readonly timeoutMs?: number; readonly buildTimeoutMs?: number; readonly executor?: ScriptablePackModuleExecutor; /** Path-only scans must release the isolated loader before returning. */ readonly metadataOnly?: boolean; } /** Stable default policy shared by inventory and production owners. */ export declare const STANDARD_SCRIPTABLE_PACK_SCAN_OPTIONS: Readonly<{ timeoutMs: 120000; }>; export interface InventoryDeclaration { readonly guid: string; readonly kind: string; readonly sourcePath: string; readonly sourceRevision: string; readonly sourceKey?: string; readonly sourceIndex?: number; } export interface ScanInventory { readonly paths: readonly string[]; readonly inventory: readonly InventoryDeclaration[]; /** Complete parsed source declarations captured by the validated scan pass. */ readonly declarations: ReadonlyMap; /** Validated v3 instance chains keyed by instance source path. */ readonly instances: ReadonlyMap; } export interface PackInstanceResolution { readonly packageId: PackageId; readonly sourceRevision: string; /** The ScriptablePack source that executes the instance. */ readonly root: Extract; /** Instance values merged child-over-parent along the parent chain. */ readonly values: Readonly>; } export interface ScriptablePackInventoryDeclaration { readonly sourcePath: string; readonly sourceRevision: string; readonly meta: ScriptablePackSourceMeta; readonly definition: Readonly; readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[]; } export interface MetaInventoryDocument { readonly schemaVersion: string | number; readonly kind: 'external-asset-package'; readonly packageId?: string; readonly name?: string; readonly provenance?: ProviderProvenance; readonly revision?: ResourceRevision; readonly diagnostics?: readonly CatalogDiagnostic[]; readonly importer: string; readonly source?: string; readonly importSettings: Readonly>; readonly sourceOverrides?: Readonly>>>; readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[]; readonly paramSchema?: readonly Readonly>[]; readonly subAssets: readonly MetaInventorySubAsset[]; } export interface MetaInventorySubAsset { readonly guid: string; readonly sourceIndex: number; readonly sourceKey?: string; readonly name?: string; readonly kind: string; } export interface LegacyPackInventoryDocument { readonly schemaVersion: '1.0.0' | '2.0.0'; readonly kind: 'internal-text-package'; readonly packageId?: string; readonly provenance?: ProviderProvenance; readonly revision?: ResourceRevision; readonly diagnostics?: readonly CatalogDiagnostic[]; readonly assets: readonly PackInventoryAsset[]; } /** Producer-owned legacy package, or the v3 authored source already parsed by the scanner. */ export type PackInventoryDocument = LegacyPackInventoryDocument | ParsedPackJson; export interface PackInventoryAsset { readonly guid: string; readonly kind: string; readonly name?: string; readonly execution?: 'direct' | 'cooked'; readonly sourceKey?: string; readonly sourceIndex?: number; readonly payload: Readonly>; readonly refs: readonly string[]; readonly artifacts?: Readonly>>>; } /** * Asset rows a pack.json document declares itself. A v3 instance declares none: * its ScriptablePack parent builds those outputs. */ export declare function declaredPackAssets(document: PackInventoryDocument): readonly PackInventoryAsset[]; /** * Asset GUIDs a source declaration declares before any build. A ScriptablePack * source declares none: its outputs exist only after a build generation. */ export declare function declaredSourceGuids(declaration: ScanSourceDeclaration): readonly string[]; export type ScanSourceDeclaration = { readonly format: 'meta.json'; readonly sourcePath: string; readonly sourceRevision: string; readonly value: MetaInventoryDocument; } | { readonly format: 'pack.json'; readonly sourcePath: string; readonly sourceRevision: string; readonly sourceText: string; readonly value: PackInventoryDocument; } | { readonly format: 'pack.ts'; readonly sourcePath: string; readonly sourceRevision: string; readonly value: ScriptablePackSourceMeta; readonly definition: AnyScriptablePackDefinition; readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[]; }; /** Canonical package-id text of any declaration; parsed v3 sources carry `PackageId` bytes. */ export declare function declarationPackageId(declaration: ScanSourceDeclaration | undefined): string | undefined; export type ScriptablePackSourceDeclaration = Extract; /** One v3 Pack JSON instance resolved through its parent chain to the executing source. */ export interface ResolvedPackSourceInstance { readonly sourcePath: string; readonly packageId: PackageId; readonly root: ScriptablePackSourceDeclaration; readonly values: Readonly>; } /** Executable Pack subjects of one declaration snapshot, each ordered by source path. */ export interface PackSourceSubjects { readonly sources: readonly ScriptablePackSourceDeclaration[]; readonly instances: readonly ResolvedPackSourceInstance[]; } /** * Resolve every ScriptablePack source and v3 instance in a declaration snapshot. * Parameter inheritance is validated by `resolvePackParameterInheritance`; the * first failing instance fails the snapshot. */ export declare function resolvePackSourceSubjects(declarations: ReadonlyMap): Promise>; export declare const SCANNER_BLACKLIST: ReadonlySet; /** Scan one complete Pack inventory while preserving the public path-only API. */ export declare function scan(roots: readonly string[], opts?: ScanOptions): Promise>; /** Return the validated source inventory without interpreting producer output kinds. */ export declare function scanInventory(roots: readonly string[], opts?: ScanOptions): Promise>; //# sourceMappingURL=scanner.d.ts.map