О проекте
Задание может выполняться дольше HTTP-запроса. Поэтому шлюз пишет его в очередь, а воркер обрабатывает отдельно. Нужны повторная доставка и проверка, что готовый результат не применяется второй раз.
Консоль Synadia на Vue/Bun, шлюз YouTrack и отдельный Codex-воркер. Между ними NATS с JetStream. Discovery и диагностический чат подключены. Для выполнения задач в 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 и БД наружу не опубликованы.
Code-map: файлы и связи
Карта привязана к версии d5b786da3c04. В таблице — экран или API, связанный модуль и данные.
| Функция | Экран / 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 | внешний доступ ещё не настроен |
Как работать с картой
- Перед изменением найти функцию и пройти связи до API, состояния и хранилища.
- Проверить входы, ошибки, повторные события и зависимые сценарии.
- После изменения обновить карту и затронутые схемы вместе с кодом.
- Выполнить связанные проверки и привязать новые материалы к версии исходников.
Сценарии и API
- Открыть консоль без входа, увидеть CONNECTED и обнаруженный NATS-агент codex.
- Открыть агента, отправить health и получить настоящий ответ о JetStream, subjects и consumers.
- После настройки YouTrack и Codex: webhook → job → отдельный worker → result → запись результата в YouTrack.
- Проверить состояние jobs и результаты, повторы доставки и восстановление worker на согласованной тестовой задаче.
Проверка опубликованной версии
CI: Полная сборка исходного приложения ↗ · d5b786da · версия этого демо · 2026-09-07
- Полный исходный образ собран в 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. До этого цепочка документируется как неподтверждённая.
Стек
| Vue / Bun | Исходный интерфейс Synadia и WebSocket bridge |
|---|---|
| NATS / JetStream | Discovery, очередь, durable consumers |
| Node.js / Codex SDK | Отдельный worker |
| MCP / REST | YouTrack после настройки доступа |
Материалы и исходники
История репозитория: с 22 мая 2026. Версия на сайте: 7 сентября 2026.
Архив материалов на языке оригинала.