Add structured event logging and streaming for agent work sessions, enabling real-time observation in the web UI and future interactive chat.
Engine.hs Event Store Web UI
│ │ │
├─ onAssistantMessage ──────►│ INSERT event │
│ │──── SSE push ───────►│ render
├─ onToolCall ──────────────►│ INSERT event │
│ │──── SSE push ───────►│ render
├─ onToolResult ────────────►│ INSERT event │
│ │──── SSE push ───────►│ render
CREATE TABLE agent_events (
id INTEGER PRIMARY KEY,
task_id TEXT NOT NULL,
session_id TEXT NOT NULL,
timestamp DATETIME,
event_type TEXT, -- assistant, tool_call, tool_result, user, cost, error, complete
content TEXT, -- JSON payload
FOREIGN KEY (task_id) REFERENCES tasks(id)
);
data AgentEvent
= EventAssistant Text
| EventToolCall Text Value
| EventToolResult Text Bool Text
| EventUserMessage Text
| EventCost Int Int
| EventError Text
| EventComplete