No description
Find a file
Mikhail Putilovskij 36730ae716 feat: implement core/ and platform/ with full test coverage
- platform/interface.py: PlatformClient Protocol + Pydantic models (User,
  MessageResponse, UserSettings) — no explicit session management, Master
  handles container lifecycle
- platform/mock.py: MockPlatformClient with simulated latency, [MOCK]
  responses, is_new correctly True only on first creation
- core/protocol.py: unified dataclasses for all events and responses
  (IncomingMessage/Command/Callback, OutgoingMessage/UI/Notification,
  AuthFlow, ChatContext, SettingsAction, etc.)
- core/store.py: StateStore Protocol + InMemoryStore (tests) + SQLiteStore
  (prod) with JSON serialization
- core/chat.py: ChatManager — chat metadata (C1/C2/C3), not container
  lifecycle (that's the platform's job)
- core/auth.py: AuthManager — start_flow / confirm / is_authenticated
- core/settings.py: SettingsManager — get/apply with store cache
- core/handler.py: EventDispatcher — registry-based routing with keys
  (command name, action name, attachment type, "*" catch-all)
- core/handlers/: register_all() + start/new/message/callback/settings
  handlers; voice slot falls back to stub text until voice_handler added
- conftest.py: sys.path fix so local platform/ shadows stdlib platform
- docs/api-contract.md: rewritten for Lambda Lab 3.0 container model

46 tests passing, 0 warnings.
2026-03-29 21:42:02 +03:00
core feat: implement core/ and platform/ with full test coverage 2026-03-29 21:42:02 +03:00
docs feat: implement core/ and platform/ with full test coverage 2026-03-29 21:42:02 +03:00
platform feat: implement core/ and platform/ with full test coverage 2026-03-29 21:42:02 +03:00
src init: surfaces-bot — Telegram & Matrix prototype 2026-03-27 00:35:42 +03:00
tests feat: implement core/ and platform/ with full test coverage 2026-03-29 21:42:02 +03:00
.DS_Store init: surfaces-bot — Telegram & Matrix prototype 2026-03-27 00:35:42 +03:00
.env.example init: surfaces-bot — Telegram & Matrix prototype 2026-03-27 00:35:42 +03:00
.gitignore chore: remove .claude/ and CLAUDE.md from tracking 2026-03-27 00:55:00 +03:00
conftest.py feat: implement core/ and platform/ with full test coverage 2026-03-29 21:42:02 +03:00
pyproject.toml feat: implement core/ and platform/ with full test coverage 2026-03-29 21:42:02 +03:00
README.md Update README.md 2026-03-26 21:57:13 +00:00

Lambda Lab 3.0 — Surfaces

Команда поверхностей. Telegram и Matrix боты для взаимодействия пользователя с AI-агентом Lambda.

Статус

Прототип в разработке. SDK платформы ещё не готов — работаем через MockPlatformClient.

Поверхность Статус Описание
Telegram 🔨 В разработке Forum Topics: одна группа, чат = тема
Matrix 🔨 В разработке Space + комнаты: чат = отдельная комната

Концепция

Пользователь получает персонального AI-агента через привычный мессенджер. Агент выполняет реальные задачи: разбирает почту, ищет информацию, работает с файлами, управляет календарём.

Поверхности — тонкие клиенты. Вся бизнес-логика на стороне платформы. Задача команды: сделать интерфейс удобным, надёжным и легко расширяемым.


Архитектура

surfaces-bot/
  core/                  — общее ядро, не зависит от транспорта
    protocol.py          — унифицированные структуры (IncomingMessage, OutgoingUI, ...)
    handler.py           — логика: IncomingEvent → OutgoingEvent
    session.py           — управление сессиями и чатами
    auth.py              — аутентификация
    settings.py          — коннекторы, скиллы, SOUL, безопасность

  adapter/
    telegram/            — aiogram 3.x адаптер
    matrix/              — matrix-nio адаптер

  platform/
    interface.py         — PlatformClient Protocol (контракт к SDK)
    mock.py              — MockPlatformClient (заглушка)

  docs/                  — документация
  .claude/agents/        — агенты для Claude Code

Ключевой принцип: добавить новую поверхность = написать один адаптер-конвертер. Ядро (core/) не трогается. Подробнее: docs/surface-protocol.md


Функционал прототипа

Telegram (подробнее)

  • Чаты — Forum Topics: бот создаёт личную группу пользователя, каждый чат = отдельная тема
  • Аутентификация — привязка Telegram аккаунта к аккаунту платформы
  • Диалог — typing indicator, передача файлов, подтверждение опасных действий через inline-кнопки
  • Настройки через /settings: коннекторы (Gmail, GitHub, Notion...), скиллы, личность агента (SOUL), безопасность, подписка

Matrix (подробнее)

  • Чаты — Space + комнаты: бот создаёт личное пространство, каждый чат = комната
  • Аутентификация — привязка Matrix аккаунта к аккаунту платформы
  • Диалог — typing, файлы, подтверждение действий через реакции 👍/, треды для долгих задач
  • Настройки — отдельная комната «Настройки» с командами !connectors, !skills, !soul, !safety, !status

Замена SDK

Вся работа с платформой идёт через PlatformClient Protocol:

class PlatformClient(Protocol):
    async def get_or_create_user(...) -> User: ...
    async def create_session(...) -> Session: ...
    async def send_message(...) -> AgentResponse: ...
    async def close_session(...) -> None: ...
    async def get_settings(...) -> UserSettings: ...
    async def update_settings(...) -> None: ...

Сейчас: MockPlatformClient в platform/mock.py. Когда SDK готов: добавляем SdkPlatformClient, меняем одну строку в DI. Адаптеры и ядро не трогаем.


Быстрый старт

# Зависимости
uv sync   # или: pip install -e ".[dev]"

# Тесты
pytest tests/ -v

# Запустить Telegram бота
cp .env.example .env  # заполнить TELEGRAM_BOT_TOKEN
python -m adapter.telegram.bot

# Запустить Matrix бота
cp .env.example .env  # заполнить MATRIX_* переменные
python -m adapter.matrix.bot

Документация

Файл Содержание
docs/surface-protocol.md Унификация поверхностей — все структуры, как добавить новую поверхность
docs/telegram-prototype.md Функционал Telegram прототипа
docs/matrix-prototype.md Функционал Matrix прототипа
docs/api-contract.md Контракт к SDK платформы
docs/user-flow.md FSM и user journey
docs/claude-code-guide.md Гайд по работе с Claude Code

Команда

Поверхности и интеграции Lambda Lab 3.0, МАИ