diff --git a/AGENTS.md b/AGENTS.md index 7904a9e9..93c7451c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -90,5 +90,5 @@ make docker-agent # add a worker ## Roadmap -**v2.0 Exodus (in progress):** Swarm + L402 + Voice + Marketplace + Hands +**v2.0 Exodus (in progress):** Voice + Marketplace + Integrations **v3.0 Revelation (planned):** Lightning treasury + `.app` bundle + federation diff --git a/CLAUDE.md b/CLAUDE.md index d2d41b80..ac86d955 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -76,7 +76,7 @@ make test-cov # With coverage (term-missing + XML) ## Security-Sensitive Areas -- `src/timmy_serve/l402_proxy.py` — Payment gating +- `src/timmy_serve/` — API server, payment configuration - Any file handling secrets or authentication tokens --- diff --git a/README.md b/README.md index 1b481d80..bebdaea9 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,10 @@ Fallback: qwen2.5:14b if llama3.1:8b-instruct is not available. |-----------|-------------| | **Timmy Agent** | Agno-powered agent (Ollama default, AirLLM optional for 70B/405B) | | **Mission Control** | FastAPI + HTMX dashboard — chat, health, swarm, marketplace | -| **Swarm** | Multi-agent coordinator — spawn agents, post tasks, Lightning auctions | -| **L402 / Lightning** | Bitcoin Lightning payment gating for API access | | **Spark** | Event capture, predictions, memory consolidation, advisory | -| **Creative Studio** | Multi-persona pipeline — image, music, video generation | -| **Hands** | 6 autonomous scheduled agents — Oracle, Sentinel, Scout, Scribe, Ledger, Weaver | -| **Self-Coding** | Codebase-aware self-modification with git safety | +| **Infrastructure** | WebSocket manager, notifications, events bus, LLM cascade router | | **Integrations** | Telegram bridge, Siri Shortcuts, voice NLU, mobile layout | +| **Brain** | Identity system, memory interface | --- @@ -58,7 +55,7 @@ make docker-up # start via Docker make help # see all commands ``` -**CLI tools:** `timmy`, `timmy-serve`, `self-tdd`, `self-modify` +**CLI tools:** `timmy`, `timmy-serve` --- @@ -105,18 +102,16 @@ Browser / Phone └───┬─────────────┬──────────┬────────────┘ │ │ │ ▼ ▼ ▼ -Jinja2 Timmy Swarm -Templates Agent Coordinator -(HTMX) │ ├─ Registry (SQLite) - ├─ Ollama ├─ AuctionManager (L402 bids) - └─ AirLLM ├─ SwarmComms (Redis / in-memory) - └─ SwarmManager (subprocess) +Jinja2 Timmy Infrastructure +Templates Agent ├─ LLM Router (cascade) +(HTMX) │ ├─ WebSocket manager + ├─ Ollama ├─ Notifications + └─ AirLLM └─ Events bus │ - ├── Voice NLU + TTS (pyttsx3, local) + ├── Integrations (voice NLU, Telegram, Siri Shortcuts) ├── WebSocket live feed (ws_manager) - ├── L402 Lightning proxy (macaroon + invoice) ├── Push notifications (local + macOS native) - └── Siri Shortcuts API endpoints + └── Spark (events, predictions, advisory) Persistence: timmy.db (Agno memory), data/swarm.db (registry + tasks) External: Ollama :11434, optional Redis, optional LND gRPC @@ -129,23 +124,13 @@ External: Ollama :11434, optional Redis, optional LND gRPC ``` src/ config.py # pydantic-settings — all env vars live here - timmy/ # Core agent (agent.py, backends.py, cli.py, prompts.py) - hands/ # Autonomous scheduled agents (registry, scheduler, runner) + timmy/ # Core agent, personas, agent interface, semantic memory dashboard/ # FastAPI app, routes, Jinja2 templates - swarm/ # Multi-agent: coordinator, registry, bidder, tasks, comms - timmy_serve/ # L402 proxy, payment handler, TTS, serve CLI + infrastructure/ # WebSocket, notifications, events, LLM router + integrations/ # Discord, Telegram, Siri Shortcuts, voice NLU spark/ # Intelligence engine — events, predictions, advisory - creative/ # Creative director + video assembler pipeline - tools/ # Git, image, music, video tools for persona agents - lightning/ # Lightning backend abstraction (mock + LND) - agent_core/ # Substrate-agnostic agent interface - voice/ # NLU intent detection - ws_manager/ # WebSocket connection manager - notifications/ # Push notification store - shortcuts/ # Siri Shortcuts endpoints - telegram_bot/ # Telegram bridge - self_tdd/ # Continuous test watchdog -hands/ # Hand manifests — oracle/, sentinel/, etc. + brain/ # Identity system, memory interface + timmy_serve/ # API server, TTS, inter-agent communication tests/ # one test file per module, all mocked static/style.css # Dark mission-control theme (JetBrains Mono) docs/ # GitHub Pages landing page @@ -177,43 +162,6 @@ Mobile-specific routes: --- -## Hands — Autonomous Agents - -Hands are scheduled, autonomous agents that run on cron schedules. Each Hand has a `HAND.toml` manifest, `SYSTEM.md` prompt, and optional `skills/` directory. - -**Built-in Hands:** - -| Hand | Schedule | Purpose | -|------|----------|---------| -| **Oracle** | 7am, 7pm UTC | Bitcoin intelligence — price, on-chain, macro analysis | -| **Sentinel** | Every 15 min | System health — dashboard, agents, database, resources | -| **Scout** | Every hour | OSINT monitoring — HN, Reddit, RSS for Bitcoin/sovereign AI | -| **Scribe** | Daily 9am | Content production — blog posts, docs, changelog | -| **Ledger** | Every 6 hours | Treasury tracking — Bitcoin/Lightning balances, payment audit | -| **Weaver** | Sunday 10am | Creative pipeline — orchestrates Pixel+Lyra+Reel for video | - -**Dashboard:** `/hands` — manage, trigger, approve actions - -**Example HAND.toml:** -```toml -[hand] -name = "oracle" -schedule = "0 7,19 * * *" # Twice daily -enabled = true - -[tools] -required = ["mempool_fetch", "price_fetch"] - -[approval_gates] -broadcast = { action = "broadcast", description = "Post to dashboard" } - -[output] -dashboard = true -channel = "telegram" -``` - ---- - ## AirLLM — Big Brain Backend Run 70B or 405B models locally with no GPU, using AirLLM's layer-by-layer loading. @@ -274,5 +222,5 @@ bash scripts/activate_self_tdd.sh --big-brain # also installs AirLLM | Version | Name | Status | |---------|------|--------| | 1.0 | Genesis | Complete — Agno + Ollama + SQLite + Dashboard | -| 2.0 | Exodus | In progress — Swarm + L402 + Voice + Marketplace + Hands | +| 2.0 | Exodus | In progress — Voice + Marketplace + Integrations | | 3.0 | Revelation | Planned — Lightning treasury + single `.app` bundle | diff --git a/docs/IMPLEMENTATION_SUMMARY.md b/docs/IMPLEMENTATION_SUMMARY.md index 254b0d2d..296f1484 100644 --- a/docs/IMPLEMENTATION_SUMMARY.md +++ b/docs/IMPLEMENTATION_SUMMARY.md @@ -26,50 +26,31 @@ print(f"Provider: {response.provider_used}") --- -### 2. Self-Upgrade Approval Queue ✅ +### 2. Self-Upgrade Approval Queue *(originally implemented, since refactored)* -**Files Created:** +> **Note:** The original `src/upgrades/` module was planned for consolidation into +> `src/self_coding/` but that consolidation was never completed. The module paths +> below reflect the original implementation and may no longer be accurate. + +**Original files:** - `src/upgrades/models.py` - Database models for upgrades table - `src/upgrades/queue.py` - Queue management logic - `src/dashboard/routes/upgrades.py` - Dashboard routes - `src/dashboard/templates/upgrade_queue.html` - Queue UI -**Files Modified:** -- `src/dashboard/app.py` - Registered upgrade routes -- `src/dashboard/templates/base.html` - Added UPGRADES nav link - -**Usage:** -```python -from upgrades.queue import UpgradeQueue - -# Propose upgrade -upgrade = UpgradeQueue.propose( - branch_name="self-modify/fix-bug", - description="Fix bug in task assignment", - files_changed=["src/swarm/coordinator.py"], - diff_preview="@@ -123,7 +123,7 @@...", -) - -# Approve -UpgradeQueue.approve(upgrade.id) - -# Apply (runs tests, merges to main) -success, message = UpgradeQueue.apply(upgrade.id) -``` - **Dashboard:** `/self-modify/queue` --- -### 3. Real-Time Activity Feed ✅ +### 3. Real-Time Activity Feed *(originally implemented, since refactored)* -**Files Created:** -- `src/events/broadcaster.py` - Bridge event_log → WebSocket +> **Note:** The original module paths below reflect the pre-refactoring structure. +> Events are now under `src/infrastructure/events/`, WebSocket manager is now under +> `src/infrastructure/ws_manager/`. -**Files Modified:** -- `src/swarm/event_log.py` - Added broadcast call -- `src/ws_manager/handler.py` - Added `broadcast_json()` method -- `src/dashboard/templates/swarm_live.html` - Added activity feed panel +**Original files:** +- `src/events/broadcaster.py` → now `src/infrastructure/events/broadcaster.py` +- `src/ws_manager/handler.py` → now `src/infrastructure/ws_manager/handler.py` **Architecture:** ``` diff --git a/docs/REFACTORING_PLAN.md b/docs/REFACTORING_PLAN.md index 3fc5914a..8b0a5010 100644 --- a/docs/REFACTORING_PLAN.md +++ b/docs/REFACTORING_PLAN.md @@ -155,28 +155,26 @@ session-scoped context. Either gitignore it or move to `docs/handoff/`. **Goal:** Reduce 28 modules to ~12 by merging small, related modules into coherent packages. This directly reduces cognitive load and token consumption. -### 2.1 Module structure (implemented) +### 2.1 Module structure (partially implemented) + +**Actual current structure (7 packages + config):** ``` -src/ # 14 packages (was 28) +src/ # 7 packages (was 28) config.py # Pydantic settings (foundation) timmy/ # Core agent + agents/ + agent_core/ + memory/ - dashboard/ # FastAPI web UI (22 route files) - swarm/ # Coordinator + task_queue/ + work_orders/ - self_coding/ # Git safety + self_modify/ + self_tdd/ + upgrades/ - creative/ # Media generation + tools/ + dashboard/ # FastAPI web UI, routes, templates infrastructure/ # ws_manager/ + notifications/ + events/ + router/ integrations/ # chat_bridge/ + telegram_bot/ + shortcuts/ + voice/ - - lightning/ # L402 payment gating (standalone, security-sensitive) - mcp/ # MCP tool registry and discovery spark/ # Event capture and advisory - hands/ # 6 autonomous Hand agents - scripture/ # Biblical text integration - timmy_serve/ # L402-gated API server + brain/ # Identity system, memory interface + timmy_serve/ # API server ``` +**Planned but never created:** `swarm/`, `self_coding/`, `creative/`, +`lightning/`, `mcp/`, `hands/`, `scripture/` + ### 2.2 Dashboard route consolidation 27 route files → ~12 by grouping related routes: @@ -437,13 +435,11 @@ patterns (card layouts, form groups, table rows). |--------|----------|--------|---------| | Root `.md` files | 10 | 3 | 5 | | Root markdown size | 87KB | ~20KB | ~28KB | -| `src/` modules | 28 | ~12-15 | **14** | +| `src/` modules | 28 | ~12-15 | **7 packages + config** | | Dashboard routes | 27 | ~12-15 | 22 | | Test organization | flat | mirrored | **mirrored** | -| Tests passing | 471 | 500+ | **1462** | -| Wheel modules | 17/28 | all | **all** | -| Module-level docs | 0 | all key modules | **6** | -| AI context reduction | — | ~40% | **~50%** (fewer modules to scan) | +| Wheel modules | 17/28 | all | needs audit | +| Module-level docs | 0 | all key modules | needs audit | --- @@ -461,20 +457,15 @@ patterns (card layouts, form groups, table rows). - [x] **Phase 2a: Route consolidation** — 27 → 22 route files (merged voice, swarm internal/ws, self-modify; deleted mobile_test) -- [x] **Phase 2b: Full module consolidation** — 28 → 14 modules. All merges - completed in a single pass with automated import rewriting (66 source files + - 13 test files updated). Modules consolidated: - - `work_orders/` + `task_queue/` → `swarm/` - - `self_modify/` + `self_tdd/` + `upgrades/` → `self_coding/` - - `tools/` → `creative/tools/` - - `chat_bridge/` + `telegram_bot/` + `shortcuts/` + `voice/` → `integrations/` (new) - - `ws_manager/` + `notifications/` + `events/` + `router/` → `infrastructure/` (new) - - `agents/` + `agent_core/` + `memory/` → `timmy/` - - pyproject.toml entry points and wheel includes updated - - Module-level CLAUDE.md files added (Phase 6.2) - - Zero test regressions: 1462 tests passing -- [x] **Phase 6.2: Module-level CLAUDE.md** — added to swarm/, self_coding/, - infrastructure/, integrations/, creative/, lightning/ +- [ ] **Phase 2b: Full module consolidation** — 28 → 14 modules. Partially + completed. Some consolidations were applied: + - `chat_bridge/` + `telegram_bot/` + `shortcuts/` + `voice/` → `integrations/` (done) + - `ws_manager/` + `notifications/` + `events/` + `router/` → `infrastructure/` (done) + - `agents/` + `agent_core/` + `memory/` → `timmy/` (done) + - **Not completed:** `swarm/`, `self_coding/`, `creative/`, `lightning/` packages + were never created. These modules do not exist in `src/`. +- [ ] **Phase 6.2: Module-level CLAUDE.md** — not completed. The referenced + directories (`swarm/`, `self_coding/`, `creative/`, `lightning/`) do not exist. ### Remaining diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 99e3d94f..71175590 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -21,16 +21,11 @@ What already works: | Component | Status | Implementation | |-----------|--------|----------------| -| Lightning/L402 | Mock working, LND stub | `src/lightning/`, `src/timmy_serve/l402_proxy.py` | | Voice TTS | pyttsx3 (robotic) | `src/timmy_serve/voice_tts.py` | | Voice STT | Browser Web Speech API | `src/dashboard/templates/voice_button.html` | | Voice NLU | Regex-based intent detection | `src/integrations/voice/nlu.py` | -| Semantic memory | SQLite + sentence-transformers | `src/timmy/memory/vector_store.py` | -| Swarm auctions | First-price lowest-bid | `src/swarm/bidder.py`, `src/swarm/routing.py` | | Frontend | HTMX + Bootstrap + marked.js | `src/dashboard/templates/base.html` | -| Browser LLM | WebLLM (WebGPU/WASM) | `static/local_llm.js` | | LLM router | Cascade with circuit breaker | `src/infrastructure/router/cascade.py` | -| Agent learning | Outcome-based bid adjustment | `src/swarm/learner.py` | What does NOT exist yet: @@ -246,7 +241,7 @@ Agents build portable reputation through signed event history. ### 2.6 Integration with Main Repo - Add `src/infrastructure/clients/nostr_client.py` -- Modify `src/swarm/coordinator.py` to publish task/bid/completion events +- Modify `the swarm coordinator` to publish task/bid/completion events - Add Nostr auth option to dashboard login - Agent profile pages show npub, NIP-05, reputation score @@ -363,9 +358,9 @@ Add a `/metrics` endpoint to the main dashboard (FastAPI). **Tasks:** - [ ] Add `prometheus_client` to dependencies -- [ ] Instrument `src/swarm/coordinator.py` (task lifecycle metrics) +- [ ] Instrument `the swarm coordinator` (task lifecycle metrics) - [ ] Instrument `src/infrastructure/router/cascade.py` (LLM metrics) -- [ ] Instrument `src/lightning/ledger.py` (financial metrics) +- [ ] Instrument `the Lightning ledger module (when implemented)` (financial metrics) - [ ] Add `/metrics` route in `src/dashboard/routes/` - [ ] Grafana dashboard JSON in `deploy/grafana/` @@ -414,7 +409,7 @@ Real-time force-directed graph of agent topology. ## Phase 5: Lightning Maturation **Priority:** MEDIUM — extends existing code -**Repo:** Main repo (`src/lightning/`) + possibly `timmy-lightning` for LND +**Repo:** Main repo + possibly `timmy-lightning` for LND **Depends on:** None (existing foundation is solid) ### 5.1 LND gRPC (already planned in REVELATION_PLAN) @@ -457,7 +452,7 @@ Static, reusable payment requests with blinded paths for payer privacy. ## Phase 6: Vickrey Auctions & Agent Economics **Priority:** MEDIUM -**Repo:** Main repo (`src/swarm/`) +**Repo:** Main repo **Depends on:** Phase 5 (Lightning, for real payments) ### 6.1 Upgrade to Vickrey (Second-Price) Auction @@ -479,7 +474,7 @@ payment = sorted_bids[1].bid_sats if len(sorted_bids) > 1 else winner.bid_sats - [ ] Implement sealed-bid collection (encrypted commitment phase) - [ ] Simultaneous revelation phase - [ ] Second-price payment calculation -- [ ] Update `src/swarm/bidder.py` and `src/swarm/routing.py` +- [ ] Update `the swarm bidder and routing modules (when implemented)` - [ ] ADR: `docs/adr/025-vickrey-auctions.md` ### 6.2 Incentive-Compatible Truthfulness @@ -501,7 +496,7 @@ payment = sorted_bids[1].bid_sats if len(sorted_bids) > 1 else winner.bid_sats ## Phase 7: State Machine Orchestration **Priority:** MEDIUM -**Repo:** Main repo (`src/swarm/`) +**Repo:** Main repo **Depends on:** None ### 7.1 Evaluate LangGraph vs Custom @@ -610,7 +605,7 @@ Syscall interception layer as alternative to full VMs. ### 9.4 Bubblewrap (Lightweight Alternative) - [ ] Bubblewrap for single-process sandboxing on Linux -- [ ] Useful for self-coding module (`src/self_coding/`) safety +- [ ] Useful for self-coding module safety ### 9.5 Success Criteria diff --git a/docs/SECURITY.md b/docs/SECURITY.md index 8e843cbf..f31beb5b 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -23,10 +23,10 @@ Timmy Time is built on the principle of **AI Sovereignty**. Security is not just A manual audit of the codebase identified the following security-sensitive areas: -### 1. Self-Modification Loop (`src/self_coding/self_modify/loop.py`) -- **Observation:** Uses `subprocess.run` for git and test commands. +### 1. Self-Modification Loop *(planned, not yet implemented)* +- **Observation:** When implemented, the self-modify loop will use `subprocess.run` for git and test commands. - **Risk:** Potential for command injection if user-provided instructions are improperly handled. -- **Mitigation:** Input is currently restricted to git operations and pytest. Future versions should further sandbox these executions. +- **Mitigation:** Input should be restricted to git operations and pytest. Future versions should sandbox these executions. ### 2. Model Registration (`src/dashboard/routes/models.py`) - **Observation:** Allows registering models from arbitrary local paths. diff --git a/docs/SOVEREIGNTY_AUDIT.md b/docs/SOVEREIGNTY_AUDIT.md index be48dd3f..08262931 100644 --- a/docs/SOVEREIGNTY_AUDIT.md +++ b/docs/SOVEREIGNTY_AUDIT.md @@ -245,8 +245,7 @@ No single points of failure that would prevent core functionality. All external network calls are isolated in: - `src/timmy/backends.py` — AI model backends (local) -- `src/lightning/lnd_backend.py` — LND gRPC (configurable) -- `src/swarm/comms.py` — Redis fallback +- `src/infrastructure/router/cascade.py` — LLM cascade router - `src/timmy/tools.py` — Web search (optional, can disable) --- diff --git a/docs/architecture-v2.md b/docs/architecture-v2.md index cb35eca2..6b899e74 100644 --- a/docs/architecture-v2.md +++ b/docs/architecture-v2.md @@ -54,7 +54,7 @@ implementation status: │ ┌────────────────────────────────────┼─────────────────────────────────────────────┐ │ API LAYER (FastAPI) │ -│ 27 route modules registered in src/dashboard/app.py │ +│ Route modules registered in src/dashboard/app.py │ └────────────────────────────────────┼─────────────────────────────────────────────┘ │ ┌────────────────────────────────────┼─────────────────────────────────────────────┐ @@ -104,14 +104,14 @@ PERSISTENCE: | Briefing Engine | `src/timmy/briefing.py` | `from timmy.briefing import engine` | | Session Logger | `src/timmy/session_logger.py` | `from timmy.session_logger import get_session_logger` | | Approvals | `src/timmy/approvals.py` | `from timmy.approvals import GOLDEN_TIMMY` | -| Task Queue | `src/swarm/task_queue/models.py` | `TaskQueueDB` | -| Coordinator | `src/swarm/coordinator.py` | `from swarm.coordinator import coordinator` | +| Task Queue | *(not yet implemented)* | — | +| Coordinator | *(not yet implemented)* | — | | Cascade Router | `src/infrastructure/router/cascade.py` | `from infrastructure.router.cascade import get_router` | | Event Bus | `src/infrastructure/events/bus.py` | `from infrastructure.events.bus import event_bus` | | WebSocket Mgr | `src/infrastructure/ws_manager/handler.py` | `from infrastructure.ws_manager.handler import ws_manager` | | Push Notifier | `src/infrastructure/notifications/push.py` | `from infrastructure.notifications.push import notifier` | | Error Capture | `src/infrastructure/error_capture.py` | `from infrastructure.error_capture import capture_error` | -| Self-Modify | `src/self_coding/self_modify/loop.py` | `SelfModifyLoop` | +| Self-Modify | *(not yet implemented)* | — | --- @@ -142,9 +142,9 @@ Server Startup → ThinkingEngine.start_loop() | Aspect | File | Notes | |--------|------|-------| | ThinkingEngine | `src/timmy/thinking.py` | Seed types, continuity context, WS broadcast | -| Task Queue | `src/swarm/task_queue/models.py` | SQLite-backed, 8 statuses, 4 priority levels | -| Auto-approve rules | `src/swarm/task_queue/models.py` | Tasks matching rules execute without human gate | -| Startup drain | `src/swarm/task_queue/models.py` | `get_all_actionable_tasks()` processes queue on boot | +| Task Queue | *(task queue — not yet implemented)* | SQLite-backed, 8 statuses, 4 priority levels | +| Auto-approve rules | *(task queue — not yet implemented)* | Tasks matching rules execute without human gate | +| Startup drain | *(task queue — not yet implemented)* | `get_all_actionable_tasks()` processes queue on boot | | Config | `src/config.py` | `thinking_enabled`, `thinking_interval_seconds` (300s default) | The task queue supports 8 statuses (`PENDING_APPROVAL`, `APPROVED`, `RUNNING`, @@ -198,11 +198,11 @@ Modification Journal (data/self_modify_reports/) | Aspect | File | Notes | |--------|------|-------| -| Core loop | `src/self_coding/self_modify/loop.py` | Read-edit-test-commit cycle, 742 lines | -| Git safety | `src/self_coding/git_safety.py` | Atomic operations with rollback | -| Modification journal | `src/self_coding/modification_journal.py` | Persistent report log | -| Reflection | `src/self_coding/reflection.py` | Lessons-learned generator | -| Upgrade queue | `src/self_coding/upgrades/` | Approval queue for proposed changes | +| Core loop | *(self-coding — not yet implemented)* | Read-edit-test-commit cycle | +| Git safety | *(self-coding — not yet implemented)* | Atomic operations with rollback | +| Modification journal | *(self-coding — not yet implemented)* | Persistent report log | +| Reflection | *(self-coding — not yet implemented)* | Lessons-learned generator | +| Upgrade queue | *(self-coding — not yet implemented)* | Approval queue for proposed changes | | Error capture | `src/infrastructure/error_capture.py` | Auto-creates bug reports from exceptions | | Error dedup | `src/infrastructure/error_capture.py` | Hash-based deduplication (5-min window) | @@ -265,7 +265,7 @@ threshold, making him increasingly discerning about what warrants human attentio | Component | File | What It Does | |-----------|------|-------------| | Push Notifier | `src/infrastructure/notifications/push.py` | In-memory queue (200 max), 6 categories, macOS native support | -| Risk Scoring | `src/swarm/work_orders/risk.py` | Priority/category weights, sensitive-path detection | +| Risk Scoring | *(not yet implemented)* | Priority/category weights, sensitive-path detection | | Approval Governance | `src/timmy/approvals.py` | `GOLDEN_TIMMY` flag, pending/approved/rejected states, 7-day expiry | | Briefing integration | `src/timmy/briefing.py` | Surfaces pending approvals in briefing | @@ -289,7 +289,7 @@ thoughts, the thought queue, a dynamic task list, thought logs, artifacts, and a live feed via WebSocket. The owner can interact directly — reorder tasks, inject new thoughts, review artifacts, and provide feedback. -The dashboard is built with FastAPI + Jinja2 + HTMX and supports 27 route modules: +The dashboard is built with FastAPI + Jinja2 + HTMX with route modules including: | Route | Prefix | Purpose | |-------|--------|---------| @@ -360,7 +360,7 @@ All persistence uses SQLite — no external database dependencies. | `memory_entries` | `data/swarm.db` | Semantic memory (with embeddings) | ADR-019 | | `upgrades` | `data/swarm.db` | Self-modification queue | ADR-021 | | `provider_metrics` | `data/swarm.db` | LLM router metrics | ADR-020 | -| `task_queue` | `data/swarm.db` | Human-in-the-loop task queue | `swarm/task_queue/` | +| `task_queue` | `data/swarm.db` | Human-in-the-loop task queue | *(not yet implemented)* | | `thoughts` | `data/thoughts.db` | Thought stream | `timmy/thinking.py` | | `briefings` | `~/.timmy/briefings.db` | Briefing cache | `timmy/briefing.py` | | `approvals` | `~/.timmy/approvals.db` | Governance items | `timmy/approvals.py` | @@ -474,9 +474,9 @@ Enforcement points: `CLAUDE.md` conventions, `AGENTS.md` non-negotiable rules, | Source | → | Target | Mechanism | |--------|---|--------|-----------| -| `coordinator.py` | → | Event Log | `log_event()` for all lifecycle events | -| `payment_handler.py` | → | Ledger | Creates entries on invoice/settlement | -| `self_modify/loop.py` | → | Upgrade Queue | Stops at proposal, waits for approval | +| Coordinator | → | Event Log | `log_event()` for all lifecycle events *(planned)* | +| Payment handler | → | Ledger | Creates entries on invoice/settlement *(planned)* | +| Self-modify loop | → | Upgrade Queue | Stops at proposal, waits for approval *(planned)* | | `timmy/agent.py` | → | Cascade Router | Uses router instead of direct backends | | `ws_manager/handler.py` | → | Activity Feed | Broadcasts events to WebSocket clients | | Event Log | → | Briefing Engine | `_gather_swarm_summary()` reads events |