feat: complete Event Log, Ledger, Memory, Cascade Router, Upgrade Queue, Activity Feed
This commit implements six major features:
1. Event Log System (src/swarm/event_log.py)
- SQLite-based audit trail for all swarm events
- Task lifecycle tracking (created, assigned, completed, failed)
- Agent lifecycle tracking (joined, left, status changes)
- Integrated with coordinator for automatic logging
- Dashboard page at /swarm/events
2. Lightning Ledger (src/lightning/ledger.py)
- Transaction tracking for Lightning Network payments
- Balance calculations (incoming, outgoing, net, available)
- Integrated with payment_handler for automatic logging
- Dashboard page at /lightning/ledger
3. Semantic Memory / Vector Store (src/memory/vector_store.py)
- Embedding-based similarity search for Echo agent
- Fallback to keyword matching if sentence-transformers unavailable
- Personal facts storage and retrieval
- Dashboard page at /memory
4. Cascade Router Integration (src/timmy/cascade_adapter.py)
- Automatic LLM failover between providers (Ollama → AirLLM → API)
- Circuit breaker pattern for failing providers
- Metrics tracking per provider (latency, error rates)
- Dashboard status page at /router/status
5. Self-Upgrade Approval Queue (src/upgrades/)
- State machine for self-modifications: proposed → approved/rejected → applied/failed
- Human approval required before applying changes
- Git integration for branch management
- Dashboard queue at /self-modify/queue
6. Real-Time Activity Feed (src/events/broadcaster.py)
- WebSocket-based live activity streaming
- Bridges event_log to dashboard clients
- Activity panel on /swarm/live
Tests:
- 101 unit tests passing
- 4 new E2E test files for Selenium testing
- Run with: SELENIUM_UI=1 pytest tests/functional/ -v --headed
Documentation:
- 6 ADRs (017-022) documenting architecture decisions
- Implementation summary in docs/IMPLEMENTATION_SUMMARY.md
- Architecture diagram in docs/architecture-v2.md
2026-02-26 08:01:01 -05:00
|
|
|
# Implementation Summary: 3 New Features
|
|
|
|
|
|
|
|
|
|
## Completed Features
|
|
|
|
|
|
|
|
|
|
### 1. Cascade Router Integration ✅
|
|
|
|
|
|
|
|
|
|
**Files Created:**
|
|
|
|
|
- `src/timmy/cascade_adapter.py` - Adapter between Timmy and Cascade Router
|
|
|
|
|
- `src/dashboard/routes/router.py` - Dashboard routes for router status
|
|
|
|
|
- `src/dashboard/templates/router_status.html` - Router status UI
|
|
|
|
|
|
|
|
|
|
**Files Modified:**
|
|
|
|
|
- `src/dashboard/app.py` - Registered router routes
|
|
|
|
|
- `src/dashboard/templates/base.html` - Added ROUTER nav link
|
|
|
|
|
|
|
|
|
|
**Usage:**
|
|
|
|
|
```python
|
|
|
|
|
from timmy.cascade_adapter import get_cascade_adapter
|
|
|
|
|
adapter = get_cascade_adapter()
|
|
|
|
|
response = await adapter.chat("Hello")
|
|
|
|
|
print(f"Response: {response.content}")
|
|
|
|
|
print(f"Provider: {response.provider_used}")
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Dashboard:** `/router/status`
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2026-03-07 07:28:14 -05:00
|
|
|
### 2. Self-Upgrade Approval Queue *(originally implemented, since refactored)*
|
feat: complete Event Log, Ledger, Memory, Cascade Router, Upgrade Queue, Activity Feed
This commit implements six major features:
1. Event Log System (src/swarm/event_log.py)
- SQLite-based audit trail for all swarm events
- Task lifecycle tracking (created, assigned, completed, failed)
- Agent lifecycle tracking (joined, left, status changes)
- Integrated with coordinator for automatic logging
- Dashboard page at /swarm/events
2. Lightning Ledger (src/lightning/ledger.py)
- Transaction tracking for Lightning Network payments
- Balance calculations (incoming, outgoing, net, available)
- Integrated with payment_handler for automatic logging
- Dashboard page at /lightning/ledger
3. Semantic Memory / Vector Store (src/memory/vector_store.py)
- Embedding-based similarity search for Echo agent
- Fallback to keyword matching if sentence-transformers unavailable
- Personal facts storage and retrieval
- Dashboard page at /memory
4. Cascade Router Integration (src/timmy/cascade_adapter.py)
- Automatic LLM failover between providers (Ollama → AirLLM → API)
- Circuit breaker pattern for failing providers
- Metrics tracking per provider (latency, error rates)
- Dashboard status page at /router/status
5. Self-Upgrade Approval Queue (src/upgrades/)
- State machine for self-modifications: proposed → approved/rejected → applied/failed
- Human approval required before applying changes
- Git integration for branch management
- Dashboard queue at /self-modify/queue
6. Real-Time Activity Feed (src/events/broadcaster.py)
- WebSocket-based live activity streaming
- Bridges event_log to dashboard clients
- Activity panel on /swarm/live
Tests:
- 101 unit tests passing
- 4 new E2E test files for Selenium testing
- Run with: SELENIUM_UI=1 pytest tests/functional/ -v --headed
Documentation:
- 6 ADRs (017-022) documenting architecture decisions
- Implementation summary in docs/IMPLEMENTATION_SUMMARY.md
- Architecture diagram in docs/architecture-v2.md
2026-02-26 08:01:01 -05:00
|
|
|
|
2026-03-07 07:28:14 -05:00
|
|
|
> **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:**
|
feat: complete Event Log, Ledger, Memory, Cascade Router, Upgrade Queue, Activity Feed
This commit implements six major features:
1. Event Log System (src/swarm/event_log.py)
- SQLite-based audit trail for all swarm events
- Task lifecycle tracking (created, assigned, completed, failed)
- Agent lifecycle tracking (joined, left, status changes)
- Integrated with coordinator for automatic logging
- Dashboard page at /swarm/events
2. Lightning Ledger (src/lightning/ledger.py)
- Transaction tracking for Lightning Network payments
- Balance calculations (incoming, outgoing, net, available)
- Integrated with payment_handler for automatic logging
- Dashboard page at /lightning/ledger
3. Semantic Memory / Vector Store (src/memory/vector_store.py)
- Embedding-based similarity search for Echo agent
- Fallback to keyword matching if sentence-transformers unavailable
- Personal facts storage and retrieval
- Dashboard page at /memory
4. Cascade Router Integration (src/timmy/cascade_adapter.py)
- Automatic LLM failover between providers (Ollama → AirLLM → API)
- Circuit breaker pattern for failing providers
- Metrics tracking per provider (latency, error rates)
- Dashboard status page at /router/status
5. Self-Upgrade Approval Queue (src/upgrades/)
- State machine for self-modifications: proposed → approved/rejected → applied/failed
- Human approval required before applying changes
- Git integration for branch management
- Dashboard queue at /self-modify/queue
6. Real-Time Activity Feed (src/events/broadcaster.py)
- WebSocket-based live activity streaming
- Bridges event_log to dashboard clients
- Activity panel on /swarm/live
Tests:
- 101 unit tests passing
- 4 new E2E test files for Selenium testing
- Run with: SELENIUM_UI=1 pytest tests/functional/ -v --headed
Documentation:
- 6 ADRs (017-022) documenting architecture decisions
- Implementation summary in docs/IMPLEMENTATION_SUMMARY.md
- Architecture diagram in docs/architecture-v2.md
2026-02-26 08:01:01 -05:00
|
|
|
- `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
|
|
|
|
|
|
|
|
|
|
**Dashboard:** `/self-modify/queue`
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2026-03-07 07:28:14 -05:00
|
|
|
### 3. Real-Time Activity Feed *(originally implemented, since refactored)*
|
feat: complete Event Log, Ledger, Memory, Cascade Router, Upgrade Queue, Activity Feed
This commit implements six major features:
1. Event Log System (src/swarm/event_log.py)
- SQLite-based audit trail for all swarm events
- Task lifecycle tracking (created, assigned, completed, failed)
- Agent lifecycle tracking (joined, left, status changes)
- Integrated with coordinator for automatic logging
- Dashboard page at /swarm/events
2. Lightning Ledger (src/lightning/ledger.py)
- Transaction tracking for Lightning Network payments
- Balance calculations (incoming, outgoing, net, available)
- Integrated with payment_handler for automatic logging
- Dashboard page at /lightning/ledger
3. Semantic Memory / Vector Store (src/memory/vector_store.py)
- Embedding-based similarity search for Echo agent
- Fallback to keyword matching if sentence-transformers unavailable
- Personal facts storage and retrieval
- Dashboard page at /memory
4. Cascade Router Integration (src/timmy/cascade_adapter.py)
- Automatic LLM failover between providers (Ollama → AirLLM → API)
- Circuit breaker pattern for failing providers
- Metrics tracking per provider (latency, error rates)
- Dashboard status page at /router/status
5. Self-Upgrade Approval Queue (src/upgrades/)
- State machine for self-modifications: proposed → approved/rejected → applied/failed
- Human approval required before applying changes
- Git integration for branch management
- Dashboard queue at /self-modify/queue
6. Real-Time Activity Feed (src/events/broadcaster.py)
- WebSocket-based live activity streaming
- Bridges event_log to dashboard clients
- Activity panel on /swarm/live
Tests:
- 101 unit tests passing
- 4 new E2E test files for Selenium testing
- Run with: SELENIUM_UI=1 pytest tests/functional/ -v --headed
Documentation:
- 6 ADRs (017-022) documenting architecture decisions
- Implementation summary in docs/IMPLEMENTATION_SUMMARY.md
- Architecture diagram in docs/architecture-v2.md
2026-02-26 08:01:01 -05:00
|
|
|
|
2026-03-07 07:28:14 -05:00
|
|
|
> **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/`.
|
feat: complete Event Log, Ledger, Memory, Cascade Router, Upgrade Queue, Activity Feed
This commit implements six major features:
1. Event Log System (src/swarm/event_log.py)
- SQLite-based audit trail for all swarm events
- Task lifecycle tracking (created, assigned, completed, failed)
- Agent lifecycle tracking (joined, left, status changes)
- Integrated with coordinator for automatic logging
- Dashboard page at /swarm/events
2. Lightning Ledger (src/lightning/ledger.py)
- Transaction tracking for Lightning Network payments
- Balance calculations (incoming, outgoing, net, available)
- Integrated with payment_handler for automatic logging
- Dashboard page at /lightning/ledger
3. Semantic Memory / Vector Store (src/memory/vector_store.py)
- Embedding-based similarity search for Echo agent
- Fallback to keyword matching if sentence-transformers unavailable
- Personal facts storage and retrieval
- Dashboard page at /memory
4. Cascade Router Integration (src/timmy/cascade_adapter.py)
- Automatic LLM failover between providers (Ollama → AirLLM → API)
- Circuit breaker pattern for failing providers
- Metrics tracking per provider (latency, error rates)
- Dashboard status page at /router/status
5. Self-Upgrade Approval Queue (src/upgrades/)
- State machine for self-modifications: proposed → approved/rejected → applied/failed
- Human approval required before applying changes
- Git integration for branch management
- Dashboard queue at /self-modify/queue
6. Real-Time Activity Feed (src/events/broadcaster.py)
- WebSocket-based live activity streaming
- Bridges event_log to dashboard clients
- Activity panel on /swarm/live
Tests:
- 101 unit tests passing
- 4 new E2E test files for Selenium testing
- Run with: SELENIUM_UI=1 pytest tests/functional/ -v --headed
Documentation:
- 6 ADRs (017-022) documenting architecture decisions
- Implementation summary in docs/IMPLEMENTATION_SUMMARY.md
- Architecture diagram in docs/architecture-v2.md
2026-02-26 08:01:01 -05:00
|
|
|
|
2026-03-07 07:28:14 -05:00
|
|
|
**Original files:**
|
|
|
|
|
- `src/events/broadcaster.py` → now `src/infrastructure/events/broadcaster.py`
|
|
|
|
|
- `src/ws_manager/handler.py` → now `src/infrastructure/ws_manager/handler.py`
|
feat: complete Event Log, Ledger, Memory, Cascade Router, Upgrade Queue, Activity Feed
This commit implements six major features:
1. Event Log System (src/swarm/event_log.py)
- SQLite-based audit trail for all swarm events
- Task lifecycle tracking (created, assigned, completed, failed)
- Agent lifecycle tracking (joined, left, status changes)
- Integrated with coordinator for automatic logging
- Dashboard page at /swarm/events
2. Lightning Ledger (src/lightning/ledger.py)
- Transaction tracking for Lightning Network payments
- Balance calculations (incoming, outgoing, net, available)
- Integrated with payment_handler for automatic logging
- Dashboard page at /lightning/ledger
3. Semantic Memory / Vector Store (src/memory/vector_store.py)
- Embedding-based similarity search for Echo agent
- Fallback to keyword matching if sentence-transformers unavailable
- Personal facts storage and retrieval
- Dashboard page at /memory
4. Cascade Router Integration (src/timmy/cascade_adapter.py)
- Automatic LLM failover between providers (Ollama → AirLLM → API)
- Circuit breaker pattern for failing providers
- Metrics tracking per provider (latency, error rates)
- Dashboard status page at /router/status
5. Self-Upgrade Approval Queue (src/upgrades/)
- State machine for self-modifications: proposed → approved/rejected → applied/failed
- Human approval required before applying changes
- Git integration for branch management
- Dashboard queue at /self-modify/queue
6. Real-Time Activity Feed (src/events/broadcaster.py)
- WebSocket-based live activity streaming
- Bridges event_log to dashboard clients
- Activity panel on /swarm/live
Tests:
- 101 unit tests passing
- 4 new E2E test files for Selenium testing
- Run with: SELENIUM_UI=1 pytest tests/functional/ -v --headed
Documentation:
- 6 ADRs (017-022) documenting architecture decisions
- Implementation summary in docs/IMPLEMENTATION_SUMMARY.md
- Architecture diagram in docs/architecture-v2.md
2026-02-26 08:01:01 -05:00
|
|
|
|
|
|
|
|
**Architecture:**
|
|
|
|
|
```
|
|
|
|
|
Event Occurs → log_event() → SQLite
|
|
|
|
|
↓
|
|
|
|
|
event_broadcaster.broadcast_sync()
|
|
|
|
|
↓
|
|
|
|
|
ws_manager.broadcast_json()
|
|
|
|
|
↓
|
|
|
|
|
Dashboard (WebSocket)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Dashboard:** `/swarm/live` (activity feed panel)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Test Results
|
|
|
|
|
|
|
|
|
|
**Unit Tests:** 101 passed
|
|
|
|
|
```
|
|
|
|
|
tests/test_event_log.py 25 passed
|
|
|
|
|
tests/test_ledger.py 18 passed
|
|
|
|
|
tests/test_vector_store.py 11 passed
|
|
|
|
|
tests/test_swarm.py 29 passed
|
|
|
|
|
tests/test_dashboard.py 18 passed
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**E2E Tests:** Created (3 new test files)
|
|
|
|
|
- `tests/functional/test_cascade_router_e2e.py`
|
|
|
|
|
- `tests/functional/test_upgrade_queue_e2e.py`
|
|
|
|
|
- `tests/functional/test_activity_feed_e2e.py`
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Running E2E Tests (Non-Headless)
|
|
|
|
|
|
|
|
|
|
Watch the browser execute tests in real-time:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 1. Start the server
|
|
|
|
|
cd /Users/apayne/Timmy-time-dashboard
|
|
|
|
|
source .venv/bin/activate
|
|
|
|
|
make dev
|
|
|
|
|
|
|
|
|
|
# 2. In another terminal, run E2E tests
|
|
|
|
|
source .venv/bin/activate
|
|
|
|
|
SELENIUM_UI=1 pytest tests/functional/test_cascade_router_e2e.py -v --headed
|
|
|
|
|
|
|
|
|
|
# Or run all E2E tests
|
|
|
|
|
SELENIUM_UI=1 pytest tests/functional/ -v --headed
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The `--headed` flag runs Chrome in visible mode so you can watch.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Database Schema Updates
|
|
|
|
|
|
|
|
|
|
Three new tables created automatically:
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
-- Event Log (existing, now with broadcast)
|
|
|
|
|
CREATE TABLE event_log (...);
|
|
|
|
|
|
|
|
|
|
-- Lightning Ledger (existing)
|
|
|
|
|
CREATE TABLE ledger (...);
|
|
|
|
|
|
|
|
|
|
-- Vector Store (existing)
|
|
|
|
|
CREATE TABLE memory_entries (...);
|
|
|
|
|
|
|
|
|
|
-- NEW: Upgrade Queue
|
|
|
|
|
CREATE TABLE upgrades (
|
|
|
|
|
id TEXT PRIMARY KEY,
|
|
|
|
|
status TEXT NOT NULL,
|
|
|
|
|
proposed_at TEXT NOT NULL,
|
|
|
|
|
branch_name TEXT NOT NULL,
|
|
|
|
|
description TEXT NOT NULL,
|
|
|
|
|
files_changed TEXT,
|
|
|
|
|
diff_preview TEXT,
|
|
|
|
|
test_passed INTEGER DEFAULT 0,
|
|
|
|
|
test_output TEXT,
|
|
|
|
|
error_message TEXT,
|
|
|
|
|
approved_by TEXT
|
|
|
|
|
);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Navigation Updates
|
|
|
|
|
|
|
|
|
|
New nav links in dashboard header:
|
|
|
|
|
- **EVENTS** → `/swarm/events`
|
|
|
|
|
- **LEDGER** → `/lightning/ledger`
|
|
|
|
|
- **MEMORY** → `/memory`
|
|
|
|
|
- **ROUTER** → `/router/status`
|
|
|
|
|
- **UPGRADES** → `/self-modify/queue`
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Architecture Alignment
|
|
|
|
|
|
|
|
|
|
All 3 features follow existing patterns:
|
|
|
|
|
- **Singleton pattern** for services (cascade_adapter, event_broadcaster)
|
|
|
|
|
- **SQLite persistence** through consistent DB access pattern
|
|
|
|
|
- **Dashboard routes** following existing route structure
|
|
|
|
|
- **Jinja2 templates** extending base.html
|
|
|
|
|
- **Event-driven** using existing event log infrastructure
|
|
|
|
|
- **WebSocket** using existing ws_manager
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Security Considerations
|
|
|
|
|
|
|
|
|
|
| Feature | Risk | Mitigation |
|
|
|
|
|
|---------|------|------------|
|
|
|
|
|
| Cascade Router | API key exposure | Uses existing config system |
|
|
|
|
|
| Upgrade Queue | Unauthorized changes | Human approval required |
|
|
|
|
|
| Activity Feed | Data leak | Events sanitized before broadcast |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Next Steps
|
|
|
|
|
|
|
|
|
|
1. Run E2E tests with `SELENIUM_UI=1 pytest tests/functional/ -v --headed`
|
|
|
|
|
2. Manually test each dashboard page
|
|
|
|
|
3. Verify WebSocket real-time updates in `/swarm/live`
|
|
|
|
|
4. Test upgrade queue workflow end-to-end
|