# Synadia NATS Agents

Версия: d5b786da3c0477027db48a5d0abe4676b67a0ba5

Развёрнут исходный nats-synadia-dev: интерфейс Synadia на Vue/Bun, gateway YouTrack, настоящая NATS-шина с JetStream и отдельный Codex worker. Discovery и диагностический чат работают через NATS. Для выполнения задач YouTrack нужны настройки владельца.

## Границы

- YouTrack URL и MCP/REST-доступ не настроены. Вместо корпоративного адреса задан недоступный placeholder; обращения к рабочему YouTrack не выполняются.
- Доступ Codex/OpenAI пока не предоставлен. Выполнение задачи и запись комментария в YouTrack не проверены.
- Диагностические health/hooks/jobs — штатные ответы gateway, а не ответы LLM.
- Публично доступны discovery и диагностика gateway. Текущие задачи и сабагенты Codex Desktop к консоли пока не подключены.

## Архитектура

- Исходный examples/agent-web-ui обслуживается Bun; процессы запускаются через scripts/start-production.js.
- Gateway отвечает за webhooks и результаты, worker отделён от HTTP и читает durable consumer JetStream.
- Используется отдельная учётная запись NATS; subjects youtrack.codex.jobs.komaroff и youtrack.codex.results.komaroff в stream KOMAROFF_CODEX.
- CODEX_DRY_RUN=false и YOUTRACK_DRY_RUN=false. Отсутствие ключей не заменяется синтетическими ответами.
- Консоль открыта без пароля с 7 сентября 2026. Webhook требует собственный токен; NATS и БД наружу не опубликованы.

## Сценарии

- Открыть консоль без входа, увидеть CONNECTED и обнаруженный NATS-агент codex.
- Открыть агента, отправить health и получить настоящий ответ о JetStream, subjects и consumers.
- После настройки YouTrack и Codex: webhook → job → отдельный worker → result → запись результата в YouTrack.
- Проверить состояние jobs и результаты, повторы доставки и восстановление worker на согласованной тестовой задаче.

## Проверка

- Полный исходный образ собран в GitHub CI. API и отдельный worker запущены.
- В Synadia UI обнаружен один настоящий агент; health прошёл через WebSocket/NATS и вернул состояние KOMAROFF_CODEX.
- Оба dry-run флага выключены; готовность NATS и consumers подтверждена.
- Гостевой доступ и webhook без токена отклоняются. Проверены desktop и мобильный экран.
- Реальная задача Codex и запись в YouTrack не выполнялись: отсутствуют настройки интеграций.

## Измерения

- Пять последовательных HTTPS GET с VPS к самому себе: 8.9–60.7 ms, все HTTP 200. Это не нагрузочный тест и не оценка внешней сети.
- В замерах не запускались Telegram-сбор, LLM или задача Codex.

## Эксплуатация

- Полный образ собирается исходным docker/Dockerfile. app: node scripts/start-production.js; worker: node src/codex-worker.js.
- Настройки: /srv/portfolio/agents/.env и integrations.env; отдельный постоянный codex-state. Docker-ресурсы и логи ограничены.
- Требуется YOUTRACK_BASE_URL и YOUTRACK_MCP_URL либо YOUTRACK_TOKEN; для модели — согласованный OPENAI_API_KEY/CODEX_API_KEY или иной штатный доступ. Не переносить корпоративные ключи без указания владельца.
- После предоставления настроек пройти одну явно выбранную задачу: webhook, durable job, session_started, analysis_completed, результат в YouTrack. До этого цепочка документируется как неподтверждённая.

## Code-map

| Функция | Экран / API | Модуль | Данные / проверка |
|---|---|---|---|
| Консоль | / и /ws | examples/agent-web-ui/server/index.ts; server/bridge.ts | Vue/Bun, WebSocket, Synadia discovery; проверены UI и ответ health |
| Webhook | /youtrack/webhook | src/youtrack-gateway.js | проверка токена, быстрая постановка job |
| Очередь | KOMAROFF_CODEX | src/jetstream.js | durable worker и results; реальная readiness |
| Выполнение | Codex worker | src/codex-worker.js; scripts/acodex | последовательное выполнение; ключ ожидается |
| YouTrack | MCP или REST | src/youtrack-mcp-client.js; youtrack-gateway.js | внешний доступ ещё не настроен |



## Проверка публичного доступа — 7 сентября 2026

Без Authorization: HTTPS 200, WebSocket discovery и диагностический health проходят. Запрос webhook без собственного токена возвращает 401. Проверка не запускала внешние задачи. Результаты: `../metrics/public-access-qa.json`. Версия приложения d5b786da не менялась; изменена конфигурация Nginx.
