-- Migration 016: Version Manager & Upstream Proxy tables -- -- Adds two tables for CLIProxyAPI integration: -- version_manager — binary lifecycle management for CLI tools (CLIProxyAPI, etc.) -- upstream_proxy_config — per-provider routing mode (native vs CLIProxyAPI vs fallback) -- -------------------------------------------------------------------------- -- Table: version_manager -- Tracks installed versions, process state, and update settings for -- externally managed CLI tools (initially CLIProxyAPI). -- -------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS version_manager ( id INTEGER PRIMARY KEY AUTOINCREMENT, tool TEXT NOT NULL UNIQUE, -- 'cliproxyapi' | 'omniroute' current_version TEXT, -- latest known release version installed_version TEXT, -- currently installed version pinned_version TEXT, -- user-pinned version (null = auto) binary_path TEXT, -- absolute path to binary status TEXT NOT NULL DEFAULT 'not_installed', -- not_installed | installed | running | stopped | error pid INTEGER, -- process ID when running port INTEGER DEFAULT 8317, -- managed tool's port api_key TEXT, -- API key for CLIProxyAPI (from its config) management_key TEXT, -- CLIProxyAPI management secret key auto_update INTEGER NOT NULL DEFAULT 1, -- 1 = auto-update enabled auto_start INTEGER NOT NULL DEFAULT 0, -- 1 = start with OmniRoute last_health_check TEXT, -- ISO timestamp last_update_check TEXT, -- ISO timestamp health_status TEXT DEFAULT 'unknown', -- unknown | healthy | unhealthy | timeout config_overrides TEXT, -- JSON blob for CLIProxyAPI config overrides error_message TEXT, -- last error message created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); -- -------------------------------------------------------------------------- -- Table: upstream_proxy_config -- Per-provider routing configuration for CLIProxyAPI passthrough mode. -- Determines whether each provider uses OmniRoute's native executor, -- delegates to CLIProxyAPI, or uses fallback (native first, then CLIProxyAPI). -- -------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS upstream_proxy_config ( id INTEGER PRIMARY KEY AUTOINCREMENT, provider_id TEXT NOT NULL UNIQUE, -- e.g., 'antigravity', 'claude', 'codex' mode TEXT NOT NULL DEFAULT 'native', -- 'native' | 'cliproxyapi' | 'fallback' cliproxyapi_model_mapping TEXT, -- JSON: { "ag/gemini-3-pro": "gemini-3-pro-high", ... } native_priority INTEGER NOT NULL DEFAULT 1, -- order in fallback chain (1 = first) cliproxyapi_priority INTEGER NOT NULL DEFAULT 2, -- order in fallback chain enabled INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE INDEX IF NOT EXISTS idx_upc_provider ON upstream_proxy_config(provider_id); CREATE INDEX IF NOT EXISTS idx_upc_mode ON upstream_proxy_config(mode); CREATE INDEX IF NOT EXISTS idx_vm_tool ON version_manager(tool); CREATE INDEX IF NOT EXISTS idx_vm_status ON version_manager(status);