187 lines
5.8 KiB
SQL
187 lines
5.8 KiB
SQL
CREATE TABLE IF NOT EXISTS projects (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
root_path TEXT NOT NULL UNIQUE,
|
|
canonical_path TEXT NOT NULL,
|
|
is_git_repository INTEGER NOT NULL DEFAULT 0,
|
|
trust_level TEXT NOT NULL DEFAULT 'readonly',
|
|
detected_stack_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
last_opened_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS project_settings (
|
|
project_id TEXT PRIMARY KEY,
|
|
model_profile_id TEXT,
|
|
approval_mode TEXT NOT NULL DEFAULT 'balanced',
|
|
git_isolation_mode TEXT NOT NULL DEFAULT 'worktree',
|
|
network_policy TEXT NOT NULL DEFAULT 'local_only',
|
|
read_roots_json TEXT NOT NULL DEFAULT '[]',
|
|
write_roots_json TEXT NOT NULL DEFAULT '[]',
|
|
ignored_paths_json TEXT NOT NULL DEFAULT '[]',
|
|
commands_json TEXT NOT NULL DEFAULT '{}',
|
|
FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
id TEXT PRIMARY KEY,
|
|
project_id TEXT NOT NULL,
|
|
title TEXT NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
mode TEXT NOT NULL DEFAULT 'planAndExecute',
|
|
status TEXT NOT NULL DEFAULT 'draft',
|
|
base_revision TEXT,
|
|
worktree_path TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
completed_at TEXT,
|
|
failure_code TEXT,
|
|
failure_message TEXT,
|
|
FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS task_events (
|
|
id TEXT PRIMARY KEY,
|
|
task_id TEXT NOT NULL,
|
|
sequence INTEGER NOT NULL,
|
|
event_type TEXT NOT NULL,
|
|
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
UNIQUE(task_id, sequence),
|
|
FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS messages (
|
|
id TEXT PRIMARY KEY,
|
|
task_id TEXT NOT NULL,
|
|
role TEXT NOT NULL,
|
|
content_markdown TEXT NOT NULL DEFAULT '',
|
|
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS plans (
|
|
id TEXT PRIMARY KEY,
|
|
task_id TEXT NOT NULL,
|
|
version INTEGER NOT NULL DEFAULT 1,
|
|
status TEXT NOT NULL DEFAULT 'draft',
|
|
content_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
approved_at TEXT,
|
|
FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tool_calls (
|
|
id TEXT PRIMARY KEY,
|
|
task_id TEXT NOT NULL,
|
|
tool_name TEXT NOT NULL,
|
|
arguments_json TEXT NOT NULL DEFAULT '{}',
|
|
reason TEXT NOT NULL DEFAULT '',
|
|
risk_level TEXT NOT NULL DEFAULT 'low',
|
|
approval_status TEXT NOT NULL DEFAULT 'pending',
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
output_summary TEXT,
|
|
error_json TEXT,
|
|
started_at TEXT,
|
|
completed_at TEXT,
|
|
FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS patches (
|
|
id TEXT PRIMARY KEY,
|
|
task_id TEXT NOT NULL,
|
|
version INTEGER NOT NULL DEFAULT 1,
|
|
status TEXT NOT NULL DEFAULT 'draft',
|
|
base_revision TEXT,
|
|
summary TEXT NOT NULL DEFAULT '',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
applied_at TEXT,
|
|
FOREIGN KEY(task_id) REFERENCES tasks(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS patch_files (
|
|
id TEXT PRIMARY KEY,
|
|
patch_id TEXT NOT NULL,
|
|
file_path TEXT NOT NULL,
|
|
operation TEXT NOT NULL,
|
|
before_hash TEXT,
|
|
after_hash TEXT,
|
|
diff_text TEXT NOT NULL DEFAULT '',
|
|
review_status TEXT NOT NULL DEFAULT 'pending',
|
|
FOREIGN KEY(patch_id) REFERENCES patches(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS command_runs (
|
|
id TEXT PRIMARY KEY,
|
|
task_id TEXT,
|
|
program TEXT NOT NULL,
|
|
args_json TEXT NOT NULL DEFAULT '[]',
|
|
cwd TEXT NOT NULL,
|
|
risk_level TEXT NOT NULL DEFAULT 'low',
|
|
exit_code INTEGER,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
output_log_path TEXT,
|
|
started_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
completed_at TEXT
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS model_profiles (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
role TEXT NOT NULL DEFAULT 'planner',
|
|
provider TEXT NOT NULL,
|
|
base_url TEXT NOT NULL,
|
|
model_id TEXT NOT NULL,
|
|
api_key_ref TEXT,
|
|
context_window INTEGER,
|
|
max_output_tokens INTEGER,
|
|
temperature REAL,
|
|
capabilities_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS mcp_servers (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
transport TEXT NOT NULL DEFAULT 'stdio',
|
|
command TEXT,
|
|
args_json TEXT NOT NULL DEFAULT '[]',
|
|
url TEXT,
|
|
status TEXT NOT NULL DEFAULT 'stopped',
|
|
auto_start INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS index_files (
|
|
id TEXT PRIMARY KEY,
|
|
project_id TEXT NOT NULL,
|
|
file_path TEXT NOT NULL,
|
|
file_size INTEGER NOT NULL DEFAULT 0,
|
|
modified_at TEXT NOT NULL,
|
|
file_hash TEXT,
|
|
language TEXT,
|
|
is_ignored INTEGER NOT NULL DEFAULT 0,
|
|
index_status TEXT NOT NULL DEFAULT 'pending',
|
|
UNIQUE(project_id, file_path),
|
|
FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS symbols (
|
|
id TEXT PRIMARY KEY,
|
|
project_id TEXT NOT NULL,
|
|
file_path TEXT NOT NULL,
|
|
symbol_name TEXT NOT NULL,
|
|
symbol_kind TEXT NOT NULL,
|
|
start_line INTEGER NOT NULL,
|
|
end_line INTEGER,
|
|
parent_symbol_id TEXT,
|
|
FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS app_settings (
|
|
key TEXT PRIMARY KEY,
|
|
value_json TEXT NOT NULL DEFAULT '{}',
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|