import { type SessionPointerReadResult } from './session.js'; export type PromptProducer = 'native' | 'notify'; export type PromptProvenanceRejectReason = 'payload_session_invalid' | 'owner_env_invalid' | 'payload_session_absent' | 'selected_pointer_unusable' | 'owner_env_unbound' | 'notify_fork_missing' | 'foreign_child' | 'ambiguous_child'; export type PromptOwnershipRejectReason = 'owner_conflict' | 'target_owner_mismatch' | 'target_owner_disagreement' | 'legacy_adoption_denied'; export type PromptThreadClassification = { readonly kind: 'root-or-drift'; } | { readonly kind: 'target-child'; readonly rootOwnerSessionId: string; readonly proof: 'spawn' | 'transcript' | 'tracker'; } | { readonly kind: 'foreign-child'; readonly rootOwnerSessionId: string; readonly proof: 'spawn' | 'transcript' | 'tracker'; } | { readonly kind: 'ambiguous-child'; readonly rootOwnerSessionIds: readonly string[]; } | { readonly kind: 'unknown'; }; export interface PromptMutationAuthorization { readonly targetSessionId: string; readonly ownerCodexSessionId: string; readonly allowedOwnerCodexSessionIds: readonly string[]; readonly allowedStorageSessionIds: readonly string[]; readonly targetRelation: 'explicit-independent' | 'pointer-alias' | 'pointer-fallback' | 'notify-explicit-existing-fork'; readonly thread: PromptThreadClassification; readonly legacyAdoption: 'allow' | 'deny'; readonly globalSideEffects: 'allow' | 'suppress'; } export interface PromptDiagnosticDescriptor { readonly reason: PromptProvenanceRejectReason | PromptOwnershipRejectReason; readonly producer: PromptProducer; readonly selectedRootStatus: string; readonly relation?: PromptMutationAuthorization['targetRelation']; readonly timestamp: string; } export type ResolvedPromptTurnContext = Readonly<{ status: 'authorized'; authorization: PromptMutationAuthorization; ownership: Readonly<{ status: 'compatible' | 'adoptable'; normalizedOwnerCodexSessionId: string; }>; }> | Readonly<{ status: 'suppressed-target-child'; authorization: PromptMutationAuthorization; }> | Readonly<{ status: 'rejected'; reason: PromptProvenanceRejectReason | PromptOwnershipRejectReason; diagnostic: PromptDiagnosticDescriptor; }>; export interface PromptThreadFacts { readonly spawnRootOwnerSessionId?: unknown; readonly transcriptRootOwnerSessionId?: unknown; readonly trackerRootOwnerSessionIds?: readonly unknown[]; /** A current-target anchor takes precedence over stale tracker evidence. */ readonly currentTargetAnchored?: boolean; /** Factual raw-thread relation when no trusted child proof exists. */ readonly rootOrDrift?: boolean; } export interface EvaluateResolvedPromptTurnInput { readonly producer: PromptProducer; /** Raw payload P; presence is validated even when malformed. */ readonly payloadSessionId?: unknown; /** Raw E; presence is validated even when malformed. */ readonly ownerEnvSessionId?: unknown; readonly selectedPointer: Pick; /** Neutral, validated `sessions/E` stat fact supplied only by notify. */ readonly forkScopeExists?: boolean; readonly threadFacts?: PromptThreadFacts; readonly nowIso?: string; } export interface SelectedTargetOwnerEvidence { readonly ownerCodexSessionId?: unknown; readonly targetSessionId?: unknown; } export declare function extractSelectedTargetOwnerEvidence(value: unknown): readonly SelectedTargetOwnerEvidence[]; export declare function classifyPromptThread(facts: PromptThreadFacts | undefined, ownerIds: readonly string[]): PromptThreadClassification; /** * The sole provenance policy evaluator. It is pure: callers supply selected-root * facts and may call this once before any ownership-sensitive read or effect. */ export declare function evaluateResolvedPromptTurn(input: EvaluateResolvedPromptTurnInput): ResolvedPromptTurnContext; /** Read-only selected-target owner preflight; no path discovery or mutation. */ export declare function preflightSelectedTargetOwner(context: ResolvedPromptTurnContext, evidence: readonly SelectedTargetOwnerEvidence[], producer?: PromptProducer, nowIso?: string): ResolvedPromptTurnContext; //# sourceMappingURL=prompt-session-provenance.d.ts.map