feat(booterm): structured pty_exited WS notifications. Plan-validated, impl-validated, code-reviewed green (contracts build clean, contracts test 29/29, booterm + web typecheck clean). wip: in-progress inference/provider refactor (agents.ts, provider.ts, new llama-providers.ts, removed llama-args-validator), plus arena, dispatcher, compaction, schema changes. openspec: pty-exit-notifications complete; x-agent-flags planned (not yet implemented).
394 lines
8.3 KiB
Markdown
394 lines
8.3 KiB
Markdown
# 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
|