# Schema ### pending_changes - id: uuid (pk) - session_id: uuid (required, fk) - task_id: uuid (fk) - file_path: text (required) - operation: text (required) - diff: text (required) - status: text (required) ### tasks - id: uuid (pk) - project_id: uuid (required, fk) - parent_task_id: uuid (fk) - state: text (required) - input: text (required) - output_summary: text - agent: text - model: text - execution_path: text - cost_tokens: integer - started_at: timestamp(tz) - ended_at: timestamp(tz) ### available_agents - name: text (pk) - install_path: text - version: text - supports_acp: boolean (required) - last_probed_at: timestamp(tz) ### agent_sessions - session_id: uuid (required, fk) - agent: text (required) - backend: text (required) - agent_session_id: text (fk) - server_port: integer - status: text (required) - last_active_at: timestamp(tz) ### worktrees - id: uuid (pk) - session_id: uuid (fk) - project_id: uuid (fk) - path: text (required) - branch: text - base_commit: text - slug: text - status: text (required) ### checkpoints - id: uuid (pk) - chat_id: uuid (required, fk) - session_id: uuid (fk) - worktree_id: uuid (fk) - message_id: uuid (fk) ### claude_session_entries - id: bigint(auto) (pk) - project_key: text (required) - session_id: text (required, fk) - subpath: text (required) ### flow_runs - id: uuid (pk) - project_id: uuid (required, fk) - flow_name: text (required) - band: text (required) - model: text (required) - status: text (required) - input: jsonb (required) - report: text - error: text ### flow_steps - id: uuid (pk) - run_id: uuid (required, fk) - step_id: text (required, fk) - kind: text (required) - agent: text - status: text (required) - task_id: uuid (fk) - chat_id: uuid (fk) - input: text - output: text - error: text ### battles - id: uuid (pk) - project_id: uuid (required, fk) - battle_type: text (required) - prompt: text (required) - status: text (required) - winner_contestant_id: uuid (fk) - results_path: text - error: text ### contestants - id: uuid (pk) - battle_id: uuid (required, fk) - identity: text (required) - model: text (required) - lane: text (required) - task_id: uuid (fk) - worktree_id: uuid (fk) - status: text (required) - duration_ms: integer - tokens_per_sec: float8 - cost_tokens: integer - result_path: text - error: text ### cross_examinations - id: uuid (pk) - battle_id: uuid (required, fk) - identity: text (required) - model: text (required) - verdict: text ### flow_step_events - id: uuid (pk) - run_id: uuid (required, fk) - step_id: varchar (required, fk) - event: varchar (required) - payload: jsonb ### plans - id: uuid (pk) - project_id: uuid (required, fk) - title: text (required) - description: text - status: text (required) - flow_run_id: uuid (fk) - progress_pct: integer (required) - items_total: integer (required) - items_completed: integer (required) - metadata: jsonb ### control_hosts - provider_id: text (pk, fk) - ssh_host: text - ssh_user: text - ssh_key_path: text - config_path: text - restart_cmd: text - os: text - gpu_label: text - enabled: boolean (required) ### control_requests - id: bigint(auto) (pk) - provider_id: text (required, fk) - swap_entry_id: integer (required, fk) - ts: timestamp(tz) (required) - model: text - req_path: text - status_code: integer - duration_ms: integer - cache_tokens: integer - input_tokens: integer - output_tokens: integer - prompt_tps: real - gen_tps: real - has_capture: boolean (required) - capture: jsonb ### control_perf_samples - provider_id: text (required, fk) - ts: timestamp(tz) (required) - gpu: jsonb - sys: jsonb ### control_perf_rollup_5m - provider_id: text (required, fk) - bucket: timestamp(tz) (required) - gpu_agg: jsonb - sys_agg: jsonb ### control_model_events - provider_id: text (required, fk) - model: text (required) - state: text (required) - ts: timestamp(tz) (required) - detail: jsonb ### bench_suites - id: text (pk) - name: text (required) - provider_id: text (required, fk) - model: text (required) - repetitions: integer (required) - metadata: jsonb ### bench_runs - id: text (pk) - suite_id: text (required, fk) - job_type: text (required) - status: text (required) - started_at: timestamp(tz) - finished_at: timestamp(tz) - total_samples: integer (required) - completed_samples: integer (required) - concurrent_foreign_requests: integer (required) - temperature: real - top_p: real - aggregate: jsonb - regression_flag: text - error: text ### bench_samples - id: bigint(auto) (pk) - run_id: text (required, fk) - prompt_tokens: integer (required) - gen_tokens: integer (required) - concurrency: integer (required) - repetition: integer (required) - ttft_ms: real - total_ms: real - prompt_tps: real - gen_tps: real - cache_n: integer - error: text ### bench_baselines - provider_id: text (required, fk) - model: text (required) - aggregate: jsonb (required) - run_id: text (required, fk) ### eval_suites - id: text (pk) - name: text (required) - kind: text (required) - version: integer (required) - tasks: jsonb (required) - judge_model: text - judge_model_version: text - metadata: jsonb ### eval_runs - id: text (pk) - suite_id: text (required, fk) - job_type: text (required) - provider_id: text (required, fk) - model: text (required) - quant: text - status: text (required) - judge_model: text - judge_model_version: text - started_at: timestamp(tz) - finished_at: timestamp(tz) - total_tasks: integer (required) - completed_tasks: integer (required) - aggregate: jsonb - error: text ### eval_results - id: bigint(auto) (pk) - run_id: text (required, fk) - task_id: text (required, fk) - task_index: integer (required) - score: real - max_score: real - rationale: text - sandbox_exit_code: integer - sandbox_stderr: text - sandbox_stdout: text - execution_ms: integer - error: text ### control_reports - id: text (pk) - kind: text (required) - interval: text (required) - period_start: timestamp(tz) (required) - period_end: timestamp(tz) (required) - markdown: text (required) - stats: jsonb ### control_schedule_meta - name: text (pk) - interval: text (required) - enabled: boolean (required) - last_run_at: timestamp(tz) ### route_policies - id: text (pk) - name: text (required) - virtual_model: text (required) - candidates: jsonb (required) - fallback: text - enabled: boolean (required) ### route_dispatch_log - id: bigint(auto) (pk) - ts: timestamp(tz) (required) - virtual_model: text (required) - chosen_provider_id: text (fk) - chosen_model: text - candidates_tried: jsonb - status: text (required) - source: text - error: text - duration_ms: integer ### projects - id: uuid (pk) - name: text (required) - path: text (required) - added_at: timestamp(tz) (required) - last_session_id: uuid (fk) ### sessions - id: uuid (pk) - project_id: uuid (required, fk) - name: text (required) - model: text (required) - system_prompt: text (required) ### messages - id: uuid (pk) - session_id: uuid (required, fk) - role: text (required) - content: text (required) - status: text (required) - last_seq: integer (required) - cache_tokens: integer - reasoning_tokens: integer ### message_parts - id: uuid (pk) - message_id: uuid (required, fk) - sequence: integer (required) - kind: text (required) - payload: jsonb (required) ### settings - value: jsonb (required) ### chats - id: uuid (pk) - session_id: uuid (required, fk) - name: text - status: text (required) ### tool_traces - id: uuid (pk) - session_id: uuid (required, fk) - chat_id: uuid (required, fk) - message_id: uuid (fk) - turn_number: integer (required) - tool_name: text (required) - tool_input: jsonb (required) - tool_output: text - started_at: timestamp(tz) (required) - finished_at: timestamp(tz) - latency_ms: integer - tokens_used: integer - cache_tokens: integer - reasoning_tokens: integer - error: text - outcome: text ### tool_trace_states - id: uuid (pk) - session_id: uuid (required, fk) - chat_id: uuid (required, fk) - message_id: uuid (fk) - turn_number: integer (required) - tool_name: text (required) - tool_input: jsonb (required) - started_at: timestamp(tz) (required) ### agent_snapshots - id: uuid (pk) - session_id: uuid (required, fk) - chat_id: uuid (required, fk) - model: text (required) - agent: text - mode: text - turn_number: integer (required) - messages: jsonb (required) - tool_states: jsonb (required) ### memory_entries - id: uuid (pk) - project_id: uuid (required, fk) - topic: text (required) - title: text (required) - content: text (required) - date: date - mood: text