mirror of
https://github.com/NoeFabris/opencode-antigravity-auth.git
synced 2026-05-13 15:46:05 +00:00
341 lines
9.6 KiB
JSON
341 lines
9.6 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string"
|
|
},
|
|
"quiet_mode": {
|
|
"default": false,
|
|
"type": "boolean",
|
|
"description": "Suppress most toast notifications (rate limit, account switching). Recovery toasts always shown."
|
|
},
|
|
"toast_scope": {
|
|
"default": "root_only",
|
|
"type": "string",
|
|
"enum": [
|
|
"root_only",
|
|
"all"
|
|
],
|
|
"description": "Controls which sessions show toast notifications. 'root_only' (default) shows in root session only, 'all' shows in all sessions."
|
|
},
|
|
"debug": {
|
|
"default": false,
|
|
"type": "boolean",
|
|
"description": "Enable debug logging to file."
|
|
},
|
|
"debug_tui": {
|
|
"default": false,
|
|
"type": "boolean"
|
|
},
|
|
"log_dir": {
|
|
"type": "string",
|
|
"description": "Custom directory for debug logs."
|
|
},
|
|
"keep_thinking": {
|
|
"default": false,
|
|
"type": "boolean",
|
|
"description": "Preserve thinking blocks for Claude models using signature caching. May cause signature errors."
|
|
},
|
|
"session_recovery": {
|
|
"default": true,
|
|
"type": "boolean",
|
|
"description": "Enable automatic session recovery from tool_result_missing errors."
|
|
},
|
|
"auto_resume": {
|
|
"default": false,
|
|
"type": "boolean",
|
|
"description": "Automatically send resume prompt after successful recovery."
|
|
},
|
|
"resume_text": {
|
|
"default": "continue",
|
|
"type": "string",
|
|
"description": "Custom text to send when auto-resuming after recovery."
|
|
},
|
|
"signature_cache": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"default": true,
|
|
"type": "boolean",
|
|
"description": "Enable disk caching of thinking block signatures."
|
|
},
|
|
"memory_ttl_seconds": {
|
|
"default": 3600,
|
|
"type": "number",
|
|
"minimum": 60,
|
|
"maximum": 86400,
|
|
"description": "In-memory TTL in seconds."
|
|
},
|
|
"disk_ttl_seconds": {
|
|
"default": 172800,
|
|
"type": "number",
|
|
"minimum": 3600,
|
|
"maximum": 604800,
|
|
"description": "Disk TTL in seconds."
|
|
},
|
|
"write_interval_seconds": {
|
|
"default": 60,
|
|
"type": "number",
|
|
"minimum": 10,
|
|
"maximum": 600,
|
|
"description": "Background write interval in seconds."
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"memory_ttl_seconds",
|
|
"disk_ttl_seconds",
|
|
"write_interval_seconds"
|
|
],
|
|
"additionalProperties": false,
|
|
"description": "Signature cache configuration for persisting thinking block signatures. Only used when keep_thinking is enabled."
|
|
},
|
|
"empty_response_max_attempts": {
|
|
"default": 4,
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 10,
|
|
"description": "Maximum retry attempts when Antigravity returns an empty response (no candidates)."
|
|
},
|
|
"empty_response_retry_delay_ms": {
|
|
"default": 2000,
|
|
"type": "number",
|
|
"minimum": 500,
|
|
"maximum": 10000,
|
|
"description": "Delay in milliseconds between empty response retries."
|
|
},
|
|
"tool_id_recovery": {
|
|
"default": true,
|
|
"type": "boolean",
|
|
"description": "Enable tool ID orphan recovery. Matches mismatched tool responses by function name or creates placeholders."
|
|
},
|
|
"claude_tool_hardening": {
|
|
"default": true,
|
|
"type": "boolean",
|
|
"description": "Enable tool hallucination prevention for Claude models. Injects parameter signatures and strict usage rules."
|
|
},
|
|
"claude_prompt_auto_caching": {
|
|
"default": false,
|
|
"type": "boolean",
|
|
"description": "Enable Claude prompt auto-caching by adding top-level cache_control when absent."
|
|
},
|
|
"proactive_token_refresh": {
|
|
"default": true,
|
|
"type": "boolean",
|
|
"description": "Enable proactive background token refresh before expiry, ensuring requests never block."
|
|
},
|
|
"proactive_refresh_buffer_seconds": {
|
|
"default": 1800,
|
|
"type": "number",
|
|
"minimum": 60,
|
|
"maximum": 7200,
|
|
"description": "Seconds before token expiry to trigger proactive refresh."
|
|
},
|
|
"proactive_refresh_check_interval_seconds": {
|
|
"default": 300,
|
|
"type": "number",
|
|
"minimum": 30,
|
|
"maximum": 1800,
|
|
"description": "Interval between proactive refresh checks in seconds."
|
|
},
|
|
"max_rate_limit_wait_seconds": {
|
|
"default": 300,
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 3600
|
|
},
|
|
"quota_fallback": {
|
|
"default": false,
|
|
"type": "boolean",
|
|
"description": "Deprecated: accepted for backward compatibility but ignored at runtime. Gemini fallback between Antigravity and Gemini CLI is always enabled."
|
|
},
|
|
"cli_first": {
|
|
"default": false,
|
|
"type": "boolean",
|
|
"description": "Prefer gemini-cli routing before Antigravity for Gemini models. When false (default), Antigravity is tried first and gemini-cli is fallback."
|
|
},
|
|
"account_selection_strategy": {
|
|
"default": "hybrid",
|
|
"type": "string",
|
|
"enum": [
|
|
"sticky",
|
|
"round-robin",
|
|
"hybrid"
|
|
]
|
|
},
|
|
"pid_offset_enabled": {
|
|
"default": false,
|
|
"type": "boolean"
|
|
},
|
|
"switch_on_first_rate_limit": {
|
|
"default": true,
|
|
"type": "boolean"
|
|
},
|
|
"scheduling_mode": {
|
|
"default": "cache_first",
|
|
"type": "string",
|
|
"enum": [
|
|
"cache_first",
|
|
"balance",
|
|
"performance_first"
|
|
],
|
|
"description": "Rate limit scheduling strategy. 'cache_first' (default) waits for cooldowns, 'balance' distributes across accounts, 'performance_first' picks fastest available."
|
|
},
|
|
"max_cache_first_wait_seconds": {
|
|
"default": 60,
|
|
"type": "number",
|
|
"minimum": 5,
|
|
"maximum": 300,
|
|
"description": "Maximum seconds to wait for a rate-limited account in cache_first mode before switching."
|
|
},
|
|
"failure_ttl_seconds": {
|
|
"default": 3600,
|
|
"type": "number",
|
|
"minimum": 60,
|
|
"maximum": 7200,
|
|
"description": "Time in seconds before a failed account is eligible for retry."
|
|
},
|
|
"default_retry_after_seconds": {
|
|
"default": 60,
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 300
|
|
},
|
|
"max_backoff_seconds": {
|
|
"default": 60,
|
|
"type": "number",
|
|
"minimum": 5,
|
|
"maximum": 300
|
|
},
|
|
"request_jitter_max_ms": {
|
|
"default": 0,
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 5000,
|
|
"description": "Maximum random jitter in milliseconds added to outgoing requests to avoid thundering herd."
|
|
},
|
|
"soft_quota_threshold_percent": {
|
|
"default": 90,
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 100,
|
|
"description": "Percentage of quota usage that triggers soft quota warnings and preemptive account switching."
|
|
},
|
|
"quota_refresh_interval_minutes": {
|
|
"default": 15,
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 60,
|
|
"description": "Interval in minutes between quota usage checks. Set to 0 to disable periodic checks."
|
|
},
|
|
"soft_quota_cache_ttl_minutes": {
|
|
"default": "auto",
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"const": "auto"
|
|
},
|
|
{
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 120
|
|
}
|
|
],
|
|
"description": "TTL for cached soft quota data. 'auto' (default) calculates from refresh interval, or set a fixed number of minutes."
|
|
},
|
|
"health_score": {
|
|
"type": "object",
|
|
"properties": {
|
|
"initial": {
|
|
"default": 70,
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 100
|
|
},
|
|
"success_reward": {
|
|
"default": 1,
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 10
|
|
},
|
|
"rate_limit_penalty": {
|
|
"default": -10,
|
|
"type": "number",
|
|
"minimum": -50,
|
|
"maximum": 0
|
|
},
|
|
"failure_penalty": {
|
|
"default": -20,
|
|
"type": "number",
|
|
"minimum": -100,
|
|
"maximum": 0
|
|
},
|
|
"recovery_rate_per_hour": {
|
|
"default": 2,
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 20
|
|
},
|
|
"min_usable": {
|
|
"default": 50,
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 100
|
|
},
|
|
"max_score": {
|
|
"default": 100,
|
|
"type": "number",
|
|
"minimum": 50,
|
|
"maximum": 100
|
|
}
|
|
},
|
|
"required": [
|
|
"initial",
|
|
"success_reward",
|
|
"rate_limit_penalty",
|
|
"failure_penalty",
|
|
"recovery_rate_per_hour",
|
|
"min_usable",
|
|
"max_score"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"token_bucket": {
|
|
"type": "object",
|
|
"properties": {
|
|
"max_tokens": {
|
|
"default": 50,
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 1000
|
|
},
|
|
"regeneration_rate_per_minute": {
|
|
"default": 6,
|
|
"type": "number",
|
|
"minimum": 0.1,
|
|
"maximum": 60
|
|
},
|
|
"initial_tokens": {
|
|
"default": 50,
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": 1000
|
|
}
|
|
},
|
|
"required": [
|
|
"max_tokens",
|
|
"regeneration_rate_per_minute",
|
|
"initial_tokens"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"auto_update": {
|
|
"default": true,
|
|
"type": "boolean",
|
|
"description": "Enable automatic plugin updates."
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|