import type { MonoAgentConfigJson } from "./json-source.js"; import type { RedactedMonoAgentConfig } from "./types.js"; /** * Where a resolved config value came from. Mirrors the loader's precedence: * a real `MONO_AGENT_*` env var wins, then the JSON config file, else the * built-in default. */ export type ConfigViewFieldSource = "env" | "json" | "default"; /** * Section-level lifecycle, aligned with the doctor's vocabulary. Optional * blocks (memory, sandbox, observability, local providers) report `disabled` * when absent and `active` when configured. The core view never emits * `waiting` — that is reserved for channel sections the app composes on top. */ export type ConfigViewSectionStatus = "active" | "disabled"; export interface ConfigViewField { /** Stable id, e.g. `runtime.model`. Matches the key in {@link CONFIG_ENV_KEYS}. */ readonly id: string; readonly label: string; /** Already-redacted, display-ready value (never a raw secret). */ readonly value: string; readonly source: ConfigViewFieldSource; /** True when a JSON-sourced value only restates the built-in default. */ readonly restatesDefault?: boolean; /** True when the underlying value is a secret that has been redacted. */ readonly redacted?: boolean; /** * Env var for fields outside {@link CONFIG_ENV_KEYS} (channel sections the * app composes on top of the core view). Core fields omit it and resolve * through the registry instead. */ readonly envKey?: string; } export interface ConfigViewSection { readonly id: string; readonly label: string; readonly status: ConfigViewSectionStatus; readonly fields: readonly ConfigViewField[]; } export interface BuildMonoAgentConfigViewInput { readonly redacted: RedactedMonoAgentConfig; readonly json: MonoAgentConfigJson; readonly env: Record; } /** * The single env-key registry for every core config field, keyed by the stable * field id used in {@link ConfigViewField}. This is the authoritative map the * view resolves `source` against, and the surface the parity test checks * against the loader so the view can never silently drift from what the loader * actually reads. Complex sections (local providers) expose only their * registry env var here; their single-provider `MONO_AGENT_LOCAL_PROVIDER_*` * input form is an alternate encoding the parity test allowlists. */ export declare const CONFIG_ENV_KEYS: { readonly "agent.name": "MONO_AGENT_NAME"; readonly "runtime.model": "MONO_AGENT_MODEL"; readonly "runtime.fallbackModels": "MONO_AGENT_FALLBACK_MODELS"; readonly "runtime.fallbacks": "MONO_AGENT_FALLBACKS_JSON"; readonly subagents: "MONO_AGENT_SUBAGENTS_JSON"; readonly "runtime.retry.primaryAttempts": "MONO_AGENT_RETRY_PRIMARY_ATTEMPTS"; readonly "runtime.retry.backoffMs": "MONO_AGENT_RETRY_BACKOFF_MS"; readonly "runtime.retry.maxBackoffMs": "MONO_AGENT_RETRY_MAX_BACKOFF_MS"; readonly "runtime.routeSafety": "MONO_AGENT_ROUTE_SAFETY"; readonly "runtime.executionMode": "MONO_AGENT_EXECUTION_MODE"; readonly "runtime.effort": "MONO_AGENT_EFFORT"; readonly "runtime.permissionMode": "MONO_AGENT_PERMISSION_MODE"; readonly "runtime.maxTurns": "MONO_AGENT_MAX_TURNS"; readonly "runtime.compaction.enabled": "MONO_AGENT_COMPACTION_ENABLED"; readonly "runtime.compaction.triggerRatio": "MONO_AGENT_COMPACTION_TRIGGER_RATIO"; readonly "runtime.compaction.keepRecentTokens": "MONO_AGENT_COMPACTION_KEEP_RECENT_TOKENS"; readonly "runtime.compaction.summaryMaxTokens": "MONO_AGENT_COMPACTION_SUMMARY_MAX_TOKENS"; readonly "runtime.compaction.minSavingsTokens": "MONO_AGENT_COMPACTION_MIN_SAVINGS_TOKENS"; readonly "runtime.compaction.fixedOverheadEnabled": "MONO_AGENT_COMPACTION_FIXED_OVERHEAD_ENABLED"; readonly "runtime.compaction.contextWindowOverride": "MONO_AGENT_COMPACTION_CONTEXT_WINDOW_OVERRIDE"; readonly "runtime.workspace": "MONO_AGENT_WORKSPACE"; readonly "runtime.session.mode": "MONO_AGENT_SESSION_MODE"; readonly "runtime.session.idleTimeoutMs": "MONO_AGENT_SESSION_IDLE_TIMEOUT_MS"; readonly "runtime.session.rollover": "MONO_AGENT_SESSION_ROLLOVER"; readonly "runtime.session.rolloverTimezone": "MONO_AGENT_SESSION_ROLLOVER_TIMEZONE"; readonly "runtime.session.rolloverNotice": "MONO_AGENT_SESSION_ROLLOVER_NOTICE"; readonly "runtime.session.isolateProactive": "MONO_AGENT_SESSION_ISOLATE_PROACTIVE"; readonly "concurrency.maxConcurrentRuns": "MONO_AGENT_CONCURRENCY_MAX_CONCURRENT_RUNS"; readonly "concurrency.maxPendingRuns": "MONO_AGENT_CONCURRENCY_MAX_PENDING_RUNS"; readonly "context.identityPath": "MONO_AGENT_IDENTITY_PATH"; readonly "context.soulPath": "MONO_AGENT_SOUL_PATH"; readonly "context.skillsRoot": "MONO_AGENT_SKILLS_ROOT"; readonly "context.selectedSkills": "MONO_AGENT_SELECTED_SKILLS"; readonly "context.skillMaxBytes": "MONO_AGENT_SKILL_MAX_BYTES"; readonly "context.skillDisclosure": "MONO_AGENT_SKILL_DISCLOSURE"; readonly "memory.backend": "MONO_AGENT_MEMORY_BACKEND"; readonly "memory.mode": "MONO_AGENT_MEMORY_MODE"; readonly "memory.path": "MONO_AGENT_MEMORY_PATH"; readonly "memory.maxBytes": "MONO_AGENT_MEMORY_MAX_BYTES"; readonly "memory.writeMode": "MONO_AGENT_MEMORY_WRITE_MODE"; readonly "memory.supermemory.baseUrl": "MONO_AGENT_MEMORY_SUPERMEMORY_BASE_URL"; readonly "memory.supermemory.apiKey": "MONO_AGENT_MEMORY_SUPERMEMORY_API_KEY"; readonly "memory.supermemory.apiKeyEnv": "MONO_AGENT_MEMORY_SUPERMEMORY_API_KEY_ENV"; readonly "memory.supermemory.container": "MONO_AGENT_MEMORY_SUPERMEMORY_CONTAINER"; readonly "memory.supermemory.timeoutMs": "MONO_AGENT_MEMORY_SUPERMEMORY_TIMEOUT_MS"; readonly "memory.supermemory.exposeMcpServer": "MONO_AGENT_MEMORY_SUPERMEMORY_EXPOSE_MCP_SERVER"; readonly "memory.embeddings.provider": "MONO_AGENT_MEMORY_EMBEDDINGS_PROVIDER"; readonly "memory.embeddings.model": "MONO_AGENT_MEMORY_EMBEDDINGS_MODEL"; readonly "memory.embeddings.endpoint": "MONO_AGENT_MEMORY_EMBEDDINGS_ENDPOINT"; readonly "memory.embeddings.apiKey": "MONO_AGENT_MEMORY_EMBEDDINGS_API_KEY"; readonly "memory.embeddings.apiKeyEnv": "MONO_AGENT_MEMORY_EMBEDDINGS_API_KEY_ENV"; readonly "memory.embeddings.dim": "MONO_AGENT_MEMORY_EMBEDDINGS_DIM"; readonly "memory.embeddings.timeoutMs": "MONO_AGENT_MEMORY_EMBEDDINGS_TIMEOUT_MS"; readonly "memory.embeddings.circuitBreaker.failureThreshold": "MONO_AGENT_MEMORY_EMBEDDINGS_CIRCUIT_BREAKER_FAILURE_THRESHOLD"; readonly "memory.embeddings.circuitBreaker.cooldownMs": "MONO_AGENT_MEMORY_EMBEDDINGS_CIRCUIT_BREAKER_COOLDOWN_MS"; readonly "memory.llm.provider": "MONO_AGENT_MEMORY_LLM_PROVIDER"; readonly "memory.llm.model": "MONO_AGENT_MEMORY_LLM_MODEL"; readonly "memory.llm.executionMode": "MONO_AGENT_MEMORY_LLM_EXECUTION_MODE"; readonly "memory.llm.trace": "MONO_AGENT_MEMORY_LLM_TRACE"; readonly "memory.llm.timeoutMs": "MONO_AGENT_MEMORY_LLM_TIMEOUT_MS"; readonly "memory.llm.endpoint": "MONO_AGENT_MEMORY_LLM_ENDPOINT"; readonly "memory.recallTool.enabled": "MONO_AGENT_MEMORY_RECALL_TOOL_ENABLED"; readonly "memory.consolidation.enabled": "MONO_AGENT_MEMORY_CONSOLIDATION_ENABLED"; readonly "memory.consolidation.cron": "MONO_AGENT_MEMORY_CONSOLIDATION_CRON"; readonly "tools.allowedTools": "MONO_AGENT_ALLOWED_TOOLS"; readonly "tools.disallowedTools": "MONO_AGENT_DISALLOWED_TOOLS"; readonly "tools.mcpConfigPath": "MONO_AGENT_MCP_CONFIG_PATH"; readonly "tools.mcpRequestContextServers": "MONO_AGENT_MCP_REQUEST_CONTEXT_SERVERS"; readonly "tools.continuationServers": "MONO_AGENT_CONTINUATION_SERVERS"; readonly "tools.mcpCallTimeoutMs": "MONO_AGENT_MCP_CALL_TIMEOUT_MS"; readonly "tools.mcpCallMaxTotalTimeoutMs": "MONO_AGENT_MCP_CALL_MAX_TOTAL_TIMEOUT_MS"; readonly "tools.web.search.backend": "MONO_AGENT_WEB_SEARCH_BACKEND"; readonly "tools.web.search.endpoint": "MONO_AGENT_WEB_SEARCH_ENDPOINT"; readonly "tools.web.search.codex.model": "MONO_AGENT_WEB_SEARCH_CODEX_MODEL"; readonly "tools.web.fetch.render": "MONO_AGENT_WEB_FETCH_RENDER"; readonly "tools.web.fetch.browserCommand": "MONO_AGENT_WEB_BROWSER_COMMAND"; readonly "sandbox.mode": "MONO_AGENT_SANDBOX_MODE"; readonly "sandbox.network.mode": "MONO_AGENT_SANDBOX_NETWORK"; readonly "sandbox.network.allowlist": "MONO_AGENT_SANDBOX_NETWORK_ALLOWLIST"; readonly "sandbox.readableRoots": "MONO_AGENT_SANDBOX_READABLE_ROOTS"; readonly "sandbox.writableRoots": "MONO_AGENT_SANDBOX_WRITABLE_ROOTS"; readonly "sandbox.denyWrite": "MONO_AGENT_SANDBOX_DENY_WRITE"; readonly "sandbox.fallback": "MONO_AGENT_SANDBOX_FALLBACK"; readonly "sandbox.unsafeAllowHostProcess": "MONO_AGENT_SANDBOX_UNSAFE_ALLOW_HOST_PROCESS"; readonly "artifacts.dir": "MONO_AGENT_ARTIFACT_DIR"; readonly "artifacts.retention.maxAgeDays": "MONO_AGENT_ARTIFACT_RETENTION_MAX_AGE_DAYS"; readonly "artifacts.retention.maxCount": "MONO_AGENT_ARTIFACT_RETENTION_MAX_COUNT"; readonly "artifacts.retention.dryRun": "MONO_AGENT_ARTIFACT_RETENTION_DRY_RUN"; readonly "artifacts.memoryRetention.maxAgeDays": "MONO_AGENT_ARTIFACT_MEMORY_RETENTION_MAX_AGE_DAYS"; readonly "artifacts.memoryRetention.maxCount": "MONO_AGENT_ARTIFACT_MEMORY_RETENTION_MAX_COUNT"; readonly "artifacts.memoryRetention.dryRun": "MONO_AGENT_ARTIFACT_MEMORY_RETENTION_DRY_RUN"; readonly "traceability.registryDir": "MONO_AGENT_TRACE_REGISTRY_DIR"; readonly "traceability.sourceId": "MONO_AGENT_TRACE_SOURCE_ID"; readonly "traceability.sourceLabel": "MONO_AGENT_TRACE_SOURCE_LABEL"; readonly "traceability.heartbeatMs": "MONO_AGENT_TRACE_HEARTBEAT_MS"; readonly "traceability.staleAfterMs": "MONO_AGENT_TRACE_STALE_AFTER_MS"; readonly "traceability.globalDiscovery": "MONO_AGENT_TRACE_GLOBAL_DISCOVERY"; readonly "observability.exporters": "MONO_AGENT_OBSERVABILITY_EXPORTERS"; readonly "providers.piAuthPath": "MONO_AGENT_PI_AUTH_PATH"; readonly "providers.piNative.transport": "MONO_AGENT_PI_TRANSPORT"; readonly "providers.piNative.piMaxRetries": "MONO_AGENT_PI_MAX_RETRIES"; readonly "providers.piNative.maxRetryDelayMs": "MONO_AGENT_MAX_RETRY_DELAY_MS"; readonly "providers.piNative.piSessionsRoot": "MONO_AGENT_PI_SESSIONS_ROOT"; readonly "providers.local": "MONO_AGENT_LOCAL_PROVIDERS_JSON"; }; export type ConfigViewFieldId = keyof typeof CONFIG_ENV_KEYS; export declare function sameJsonValue(left: unknown, right: unknown): boolean; /** * Build the single, complete, source-annotated view of a resolved * `MonoAgentConfig`. Every core section and field is represented exactly once, * including the `observability.exporters` and `providers.local` blocks that the * retired field-group registry omitted. Drives both the read-only TUI config * pane and the `mono-agent config` CLI command, so the two surfaces can never * disagree about what the loader produced. */ export declare function buildMonoAgentConfigView(input: BuildMonoAgentConfigViewInput): readonly ConfigViewSection[]; /** * Find advisory warnings for secret-marked fields whose resolved source is the * committed JSON config. The warning uses only stable field ids and env-var * names, never the secret value itself. */ export declare function findJsonSecretConfigWarnings(sections: readonly ConfigViewSection[]): readonly string[]; export interface RemovedConfigWarningsInput { readonly json: MonoAgentConfigJson; readonly env: Record; } /** * Find advisory warnings for removed config keys that are tolerated but ignored. * Warnings mention only stable JSON paths and env var names, never values. */ export declare function findRemovedConfigWarnings(input: RemovedConfigWarningsInput): readonly string[]; //# sourceMappingURL=config-view.d.ts.map