Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -439,3 +439,7 @@ fpga-flash
# Enumerating them one by one was tried first and is whack-a-mole: the widened
# corpus immediately hit three more.
!apps/website/public/t27/**

# apps/website/docs: hand-written contracts for the website (e.g. the optional
# agent control API), not generated reports; the *.md rule above would drop them.
!apps/website/docs/**
9 changes: 9 additions & 0 deletions apps/website/.env.example.queen
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,12 @@
# Ollama also has to allow the browser's origin: OLLAMA_ORIGINS=http://localhost:4179
VITE_QUEEN_OLLAMA_URL=http://localhost:11434
# VITE_QUEEN_OLLAMA_MODEL=qwen3:4b

# Optional live control plane for the Skill and Cron Explorers. Not a secret:
# the URL is compiled into the public bundle. When set, the CONTROL strip on a
# skill or job card gets working buttons that POST to
# {url}/crons/<id>/run | /enable | /disable and {url}/skills/<id>/run
# with the JSON body {"id", "requestedAt"} — see docs/agent-control-api.md.
# When unset (the default, and the deployed state today) the strip says so and
# every action goes through the spec and the hosts' own panels instead.
# VITE_AGENT_CONTROL_URL=https://example.invalid/agent-control
55 changes: 55 additions & 0 deletions apps/website/docs/agent-control-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Agent control API (optional control plane for skills and crons)

Status: **contract only — no server implements this today.** The Skill and Cron
Explorers on t27.ai read their catalogs from `.t27` specs
(`public/t27/files/specs/{skills,crons}/*.t27` → `scripts/agents-from-specs.mjs`
→ `public/skills/spec-skills.json`, `public/crons/spec-crons.json`). The
management strip on each card works without any server: `ENABLED` is read from
the spec and changed by editing the spec (GitHub edit link), and "run now"
points at the host that actually owns the job (GitHub Actions workflow page,
Railway service, Inngest dashboard). A timer inside a process has no outside
handle and the strip says so.

When `VITE_AGENT_CONTROL_URL` is set at build time, the strip additionally gets
live buttons that call the endpoints below. When it is unset the strip shows
"Контур управления не подключён — действия идут через спеку и панели хостов" /
"No control plane connected — actions go through the spec and the hosts' panels".

## Endpoints

All requests are `POST`, body `application/json`:

```json
{ "id": "<catalog id>", "requestedAt": "<ISO-8601 timestamp>" }
```

| Endpoint | Meaning |
|-------------------------------------------|----------------------------------------------------------------|
| `POST {url}/crons/<id>/run` | Start the job now (`<id>` e.g. `github-actions/trinity/site-live-gate`) |
| `POST {url}/crons/<id>/enable` | Ask the plane to set the job's `ENABLED` to `true` |
| `POST {url}/crons/<id>/disable` | Ask the plane to set the job's `ENABLED` to `false` |
| `POST {url}/skills/<id>/run` | Launch the skill once (`<id>` e.g. `trinity/doctor`) |

`<id>` is the catalog id with each `/`-separated segment URL-encoded; the
segments themselves are kept as path segments.

## Responses

- `202 Accepted` — the request was queued; body may carry `{ "runId": "..." }`.
- `200 OK` — for `enable`/`disable`, the new state was recorded.
- `404 Not Found` — the id names no known skill or job.
- `409 Conflict` — the job is a timer or otherwise has no outside handle.
- `501 Not Implemented` — the plane knows the id but cannot act on that host.

Any non-2xx is shown verbatim (status and body) in the strip; nothing is
retried and nothing is reported as done that the server did not confirm.

## Honesty rules the client keeps

- `enable`/`disable` never edit the spec themselves; the spec remains the
source of truth and a plane that flips state must land the change as a
commit to `specs/crons/<slug>.t27`, or the site will keep showing the spec's
value.
- No credentials are sent by the browser (`credentials: 'omit'`); a plane that
needs auth must sit behind its own gateway.
- The URL is public (it is in the bundle); it must not embed a token.
183 changes: 183 additions & 0 deletions apps/website/i18n/agents.ru.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
{
"$spec": "specs/i18n/agents-ru.t27",
"locale": "ru",
"entries": {
"github-actions/999-multibots-telegraf/ci": {
"SUMMARY": "Раз в день прогоняет весь конвейер сборки, проверки типов и тестов, чтобы зависимость, гниющая без пуша, всё равно была поймана."
},
"github-actions/999-multibots-telegraf/security": {
"SUMMARY": "Еженедельная проверка безопасности: поиск секретов по всей истории, аудит зависимостей и сканирование кода."
},
"github-actions/t27/formal-mutation": {
"SUMMARY": "Раз в неделю мутирует сгенерированный RTL и требует, чтобы каждый формальный гейт покраснел на своей мутации — доказательство, что гейты кусаются."
},
"github-actions/t27/pr-dashboard": {
"SUMMARY": "Каждый час пересобирает панель pull request из текущего состояния открытых PR."
},
"github-actions/trinity/agent-cron-cleanup": {
"SUMMARY": "Каждые два часа находит застрявшие деплои агентов и убивает их."
},
"github-actions/trinity/agent-queue-drain": {
"SUMMARY": "Каждые пять минут ищет задачи в очереди и свободные слоты агентов и запускает следующего агента, когда есть место."
},
"github-actions/trinity/brain-ci": {
"SUMMARY": "Еженедельный стресс-тест мозга — длинная версия гейта здоровья, который получает каждый коммит."
},
"github-actions/trinity/codegen": {
"SUMMARY": "Раз в день проверяет генератор кода VIBEE независимо от того, пушил ли кто-нибудь."
},
"github-actions/trinity/discover-callers": {
"SUMMARY": "Читает GitHub в поисках репозиториев, запускающих RTL-проверку, чтобы галерея считала своих пользователей сама."
},
"github-actions/trinity/pages-health-check": {
"SUMMARY": "Каждые пятнадцать минут запрашивает опубликованный сайт, следует редиректу и передеплоит только когда свидетельства говорят, что сломан именно деплой."
},
"github-actions/trinity/signal-health-self": {
"SUMMARY": "Применяет проверку signal-health к репозиторию, который её продаёт, и записывает числа в данные сайта."
},
"github-actions/trinity/site-live-gate": {
"SUMMARY": "Сравнивает бандл с контент-хешем на апексе со сборкой main, чтобы «задеплоено» означало, что читатель это видит."
},
"inngest/999-multibots-telegraf/check-stuck-trainings": {
"SUMMARY": "Находит обучения моделей, застрявшие в pending или processing дольше порога, и сверяет их с Replicate."
},
"inngest/999-multibots-telegraf/daily-sales-advisor": {
"SUMMARY": "Собирает каждому владельцу бота утренний отчёт: вчерашняя выручка, расходы недели и что реально покупали пользователи."
},
"inngest/999-multibots-telegraf/health-check": {
"SUMMARY": "Каждые полчаса опрашивает основной API и сервис Inngest и сообщает, кто ответил."
},
"inngest/999-multibots-telegraf/log-monitor": {
"SUMMARY": "Раз в день читает логи приложения, поручает модели свести ошибки и предупреждения и отправляет дайджест в Telegram."
},
"inngest/999-multibots-telegraf/periodic-webhook-health-check": {
"SUMMARY": "Каждый час проверяет оба URL вебхука Telegram и шлёт админу критическую тревогу, когда не отвечает ни один."
},
"inngest/999-multibots-telegraf/skill-detector": {
"SUMMARY": "Раз в день ищет в успешных генерациях повторяющиеся паттерны моделей и промптов и сохраняет новые как переиспользуемые навыки бота."
},
"railway-cron/999/jobsearch-cron": {
"SUMMARY": "Сервис поиска вакансий по расписанию в проекте Railway, доступен на cron.t27.ai."
},
"t27/measure-corpus": {
"SUMMARY": "Выбор правильного инструмента для любого утверждения о корпусе спек t27 и список ловушек, которые уже давали неверные опубликованные числа. Использовать перед тем, как цитировать любое число о корпусе."
},
"t27/phi-loop": {
"SUMMARY": "Девятифазный цикл spec-first разработки: Issue → Spec → TDD → Code → Gen → Seal → Verify → Land → Learn."
},
"t27/tri": {
"SUMMARY": "Команды tri для работы со скилом: begin, правка .t27-спеки, seal hash, gen, test, verdict, experience. Реестр скилов описан в compiler/skill/registry.t27."
},
"t27/tri-pipeline": {
"SUMMARY": "Выполнение команд tri (gen, test, verify, seal, verdict) для spec-first разработки."
},
"t27/wave-audit": {
"SUMMARY": "Полный аудит проекта t27: разбор GitHub issues, поиск слабых мест, обзор SOTA, декомпозированный план и реализация критичных исправлений."
},
"t27/wrap-up": {
"SUMMARY": "Оформление и загрузка итогов сессии в NotebookLM как постоянной семантической памяти."
},
"timer/999-multibots-telegraf/agent-autopilot-L1118": {
"SUMMARY": "Один цикл автопилота — проход генерации и затем тик канала; тик пропускается целиком, если предыдущий цикл ещё идёт."
},
"timer/999-multibots-telegraf/bot-owner-billing-L474": {
"SUMMARY": "Пересчитывает долг каждого владельца бота по журналу платежей, предупреждает на мягком, тревожном и критическом порогах и отключает бота, три дня остающегося критическим."
},
"timer/999-multibots-telegraf/crmProactive-L375": {
"SUMMARY": "Один проактивный ход продавца для владельца: обходит очередь CRM и кладёт перед ним следующую карточку-черновик без просьбы."
},
"timer/999-multibots-telegraf/generate-jobs-L164": {
"SUMMARY": "Через час после завершения выметает из памяти законченные задания генерации, когда потерявший соединение клиент успел забрать результат."
},
"timer/999-multibots-telegraf/notificationHandler-L318": {
"SUMMARY": "Разгружает очередь уведомлений и доставляет ждущие в ней сообщения Telegram."
},
"timer/999-multibots-telegraf/notificationHandler-L324": {
"SUMMARY": "Удаляет уведомления, настолько старые, что их уже никто не прочитает."
},
"timer/999-multibots-telegraf/production-monitor-L80": {
"SUMMARY": "Повторяет проверки контейнера, nginx, порта, домена, вебхука и ресурсов системы и применяет включённые исправления."
},
"timer/999-multibots-telegraf/provider-health-monitor-L344": {
"SUMMARY": "Проверяет каждого не отключённого AI-провайдера и записывает, отвечает ли он сейчас."
},
"timer/999-multibots-telegraf/render-server-L10845": {
"SUMMARY": "Пингует каждого websocket-пира и отключает тех, кто не ответил в прошлом раунде."
},
"timer/999-multibots-telegraf/render-server-L2301": {
"SUMMARY": "Удаляет из карты в памяти задания рендера старше часа."
},
"timer/999-multibots-telegraf/render-server-L2325": {
"SUMMARY": "Читает журнал улья и доставляет отчёт королевы хранителям: тревоги — сразу, обычные события — пакетом."
},
"timer/999-multibots-telegraf/render-server-L919": {
"SUMMARY": "Перечитывает из Postgres список отозванных сессий, чтобы отозванная сессия браузера перестала приниматься."
},
"timer/999-multibots-telegraf/taskCache-L27": {
"SUMMARY": "Сбрасывает записи кэша видеогенерации старше пятнадцати минут, чтобы завершённая задача не блокировала следующий запрос."
},
"timer/999-multibots-telegraf/video-task-store-L156": {
"SUMMARY": "Забывает видеозадачи старше часа и переписывает хранилище на диск, если что-то было удалено."
},
"trinity/blog-post": {
"SUMMARY": "Написать и опубликовать пост в блог t27.ai: где блог реально живёт, схема Post с обязательными свидетельствами, обложка и проверки."
},
"trinity/board-sync": {
"SUMMARY": "Автосинхронизация GitHub Project Board: заполнить пустые поля, согласовать метки со статусом доски, проверить полноту полей."
},
"trinity/cloud": {
"SUMMARY": "Панель Trinity Cloud Dev: контейнеры, тренировочная ферма, issues, PR, расходы. Для проверки состояния роя агентов и CI/CD."
},
"trinity/doctor": {
"SUMMARY": "ЛЕКАРЬ: диагностика, лечение, коммит грязных файлов, надзор за мусором, документацией и дубликатами, честный отчёт. Каждый цикл = действие + доказательство."
},
"trinity/farm-garden": {
"SUMMARY": "Автономный управляющий популяцией фермы: наблюдает, эволюционирует и перерабатывает рабочих обучения HSLM."
},
"trinity/fpga-synth": {
"SUMMARY": "Конвейер синтеза FPGA от .tri-спеки до битстрима. Для работы с Verilog, FPGA и аппаратным синтезом."
},
"trinity/god-mode": {
"SUMMARY": "GOD MODE: панель наблюдения за агентами — состояние роя, очередь задач, соблюдение конвейера, предохранители, активность git, нарушения правил."
},
"trinity/implement-issue": {
"SUMMARY": "Прочитать GitHub issue, создать ветку, реализовать решение и открыть PR. Для работы по номеру задачи."
},
"trinity/queen-hive-visuals": {
"SUMMARY": "Поддержка плавающего улья Королевы, оригинального логотипа TRINITY остриём вниз, чётких табло задач и согласованных движений камеры."
},
"trinity/review-code": {
"SUMMARY": "Ревью недавних изменений кода: ошибки, стиль, улучшения. После написания кода или перед коммитом."
},
"trinity/run-tests": {
"SUMMARY": "Собрать проект, проверить предупреждения, прогнать все тесты и отчитаться. Быстрая проверка здоровья кодовой базы."
},
"trinity/scholar": {
"SUMMARY": "Саморазвивающийся исследовательский агент: сканирует веб на релевантные технологии, оценивает находки, предлагает улучшения. Perplexity Sonar через MCP."
},
"trinity/status": {
"SUMMARY": "Живая панель системы: 12-мерная оценка уробороса, verdict v3, агенты, здоровье сборки, рекомендации."
},
"trinity/tech-tree": {
"SUMMARY": "Дерево технологических зависимостей: DAG задач, предпосылки, критический путь, заблокированные и готовые задачи. Единый источник порядка работ."
},
"trinity/tri": {
"SUMMARY": "Панель статуса TRI: по умолчанию режим мысли агента, /tri full — визуальная панель."
},
"trinity/trinity-test": {
"SUMMARY": "Прогон тестовых наборов Trinity и разбор результатов: VSA, VM, Firebird, WASM или всё целиком."
},
"trinity/ux-wave": {
"SUMMARY": "Автономные волны улучшения UX: 4 параллельных агента на волну, аудит каждые 5 волн, коммит исправлений. Для чата и сети Queen UI."
},
"trinity/vibee-gen": {
"SUMMARY": "Генерация кода Zig или Verilog из спецификаций VIBEE. При создании или обновлении .tri-спек и перегенерации кода."
},
"trinity/vsa-verify": {
"SUMMARY": "Проверка математических доказательств и операций VSA: bind/unbind/bundle, тождества phi."
},
"trinity/wave": {
"SUMMARY": "Управление волнами фермы: аккаунты Railway, запуск рабочих, раскатка конфигов, прогресс волны. Для масштабирования тренировочной фермы."
}
}
}
Loading
Loading