Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
343 changes: 343 additions & 0 deletions .agents/configs/aidevops-config.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,343 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://aidevops.sh/config.json",
"title": "aidevops Configuration",
"description": "Configuration schema for the aidevops framework. Supports JSONC (JSON with Comments).",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"description": "JSON Schema reference for editor autocomplete and validation."
},

"updates": {
"type": "object",
"description": "Auto-update behaviour for aidevops, skills, tools, and OpenClaw.",
"properties": {
"auto_update": {
"type": "boolean",
"default": true,
"description": "Automatically check for and install aidevops updates. Env: AIDEVOPS_AUTO_UPDATE"
},
"update_interval_minutes": {
"type": "integer",
"default": 10,
"minimum": 1,
"description": "Minutes between update checks. Env: AIDEVOPS_UPDATE_INTERVAL"
},
"skill_auto_update": {
"type": "boolean",
"default": true,
"description": "Automatically check imported skills for upstream changes. Env: AIDEVOPS_SKILL_AUTO_UPDATE"
},
"skill_freshness_hours": {
"type": "integer",
"default": 24,
"minimum": 1,
"description": "Hours between skill freshness checks. Env: AIDEVOPS_SKILL_FRESHNESS_HOURS"
},
"tool_auto_update": {
"type": "boolean",
"default": true,
"description": "Automatically update installed tools when user is idle. Env: AIDEVOPS_TOOL_AUTO_UPDATE"
},
"tool_freshness_hours": {
"type": "integer",
"default": 6,
"minimum": 1,
"description": "Hours between tool freshness checks. Env: AIDEVOPS_TOOL_FRESHNESS_HOURS"
},
"tool_idle_hours": {
"type": "integer",
"default": 6,
"minimum": 1,
"description": "Required user idle hours before tool updates run. Env: AIDEVOPS_TOOL_IDLE_HOURS"
},
"openclaw_auto_update": {
"type": "boolean",
"default": true,
"description": "Automatically check for OpenClaw updates. Env: AIDEVOPS_OPENCLAW_AUTO_UPDATE"
},
"openclaw_freshness_hours": {
"type": "integer",
"default": 24,
"minimum": 1,
"description": "Hours between OpenClaw update checks. Env: AIDEVOPS_OPENCLAW_FRESHNESS_HOURS"
}
},
"additionalProperties": false
},

"integrations": {
"type": "object",
"description": "AI assistant and external tool integration management.",
"properties": {
"manage_opencode_config": {
"type": "boolean",
"default": true,
"description": "Allow setup.sh to modify OpenCode config."
},
"manage_claude_config": {
"type": "boolean",
"default": true,
"description": "Allow setup.sh to modify Claude Code config."
}
},
"additionalProperties": false
},

"orchestration": {
"type": "object",
"description": "Supervisor, dispatch, and autonomous operation settings.",
"properties": {
"supervisor_pulse": {
"type": "boolean",
"default": true,
"description": "Enable the autonomous supervisor pulse scheduler. Env: AIDEVOPS_SUPERVISOR_PULSE"
},
"repo_sync": {
"type": "boolean",
"default": true,
"description": "Enable daily git pull --ff-only on clean repos. Env: AIDEVOPS_REPO_SYNC"
}
},
"additionalProperties": false
},

"safety": {
"type": "object",
"description": "Security hooks, verification, and protective measures.",
"properties": {
"hooks_enabled": {
"type": "boolean",
"default": true,
"description": "Install git pre-commit and pre-push safety hooks."
},
"verification_enabled": {
"type": "boolean",
"default": true,
"description": "Enable parallel model verification for high-stakes operations."
},
"verification_tier": {
"type": "string",
"default": "haiku",
"enum": ["haiku", "flash", "sonnet", "pro", "opus"],
"description": "Model tier used for verification checks."
}
},
"additionalProperties": false
},

"ui": {
"type": "object",
"description": "User interface and session experience settings.",
"properties": {
"session_greeting": {
"type": "boolean",
"default": true,
"description": "Show version check and update prompt when starting an AI session."
},
"shell_aliases": {
"type": "boolean",
"default": true,
"description": "Add aidevops shell aliases to .zshrc/.bashrc during setup."
},
"onboarding_prompt": {
"type": "boolean",
"default": true,
"description": "Offer to launch /onboarding after setup.sh completes."
}
},
"additionalProperties": false
},

