From f5466d992213b0ec623da22afb596590a75e200b Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Tue, 19 May 2026 20:55:46 -0700 Subject: [PATCH] Update Antigravity docs and prompt cache (#2394) --- docs/readme/README.es.md | 9 +++-- docs/readme/README.ja.md | 9 +++-- docs/readme/README.ko.md | 9 +++-- docs/readme/README.zh-CN.md | 9 +++-- src/shared/agent-hook-listener.test.ts | 52 ++++++++++++++++++++++++++ src/shared/agent-hook-listener.ts | 11 ++++-- 6 files changed, 80 insertions(+), 19 deletions(-) diff --git a/docs/readme/README.es.md b/docs/readme/README.es.md index 2f54e1f459f..df37010b377 100644 --- a/docs/readme/README.es.md +++ b/docs/readme/README.es.md @@ -14,7 +14,7 @@

El orquestador de IA para desarrolladores 100x.
- Ejecuta Claude Code, Codex, Grok u OpenCode en paralelo entre repositorios — cada uno en su propio worktree, todo administrado desde un solo lugar.
+ Ejecuta Claude Code, Codex, Grok, Antigravity u OpenCode en paralelo entre repositorios — cada uno en su propio worktree, todo administrado desde un solo lugar.
Disponible para macOS, Windows y Linux.

@@ -28,13 +28,14 @@ ## Agentes compatibles -Orca es compatible con cualquier agente CLI (*no solo los de esta lista*). +Orca es compatible con cualquier agente CLI (_no solo los de esta lista_).

Claude Code   Codex   Grok   Gemini   + Antigravity   Pi   Hermes Agent   OpenCode   @@ -61,7 +62,7 @@ Orca es compatible con cualquier agente CLI (*no solo los de esta lista*). ## Características -- **Sin login** — Usa tu propia suscripción de Claude Code o Codex. +- **Sin login** — Usa tu propia suscripción de Claude Code, Codex, Grok o Antigravity. - **Nativo con worktrees** — Cada feature vive en su propio worktree. Nada de stash ni malabares entre ramas. Crea y cambia al instante. - **Terminales multi-agente** — Ejecuta varios agentes de IA en paralelo en pestañas y paneles. Mira de un vistazo cuáles están activos. - **Control de versiones integrado** — Revisa los diffs generados por IA, haz ediciones rápidas y haz commit sin salir de Orca. @@ -78,7 +79,7 @@ Orca es compatible con cualquier agente CLI (*no solo los de esta lista*). - **[Descarga desde onOrca.dev](https://onOrca.dev)** - O desde la **[página de GitHub Releases](https://github.com/stablyai/orca/releases/latest)** -*También puedes instalar desde un gestor de paquetes:* +_También puedes instalar desde un gestor de paquetes:_ ### macOS (Homebrew) diff --git a/docs/readme/README.ja.md b/docs/readme/README.ja.md index bbc3f64331c..befbff6dd91 100644 --- a/docs/readme/README.ja.md +++ b/docs/readme/README.ja.md @@ -14,7 +14,7 @@

100x ビルダーのための AI オーケストレーター。
- Claude Code、Codex、OpenCode をリポジトリをまたいで並行実行 — それぞれを専用のワークツリーで動かし、1 か所で追跡できます。
+ Claude Code、Codex、Grok、Antigravity、OpenCode をリポジトリをまたいで並行実行 — それぞれを専用のワークツリーで動かし、1 か所で追跡できます。
macOS、Windows、Linux で利用できます。

@@ -28,13 +28,14 @@ ## 対応するエージェント -Orca は任意の CLI エージェントに対応しています(*このリストに限定されません*)。 +Orca は任意の CLI エージェントに対応しています(_このリストに限定されません_)。

Claude Code   Codex   Grok   Gemini   + Antigravity   Pi   Hermes Agent   OpenCode   @@ -61,7 +62,7 @@ Orca は任意の CLI エージェントに対応しています(*このリス ## 機能 -- **ログイン不要** — お持ちの Claude Code や Codex サブスクリプションをそのまま利用できます。 +- **ログイン不要** — お持ちの Claude Code、Codex、Grok、Antigravity サブスクリプションをそのまま利用できます。 - **ワークツリーネイティブ** — 各機能は専用のワークツリーで開発できます。スタッシュやブランチ切り替えに悩まず、すぐに作成して切り替えられます。 - **マルチエージェントターミナル** — 複数の AI エージェントをタブやペインで並行実行できます。どれがアクティブかを一目で確認できます。 - **組み込みソース管理** — AI が生成した Diff を確認し、すばやく編集して、Orca から離れずにコミットできます。 @@ -78,7 +79,7 @@ Orca は任意の CLI エージェントに対応しています(*このリス - **[onOrca.dev からダウンロード](https://onOrca.dev)** - または **[GitHub Releases ページ](https://github.com/stablyai/orca/releases/latest)** から入手 -*パッケージマネージャーからもインストールできます:* +_パッケージマネージャーからもインストールできます:_ ### macOS (Homebrew) diff --git a/docs/readme/README.ko.md b/docs/readme/README.ko.md index 1dab6f41351..8372b07da84 100644 --- a/docs/readme/README.ko.md +++ b/docs/readme/README.ko.md @@ -14,7 +14,7 @@

100x 빌더를 위한 AI 오케스트레이터.
- Claude Code, Codex, Grok, OpenCode를 여러 리포지토리에서 나란히 실행하세요. 각 에이전트는 자체 worktree에서 실행되고 한곳에서 추적됩니다.
+ Claude Code, Codex, Grok, Antigravity, OpenCode를 여러 리포지토리에서 나란히 실행하세요. 각 에이전트는 자체 worktree에서 실행되고 한곳에서 추적됩니다.
macOS, Windows, Linux에서 사용할 수 있습니다.

@@ -28,13 +28,14 @@ ## 지원 에이전트 -Orca는 모든 CLI 에이전트를 지원합니다(*아래 목록에만 한정되지 않습니다*). +Orca는 모든 CLI 에이전트를 지원합니다(_아래 목록에만 한정되지 않습니다_).

Claude Code   Codex   Grok   Gemini   + Antigravity   Pi   Hermes Agent   OpenCode   @@ -61,7 +62,7 @@ Orca는 모든 CLI 에이전트를 지원합니다(*아래 목록에만 한정 ## 기능 -- **로그인 불필요** — 보유한 Claude Code 또는 Codex 구독을 그대로 사용하세요. +- **로그인 불필요** — 보유한 Claude Code, Codex, Grok 또는 Antigravity 구독을 그대로 사용하세요. - **Worktree 네이티브** — 모든 기능은 자체 worktree를 가집니다. stash나 브랜치 전환에 얽매이지 않고 즉시 만들고 전환할 수 있습니다. - **멀티 에이전트 터미널** — 여러 AI 에이전트를 탭과 패널에서 나란히 실행하세요. 어떤 에이전트가 활성 상태인지 한눈에 볼 수 있습니다. - **내장 소스 관리** — AI가 생성한 diff를 검토하고, 빠르게 수정하고, Orca를 떠나지 않고 커밋할 수 있습니다. @@ -78,7 +79,7 @@ Orca는 모든 CLI 에이전트를 지원합니다(*아래 목록에만 한정 - **[onOrca.dev에서 다운로드](https://onOrca.dev)** - 또는 **[GitHub Releases 페이지](https://github.com/stablyai/orca/releases/latest)** 에서 받기 -*패키지 매니저로도 설치할 수 있습니다:* +_패키지 매니저로도 설치할 수 있습니다:_ ### macOS (Homebrew) diff --git a/docs/readme/README.zh-CN.md b/docs/readme/README.zh-CN.md index 131abfe3764..98bb98abc58 100644 --- a/docs/readme/README.zh-CN.md +++ b/docs/readme/README.zh-CN.md @@ -14,7 +14,7 @@

面向 100x 构建者的 AI 编排器。
- 跨仓库并排运行 Claude Code、Codex 或 OpenCode — 每个都在自己的 worktree 中运行,并在一个地方统一跟踪。
+ 跨仓库并排运行 Claude Code、Codex、Grok、Antigravity 或 OpenCode — 每个都在自己的 worktree 中运行,并在一个地方统一跟踪。
支持 macOS、Windows 和 Linux

@@ -28,13 +28,14 @@ ## 支持的智能体 -Orca 支持任何 CLI 智能体(*不仅限于以下列表*)。 +Orca 支持任何 CLI 智能体(_不仅限于以下列表_)。

Claude Code   Codex   Grok   Gemini   + Antigravity   Pi   Hermes Agent   OpenCode   @@ -61,7 +62,7 @@ Orca 支持任何 CLI 智能体(*不仅限于以下列表*)。 ## 特性 -- **无需登录** — 直接使用你自己的 Claude Code 或 Codex 订阅。 +- **无需登录** — 直接使用你自己的 Claude Code、Codex、Grok 或 Antigravity 订阅。 - **原生 worktree 工作流** — 每个功能都有自己的 worktree。无需 stash,也不用来回切分支。立即创建,快速切换。 - **多智能体终端** — 在标签页和面板中并排运行多个 AI 智能体。一眼就能看到哪些正在活跃。 - **内置源码管理** — 查看 AI 生成的 diff,快速编辑,并且无需离开 Orca 就能提交。 @@ -78,7 +79,7 @@ Orca 支持任何 CLI 智能体(*不仅限于以下列表*)。 - **[从 onOrca.dev 下载](https://onOrca.dev)** - 或通过 **[GitHub Releases 页面](https://github.com/stablyai/orca/releases/latest)** 获取 -*也可以通过包管理器安装:* +_也可以通过包管理器安装:_ ### macOS (Homebrew) diff --git a/src/shared/agent-hook-listener.test.ts b/src/shared/agent-hook-listener.test.ts index 9057c37a1d9..6b6d0e1346f 100644 --- a/src/shared/agent-hook-listener.test.ts +++ b/src/shared/agent-hook-listener.test.ts @@ -211,6 +211,58 @@ describe('shared agent-hook-listener', () => { } }) + it('keeps the cached Antigravity prompt instead of rescanning the transcript', () => { + const tmpDir = mkdtempSync(join(tmpdir(), 'orca-antigravity-cached-prompt-')) + const transcriptPath = join(tmpDir, 'transcript.jsonl') + try { + writeFileSync( + transcriptPath, + `${JSON.stringify({ + source: 'USER_EXPLICIT', + type: 'USER_INPUT', + content: '\nFirst request\n' + })}\n` + ) + + const started = normalizeHookPayload( + state, + 'antigravity', + { + paneKey: PANE_KEY, + hook_event_name: 'PreInvocation', + payload: { transcriptPath } + }, + 'production' + ) + expect(started?.payload.prompt).toBe('First request') + + writeFileSync( + transcriptPath, + `${JSON.stringify({ + source: 'USER_EXPLICIT', + type: 'USER_INPUT', + content: '\nSecond request\n' + })}\n`, + { flag: 'a' } + ) + + const tool = normalizeHookPayload( + state, + 'antigravity', + { + paneKey: PANE_KEY, + hook_event_name: 'PostToolUse', + payload: { transcriptPath, toolCall: { name: 'run_command' } } + }, + 'production' + ) + + expect(tool?.payload.prompt).toBe('First request') + } finally { + rmSync(tmpDir, { recursive: true, force: true }) + } + }) + it('maps Antigravity feedback tools to waiting state', () => { const question = normalizeHookPayload( state, diff --git a/src/shared/agent-hook-listener.ts b/src/shared/agent-hook-listener.ts index 0b233322dab..d11649b8200 100644 --- a/src/shared/agent-hook-listener.ts +++ b/src/shared/agent-hook-listener.ts @@ -1607,19 +1607,24 @@ function normalizeAntigravityEvent( return null } - const effectivePrompt = promptText || readLastUserPromptFromTranscript(transcriptPath) || '' + const resetsTurn = isNewTurnEvent('antigravity', eventName) + // Why: Antigravity transcripts can grow during long tool-heavy turns. Once + // the prompt is cached for this pane, avoid rescanning the file per hook. + const cachedPrompt = resetsTurn ? undefined : state.lastPromptByPaneKey.get(paneKey) + const effectivePrompt = + promptText || cachedPrompt || readLastUserPromptFromTranscript(transcriptPath) || '' const snapshot = resolveToolState( state, paneKey, extractToolFields('antigravity', eventName, hookPayload), - { resetOnNewTurn: isNewTurnEvent('antigravity', eventName) } + { resetOnNewTurn: resetsTurn } ) const payload = parseAgentStatusPayload( JSON.stringify({ state: stateName, prompt: resolvePrompt(state, paneKey, effectivePrompt, { - resetOnNewTurn: isNewTurnEvent('antigravity', eventName) + resetOnNewTurn: resetsTurn }), agentType: 'antigravity', toolName: snapshot.toolName,