Skip to content
This repository was archived by the owner on Jun 23, 2026. It is now read-only.

Releases: VKirill/antigravity-for-claude-code

v1.7.0 — Reliable async jobs · token-lean result handoff · deterministic stack detection

Choose a tag to compare

@VKirill VKirill released this 25 May 23:35

Languages: 🇬🇧 English · 🇷🇺 Русский

🇬🇧 English

Reliability + token-efficiency release. Async agy jobs no longer report false deaths, the worker result handoff is fully structured (no transcript mining), and the planner now plans on the project's real stack instead of guessing. Verified end-to-end with 3 coders running in parallel — 0 false-deaths, 0 retries, 192/192 tests green.

🚀 Highlights

Area Before After
Async job death detection Jobs that succeeded were reported failed → wasted retries Grace window + sidecar authority → recovered as success
Result handoff Mined from the raw transcript (regex, brittle, token-heavy) Strict result.yaml sidecar + YAML.parse validation
Polling cost async_status + sleep poll loop re-billed the whole conversation Blocking async_wait + slim _status (Layer 0/1)
Planner stack Guessed .js / node:test on a TS/bun project (2 of 3 runs) Orchestrator injects a stack_profile → correct .ts / bun test, first try

🐛 Reliability — the agy false-death arc (fixed)

Root cause (confirmed via docs/plans/agy-process-lifecycle/SPEC.md): agy --print spawns an internal engine grandchild that inherits the stdout pipe and outlives the tmux pane. The session vanishes (tmux has-session → false) while the grandchild is still flushing its output and its result.yaml a few seconds later — so declaring death the instant the session disappeared reported a succeeded job as failed, and sometimes triggered a wasteful retry.

