Created
May 27, 2026 12:33
-
-
Save pabloogc/0bc078a23b9a27c598c0edd33e4ed386 to your computer and use it in GitHub Desktop.
Openclaw Schema
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "$schema": "http://json-schema.org/draft-07/schema#", | |
| "type": "object", | |
| "properties": { | |
| "$schema": { | |
| "type": "string" | |
| }, | |
| "meta": { | |
| "type": "object", | |
| "properties": { | |
| "lastTouchedVersion": { | |
| "type": "string", | |
| "title": "Config Last Touched Version", | |
| "description": "Auto-set when OpenClaw writes the config." | |
| }, | |
| "lastTouchedAt": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| {} | |
| ], | |
| "title": "Config Last Touched At", | |
| "description": "ISO timestamp of the last config write (auto-set)." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Metadata", | |
| "description": "Metadata fields automatically maintained by OpenClaw to record write/version history for this config file. Keep these values system-managed and avoid manual edits unless debugging migration history." | |
| }, | |
| "env": { | |
| "type": "object", | |
| "properties": { | |
| "shellEnv": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Shell Environment Import Enabled", | |
| "description": "Enables loading environment variables from the user shell profile during startup initialization. Keep enabled for developer machines, or disable in locked-down service environments with explicit env management." | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Shell Environment Import Timeout (ms)", | |
| "description": "Maximum time in milliseconds allowed for shell environment resolution before fallback behavior applies. Use tighter timeouts for faster startup, or increase when shell initialization is heavy." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Shell Environment Import", | |
| "description": "Shell environment import controls for loading variables from your login shell during startup. Keep this enabled when you depend on profile-defined secrets or PATH customizations." | |
| }, | |
| "vars": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| }, | |
| "title": "Environment Variable Overrides", | |
| "description": "Explicit key/value environment variable overrides merged into runtime process environment for OpenClaw. Use this for deterministic env configuration instead of relying only on shell profile side effects." | |
| } | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| }, | |
| "title": "Environment", | |
| "description": "Environment import and override settings used to supply runtime variables to the gateway process. Use this section to control shell-env loading and explicit variable injection behavior." | |
| }, | |
| "wizard": { | |
| "type": "object", | |
| "properties": { | |
| "lastRunAt": { | |
| "type": "string", | |
| "title": "Wizard Last Run Timestamp", | |
| "description": "ISO timestamp for when the setup wizard most recently completed on this host. Use this to confirm setup recency during support and operational audits." | |
| }, | |
| "lastRunVersion": { | |
| "type": "string", | |
| "title": "Wizard Last Run Version", | |
| "description": "OpenClaw version recorded at the time of the most recent wizard run on this config. Use this when diagnosing behavior differences across version-to-version setup changes." | |
| }, | |
| "lastRunCommit": { | |
| "type": "string", | |
| "title": "Wizard Last Run Commit", | |
| "description": "Source commit identifier recorded for the last wizard execution in development builds. Use this to correlate setup behavior with exact source state during debugging." | |
| }, | |
| "lastRunCommand": { | |
| "type": "string", | |
| "title": "Wizard Last Run Command", | |
| "description": "Command invocation recorded for the latest wizard run to preserve execution context. Use this to reproduce setup steps when verifying setup regressions." | |
| }, | |
| "lastRunMode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "local" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "remote" | |
| } | |
| ], | |
| "title": "Wizard Last Run Mode", | |
| "description": "Wizard execution mode recorded as \"local\" or \"remote\" for the most recent setup flow. Use this to understand whether setup targeted direct local runtime or remote gateway topology." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Setup Wizard State", | |
| "description": "Setup wizard state tracking fields that record the most recent guided setup run details. Keep these fields for observability and troubleshooting of setup flows across upgrades." | |
| }, | |
| "diagnostics": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Diagnostics Enabled", | |
| "description": "Master toggle for diagnostics instrumentation output in logs and telemetry wiring paths. Defaults to enabled; set false only in tightly constrained environments." | |
| }, | |
| "flags": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Diagnostics Flags", | |
| "description": "Enable targeted diagnostics logs by flag (e.g. [\"telegram.http\"]). Supports wildcards like \"telegram.*\" or \"*\"." | |
| }, | |
| "stuckSessionWarnMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Session Liveness Threshold (ms)", | |
| "description": "No-progress age threshold in milliseconds for classifying long processing sessions as long-running, stalled, or stuck. Reply, tool, status, block, and ACP progress reset the timer; repeated stuck diagnostics back off while unchanged." | |
| }, | |
| "stuckSessionAbortMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Session Abort Threshold (ms)", | |
| "description": "No-progress age threshold in milliseconds before eligible stalled active work may be abort-drained for recovery. Defaults to the safer extended embedded-run recovery window." | |
| }, | |
| "memoryPressureSnapshot": { | |
| "type": "boolean", | |
| "title": "Memory Pressure Snapshot Enabled", | |
| "description": "Whether critical memory pressure automatically captures a redacted stability snapshot. Default: false. Enable only when this host can tolerate the extra file-system scan and snapshot write during critical memory pressure." | |
| }, | |
| "otel": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Enabled", | |
| "description": "Enables OpenTelemetry export pipeline for traces, metrics, and logs based on configured endpoint/protocol settings. Keep disabled unless your collector endpoint and auth are fully configured." | |
| }, | |
| "endpoint": { | |
| "type": "string", | |
| "title": "OpenTelemetry Endpoint", | |
| "description": "Collector endpoint URL used for OpenTelemetry export transport, including scheme and port. Use a reachable, trusted collector endpoint and monitor ingestion errors after rollout." | |
| }, | |
| "tracesEndpoint": { | |
| "type": "string", | |
| "title": "OpenTelemetry Traces Endpoint", | |
| "description": "Signal-specific OTLP/HTTP trace endpoint. When set, this overrides diagnostics.otel.endpoint and OTEL_EXPORTER_OTLP_ENDPOINT for trace export only." | |
| }, | |
| "metricsEndpoint": { | |
| "type": "string", | |
| "title": "OpenTelemetry Metrics Endpoint", | |
| "description": "Signal-specific OTLP/HTTP metrics endpoint. When set, this overrides diagnostics.otel.endpoint and OTEL_EXPORTER_OTLP_ENDPOINT for metrics export only." | |
| }, | |
| "logsEndpoint": { | |
| "type": "string", | |
| "title": "OpenTelemetry Logs Endpoint", | |
| "description": "Signal-specific OTLP/HTTP logs endpoint. When set, this overrides diagnostics.otel.endpoint and OTEL_EXPORTER_OTLP_ENDPOINT for log export only." | |
| }, | |
| "protocol": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "http/protobuf" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "grpc" | |
| } | |
| ], | |
| "title": "OpenTelemetry Protocol", | |
| "description": "OTel transport protocol for telemetry export: \"http/protobuf\" or \"grpc\" depending on collector support. Use the protocol your observability backend expects to avoid dropped telemetry payloads." | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| }, | |
| "title": "OpenTelemetry Headers", | |
| "description": "Additional HTTP/gRPC metadata headers sent with OpenTelemetry export requests, often used for tenant auth or routing. Keep secrets in env-backed values and avoid unnecessary header sprawl." | |
| }, | |
| "serviceName": { | |
| "type": "string", | |
| "title": "OpenTelemetry Service Name", | |
| "description": "Service name reported in telemetry resource attributes to identify this gateway instance in observability backends. Use stable names so dashboards and alerts remain consistent over deployments." | |
| }, | |
| "traces": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Traces Enabled", | |
| "description": "Enable trace signal export to the configured OpenTelemetry collector endpoint. Keep enabled when latency/debug tracing is needed, and disable if you only want metrics/logs." | |
| }, | |
| "metrics": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Metrics Enabled", | |
| "description": "Enable metrics signal export to the configured OpenTelemetry collector endpoint. Keep enabled for runtime health dashboards, and disable only if metric volume must be minimized." | |
| }, | |
| "logs": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Logs Enabled", | |
| "description": "Enable log signal export through OpenTelemetry in addition to local logging sinks. Use this when centralized log correlation is required across services and agents." | |
| }, | |
| "sampleRate": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1, | |
| "title": "OpenTelemetry Trace Sample Rate", | |
| "description": "Trace sampling rate (0-1) controlling how much trace traffic is exported to observability backends. Lower rates reduce overhead/cost, while higher rates improve debugging fidelity." | |
| }, | |
| "flushIntervalMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "OpenTelemetry Flush Interval (ms)", | |
| "description": "Interval in milliseconds for periodic telemetry flush from buffers to the collector. Increase to reduce export chatter, or lower for faster visibility during active incident response." | |
| }, | |
| "captureContent": { | |
| "anyOf": [ | |
| { | |
| "type": "boolean" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Content Capture Enabled", | |
| "description": "Master switch for granular OTEL content capture fields. Keep disabled unless your collector is approved for raw prompt, response, or tool content." | |
| }, | |
| "inputMessages": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Input Messages Capture", | |
| "description": "Capture model input message text on OTEL spans when content capture is enabled." | |
| }, | |
| "outputMessages": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Output Messages Capture", | |
| "description": "Capture model output message text on OTEL spans when content capture is enabled." | |
| }, | |
| "toolInputs": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Tool Inputs Capture", | |
| "description": "Capture tool input text on OTEL spans when content capture is enabled." | |
| }, | |
| "toolOutputs": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry Tool Outputs Capture", | |
| "description": "Capture tool output text on OTEL spans when content capture is enabled." | |
| }, | |
| "systemPrompt": { | |
| "type": "boolean", | |
| "title": "OpenTelemetry System Prompt Capture", | |
| "description": "Capture system prompt text on OTEL spans when content capture is enabled. This remains off unless explicitly enabled." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ], | |
| "title": "OpenTelemetry Content Capture", | |
| "description": "Opt-in OTEL span content capture. Defaults to off; boolean true captures non-system message/tool content, while the object form lets you enable specific content classes." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "OpenTelemetry", | |
| "description": "OpenTelemetry export settings for traces, metrics, and logs emitted by gateway components. Use this when integrating with centralized observability backends and distributed tracing pipelines." | |
| }, | |
| "cacheTrace": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Cache Trace Enabled", | |
| "description": "Log cache trace snapshots for embedded agent runs (default: false)." | |
| }, | |
| "filePath": { | |
| "type": "string", | |
| "title": "Cache Trace File Path", | |
| "description": "JSONL output path for cache trace logs (default: $OPENCLAW_STATE_DIR/logs/cache-trace.jsonl)." | |
| }, | |
| "includeMessages": { | |
| "type": "boolean", | |
| "title": "Cache Trace Include Messages", | |
| "description": "Include full message payloads in trace output (default: true)." | |
| }, | |
| "includePrompt": { | |
| "type": "boolean", | |
| "title": "Cache Trace Include Prompt", | |
| "description": "Include prompt text in trace output (default: true)." | |
| }, | |
| "includeSystem": { | |
| "type": "boolean", | |
| "title": "Cache Trace Include System", | |
| "description": "Include system prompt in trace output (default: true)." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Cache Trace", | |
| "description": "Cache-trace logging settings for observing cache decisions and payload context in embedded runs. Enable this temporarily for debugging and disable afterward to reduce sensitive log footprint." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Diagnostics", | |
| "description": "Diagnostics controls for targeted tracing, telemetry export, and cache inspection during debugging. Keep baseline diagnostics minimal in production and enable deeper signals only when investigating issues." | |
| }, | |
| "logging": { | |
| "type": "object", | |
| "properties": { | |
| "level": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "silent" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "fatal" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "error" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "warn" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "info" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "debug" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "trace" | |
| } | |
| ], | |
| "title": "Log Level", | |
| "description": "Primary log level threshold for runtime logger output: \"silent\", \"fatal\", \"error\", \"warn\", \"info\", \"debug\", or \"trace\". Keep \"info\" or \"warn\" for production, and use debug/trace only during investigation." | |
| }, | |
| "file": { | |
| "type": "string", | |
| "title": "Log File Path", | |
| "description": "Optional file path for persisted log output in addition to or instead of console logging. Use a managed writable path and align retention/rotation with your operational policy." | |
| }, | |
| "maxFileBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "consoleLevel": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "silent" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "fatal" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "error" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "warn" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "info" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "debug" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "trace" | |
| } | |
| ], | |
| "title": "Console Log Level", | |
| "description": "Console-specific log threshold: \"silent\", \"fatal\", \"error\", \"warn\", \"info\", \"debug\", or \"trace\" for terminal output control. Use this to keep local console quieter while retaining richer file logging if needed." | |
| }, | |
| "consoleStyle": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "pretty" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "compact" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "json" | |
| } | |
| ], | |
| "title": "Console Log Style", | |
| "description": "Console output format style: \"pretty\", \"compact\", or \"json\" based on operator and ingestion needs. Use json for machine parsing pipelines and pretty/compact for human-first terminal workflows." | |
| }, | |
| "redactSensitive": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "tools" | |
| } | |
| ], | |
| "title": "Sensitive Data Redaction Mode", | |
| "description": "Sensitive log/transcript redaction mode: \"off\" disables general log and transcript masking, while \"tools\" redacts sensitive tool/config payload fields in those sinks. Safety-boundary UI, tool, and diagnostic payloads may still redact even when this is \"off\"." | |
| }, | |
| "redactPatterns": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Custom Redaction Patterns", | |
| "description": "Additional custom redact regex patterns applied to log output, persisted transcript text, and safety-boundary UI/tool/diagnostic payloads before emission. Use this to mask org-specific tokens and identifiers not covered by built-in redaction rules." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Logging", | |
| "description": "Logging behavior controls for severity, output destinations, formatting, and sensitive-data redaction. Keep levels and redaction strict enough for production while preserving useful diagnostics." | |
| }, | |
| "cli": { | |
| "type": "object", | |
| "properties": { | |
| "banner": { | |
| "type": "object", | |
| "properties": { | |
| "taglineMode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "random" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "default" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "off" | |
| } | |
| ], | |
| "title": "CLI Banner Tagline Mode", | |
| "description": "Controls tagline style in the CLI startup banner: \"random\" (default) picks from the rotating tagline pool, \"default\" always shows the neutral default tagline, and \"off\" hides tagline text while keeping the banner version line." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "CLI Banner", | |
| "description": "CLI startup banner controls for title/version line and tagline style behavior. Keep banner enabled for fast version/context checks, then tune tagline mode to your preferred noise level." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "CLI", | |
| "description": "CLI presentation controls for local command output behavior such as banner and tagline style. Use this section to keep startup output aligned with operator preference without changing runtime behavior." | |
| }, | |
| "crestodian": { | |
| "type": "object", | |
| "properties": { | |
| "rescue": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "auto" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| }, | |
| "ownerDmOnly": { | |
| "type": "boolean" | |
| }, | |
| "pendingTtlMinutes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "update": { | |
| "type": "object", | |
| "properties": { | |
| "channel": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "stable" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "beta" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "dev" | |
| } | |
| ], | |
| "title": "Update Channel", | |
| "description": "Update channel for git + npm installs (\"stable\", \"beta\", or \"dev\")." | |
| }, | |
| "checkOnStart": { | |
| "type": "boolean", | |
| "title": "Update Check on Start", | |
| "description": "Check for npm updates when the gateway starts (default: true)." | |
| }, | |
| "auto": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Auto Update Enabled", | |
| "description": "Enable background auto-update for package installs (default: false)." | |
| }, | |
| "stableDelayHours": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 168, | |
| "title": "Auto Update Stable Delay (hours)", | |
| "description": "Minimum delay before stable-channel auto-apply starts (default: 6)." | |
| }, | |
| "stableJitterHours": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 168, | |
| "title": "Auto Update Stable Jitter (hours)", | |
| "description": "Extra stable-channel rollout spread window in hours (default: 12)." | |
| }, | |
| "betaCheckIntervalHours": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "maximum": 24, | |
| "title": "Auto Update Beta Check Interval (hours)", | |
| "description": "How often beta-channel checks run in hours (default: 1)." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Updates", | |
| "description": "Update-channel and startup-check behavior for keeping OpenClaw runtime versions current. Use conservative channels in production and more experimental channels only in controlled environments." | |
| }, | |
| "browser": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Browser Enabled", | |
| "description": "Enables browser capability wiring in the gateway so browser tools and CDP-driven workflows can run. Disable when browser automation is not needed to reduce surface area and startup work." | |
| }, | |
| "evaluateEnabled": { | |
| "type": "boolean", | |
| "title": "Browser Evaluate Enabled", | |
| "description": "Enables browser-side evaluate helpers for runtime script evaluation capabilities where supported. Keep disabled unless your workflows require evaluate semantics beyond snapshots/navigation." | |
| }, | |
| "cdpUrl": { | |
| "type": "string", | |
| "title": "Browser CDP URL", | |
| "description": "Remote CDP websocket URL used to attach to an externally managed browser instance. Use this for centralized browser hosts and keep URL access restricted to trusted network paths." | |
| }, | |
| "remoteCdpTimeoutMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Remote CDP Timeout (ms)", | |
| "description": "Timeout in milliseconds for connecting to a remote CDP endpoint before failing the browser attach attempt. Increase for high-latency tunnels, or lower for faster failure detection." | |
| }, | |
| "remoteCdpHandshakeTimeoutMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Remote CDP Handshake Timeout (ms)", | |
| "description": "Timeout in milliseconds for post-connect CDP handshake readiness checks against remote browser targets. Raise this for slow-start remote browsers and lower to fail fast in automation loops." | |
| }, | |
| "localLaunchTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 120000, | |
| "title": "Browser Local Launch Timeout (ms)", | |
| "description": "Timeout in milliseconds for locally launched managed Chrome to expose its CDP HTTP endpoint after process start. Raise this on slow single-board computers or older hosts." | |
| }, | |
| "localCdpReadyTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 120000, | |
| "title": "Browser Local CDP Ready Timeout (ms)", | |
| "description": "Timeout in milliseconds for a locally launched managed browser to finish CDP websocket readiness after the process is discovered. Raise this when Chrome starts but browser start still reports CDP not reachable." | |
| }, | |
| "actionTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Browser Action Timeout (ms)", | |
| "description": "Default timeout in milliseconds for browser act requests before the client gives up waiting. Raise this when healthy waits or UI interactions exceed the default request budget." | |
| }, | |
| "color": { | |
| "type": "string", | |
| "title": "Browser Accent Color", | |
| "description": "Default accent color used for browser profile/UI cues where colored identity hints are displayed. Use consistent colors to help operators identify active browser profile context quickly." | |
| }, | |
| "executablePath": { | |
| "type": "string", | |
| "title": "Browser Executable Path", | |
| "description": "Explicit browser executable path when auto-discovery is insufficient for your host environment. Use an absolute stable path, or a path starting with ~ for your OS home directory, so launch behavior stays deterministic across restarts." | |
| }, | |
| "headless": { | |
| "type": "boolean", | |
| "title": "Browser Headless Mode", | |
| "description": "Forces browser launch in headless mode when the local launcher starts browser instances. Keep headless enabled for server environments and disable only when visible UI debugging is required." | |
| }, | |
| "noSandbox": { | |
| "type": "boolean", | |
| "title": "Browser No-Sandbox Mode", | |
| "description": "Disables Chromium sandbox isolation flags for environments where sandboxing fails at runtime. Keep this off whenever possible because process isolation protections are reduced." | |
| }, | |
| "attachOnly": { | |
| "type": "boolean", | |
| "title": "Browser Attach-only Mode", | |
| "description": "Restricts browser mode to attach-only behavior without starting local browser processes. Use this when all browser sessions are externally managed by a remote CDP provider." | |
| }, | |
| "cdpPortRangeStart": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 65535, | |
| "title": "Browser CDP Port Range Start", | |
| "description": "Starting local CDP port used for auto-allocated browser profile ports. Increase this when host-level port defaults conflict with other local services." | |
| }, | |
| "defaultProfile": { | |
| "type": "string", | |
| "title": "Browser Default Profile", | |
| "description": "Default browser profile name selected when callers do not explicitly choose a profile. Use a stable low-privilege profile as the default to reduce accidental cross-context state use." | |
| }, | |
| "snapshotDefaults": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "efficient", | |
| "title": "Browser Snapshot Mode", | |
| "description": "Default snapshot extraction mode controlling how page content is transformed for agent consumption. Choose the mode that balances readability, fidelity, and token footprint for your workflows." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Browser Snapshot Defaults", | |
| "description": "Default snapshot capture configuration used when callers do not provide explicit snapshot options. Tune this for consistent capture behavior across channels and automation paths." | |
| }, | |
| "ssrfPolicy": { | |
| "type": "object", | |
| "properties": { | |
| "dangerouslyAllowPrivateNetwork": { | |
| "type": "boolean", | |
| "title": "Browser Dangerously Allow Private Network", | |
| "description": "Allows access to private-network address ranges from browser tooling. Default is disabled when unset; enable only for explicitly trusted private-network destinations." | |
| }, | |
| "allowedHostnames": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Browser Allowed Hostnames", | |
| "description": "Explicit hostname allowlist exceptions for SSRF policy checks on browser/network requests. Keep this list minimal and review entries regularly to avoid stale broad access." | |
| }, | |
| "hostnameAllowlist": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Browser Hostname Allowlist", | |
| "description": "Legacy/alternate hostname allowlist field used by SSRF policy consumers for explicit host exceptions. Use stable exact hostnames and avoid wildcard-like broad patterns." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Browser SSRF Policy", | |
| "description": "Server-side request forgery guardrail settings for browser/network fetch paths that could reach internal hosts. Keep restrictive defaults in production and open only explicitly approved targets." | |
| }, | |
| "profiles": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string", | |
| "pattern": "^[a-z0-9-]+$" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "cdpPort": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 65535, | |
| "title": "Browser Profile CDP Port", | |
| "description": "Per-profile local CDP port used when connecting to browser instances by port instead of URL. Use unique ports per profile to avoid connection collisions." | |
| }, | |
| "cdpUrl": { | |
| "type": "string", | |
| "title": "Browser Profile CDP URL", | |
| "description": "Per-profile CDP websocket URL used for explicit remote browser routing by profile name. Use this when profile connections terminate on remote hosts or tunnels." | |
| }, | |
| "userDataDir": { | |
| "type": "string", | |
| "title": "Browser Profile User Data Dir", | |
| "description": "Per-profile Chromium user data directory for existing-session attachment through Chrome DevTools MCP. Use this for Brave, Edge, Chromium, or non-default Chrome profiles when the built-in auto-connect path would pick the wrong browser data directory on the selected host or browser node. Paths starting with ~ expand to the OS home directory." | |
| }, | |
| "mcpCommand": { | |
| "type": "string", | |
| "title": "Browser Profile Chrome MCP Command", | |
| "description": "Per-profile Chrome DevTools MCP command for existing-session attachment. Defaults to npx." | |
| }, | |
| "mcpArgs": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Browser Profile Chrome MCP Args", | |
| "description": "Extra per-profile Chrome DevTools MCP arguments for existing-session attachment, such as --no-usage-statistics. Endpoint arguments here override the built-in auto-connect or browser URL selection." | |
| }, | |
| "driver": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "openclaw" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "clawd" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "existing-session" | |
| } | |
| ], | |
| "title": "Browser Profile Driver", | |
| "description": "Per-profile browser driver mode. Use \"openclaw\" (or legacy \"clawd\") for CDP-based profiles, or use \"existing-session\" for Chrome DevTools MCP attachment on the selected host or browser node." | |
| }, | |
| "headless": { | |
| "type": "boolean", | |
| "title": "Browser Profile Headless Mode", | |
| "description": "Per-profile headless override for locally launched browser instances. Use this when one profile should stay headless without forcing browser.headless for every other profile." | |
| }, | |
| "executablePath": { | |
| "type": "string", | |
| "title": "Browser Profile Executable Path", | |
| "description": "Per-profile browser executable path for locally launched managed browser profiles. Overrides browser.executablePath and accepts paths starting with ~ for the OS home directory." | |
| }, | |
| "attachOnly": { | |
| "type": "boolean", | |
| "title": "Browser Profile Attach-only Mode", | |
| "description": "Per-profile attach-only override that skips local browser launch and only attaches to an existing CDP endpoint. Useful when one profile is externally managed but others are locally launched." | |
| }, | |
| "color": { | |
| "type": "string", | |
| "pattern": "^#?[0-9a-fA-F]{6}$", | |
| "title": "Browser Profile Accent Color", | |
| "description": "Per-profile accent color for visual differentiation in dashboards and browser-related UI hints. Use distinct colors for high-signal operator recognition of active profiles." | |
| } | |
| }, | |
| "required": [ | |
| "color" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| "title": "Browser Profiles", | |
| "description": "Named browser profile connection map used for explicit routing to CDP ports or URLs with optional metadata. Keep profile names consistent and avoid overlapping endpoint definitions." | |
| }, | |
| "extraArgs": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "tabCleanup": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Browser Tab Cleanup Enabled", | |
| "description": "Enables cleanup of idle tracked browser tabs for primary-agent sessions. Disable only when external tooling owns tab lifecycle completely." | |
| }, | |
| "idleMinutes": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Browser Tab Cleanup Idle Minutes", | |
| "description": "Minutes of inactivity before a tracked primary-agent browser tab is eligible for closure. Set 0 to disable idle-time cleanup while keeping the per-session tab cap." | |
| }, | |
| "maxTabsPerSession": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Browser Tab Cleanup Max Tabs Per Session", | |
| "description": "Maximum tracked browser tabs kept per primary-agent session. Oldest inactive tabs are closed first. Set 0 to disable the cap." | |
| }, | |
| "sweepMinutes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Browser Tab Cleanup Sweep Minutes", | |
| "description": "Minutes between browser tab cleanup sweeps. Keep this modest so idle tabs are reclaimed without adding frequent background work." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Browser Tab Cleanup", | |
| "description": "Best-effort cleanup policy for browser tabs opened by primary-agent sessions. Keep enabled to avoid stale sandbox or managed-browser tabs accumulating across long-lived gateways." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Browser", | |
| "description": "Browser runtime controls for local or remote CDP attachment, profile routing, and screenshot/snapshot behavior. Keep defaults unless your automation workflow requires custom browser transport settings." | |
| }, | |
| "ui": { | |
| "type": "object", | |
| "properties": { | |
| "seamColor": { | |
| "type": "string", | |
| "pattern": "^#?[0-9a-fA-F]{6}$", | |
| "title": "Accent Color", | |
| "description": "Primary accent color used by UI surfaces for emphasis, badges, and visual identity cues. Use high-contrast values that remain readable across light/dark themes." | |
| }, | |
| "assistant": { | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "type": "string", | |
| "maxLength": 50, | |
| "title": "Assistant Name", | |
| "description": "Display name shown for the assistant in UI views, chat chrome, and status contexts. Keep this stable so operators can reliably identify which assistant persona is active." | |
| }, | |
| "avatar": { | |
| "type": "string", | |
| "maxLength": 2000000, | |
| "title": "Assistant Avatar", | |
| "description": "Assistant avatar image source used in UI surfaces (URL, path, or data URI depending on runtime support). Use trusted assets and consistent branding dimensions for clean rendering." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Assistant Appearance", | |
| "description": "Assistant display identity settings for name and avatar shown in UI surfaces. Keep these values aligned with your operator-facing persona and support expectations." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "UI", | |
| "description": "UI presentation settings for accenting and assistant identity shown in control surfaces. Use this for branding and readability customization without changing runtime behavior." | |
| }, | |
| "secrets": { | |
| "type": "object", | |
| "properties": { | |
| "providers": { | |
| "type": "object", | |
| "properties": {}, | |
| "additionalProperties": { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "allowlist": { | |
| "maxItems": 256, | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| } | |
| }, | |
| "required": [ | |
| "source" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "path": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "singleValue" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "json" | |
| } | |
| ] | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 120000 | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 20971520 | |
| }, | |
| "allowInsecurePath": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "path" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "command": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "args": { | |
| "maxItems": 128, | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "maxLength": 1024 | |
| } | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 120000 | |
| }, | |
| "noOutputTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 120000 | |
| }, | |
| "maxOutputBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 20971520 | |
| }, | |
| "jsonOnly": { | |
| "type": "boolean" | |
| }, | |
| "env": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "passEnv": { | |
| "maxItems": 128, | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "trustedDirs": { | |
| "maxItems": 64, | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "minLength": 1 | |
| } | |
| }, | |
| "allowInsecurePath": { | |
| "type": "boolean" | |
| }, | |
| "allowSymlinkCommand": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "command" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| }, | |
| "defaults": { | |
| "type": "object", | |
| "properties": { | |
| "env": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "file": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "exec": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "resolution": { | |
| "type": "object", | |
| "properties": { | |
| "maxProviderConcurrency": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 16 | |
| }, | |
| "maxRefsPerProvider": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 4096 | |
| }, | |
| "maxBatchBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 5242880 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "auth": { | |
| "type": "object", | |
| "properties": { | |
| "profiles": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "provider": { | |
| "type": "string" | |
| }, | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "api_key" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "aws-sdk" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "oauth" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "token" | |
| } | |
| ] | |
| }, | |
| "email": { | |
| "type": "string" | |
| }, | |
| "displayName": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "provider", | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| "title": "Auth Profiles", | |
| "description": "Named auth profiles (provider + mode + optional email)." | |
| }, | |
| "order": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "title": "Auth Profile Order", | |
| "description": "Ordered auth profile IDs per provider (used for automatic failover)." | |
| }, | |
| "cooldowns": { | |
| "type": "object", | |
| "properties": { | |
| "billingBackoffHours": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "Billing Backoff (hours)", | |
| "description": "Base backoff (hours) when a profile fails due to billing/insufficient credits (default: 5)." | |
| }, | |
| "billingBackoffHoursByProvider": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "number", | |
| "exclusiveMinimum": 0 | |
| }, | |
| "title": "Billing Backoff Overrides", | |
| "description": "Optional per-provider overrides for billing backoff (hours)." | |
| }, | |
| "billingMaxHours": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "Billing Backoff Cap (hours)", | |
| "description": "Cap (hours) for billing backoff (default: 24)." | |
| }, | |
| "authPermanentBackoffMinutes": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "Auth-Permanent Backoff (minutes)", | |
| "description": "Base backoff (minutes) for high-confidence auth_permanent failures (default: 10). Keep this shorter than billing so providers recover automatically after transient upstream auth incidents." | |
| }, | |
| "authPermanentMaxMinutes": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "Auth-Permanent Backoff Cap (minutes)", | |
| "description": "Cap (minutes) for auth_permanent backoff (default: 60)." | |
| }, | |
| "failureWindowHours": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "Failover Window (hours)", | |
| "description": "Failure window (hours) for backoff counters (default: 24)." | |
| }, | |
| "overloadedProfileRotations": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Overloaded Profile Rotations", | |
| "description": "Maximum same-provider auth-profile rotations allowed for overloaded errors before switching to model fallback (default: 1)." | |
| }, | |
| "overloadedBackoffMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Overloaded Backoff (ms)", | |
| "description": "Fixed delay in milliseconds before retrying an overloaded provider/profile rotation (default: 0)." | |
| }, | |
| "rateLimitedProfileRotations": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Rate-Limited Profile Rotations", | |
| "description": "Maximum same-provider auth-profile rotations allowed for rate-limit errors before switching to model fallback (default: 1)." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Auth Cooldowns", | |
| "description": "Cooldown/backoff controls for temporary profile suppression after billing-related failures and retry windows. Use these to prevent rapid re-selection of profiles that are still blocked." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Auth", | |
| "description": "Authentication profile root used for multi-profile provider credentials and cooldown-based failover ordering. Keep profiles minimal and explicit so automatic failover behavior stays auditable." | |
| }, | |
| "accessGroups": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "additionalProperties": { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "type": "string", | |
| "const": "discord.channelAudience" | |
| }, | |
| "guildId": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "channelId": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "membership": { | |
| "type": "string", | |
| "const": "canViewChannel" | |
| } | |
| }, | |
| "required": [ | |
| "type", | |
| "guildId", | |
| "channelId" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "type": "string", | |
| "const": "message.senders" | |
| }, | |
| "members": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "additionalProperties": { | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "minLength": 1 | |
| } | |
| } | |
| } | |
| }, | |
| "required": [ | |
| "type", | |
| "members" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| }, | |
| "acp": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "ACP Enabled", | |
| "description": "Global ACP feature gate. Keep disabled unless ACP runtime + policy are configured." | |
| }, | |
| "dispatch": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "ACP Dispatch Enabled", | |
| "description": "Independent dispatch gate for ACP session turns (default: true). Set false to keep ACP commands available while blocking ACP turn execution." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "backend": { | |
| "type": "string", | |
| "title": "ACP Backend", | |
| "description": "Default ACP runtime backend id (for example: acpx). Must match a registered ACP runtime plugin backend." | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "ACP Fallback Backends", | |
| "description": "Ordered list of fallback ACP backend ids tried when the primary backend fails with UNAVAILABLE (for example: rate-limit / quota exhausted). Each entry must match a registered ACP runtime plugin backend." | |
| }, | |
| "defaultAgent": { | |
| "type": "string", | |
| "title": "ACP Default Agent", | |
| "description": "Fallback ACP target agent id used when ACP spawns do not specify an explicit target." | |
| }, | |
| "allowedAgents": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "ACP Allowed Agents", | |
| "description": "Allowlist of ACP target agent ids permitted for ACP runtime sessions. Empty means no additional allowlist restriction." | |
| }, | |
| "maxConcurrentSessions": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "ACP Max Concurrent Sessions", | |
| "description": "Maximum concurrently active ACP sessions across this gateway process." | |
| }, | |
| "stream": { | |
| "type": "object", | |
| "properties": { | |
| "coalesceIdleMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "ACP Stream Coalesce Idle (ms)", | |
| "description": "Coalescer idle flush window in milliseconds for ACP streamed text before block replies are emitted." | |
| }, | |
| "maxChunkChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "ACP Stream Max Chunk Chars", | |
| "description": "Maximum chunk size for ACP streamed block projection before splitting into multiple block replies." | |
| }, | |
| "repeatSuppression": { | |
| "type": "boolean", | |
| "title": "ACP Stream Repeat Suppression", | |
| "description": "When true (default), suppress repeated ACP status/tool projection lines in a turn while keeping raw ACP events unchanged." | |
| }, | |
| "deliveryMode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "live" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "final_only" | |
| } | |
| ], | |
| "title": "ACP Stream Delivery Mode", | |
| "description": "ACP delivery style: live streams projected output incrementally, final_only buffers all projected ACP output until terminal turn events." | |
| }, | |
| "hiddenBoundarySeparator": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "none" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "space" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "newline" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "paragraph" | |
| } | |
| ], | |
| "title": "ACP Stream Hidden Boundary Separator", | |
| "description": "Separator inserted before next visible assistant text when hidden ACP tool lifecycle events occurred (none|space|newline|paragraph). Default: paragraph." | |
| }, | |
| "maxOutputChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "ACP Stream Max Output Chars", | |
| "description": "Maximum assistant output characters projected per ACP turn before truncation notice is emitted." | |
| }, | |
| "maxSessionUpdateChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "ACP Stream Max Session Update Chars", | |
| "description": "Maximum characters for projected ACP session/update lines (tool/status updates)." | |
| }, | |
| "tagVisibility": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "boolean" | |
| }, | |
| "title": "ACP Stream Tag Visibility", | |
| "description": "Per-sessionUpdate visibility overrides for ACP projection (for example usage_update, available_commands_update)." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "ACP Stream", | |
| "description": "ACP streaming projection controls for chunk sizing, metadata visibility, and deduped delivery behavior." | |
| }, | |
| "runtime": { | |
| "type": "object", | |
| "properties": { | |
| "ttlMinutes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "ACP Runtime TTL (minutes)", | |
| "description": "Idle runtime TTL in minutes for ACP session workers before eligible cleanup." | |
| }, | |
| "installCommand": { | |
| "type": "string", | |
| "title": "ACP Runtime Install Command", | |
| "description": "Optional operator install/setup command shown by `/acp install` and `/acp doctor` when ACP backend wiring is missing." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "ACP", | |
| "description": "ACP runtime controls for enabling dispatch, selecting backends, constraining allowed agent targets, and tuning streamed turn projection behavior." | |
| }, | |
| "models": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "merge" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "replace" | |
| } | |
| ], | |
| "title": "Model Catalog Mode", | |
| "description": "Controls provider catalog behavior: \"merge\" keeps built-ins and overlays your custom providers, while \"replace\" uses only your configured providers. In \"merge\", matching provider IDs preserve non-empty agent models.json baseUrl values, while apiKey values are preserved only when the provider is not SecretRef-managed in current config/auth-profile context; SecretRef-managed providers refresh apiKey from current source markers, and matching model contextWindow/maxTokens use the higher value between explicit and implicit entries." | |
| }, | |
| "providers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "baseUrl": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Model Provider Base URL", | |
| "description": "Base URL for the provider endpoint used to serve model requests for that provider entry. Use HTTPS endpoints and keep URLs environment-specific through config templating where needed." | |
| }, | |
| "apiKey": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider API Key", | |
| "description": "Provider credential used for API-key based authentication when the provider requires direct key auth. Use secret/env substitution and avoid storing real keys in committed config files." | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "api-key" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "aws-sdk" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "oauth" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "token" | |
| } | |
| ], | |
| "title": "Model Provider Auth Mode", | |
| "description": "Selects provider auth style: \"api-key\" for API key auth, \"token\" for bearer token auth, \"oauth\" for OAuth credentials, and \"aws-sdk\" for AWS credential resolution. Match this to your provider requirements." | |
| }, | |
| "api": { | |
| "type": "string", | |
| "enum": [ | |
| "openai-completions", | |
| "openai-responses", | |
| "openai-codex-responses", | |
| "anthropic-messages", | |
| "google-generative-ai", | |
| "github-copilot", | |
| "bedrock-converse-stream", | |
| "ollama", | |
| "azure-openai-responses" | |
| ], | |
| "title": "Model Provider API Adapter", | |
| "description": "Provider API adapter selection controlling request/response compatibility handling for model calls. Use the adapter that matches your upstream provider protocol to avoid feature mismatch." | |
| }, | |
| "contextWindow": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "Model Provider Context Window", | |
| "description": "Default native context window applied to models under this provider when a model entry does not set contextWindow. Use model-level contextWindow for per-model overrides." | |
| }, | |
| "contextTokens": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Model Provider Context Tokens", | |
| "description": "Default effective runtime context cap applied to models under this provider when a model entry does not set contextTokens. Use this when runtime should budget below the native contextWindow." | |
| }, | |
| "maxTokens": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "Model Provider Max Tokens", | |
| "description": "Default maximum output token budget applied to models under this provider when a model entry does not set maxTokens." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Model Provider Request Timeout", | |
| "description": "Optional per-provider model request timeout in seconds. For built-in providers, this can be set as a standalone overlay. For custom providers, set it alongside the provider baseUrl and models. Applies to provider HTTP fetches, including connect, headers, body, and total request abort handling, and also raises the LLM idle/stream watchdog ceiling for this provider above the implicit ~120s default. Use this for slow local or self-hosted model servers, or for cloud providers that buffer reasoning tokens silently on the wire (Gemini preview, large-tool-payload Claude/Opus), instead of changing global agent timeouts." | |
| }, | |
| "injectNumCtxForOpenAICompat": { | |
| "type": "boolean", | |
| "title": "Model Provider Inject num_ctx (OpenAI Compat)", | |
| "description": "Controls whether OpenClaw injects `options.num_ctx` for Ollama providers configured with the OpenAI-compatible adapter (`openai-completions`). Default is true. Set false only if your proxy/upstream rejects unknown `options` payload fields." | |
| }, | |
| "params": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {}, | |
| "title": "Model Provider Runtime Parameters", | |
| "description": "Provider-specific runtime parameters interpreted by provider plugins. Keep keys documented by the provider, and prefer explicit provider docs over ad hoc shared assumptions." | |
| }, | |
| "agentRuntime": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "title": "Model Provider Runtime ID", | |
| "description": "Provider agent runtime id: \"pi\", \"auto\", a registered plugin harness id such as \"codex\", or a supported CLI backend alias such as \"claude-cli\". OpenAI on the official endpoint defaults to the Codex harness when omitted." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Model Provider Runtime", | |
| "description": "Optional low-level agent runtime policy for this provider. Use provider/model runtime policy instead of agent-wide runtime pins; omitted/default lets OpenClaw choose the runtime for the selected provider." | |
| }, | |
| "localService": { | |
| "type": "object", | |
| "properties": { | |
| "command": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Model Provider Local Service Command", | |
| "description": "Absolute executable path for the local model server process. Keep this path explicit so provider startup is deterministic and does not depend on shell PATH lookup." | |
| }, | |
| "args": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Model Provider Local Service Arguments", | |
| "description": "Argument list passed to the local model server command without shell expansion." | |
| }, | |
| "cwd": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Model Provider Local Service Working Directory", | |
| "description": "Working directory for the local model server process." | |
| }, | |
| "env": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| }, | |
| "title": "Model Provider Local Service Environment", | |
| "description": "Additional environment variables for the local model server process. Values that look secret are redacted from config snapshots." | |
| }, | |
| "healthUrl": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Model Provider Local Service Health URL", | |
| "description": "Readiness URL probed before model requests. If omitted, OpenClaw uses the provider baseUrl with /models appended." | |
| }, | |
| "readyTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Model Provider Local Service Ready Timeout", | |
| "description": "Maximum milliseconds to wait for the local model server readiness probe after starting the process." | |
| }, | |
| "idleStopMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Model Provider Local Service Idle Stop", | |
| "description": "Milliseconds to keep an OpenClaw-started local model server alive after the last request finishes. Set 0 to keep it alive until OpenClaw exits." | |
| } | |
| }, | |
| "required": [ | |
| "command" | |
| ], | |
| "additionalProperties": false, | |
| "title": "Model Provider Local Service", | |
| "description": "Optional on-demand local model server process for this provider. OpenClaw probes healthUrl, starts the command when needed, waits for readiness, and then sends the model request." | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "title": "Model Provider Headers", | |
| "description": "Static HTTP headers merged into provider requests for tenant routing, proxy auth, or custom gateway requirements. Use this sparingly and keep sensitive header values in secrets." | |
| }, | |
| "authHeader": { | |
| "type": "boolean", | |
| "title": "Model Provider Authorization Header", | |
| "description": "When true, credentials are sent via the HTTP Authorization header even if alternate auth is possible. Use this only when your provider or proxy explicitly requires Authorization forwarding." | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "title": "Model Provider Request Headers", | |
| "description": "Extra headers merged into provider requests after default attribution and auth resolution." | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default", | |
| "title": "Model Provider Request Auth Mode", | |
| "description": "Auth override mode: \"provider-default\", \"authorization-bearer\", or \"header\"." | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer", | |
| "title": "Model Provider Request Auth Mode", | |
| "description": "Auth override mode: \"provider-default\", \"authorization-bearer\", or \"header\"." | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Bearer Token", | |
| "description": "Bearer token used when auth mode is authorization-bearer." | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header", | |
| "title": "Model Provider Request Auth Mode", | |
| "description": "Auth override mode: \"provider-default\", \"authorization-bearer\", or \"header\"." | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Model Provider Request Auth Header Name", | |
| "description": "Custom auth header name used when auth mode is header." | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Auth Header Value", | |
| "description": "Custom auth header value used when auth mode is header." | |
| }, | |
| "prefix": { | |
| "type": "string", | |
| "title": "Model Provider Request Auth Header Prefix", | |
| "description": "Optional prefix prepended to request.auth.value when auth mode is header." | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ], | |
| "title": "Model Provider Request Auth Override", | |
| "description": "Override provider request authentication behavior for this provider." | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy", | |
| "title": "Model Provider Request Proxy Mode", | |
| "description": "Proxy override mode for model-provider requests: \"env-proxy\" or \"explicit-proxy\"." | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS CA", | |
| "description": "Custom CA bundle used to verify the proxy TLS certificate chain." | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS Cert", | |
| "description": "Client TLS certificate presented to the proxy when mutual TLS is required." | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS Key", | |
| "description": "Private key paired with request.proxy.tls.cert for proxy mutual TLS." | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS Passphrase", | |
| "description": "Optional passphrase used to decrypt request.proxy.tls.key." | |
| }, | |
| "serverName": { | |
| "type": "string", | |
| "title": "Model Provider Request Proxy TLS Server Name", | |
| "description": "Optional SNI/server-name override used when establishing TLS to the proxy." | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean", | |
| "title": "Model Provider Request Proxy TLS Skip Verify", | |
| "description": "Skips proxy TLS certificate verification. Use only for controlled development environments." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Model Provider Request Proxy TLS", | |
| "description": "Optional TLS settings used when connecting to the configured proxy." | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy", | |
| "title": "Model Provider Request Proxy Mode", | |
| "description": "Proxy override mode for model-provider requests: \"env-proxy\" or \"explicit-proxy\"." | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Model Provider Request Proxy URL", | |
| "description": "Explicit proxy URL used when request.proxy.mode is explicit-proxy. Credentials embedded in the URL are treated as sensitive and redacted from snapshots." | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS CA", | |
| "description": "Custom CA bundle used to verify the proxy TLS certificate chain." | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS Cert", | |
| "description": "Client TLS certificate presented to the proxy when mutual TLS is required." | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS Key", | |
| "description": "Private key paired with request.proxy.tls.cert for proxy mutual TLS." | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy TLS Passphrase", | |
| "description": "Optional passphrase used to decrypt request.proxy.tls.key." | |
| }, | |
| "serverName": { | |
| "type": "string", | |
| "title": "Model Provider Request Proxy TLS Server Name", | |
| "description": "Optional SNI/server-name override used when establishing TLS to the proxy." | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean", | |
| "title": "Model Provider Request Proxy TLS Skip Verify", | |
| "description": "Skips proxy TLS certificate verification. Use only for controlled development environments." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Model Provider Request Proxy TLS", | |
| "description": "Optional TLS settings used when connecting to the configured proxy." | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ], | |
| "title": "Model Provider Request Proxy", | |
| "description": "Optional proxy override for model-provider requests. Use \"env-proxy\" to honor environment proxy settings or \"explicit-proxy\" to route through a specific proxy URL." | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request TLS CA", | |
| "description": "Custom CA bundle used to verify the upstream TLS certificate chain." | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request TLS Cert", | |
| "description": "Client TLS certificate presented to the upstream endpoint when mutual TLS is required." | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request TLS Key", | |
| "description": "Private key paired with request.tls.cert for upstream mutual TLS." | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Model Provider Request TLS Passphrase", | |
| "description": "Optional passphrase used to decrypt request.tls.key." | |
| }, | |
| "serverName": { | |
| "type": "string", | |
| "title": "Model Provider Request TLS Server Name", | |
| "description": "Optional SNI/server-name override used when establishing upstream TLS." | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean", | |
| "title": "Model Provider Request TLS Skip Verify", | |
| "description": "Skips upstream TLS certificate verification. Use only for controlled development environments." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Model Provider Request TLS", | |
| "description": "Optional TLS settings used when connecting directly to the upstream model endpoint." | |
| }, | |
| "allowPrivateNetwork": { | |
| "type": "boolean", | |
| "title": "Model Provider Request Allow Private Network", | |
| "description": "When true, allow model-provider HTTP requests to private, CGNAT, or similar ranges through the provider HTTP fetch guard (fetchWithSsrFGuard). Custom/local provider base URLs already trust the exact configured origin, except metadata/link-local origins; set this to false to opt out of that trust. OpenAI Responses WebSocket reuses request for headers/TLS but does not use that fetch SSRF path. Use true only for operator-controlled self-hosted endpoints that must reach private origins outside the configured baseUrl origin." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Model Provider Request Overrides", | |
| "description": "Optional request overrides for model-provider requests, including extra headers, auth overrides, proxy routing, TLS client settings, and optional allowPrivateNetwork for trusted self-hosted endpoints. Use these only when your upstream or enterprise network path requires transport customization." | |
| }, | |
| "models": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "name": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "api": { | |
| "type": "string", | |
| "enum": [ | |
| "openai-completions", | |
| "openai-responses", | |
| "openai-codex-responses", | |
| "anthropic-messages", | |
| "google-generative-ai", | |
| "github-copilot", | |
| "bedrock-converse-stream", | |
| "ollama", | |
| "azure-openai-responses" | |
| ] | |
| }, | |
| "baseUrl": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "reasoning": { | |
| "type": "boolean" | |
| }, | |
| "input": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "text" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "image" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "video" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "audio" | |
| } | |
| ] | |
| } | |
| }, | |
| "cost": { | |
| "type": "object", | |
| "properties": { | |
| "input": { | |
| "type": "number" | |
| }, | |
| "output": { | |
| "type": "number" | |
| }, | |
| "cacheRead": { | |
| "type": "number" | |
| }, | |
| "cacheWrite": { | |
| "type": "number" | |
| }, | |
| "tieredPricing": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "input": { | |
| "type": "number" | |
| }, | |
| "output": { | |
| "type": "number" | |
| }, | |
| "cacheRead": { | |
| "type": "number" | |
| }, | |
| "cacheWrite": { | |
| "type": "number" | |
| }, | |
| "range": { | |
| "anyOf": [ | |
| { | |
| "type": "array", | |
| "items": [ | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "number" | |
| } | |
| ] | |
| }, | |
| { | |
| "type": "array", | |
| "items": [ | |
| { | |
| "type": "number" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "required": [ | |
| "input", | |
| "output", | |
| "cacheRead", | |
| "cacheWrite", | |
| "range" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "contextWindow": { | |
| "type": "number", | |
| "exclusiveMinimum": 0 | |
| }, | |
| "contextTokens": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxTokens": { | |
| "type": "number", | |
| "exclusiveMinimum": 0 | |
| }, | |
| "params": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {} | |
| }, | |
| "agentRuntime": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "title": "Model Runtime ID", | |
| "description": "Model agent runtime id: \"pi\", \"auto\", a registered plugin harness id such as \"codex\", or a supported CLI backend alias such as \"claude-cli\"." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Model Runtime", | |
| "description": "Optional low-level agent runtime policy for this specific model. Model runtime policy overrides the provider runtime policy." | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "compat": { | |
| "type": "object", | |
| "properties": { | |
| "supportsStore": { | |
| "type": "boolean" | |
| }, | |
| "supportsPromptCacheKey": { | |
| "type": "boolean" | |
| }, | |
| "supportsDeveloperRole": { | |
| "type": "boolean" | |
| }, | |
| "supportsReasoningEffort": { | |
| "type": "boolean" | |
| }, | |
| "supportsUsageInStreaming": { | |
| "type": "boolean" | |
| }, | |
| "supportsTools": { | |
| "type": "boolean" | |
| }, | |
| "supportsStrictMode": { | |
| "type": "boolean" | |
| }, | |
| "requiresStringContent": { | |
| "type": "boolean" | |
| }, | |
| "strictMessageKeys": { | |
| "type": "boolean" | |
| }, | |
| "visibleReasoningDetailTypes": { | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "minLength": 1 | |
| } | |
| }, | |
| "supportedReasoningEfforts": { | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "minLength": 1 | |
| } | |
| }, | |
| "reasoningEffortMap": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "additionalProperties": { | |
| "type": "string", | |
| "minLength": 1 | |
| } | |
| }, | |
| "maxTokensField": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "max_completion_tokens" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "max_tokens" | |
| } | |
| ] | |
| }, | |
| "thinkingFormat": { | |
| "type": "string", | |
| "enum": [ | |
| "openai", | |
| "openrouter", | |
| "deepseek", | |
| "together", | |
| "qwen", | |
| "qwen-chat-template", | |
| "zai" | |
| ] | |
| }, | |
| "requiresToolResultName": { | |
| "type": "boolean" | |
| }, | |
| "requiresAssistantAfterToolResult": { | |
| "type": "boolean" | |
| }, | |
| "requiresThinkingAsText": { | |
| "type": "boolean" | |
| }, | |
| "toolSchemaProfile": { | |
| "type": "string" | |
| }, | |
| "unsupportedToolSchemaKeywords": { | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "minLength": 1 | |
| } | |
| }, | |
| "nativeWebSearchTool": { | |
| "type": "boolean" | |
| }, | |
| "toolCallArgumentsEncoding": { | |
| "type": "string" | |
| }, | |
| "requiresMistralToolIds": { | |
| "type": "boolean" | |
| }, | |
| "requiresOpenAiAnthropicToolPayload": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "metadataSource": { | |
| "type": "string", | |
| "const": "models-add" | |
| } | |
| }, | |
| "required": [ | |
| "id", | |
| "name" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| "title": "Model Provider Model List", | |
| "description": "Declared model list for a provider including identifiers, metadata, provider-specific params, and optional compatibility/cost hints. Keep IDs exact to provider catalog values so selection and fallback resolve correctly." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Model Providers", | |
| "description": "Provider map keyed by provider ID containing connection/auth settings and concrete model definitions. Built-in providers may be tuned with provider-level overlays; custom providers must include baseUrl and models. Use stable provider keys so references from agents and tooling remain portable across environments." | |
| }, | |
| "pricing": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Model Pricing Enabled", | |
| "description": "Enable the background model-pricing bootstrap. Set to false to skip OpenRouter and LiteLLM catalog fetches during Gateway startup; changing this value requires a Gateway restart." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Model Pricing", | |
| "description": "Controls the optional background model-pricing bootstrap that fetches remote per-token cost catalogs." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Models", | |
| "description": "Model catalog root for provider definitions, merge/replace behavior, and optional Bedrock discovery integration. Keep provider definitions explicit and validated before relying on production failover paths." | |
| }, | |
| "nodeHost": { | |
| "type": "object", | |
| "properties": { | |
| "browserProxy": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Node Browser Proxy Enabled", | |
| "description": "Expose the local browser control server through node proxy routing so remote clients can use this host's browser capabilities. Keep disabled unless remote automation explicitly depends on it." | |
| }, | |
| "allowProfiles": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Node Browser Proxy Allowed Profiles", | |
| "description": "Optional allowlist of browser profile names exposed through node proxy routing. Leave empty to preserve the default full profile surface, including profile create/delete routes. When set, OpenClaw enforces least-privilege profile access and blocks persistent profile create/delete through the proxy." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Node Browser Proxy", | |
| "description": "Groups browser-proxy settings for exposing local browser control through node routing. Enable only when remote node workflows need your local browser profiles." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Node Host", | |
| "description": "Node host controls for features exposed from this gateway node to other nodes or clients. Keep defaults unless you intentionally proxy local capabilities across your node network." | |
| }, | |
| "agents": { | |
| "type": "object", | |
| "properties": { | |
| "defaults": { | |
| "type": "object", | |
| "properties": { | |
| "params": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {} | |
| }, | |
| "agentRuntime": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "title": "Legacy Default Agent Runtime ID", | |
| "description": "Legacy whole-agent runtime id. It is ignored by runtime selection; configure models.providers.<provider>.agentRuntime.id or a model-specific agentRuntime.id instead." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Legacy Default Agent Runtime", | |
| "description": "Legacy whole-agent runtime policy. It is ignored by runtime selection; configure runtime policy on a provider or model instead. Run openclaw doctor --fix to remove stale values." | |
| }, | |
| "embeddedHarness": { | |
| "type": "object", | |
| "properties": { | |
| "runtime": { | |
| "type": "string", | |
| "title": "Default Legacy Embedded Harness Runtime", | |
| "description": "Legacy whole-agent embedded harness runtime. Runtime selection ignores it; use provider/model runtime policy." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Default Legacy Embedded Harness Settings", | |
| "description": "Legacy whole-agent embedded harness input. Run openclaw doctor --fix to remove it and use provider/model runtime policy where needed." | |
| }, | |
| "model": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string", | |
| "title": "Primary Model", | |
| "description": "Primary model (provider/model)." | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Model Fallbacks", | |
| "description": "Ordered fallback models (provider/model). Used when the primary model fails." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "imageModel": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string", | |
| "title": "Image Model", | |
| "description": "Optional image model (provider/model) used when the primary model lacks image input." | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Image Model Fallbacks", | |
| "description": "Ordered fallback image models (provider/model)." | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "imageGenerationModel": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string", | |
| "title": "Image Generation Model", | |
| "description": "Optional image-generation model (provider/model) used by the shared image generation capability." | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Image Generation Model Fallbacks", | |
| "description": "Ordered fallback image-generation models (provider/model)." | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Image Generation Timeout (ms)", | |
| "description": "Default provider request timeout in milliseconds for image_generate calls. Per-call timeoutMs overrides this." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "videoGenerationModel": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string", | |
| "title": "Video Generation Model", | |
| "description": "Optional video-generation model (provider/model) used by the shared video generation capability." | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Video Generation Model Fallbacks", | |
| "description": "Ordered fallback video-generation models (provider/model)." | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Video Generation Timeout (ms)", | |
| "description": "Default provider request timeout in milliseconds for video_generate calls. Per-call timeoutMs overrides this, and this value overrides provider-authored defaults." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "musicGenerationModel": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string", | |
| "title": "Music Generation Model", | |
| "description": "Optional music-generation model (provider/model) used by the shared music generation capability." | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Music Generation Model Fallbacks", | |
| "description": "Ordered fallback music-generation models (provider/model)." | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "mediaGenerationAutoProviderFallback": { | |
| "type": "boolean", | |
| "title": "Media Generation Auto Provider Fallback", | |
| "description": "When true (default), shared image, music, and video generation automatically appends other auth-backed provider defaults after explicit primary/fallback refs. Set false to disable implicit cross-provider fallback while keeping explicit fallbacks." | |
| }, | |
| "pdfModel": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string", | |
| "title": "PDF Model", | |
| "description": "Optional PDF model (provider/model) for the PDF analysis tool. Defaults to imageModel, then session model." | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "PDF Model Fallbacks", | |
| "description": "Ordered fallback PDF models (provider/model)." | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "pdfMaxBytesMb": { | |
| "type": "number", | |
| "exclusiveMinimum": 0, | |
| "title": "PDF Max Size (MB)", | |
| "description": "Maximum PDF file size in megabytes for the PDF tool (default: 10)." | |
| }, | |
| "pdfMaxPages": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "PDF Max Pages", | |
| "description": "Maximum number of PDF pages to process for the PDF tool (default: 20)." | |
| }, | |
| "models": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "alias": { | |
| "type": "string" | |
| }, | |
| "params": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {} | |
| }, | |
| "agentRuntime": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "title": "Default Agent Model Runtime ID", | |
| "description": "Default-agent model runtime id: \"pi\", \"auto\", a registered plugin harness id such as \"codex\", or a supported CLI backend alias such as \"claude-cli\"." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Default Agent Model Runtime", | |
| "description": "Optional per-model runtime policy for the default agent. Use this for model-specific runtime exceptions instead of setting a whole-agent runtime." | |
| }, | |
| "streaming": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Models", | |
| "description": "Configured model catalog and allowlist (keys are full provider/model IDs or literal provider/* entries for dynamic provider catalogs)." | |
| }, | |
| "workspace": { | |
| "type": "string", | |
| "title": "Workspace", | |
| "description": "Default workspace path exposed to agent runtime tools for filesystem context and repo-aware behavior. Set this explicitly when running from wrappers so path resolution stays deterministic." | |
| }, | |
| "skills": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Skills", | |
| "description": "Optional default skill allowlist inherited by agents that omit agents.list[].skills. Omit for unrestricted skills, set [] to give inheriting agents no skills, and remember explicit agents.list[].skills replaces this default instead of merging with it." | |
| }, | |
| "silentReply": { | |
| "type": "object", | |
| "properties": { | |
| "group": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "disallow" | |
| } | |
| ] | |
| }, | |
| "internal": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "disallow" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "repoRoot": { | |
| "type": "string", | |
| "title": "Repo Root", | |
| "description": "Optional repository root shown in the system prompt runtime line (overrides auto-detect)." | |
| }, | |
| "systemPromptOverride": { | |
| "type": "string" | |
| }, | |
| "promptOverlays": { | |
| "type": "object", | |
| "properties": { | |
| "gpt5": { | |
| "type": "object", | |
| "properties": { | |
| "personality": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "friendly" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "on" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "off" | |
| } | |
| ], | |
| "title": "GPT-5 Personality Overlay", | |
| "description": "Friendly interaction-style layer for GPT-5-family models (\"friendly\" or \"on\" enables it; \"off\" disables only that layer). The tagged behavior contract remains enabled for matching GPT-5 models." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "GPT-5 Prompt Overlay", | |
| "description": "Shared GPT-5-family prompt overlay applied to matching model ids across providers such as OpenAI, OpenRouter, OpenCode, Codex, and compatible gateways." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Prompt Overlays", | |
| "description": "Provider-independent prompt overlays applied by model family before provider-specific prompt hooks." | |
| }, | |
| "skipBootstrap": { | |
| "type": "boolean" | |
| }, | |
| "skipOptionalBootstrapFiles": { | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "SOUL.md", | |
| "USER.md", | |
| "HEARTBEAT.md", | |
| "IDENTITY.md" | |
| ] | |
| }, | |
| "title": "Skipped Optional Bootstrap Files", | |
| "description": "Optional bootstrap files that should not be created in agent workspaces. Valid values: SOUL.md, USER.md, HEARTBEAT.md, IDENTITY.md." | |
| }, | |
| "contextInjection": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "always" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "continuation-skip" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "never" | |
| } | |
| ], | |
| "title": "Context Injection", | |
| "description": "Controls when workspace bootstrap files are injected into the system prompt: \"always\" (default) or \"continuation-skip\" for safe continuation turns after a completed assistant response." | |
| }, | |
| "bootstrapMaxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Bootstrap Max Chars", | |
| "description": "Max characters of each workspace bootstrap file injected into the system prompt before truncation (default: 12000)." | |
| }, | |
| "bootstrapTotalMaxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Bootstrap Total Max Chars", | |
| "description": "Max total characters across all injected workspace bootstrap files (default: 60000)." | |
| }, | |
| "experimental": { | |
| "type": "object", | |
| "properties": { | |
| "localModelLean": { | |
| "type": "boolean", | |
| "title": "Enable Lean Local Model Mode (Experimental)", | |
| "description": "Experimental local-model prompt trim. When enabled, OpenClaw drops heavyweight default tools like browser, cron, and message for weaker or smaller local-model backends." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Experimental Agent Flags", | |
| "description": "Experimental agent-default flags. Keep these off unless you are intentionally testing a preview surface." | |
| }, | |
| "bootstrapPromptTruncationWarning": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "once" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "always" | |
| } | |
| ], | |
| "title": "Bootstrap Prompt Truncation Warning", | |
| "description": "Inject agent-visible warning text when bootstrap files are truncated: \"off\", \"once\", or \"always\" (default)." | |
| }, | |
| "userTimezone": { | |
| "type": "string" | |
| }, | |
| "startupContext": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Startup Context", | |
| "description": "Enable the startup-context prelude for bare session resets (default: true). Disable this to fall back to prompt-only behavior with no runtime-loaded daily memory." | |
| }, | |
| "applyOn": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "new" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "reset" | |
| } | |
| ] | |
| }, | |
| "title": "Startup Context Apply On", | |
| "description": "Chooses which bare reset commands get startup context: include \"new\", \"reset\", or both (default: [\"new\",\"reset\"])." | |
| }, | |
| "dailyMemoryDays": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 14, | |
| "title": "Startup Context Daily Memory Days", | |
| "description": "Number of dated memory files to load counting backward from today in the configured user timezone (default: 2 for today + yesterday)." | |
| }, | |
| "maxFileBytes": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 65536, | |
| "title": "Startup Context Max File Bytes", | |
| "description": "Maximum bytes allowed per daily memory file when building startup context (default: 16384). Files over this boundary-safe read limit are skipped." | |
| }, | |
| "maxFileChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 10000, | |
| "title": "Startup Context Max File Chars", | |
| "description": "Maximum characters retained from each loaded daily memory file in the startup prelude (default: 1200)." | |
| }, | |
| "maxTotalChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 50000, | |
| "title": "Startup Context Max Total Chars", | |
| "description": "Maximum total characters retained across all loaded daily memory files in the startup prelude (default: 2800). Additional files are truncated from the prelude once this cap is reached." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Startup Context", | |
| "description": "Runtime-owned first-turn prelude for bare \"/new\" and \"/reset\". Use this to control whether recent daily memory files are preloaded into the first prompt instead of asking the model to decide what to read." | |
| }, | |
| "contextLimits": { | |
| "type": "object", | |
| "properties": { | |
| "memoryGetMaxChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 250000, | |
| "title": "Default memory_get Max Chars", | |
| "description": "Default max characters returned by memory_get before truncation metadata and continuation notice are added. Increase to approximate older larger excerpts, but keep it bounded." | |
| }, | |
| "memoryGetDefaultLines": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 5000, | |
| "title": "Default memory_get Line Window", | |
| "description": "Default memory_get line window used when requests omit lines. This controls how many source lines are selected before the max-char cap is applied." | |
| }, | |
| "toolResultMaxChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 250000, | |
| "title": "Default Tool Result Max Chars", | |
| "description": "Default max characters kept for a single live tool result before truncation. This affects both persisted live tool-result writes and overflow-recovery truncation heuristics." | |
| }, | |
| "postCompactionMaxChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 50000, | |
| "title": "Default Post-compaction Max Chars", | |
| "description": "Default max characters retained from AGENTS.md during post-compaction context refresh injection. Lower this to make compaction recovery cheaper, or raise it for agents that depend on longer startup guidance." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Default Context Limits", | |
| "description": "Focused per-agent-context budget defaults for selected high-volume excerpts and injected prompt blocks. Use this to tune bounded read/injection sizes without reopening any unbounded call paths." | |
| }, | |
| "timeFormat": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "auto" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "12" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "24" | |
| } | |
| ] | |
| }, | |
| "envelopeTimezone": { | |
| "type": "string", | |
| "title": "Envelope Timezone", | |
| "description": "Timezone for message envelopes (\"utc\", \"local\", \"user\", or an IANA timezone string)." | |
| }, | |
| "envelopeTimestamp": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "on" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "off" | |
| } | |
| ], | |
| "title": "Envelope Timestamp", | |
| "description": "Include absolute timestamps in message envelopes (\"on\" or \"off\")." | |
| }, | |
| "envelopeElapsed": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "on" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "off" | |
| } | |
| ], | |
| "title": "Envelope Elapsed", | |
| "description": "Include elapsed time in message envelopes (\"on\" or \"off\")." | |
| }, | |
| "contextTokens": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "cliBackends": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "command": { | |
| "type": "string" | |
| }, | |
| "args": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "output": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "json" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "text" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "jsonl" | |
| } | |
| ] | |
| }, | |
| "resumeOutput": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "json" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "text" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "jsonl" | |
| } | |
| ] | |
| }, | |
| "jsonlDialect": { | |
| "type": "string", | |
| "const": "claude-stream-json" | |
| }, | |
| "liveSession": { | |
| "type": "string", | |
| "const": "claude-stdio" | |
| }, | |
| "input": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "arg" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "stdin" | |
| } | |
| ] | |
| }, | |
| "maxPromptArgChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "env": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "clearEnv": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "modelArg": { | |
| "type": "string" | |
| }, | |
| "modelAliases": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "sessionArg": { | |
| "type": "string" | |
| }, | |
| "sessionArgs": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "resumeArgs": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "sessionMode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "always" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "existing" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "none" | |
| } | |
| ] | |
| }, | |
| "sessionIdFields": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "systemPromptArg": { | |
| "type": "string" | |
| }, | |
| "systemPromptFileArg": { | |
| "type": "string" | |
| }, | |
| "systemPromptFileConfigArg": { | |
| "type": "string" | |
| }, | |
| "systemPromptFileConfigKey": { | |
| "type": "string" | |
| }, | |
| "systemPromptMode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "append" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "replace" | |
| } | |
| ] | |
| }, | |
| "systemPromptWhen": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "first" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "always" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "never" | |
| } | |
| ] | |
| }, | |
| "imageArg": { | |
| "type": "string" | |
| }, | |
| "imageMode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "repeat" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "list" | |
| } | |
| ] | |
| }, | |
| "imagePathScope": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "temp" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "workspace" | |
| } | |
| ] | |
| }, | |
| "serialize": { | |
| "type": "boolean" | |
| }, | |
| "reseedFromRawTranscriptWhenUncompacted": { | |
| "type": "boolean" | |
| }, | |
| "reliability": { | |
| "type": "object", | |
| "properties": { | |
| "outputLimits": { | |
| "type": "object", | |
| "properties": { | |
| "maxTurnRawChars": { | |
| "type": "integer", | |
| "minimum": 1024, | |
| "maximum": 67108864 | |
| }, | |
| "maxTurnLines": { | |
| "type": "integer", | |
| "minimum": 100, | |
| "maximum": 100000 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "watchdog": { | |
| "type": "object", | |
| "properties": { | |
| "fresh": { | |
| "type": "object", | |
| "properties": { | |
| "noOutputTimeoutMs": { | |
| "type": "integer", | |
| "minimum": 1000, | |
| "maximum": 9007199254740991 | |
| }, | |
| "noOutputTimeoutRatio": { | |
| "type": "number", | |
| "minimum": 0.05, | |
| "maximum": 0.95 | |
| }, | |
| "minMs": { | |
| "type": "integer", | |
| "minimum": 1000, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxMs": { | |
| "type": "integer", | |
| "minimum": 1000, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "resume": { | |
| "type": "object", | |
| "properties": { | |
| "noOutputTimeoutMs": { | |
| "type": "integer", | |
| "minimum": 1000, | |
| "maximum": 9007199254740991 | |
| }, | |
| "noOutputTimeoutRatio": { | |
| "type": "number", | |
| "minimum": 0.05, | |
| "maximum": 0.95 | |
| }, | |
| "minMs": { | |
| "type": "integer", | |
| "minimum": 1000, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxMs": { | |
| "type": "integer", | |
| "minimum": 1000, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "command" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| "title": "CLI Backends", | |
| "description": "Optional CLI backends for text-only fallback (claude-cli, etc.)." | |
| }, | |
| "memorySearch": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Memory Search", | |
| "description": "Master toggle for memory search indexing and retrieval behavior on this agent profile. Keep enabled for semantic recall, and disable when you want fully stateless responses." | |
| }, | |
| "sources": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "memory" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "sessions" | |
| } | |
| ] | |
| }, | |
| "title": "Memory Search Sources", | |
| "description": "Chooses which sources are indexed: \"memory\" reads MEMORY.md + memory files, and \"sessions\" includes transcript history. Keep [\"memory\"] unless you need recall from prior chat transcripts." | |
| }, | |
| "extraPaths": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Extra Memory Paths", | |
| "description": "Adds extra directories or .md files to the memory index beyond default memory files. Use this when key reference docs live elsewhere in your repo; when multimodal memory is enabled, matching image/audio files under these paths are also eligible for indexing." | |
| }, | |
| "qmd": { | |
| "type": "object", | |
| "properties": { | |
| "extraCollections": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "path": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "pattern": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "path" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| "title": "QMD Extra Collections", | |
| "description": "Use this when you need directional transcript search across agents; add collections here to scope QMD recalls without creating a shared global transcript namespace." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Memory Search QMD Collections", | |
| "description": "Use this when one agent should query another agent's transcript collections; QMD-specific extra collections let you opt into cross-agent memory search without flattening everything into one shared namespace." | |
| }, | |
| "multimodal": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Memory Search Multimodal", | |
| "description": "Enables image/audio memory indexing from extraPaths. This currently requires Gemini embedding-2, keeps the default memory roots Markdown-only, disables memory-search fallback providers, and uploads matching binary content to the configured remote embedding provider." | |
| }, | |
| "modalities": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "image" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "audio" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "title": "Memory Search Multimodal Modalities", | |
| "description": "Selects which multimodal file types are indexed from extraPaths: \"image\", \"audio\", or \"all\". Keep this narrow to avoid indexing large binary corpora unintentionally." | |
| }, | |
| "maxFileBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Search Multimodal Max File Bytes", | |
| "description": "Sets the maximum bytes allowed per multimodal file before it is skipped during memory indexing. Use this to cap upload cost and indexing latency, or raise it for short high-quality audio clips." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Memory Search Multimodal", | |
| "description": "Optional multimodal memory settings for indexing image and audio files from configured extra paths. Keep this off unless your embedding model explicitly supports cross-modal embeddings, and set `memorySearch.fallback` to \"none\" while it is enabled. Matching files are uploaded to the configured remote embedding provider during indexing." | |
| }, | |
| "experimental": { | |
| "type": "object", | |
| "properties": { | |
| "sessionMemory": { | |
| "type": "boolean", | |
| "title": "Memory Search Session Index (Experimental)", | |
| "description": "Indexes session transcripts into memory search so responses can reference prior chat turns. Keep this off unless transcript recall is needed, because indexing cost and storage usage both increase." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "title": "Memory Search Provider", | |
| "description": "Selects the embedding backend used to build/query memory vectors: \"openai\", \"gemini\", \"voyage\", \"mistral\", \"bedrock\", \"lmstudio\", \"ollama\", or \"local\". Keep your most reliable provider here and configure fallback for resilience." | |
| }, | |
| "remote": { | |
| "type": "object", | |
| "properties": { | |
| "baseUrl": { | |
| "type": "string", | |
| "title": "Remote Embedding Base URL", | |
| "description": "Overrides the embedding API endpoint, such as an OpenAI-compatible proxy or custom Gemini base URL. Use this only when routing through your own gateway or vendor endpoint; keep provider defaults otherwise." | |
| }, | |
| "apiKey": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Remote Embedding API Key", | |
| "description": "Supplies a dedicated API key for remote embedding calls used by memory indexing and query-time embeddings. Use this when memory embeddings should use different credentials than global defaults or environment variables." | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| }, | |
| "title": "Remote Embedding Headers", | |
| "description": "Adds custom HTTP headers to remote embedding requests, merged with provider defaults. Use this for proxy auth and tenant routing headers, and keep values minimal to avoid leaking sensitive metadata." | |
| }, | |
| "nonBatchConcurrency": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Remote Non-Batch Embedding Concurrency", | |
| "description": "Controls concurrent inline embedding requests during non-batch memory indexing. Use a low value for local or small self-hosted providers such as Ollama; batch embedding concurrency is configured separately under remote.batch." | |
| }, | |
| "batch": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Remote Batch Embedding Enabled", | |
| "description": "Enables provider batch APIs for embedding jobs when supported (OpenAI/Gemini), improving throughput on larger index runs. Keep this enabled unless debugging provider batch failures or running very small workloads." | |
| }, | |
| "wait": { | |
| "type": "boolean", | |
| "title": "Remote Batch Wait for Completion", | |
| "description": "Waits for batch embedding jobs to fully finish before the indexing operation completes. Keep this enabled for deterministic indexing state; disable only if you accept delayed consistency." | |
| }, | |
| "concurrency": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Remote Batch Concurrency", | |
| "description": "Limits how many embedding batch jobs run at the same time during indexing (default: 2). Increase carefully for faster bulk indexing, but watch provider rate limits and queue errors." | |
| }, | |
| "pollIntervalMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Remote Batch Poll Interval (ms)", | |
| "description": "Controls how often the system polls provider APIs for batch job status in milliseconds (default: 2000). Use longer intervals to reduce API chatter, or shorter intervals for faster completion detection." | |
| }, | |
| "timeoutMinutes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Remote Batch Timeout (min)", | |
| "description": "Sets the maximum wait time for a full embedding batch operation in minutes (default: 60). Increase for very large corpora or slower providers, and lower it to fail fast in automation-heavy flows." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "fallback": { | |
| "type": "string", | |
| "title": "Memory Search Fallback", | |
| "description": "Backup provider used when primary embeddings fail: \"openai\", \"gemini\", \"voyage\", \"mistral\", \"bedrock\", \"lmstudio\", \"ollama\", \"local\", or \"none\". Set a real fallback for production reliability; use \"none\" only if you prefer explicit failures." | |
| }, | |
| "model": { | |
| "type": "string", | |
| "title": "Memory Search Model", | |
| "description": "Embedding model override used by the selected memory provider when a non-default model is required. Set this only when you need explicit recall quality/cost tuning beyond provider defaults." | |
| }, | |
| "inputType": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Memory Search Input Type", | |
| "description": "Use this optional provider-specific `input_type` value only when the same label should apply to both query and document embedding requests. For asymmetric providers, prefer queryInputType and documentInputType." | |
| }, | |
| "queryInputType": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Memory Search Query Input Type", | |
| "description": "Optional provider-specific `input_type` value for query-time memory embeddings. Use this with OpenAI-compatible asymmetric embedding endpoints that require a query label." | |
| }, | |
| "documentInputType": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Memory Search Document Input Type", | |
| "description": "Optional provider-specific `input_type` value for document and indexing memory embeddings. Use this with OpenAI-compatible asymmetric embedding endpoints that require a passage or document label." | |
| }, | |
| "outputDimensionality": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Search Output Dimensionality", | |
| "description": "Provider-specific output vector size override for memory embeddings. Gemini embedding-2 supports 768, 1536, or 3072; Bedrock families such as Titan V2, Cohere V4, and Nova expose their own allowed sizes. Expect a full reindex when you change it because stored vector dimensions must stay consistent." | |
| }, | |
| "local": { | |
| "type": "object", | |
| "properties": { | |
| "modelPath": { | |
| "type": "string", | |
| "title": "Local Embedding Model Path", | |
| "description": "Specifies the local embedding model source for local memory search, such as a GGUF file path or `hf:` URI. Use this only when provider is `local`, and verify model compatibility before large index rebuilds." | |
| }, | |
| "modelCacheDir": { | |
| "type": "string" | |
| }, | |
| "contextSize": { | |
| "anyOf": [ | |
| { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| { | |
| "type": "string", | |
| "const": "auto" | |
| } | |
| ], | |
| "title": "Local Embedding Context Size", | |
| "description": "Context window size passed to node-llama-cpp when creating the embedding context (default: 4096). 4096 safely covers typical memory-search chunks (128–512 tokens) while keeping non-weight VRAM bounded. Lower to 1024–2048 on resource-constrained hosts. Set to \"auto\" to let node-llama-cpp use the model's trained maximum — not recommended for large models (e.g. Qwen3-Embedding-8B trained on 40 960 tokens can push VRAM from ~8.8 GB to ~32 GB)." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "store": { | |
| "type": "object", | |
| "properties": { | |
| "driver": { | |
| "type": "string", | |
| "const": "sqlite" | |
| }, | |
| "path": { | |
| "type": "string", | |
| "title": "Memory Search Index Path", | |
| "description": "Sets where the SQLite memory index is stored on disk for each agent. Keep the default `~/.openclaw/memory/{agentId}.sqlite` unless you need custom storage placement or backup policy alignment." | |
| }, | |
| "fts": { | |
| "type": "object", | |
| "properties": { | |
| "tokenizer": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "unicode61" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "trigram" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "vector": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Memory Search Vector Index", | |
| "description": "Enables the sqlite-vec extension used for vector similarity queries in memory search (default: true). Keep this enabled for normal semantic recall; disable only for debugging or fallback-only operation." | |
| }, | |
| "extensionPath": { | |
| "type": "string", | |
| "title": "Memory Search Vector Extension Path", | |
| "description": "Overrides the auto-discovered sqlite-vec extension library path (`.dylib`, `.so`, or `.dll`). Use this when your runtime cannot find sqlite-vec automatically or you pin a known-good build." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "chunking": { | |
| "type": "object", | |
| "properties": { | |
| "tokens": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Chunk Tokens", | |
| "description": "Chunk size in tokens used when splitting memory sources before embedding/indexing. Increase for broader context per chunk, or lower to improve precision on pinpoint lookups." | |
| }, | |
| "overlap": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Chunk Overlap Tokens", | |
| "description": "Token overlap between adjacent memory chunks to preserve context continuity near split boundaries. Use modest overlap to reduce boundary misses without inflating index size too aggressively." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "sync": { | |
| "type": "object", | |
| "properties": { | |
| "onSessionStart": { | |
| "type": "boolean", | |
| "title": "Index on Session Start", | |
| "description": "Triggers a memory index sync when a session starts so early turns see fresh memory content. Keep enabled when startup freshness matters more than initial turn latency." | |
| }, | |
| "onSearch": { | |
| "type": "boolean", | |
| "title": "Index on Search (Lazy)", | |
| "description": "Uses lazy sync by scheduling reindex on search after content changes are detected. Keep enabled for lower idle overhead, or disable if you require pre-synced indexes before any query." | |
| }, | |
| "watch": { | |
| "type": "boolean", | |
| "title": "Watch Memory Files", | |
| "description": "Watches memory files and schedules index updates from file-change events (chokidar). Enable for near-real-time freshness; disable on very large workspaces if watch churn is too noisy." | |
| }, | |
| "watchDebounceMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Watch Debounce (ms)", | |
| "description": "Debounce window in milliseconds for coalescing rapid file-watch events before reindex runs. Increase to reduce churn on frequently-written files, or lower for faster freshness." | |
| }, | |
| "intervalMinutes": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "embeddingBatchTimeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Embedding Batch Timeout (s)", | |
| "description": "Overrides the timeout for inline embedding batches during memory indexing. Leave unset to use provider defaults: 600 seconds for local/self-hosted providers such as local, Ollama, and LM Studio, and 120 seconds for hosted providers." | |
| }, | |
| "sessions": { | |
| "type": "object", | |
| "properties": { | |
| "deltaBytes": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Session Delta Bytes", | |
| "description": "Requires at least this many newly appended bytes before session transcript changes trigger reindex (default: 100000). Increase to reduce frequent small reindexes, or lower for faster transcript freshness." | |
| }, | |
| "deltaMessages": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Session Delta Messages", | |
| "description": "Requires at least this many appended transcript messages before reindex is triggered (default: 50). Lower this for near-real-time transcript recall, or raise it to reduce indexing churn." | |
| }, | |
| "postCompactionForce": { | |
| "type": "boolean", | |
| "title": "Force Reindex After Compaction", | |
| "description": "Forces a session memory-search reindex after compaction-triggered transcript updates (default: true). Keep enabled when compacted summaries must be immediately searchable, or disable to reduce write-time indexing pressure." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "query": { | |
| "type": "object", | |
| "properties": { | |
| "maxResults": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Search Max Results", | |
| "description": "Maximum number of memory hits returned from search before downstream reranking and prompt injection. Raise for broader recall, or lower for tighter prompts and faster responses." | |
| }, | |
| "minScore": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1, | |
| "title": "Memory Search Min Score", | |
| "description": "Minimum relevance score threshold for including memory results in final recall output. Increase to reduce weak/noisy matches, or lower when you need more permissive retrieval." | |
| }, | |
| "hybrid": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Memory Search Hybrid", | |
| "description": "Combines BM25 keyword matching with vector similarity for better recall on mixed exact + semantic queries. Keep enabled unless you are isolating ranking behavior for troubleshooting." | |
| }, | |
| "vectorWeight": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1, | |
| "title": "Memory Search Vector Weight", | |
| "description": "Controls how strongly semantic similarity influences hybrid ranking (0-1). Increase when paraphrase matching matters more than exact terms; decrease for stricter keyword emphasis." | |
| }, | |
| "textWeight": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1, | |
| "title": "Memory Search Text Weight", | |
| "description": "Controls how strongly BM25 keyword relevance influences hybrid ranking (0-1). Increase for exact-term matching; decrease when semantic matches should rank higher." | |
| }, | |
| "candidateMultiplier": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Search Hybrid Candidate Multiplier", | |
| "description": "Expands the candidate pool before reranking (default: 4). Raise this for better recall on noisy corpora, but expect more compute and slightly slower searches." | |
| }, | |
| "mmr": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Memory Search MMR Re-ranking", | |
| "description": "Adds MMR reranking to diversify results and reduce near-duplicate snippets in a single answer window. Enable when recall looks repetitive; keep off for strict score ordering." | |
| }, | |
| "lambda": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1, | |
| "title": "Memory Search MMR Lambda", | |
| "description": "Sets MMR relevance-vs-diversity balance (0 = most diverse, 1 = most relevant, default: 0.7). Lower values reduce repetition; higher values keep tightly relevant but may duplicate." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "temporalDecay": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Memory Search Temporal Decay", | |
| "description": "Applies recency decay so newer memory can outrank older memory when scores are close. Enable when timeliness matters; keep off for timeless reference knowledge." | |
| }, | |
| "halfLifeDays": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Search Temporal Decay Half-life (Days)", | |
| "description": "Controls how fast older memory loses rank when temporal decay is enabled (half-life in days, default: 30). Lower values prioritize recent context more aggressively." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "cache": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Memory Search Embedding Cache", | |
| "description": "Caches computed chunk embeddings in SQLite so reindexing and incremental updates run faster (default: true). Keep this enabled unless investigating cache correctness or minimizing disk usage." | |
| }, | |
| "maxEntries": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Memory Search Embedding Cache Max Entries", | |
| "description": "Sets a best-effort upper bound on cached embeddings kept in SQLite for memory search. Use this when controlling disk growth matters more than peak reindex speed." | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Memory Search", | |
| "description": "Vector search over MEMORY.md and memory/*.md (per-agent overrides supported)." | |
| }, | |
| "contextPruning": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "cache-ttl" | |
| } | |
| ] | |
| }, | |
| "ttl": { | |
| "type": "string" | |
| }, | |
| "keepLastAssistants": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "softTrimRatio": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1 | |
| }, | |
| "hardClearRatio": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1 | |
| }, | |
| "minPrunableToolChars": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "tools": { | |
| "type": "object", | |
| "properties": { | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "softTrim": { | |
| "type": "object", | |
| "properties": { | |
| "maxChars": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "headChars": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "tailChars": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "hardClear": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "placeholder": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "compaction": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "default" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "safeguard" | |
| } | |
| ], | |
| "title": "Compaction Mode", | |
| "description": "Compaction strategy mode: \"default\" uses baseline behavior, while \"safeguard\" applies stricter guardrails to preserve recent context. Keep \"default\" unless you observe aggressive history loss near limit boundaries." | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "title": "Compaction Provider", | |
| "description": "Id of a registered compaction provider plugin used for summarization. When set and the provider is registered, its summarize() method is called instead of the built-in summarizeInStages pipeline. Falls back to built-in on provider failure. Leave unset to use the default built-in summarization." | |
| }, | |
| "reserveTokens": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Compaction Reserve Tokens", | |
| "description": "Token headroom reserved for reply generation and tool output after compaction runs. Use higher reserves for verbose/tool-heavy sessions, and lower reserves when maximizing retained history matters more." | |
| }, | |
| "keepRecentTokens": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Compaction Keep Recent Tokens", | |
| "description": "Minimum token budget preserved from the most recent conversation window during compaction. Use higher values to protect immediate context continuity and lower values to keep more long-tail history." | |
| }, | |
| "reserveTokensFloor": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Compaction Reserve Token Floor", | |
| "description": "Minimum floor enforced for reserveTokens in Pi compaction paths (0 disables the floor guard). Use a non-zero floor to avoid over-aggressive compression under fluctuating token estimates." | |
| }, | |
| "maxHistoryShare": { | |
| "type": "number", | |
| "minimum": 0.1, | |
| "maximum": 0.9, | |
| "title": "Compaction Max History Share", | |
| "description": "Maximum fraction of total context budget allowed for retained history after compaction (range 0.1-0.9). Use lower shares for more generation headroom or higher shares for deeper historical continuity." | |
| }, | |
| "customInstructions": { | |
| "type": "string" | |
| }, | |
| "identifierPolicy": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "strict" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "custom" | |
| } | |
| ], | |
| "title": "Compaction Identifier Policy", | |
| "description": "Identifier-preservation policy for compaction summaries: \"strict\" prepends built-in opaque-identifier retention guidance (default), \"off\" disables this prefix, and \"custom\" uses identifierInstructions. Keep \"strict\" unless you have a specific compatibility need." | |
| }, | |
| "identifierInstructions": { | |
| "type": "string", | |
| "title": "Compaction Identifier Instructions", | |
| "description": "Custom identifier-preservation instruction text used when identifierPolicy=\"custom\". Keep this explicit and safety-focused so compaction summaries do not rewrite opaque IDs, URLs, hosts, or ports." | |
| }, | |
| "recentTurnsPreserve": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 12, | |
| "title": "Compaction Preserve Recent Turns", | |
| "description": "Number of most recent user/assistant turns kept verbatim outside safeguard summarization (default: 3). Raise this to preserve exact recent dialogue context, or lower it to maximize compaction savings." | |
| }, | |
| "qualityGuard": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Compaction Quality Guard Enabled", | |
| "description": "Enables summary quality audits and regeneration retries for safeguard compaction. Default: true in safeguard mode." | |
| }, | |
| "maxRetries": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Compaction Quality Guard Max Retries", | |
| "description": "Maximum number of regeneration retries after a failed safeguard summary quality audit. Use small values to bound extra latency and token cost." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Compaction Quality Guard", | |
| "description": "Quality-audit retry settings for safeguard compaction summaries. Safeguard mode enables this by default; set enabled: false to skip summary audits and regeneration." | |
| }, | |
| "midTurnPrecheck": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Compaction Mid-turn Precheck Enabled", | |
| "description": "Enable structured mid-turn context pressure checks for Pi tool loops. Default: false. Keep disabled unless long tool-heavy sessions hit context overflow before normal turn-end compaction can run." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Compaction Mid-turn Precheck", | |
| "description": "Optional Pi tool-loop precheck that detects context pressure after a tool result is appended and before the next model call. When enabled, OpenClaw reuses existing precheck recovery to truncate tool results or compact before retrying." | |
| }, | |
| "postIndexSync": { | |
| "type": "string", | |
| "enum": [ | |
| "off", | |
| "async", | |
| "await" | |
| ], | |
| "title": "Compaction Post-Index Sync", | |
| "description": "Controls post-compaction session memory reindex mode: \"off\", \"async\", or \"await\" (default: \"async\"). Use \"await\" for strongest freshness, \"async\" for lower compaction latency, and \"off\" only when session-memory sync is handled elsewhere." | |
| }, | |
| "postCompactionSections": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Post-Compaction Context Sections", | |
| "description": "AGENTS.md H2/H3 section names re-injected after compaction so the agent reruns critical startup guidance. Leave unset to use \"Session Startup\"/\"Red Lines\" with legacy fallback to \"Every Session\"/\"Safety\"; set to [] to disable reinjection entirely." | |
| }, | |
| "model": { | |
| "type": "string", | |
| "title": "Compaction Model Override", | |
| "description": "Optional provider/model override used only for compaction summarization. Set this when you want compaction to run on a different model than the session default, and leave it unset to keep using the primary agent model." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Compaction Timeout (Seconds)", | |
| "description": "Maximum time in seconds allowed for a single compaction operation before it is aborted (default: 900). Increase this for very large sessions that need more time to summarize, or decrease it to fail faster on unresponsive models." | |
| }, | |
| "memoryFlush": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Compaction Memory Flush Enabled", | |
| "description": "Enables pre-compaction memory flush before the runtime performs stronger history reduction near token limits. Keep enabled unless you intentionally disable memory side effects in constrained environments." | |
| }, | |
| "model": { | |
| "type": "string", | |
| "title": "Compaction Memory Flush Model Override", | |
| "description": "Optional provider/model override used only for pre-compaction memory flush turns. Set this to a local model such as ollama/qwen3:8b when durable memory extraction should avoid the active session's paid model. The override is exact and does not inherit the active model fallback chain." | |
| }, | |
| "softThresholdTokens": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Compaction Memory Flush Soft Threshold", | |
| "description": "Threshold distance to compaction (in tokens) that triggers pre-compaction memory flush execution. Use earlier thresholds for safer persistence, or tighter thresholds for lower flush frequency." | |
| }, | |
| "forceFlushTranscriptBytes": { | |
| "anyOf": [ | |
| { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| { | |
| "type": "string" | |
| } | |
| ], | |
| "title": "Compaction Memory Flush Transcript Size Threshold", | |
| "description": "Forces pre-compaction memory flush when transcript file size reaches this threshold (bytes or strings like \"2mb\"). Use this to prevent long-session hangs even when token counters are stale; set to 0 to disable." | |
| }, | |
| "prompt": { | |
| "type": "string", | |
| "title": "Compaction Memory Flush Prompt", | |
| "description": "User-prompt template used for the pre-compaction memory flush turn when generating memory candidates. Use this only when you need custom extraction instructions beyond the default memory flush behavior." | |
| }, | |
| "systemPrompt": { | |
| "type": "string", | |
| "title": "Compaction Memory Flush System Prompt", | |
| "description": "System-prompt override for the pre-compaction memory flush turn to control extraction style and safety constraints. Use carefully so custom instructions do not reduce memory quality or leak sensitive context." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Compaction Memory Flush", | |
| "description": "Pre-compaction memory flush settings that run an agentic memory write before heavy compaction. Keep enabled for long sessions so salient context is persisted before aggressive trimming." | |
| }, | |
| "truncateAfterCompaction": { | |
| "type": "boolean", | |
| "title": "Rotate Transcript After Compaction", | |
| "description": "When enabled, rotates the active session JSONL file after compaction so future turns load only the summary and unsummarized tail while the previous full transcript remains archived. Prevents unbounded active transcript growth in long-running sessions. Default: false." | |
| }, | |
| "maxActiveTranscriptBytes": { | |
| "anyOf": [ | |
| { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| { | |
| "type": "string" | |
| } | |
| ], | |
| "title": "Compaction Active Transcript Size Threshold", | |
| "description": "Triggers normal local compaction when the active session transcript reaches this size (bytes or strings like \"20mb\"). Requires truncateAfterCompaction so successful compaction can rotate to a smaller successor transcript; set to 0 or leave unset to disable. This never splits raw transcript bytes." | |
| }, | |
| "notifyUser": { | |
| "type": "boolean", | |
| "title": "Compaction Notify User", | |
| "description": "When enabled, sends brief compaction notices to the user when compaction starts and when it completes (for example, '🧹 Compacting context...' and '🧹 Compaction complete'). Disabled by default to keep compaction silent and non-intrusive." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Compaction", | |
| "description": "Compaction tuning for when context nears token limits, including history share, reserve headroom, and pre-compaction memory flush behavior. Use this when long-running sessions need stable continuity under tight context windows." | |
| }, | |
| "runRetries": { | |
| "type": "object", | |
| "properties": { | |
| "base": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Run Retries Base", | |
| "description": "Base number of run retry iterations for the embedded Pi runner's outer run loop (default: 24)." | |
| }, | |
| "perProfile": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Run Retries Per Profile", | |
| "description": "Additional run retry iterations granted per fallback profile candidate (default: 8)." | |
| }, | |
| "min": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Run Retries Minimum", | |
| "description": "Minimum absolute limit for run retry iterations (default: 32)." | |
| }, | |
| "max": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Run Retries Maximum", | |
| "description": "Maximum absolute limit for run retry iterations to prevent runaway execution (default: 160)." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Run Retries", | |
| "description": "Outer run loop retry iteration boundaries for the embedded Pi runner to prevent infinite execution loops during failure recovery." | |
| }, | |
| "embeddedPi": { | |
| "type": "object", | |
| "properties": { | |
| "projectSettingsPolicy": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "trusted" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "sanitize" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "ignore" | |
| } | |
| ], | |
| "title": "Embedded Pi Project Settings Policy", | |
| "description": "How embedded Pi handles workspace-local `.pi/config/settings.json`: \"sanitize\" (default) strips shellPath/shellCommandPrefix, \"ignore\" disables project settings entirely, and \"trusted\" applies project settings as-is." | |
| }, | |
| "executionContract": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "default" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "strict-agentic" | |
| } | |
| ], | |
| "title": "Embedded Pi Execution Contract", | |
| "description": "Embedded Pi execution contract: \"default\" keeps the standard runner behavior, while \"strict-agentic\" keeps OpenAI/OpenAI Codex GPT-5-family runs acting until they hit a real blocker instead of stopping at plans or filler." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Embedded Pi", | |
| "description": "Embedded Pi runner hardening controls for how workspace-local Pi settings are trusted and applied in OpenClaw sessions." | |
| }, | |
| "thinkingDefault": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "minimal" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "low" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "medium" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "high" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "xhigh" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "adaptive" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "max" | |
| } | |
| ] | |
| }, | |
| "verboseDefault": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "on" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "full" | |
| } | |
| ] | |
| }, | |
| "toolProgressDetail": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "explain" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "raw" | |
| } | |
| ] | |
| }, | |
| "reasoningDefault": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "on" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "stream" | |
| } | |
| ] | |
| }, | |
| "elevatedDefault": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "on" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "ask" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "full" | |
| } | |
| ] | |
| }, | |
| "blockStreamingDefault": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "on" | |
| } | |
| ] | |
| }, | |
| "blockStreamingBreak": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "text_end" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "message_end" | |
| } | |
| ] | |
| }, | |
| "blockStreamingChunk": { | |
| "type": "object", | |
| "properties": { | |
| "minChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "breakPreference": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "paragraph" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "newline" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "sentence" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "blockStreamingCoalesce": { | |
| "type": "object", | |
| "properties": { | |
| "minChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "idleMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "humanDelay": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "natural" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "custom" | |
| } | |
| ], | |
| "title": "Human Delay Mode", | |
| "description": "Delay style for block replies (\"off\", \"natural\", \"custom\")." | |
| }, | |
| "minMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Human Delay Min (ms)", | |
| "description": "Minimum delay in ms for custom humanDelay (default: 800)." | |
| }, | |
| "maxMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Human Delay Max (ms)", | |
| "description": "Maximum delay in ms for custom humanDelay (default: 2500)." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "mediaMaxMb": { | |
| "type": "number", | |
| "exclusiveMinimum": 0 | |
| }, | |
| "imageMaxDimensionPx": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Image Max Dimension (px)", | |
| "description": "Max image side length in pixels when sanitizing transcript/tool-result image payloads (default: 1200)." | |
| }, | |
| "typingIntervalSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "typingMode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "never" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "instant" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "thinking" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "message" | |
| } | |
| ] | |
| }, | |
| "heartbeat": { | |
| "type": "object", | |
| "properties": { | |
| "every": { | |
| "type": "string" | |
| }, | |
| "activeHours": { | |
| "type": "object", | |
| "properties": { | |
| "start": { | |
| "type": "string" | |
| }, | |
| "end": { | |
| "type": "string" | |
| }, | |
| "timezone": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "session": { | |
| "type": "string" | |
| }, | |
| "includeReasoning": { | |
| "type": "boolean" | |
| }, | |
| "target": { | |
| "type": "string" | |
| }, | |
| "directPolicy": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "block" | |
| } | |
| ], | |
| "title": "Heartbeat Direct Policy", | |
| "description": "Controls whether heartbeat delivery may target direct/DM chats: \"allow\" (default) permits DM delivery and \"block\" suppresses direct-target sends." | |
| }, | |
| "to": { | |
| "type": "string" | |
| }, | |
| "accountId": { | |
| "type": "string" | |
| }, | |
| "prompt": { | |
| "type": "string" | |
| }, | |
| "includeSystemPromptSection": { | |
| "type": "boolean", | |
| "title": "Heartbeat Include System Prompt Section", | |
| "description": "Includes the default agent's ## Heartbeats system prompt section when true. Turn this off to keep heartbeat runtime behavior while omitting the heartbeat prompt instructions from the agent system prompt." | |
| }, | |
| "ackMaxChars": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "suppressToolErrorWarnings": { | |
| "type": "boolean", | |
| "title": "Heartbeat Suppress Tool Error Warnings", | |
| "description": "Suppress tool error warning payloads during heartbeat runs." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Heartbeat Timeout (Seconds)", | |
| "description": "Maximum time in seconds allowed for a heartbeat agent turn before it is aborted. Leave unset to use agents.defaults.timeoutSeconds." | |
| }, | |
| "lightContext": { | |
| "type": "boolean" | |
| }, | |
| "isolatedSession": { | |
| "type": "boolean" | |
| }, | |
| "skipWhenBusy": { | |
| "type": "boolean", | |
| "title": "Heartbeat Skip When Busy", | |
| "description": "When true, defer heartbeat turns on this agent's extra busy lanes: its own session-keyed subagent or nested command work. Cron lanes always defer heartbeat turns." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "maxConcurrent": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "subagents": { | |
| "type": "object", | |
| "properties": { | |
| "delegationMode": { | |
| "type": "string", | |
| "enum": [ | |
| "suggest", | |
| "prefer" | |
| ], | |
| "title": "Sub-agent Delegation Mode", | |
| "description": "Prompt-only sub-agent delegation strength. \"suggest\" keeps the default guidance; \"prefer\" strongly instructs the main agent to delegate anything more involved than a direct reply via sessions_spawn." | |
| }, | |
| "allowAgents": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "maxConcurrent": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxSpawnDepth": { | |
| "description": "Maximum nesting depth for sub-agent spawning. 1 = no nesting (default), 2 = sub-agents can spawn sub-sub-agents.", | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 5 | |
| }, | |
| "maxChildrenPerAgent": { | |
| "description": "Maximum number of active children a single agent session can spawn (default: 5).", | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 20 | |
| }, | |
| "archiveAfterMinutes": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "model": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string" | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "thinking": { | |
| "type": "string" | |
| }, | |
| "runTimeoutSeconds": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "announceTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "requireAgentId": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "sandbox": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "non-main" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "backend": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "workspaceAccess": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "none" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "ro" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "rw" | |
| } | |
| ] | |
| }, | |
| "sessionToolsVisibility": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "spawned" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "scope": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "session" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "agent" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "shared" | |
| } | |
| ] | |
| }, | |
| "workspaceRoot": { | |
| "type": "string" | |
| }, | |
| "docker": { | |
| "type": "object", | |
| "properties": { | |
| "image": { | |
| "type": "string" | |
| }, | |
| "containerPrefix": { | |
| "type": "string" | |
| }, | |
| "workdir": { | |
| "type": "string" | |
| }, | |
| "readOnlyRoot": { | |
| "type": "boolean" | |
| }, | |
| "tmpfs": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "network": { | |
| "type": "string" | |
| }, | |
| "user": { | |
| "type": "string" | |
| }, | |
| "capDrop": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "env": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "setupCommand": {}, | |
| "pidsLimit": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "memory": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| } | |
| ] | |
| }, | |
| "memorySwap": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| } | |
| ] | |
| }, | |
| "cpus": { | |
| "type": "number", | |
| "exclusiveMinimum": 0 | |
| }, | |
| "gpus": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Sandbox Docker GPUs", | |
| "description": "Optional Docker GPU passthrough value passed to --gpus, for example \"all\" or \"device=GPU-uuid\". Requires a compatible host runtime such as NVIDIA Container Toolkit." | |
| }, | |
| "ulimits": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "soft": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "hard": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| }, | |
| "seccompProfile": { | |
| "type": "string" | |
| }, | |
| "apparmorProfile": { | |
| "type": "string" | |
| }, | |
| "dns": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "extraHosts": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "binds": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "dangerouslyAllowReservedContainerTargets": { | |
| "type": "boolean" | |
| }, | |
| "dangerouslyAllowExternalBindSources": { | |
| "type": "boolean" | |
| }, | |
| "dangerouslyAllowContainerNamespaceJoin": { | |
| "type": "boolean", | |
| "title": "Sandbox Docker Allow Container Namespace Join", | |
| "description": "DANGEROUS break-glass override that allows sandbox Docker network mode container:<id>. This joins another container namespace and weakens sandbox isolation." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "ssh": { | |
| "type": "object", | |
| "properties": { | |
| "target": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "command": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "workspaceRoot": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "strictHostKeyChecking": { | |
| "type": "boolean" | |
| }, | |
| "updateHostKeys": { | |
| "type": "boolean" | |
| }, | |
| "identityFile": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "certificateFile": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "knownHostsFile": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "identityData": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "certificateData": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "knownHostsData": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "browser": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "image": { | |
| "type": "string" | |
| }, | |
| "containerPrefix": { | |
| "type": "string" | |
| }, | |
| "network": { | |
| "type": "string", | |
| "title": "Sandbox Browser Network", | |
| "description": "Docker network for sandbox browser containers (default: openclaw-sandbox-browser). Avoid bridge if you need stricter isolation." | |
| }, | |
| "cdpPort": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "cdpSourceRange": { | |
| "type": "string", | |
| "title": "Sandbox Browser CDP Source Port Range", | |
| "description": "Optional CIDR allowlist for container-edge CDP ingress (for example 172.21.0.1/32)." | |
| }, | |
| "vncPort": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "noVncPort": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "headless": { | |
| "type": "boolean" | |
| }, | |
| "enableNoVnc": { | |
| "type": "boolean" | |
| }, | |
| "allowHostControl": { | |
| "type": "boolean" | |
| }, | |
| "autoStart": { | |
| "type": "boolean" | |
| }, | |
| "autoStartTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "binds": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "prune": { | |
| "type": "object", | |
| "properties": { | |
| "idleHours": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxAgeDays": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Defaults", | |
| "description": "Shared default settings inherited by agents unless overridden per entry in agents.list. Use defaults to enforce consistent baseline behavior and reduce duplicated per-agent configuration." | |
| }, | |
| "list": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string" | |
| }, | |
| "default": { | |
| "type": "boolean" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "workspace": { | |
| "type": "string" | |
| }, | |
| "agentDir": { | |
| "type": "string" | |
| }, | |
| "systemPromptOverride": { | |
| "type": "string" | |
| }, | |
| "agentRuntime": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "title": "Legacy Agent Runtime ID", | |
| "description": "Legacy per-agent runtime id. It is ignored by runtime selection; configure a provider/model runtime id instead." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Legacy Agent Runtime", | |
| "description": "Legacy per-agent runtime policy. It is ignored by runtime selection; configure provider/model runtime policy instead. Run openclaw doctor --fix to remove stale values." | |
| }, | |
| "embeddedHarness": { | |
| "type": "object", | |
| "properties": { | |
| "runtime": { | |
| "type": "string", | |
| "title": "Agent Legacy Embedded Harness Runtime", | |
| "description": "Legacy per-agent embedded harness runtime. Runtime selection ignores it; use provider/model runtime policy." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Legacy Embedded Harness", | |
| "description": "Legacy per-agent embedded harness input. Run openclaw doctor --fix to remove it and use provider/model runtime policy where needed." | |
| }, | |
| "model": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string" | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "models": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "alias": { | |
| "type": "string" | |
| }, | |
| "params": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {} | |
| }, | |
| "agentRuntime": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "title": "Agent Model Runtime ID", | |
| "description": "Per-agent model runtime id: \"pi\", \"auto\", a registered plugin harness id such as \"codex\", or a supported CLI backend alias such as \"claude-cli\"." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Model Runtime", | |
| "description": "Optional per-model runtime policy for this agent. Use this for agent-specific model exceptions instead of setting a whole-agent runtime." | |
| }, | |
| "streaming": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Agent Model Overrides", | |
| "description": "Per-agent model catalog overrides keyed by full provider/model IDs." | |
| }, | |
| "thinkingDefault": { | |
| "type": "string", | |
| "enum": [ | |
| "off", | |
| "minimal", | |
| "low", | |
| "medium", | |
| "high", | |
| "xhigh", | |
| "adaptive", | |
| "max" | |
| ], | |
| "title": "Agent Thinking Default", | |
| "description": "Optional per-agent default thinking level. Overrides agents.defaults.thinkingDefault for this agent when no per-message or session override is set." | |
| }, | |
| "verboseDefault": { | |
| "type": "string", | |
| "enum": [ | |
| "off", | |
| "on", | |
| "full" | |
| ] | |
| }, | |
| "toolProgressDetail": { | |
| "type": "string", | |
| "enum": [ | |
| "explain", | |
| "raw" | |
| ] | |
| }, | |
| "reasoningDefault": { | |
| "type": "string", | |
| "enum": [ | |
| "on", | |
| "off", | |
| "stream" | |
| ], | |
| "title": "Agent Reasoning Default", | |
| "description": "Optional per-agent default reasoning visibility (on|off|stream). Applies when no per-message or session reasoning override is set." | |
| }, | |
| "fastModeDefault": { | |
| "type": "boolean", | |
| "title": "Agent Fast Mode Default", | |
| "description": "Optional per-agent default for fast mode. Applies when no per-message or session fast-mode override is set." | |
| }, | |
| "contextInjection": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "always" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "continuation-skip" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "never" | |
| } | |
| ], | |
| "title": "Agent Context Injection", | |
| "description": "Per-agent override for when workspace bootstrap files are injected into this agent's system prompt. Omit to inherit agents.defaults.contextInjection." | |
| }, | |
| "bootstrapMaxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Agent Bootstrap Max Chars", | |
| "description": "Per-agent override for max characters of each workspace bootstrap file injected into this agent's system prompt. Omit to inherit agents.defaults.bootstrapMaxChars." | |
| }, | |
| "bootstrapTotalMaxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Agent Bootstrap Total Max Chars", | |
| "description": "Per-agent override for max total characters across all workspace bootstrap files injected into this agent's system prompt. Omit to inherit agents.defaults.bootstrapTotalMaxChars." | |
| }, | |
| "experimental": { | |
| "type": "object", | |
| "properties": { | |
| "localModelLean": { | |
| "type": "boolean", | |
| "title": "Agent Lean Local Model Mode", | |
| "description": "Per-agent override for lean local-model mode. Enable it for one smaller local-model agent without trimming tools from every agent." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Experimental Flags", | |
| "description": "Per-agent experimental flags. Omitted fields inherit agents.defaults.experimental." | |
| }, | |
| "skills": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Agent Skill Filter", | |
| "description": "Optional allowlist of skills for this agent. If omitted, the agent inherits agents.defaults.skills when set; otherwise skills stay unrestricted. Set [] for no skills. An explicit list fully replaces inherited defaults instead of merging with them." | |
| }, | |
| "memorySearch": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "sources": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "memory" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "sessions" | |
| } | |
| ] | |
| } | |
| }, | |
| "extraPaths": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "qmd": { | |
| "type": "object", | |
| "properties": { | |
| "extraCollections": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "path": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "pattern": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "path" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "multimodal": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "modalities": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "image" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "audio" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| } | |
| }, | |
| "maxFileBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "experimental": { | |
| "type": "object", | |
| "properties": { | |
| "sessionMemory": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "provider": { | |
| "type": "string" | |
| }, | |
| "remote": { | |
| "type": "object", | |
| "properties": { | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "apiKey": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "nonBatchConcurrency": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "batch": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "wait": { | |
| "type": "boolean" | |
| }, | |
| "concurrency": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "pollIntervalMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "timeoutMinutes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "fallback": { | |
| "type": "string" | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "inputType": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "queryInputType": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "documentInputType": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "outputDimensionality": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "local": { | |
| "type": "object", | |
| "properties": { | |
| "modelPath": { | |
| "type": "string" | |
| }, | |
| "modelCacheDir": { | |
| "type": "string" | |
| }, | |
| "contextSize": { | |
| "anyOf": [ | |
| { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| { | |
| "type": "string", | |
| "const": "auto" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "store": { | |
| "type": "object", | |
| "properties": { | |
| "driver": { | |
| "type": "string", | |
| "const": "sqlite" | |
| }, | |
| "path": { | |
| "type": "string" | |
| }, | |
| "fts": { | |
| "type": "object", | |
| "properties": { | |
| "tokenizer": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "unicode61" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "trigram" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "vector": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "extensionPath": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "chunking": { | |
| "type": "object", | |
| "properties": { | |
| "tokens": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "overlap": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "sync": { | |
| "type": "object", | |
| "properties": { | |
| "onSessionStart": { | |
| "type": "boolean" | |
| }, | |
| "onSearch": { | |
| "type": "boolean" | |
| }, | |
| "watch": { | |
| "type": "boolean" | |
| }, | |
| "watchDebounceMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "intervalMinutes": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "embeddingBatchTimeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "sessions": { | |
| "type": "object", | |
| "properties": { | |
| "deltaBytes": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "deltaMessages": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "postCompactionForce": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "query": { | |
| "type": "object", | |
| "properties": { | |
| "maxResults": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "minScore": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1 | |
| }, | |
| "hybrid": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "vectorWeight": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1 | |
| }, | |
| "textWeight": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1 | |
| }, | |
| "candidateMultiplier": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "mmr": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "lambda": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "temporalDecay": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "halfLifeDays": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "cache": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "maxEntries": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "humanDelay": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "natural" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "custom" | |
| } | |
| ] | |
| }, | |
| "minMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "tts": { | |
| "type": "object", | |
| "properties": { | |
| "auto": { | |
| "type": "string", | |
| "enum": [ | |
| "off", | |
| "always", | |
| "inbound", | |
| "tagged" | |
| ] | |
| }, | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "mode": { | |
| "type": "string", | |
| "enum": [ | |
| "final", | |
| "all" | |
| ] | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "persona": { | |
| "type": "string" | |
| }, | |
| "personas": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "label": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "fallbackPolicy": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "preserve-persona" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "provider-defaults" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "fail" | |
| } | |
| ] | |
| }, | |
| "prompt": { | |
| "type": "object", | |
| "properties": { | |
| "profile": { | |
| "type": "string" | |
| }, | |
| "scene": { | |
| "type": "string" | |
| }, | |
| "sampleContext": { | |
| "type": "string" | |
| }, | |
| "style": { | |
| "type": "string" | |
| }, | |
| "accent": { | |
| "type": "string" | |
| }, | |
| "pacing": { | |
| "type": "string" | |
| }, | |
| "constraints": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "providers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "apiKey": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| }, | |
| { | |
| "type": "null" | |
| }, | |
| { | |
| "type": "array", | |
| "items": {} | |
| }, | |
| { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {} | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "summaryModel": { | |
| "type": "string" | |
| }, | |
| "modelOverrides": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "allowText": { | |
| "type": "boolean" | |
| }, | |
| "allowProvider": { | |
| "type": "boolean" | |
| }, | |
| "allowVoice": { | |
| "type": "boolean" | |
| }, | |
| "allowModelId": { | |
| "type": "boolean" | |
| }, | |
| "allowVoiceSettings": { | |
| "type": "boolean" | |
| }, | |
| "allowNormalization": { | |
| "type": "boolean" | |
| }, | |
| "allowSeed": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "providers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "apiKey": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| }, | |
| { | |
| "type": "null" | |
| }, | |
| { | |
| "type": "array", | |
| "items": {} | |
| }, | |
| { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {} | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "prefsPath": { | |
| "type": "string" | |
| }, | |
| "maxTextLength": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 9007199254740991 | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "minimum": 1000, | |
| "maximum": 120000 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "skillsLimits": { | |
| "type": "object", | |
| "properties": { | |
| "maxSkillsPromptChars": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Agent Skills Prompt Max Chars", | |
| "description": "Per-agent override for the skills prompt character budget. This extends the existing skills.limits.maxSkillsPromptChars path instead of routing the same budget through contextLimits." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Skills Limits", | |
| "description": "Optional per-agent overrides for skills subsystem budgets. Use this when an agent needs a different skills prompt budget without introducing a second generic context-limits path." | |
| }, | |
| "contextLimits": { | |
| "type": "object", | |
| "properties": { | |
| "memoryGetMaxChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 250000, | |
| "title": "Agent memory_get Max Chars", | |
| "description": "Per-agent override for the default memory_get max character budget." | |
| }, | |
| "memoryGetDefaultLines": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 5000, | |
| "title": "Agent memory_get Line Window", | |
| "description": "Per-agent override for the default memory_get line window when lines is omitted." | |
| }, | |
| "toolResultMaxChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 250000, | |
| "title": "Agent Tool Result Max Chars", | |
| "description": "Per-agent override for the live tool-result max character budget." | |
| }, | |
| "postCompactionMaxChars": { | |
| "type": "integer", | |
| "minimum": 1, | |
| "maximum": 50000, | |
| "title": "Agent Post-compaction Max Chars", | |
| "description": "Per-agent override for the post-compaction AGENTS.md excerpt budget." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Context Limits", | |
| "description": "Optional per-agent overrides for the focused context budget knobs. Omitted fields inherit agents.defaults.contextLimits." | |
| }, | |
| "contextTokens": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "heartbeat": { | |
| "type": "object", | |
| "properties": { | |
| "every": { | |
| "type": "string" | |
| }, | |
| "activeHours": { | |
| "type": "object", | |
| "properties": { | |
| "start": { | |
| "type": "string" | |
| }, | |
| "end": { | |
| "type": "string" | |
| }, | |
| "timezone": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "session": { | |
| "type": "string" | |
| }, | |
| "includeReasoning": { | |
| "type": "boolean" | |
| }, | |
| "target": { | |
| "type": "string" | |
| }, | |
| "directPolicy": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "block" | |
| } | |
| ], | |
| "title": "Heartbeat Direct Policy", | |
| "description": "Per-agent override for heartbeat direct/DM delivery policy; use \"block\" for agents that should only send heartbeat alerts to non-DM destinations." | |
| }, | |
| "to": { | |
| "type": "string" | |
| }, | |
| "accountId": { | |
| "type": "string" | |
| }, | |
| "prompt": { | |
| "type": "string" | |
| }, | |
| "includeSystemPromptSection": { | |
| "type": "boolean", | |
| "title": "Heartbeat Include System Prompt Section", | |
| "description": "Per-agent override for whether the default agent's ## Heartbeats system prompt section is injected. Use false to keep heartbeat runtime behavior but omit the heartbeat prompt instructions from that agent's system prompt." | |
| }, | |
| "ackMaxChars": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "suppressToolErrorWarnings": { | |
| "type": "boolean", | |
| "title": "Heartbeat Suppress Tool Error Warnings", | |
| "description": "Suppress tool error warning payloads during heartbeat runs." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Heartbeat Timeout (Seconds)", | |
| "description": "Per-agent maximum time in seconds allowed for a heartbeat agent turn before it is aborted. Leave unset to inherit the merged heartbeat/default agent timeout." | |
| }, | |
| "lightContext": { | |
| "type": "boolean" | |
| }, | |
| "isolatedSession": { | |
| "type": "boolean" | |
| }, | |
| "skipWhenBusy": { | |
| "type": "boolean", | |
| "title": "Heartbeat Skip When Busy", | |
| "description": "Per-agent override that defers heartbeat turns on that agent's extra busy lanes: its own session-keyed subagent or nested command work. Cron lanes always defer heartbeat turns." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "identity": { | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "type": "string" | |
| }, | |
| "theme": { | |
| "type": "string" | |
| }, | |
| "emoji": { | |
| "type": "string" | |
| }, | |
| "avatar": { | |
| "type": "string", | |
| "title": "Identity Avatar", | |
| "description": "Agent avatar (workspace-relative path, http(s) URL, or data URI)." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "groupChat": { | |
| "type": "object", | |
| "properties": { | |
| "mentionPatterns": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "historyLimit": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "unmentionedInbound": { | |
| "type": "string", | |
| "enum": [ | |
| "user_request", | |
| "room_event" | |
| ] | |
| }, | |
| "visibleReplies": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "enum": [ | |
| "automatic", | |
| "message_tool" | |
| ] | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "subagents": { | |
| "type": "object", | |
| "properties": { | |
| "delegationMode": { | |
| "type": "string", | |
| "enum": [ | |
| "suggest", | |
| "prefer" | |
| ], | |
| "title": "Sub-agent Delegation Mode", | |
| "description": "Per-agent override for sub-agent delegation strength. Use this for coordinator agents that should stay responsive and push non-trivial work into spawned sub-agents." | |
| }, | |
| "allowAgents": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "model": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "primary": { | |
| "type": "string" | |
| }, | |
| "fallbacks": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "thinking": { | |
| "type": "string" | |
| }, | |
| "requireAgentId": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "runRetries": { | |
| "type": "object", | |
| "properties": { | |
| "base": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Agent Run Retries Base", | |
| "description": "Base number of run retry iterations for this agent." | |
| }, | |
| "perProfile": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Agent Run Retries Per Profile", | |
| "description": "Additional run retry iterations granted per fallback profile candidate for this agent." | |
| }, | |
| "min": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Agent Run Retries Minimum", | |
| "description": "Minimum absolute limit for run retry iterations for this agent." | |
| }, | |
| "max": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Agent Run Retries Maximum", | |
| "description": "Maximum absolute limit for run retry iterations for this agent." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Run Retries", | |
| "description": "Optional per-agent override for the embedded Pi runner's outer run loop retry iteration boundaries." | |
| }, | |
| "embeddedPi": { | |
| "type": "object", | |
| "properties": { | |
| "executionContract": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "default" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "strict-agentic" | |
| } | |
| ], | |
| "title": "Agent Embedded Pi Execution Contract", | |
| "description": "Optional per-agent embedded Pi execution contract override. Set \"strict-agentic\" to keep that agent acting through plan-only turns on OpenAI/OpenAI Codex GPT-5-family runs, or \"default\" to inherit the standard runner behavior." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent Embedded Pi", | |
| "description": "Optional per-agent embedded Pi overrides. Use this to opt specific agents into stricter GPT-5 execution behavior without changing the global default." | |
| }, | |
| "sandbox": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "off" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "non-main" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "backend": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "workspaceAccess": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "none" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "ro" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "rw" | |
| } | |
| ] | |
| }, | |
| "sessionToolsVisibility": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "spawned" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "scope": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "session" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "agent" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "shared" | |
| } | |
| ] | |
| }, | |
| "workspaceRoot": { | |
| "type": "string" | |
| }, | |
| "docker": { | |
| "type": "object", | |
| "properties": { | |
| "image": { | |
| "type": "string" | |
| }, | |
| "containerPrefix": { | |
| "type": "string" | |
| }, | |
| "workdir": { | |
| "type": "string" | |
| }, | |
| "readOnlyRoot": { | |
| "type": "boolean" | |
| }, | |
| "tmpfs": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "network": { | |
| "type": "string" | |
| }, | |
| "user": { | |
| "type": "string" | |
| }, | |
| "capDrop": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "env": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "setupCommand": {}, | |
| "pidsLimit": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "memory": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| } | |
| ] | |
| }, | |
| "memorySwap": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| } | |
| ] | |
| }, | |
| "cpus": { | |
| "type": "number", | |
| "exclusiveMinimum": 0 | |
| }, | |
| "gpus": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Agent Sandbox Docker GPUs", | |
| "description": "Per-agent Docker GPU passthrough override for sandbox containers." | |
| }, | |
| "ulimits": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "soft": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "hard": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| }, | |
| "seccompProfile": { | |
| "type": "string" | |
| }, | |
| "apparmorProfile": { | |
| "type": "string" | |
| }, | |
| "dns": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "extraHosts": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "binds": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "dangerouslyAllowReservedContainerTargets": { | |
| "type": "boolean" | |
| }, | |
| "dangerouslyAllowExternalBindSources": { | |
| "type": "boolean" | |
| }, | |
| "dangerouslyAllowContainerNamespaceJoin": { | |
| "type": "boolean", | |
| "title": "Agent Sandbox Docker Allow Container Namespace Join", | |
| "description": "Per-agent DANGEROUS override for container namespace joins in sandbox Docker network mode." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "ssh": { | |
| "type": "object", | |
| "properties": { | |
| "target": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "command": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "workspaceRoot": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "strictHostKeyChecking": { | |
| "type": "boolean" | |
| }, | |
| "updateHostKeys": { | |
| "type": "boolean" | |
| }, | |
| "identityFile": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "certificateFile": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "knownHostsFile": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "identityData": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "certificateData": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "knownHostsData": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "browser": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "image": { | |
| "type": "string" | |
| }, | |
| "containerPrefix": { | |
| "type": "string" | |
| }, | |
| "network": { | |
| "type": "string", | |
| "title": "Agent Sandbox Browser Network", | |
| "description": "Per-agent override for sandbox browser Docker network." | |
| }, | |
| "cdpPort": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "cdpSourceRange": { | |
| "type": "string", | |
| "title": "Agent Sandbox Browser CDP Source Port Range", | |
| "description": "Per-agent override for CDP source CIDR allowlist." | |
| }, | |
| "vncPort": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "noVncPort": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "headless": { | |
| "type": "boolean" | |
| }, | |
| "enableNoVnc": { | |
| "type": "boolean" | |
| }, | |
| "allowHostControl": { | |
| "type": "boolean" | |
| }, | |
| "autoStart": { | |
| "type": "boolean" | |
| }, | |
| "autoStartTimeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "binds": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "prune": { | |
| "type": "object", | |
| "properties": { | |
| "idleHours": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxAgeDays": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "params": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": {} | |
| }, | |
| "tools": { | |
| "type": "object", | |
| "properties": { | |
| "profile": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "minimal" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "coding" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "messaging" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "full" | |
| } | |
| ], | |
| "title": "Agent Tool Profile", | |
| "description": "Per-agent override for tool profile selection when one agent needs a different capability baseline. Use this sparingly so policy differences across agents stay intentional and reviewable." | |
| }, | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "alsoAllow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Agent Tool Allowlist Additions", | |
| "description": "Per-agent additive allowlist for tools on top of global and profile policy. Keep narrow to avoid accidental privilege expansion on specialized agents." | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "byProvider": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "alsoAllow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "profile": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "minimal" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "coding" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "messaging" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "full" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Agent Tool Policy by Provider", | |
| "description": "Per-agent provider-specific tool policy overrides for channel-scoped capability control. Use this when a single agent needs tighter restrictions on one provider than others." | |
| }, | |
| "toolsBySender": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "alsoAllow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "codeMode": { | |
| "anyOf": [ | |
| { | |
| "type": "boolean" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "runtime": { | |
| "type": "string", | |
| "const": "quickjs-wasi" | |
| }, | |
| "mode": { | |
| "type": "string", | |
| "const": "only" | |
| }, | |
| "languages": { | |
| "type": "array", | |
| "items": { | |
| "type": "string", | |
| "enum": [ | |
| "javascript", | |
| "typescript" | |
| ] | |
| } | |
| }, | |
| "timeoutMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "memoryLimitBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxOutputBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxSnapshotBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxPendingToolCalls": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "snapshotTtlSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "searchDefaultLimit": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxSearchLimit": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| ], | |
| "title": "Agent Code Mode", | |
| "description": "Per-agent code mode override. Use this to test or roll out exec/wait tool-surface mode for one agent without enabling it fleet-wide." | |
| }, | |
| "elevated": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "allowFrom": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "exec": { | |
| "type": "object", | |
| "properties": { | |
| "host": { | |
| "type": "string", | |
| "enum": [ | |
| "auto", | |
| "sandbox", | |
| "gateway", | |
| "node" | |
| ] | |
| }, | |
| "security": { | |
| "type": "string", | |
| "enum": [ | |
| "deny", | |
| "allowlist", | |
| "full" | |
| ] | |
| }, | |
| "ask": { | |
| "type": "string", | |
| "enum": [ | |
| "off", | |
| "on-miss", | |
| "always" | |
| ] | |
| }, | |
| "node": { | |
| "type": "string" | |
| }, | |
| "pathPrepend": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "safeBins": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "strictInlineEval": { | |
| "type": "boolean" | |
| }, | |
| "commandHighlighting": { | |
| "type": "boolean" | |
| }, | |
| "safeBinTrustedDirs": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "safeBinProfiles": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "minPositional": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxPositional": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "allowedValueFlags": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "deniedFlags": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "backgroundMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "timeoutSec": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "cleanupMs": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "notifyOnExit": { | |
| "type": "boolean" | |
| }, | |
| "notifyOnExitEmptySuccess": { | |
| "type": "boolean" | |
| }, | |
| "applyPatch": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "workspaceOnly": { | |
| "type": "boolean" | |
| }, | |
| "allowModels": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "approvalRunningNoticeMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "fs": { | |
| "type": "object", | |
| "properties": { | |
| "workspaceOnly": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "loopDetection": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "historySize": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "warningThreshold": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "unknownToolThreshold": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "criticalThreshold": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "globalCircuitBreakerThreshold": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "detectors": { | |
| "type": "object", | |
| "properties": { | |
| "genericRepeat": { | |
| "type": "boolean" | |
| }, | |
| "knownPollNoProgress": { | |
| "type": "boolean" | |
| }, | |
| "pingPong": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "postCompactionGuard": { | |
| "type": "object", | |
| "properties": { | |
| "windowSize": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "message": { | |
| "type": "object", | |
| "properties": { | |
| "allowCrossContextSend": { | |
| "type": "boolean" | |
| }, | |
| "crossContext": { | |
| "type": "object", | |
| "properties": { | |
| "allowWithinProvider": { | |
| "type": "boolean", | |
| "title": "Agent Cross-Context Messaging (Same Provider)", | |
| "description": "Per-agent message guard for sending to other conversations on the same provider. Set false for current-conversation-only public agents." | |
| }, | |
| "allowAcrossProviders": { | |
| "type": "boolean", | |
| "title": "Agent Cross-Context Messaging (Across Providers)", | |
| "description": "Per-agent message guard for sending across providers. Keep false for public or sandboxed agents." | |
| }, | |
| "marker": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "prefix": { | |
| "type": "string" | |
| }, | |
| "suffix": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "actions": { | |
| "type": "object", | |
| "properties": { | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Agent Message Action Allowlist", | |
| "description": "Per-agent message action allowlist for the message tool. Set to a minimal list such as [\"send\"] for public sandbox agents so read, edit, delete, reaction, and other provider-specific message actions stay hidden and blocked." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "broadcast": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "sandbox": { | |
| "type": "object", | |
| "properties": { | |
| "tools": { | |
| "type": "object", | |
| "properties": { | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "alsoAllow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "runtime": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "type": "string", | |
| "const": "embedded", | |
| "title": "Agent Runtime Type", | |
| "description": "Runtime type for this agent: \"embedded\" (default OpenClaw runtime) or \"acp\" (ACP harness defaults)." | |
| } | |
| }, | |
| "required": [ | |
| "type" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "type": { | |
| "type": "string", | |
| "const": "acp", | |
| "title": "Agent Runtime Type", | |
| "description": "Runtime type for this agent: \"embedded\" (default OpenClaw runtime) or \"acp\" (ACP harness defaults)." | |
| }, | |
| "acp": { | |
| "type": "object", | |
| "properties": { | |
| "agent": { | |
| "type": "string", | |
| "title": "Agent ACP Harness Agent", | |
| "description": "Optional ACP harness agent id to use for this OpenClaw agent (for example codex, claude, cursor, gemini, openclaw)." | |
| }, | |
| "backend": { | |
| "type": "string", | |
| "title": "Agent ACP Backend", | |
| "description": "Optional ACP backend override for this agent's ACP sessions (falls back to global acp.backend)." | |
| }, | |
| "mode": { | |
| "type": "string", | |
| "enum": [ | |
| "persistent", | |
| "oneshot" | |
| ], | |
| "title": "Agent ACP Mode", | |
| "description": "Optional ACP session mode default for this agent (persistent or oneshot)." | |
| }, | |
| "cwd": { | |
| "type": "string", | |
| "title": "Agent ACP Working Directory", | |
| "description": "Optional default working directory for this agent's ACP sessions." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agent ACP Runtime", | |
| "description": "ACP runtime defaults for this agent when runtime.type=acp. Binding-level ACP overrides still take precedence per conversation." | |
| } | |
| }, | |
| "required": [ | |
| "type" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ], | |
| "title": "Agent Runtime", | |
| "description": "Optional runtime descriptor for this agent. Use embedded for default OpenClaw execution or acp for external ACP harness defaults." | |
| } | |
| }, | |
| "required": [ | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| "title": "Agent List", | |
| "description": "Explicit list of configured agents with IDs and optional overrides for model, tools, identity, and workspace. Keep IDs stable over time so bindings, approvals, and session routing remain deterministic." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Agents", | |
| "description": "Agent runtime configuration root covering defaults and explicit agent entries used for routing and execution context. Keep this section explicit so model/tool behavior stays predictable across multi-agent workflows." | |
| }, | |
| "tools": { | |
| "type": "object", | |
| "properties": { | |
| "profile": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "minimal" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "coding" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "messaging" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "full" | |
| } | |
| ], | |
| "title": "Tool Profile", | |
| "description": "Global tool profile name used to select a predefined tool policy baseline before applying allow/deny overrides. Use this for consistent environment posture across agents and keep profile names stable." | |
| }, | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Tool Allowlist", | |
| "description": "Absolute tool allowlist that replaces profile-derived defaults for strict environments. Use this only when you intentionally run a tightly curated subset of tool capabilities." | |
| }, | |
| "alsoAllow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Tool Allowlist Additions", | |
| "description": "Extra tool allowlist entries merged on top of the selected tool profile and default policy. Keep this list small and explicit so audits can quickly identify intentional policy exceptions." | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "title": "Tool Denylist", | |
| "description": "Global tool denylist that blocks listed tools even when profile or provider rules would allow them. Use deny rules for emergency lockouts and long-term defense-in-depth." | |
| }, | |
| "byProvider": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "alsoAllow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "profile": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "minimal" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "coding" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "messaging" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "full" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Tool Policy by Provider", | |
| "description": "Per-provider tool allow/deny overrides keyed by channel/provider ID to tailor capabilities by surface. Use this when one provider needs stricter controls than global tool policy." | |
| }, | |
| "toolsBySender": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "properties": { | |
| "allow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "alsoAllow": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "deny": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "web": { | |
| "type": "object", | |
| "properties": { | |
| "search": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Web Search Tool", | |
| "description": "Enable managed web_search and optional Codex-native search for eligible models." | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "title": "Web Search Provider", | |
| "description": "Search provider id. Auto-detected from available API keys if omitted." | |
| }, | |
| "maxResults": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Web Search Max Results", | |
| "description": "Number of results to return (1-10)." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Web Search Timeout (sec)", | |
| "description": "Timeout in seconds for web_search requests." | |
| }, | |
| "cacheTtlMinutes": { | |
| "type": "number", | |
| "minimum": 0, | |
| "title": "Web Search Cache TTL (min)", | |
| "description": "Cache TTL in minutes for web_search results." | |
| }, | |
| "apiKey": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "openaiCodex": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Native Codex Web Search", | |
| "description": "Enable native Codex web search for Codex-capable models." | |
| }, | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "cached" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "live" | |
| } | |
| ], | |
| "title": "Codex Web Search Mode", | |
| "description": "Native Codex web search mode: \"cached\" (default) or \"live\"." | |
| }, | |
| "allowedDomains": { | |
| "title": "Codex Allowed Domains", | |
| "description": "Optional domain allowlist passed to the native Codex web_search tool." | |
| }, | |
| "contextSize": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "low" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "medium" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "high" | |
| } | |
| ], | |
| "title": "Codex Search Context Size", | |
| "description": "Native Codex search context size hint: \"low\", \"medium\", or \"high\"." | |
| }, | |
| "userLocation": {} | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": {} | |
| }, | |
| "fetch": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Web Fetch Tool", | |
| "description": "Enable the web_fetch tool (lightweight HTTP fetch)." | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "title": "Web Fetch Provider", | |
| "description": "Web fetch fallback provider id." | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Web Fetch Max Chars", | |
| "description": "Max characters returned by web_fetch (truncated)." | |
| }, | |
| "maxCharsCap": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Web Fetch Hard Max Chars", | |
| "description": "Hard cap for web_fetch maxChars (applies to config and tool calls)." | |
| }, | |
| "maxResponseBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Web Fetch Max Download Size (bytes)", | |
| "description": "Max download size before truncation." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Web Fetch Timeout (sec)", | |
| "description": "Timeout in seconds for web_fetch requests." | |
| }, | |
| "cacheTtlMinutes": { | |
| "type": "number", | |
| "minimum": 0, | |
| "title": "Web Fetch Cache TTL (min)", | |
| "description": "Cache TTL in minutes for web_fetch results." | |
| }, | |
| "maxRedirects": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Web Fetch Max Redirects", | |
| "description": "Maximum redirects allowed for web_fetch (default: 3)." | |
| }, | |
| "userAgent": { | |
| "type": "string", | |
| "title": "Web Fetch User-Agent", | |
| "description": "Override User-Agent header for web_fetch requests." | |
| }, | |
| "readability": { | |
| "type": "boolean", | |
| "title": "Web Fetch Readability Extraction", | |
| "description": "Use Readability to extract main content from HTML (fallbacks to basic HTML cleanup)." | |
| }, | |
| "useTrustedEnvProxy": { | |
| "type": "boolean", | |
| "title": "Web Fetch Trusted Env Proxy", | |
| "description": "Route web_fetch through a trusted HTTP(S) env proxy and let the proxy resolve DNS. Enable only when that proxy is operator-controlled and enforces outbound policy after DNS resolution." | |
| }, | |
| "ssrfPolicy": { | |
| "type": "object", | |
| "properties": { | |
| "allowRfc2544BenchmarkRange": { | |
| "type": "boolean", | |
| "title": "Web Fetch Allow RFC 2544 Benchmark Range", | |
| "description": "Allow RFC 2544 benchmark-range IPs (198.18.0.0/15) for fake-IP proxy compatibility such as Clash or Surge." | |
| }, | |
| "allowIpv6UniqueLocalRange": { | |
| "type": "boolean", | |
| "title": "Web Fetch Allow IPv6 Unique Local Range", | |
| "description": "Allow IPv6 Unique Local Addresses (fc00::/7) for trusted fake-IP proxy compatibility such as sing-box, Clash, or Surge." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Web Fetch SSRF Policy", | |
| "description": "Scoped SSRF policy overrides for web_fetch. Keep this narrow and opt in only for known local-network proxy environments." | |
| }, | |
| "firecrawl": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "apiKey": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "onlyMainContent": { | |
| "type": "boolean" | |
| }, | |
| "maxAgeMs": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "x_search": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean" | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "inlineCitations": { | |
| "type": "boolean" | |
| }, | |
| "maxTurns": { | |
| "type": "integer", | |
| "minimum": -9007199254740991, | |
| "maximum": 9007199254740991 | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "cacheTtlMinutes": { | |
| "type": "number", | |
| "minimum": 0 | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Web Tools", | |
| "description": "Web-tool policy grouping for search/fetch providers, limits, and fallback behavior tuning. Keep enabled settings aligned with API key availability and outbound networking policy." | |
| }, | |
| "media": { | |
| "type": "object", | |
| "properties": { | |
| "models": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "provider": { | |
| "type": "string" | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "capabilities": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "image" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "audio" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "video" | |
| } | |
| ] | |
| } | |
| }, | |
| "type": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "provider" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "cli" | |
| } | |
| ] | |
| }, | |
| "command": { | |
| "type": "string" | |
| }, | |
| "args": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "prompt": { | |
| "type": "string" | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "providerOptions": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "deepgram": { | |
| "type": "object", | |
| "properties": { | |
| "detectLanguage": { | |
| "type": "boolean" | |
| }, | |
| "punctuate": { | |
| "type": "boolean" | |
| }, | |
| "smartFormat": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default" | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer" | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header" | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "prefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy" | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy" | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "profile": { | |
| "type": "string" | |
| }, | |
| "preferredProfile": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Media Understanding Shared Models", | |
| "description": "Shared fallback model list used by media understanding tools when modality-specific model lists are not set. Keep this aligned with available multimodal providers to avoid runtime fallback churn." | |
| }, | |
| "concurrency": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Media Understanding Concurrency", | |
| "description": "Maximum number of concurrent media understanding operations per turn across image, audio, and video tasks. Lower this in resource-constrained deployments to prevent CPU/network saturation." | |
| }, | |
| "asyncCompletion": { | |
| "type": "object", | |
| "properties": { | |
| "directSend": { | |
| "type": "boolean", | |
| "title": "Async Media Completion Direct Send", | |
| "description": "Deprecated compatibility flag. Async media generation completions are requester-session mediated so the agent can decide how to tell the user and use the message tool when source delivery requires it." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "image": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Image Understanding", | |
| "description": "Enable image understanding so attached or referenced images can be interpreted into textual context. Disable if you need text-only operation or want to avoid image-processing cost." | |
| }, | |
| "scope": { | |
| "type": "object", | |
| "properties": { | |
| "default": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "deny" | |
| } | |
| ] | |
| }, | |
| "rules": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "action": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "deny" | |
| } | |
| ] | |
| }, | |
| "match": { | |
| "type": "object", | |
| "properties": { | |
| "channel": { | |
| "type": "string" | |
| }, | |
| "chatType": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "direct" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "group" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "channel" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "dm" | |
| } | |
| ] | |
| }, | |
| "keyPrefix": { | |
| "type": "string" | |
| }, | |
| "rawKeyPrefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "action" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Image Understanding Scope", | |
| "description": "Scope selector for when image understanding is attempted (for example only explicit requests versus broader auto-detection). Keep narrow scope in busy channels to control token and API spend." | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Image Understanding Max Bytes", | |
| "description": "Maximum accepted image payload size in bytes before the item is skipped or truncated by policy. Keep limits realistic for your provider caps and infrastructure bandwidth." | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Image Understanding Max Chars", | |
| "description": "Maximum characters returned from image understanding output after model response normalization. Use tighter limits to reduce prompt bloat and larger limits for detail-heavy OCR tasks." | |
| }, | |
| "prompt": { | |
| "type": "string", | |
| "title": "Image Understanding Prompt", | |
| "description": "Instruction template used for image understanding requests to shape extraction style and detail level. Keep prompts deterministic so outputs stay consistent across turns and channels." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Image Understanding Timeout (sec)", | |
| "description": "Timeout in seconds for each image understanding request before it is aborted. Increase for high-resolution analysis and lower it for latency-sensitive operator workflows." | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "providerOptions": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "deepgram": { | |
| "type": "object", | |
| "properties": { | |
| "detectLanguage": { | |
| "type": "boolean" | |
| }, | |
| "punctuate": { | |
| "type": "boolean" | |
| }, | |
| "smartFormat": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default" | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer" | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header" | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "prefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy" | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy" | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "attachments": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "first" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "maxAttachments": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "prefer": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "first" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "last" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "path" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "url" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Image Understanding Attachment Policy", | |
| "description": "Attachment handling policy for image inputs, including which message attachments qualify for image analysis. Use restrictive settings in untrusted channels to reduce unexpected processing." | |
| }, | |
| "models": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "provider": { | |
| "type": "string" | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "capabilities": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "image" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "audio" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "video" | |
| } | |
| ] | |
| } | |
| }, | |
| "type": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "provider" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "cli" | |
| } | |
| ] | |
| }, | |
| "command": { | |
| "type": "string" | |
| }, | |
| "args": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "prompt": { | |
| "type": "string" | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "providerOptions": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "deepgram": { | |
| "type": "object", | |
| "properties": { | |
| "detectLanguage": { | |
| "type": "boolean" | |
| }, | |
| "punctuate": { | |
| "type": "boolean" | |
| }, | |
| "smartFormat": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default" | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer" | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header" | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "prefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy" | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy" | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "profile": { | |
| "type": "string" | |
| }, | |
| "preferredProfile": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Image Understanding Models", | |
| "description": "Ordered model preferences specifically for image understanding when you want to override shared media models. Put the most reliable multimodal model first to reduce fallback attempts." | |
| }, | |
| "echoTranscript": { | |
| "type": "boolean" | |
| }, | |
| "echoFormat": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "audio": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Audio Understanding", | |
| "description": "Enable audio understanding so voice notes or audio clips can be transcribed/summarized for agent context. Disable when audio ingestion is outside policy or unnecessary for your workflows." | |
| }, | |
| "scope": { | |
| "type": "object", | |
| "properties": { | |
| "default": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "deny" | |
| } | |
| ] | |
| }, | |
| "rules": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "action": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "deny" | |
| } | |
| ] | |
| }, | |
| "match": { | |
| "type": "object", | |
| "properties": { | |
| "channel": { | |
| "type": "string" | |
| }, | |
| "chatType": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "direct" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "group" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "channel" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "dm" | |
| } | |
| ] | |
| }, | |
| "keyPrefix": { | |
| "type": "string" | |
| }, | |
| "rawKeyPrefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "action" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Audio Understanding Scope", | |
| "description": "Scope selector for when audio understanding runs across inbound messages and attachments. Keep focused scopes in high-volume channels to reduce cost and avoid accidental transcription." | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Audio Understanding Max Bytes", | |
| "description": "Maximum accepted audio payload size in bytes before processing is rejected or clipped by policy. Set this based on expected recording length and upstream provider limits." | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Audio Understanding Max Chars", | |
| "description": "Maximum characters retained from audio understanding output to prevent oversized transcript injection. Increase for long-form dictation, or lower to keep conversational turns compact." | |
| }, | |
| "prompt": { | |
| "type": "string", | |
| "title": "Audio Understanding Prompt", | |
| "description": "Instruction template guiding audio understanding output style, such as concise summary versus near-verbatim transcript. Keep wording consistent so downstream automations can rely on output format." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Audio Understanding Timeout (sec)", | |
| "description": "Timeout in seconds for audio understanding execution before the operation is cancelled. Use longer timeouts for long recordings and tighter ones for interactive chat responsiveness." | |
| }, | |
| "language": { | |
| "type": "string", | |
| "title": "Audio Understanding Language", | |
| "description": "Preferred language hint for audio understanding/transcription when provider support is available. Set this to improve recognition accuracy for known primary languages." | |
| }, | |
| "providerOptions": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "deepgram": { | |
| "type": "object", | |
| "properties": { | |
| "detectLanguage": { | |
| "type": "boolean" | |
| }, | |
| "punctuate": { | |
| "type": "boolean" | |
| }, | |
| "smartFormat": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "title": "Audio Request Headers", | |
| "description": "Additional HTTP headers merged into audio provider requests after provider defaults. Use this for tenant routing or proxy integration headers, and keep secrets in env-backed values." | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default", | |
| "title": "Audio Request Auth Mode", | |
| "description": "Auth override mode for audio requests: \"provider-default\" keeps the normal provider auth, \"authorization-bearer\" forces an Authorization bearer token, and \"header\" sends a custom header/value pair." | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer", | |
| "title": "Audio Request Auth Mode", | |
| "description": "Auth override mode for audio requests: \"provider-default\" keeps the normal provider auth, \"authorization-bearer\" forces an Authorization bearer token, and \"header\" sends a custom header/value pair." | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Audio Request Bearer Token", | |
| "description": "Bearer token used when audio request auth.mode is authorization-bearer. Keep this in secret storage rather than inline config." | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header", | |
| "title": "Audio Request Auth Mode", | |
| "description": "Auth override mode for audio requests: \"provider-default\" keeps the normal provider auth, \"authorization-bearer\" forces an Authorization bearer token, and \"header\" sends a custom header/value pair." | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Audio Request Auth Header Name", | |
| "description": "Header name used when audio request auth.mode is header. Match the exact upstream expectation, such as x-api-key or authorization." | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ], | |
| "title": "Audio Request Auth Header Value", | |
| "description": "Header value used when audio request auth.mode is header. Keep secrets in env-backed values and avoid duplicating provider-default auth unnecessarily." | |
| }, | |
| "prefix": { | |
| "type": "string", | |
| "title": "Audio Request Auth Header Prefix", | |
| "description": "Optional prefix prepended to the custom auth header value, such as Bearer. Leave unset when the upstream expects the raw credential only." | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ], | |
| "title": "Audio Request Auth Override", | |
| "description": "Optional auth override for audio provider requests. Use this when the upstream expects a non-default bearer token or custom auth header shape." | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy", | |
| "title": "Audio Request Proxy Mode", | |
| "description": "Proxy mode for audio requests: \"env-proxy\" uses environment proxy settings, while \"explicit-proxy\" uses the configured proxy URL only for this request path." | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Audio Request Proxy TLS", | |
| "description": "TLS settings applied when connecting to the configured audio proxy, such as custom CA trust for an internal proxy gateway." | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy", | |
| "title": "Audio Request Proxy Mode", | |
| "description": "Proxy mode for audio requests: \"env-proxy\" uses environment proxy settings, while \"explicit-proxy\" uses the configured proxy URL only for this request path." | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1, | |
| "title": "Audio Request Proxy URL", | |
| "description": "Explicit proxy URL for audio provider traffic when proxy.mode is explicit-proxy. Keep credentials out of inline URLs when possible and prefer secret-backed env injection." | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Audio Request Proxy TLS", | |
| "description": "TLS settings applied when connecting to the configured audio proxy, such as custom CA trust for an internal proxy gateway." | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ], | |
| "title": "Audio Request Proxy", | |
| "description": "Proxy transport override for audio requests. Use env-proxy to respect process proxy settings, or explicit-proxy to force a dedicated proxy URL for this provider path." | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Audio Request TLS", | |
| "description": "Direct TLS client settings for audio provider requests, including custom CA trust, client certs, or SNI overrides for managed gateways and internal endpoints." | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Audio Request Overrides", | |
| "description": "Low-level HTTP request overrides for audio providers, including custom headers, auth, proxy routing, and TLS client settings. Use this for proxy-backed or self-hosted transcription endpoints when plain baseUrl/apiKey fields are not enough." | |
| }, | |
| "attachments": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "first" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "maxAttachments": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "prefer": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "first" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "last" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "path" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "url" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Audio Understanding Attachment Policy", | |
| "description": "Attachment policy for audio inputs indicating which uploaded files are eligible for audio processing. Keep restrictive defaults in mixed-content channels to avoid unintended audio workloads." | |
| }, | |
| "models": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "provider": { | |
| "type": "string" | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "capabilities": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "image" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "audio" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "video" | |
| } | |
| ] | |
| } | |
| }, | |
| "type": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "provider" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "cli" | |
| } | |
| ] | |
| }, | |
| "command": { | |
| "type": "string" | |
| }, | |
| "args": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "prompt": { | |
| "type": "string" | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "providerOptions": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "deepgram": { | |
| "type": "object", | |
| "properties": { | |
| "detectLanguage": { | |
| "type": "boolean" | |
| }, | |
| "punctuate": { | |
| "type": "boolean" | |
| }, | |
| "smartFormat": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default" | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer" | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header" | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "prefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy" | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy" | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "profile": { | |
| "type": "string" | |
| }, | |
| "preferredProfile": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "title": "Audio Understanding Models", | |
| "description": "Ordered model preferences specifically for audio understanding, used before shared media model fallback. Choose models optimized for transcription quality in your primary language/domain." | |
| }, | |
| "echoTranscript": { | |
| "type": "boolean", | |
| "title": "Echo Transcript to Chat", | |
| "description": "Echo the audio transcript back to the originating chat before agent processing. When enabled, users immediately see what was heard from their voice note, helping them verify transcription accuracy before the agent acts on it. Default: false." | |
| }, | |
| "echoFormat": { | |
| "type": "string", | |
| "title": "Transcript Echo Format", | |
| "description": "Format string for the echoed transcript message. Use `{transcript}` as a placeholder for the transcribed text. Default: '📝 \"{transcript}\"'." | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "video": { | |
| "type": "object", | |
| "properties": { | |
| "enabled": { | |
| "type": "boolean", | |
| "title": "Enable Video Understanding", | |
| "description": "Enable video understanding so clips can be summarized into text for downstream reasoning and responses. Disable when processing video is out of policy or too expensive for your deployment." | |
| }, | |
| "scope": { | |
| "type": "object", | |
| "properties": { | |
| "default": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "deny" | |
| } | |
| ] | |
| }, | |
| "rules": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "action": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "allow" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "deny" | |
| } | |
| ] | |
| }, | |
| "match": { | |
| "type": "object", | |
| "properties": { | |
| "channel": { | |
| "type": "string" | |
| }, | |
| "chatType": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "direct" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "group" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "channel" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "dm" | |
| } | |
| ] | |
| }, | |
| "keyPrefix": { | |
| "type": "string" | |
| }, | |
| "rawKeyPrefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "action" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Video Understanding Scope", | |
| "description": "Scope selector controlling when video understanding is attempted across incoming events. Narrow scope in noisy channels, and broaden only where video interpretation is core to workflow." | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Video Understanding Max Bytes", | |
| "description": "Maximum accepted video payload size in bytes before policy rejection or trimming occurs. Tune this to provider and infrastructure limits to avoid repeated timeout/failure loops." | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Video Understanding Max Chars", | |
| "description": "Maximum characters retained from video understanding output to control prompt growth. Raise for dense scene descriptions and lower when concise summaries are preferred." | |
| }, | |
| "prompt": { | |
| "type": "string", | |
| "title": "Video Understanding Prompt", | |
| "description": "Instruction template for video understanding describing desired summary granularity and focus areas. Keep this stable so output quality remains predictable across model/provider fallbacks." | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991, | |
| "title": "Video Understanding Timeout (sec)", | |
| "description": "Timeout in seconds for each video understanding request before cancellation. Use conservative values in interactive channels and longer values for offline or batch-heavy processing." | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "providerOptions": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "deepgram": { | |
| "type": "object", | |
| "properties": { | |
| "detectLanguage": { | |
| "type": "boolean" | |
| }, | |
| "punctuate": { | |
| "type": "boolean" | |
| }, | |
| "smartFormat": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default" | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer" | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header" | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "prefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy" | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy" | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "attachments": { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "first" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "all" | |
| } | |
| ] | |
| }, | |
| "maxAttachments": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "prefer": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "first" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "last" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "path" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "url" | |
| } | |
| ] | |
| } | |
| }, | |
| "additionalProperties": false, | |
| "title": "Video Understanding Attachment Policy", | |
| "description": "Attachment eligibility policy for video analysis, defining which message files can trigger video processing. Keep this explicit in shared channels to prevent accidental large media workloads." | |
| }, | |
| "models": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "provider": { | |
| "type": "string" | |
| }, | |
| "model": { | |
| "type": "string" | |
| }, | |
| "capabilities": { | |
| "type": "array", | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "image" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "audio" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "video" | |
| } | |
| ] | |
| } | |
| }, | |
| "type": { | |
| "anyOf": [ | |
| { | |
| "type": "string", | |
| "const": "provider" | |
| }, | |
| { | |
| "type": "string", | |
| "const": "cli" | |
| } | |
| ] | |
| }, | |
| "command": { | |
| "type": "string" | |
| }, | |
| "args": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "maxChars": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "maxBytes": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "prompt": { | |
| "type": "string" | |
| }, | |
| "timeoutSeconds": { | |
| "type": "integer", | |
| "exclusiveMinimum": 0, | |
| "maximum": 9007199254740991 | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "providerOptions": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "type": "number" | |
| }, | |
| { | |
| "type": "boolean" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "deepgram": { | |
| "type": "object", | |
| "properties": { | |
| "detectLanguage": { | |
| "type": "boolean" | |
| }, | |
| "punctuate": { | |
| "type": "boolean" | |
| }, | |
| "smartFormat": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, | |
| "baseUrl": { | |
| "type": "string" | |
| }, | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "request": { | |
| "type": "object", | |
| "properties": { | |
| "headers": { | |
| "type": "object", | |
| "propertyNames": { | |
| "type": "string" | |
| }, | |
| "additionalProperties": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "auth": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "provider-default" | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "authorization-bearer" | |
| }, | |
| "token": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "token" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "header" | |
| }, | |
| "headerName": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "value": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "prefix": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "mode", | |
| "headerName", | |
| "value" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| }, | |
| "proxy": { | |
| "anyOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "env-proxy" | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "passphrase": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "serverName": { | |
| "type": "string" | |
| }, | |
| "insecureSkipVerify": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "additionalProperties": false | |
| } | |
| }, | |
| "required": [ | |
| "mode" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "mode": { | |
| "type": "string", | |
| "const": "explicit-proxy" | |
| }, | |
| "url": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "tls": { | |
| "type": "object", | |
| "properties": { | |
| "ca": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "cert": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "exec" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| "key": { | |
| "anyOf": [ | |
| { | |
| "type": "string" | |
| }, | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "env" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string", | |
| "pattern": "^[A-Z][A-Z0-9_]{0,127}$" | |
| } | |
| }, | |
| "required": [ | |
| "source", | |
| "provider", | |
| "id" | |
| ], | |
| "additionalProperties": false | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "source": { | |
| "type": "string", | |
| "const": "file" | |
| }, | |
| "provider": { | |
| "type": "string", | |
| "pattern": "^[a-z][a-z0-9_-]{0,63}$" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| }, | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment