feat(server,watch): threads remember the dispatch origin header and report it back

This commit is contained in:
hh committed 2026-10-23 22:24:45 +02:00
1 parent f4c54b6e16
commit 7413223269
5 files changed
+42 -3

No files matched your search

+4
View File
@@ -2,6 +2,10 @@
> Что сделано, что нет, что проверить руками. Свежие записи сверху. Архитектурная правда - `архитектура.md` §5 (vault, симлинк в `../../архитектура.md`), журнал всей второй итерации - `../../PROGRESS.md`.
## 2026-10-23 - событие треда помнит, кто его запустил
`t3_dispatch` читает заголовок `x-conversation-origin` (гейтвей ставит туда id разговора на каждый MCP-запрос сессии) и хранит его в `Tracked.origin`; хук несёт поле `origin`, джоб `t3code` в beaver-agent кладёт событие в этот разговор, а не всегда в мастер. Продолжение треда из другого разговора переписывает владельца. Клиент без заголовка - `origin: null`, событие уходит в мастер как раньше.
## 2026-10-16 - T3 Code 0.1.0, orchestration protocol 2
T3 Code 0.1.0 (desktop на маке и `t3` на dell-dev) перешёл на протокол оркестрации 2, и коннектор ослеп: WS отвечал 426, HTTP без заголовка - 400, а `POST /api/orchestration/dispatch` удалён совсем. Сделано: каждый HTTP-запрос несёт `x-t3-orchestration-protocol: 2`, WS - `orchestrationProtocol=2` в URL; команды идут через WS RPC `orchestration.dispatchCommand` (одно соединение на вызов, ответ - `Exit`). Команды v2: `thread.create` + `message.dispatch` (`dispatchMode: start_immediately`, `createdBy: agent`, `creationSource: mcp`), `run.interrupt` по id активного run, `runtime-request.respond` для `t3_answer`. Тред теперь проекция (`runs`, `messages`, `turnItems`, `runtimeRequests`, `checkpoints`, `providerTurns`): состояние - статус последнего run, вопрос - pending `runtimeRequest` с `kind: user_input` и его `user_input_request` из `turnItems`, ошибка - `error`-item упавшего run или `lastError` сессии провайдера. В выдаче `turn_id` стал `run_id`, `turns` у `t3_thread` считает run'ы. Watcher: элементы потока `thread.updated`, строка shell с `status`/`lastError`/`pendingRuntimeRequest`; `failed`/`cancelled`/`rolled_back` - терминальные; курсор хранится под ключом `shell_sequences`, старый v1-курсор игнорируется. Токены перевыпущены с минимумом скоупов `orchestration:read` + `orchestration:operate`, метка `beaver-t3code-mcp-v2`.