import type { AppEnvironmentId } from '../environments'; import type { INFRA_ADAPTER_CATALOG } from '../infra/constants'; import type { InfraDestroyRequest, InfraGeneratedArtifact, InfraLedger, InfraOutput, InfraOwnedResource, InfraPlanAction, InfraResourceStatus, InfraResult } from './infraLifecycle'; import type { InfraAdapterId, InfraComputeProviderId, InfraComputeSelection, InfraEnvironmentSpec, InfraRuntimeProviderId, InfraRuntimeSelection } from './infraManifest'; import type { InfraControlPlaneCredentialRef, InfraSecretReference } from './infraSecrets'; import type { InfraComputeTarget } from './infraTargets'; import type { InfraWorkloadSpec } from './infraWorkload'; /** Package exports must match this exact catalog entry; optional operations are advertised explicitly. */ export type InfraAdapterDescriptor

= { [K in P]: (typeof INFRA_ADAPTER_CATALOG)[K] & { readonly operations?: readonly ('suspend' | 'resume' | 'generate' | 'diagnostics')[]; }; }[P]; /** Trusted execution-only control-plane credential lookup, resolution and persistence. */ export interface InfraCredentialPort { /** Return a credential bundle when present; absence is not an error. */ findAsync(reference: InfraControlPlaneCredentialRef): Promise> | null>>; /** Resolve a required credential bundle; absence is an error. */ resolveAsync(reference: InfraControlPlaneCredentialRef): Promise>>>; /** Persist an opaque provider-owned credential bundle without exposing its schema to the host. */ persistAsync(reference: InfraControlPlaneCredentialRef, values: Readonly>): Promise>; } /** Trusted execution-only ports. Implementations must not serialize resolved credential values. */ export interface InfraExecutionContext { readonly projectId: string; readonly environment: AppEnvironmentId; readonly desired: InfraEnvironmentSpec; readonly previous?: InfraLedger; readonly signal?: AbortSignal; readonly credentials: InfraCredentialPort; readonly secrets: { resolveAsync(reference: InfraSecretReference): Promise>; }; } export interface InfraReconcileResult { readonly resources: readonly InfraOwnedResource[]; readonly outputs: readonly InfraOutput[]; } /** Current portable compute state resolved without creating, updating or deleting resources. */ export interface InfraComputeSnapshot extends InfraReconcileResult { readonly targets: readonly InfraComputeTarget[]; } export interface InfraComputeAdapter

{ readonly descriptor: InfraAdapterDescriptor

; /** Read-only prerequisites, config and control-plane credential validation. */ validateAsync(context: InfraExecutionContext, selection: InfraComputeSelection

): Promise>; /** Read-only discovery for planning and stateless runtime projection. Missing compute is empty. */ inspectAsync(context: InfraExecutionContext, selection: InfraComputeSelection

): Promise>; planAsync(context: InfraExecutionContext, selection: InfraComputeSelection

): Promise>; ensureAsync(context: InfraExecutionContext, selection: InfraComputeSelection

): Promise>; statusAsync(context: InfraExecutionContext): Promise>; destroyAsync(context: InfraExecutionContext, request: InfraDestroyRequest): Promise>; } export interface InfraRuntimeDesiredState

{ readonly selection: InfraRuntimeSelection

; readonly targets: readonly InfraComputeTarget[]; readonly workloads: readonly InfraWorkloadSpec[]; /** Previously resolved outputs available to portable workload value references. */ readonly availableOutputs: readonly InfraOutput[]; } export interface InfraRuntimeAdapter

{ readonly descriptor: InfraAdapterDescriptor

; /** Read-only prerequisites and desired-state validation; no cluster creation. */ validateAsync(context: InfraExecutionContext, desired: InfraRuntimeDesiredState

): Promise>; planAsync(context: InfraExecutionContext, desired: InfraRuntimeDesiredState

): Promise>; ensureAsync(context: InfraExecutionContext, desired: InfraRuntimeDesiredState

): Promise>; statusAsync(context: InfraExecutionContext, desired: InfraRuntimeDesiredState

): Promise>; suspendAsync(context: InfraExecutionContext, desired: InfraRuntimeDesiredState

): Promise>; destroyAsync(context: InfraExecutionContext, desired: InfraRuntimeDesiredState

, request: InfraDestroyRequest): Promise>; generateAsync?(context: InfraExecutionContext, desired: InfraRuntimeDesiredState

): Promise>; } /** A service can own several capabilities but contributes one deduplicated platform instance. */ export interface InfraServiceAdapter { readonly descriptor: InfraAdapterDescriptor<'supabase' | 'cerbos' | 'r2' | 'supabase-vault'>; /** Read-only service config, bootstrap credentials and dependency validation. */ validateAsync(context: InfraExecutionContext): Promise>; planAsync(context: InfraExecutionContext): Promise>; /** Mutating pre-runtime preparation invoked only by an orchestrated `up` operation. */ prepareAsync?(context: InfraExecutionContext): Promise>; desiredWorkloadsAsync(context: InfraExecutionContext): Promise>; reconcileAsync(context: InfraExecutionContext, runtimeOutputs: readonly InfraOutput[]): Promise>; statusAsync(context: InfraExecutionContext): Promise>; destroyAsync(context: InfraExecutionContext, request: InfraDestroyRequest): Promise>; suspendAsync?(context: InfraExecutionContext): Promise>; } //# sourceMappingURL=infraAdapters.d.ts.map