# Portability: UNIVERSAL
# Last validated: 2026-05-17
# Next review: 2027-05-17

СООБЩЕНИЯ - система обмена сообщениями
----------------------------

ОПИСАНИЕ
Внутренняя система обмена сообщениями для связи между пользователями,
Система и агенты. Доступно через CLI и веб-интерфейс.

Без --from автоматически используется зарегистрированный партнер.

КОМАНДЫ CLI
-----------
bach msg list              Показать все сообщения
bach msg list --inbox      Только входящие
bach msg list --outbox     Только отправленные сообщения
bach msg list --limit 20   С лимитом (по умолчанию: 10)

bach msg inbox             Показать входящие (краткая форма)
bach msg outbox            Показать исходящие (короткая форма)

bach msg unread            Показать непрочитанные сообщения
bach msg count             Счетчик сообщений

bach msg send <to> <text>  Отправить сообщение (как пользователь/активное) партнер)
bach msg send <to> <text> --from <partner>  Отправить от партнера

bach msg read <id>         Прочитать сообщение (помечено как прочитанное)
bach msg read <id> --ack   Прочитать с автоматическим подтверждением прочтения

bach msg ping              Показать мне непрочитанные сообщения
bach msg ping --from <p>   Сообщения конкретному партнеру

bach msg watch             Режим опроса: Ожидание новых сообщений (Ctrl+C)
bach msg watch --from <p>  Опрос для конкретного партнера

bach msg delete <id>       Сообщение(я) удалить
bach msg delete 1 2 3      Удалить несколько сообщений
bach msg delete <id> --dry-run  Предварительный просмотр (без изменений)

bach msg archive <id>      Архивировать сообщение(я)
bach msg archive 1 2 3     Архивировать несколько сообщений
bach msg archive <id> --dry-run  Предварительный просмотр (без изменений)

bach msg help              Показать справку

МНОГОПАРТНЕРСКАЯ ПОДДЕРЖКА
---------------------
Отправлять партнерам под своим именем:

  bach msg send user "Bericht fertig" --from gemini
  bach msg send user "Task erledigt" --from claude
  bach msg send user "Verarbeitung abgeschlossen" --from ollama

Логика:
  --from user -> сообщение в OUTBOX пользователя (по умолчанию)
  --from <other> -> сообщение в INBOX пользователя (непрочитанное)

Идентификаторы партнеров:
  пользователь пользователь (человек)
  Клод Клод (операционный ИИ)
  Близнецы Близнецы (Внешний ИИ через Антигравитацию)
  оллама Оллама (местный ИИ)
  системные системные сообщения

ПОЛУЧАТЕЛЬ
----------
системные системные сообщения
Пользователь Сообщения пользователя
агент:<имя> Конкретный агент (например, агент:кодер)

ЗНАЧЕНИЯ СТАТУСА
------------
непрочитано Непрочитано
читать Читать
в архиве в архиве
удалено Удален

WEB-GUI
-------
http://127.0.0.1:8000/messages

Особенности:
- Просмотр входящих/исходящих/архива
- Написать новое сообщение
- Отметить как прочитанное
- Показать детали сообщения

БАЗА ДАННЫХ
---------
Таблица: сообщения (в data/bach.db)

Поля:
- id ЦЕЛЫЙ ПЕРВИЧНЫЙ КЛЮЧ
- направление ТЕКСТ (входящие/исходящие)
- передатчик ТЕКСТ
- получатель ТЕКСТ
- ТЕКСТ темы (планируется - в настоящее время не используется)
- основной ТЕКСТ
- статус ТЕКСТ (непрочитано/прочитано/в архиве/удалено)
- приоритет ЦЕЛОЕ ЧИСЛО
- создано_в TIMESTAMP
- read_at TIMESTAMP
- archived_at TIMESTAMP

ПРИМЕРЫ
---------
# Отправить сообщение
bach msg send system "Backup abgeschlossen"

# Показать непрочитанные сообщения
bach msg unread

# Прочитать сообщение
bach msg read 5

# Прочитать сообщение с подтверждением
bach msg read 5 --ack

# Все исходящие сообщения
bach msg list --outbox

# Дождаться новых сообщений
bach msg watch

# Проверить статус
bach msg count

ИНТЕГРАЦИЯ КОННЕКТОРА (v1.1.0)
------------------------------
Сообщения от внешних коннекторов (Telegram, Discord и т.д.)
автоматически направляются во входящие:

  Connector_messages (in) →route_incoming() → messages (входящие)

Формат отправителя: «connector:sender_id» (например, «telegram:123456»)
Контекстные подсказки автоматически сохраняются как метаданные.

Исходящие сообщения отправляются через очередь:

  bach connector send <name> <empfaenger> <text>

Надежная доставка с повтором/откатом через демон:

  bach connector setup-daemon    # Зарегистрировать задания
  bach daemon start --bg         # Запустить демон

См.: bach --help Connector

REST API (порт 8001)
--------------------
Доступно, когда работает Headless API:

  POST /api/v1/messages/send Поставить сообщение в очередь
  GET /api/v1/messages/queue Статус очереди
  GET /api/v1/messages/inbox Чтение входящих сообщений (нумерация страниц, фильтр)
  POST /api/v1/messages/route Запуск маршрутизации вручную

Пример:
  curl localhost:8001/api/v1/messages/inbox?status=unread&limit=10

HANDLER
-------
hub/messages.py обработчик CLI (входящие/исходящие)
hub/connector.py Обработчик соединителя (очередь, маршрутизация)
gui/api/messages_api.py Конечные точки REST API
gui/server.py Конечные точки графического интерфейса пользователя (/api/messages)

СМОТРИТЕ ТАКЖЕ
----------
bach --help connector      Система коннекторов (очередь, повторная попытка, автоматический выключатель)
bach --help gui            Веб-панель управления
bach --help daemon         Фоновые задания
bach --help injectors      Инжекторы контекста
bach --help wartung        Задания обслуживания (автоматические задачи)
