import { BackendConfigSection } from "../backends/types.js"; import { IdeationConfig, IdeationCategory } from "./ideation.js"; export type AutonomyLevel = "full" | "supervised" | "guided"; export type ModelProfile = "quality" | "speed" | "balanced"; export type BranchingStrategy = "phase" | "feature" | "trunk"; export type MilestoneType = "nfr" | "feature" | "schema-breaking"; export type PhaseName = "research" | "plan" | "execute" | "verify" | "complete"; export type AgentName = | "orchestrator" | "planner" | "executor" | "verifier" | "researcher" | "phase-researcher" | "challenger" | "security-auditor" | "debugger" | "doc-writer" | "doc-verifier" | "code-reviewer" | "ideation-agent" | "roadmapper" | "plan-checker" | "project-researcher" | "research-synthesizer" | "solution-writer" | "tester"; export interface AutonomyConfig { level: AutonomyLevel; escalation_hooks: string[]; clarify_budget: number; decision_confidence_threshold: number; max_revision_iterations: number; max_verification_retries: number; escalation_timeout_ms: number; } export interface ParallelizationConfig { enabled: boolean; max_concurrent_agents: number; min_plans_for_parallel: number; } export interface VerificationConfig { automated_only: boolean; escalate_visual: boolean; escalate_external_integration: boolean; test_first: boolean; } export interface SecurityConfig { auto_accept_low_severity: boolean; auto_mitigate_medium_severity: boolean; escalate_high_severity: boolean; } export interface GitConfig { branching_strategy: BranchingStrategy; auto_commit: boolean; auto_push: boolean; } export interface GiteaConfig { base_url: string; api_token_env: string; owner: string; repo: string; } export interface ProjectEntry { slug: string; name: string; default?: boolean; } export interface CIAgentConfig { projects: ProjectEntry[]; active_project: string; active_projects: string[]; autonomy: AutonomyConfig; model_profile: ModelProfile; parallelization: ParallelizationConfig; verification: VerificationConfig; security: SecurityConfig; git: GitConfig; backend: BackendConfigSection; gitea?: GiteaConfig; ideation?: IdeationConfig; } export const DEFAULT_CIAGENT_CONFIG: CIAgentConfig = { projects: [], active_project: "", active_projects: [], autonomy: { level: "full", escalation_hooks: ["deploy", "delete_data", "merge_to_main"], clarify_budget: 10, decision_confidence_threshold: 0.6, max_revision_iterations: 3, max_verification_retries: 2, escalation_timeout_ms: 300000, }, model_profile: "quality", parallelization: { enabled: true, max_concurrent_agents: 5, min_plans_for_parallel: 2, }, verification: { automated_only: true, escalate_visual: true, escalate_external_integration: true, test_first: false, }, security: { auto_accept_low_severity: true, auto_mitigate_medium_severity: true, escalate_high_severity: true, }, git: { branching_strategy: "phase", auto_commit: true, auto_push: false, }, backend: { provider: "auto", agent_backends: { opencode: { enabled: true }, }, llm_backends: { "openai": { base_url: "https://api.openai.com/v1", api_key_env: "OPENAI_API_KEY", model: "gpt-4o", model_profile: "quality", timeout_ms: 60000, }, "ollama-local": { base_url: "http://localhost:11434", model_profile: "balanced", }, "ollama-cloud": { base_url: "", api_key_env: "OLLAMA_CLOUD_API_KEY", model_profile: "quality", timeout_ms: 60000, }, "anthropic": { base_url: "https://api.anthropic.com", api_key_env: "ANTHROPIC_API_KEY", model: "claude-sonnet-4-20250514", api_version: "2023-06-01", model_profile: "quality", timeout_ms: 60000, }, }, }, gitea: { base_url: "https://git.cloudinit.dev", api_token_env: "GITEA_TOKEN", owner: "", repo: "", }, ideation: { enabled: true, categories: ["security", "quality", "architecture", "coverage", "improvement"] as IdeationCategory[], confidence_threshold: 0.6, max_ideas: 20, external_signals: { npm_audit: true, osv_advisories: true, dependency_staleness: true, }, cross_project: { enabled: false, similarity_weight: 0.5, }, chaos: { enabled: true, scenarios: ["backend_unavailable", "requirement_change", "test_coverage_drop"], }, }, };