- ADR-0001: Multi-Agent Coworking Architecture with LLM Gateway Orchestrator - ADR-0002: Tier Assignment Strategy for Model Selection (cost-first escalation) - ADR-0003: Confidence Gate Thresholds & Learning Cycle Intervals (6h/12h/24h cycles) - ADR-0004: External Provider Fallback Chain Ordering (Cerebras → Groq → Mistral) - Enhanced client SDK: Offline Ollama fallback, health checks, exponential backoff retry - Integration tests: claude-code-integration.test.ts (14 test cases) - PHASE_2F_DEPLOYMENT.md: Pre-deployment checklist, automated deploy, rollback plan - Post-deployment verification procedures for health, client fallback, metrics
190 lines
6.1 KiB
SQL
190 lines
6.1 KiB
SQL
-- Migration: Add Tokenvault & Cost Tracking Tables
|
|
-- Created: 2026-04-19
|
|
-- Purpose: Track token compression and cost analytics
|
|
|
|
-- Enable JSON extension if not already enabled
|
|
CREATE EXTENSION IF NOT EXISTS json;
|
|
|
|
-- Table: Token compression metrics (LeanCTX, RTK)
|
|
CREATE TABLE IF NOT EXISTS tokenvault_metrics (
|
|
id SERIAL PRIMARY KEY,
|
|
file_path VARCHAR(255),
|
|
mode VARCHAR(50),
|
|
tokens_before INT NOT NULL,
|
|
tokens_after INT NOT NULL,
|
|
savings_pct DECIMAL(5,2) NOT NULL,
|
|
tool_used VARCHAR(50) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_tool_created (tool_used, created_at),
|
|
INDEX idx_created (created_at)
|
|
);
|
|
|
|
-- Table: Cost analytics per task
|
|
CREATE TABLE IF NOT EXISTS cost_analytics (
|
|
id SERIAL PRIMARY KEY,
|
|
call_id VARCHAR(50),
|
|
project VARCHAR(100),
|
|
task_type VARCHAR(50),
|
|
model VARCHAR(100),
|
|
agent_id VARCHAR(50),
|
|
tokens_in INT NOT NULL DEFAULT 0,
|
|
tokens_out INT NOT NULL DEFAULT 0,
|
|
tokens_compressed INT NOT NULL DEFAULT 0,
|
|
cost_usd DECIMAL(10,6) NOT NULL DEFAULT 0,
|
|
cost_saved_usd DECIMAL(10,6) NOT NULL DEFAULT 0,
|
|
provider VARCHAR(50),
|
|
confidence_score DECIMAL(3,2),
|
|
request_hash VARCHAR(64),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_project_created (project, created_at),
|
|
INDEX idx_agent_created (agent_id, created_at),
|
|
INDEX idx_model_created (model, created_at),
|
|
INDEX idx_call_id (call_id)
|
|
);
|
|
|
|
-- Table: Compression savings summary (daily aggregate)
|
|
CREATE TABLE IF NOT EXISTS compression_summary (
|
|
id SERIAL PRIMARY KEY,
|
|
date DATE NOT NULL,
|
|
tool VARCHAR(50) NOT NULL,
|
|
total_tokens_before INT NOT NULL,
|
|
total_tokens_after INT NOT NULL,
|
|
total_savings_pct DECIMAL(5,2),
|
|
count INT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
UNIQUE KEY unique_date_tool (date, tool)
|
|
);
|
|
|
|
-- Table: Cost alerts configuration
|
|
CREATE TABLE IF NOT EXISTS cost_alert_config (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id VARCHAR(100),
|
|
project VARCHAR(100),
|
|
alert_type VARCHAR(50),
|
|
threshold DECIMAL(8,2),
|
|
threshold_type VARCHAR(20),
|
|
enabled BOOLEAN DEFAULT TRUE,
|
|
weekly_budget_usd DECIMAL(10,2),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Table: Alert history
|
|
CREATE TABLE IF NOT EXISTS alert_log (
|
|
id SERIAL PRIMARY KEY,
|
|
alert_type VARCHAR(50),
|
|
severity VARCHAR(20),
|
|
message TEXT,
|
|
metadata JSON,
|
|
acknowledged BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_severity_created (severity, created_at),
|
|
INDEX idx_created (created_at)
|
|
);
|
|
|
|
-- Create additional indexes
|
|
CREATE INDEX IF NOT EXISTS idx_cost_analytics_week
|
|
ON cost_analytics(created_at DESC)
|
|
WHERE created_at > DATE_SUB(NOW(), INTERVAL 7 DAY);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_compression_daily
|
|
ON tokenvault_metrics(created_at DESC)
|
|
WHERE created_at > DATE_SUB(NOW(), INTERVAL 1 DAY);
|
|
|
|
-- Add cost tracking to batch_jobs table
|
|
ALTER TABLE batch_jobs
|
|
ADD COLUMN IF NOT EXISTS total_cost_usd DECIMAL(10,6) NOT NULL DEFAULT 0,
|
|
ADD COLUMN IF NOT EXISTS total_saved_usd DECIMAL(10,6) NOT NULL DEFAULT 0,
|
|
ADD INDEX idx_batch_jobs_cost_created (total_cost_usd, created_at DESC);
|
|
|
|
-- Table: Fallback chain execution metrics
|
|
CREATE TABLE IF NOT EXISTS fallback_chain_metrics (
|
|
id SERIAL PRIMARY KEY,
|
|
call_id VARCHAR(50),
|
|
task_type VARCHAR(50),
|
|
primary_model VARCHAR(100) NOT NULL,
|
|
fallback_step INT NOT NULL,
|
|
fallback_model VARCHAR(100),
|
|
provider VARCHAR(50),
|
|
success BOOLEAN NOT NULL,
|
|
tokens_in INT NOT NULL DEFAULT 0,
|
|
tokens_out INT NOT NULL DEFAULT 0,
|
|
latency_ms INT NOT NULL,
|
|
reason_switched VARCHAR(50),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_call_created (call_id, created_at),
|
|
INDEX idx_model_created (primary_model, created_at),
|
|
INDEX idx_task_created (task_type, created_at)
|
|
);
|
|
|
|
-- Table: Model performance metrics (for learning engine)
|
|
CREATE TABLE IF NOT EXISTS model_performance (
|
|
id SERIAL PRIMARY KEY,
|
|
model VARCHAR(100) NOT NULL,
|
|
task_type VARCHAR(50),
|
|
success_rate DECIMAL(5,2),
|
|
avg_latency_ms INT,
|
|
avg_tokens_in INT,
|
|
avg_tokens_out INT,
|
|
total_calls INT DEFAULT 0,
|
|
total_failures INT DEFAULT 0,
|
|
confidence_avg DECIMAL(3,2),
|
|
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
UNIQUE KEY unique_model_task (model, task_type),
|
|
INDEX idx_success_rate (success_rate DESC),
|
|
INDEX idx_latency (avg_latency_ms ASC)
|
|
);
|
|
|
|
-- Table: Learning engine cycle logs
|
|
CREATE TABLE IF NOT EXISTS learning_cycles (
|
|
id SERIAL PRIMARY KEY,
|
|
cycle_id VARCHAR(50) NOT NULL UNIQUE,
|
|
cycle_duration VARCHAR(20),
|
|
improvements_found INT DEFAULT 0,
|
|
routing_changes INT DEFAULT 0,
|
|
template_updates INT DEFAULT 0,
|
|
model_rankings_updated BOOLEAN DEFAULT FALSE,
|
|
confidence_threshold_adjusted DECIMAL(3,2),
|
|
metrics JSON,
|
|
status VARCHAR(50),
|
|
started_at TIMESTAMP,
|
|
completed_at TIMESTAMP,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_cycle_duration (cycle_duration, completed_at DESC),
|
|
INDEX idx_status (status),
|
|
INDEX idx_completed (completed_at DESC)
|
|
);
|
|
|
|
-- Table: Routing decisions and performance
|
|
CREATE TABLE IF NOT EXISTS routing_decisions (
|
|
id SERIAL PRIMARY KEY,
|
|
call_id VARCHAR(50),
|
|
task_type VARCHAR(50) NOT NULL,
|
|
caller VARCHAR(100),
|
|
routing_model VARCHAR(100) NOT NULL,
|
|
routing_tier VARCHAR(20),
|
|
actual_model_used VARCHAR(100),
|
|
was_fallback BOOLEAN DEFAULT FALSE,
|
|
success BOOLEAN NOT NULL,
|
|
confidence_final DECIMAL(3,2),
|
|
tokens_in INT,
|
|
tokens_out INT,
|
|
latency_ms INT,
|
|
cost_usd DECIMAL(10,6),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_task_created (task_type, created_at),
|
|
INDEX idx_routing_model (routing_model, created_at),
|
|
INDEX idx_success (success, created_at)
|
|
);
|
|
|
|
-- Initialize default alert config for Rene
|
|
INSERT INTO cost_alert_config
|
|
(user_id, alert_type, threshold, threshold_type, enabled, weekly_budget_usd)
|
|
VALUES
|
|
('rene', 'compression_below', 40, 'percent', TRUE, 50),
|
|
('rene', 'external_api', 0, 'usd', TRUE, NULL),
|
|
('rene', 'weekly_budget', 50, 'usd', TRUE, 50)
|
|
ON DUPLICATE KEY UPDATE enabled = VALUES(enabled);
|