import type { ClaudeEffort, ClaudeTerminalProviderOptions, CodexPermissionControl, CodexReasoningEffort, CopilotEffort, DeepSeekReasoningEffort, OpenCodeGuardProfile, WorkflowStep, StepProviderOptions } from '../../core/models/workflow-types.js'; import type { PersonaProviderEntry, ProviderRoutingConfig } from '../../core/models/config-types.js'; import type { ProviderOptionsOriginResolver, ProviderOptionsSource, ProviderOptionsTraceOrigin, ProviderResolutionSource } from '../../core/workflow/provider-options-trace.js'; import type { ProviderType } from '../../shared/types/provider.js'; type RawProviderGuardOptions = { call_timeout_ms?: number; }; type RawProviderOptions = { extends?: string; codex?: { base_url?: string; network_access?: boolean; permission_control?: CodexPermissionControl; config_profile?: string; reasoning_effort?: CodexReasoningEffort; fast_mode?: boolean; guards?: RawProviderGuardOptions; skills?: { repo?: boolean; user?: boolean; }; }; opencode?: { network_access?: boolean; variant?: string; allowed_tools?: string[]; guards?: { profile?: OpenCodeGuardProfile; model_profiles?: Record; call_timeout_ms?: number; event_limit?: number; text_byte_limit?: number; reasoning_byte_limit?: number; }; }; claude?: { base_url?: string; allowed_tools?: string[]; effort?: ClaudeEffort; guards?: RawProviderGuardOptions; skills?: { enabled?: boolean; }; sandbox?: { allow_unsandboxed_commands?: boolean; excluded_commands?: string[]; }; }; claude_terminal?: { backend?: ClaudeTerminalProviderOptions['backend']; guards?: RawProviderGuardOptions; timeout_ms?: number; keep_session?: boolean; transcript_poll_interval_ms?: number; }; copilot?: { effort?: CopilotEffort; guards?: RawProviderGuardOptions; }; kiro?: { agent?: string; guards?: RawProviderGuardOptions; }; cursor?: { guards?: RawProviderGuardOptions; }; deepseek_harness?: { base_url?: string; max_tokens?: number; request_timeout_ms?: number; shutdown_timeout_ms?: number; runtime_mode?: 'exe' | 'node'; reasoning_effort?: DeepSeekReasoningEffort; }; pi?: { guards?: RawProviderGuardOptions; extensions?: string[]; thinking_level?: string; no_extensions?: boolean; no_skills?: boolean; no_prompt_templates?: boolean; no_themes?: boolean; no_context_files?: boolean; }; }; type ProviderBaseUrlTrust = 'trusted' | 'loopback-only' | 'local-loopback-only'; export interface NormalizeProviderOptionsOptions { baseUrlTrust?: ProviderBaseUrlTrust; pathPrefix?: string; getOrigin?: (path: string) => ProviderOptionsTraceOrigin; allowDeepSeekHarnessReasoningEffort?: boolean; } export interface ProviderOptionsLayer { source: ProviderResolutionSource; options: StepProviderOptions | undefined; } /** Merge ordered source layers with the shared provider-option precedence contract. */ export declare function mergeProviderOptionLayers(layers: readonly ProviderOptionsLayer[]): StepProviderOptions | undefined; interface StepProviderOptionsLayerContext { providerRouting: ProviderRoutingConfig | undefined; personaProviders: Record | undefined; } export declare function assertAllowedNormalizedProviderBaseUrls(providerOptions: StepProviderOptions | undefined, options?: NormalizeProviderOptionsOptions): void; /** Convert raw YAML provider_options (snake_case) to internal format (camelCase). */ export declare function normalizeProviderOptions(raw: RawProviderOptions | Record | undefined, normalizationOptions?: NormalizeProviderOptionsOptions): StepProviderOptions | undefined; /** Deep merge provider options. Later sources override earlier ones. */ export declare function mergeProviderOptions(...layers: (StepProviderOptions | undefined)[]): StepProviderOptions | undefined; export declare function resolveProviderOptionOrigin(resolver: ProviderOptionsOriginResolver | undefined, path: string, fallbackSource: ProviderOptionsSource | undefined): ProviderOptionsTraceOrigin; export declare function selectEnvironmentProviderOptions(providerOptions: StepProviderOptions | undefined, originResolver: ProviderOptionsOriginResolver, allowedRoots: readonly (keyof StepProviderOptions)[]): StepProviderOptions | undefined; export declare function resolvePersonaProviderOptions(personaProviders: Record | undefined, personaDisplayName: string | undefined): StepProviderOptions | undefined; export declare function resolveDirectStepProviderOptions(step: WorkflowStep): StepProviderOptions | undefined; export declare function resolveStepCapabilityProviderOptions(step: WorkflowStep): StepProviderOptions | undefined; export declare function resolveStepProviderOptionsLayers(step: WorkflowStep, context: StepProviderOptionsLayerContext): ProviderOptionsLayer[]; export declare function mergeStepProviderOptionsLayers(step: WorkflowStep, context: StepProviderOptionsLayerContext): StepProviderOptions | undefined; /** * Runtime profile options are identity-scoped: only the profile that supplied the winning * provider contributes options. Legacy configuration keeps its historical layered merge. */ export declare function resolveProfileScopedProviderOptionsLayers(step: WorkflowStep, context: StepProviderOptionsLayerContext, resolvedProviderSource: ProviderResolutionSource | undefined, profileScoped: boolean): ProviderOptionsLayer[]; /** Combine the provider-option union; Codex-only constraints need a resolved Codex provider. */ export declare function resolveEffectiveProviderOptions(source: ProviderOptionsSource | undefined, originResolver: ProviderOptionsOriginResolver | undefined, resolvedConfigOptions: StepProviderOptions | undefined, stepOptions: StepProviderOptions | undefined, personaOptions?: StepProviderOptions, resolvedProvider?: ProviderType): StepProviderOptions | undefined; export declare function resolveEffectiveTeamLeaderPartProviderOptions(source: ProviderOptionsSource | undefined, originResolver: ProviderOptionsOriginResolver | undefined, resolvedConfigOptions: StepProviderOptions | undefined, stepOptions: StepProviderOptions | undefined, resolvedProvider: ProviderType | undefined, partAllowedTools: string[] | undefined, personaOptions?: StepProviderOptions): StepProviderOptions | undefined; /** All paths we expose for per-option source attribution. */ export declare const PROVIDER_OPTION_PATHS: readonly ["claude.baseUrl", "claude.effort", "claude.allowedTools", "claude.sandbox.allowUnsandboxedCommands", "claude.sandbox.excludedCommands", "claude.skills.enabled", "claude.guards.callTimeoutMs", "codex.baseUrl", "codex.fastMode", "codex.networkAccess", "codex.permissionControl", "codex.configProfile", "codex.reasoningEffort", "codex.guards.callTimeoutMs", "codex.skills.repo", "codex.skills.user", "opencode.networkAccess", "opencode.variant", "opencode.allowedTools", "opencode.guards.profile", "opencode.guards.modelProfiles", "opencode.guards.callTimeoutMs", "opencode.guards.eventLimit", "opencode.guards.textByteLimit", "opencode.guards.reasoningByteLimit", "copilot.effort", "copilot.guards.callTimeoutMs", "kiro.agent", "kiro.guards.callTimeoutMs", "cursor.guards.callTimeoutMs", "deepseekHarness.baseUrl", "deepseekHarness.maxTokens", "deepseekHarness.requestTimeoutMs", "deepseekHarness.shutdownTimeoutMs", "deepseekHarness.runtimeMode", "deepseekHarness.reasoningEffort", "pi.extensions", "pi.thinkingLevel", "pi.guards.callTimeoutMs", "pi.noExtensions", "pi.noSkills", "pi.noPromptTemplates", "pi.noThemes", "pi.noContextFiles", "claudeTerminal.backend", "claudeTerminal.guards.callTimeoutMs", "claudeTerminal.timeoutMs", "claudeTerminal.keepSession", "claudeTerminal.transcriptPollIntervalMs"]; export type ProviderOptionPath = (typeof PROVIDER_OPTION_PATHS)[number]; export declare function isFilePreferredProviderOptionPath(path: string): boolean; /** * Resolve the source layer of a single provider_options path. */ export declare function resolveProviderOptionSource(path: string, stepOptions: StepProviderOptions | undefined, layers: ProviderOptionsLayer[], configOptions: StepProviderOptions | undefined, originResolver: ProviderOptionsOriginResolver | undefined, configSource: ProviderOptionsSource | undefined): ProviderResolutionSource | undefined; /** Compute source per known provider_options path. Returns only paths with values. */ export declare function resolveProviderOptionsSources(stepOptions: StepProviderOptions | undefined, layers: ProviderOptionsLayer[], configOptions: StepProviderOptions | undefined, originResolver: ProviderOptionsOriginResolver | undefined, configSource: ProviderOptionsSource | undefined): Record; export {}; //# sourceMappingURL=providerOptions.d.ts.map