add: WS Protocol v2 brainstorm — listen modes, watchers, event filtering
This commit is contained in:
parent
444b2c94d5
commit
faa2dcd15c
67
BRAINSTORM-WS-V2-2026-02-22.md
Normal file
67
BRAINSTORM-WS-V2-2026-02-22.md
Normal file
@ -0,0 +1,67 @@
|
||||
# Брейншторм: WebSocket Protocol v2
|
||||
Дата: 2026-02-22
|
||||
|
||||
## Принципы
|
||||
- **WS = real-time** (события push + чат)
|
||||
- **REST = все мутации** (через MCP tools)
|
||||
- **Фильтрация на сервере** — агент получает только релевантное
|
||||
|
||||
## Listen Modes (раздельные)
|
||||
- `chat_listen`: `all` | `mentions` — сообщения в чатах
|
||||
- `task_listen`: `all` | `mentions` — события по задачам
|
||||
|
||||
Примеры:
|
||||
- Архитектор: chat=all, task=all
|
||||
- Кодер: chat=mentions, task=mentions
|
||||
- PM: chat=all, task=all
|
||||
- Тестер: chat=mentions, task=all
|
||||
|
||||
## Watchers (наблюдатели)
|
||||
Jira-паттерн. Любой может подписаться на задачу.
|
||||
|
||||
```
|
||||
Task:
|
||||
assignee_slug
|
||||
reviewer_slug
|
||||
watchers[] # slugs наблюдателей
|
||||
```
|
||||
|
||||
Кто получает task events:
|
||||
1. Assignee — всегда
|
||||
2. Reviewer — всегда
|
||||
3. Watchers — всегда
|
||||
4. task_listen:all — всегда
|
||||
5. task_listen:mentions — только при @mention
|
||||
|
||||
MCP tools: `watch_task`, `unwatch_task`
|
||||
UI: кнопка "👁 Наблюдать" в TaskModal
|
||||
Автор задачи = автоматически watcher.
|
||||
|
||||
## Клиент → Сервер
|
||||
| Событие | Описание |
|
||||
|---------|----------|
|
||||
| `auth` | Токен + полная инфо агента |
|
||||
| `heartbeat` | Статус (idle/busy) |
|
||||
| `ack` | Подтверждение события |
|
||||
| `chat.send` | Сообщение в чат (real-time) |
|
||||
| `project.subscribe` | Подписка на проект (= чат + task events) |
|
||||
| `project.unsubscribe` | Отписка |
|
||||
|
||||
Мутации задач (create/update/take/reject) — только через REST.
|
||||
|
||||
## Сервер → Клиент
|
||||
| Событие | Фильтрация |
|
||||
|---------|-----------|
|
||||
| `auth.ok` / `auth.error` | — |
|
||||
| `message.new` | По chat_listen + ownership |
|
||||
| `task.created` | task_listen:all |
|
||||
| `task.updated` | task_listen:all ИЛИ assignee/reviewer/watcher |
|
||||
| `task.assigned` | Только assignee |
|
||||
| `agent.status` | Всем |
|
||||
|
||||
## Project Subscribe = Chat Subscribe
|
||||
Одна сущность. Подписался на проект → получаешь и чат, и task-события (фильтрованные по listen modes).
|
||||
|
||||
## Unified Message
|
||||
`message.new` — единое событие для чата и комментариев задач.
|
||||
Поля `task_id` или `chat_id` определяют контекст.
|
||||
@ -110,9 +110,6 @@ topics:
|
||||
|
||||
ws_protocol_v2:
|
||||
name: "WebSocket протокол v2 (реализация)"
|
||||
status: planned
|
||||
doc: null
|
||||
notes: |
|
||||
- Синхронизация picogent WS с tracker
|
||||
- Auth, event dispatch, ack
|
||||
- Room subscriptions
|
||||
status: done
|
||||
doc: BRAINSTORM-WS-V2-2026-02-22.md
|
||||
summary: "Раздельные listen modes (chat/task), watchers, project.subscribe, unified message.new"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user