Skip to content
Open
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
1 change: 0 additions & 1 deletion config/electron-builder.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,6 @@ module.exports = {
'out/main/copilot/**',
'out/main/cursor/**',
'out/main/droid/**',
'out/main/gemini/**',
'out/main/grok/**',
'out/main/hermes/**',
'out/main/daemon-entry.js',
Expand Down
4 changes: 0 additions & 4 deletions config/scripts/locale-brand-mistranslations.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
export const BRAND_MISTRANSLATIONS = {
ko: {
Codex: ['사본', '코덱스'],
Gemini: ['쌍둥이자리'],
Claude: ['클로드'],
Grok: ['그록'],
Orca: ['오르카', '범고래'],
Expand Down Expand Up @@ -42,7 +41,6 @@ export const BRAND_MISTRANSLATIONS = {
},
zh: {
Codex: ['法典'],
Gemini: ['双子座'],
Claude: ['克洛德', '克劳德'],
Grok: ['格罗克'],
Orca: ['虎鲸', '逆戟鲸'],
Expand Down Expand Up @@ -94,7 +92,6 @@ export const BRAND_MISTRANSLATIONS = {
},
ja: {
Codex: ['法典', 'コーデックス'],
Gemini: ['双子座'],
Claude: ['クロード'],
Grok: ['グロック'],
Orca: ['シャチ', '逆戟鲸', 'オルカ'],
Expand Down Expand Up @@ -139,7 +136,6 @@ export const BRAND_MISTRANSLATIONS = {
},
es: {
Codex: ['códice', 'Códice'],
Gemini: ['Géminis'],
Claude: ['claudia', 'Claudia'],
Orca: ['orca', 'Orcas', 'orcas'],
OpenCode: ['código abierto', 'Código abierto'],
Expand Down
1 change: 0 additions & 1 deletion config/scripts/locale-cjk-latin-spaced-terms.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ export const CJK_LATIN_SPACED_TERMS = [
'Claude',
'Claude Code',
'Codex',
'Gemini',
'Kimi',
'OpenCode',
'Orca',
Expand Down
2 changes: 0 additions & 2 deletions config/scripts/locale-translation-policy.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ export const NEVER_TRANSLATE_VALUES = new Set([
'Cursor',
'Droid',
'Devin',
'Gemini',
'Git',
'Git Bash',
'GitHub Copilot',
Expand Down Expand Up @@ -73,7 +72,6 @@ export const NEVER_TRANSLATE_VALUES = new Set([
'Zed',
'android',
'codex',
'gemini',
'claude',
'markdown',
'gh',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import { repairTranslatedValue } from './locale-translation-policy.mjs'
const STATUS_BAR_PROVIDERS = [
['auto.components.status.bar.StatusBar.3885eb74d8', 'Claude'],
['auto.components.status.bar.StatusBar.c0909c686e', 'Codex'],
['auto.components.status.bar.StatusBar.c1df0d67ec', 'Gemini'],
['auto.components.status.bar.StatusBar.antigravityUsage', 'Antigravity'],
['auto.components.status.bar.StatusBar.8c86cd77b0', 'OpenCode Go'],
['auto.components.status.bar.StatusBar.5e59007df4', 'Kimi'],
Expand Down
3 changes: 0 additions & 3 deletions config/scripts/locale-value-overrides.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ export const LOCALE_VALUE_OVERRIDES = {
'Dismiss agent': '에이전트 닫기',
'Codex Usage': 'Codex 사용량',
'Claude Usage': 'Claude 사용량',
'Gemini Usage': 'Gemini 사용량',
'Force Delete Branch': '브랜치 강제 삭제',
'Time agents worked': '에이전트 작업 시간',
PR: 'PR',
Expand Down Expand Up @@ -200,7 +199,6 @@ export const LOCALE_VALUE_OVERRIDES = {
'Dismiss agent': '关闭代理',
'Codex Usage': 'Codex 使用情况',
'Claude Usage': 'Claude 使用情况',
'Gemini Usage': 'Gemini 使用情况',
'Antigravity Usage': 'Antigravity 使用情况',
'OpenCode Go Usage': 'OpenCode Go 使用情况',
'Kimi Usage': 'Kimi 使用情况',
Expand Down Expand Up @@ -417,7 +415,6 @@ export const LOCALE_VALUE_OVERRIDES = {
'Dismiss agent': 'エージェントを閉じる',
'Codex Usage': 'Codex 使用量',
'Claude Usage': 'Claude 使用量',
'Gemini Usage': 'Gemini 使用量',
'Force Delete Branch': 'ブランチを強制削除',
'Time agents worked': 'エージェント作業時間',
PR: 'PR',
Expand Down
3 changes: 1 addition & 2 deletions config/scripts/verify-agent-hook-stdin-lifecycle.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,12 @@ const MANAGED_SCRIPTS = [
['cursor-hook.sh', 'cursor'],
['devin-hook.sh', 'devin'],
['droid-hook.sh', 'droid'],
['gemini-hook.sh', 'gemini'],
['grok-hook.sh', 'grok'],
['kimi-hook.sh', 'kimi'],
['openclaude-hook.sh', 'claude']
]

const REQUIRED_JSON_STDOUT = new Set(['antigravity-hook.sh', 'copilot-hook.sh', 'gemini-hook.sh'])
const REQUIRED_JSON_STDOUT = new Set(['antigravity-hook.sh', 'copilot-hook.sh'])

function parseArgs(argv) {
const result = { home: process.env.HOME ?? '', minMtime: 0 }
Expand Down
2 changes: 1 addition & 1 deletion config/tsconfig.cli.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"../src/main/agent-hooks/managed-agent-hook-registry.ts",
"../src/main/agent-hooks/managed-hook-script-refresh.ts",
"../src/main/agent-hooks/runtime-home-hook-command.ts",
"../src/main/agent-hooks/retired-gemini-hook-cleanup.ts",
"../src/main/amp/hook-service.ts",
"../src/main/antigravity/hook-service.ts",
"../src/main/claude/hook-settings.ts",
Expand Down Expand Up @@ -65,7 +66,6 @@
"../src/main/copilot/hook-service.ts",
"../src/main/cursor/hook-service.ts",
"../src/main/droid/hook-service.ts",
"../src/main/gemini/hook-service.ts",
"../src/main/grok/hook-service.ts",
"../src/main/grok/windows-grok-hook-script.ts",
"../src/main/devin/hook-settings.ts",
Expand Down
2 changes: 1 addition & 1 deletion docs/ai-vault-process-isolation-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The migration changes execution ownership only. Unless a separate product change

| Capability | Required behavior after migration | Owner |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| Agent discovery | Preserve every `AI_VAULT_AGENTS` source: Claude, Codex, Hermes, Pi, OMP, Prime Agent, Cursor, Gemini, Antigravity, Rovo Dev, Copilot, OpenCode, Grok, OpenClaw, Devin, Droid, and Kimi | Service scanner, using existing source adapters |
| Agent discovery | Preserve every `AI_VAULT_AGENTS` source: Claude, Codex, Hermes, Pi, OMP, Prime Agent, Cursor, Antigravity, Rovo Dev, Copilot, OpenCode, Grok, OpenClaw, Devin, Droid, and Kimi | Service scanner, using existing source adapters |
| Session result | Preserve every `AiVaultSession` field, including host/platform identity, paths, Codex home, timestamps, previews, token/message counts, queued/recoverable state, subagent count, resume command, and subagent metadata | Service result builder; router validates/restamps only where it does today |
| Scope and depth | Preserve workspace/project/all scoping, guaranteed older in-scope sessions, 250/500/1000/unlimited depth, sorting, deduplication, and issue rows | Service per-host scan; router multi-host merge; renderer view projection |
| Host routing | Preserve local, all-host, individual SSH, and individual runtime selection with the same per-host time budgets and partial-failure issue behavior | Router |
Expand Down
2 changes: 1 addition & 1 deletion mobile/scripts/mock-server-rpc-handlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ export function handleRequest(

case 'preflight.detectAgents':
case 'preflight.detectRemoteAgents':
respond(success(request.id, ['claude', 'codex', 'gemini']))
respond(success(request.id, ['claude', 'codex', 'cursor']))
break

case 'ssh.getState':
Expand Down
4 changes: 3 additions & 1 deletion mobile/src/components/accounts-snapshot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,13 @@ export const ProviderRateLimitsSchema = z
provider: z.enum([
'claude',
'codex',
'gemini',
'opencode-go',
'kimi',
'minimax',
'grok',
// Why: an older paired host still publishes these retired providers;
// rejecting them would fail the whole snapshot over one unused entry.
'gemini',
'antigravity'
]),
session: RateLimitWindowSchema.nullable(),
Expand Down
1 change: 0 additions & 1 deletion mobile/src/components/mobile-agent-icon-assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ export const MOBILE_AGENT_ICON_ASSETS: Partial<Record<TuiAgent, ImageSourcePropT
ante: require('../../../src/shared/agent-icons/ante.png'),
trae: require('../../../src/shared/agent-icons/trae.png'),
'prime-agent': require('../../../src/shared/agent-icons/prime-agent.png'),
gemini: require('../../../src/shared/agent-icons/gemini.png'),
antigravity: require('../../../src/shared/agent-icons/antigravity.png'),
goose: require('../../../src/shared/agent-icons/goose.png'),
amp: require('../../../src/shared/agent-icons/amp.png'),
Expand Down
18 changes: 15 additions & 3 deletions mobile/src/session/mobile-terminal-tab-agent.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,10 @@ describe('resolveMobileTerminalTabAgentId', () => {
).toBe('codex')
})

it('falls back to explicit terminal titles when hook identity is unavailable', () => {
expect(resolveMobileTerminalTabAgentId(terminalTab('✦ Gemini CLI'))).toBe('gemini')
it('does not map retired Gemini title decorations to an agent id', () => {
// Gemini CLI is no longer a TuiAgent; title fallback must not invent an identity.
expect(resolveMobileTerminalTabAgentId(terminalTab('✦ Gemini CLI'))).toBeNull()
expect(resolveMobileTerminalTabAgentId(terminalTab('Codex ready'))).toBe('codex')
})

it('does not let title fallback override launch identity', () => {
Expand All @@ -76,8 +78,18 @@ describe('resolveMobileTerminalTabAgentId', () => {
})

describe('getMobileSessionTabTitle', () => {
it('keeps retired Gemini titles unstripped when no agent identity is known', () => {
// No icon without identity; leave the raw title (including decoration) alone.
expect(getMobileSessionTabTitle(terminalTab('✦ Gemini CLI'))).toBe('✦ Gemini CLI')
})

it('strips leading agent decorations when an icon is shown', () => {
expect(getMobileSessionTabTitle(terminalTab('✦ Gemini CLI'))).toBe('Gemini CLI')
expect(getMobileSessionTabTitle(terminalTab('Codex ready', { agentType: 'codex' }))).toBe(
'Codex ready'
)
expect(getMobileSessionTabTitle(terminalTab('✳ investigating', { agentType: 'claude' }))).toBe(
'investigating'
)
})

it('falls back for glyph-only agent titles on mobile', () => {
Expand Down
3 changes: 0 additions & 3 deletions mobile/src/tasks/mobile-tui-agents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ export const MOBILE_TUI_AGENT_AUTO_PICK_ORDER = [
'pi',
'omp',
'prime-agent',
'gemini',
'antigravity',
'aider',
'goose',
Expand Down Expand Up @@ -56,7 +55,6 @@ export const MOBILE_TUI_AGENT_LABELS: Record<TuiAgent, string> = {
pi: 'Pi',
omp: 'OMP',
'prime-agent': 'Prime Agent',
gemini: 'Gemini',
antigravity: 'Antigravity',
aider: 'Aider',
goose: 'Goose',
Expand Down Expand Up @@ -91,7 +89,6 @@ export const MOBILE_TUI_AGENT_FAVICON_DOMAINS: Partial<Record<TuiAgent, string>>
trae: 'www.trae.cn',
omp: 'omp.sh',
'prime-agent': 'primeintellect.ai',
gemini: 'gemini.google.com',
antigravity: 'antigravity.google',
goose: 'goose-docs.ai',
amp: 'ampcode.com',
Expand Down
3 changes: 1 addition & 2 deletions mobile/src/worktree/agent-row-display.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export function agentDisplayLabel(row: RuntimeWorktreeAgentRow, now: number): st
return agentStateLabel(agentDotState(row, now))
}

// Short agent identity label by type (Claude/Codex/Gemini/…), used when no
// Short agent identity label by type (Claude/Codex/Cursor/…), used when no
// identity icon is available on mobile. Falls back to the first two letters.
export function agentIdentityLabel(agentType: string | null): string {
if (!agentType) {
Expand All @@ -75,7 +75,6 @@ export function agentIdentityLabel(agentType: string | null): string {
const known: Record<string, string> = {
claude: 'CL',
codex: 'CX',
gemini: 'GM',
cursor: 'CR',
copilot: 'CP',
amp: 'AM',
Expand Down
2 changes: 1 addition & 1 deletion skill-guides/orca-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ Terminal rules:
- Use `terminal send` only for direct terminal input or one-off prompts where no task state, inbox, or reply tracking is needed.
- For structured coordination, invoke the `orchestration` skill; it uses `orca orchestration ...` commands for messages, handoffs, task DAGs, dispatches, inbox/reply flows, and coordinator loops. A receiving agent can run `orca orchestration check --unread --inject` to render its unread mail in agent-readable form; this checks the caller's inbox and does not remotely deliver input to another terminal.
- Use `terminal create --worktree active --command "<agent>"` for a fresh agent in the current worktree. Use `worktree create --agent <agent>` only for a separate checkout (agent in the first terminal — do not also `terminal create` the same agent).
- Use `terminal wait --for tui-idle` for agent CLIs such as Claude Code, Gemini, Codex, OMP, Pi, and Grok; always pass `--timeout-ms`.
- Use `terminal wait --for tui-idle` for agent CLIs such as Claude Code, Codex, OMP, Pi, and Grok; always pass `--timeout-ms`.
- Terminal handles are runtime-scoped. Use `startupTerminal.handle` as the sole agent handle when `worktree create --agent` returns it; if Orca restarts, omits the handle, or returns `terminal_handle_stale`, reacquire with `terminal list` and continue with the replacement only.
- For long output, use cursor reads. After a limited tail preview, page from `oldestCursor`; after a cursor read, continue with `nextCursor` while `limited` is true and `nextCursor !== latestCursor`.
- `--direction horizontal` splits left/right. `--direction vertical` splits top/bottom.
Expand Down
2 changes: 1 addition & 1 deletion skill-guides/orchestration.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ Rules:
- Heartbeats and visible terminal activity mean the worker is alive, not done. Do not stop, close, kill, or restart a worker just because it has not produced a completion message yet.
- Use `ask` when a worker needs a blocking answer from the coordinator; it defaults to the active Dispatch's Run. Timeout or disconnect leaves the question pending, so resume by its original message ID instead of asking again.
- `check --wait` returns one bounded Delivery, not every future completion. Process every message, acknowledge it, then keep waiting until every expected Dispatch settles.
- Group addresses include `@all`, `@idle`, `@claude`, `@codex`, `@opencode`, `@gemini`, `@droid`, `@grok`, `@cursor`, and `@worktree:<id>`.
- Group addresses include `@all`, `@idle`, `@claude`, `@codex`, `@opencode`, `@droid`, `@grok`, `@cursor`, and `@worktree:<id>`.
- Message types include `status`, `dispatch`, `worker_done`, `merge_ready`, `escalation`, `handoff`, `question`, `decision_gate` (legacy/gates), and `heartbeat`.
- Use group addresses only for messages that are genuinely useful to many terminals, such as `status` broadcasts or intentional fan-out questions. Do not send dispatch lifecycle messages to groups.
- `worker_done` belongs to the active Dispatch and defaults to its Run mailbox; never target a group.
Expand Down
Loading