import type { ModelPath, ModelWriteRoot } from "./types"; /** Exhaustive model-facing sandbox outcome. */ export type SandboxOutcome = { kind: 'not-found'; path: string; } | { kind: 'denied-by-policy'; path: string; axis: 'read' | 'write'; } | { kind: 'gate-declined'; note?: string; } | { kind: 'gate-unavailable'; reason: 'timeout' | 'error'; } | { kind: 'over-budget'; bound: 'maxTerminalPayloadBytes'; observedAtLeast: number; limit: number; } | { kind: 'scope-limited'; shown: number; atDepth: number; bound: 'maxDepth'; } | { kind: 'result-limited'; shown: number; limit: number; bound: 'limit'; } | { kind: 'not-a-regular-file'; path: string; kind_: string; } | { kind: 'is-a-directory'; path: string; } | { kind: 'path-rejected'; input: string; reason: 'escape' | 'absolute-host' | 'home' | 'unc' | 'device' | 'nul'; } /** Model-facing root, conventionally `/`; NEVER the configured absolute host path. */ | { kind: 'outside-write-root'; path: ModelPath; writeRoot: ModelWriteRoot; } | { kind: 'sandbox-violation'; violations: readonly string[]; exitCode: number; } | { kind: 'nonzero-exit'; exitCode: number; } | { kind: 'no-matches'; pattern: string; scope: string; } | { kind: 'unknown-media'; mediaId: string; } | { kind: 'invalid-pattern'; pattern: string; detail: string; } | { kind: 'not-a-directory'; path: string; } | { kind: 'io-failure'; path?: string; detail: string; } | { kind: 'aborted'; } | { kind: 'timed-out'; bound: 'timeout_seconds'; limitSeconds: number; }; /** Model-facing narration seam; implementations must be total over {@link SandboxOutcome}. */ export type SandboxNarrator = (outcome: SandboxOutcome) => string; /** Existence-blind default narrator; not-found and denied-by-policy intentionally share wording. */ export declare const defaultSandboxNarrator: SandboxNarrator;