From e8819773ee8c28c87036879f0983566d2260888b Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 3 Jun 2026 23:06:47 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20update=20TODO=20=E2=80=94=20mark=20comp?= =?UTF-8?q?leted=20items=20from=202026-06-03=20session?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - aider_run async/notify: done - L2→L3 boundary enforcement: done (default _agent_level=2) - aider_run multi-provider credentials: done - Added remaining item: pass _agent_level=1 from main orchestrators Co-Authored-By: Claude Sonnet 4.6 --- documentation/TODO__Agents.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/documentation/TODO__Agents.md b/documentation/TODO__Agents.md index 138260a..b341864 100644 --- a/documentation/TODO__Agents.md +++ b/documentation/TODO__Agents.md @@ -94,11 +94,13 @@ pipelines) unusable without freezing the orchestrator. `asyncio.Task` reference; admin-only, confirm-required — 2026-06-03 **Phase 2 — Level enforcement:** -- [ ] **`agent_level` ContextVar** — set to 1 in the main orchestrators; passed into - `spawn_agent` so sub-agents know their level -- [ ] **Auto-deny at L2→L3 boundary** — when Level 2 calls `spawn_agent`, automatically - add `deny_tools=["spawn_agent", "aider_run"]` so the Level 3 child cannot delegate; - store level in `AgentRecord` for lineage tracking +- [x] **L2→L3 boundary enforcement** — `spawn_agent` param `_agent_level` (default 2); + when `child_level >= 3`, auto-adds `spawn_agent` + `aider_run` to deny_tools so + Level 3 children cannot delegate; level stored in AgentRecord — 2026-06-03 +- [ ] **`_agent_level=1` from main orchestrators** — Gemini and OpenAI orchestrators + should pass `_agent_level=1` when calling spawn_agent so the hierarchy is rooted + correctly; currently defaults to 2 (children become Level 3, which is safe but + means Level 1 cannot spawn Level 2 that itself spawns Level 3) **Phase 3 — `aider_run` async:** - [x] **`aider_run` background mode** — added `background: bool = False` and @@ -286,8 +288,13 @@ dependency for coding tasks. Per-project `.aider.conf.yml` holds read-only conte and lint commands; model/key come from env vars (not committed). - [x] **`aider_run` tool** — `cortex/tools/aider.py`; project aliases + subprocess with `--message --yes-always`; admin-only, confirm-required, high risk — 2026-05-23 -- [ ] **`aider_run` async/notify** — current implementation blocks for up to 5 min with no UI feedback; convert to background task + web_push/NC Talk notification on completion (same pattern as `/orchestrate` jobs); optionally add `aider_status` tool for mid-task polling +- [x] **`aider_run` async/notify** — background=True fires subprocess via asyncio.create_task(), registers in agent_manager, returns agent_id immediately; notify=True sends push/Talk on completion — 2026-06-03 - [x] **`.aider.conf.yml`** — project-level Aider config: `read: [CLAUDE.md]`, Python lint-cmd, auto-commits — 2026-05-23 +- [x] **`aider_run` multi-provider credentials** — `_resolve_credentials()` pulls from + all configured hosts: OpenRouter/OpenAI/Groq/etc. → `--api-key slug=key`; + local Open WebUI/Ollama → `--openai-api-base + key`; Anthropic from + `providers.anthropic.credentials`; `host_label` param for explicit host selection; + auto-prefixes model with `openai/` for generic endpoints — 2026-06-03 - [x] **`.gitignore`** — added `.aider.chat.history.md`, `.aider.input.history`, `.aider.llm.history` — 2026-05-23 - [ ] Specialist agent: frontend (SvelteKit) code changes - [ ] Specialist agent: backend (FastAPI) code changes