Three layered fixes:

  1. Run agy directly in the pane — removed the setsid -w wrapper that detached agy into its own session (it survived the pane's SIGHUP and ran orphaned, widening the false-death window). 45572c4
  2. Grace window — on “session gone + no exit code + no sidecar yet” the job stays running (deathSuspectedAt stamped) for AGY_DEATH_GRACE_MS (default 30 s, ~2× the observed ~14 s flush gap), then the sidecar fallback marks it success once result.yaml lands. Bounded by the wall-clock AGY_TIMEOUT_MS. f53fa2b
  3. Late sidecar recovery — a job already marked failed only via the premature-death path is re-checked against result.yaml and upgraded to success if the envelope parses (strictly scoped — never a real non-zero exit, parse error, or crash-monitor 137). 45572c4
Before:  session gone @50s ──▶ FAILED ──▶ retry (work was already done)
After:   session gone @50s ──▶ running (grace) ──▶ result.yaml @64s ──▶ SUCCESS

⚡ Token efficiency — structured result handoff

  • Layer 0 — envelope only. async_result returns just the worker's result: envelope, never the raw transcript. c7676c5
  • Layer 1 — blocking wait + slim status. New async_wait blocks server-side until the batch settles; async_status slimmed. Kills the status-poll-sleep loop. 179fcaf · f33dd6e
  • result.yaml sidecar. The worker writes its envelope to a file as its last action; the server reads that file instead of scraping stdout. d8e230a
  • Strict validation. Server-side YAML.parse (top-level result: mapping required). 54571b7

📉 A monitored run went from ~158 antigravity calls + 10 sleeps to 6 calls, 0 sleeps.

🎯 Planner — deterministic stack detection

The planner runs on graph-only tools (gitnexus / serena), and package.json scripts.test is not in the code graph — so it couldn't see bun test vs node --test and fell back to a wrong guess. Fix (2b9564e):

  • Orchestrator injects a stack_profile — before dispatch it Reads package.json + ls-es the target dir and passes authoritative facts (language, file_ext, test_command, test_file) into the contract.
  • Planner reads the manifest first — stack detection is now Step 1; the NOT raw grep rule was narrowed to repo-wide grep only (targeted single-file reads allowed any time).

✅ Verified live: planner produced src/utils/*.ts + bun test + dependencies: [] on the first try, no correction round.

🧰 Other improvements

  • Skills catalog auto-generated from the runtime skill dir, 12 categories, + sync test. a3430e3 · a3c181d · 5733777
  • MCP config isolation into the per-session agy worker home. ab80f2b
  • Usage metric — average successful-job duration. d87eca2
  • async_wait added to the dev-orchestrator-agy tools allowlist + made the universal await. f33dd6e
  • 📚 Docs — comprehensive bilingual README (architecture, async engine, worker roster, full tool & env reference). 9c7c4c3

✅ Verification

  • bun run build — clean · bun test192 pass / 0 fail (24 files).
  • End-to-end parallel run (takeWhile / dropWhile / partition): 3 coders dispatched concurrently, planner emitted correct .ts / bun test with no correction round, 2 of 3 coders hit the grandchild detach and were recovered as success0 false-deaths, 0 retries, clean fast-forward push.

🇷🇺 Русский

Релиз про надёжность и экономию токенов. Async-джобы agy больше не отчитываются ложной смертью, передача результата воркера полностью структурирована (без выскребания транскрипта), а планировщик теперь планирует на реальном стеке проекта, а не угадывает. Проверено сквозным прогоном с 3 кодерами параллельно — 0 ложных смертей, 0 ретраев, 192/192 теста зелёные.

🚀 Главное

Область Было Стало
Детект смерти async-джобы Успешные джобы отчитывались как failed → лишние ретраи Grace-окно + авторитет сайдкара → восстановление в success
Передача результата Выскребалась из сырого транскрипта (регексп, хрупко, дорого по токенам) Строгий сайдкар result.yaml + валидация YAML.parse
Стоимость поллинга Петля async_status + sleep перебиливала весь диалог Блокирующий async_wait + слим _status (Layer 0/1)
Стек планировщика Угадывал .js / node:test на TS/bun-проекте (2 из 3 прогонов) Оркестратор инжектит stack_profile → корректные .ts / bun test с первого раза

🐛 Надёжность — арк ложной смерти agy (исправлено)

Корень (подтверждён через docs/plans/agy-process-lifecycle/SPEC.md): agy --print порождает внутренний engine-внук, который наследует stdout-pipe и переживает tmux-pane. Сессия исчезает (tmux has-session → false), пока внук ещё дописывает вывод и result.yaml через несколько секунд — поэтому объявление смерти в момент исчезновения сессии отчитывало успешную джобу как failed и иногда запускало лишний ретрай.

Три слоя фикса:

  1. Запуск agy прямо в pane — убран обёртка setsid -w, отвязывавшая agy в свою сессию (он переживал SIGHUP pane и работал «сиротой», расширяя окно ложной смерти). 45572c4
  2. Grace-окно — при «сессия исчезла + нет exit-кода + нет сайдкара» джоба остаётся running (deathSuspectedAt) на AGY_DEATH_GRACE_MS (по умолчанию 30 с, ~2× от наблюдаемых ~14 с задержки записи), затем сайдкар-фолбэк помечает её success, как только result.yaml прилетит. Ограничено wall-clock AGY_TIMEOUT_MS. f53fa2b
  3. Позднее восстановление по сайдкару — джоба, помеченная failed только через путь преждевременной смерти, перепроверяется против result.yaml и апгрейдится до success, если конверт парсится (строго — никогда для реального ненулевого кода, parse-error или kill-137 краш-монитора). 45572c4
Было:  сессия исчезла @50с ──▶ FAILED ──▶ ретрай (работа уже сделана)
Стало: сессия исчезла @50с ──▶ running (grace) ──▶ result.yaml @64с ──▶ SUCCESS

⚡ Экономия токенов — структурированная передача результата

  • Layer 0 — только конверт. async_result возвращает только конверт result: воркера, никогда сырой транскрипт. c7676c5
  • Layer 1 — блокирующее ожидание + слим-статус. Новый async_wait блокирует на сервере до завершения батча; async_status ужат. Убивает петлю status-sleep. 179fcaf · f33dd6e
  • Сайдкар result.yaml. Воркер пишет конверт в файл последним действием; сервер читает файл, а не выскребает stdout. d8e230a
  • Строгая валидация. Серверный YAML.parse (нужен top-level result:). 54571b7

📉 Один прогон ушёл со ~158 вызовов antigravity + 10 sleep до 6 вызовов, 0 sleep.

🎯 Планировщик — детерминированный детект стека

Планировщик работает на только графовых инструментах (gitnexus / serena), а scripts.test из package.json нет в графе кода — поэтому он не видел bun test против node --test и скатывался к неверной догадке. Фикс (2b9564e):

  • Оркестратор инжектит stack_profile — перед раздачей он Read-ит package.json + ls-ит целевую папку и передаёт авторитетные факты (language, file_ext, test_command, test_file) в контракт.
  • Планировщик читает манифест первым — детект стека теперь Шаг 1; правило NOT raw grep сужено до repo-wide grep (точечное чтение одного файла разрешено в любой момент).

✅ Проверено в живую: планировщик выдал src/utils/*.ts + bun test + dependencies: [] с первого раза, без круга коррекции.

🧰 Прочие улучшения

  • Авто-генерация каталога скиллов из рантайм-папки, 12 категорий, + sync-тест. a3430e3 · a3c181d · 5733777
  • Изоляция MCP-конфига в per-session домашку воркера agy. ab80f2b
  • Метрика usage — средняя длительность успешной джобы. d87eca2
  • async_wait добавлен в allowlist инструментов dev-orchestrator-agy + сделан универсальным ожиданием. f33dd6e
  • 📚 Документация — подробный двуязычный README (архитектура, async-движок, реестр воркеров, полная справка по инструментам и env). 9c7c4c3

✅ Проверка

  • bun run build — чисто · bun test192 pass / 0 fail (24 файла).
  • Сквозной параллельный прогон (takeWhile / dropWhile / `partit...
Read more

v1.6.1 — Enforce discovery-first; planner owns file placement

Choose a tag to compare

@VKirill VKirill released this 25 May 15:45

v1.6.1 — Enforce discovery-first; planner owns file placement (2026-05-25)

English

A live test run revealed the PM still self-composing a contract for a "trivial" task and skipping the planner — the prompt said "always discover" but didn't enforce it. Fixed:

  • Enforcement hook (scripts/guard-orchestrator-agy-require-planner.sh): blocks task insert of a worker-coder/worker-frontend contract unless a worker-planner discovery job has run this session. The PM can no longer skip discovery, even on trivial tasks.
  • Planner owns file placement + wiring: even a brand-new isolated file is the planner's call — it decides the exact path and how it is wired (imports / exports / registration / route table / DI), not the PM.
  • Standing rule: the orchestrator never composes an implementation contract from its own judgment — every impl contract comes from a planner run.
  • Observability: orchestrator-trace hook now covers dev-orchestrator-agy + all worker-* (was dev-orchestrator only), so PM tool calls are traced.

Русский

Живой прогон показал, что PM всё ещё сам сочиняет контракт на «тривиальной» задаче, минуя планировщика — промт говорил «всегда discovery», но не принуждал. Исправлено:

  • Хук-принуждение (scripts/guard-orchestrator-agy-require-planner.sh): блокирует task insert контракта worker-coder/worker-frontend, если в этой сессии не было discovery-джобы worker-planner. PM больше не может пропустить discovery даже на тривиальном.
  • Планировщик владеет размещением + вшиванием файла: даже новый изолированный файл — его решение: где лежит и как вшит (импорты / экспорты / регистрация / роут-таблица / DI), а не PM.
  • Standing-rule: оркестратор никогда не сочиняет implementation-контракт сам — только из прогона планировщика.
  • Наблюдаемость: хук orchestrator-trace теперь покрывает dev-orchestrator-agy + все worker-* (был только dev-orchestrator), трейс PM пишется.

v1.6.0 — Pure-PM orchestrator + discovery-first

Choose a tag to compare

@VKirill VKirill released this 25 May 15:29

v1.6.0 — Pure-PM orchestrator + discovery-first (2026-05-25)

English

The agy orchestrator becomes a true project manager: it never reads source code — all code / symbol / graph discovery is delegated to the planner. Designed and reviewed end-to-end with Antigravity.

  • Tools trimmed: dropped Edit, Grep, Glob, all serena, and gitnexus discovery tools (query/context/impact/route_map/tool_map/rename/list_repos). Kept Read (docs / config / logs ONLY — never source), Bash (ops only), Write (docs/plans/ only), antigravity dispatch, memory + perplexity, and gitnexus detect_changes + api_impact (release-gate checks).
  • Discovery-first ALWAYS: every task — including trivial ones — routes through worker-planner. New depth: express (real file map + 1-2 flat contracts, no heavy SPEC) vs depth: full (SPEC + contracts). The PM never scopes from its own reading — a "one-line" request can hide a large blast radius.
  • Planner reads project docs first (architecture.md, docs/index.md, README, CLAUDE.md, glossary.md), then the code graph; the orchestrator feeds these via context_refs.
  • Phase 7 review gate strengthened — since the PM never reads code, the final gate is its only look at the diff; it now explicitly hunts shortcuts / gamed tests / design drift.
  • Enforcement: PreToolUse hook (scripts/guard-orchestrator-agy-no-source-read.sh) blocks source reading via Read/Bash for the dev-orchestrator-agy agent (fail-open; docs/config/logs allowed).

bun test: 109 passing.

Русский

agy-оркестратор становится настоящим проект-менеджером: он не читает исходный код — всё discovery (код/символы/граф) делегируется планировщику. Спроектировано и проверено end-to-end вместе с Antigravity.

  • Урезаны инструменты: убраны Edit, Grep, Glob, вся serena и discovery-часть gitnexus. Оставлены Read (только доки/конфиги/логи — НЕ исходники), Bash (только ops), Write (только docs/plans/), диспетч antigravity, memory + perplexity, gitnexus detect_changes + api_impact (релиз-гейты).
  • Discovery-first ВСЕГДА: любая задача (включая тривиальную) идёт через worker-planner. Новый depth: express (карта файлов + 1-2 контракта, без тяжёлого SPEC) vs depth: full (SPEC + контракты). PM не скоупит со своего чтения — «однострочная» правка может скрывать большой blast radius.
  • Планировщик сперва читает доки проекта (architecture.md, docs/index.md, README, CLAUDE.md, glossary.md), потом граф; оркестратор передаёт их через context_refs.
  • Усилен ревью-гейт Phase 7 — раз PM не видит код, это его единственный взгляд на дифф; теперь явно ищет костыли / подкрученные тесты / дрейф дизайна.
  • Принуждение: PreToolUse-хук (scripts/guard-orchestrator-agy-no-source-read.sh) блокирует чтение исходников через Read/Bash для агента dev-orchestrator-agy (fail-open; доки/конфиги/логи разрешены).

bun test: 109 проходят.

v1.5.0 — Unified worker result envelope

Choose a tag to compare

@VKirill VKirill released this 25 May 14:53

v1.5.0 — Unified worker result envelope (2026-05-25)

English

Every worker now ends with exactly one result: YAML block — a single parse contract for the orchestrator. Verified coherent end-to-end with Antigravity.

  • Verifiers (test/security/payments/ui) + db-reader: flat text → result: YAML.
  • reviewer / planner / doctor: role payload (findings / spec+contracts / diagnosis…) now nested under result: (was top-level); refactor-architect wrapped in result:.
  • Common keys for all roles: summary, status (per-role verdict), errors, artifacts, verification_output; role payload nested.
  • Orchestrator now gates verifiers on result.status == passed — an inconclusive verifier (a check couldn't run) no longer false-passes to deploy. Phase 4 distinguishes the async job-status from result.status (and respects paused/needs_decomposition).
  • Canonical contract documented in prompts/skills-catalog.md → "Result envelope".

Русский

Каждый воркер теперь заканчивает ответ ровно одним блоком result: — единый контракт парсинга для оркестратора. Связность проверена end-to-end вместе с Antigravity.

  • Верификаторы (test/security/payments/ui) + db-reader: плоский текст → result: YAML.
  • reviewer / planner / doctor: role-payload (findings / spec+contracts / diagnosis…) теперь вложен под result: (был на верхнем уровне); refactor-architect обёрнут в result:.
  • Общие поля у всех ролей: summary, status (вердикт роли), errors, artifacts, verification_output; role-payload вложен.
  • Оркестратор гейтит верификаторы по result.status == passedinconclusive (проверка не запустилась) больше не проходит ложно в деплой. Phase 4 различает async job-status и result.status (учитывает paused/needs_decomposition).
  • Канон описан в prompts/skills-catalog.md → раздел "Result envelope".

v1.4.0 — Security & robustness hardening + worker-prompt audit

Choose a tag to compare

@VKirill VKirill released this 25 May 14:53

v1.4.0 — Security & robustness hardening + worker-prompt audit (2026-05-25)

English

Post-verification hardening of the usage feature plus a full worker-prompt audit (done together with Antigravity).

Security

  • All tmux calls now use execFileSync(file, argv) instead of a shell command string — jobId / projectCwd / session names can no longer inject shell metacharacters (closes a pre-existing command-injection vector). Dropped the redundant cd (cwd set via tmux -c).
  • async_status / async_result reject any jobId that isn't ^[A-Za-z0-9._-]+$ before it reaches the filesystem (path-traversal guard).
  • worker-coder / worker-frontend now explicitly forbid hardcoding secrets.

Robustness

  • stdin close is now a shutdown trigger — a stdio client that disconnects without a signal no longer leaves a zombie process (the crash-monitor interval used to keep it alive).
  • On startup the server records usage for jobs that finished while it was down, then sweeps their orphan tmux sessions.
  • The sync discuss_with_antigravity tool now records usage too (get_usage_stats was async-only).
  • Crash monitor skips finished-but-unpolled jobs (no false-kill when legitimate output contains a marker string).

Worker-prompt audit (with Antigravity)

  • Replaced phantom skill references (software-architecture, postgresql-optimization, …) with real bundled skills.
  • worker-reviewer: explicit Phase-7 exception so the final-review gate can review the full diff vs origin/main.
  • index.ts: dropped a stale "role preset" mention (role presets were removed earlier).

bun test: 109 passing.

Русский

Укрепление фичи учёта после диагностики + полный аудит воркер-промтов (вместе с Antigravity).

Безопасность

  • Все вызовы tmux теперь через execFileSync(file, argv), а не строкой шелла — jobId / projectCwd / имена сессий больше не могут инжектить метасимволы (закрыт пред-существующий вектор command-injection). Убран лишний cd (cwd задаётся через tmux -c).
  • async_status / async_result отвергают jobId, не подходящий под ^[A-Za-z0-9._-]+$, до обращения к ФС (защита от traversal).
  • worker-coder / worker-frontend явно запрещают хардкод секретов.

Надёжность

  • Закрытие stdin теперь триггерит shutdown — stdio-клиент, отвалившийся без сигнала, больше не оставляет zombie-процесс (его держал интервал кран-монитора).
  • При старте сервер учитывает usage джоб, завершившихся пока он был выключен, затем подчищает их осиротевшие tmux-сессии.
  • Sync-инструмент discuss_with_antigravity теперь тоже пишет usage (get_usage_stats считал только async).
  • Кран-монитор пропускает завершённые-но-неопрошенные джобы (нет ложного kill при строке-маркере в легитимном выводе).

Аудит воркер-промтов (с Antigravity)

  • Фантомные ссылки на скиллы (software-architecture, postgresql-optimization, …) заменены реальными из набора.
  • worker-reviewer: явное исключение для Phase 7, чтобы финальный гейт мог ревьюить полный дифф против origin/main.
  • index.ts: убрано устаревшее упоминание "role preset".

bun test: 109 проходят.

v1.3.0 — agy usage accounting, tmux hygiene, bundled skill pack

Choose a tag to compare

@VKirill VKirill released this 25 May 14:53

v1.3.0 — agy usage accounting, tmux hygiene, bundled skill pack (2026-05-25)

English

Built end-to-end by the parallel dev-orchestrator-agy team (fan-out workers + lead integration), then hardened.

New feature — agy usage accounting + tmux session hygiene

  • get_usage_stats MCP tool: all-time counters (jobs started/succeeded/failed, prompt/output chars, agy seconds, estimated tokens) persisted to .claude/agy-usage.json.
  • New utils: token-estimate, usage-store, usage-format, session-gc.
  • Startup sweep of completed/orphan tmux job sessions; SIGTERM/SIGINT cleanup. Session names are allowlisted before any tmux shell call.

Bundled programming skill pack (94 skills) under /skills + scripts/install-skills.sh (installs into ~/.agents/skills, the agy skills dir). Craft, languages, frontend, backend/data, integrations, testing. Marketing / SEO / design-creative / third-party skills excluded.

Post-verification hardening

  • Crash monitor no longer false-kills a finished-but-unpolled job whose output happens to contain a marker string (skips jobs that already wrote exit_code.txt).
  • Usage is now recorded on the exit-code-read failure path too; the best-effort telemetry catch blocks are documented (no silent swallow).
  • Dropped the phantom clean-code skill reference from worker-coder defaults + catalog.

bun test: 109 passing.

Русский

Построено end-to-end параллельной командой dev-orchestrator-agy (воркеры веером + интеграция lead-агентом), затем укреплено.

Новая фича — учёт использования agy + гигиена tmux-сессий

  • MCP-инструмент get_usage_stats: счётчики за всё время (джобы запущены/успешно/упало, объём промптов/ответов, секунды agy, оценка токенов) в .claude/agy-usage.json.
  • Новые утилиты: token-estimate, usage-store, usage-format, session-gc.
  • Уборка завершённых/осиротевших tmux-сессий при старте; очистка по SIGTERM/SIGINT. Имена сессий проходят whitelist перед любым shell-вызовом tmux.

Набор программистских скиллов (94) в /skills + scripts/install-skills.sh (ставит в ~/.agents/skills — папку скиллов agy). Дисциплина кода, языки, фронтенд, бэкенд/данные, интеграции, тесты. Маркетинг / SEO / дизайн-креатив / сторонние — исключены.

Укрепление после диагностики

  • Кран-монитор больше не убивает по ошибке завершённую-но-неопрошенную джобу, в выводе которой случайно есть строка-маркер (пропускает джобы с уже записанным exit_code.txt).
  • Учёт теперь пишется и на пути сбоя чтения exit-code; best-effort telemetry-catch'и снабжены пояснениями (без молчаливого глотания).
  • Убрана фантомная ссылка на скилл clean-code из дефолтов worker-coder и каталога.

bun test: 109 проходят.

v1.2.0 — Parallel-safe dispatch & parallel orchestrator

Choose a tag to compare

@VKirill VKirill released this 25 May 12:28

Makes the async job engine safe to run many agy jobs in parallel, and ships an updated orchestrator agent that uses that parallelism. / Делает асинхронный движок безопасным для параллельного запуска многих agy-джоб и обновляет агент-оркестратор под этот параллелизм.


English

MCP server — concurrency fixes (src/utils/jobs.ts)

  • Per-job crash detection. The crash monitor now scans each job's own output.txt (new pure scanFatalMarker()) instead of the shared newest ~/.gemini/.../cli-*.log. Previously, when several jobs ran at once, one crashed job could trigger the kill of a healthy sibling (the monitor fired on whichever job the loop was iterating). Detection is now fully isolated per job.
  • Per-job conversation identity. Removed the global sessionState.activeConversationId write on job success (it was derived from the newest .pb by mtime, so near-simultaneous completions could attribute one job's conversation to another and leak context). The per-job meta.conversationId is now the single source of truth.
  • Internal: catch (e: any)unknown with narrowing; added src/jobs.test.ts. 90 tests passing.

Bundled orchestrator agent

  • agents/dev-orchestrator-agy.md — Phase 4 rewritten from sequential to parallel fan-out / fan-in over the async MCP (async_startasync_statusasync_result).
  • Guardrails: MAX_PARALLEL=3, disjoint files_to_touch per batch, risk_class: high runs solo, the orchestrator serializes all commits (workers never commit — avoids .git/index.lock races), plus a live progress board.
  • skills/orchestrator-workflow/SKILL.md — notes that the agy agent owns its parallel loop.

Verified: deterministic process-level smoke (a crashed job no longer kills siblings) and a live 3-job parallel run (concurrent, isolated conversations, no false kills).


Русский

MCP-сервер — фиксы конкурентности (src/utils/jobs.ts)

  • Детекция падений — по каждой джобе отдельно. Кран-монитор теперь сканирует собственный output.txt каждой джобы (новая чистая функция scanFatalMarker()), а не общий свежий ~/.gemini/.../cli-*.log. Раньше при параллельной работе одна упавшая джоба могла спровоцировать убийство здоровой соседней (монитор срабатывал на той джобе, по которой шёл цикл). Теперь детекция полностью изолирована.
  • Идентичность беседы — по каждой джобе. Убрана глобальная запись sessionState.activeConversationId при успехе джобы (бралась как самый свежий .pb по mtime — при почти одновременном завершении могла приписать одной джобе беседу другой и утечь контекст). Источник истины — meta.conversationId на джобу.
  • Внутреннее: catch (e: any)unknown с нарроингом; добавлен src/jobs.test.ts. 90 тестов проходят.

Встроенный агент-оркестратор

  • agents/dev-orchestrator-agy.md — Phase 4 переписана с последовательной на параллельную fan-out / fan-in поверх async MCP (async_startasync_statusasync_result).
  • Guardrails: MAX_PARALLEL=3, непересекающиеся files_to_touch в батче, risk_class: high идёт solo, оркестратор сериализует все коммиты (воркеры не коммитят — нет гонки за .git/index.lock), плюс живая доска прогресса.
  • skills/orchestrator-workflow/SKILL.md — помечено, что agy-агент владеет своим параллельным циклом.

Проверено: детерминированный process-level smoke (упавшая джоба больше не убивает соседей) и живой прогон 3 джоб параллельно (одновременность, изоляция бесед, без ложных убийств).

v1.1.0 - Tmux project Cwd support & Scoped Review optimizations

Choose a tag to compare

@VKirill VKirill released this 25 May 09:13

This release adds explicit workspace directory context for background tmux executions and optimizes the task-level code review process to be more focused and reliable.

New Features & Improvements

  • Tmux project Cwd support:
    • Added an optional cwd parameter to the discuss_with_antigravity_async_start tool.
    • The dev-orchestrator now explicitly passes the project's absolute path to the Antigravity MCP server.
    • Added a guaranteed cd <projectCwd> transition inside the background tmux session script before launching agy. This prevents workers from starting in home/root directories and wasting time/logs on broad find operations.
  • Scoped Review for worker-reviewer:
    • Implemented the Scoped Review rules ensuring worker-reviewer audits only the specific files listed in the task's files_to_touch using targeted git diffs (git diff HEAD~1 -- <files_to_touch>).
    • Added constraints to forbid unscoped git diff or repo-wide scans that cause HTTP 413 payload overflow crashes on the MCP executor.
    • Implemented optimization to avoid executing heavy global checks (like project-wide tsc or eslint) unless requested for the touched files.

Files Changed

  • src/index.ts — Added cwd argument to the start tool input schema.
  • src/tools/discuss_async.ts — Propagated cwd argument to startTmuxJob.
  • src/utils/jobs.ts — Accepted custom CWD in startTmuxJob and prepended cd command.
  • agents/dev-orchestrator-agy.md & agents/dev-orchestrator.md — Updated review and dispatch logic to use focused task diffs and pass CWD.
  • prompts/workers/worker-reviewer.md — Added target diff execution instructions and safety limits.
  • Global agent configs under ~/.claude/agents/ have been updated locally.

v1.0.2 - Interactive Debate & Receipt Bilingual Support

Choose a tag to compare

@VKirill VKirill released this 23 May 12:51

v1.0.2 - Interactive Debate & Receipt Bilingual Support

Patch release adding multilingual support (Russian/English) and auto-detection for interactive debates and receipts.


🇷🇺 Описание патча (Russian)

  1. Интерактивные дебаты на английском:
    • Инструмент run_interactive_debate теперь полноценно поддерживает английский язык.
    • Добавлены английские шаблоны и системные промпты для раундов с Оптимистом, Скептиком, Соглашателем, Хейтером и Синтезатором.
  2. Двуязычные чеки дебатов:
    • Инструмент get_debate_receipt генерирует отчет и аудит хуков на нативном английском языке, если дебаты велись на английском.
  3. Автоопределение языка (Auto-detection):
    • Язык дебатов теперь определяется автоматически на основе переданной темы (topic) или комментариев пользователя (userComment). Если в тексте нет кириллицы, система автоматически переключается на английский язык (en), без необходимости передавать параметр вручную.
    • Сохранена возможность жестко переопределить язык через аргумент language: "en" | "ru".

🇬🇧 English Description

  1. Bilingual Interactive Debates:
    • Full English language support for the run_interactive_debate tool.
    • English templates and instructions for all AI debate personas (Optimist, Skeptic, Agreer, Hater, and Synthesizer).
  2. Bilingual Receipts:
    • The get_debate_receipt tool now formats and translates reports (including Hooks Audit log) to native English.
  3. Language Auto-Detection:
    • Automatic language inference based on the provided topic or userComment text. If no Cyrillic characters are detected, it defaults to English (en).
    • Manual override is still available via language: "en" | "ru" parameter.

v1.0.1 - Cyrillic UTF-8 Decoding Fix

Choose a tag to compare

@VKirill VKirill released this 23 May 12:42

v1.0.1 - Cyrillic UTF-8 Decoding Fix

Patch release fixing UTF-8 encoding issues in debate transcripts.


🇷🇺 Описание патча (Russian)

Исправлен баг, при котором в сгенерированных отчетах дебатов (debate-deliberation.md, debate-receipt.md) на кириллице появлялись битые символы `` (вопросительные знаки в ромбах).

Причина: Node.js чанки из потока stdout при выполнении дочернего процесса agy обрезались на границе двухбайтовых символов UTF-8. Использование data.toString() приводило к потере байт.
Решение: Для потоков child.stdout и child.stderr установлена явная кодировка "utf-8", что заставляет Node.js использовать внутренний StringDecoder и склеивать чанки корректно.


🇬🇧 English Description

Fixed UTF-8 decoding issue in child process stream read.

Cause: Multi-byte characters (like Cyrillic/Russian) were occasionally split on chunk boundaries when reading agy stdout stream, leading to replacement characters (``) in output markdown files.
Solution: Explicitly set stdout/stderr encoding to "utf-8" in child process configuration to force Node.js to use its internal `StringDecoder` for clean stream assembly.