mirror of
https://github.com/openai/codex.git
synced 2026-04-29 08:56:38 +00:00
## Align with the new phase-1 design Basically we know run phase 1 in parallel by considering: * Max 64 rollouts * Max 1 month old * Consider the most recent first This PR also adds stronger parallelization capabilities by detecting stale jobs, retry policies, ownership of computation to prevent double computations etc etc
86 lines
2.6 KiB
SQL
86 lines
2.6 KiB
SQL
DROP TABLE IF EXISTS thread_memory;
|
|
DROP TABLE IF EXISTS memory_consolidation_locks;
|
|
DROP TABLE IF EXISTS memory_phase1_jobs;
|
|
DROP TABLE IF EXISTS memory_scope_dirty;
|
|
DROP TABLE IF EXISTS memory_phase2_jobs;
|
|
|
|
CREATE TABLE thread_memory (
|
|
thread_id TEXT NOT NULL,
|
|
scope_kind TEXT NOT NULL,
|
|
scope_key TEXT NOT NULL,
|
|
raw_memory TEXT NOT NULL,
|
|
memory_summary TEXT NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
last_used_at INTEGER,
|
|
used_count INTEGER NOT NULL DEFAULT 0,
|
|
invalidated_at INTEGER,
|
|
invalid_reason TEXT,
|
|
PRIMARY KEY (thread_id, scope_kind, scope_key),
|
|
FOREIGN KEY(thread_id) REFERENCES threads(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX idx_thread_memory_scope_last_used_at
|
|
ON thread_memory(scope_kind, scope_key, last_used_at DESC, thread_id DESC);
|
|
CREATE INDEX idx_thread_memory_scope_updated_at
|
|
ON thread_memory(scope_kind, scope_key, updated_at DESC, thread_id DESC);
|
|
|
|
CREATE TABLE memory_phase1_jobs (
|
|
thread_id TEXT NOT NULL,
|
|
scope_kind TEXT NOT NULL,
|
|
scope_key TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
owner_session_id TEXT,
|
|
started_at INTEGER,
|
|
finished_at INTEGER,
|
|
failure_reason TEXT,
|
|
source_updated_at INTEGER NOT NULL,
|
|
raw_memory_path TEXT,
|
|
summary_hash TEXT,
|
|
ownership_token TEXT,
|
|
PRIMARY KEY (thread_id, scope_kind, scope_key),
|
|
FOREIGN KEY(thread_id) REFERENCES threads(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX idx_memory_phase1_jobs_status_started_at
|
|
ON memory_phase1_jobs(status, started_at DESC);
|
|
CREATE INDEX idx_memory_phase1_jobs_scope
|
|
ON memory_phase1_jobs(scope_kind, scope_key);
|
|
|
|
CREATE TABLE memory_scope_dirty (
|
|
scope_kind TEXT NOT NULL,
|
|
scope_key TEXT NOT NULL,
|
|
dirty INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
PRIMARY KEY (scope_kind, scope_key)
|
|
);
|
|
|
|
CREATE INDEX idx_memory_scope_dirty_dirty
|
|
ON memory_scope_dirty(dirty, updated_at DESC);
|
|
|
|
CREATE TABLE memory_phase2_jobs (
|
|
scope_kind TEXT NOT NULL,
|
|
scope_key TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
owner_session_id TEXT,
|
|
agent_thread_id TEXT,
|
|
started_at INTEGER,
|
|
last_heartbeat_at INTEGER,
|
|
finished_at INTEGER,
|
|
attempt INTEGER NOT NULL DEFAULT 0,
|
|
failure_reason TEXT,
|
|
ownership_token TEXT,
|
|
PRIMARY KEY (scope_kind, scope_key)
|
|
);
|
|
|
|
CREATE INDEX idx_memory_phase2_jobs_status_heartbeat
|
|
ON memory_phase2_jobs(status, last_heartbeat_at DESC);
|
|
|
|
CREATE TABLE memory_consolidation_locks (
|
|
cwd TEXT PRIMARY KEY,
|
|
working_thread_id TEXT NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE INDEX idx_memory_consolidation_locks_updated_at
|
|
ON memory_consolidation_locks(updated_at DESC);
|