"models": {
"type": "object",
"description": "Model routing, tiers, and provider configuration.",
"properties": {
"tiers": {
"type": "object",
"description": "Model tier assignments. Each tier maps to an ordered list of models.",
"additionalProperties": {
"type": "object",
"properties": {
"models": {
"type": "array",
"items": { "type": "string" },
"description": "Ordered list of models for this tier."
},
"fallback": {
"type": "string",
"description": "Tier to fall back to if all models in this tier are unavailable."
}
},
"required": ["models"]
}
},
"providers": {
"type": "object",
"description": "Provider endpoint and authentication configuration.",
"additionalProperties": {
"type": "object",
"properties": {
"endpoint": { "type": "string", "format": "uri" },
"key_env": { "type": ["string", "null"] },
"probe_timeout_seconds": { "type": "integer", "minimum": 1 }
}
}
},
"fallback_chains": {
"type": "object",
"description": "Per-tier fallback chains for model-level failover.",
"additionalProperties": {
"type": "array",
"items": { "type": "string" }
}
},
"fallback_triggers": {
"type": "object",
"description": "Fallback trigger configuration.",
"additionalProperties": {
"type": "object",
"properties": {
"enabled": { "type": "boolean" },
"cooldown_seconds": { "type": "integer", "minimum": 0 }
}
}
},
"settings": {
"type": "object",
"description": "General model routing settings.",
"properties": {
"probe_timeout_seconds": { "type": "integer", "default": 10 },
"cache_ttl_seconds": { "type": "integer", "default": 300 },
"max_chain_depth": { "type": "integer", "default": 5 },
"default_cooldown_seconds": { "type": "integer", "default": 300 },
"log_retention_days": { "type": "integer", "default": 30 }
}
},
"rate_limits": {
"type": "object",
"description": "Rate limits per provider.",
"properties": {
"warn_pct": { "type": "integer", "default": 80, "minimum": 0, "maximum": 100 },
"window_minutes": { "type": "integer", "default": 1, "minimum": 1 },
"providers": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"requests_per_min": { "type": "integer", "minimum": 0 },
"tokens_per_min": { "type": "integer", "minimum": 0 }
}
}
}
}
},
"gateways": {
"type": "object",
"description": "Gateway provider configuration.",
"additionalProperties": {
"type": "object",
"properties": {
"enabled": { "type": "boolean" },
"endpoint": { "type": "string" },
"key_env_var": { "type": "string" },
"account_id": { "type": "string" },
"gateway_id": { "type": "string" }
}
}
}
},
"additionalProperties": false
},

"quality": {
"type": "object",
"description": "Code quality, linting, and CI/CD timing configuration.",
"properties": {
"sonarcloud_grade": {
"type": "string",
"default": "A",
"enum": ["A", "B", "C", "D", "E"],
"description": "Target quality grade for SonarCloud analysis."
},
"shellcheck_max_violations": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "ShellCheck violation tolerance (0 = zero tolerance)."
},
"ci_timing": {
"type": "object",
"description": "CI/CD service timing constants (seconds).",
"properties": {
"fast_wait": { "type": "integer", "default": 10 },
"fast_poll": { "type": "integer", "default": 5 },
"medium_wait": { "type": "integer", "default": 60 },
"medium_poll": { "type": "integer", "default": 15 },
"slow_wait": { "type": "integer", "default": 120 },
"slow_poll": { "type": "integer", "default": 30 },
"fast_timeout": { "type": "integer", "default": 60 },
"medium_timeout": { "type": "integer", "default": 180 },
"slow_timeout": { "type": "integer", "default": 600 },
"backoff_base": { "type": "integer", "default": 15 },
"backoff_max": { "type": "integer", "default": 120 },
"backoff_multiplier": { "type": "integer", "default": 2 }
},
"additionalProperties": false
}
},
"additionalProperties": false
},

"verification": {
"type": "object",
"description": "High-stakes operation verification triggers.",
"properties": {
"enabled": { "type": "boolean", "default": true },
"default_gate": {
"type": "string",
"default": "warn",
"enum": ["block", "warn", "allow"]
},
"cross_provider": { "type": "boolean", "default": true },
"verifier_tier": { "type": "string", "default": "sonnet" },
"escalation_tier": { "type": "string", "default": "opus" },
"categories": {
"type": "object",
"description": "Per-category risk levels and gates.",
"additionalProperties": {
"type": "object",
"properties": {
"risk_level": {
"type": "string",
"enum": ["critical", "high", "medium", "low"]
},
"gate": {
"type": "string",
"enum": ["block", "warn", "allow"]
}
}
}
}
},
"additionalProperties": false
},

"paths": {
"type": "object",
"description": "Directory and file path configuration. Supports ~ for home directory.",
"properties": {
"agents_dir": { "type": "string", "default": "~/.aidevops/agents" },
"config_dir": { "type": "string", "default": "~/.config/aidevops" },
"workspace_dir": { "type": "string", "default": "~/.aidevops/.agent-workspace" },
"log_dir": { "type": "string", "default": "~/.aidevops/logs" },
"memory_db": { "type": "string", "default": "~/.aidevops/.agent-workspace/memory/memory.db" },
"worktree_registry_db": { "type": "string", "default": "~/.aidevops/.agent-workspace/worktree-registry.db" }
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Loading