Архитектура

Внутреннее устройство Creo — для контрибьюторов и разработчиков.

graph TB
    TUI["TUI (bubbletea)<br/>Рисует чат, ввод, сайдбар"]
    Handler["SendMessage Handler<br/>Маршрутизатор сообщений"]
    Agent["Agent.Run<br/>LLM цикл: stream → tools → repeat"]
    Bus[("Bus<br/>in-process pub/sub")]
    Manager["Session Manager<br/>Кэш сессий + состояния"]
    DB[("SQLite<br/>sessions.db")]
    Sync["SyncService<br/>Heartbeat, lock, mirror"]
    Subagent["Subagent<br/>Child agent + relay"]

    TUI -->|"SendMessage"| Bus
    Bus -->|"SendMessage"| Handler
    Handler -->|"TryStart → Run"| Agent
    Handler -->|"Busy → AddPending"| DB
    Agent -->|"TurnStart/End<br/>StreamingToken<br/>ToolCall/Result<br/>..."| Bus
    Bus -->|"events"| TUI
    Agent -->|"drainPending"| DB
    Bus -->|"sync requests"| Sync
    Sync -->|"DB read/write"| DB
    Sync -->|"SyncResult"| Bus
    Agent -->|"RunSubagent"| Subagent
    Subagent -->|"SubagentStreamEvent"| Bus

Шина — in-process pub/sub. Publish блокирует пока все подписчики не отработают.