mirror of
https://github.com/openai/codex.git
synced 2026-04-26 07:35:29 +00:00
## Summary - Add agent job support: spawn a batch of sub-agents from CSV, auto-run, auto-export, and store results in SQLite. - Simplify workflow: remove run/resume/get-status/export tools; spawn is deterministic and completes in one call. - Improve exec UX: stable, single-line progress bar with ETA; suppress sub-agent chatter in exec. ## Why Enables map-reduce style workflows over arbitrarily large repos using the existing Codex orchestrator. This addresses review feedback about overly complex job controls and non-deterministic monitoring. ## Demo (progress bar) ``` ./codex-rs/target/debug/codex exec \ --enable collab \ --enable sqlite \ --full-auto \ --progress-cursor \ -c agents.max_threads=16 \ -C /Users/daveaitel/code/codex \ - <<'PROMPT' Create /tmp/agent_job_progress_demo.csv with columns: path,area and 30 rows: path = item-01..item-30, area = test. Then call spawn_agents_on_csv with: - csv_path: /tmp/agent_job_progress_demo.csv - instruction: "Run `python - <<'PY'` to sleep a random 0.3–1.2s, then output JSON with keys: path, score (int). Set score = 1." - output_csv_path: /tmp/agent_job_progress_demo_out.csv PROMPT ``` ## Review feedback addressed - Auto-start jobs on spawn; removed run/resume/status/export tools. - Auto-export on success. - More descriptive tool spec + clearer prompts. - Avoid deadlocks on spawn failure; pending/running handled safely. - Progress bar no longer scrolls; stable single-line redraw. ## Tests - `cd codex-rs && cargo test -p codex-exec` - `cd codex-rs && cargo build -p codex-cli`
39 lines
1.1 KiB
SQL
39 lines
1.1 KiB
SQL
CREATE TABLE agent_jobs (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
instruction TEXT NOT NULL,
|
|
output_schema_json TEXT,
|
|
input_headers_json TEXT NOT NULL,
|
|
input_csv_path TEXT NOT NULL,
|
|
output_csv_path TEXT NOT NULL,
|
|
auto_export INTEGER NOT NULL DEFAULT 1,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
started_at INTEGER,
|
|
completed_at INTEGER,
|
|
last_error TEXT
|
|
);
|
|
|
|
CREATE TABLE agent_job_items (
|
|
job_id TEXT NOT NULL,
|
|
item_id TEXT NOT NULL,
|
|
row_index INTEGER NOT NULL,
|
|
source_id TEXT,
|
|
row_json TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
assigned_thread_id TEXT,
|
|
attempt_count INTEGER NOT NULL DEFAULT 0,
|
|
result_json TEXT,
|
|
last_error TEXT,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
completed_at INTEGER,
|
|
reported_at INTEGER,
|
|
PRIMARY KEY (job_id, item_id),
|
|
FOREIGN KEY(job_id) REFERENCES agent_jobs(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX idx_agent_jobs_status ON agent_jobs(status, updated_at DESC);
|
|
CREATE INDEX idx_agent_job_items_status ON agent_job_items(job_id, status, row_index ASC);
|