gemini-cli icon indicating copy to clipboard operation
gemini-cli copied to clipboard

refactor(core/cli): change 'zed-integration' to be ACP focused

Open kastkeepitjumpinlikekangaroos opened this issue 2 months ago • 2 comments

TLDR

Fix #11026 by renaming the Zed integraion to ACP integration now that there is wider support for ACP outside of Zed.

npm run preflight is passing locally:

owenchristie@Owens-iMac gem-cli % npm run preflight

> @google/[email protected] preflight
> npm run clean && npm ci && npm run format && npm run lint:ci && npm run build && npm run typecheck && npm run test:ci


> @google/[email protected] clean
> node scripts/clean.js


> @google/[email protected] prepare
> husky && npm run bundle


> @google/[email protected] bundle
> npm run generate && node esbuild.config.js && node scripts/copy_bundle_assets.js


> @google/[email protected] generate
> node scripts/generate-git-commit-info.js

Assets copied to bundle/

added 1314 packages, and audited 1320 packages in 6s

345 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

> @google/[email protected] format
> prettier --experimental-cli --write .


> @google/[email protected] lint:ci
> eslint . --ext .ts,.tsx --max-warnings 0 && eslint integration-tests --max-warnings 0


> @google/[email protected] build
> node scripts/build.js


> @google/[email protected] generate
> node scripts/generate-git-commit-info.js


> @google/[email protected] build
> node ../../scripts/build_package.js

Successfully copied files.

> @google/[email protected] build
> node ../../scripts/build_package.js

Successfully copied files.

> @google/[email protected] build
> node ../../scripts/build_package.js

Successfully copied files.

> @google/[email protected] build
> node ../../scripts/build_package.js

Successfully copied files.

> [email protected] build
> npm run build:dev


> [email protected] build:dev
> npm run check-types && npm run lint && node esbuild.js


> [email protected] check-types
> tsc --noEmit


> [email protected] lint
> eslint src

[watch] build started
[watch] build finished

> @google/[email protected] typecheck
> npm run typecheck --workspaces --if-present


> @google/[email protected] typecheck
> tsc --noEmit


> @google/[email protected] typecheck
> tsc --noEmit


> @google/[email protected] typecheck
> tsc --noEmit


> @google/[email protected] typecheck
> tsc --noEmit


> @google/[email protected] test:ci
> npm run test:ci --workspaces --if-present --parallel && npm run test:scripts


> @google/[email protected] test:ci
> vitest run --coverage


 RUN  v3.2.4 /Users/owenchristie/gem-cli/packages/a2a-server
      Coverage enabled with v8

 ✓ src/persistence/gcs.test.ts (10 tests | 1 skipped) 8ms
 ✓ src/agent/task.test.ts (1 test) 5ms
 ✓ src/http/endpoints.test.ts (5 tests) 26ms
 ✓ src/http/app.test.ts (5 tests) 33ms

 Test Files  4 passed (4)
      Tests  20 passed | 1 skipped (21)
   Start at  20:00:04
   Duration  1.52s (transform 483ms, setup 0ms, collect 3.00s, tests 71ms, environment 810ms, prepare 166ms)

JUNIT report written to /Users/owenchristie/gem-cli/packages/a2a-server/junit.xml
 % Coverage report from v8

> @google/[email protected] test:ci
> vitest run


 RUN  v3.2.4 /Users/owenchristie/gem-cli/packages/cli
      Coverage enabled with v8

 ✓ src/utils/sessionCleanup.test.ts (70 tests) 24ms
 ✓ src/config/settings.test.ts (77 tests) 24ms
 ✓ src/ui/components/shared/text-buffer.test.ts (115 tests) 83ms
 ✓ src/ui/hooks/vim.test.ts (87 tests) 228ms
 ✓ src/ui/hooks/useGeminiStream.test.tsx (43 tests) 490ms
 ✓ src/config/config.test.ts (174 tests | 1 skipped) 331ms
 ✓ src/ui/components/shared/vim-buffer-actions.test.ts (74 tests) 16ms
 ✓ src/config/extension.test.ts (59 tests) 168ms
 ✓ src/services/FileCommandLoader.test.ts (38 tests) 134ms
 ✓ src/utils/settingsUtils.test.ts (73 tests) 13ms
 ✓ src/ui/hooks/useToolScheduler.test.ts (21 tests | 4 skipped) 31ms
 ✓ src/ui/hooks/atCommandProcessor.test.ts (39 tests) 263ms
 ✓ src/ui/hooks/useSelectionList.test.ts (45 tests) 49ms
 ✓ src/ui/AppContainer.test.tsx (35 tests) 139ms
(node:95693) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
 ✓ src/nonInteractiveCli.test.ts (18 tests) 19ms
 ✓ src/ui/contexts/KeypressContext.test.tsx (43 tests) 47ms
 ✓ src/services/prompt-processors/shellProcessor.test.ts (33 tests) 18ms
 ✓ src/ui/hooks/useSlashCompletion.test.ts (21 tests) 356ms
 ✓ src/ui/hooks/slashCommandProcessor.test.ts (35 tests) 1935ms
 ✓ src/ui/components/SettingsDialog.test.tsx (52 tests) 3290ms
   ✓ SettingsDialog > String Settings Editing > should allow editing and committing a string setting  540ms
 ✓ src/ui/hooks/shellCommandProcessor.test.ts (20 tests) 382ms
 ✓ src/ui/commands/chatCommand.test.ts (28 tests) 30ms
 ✓ src/ui/hooks/useAutoAcceptIndicator.test.ts (16 tests) 34ms
 ✓ src/config/extensions/extensionEnablement.test.ts (43 tests) 21ms
 ✓ src/ui/hooks/useCommandCompletion.test.ts (17 tests) 57ms
 ✓ src/config/extensions/github.test.ts (30 tests) 41ms
 ✓ src/ui/components/shared/BaseSelectionList.test.tsx (26 tests) 333ms
 ✓ src/ui/utils/commandUtils.test.ts (26 tests) 35ms
 ✓ src/config/policy.test.ts (19 tests) 5ms
 ✓ src/services/McpPromptLoader.test.ts (25 tests) 7ms
 ✓ src/validateNonInterActiveAuth.test.ts (17 tests) 10ms
 ✓ src/ui/hooks/useAtCompletion.test.ts (13 tests) 1048ms
 ✓ src/config/extensions/update.test.ts (8 tests) 212ms
 ✓ src/ui/components/InputPrompt.test.tsx (87 tests) 8202ms
   ✓ InputPrompt > command search (Ctrl+R when not in shell) > expands and collapses long suggestion via Right/Left arrows  367ms
 ✓ src/gemini.test.tsx (9 tests) 523ms
   ✓ gemini.tsx main function > verifies that we dont load the config before relaunchAppInChildProcess  507ms
 ✓ src/utils/errors.test.ts (22 tests) 10ms
 ✓ src/config/policy-engine.integration.test.ts (12 tests) 4ms
 ✓ src/ui/keyMatchers.test.ts (34 tests) 5ms
 ✓ src/config/trustedFolders.test.ts (21 tests) 8ms
 ✓ src/services/CommandService.test.ts (11 tests) 15ms
 ✓ src/ui/components/shared/MaxSizedBox.test.tsx (21 tests) 64ms
 ✓ src/config/config.integration.test.ts (18 tests) 180ms
(node:95774) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 mcp-client-update listeners added to [EventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
 ✓ src/config/settingsSchema.test.ts (16 tests) 7ms
 ✓ src/ui/components/Composer.test.tsx (18 tests) 91ms
 ✓ src/utils/installationInfo.test.ts (16 tests) 11ms
 ✓ src/ui/hooks/useQuotaAndFallback.test.ts (10 tests) 31ms
 ✓ src/ui/commands/memoryCommand.test.ts (10 tests) 7ms
 ✓ src/utils/commentJson.test.ts (12 tests) 16ms
 ✓ src/ui/components/StatsDisplay.test.tsx (12 tests) 141ms
 ✓ src/ui/components/LoadingIndicator.test.tsx (16 tests) 48ms
 ✓ src/ui/components/messages/DiffRenderer.test.tsx (13 tests) 199ms
 ✓ src/commands/mcp/add.test.ts (17 tests) 53ms
 ✓ src/ui/components/messages/ToolGroupMessage.test.tsx (14 tests) 58ms
 ✓ src/utils/relaunch.test.ts (8 tests) 7ms
 ✓ src/utils/handleAutoUpdate.test.ts (13 tests) 13ms
 ✓ src/ui/hooks/useInputHistoryStore.test.ts (14 tests) 40ms
 ✓ src/ui/commands/restoreCommand.test.ts (13 tests) 83ms
 ✓ src/ui/themes/color-utils.test.ts (16 tests) 5ms
 ✓ src/ui/auth/AuthDialog.test.tsx (14 tests) 121ms
 ✓ src/ui/commands/extensionsCommand.test.ts (11 tests) 11ms
 ✓ src/ui/hooks/useExtensionUpdates.test.ts (4 tests) 246ms
 ✓ src/ui/commands/copyCommand.test.ts (11 tests) 6ms
 ✓ src/ui/commands/ideCommand.test.ts (8 tests) 8ms
 ✓ src/utils/envVarResolver.test.ts (16 tests) 4ms
 ✓ src/services/prompt-processors/injectionParser.test.ts (21 tests) 6ms
 ✓ src/services/BuiltinCommandLoader.test.ts (10 tests) 326ms
 ✓ src/ui/hooks/useKeypress.test.ts (18 tests) 50ms
 ✓ src/ui/hooks/useEditorSettings.test.ts (10 tests) 21ms
 ✓ src/utils/sessionCleanup.integration.test.ts (5 tests) 18ms
 ✓ src/ui/hooks/useReverseSearchCompletion.test.tsx (10 tests) 32ms
 ✓ src/services/prompt-processors/atFileProcessor.test.ts (11 tests) 9ms
 ✓ src/ui/commands/setupGithubCommand.test.ts (8 tests | 1 skipped) 26ms
 ✓ src/ui/hooks/useInputHistory.test.ts (11 tests) 18ms
 ✓ src/ui/components/messages/ToolMessage.test.tsx (12 tests) 37ms
 ✓ src/ui/hooks/useShellHistory.test.ts (7 tests) 562ms
 ✓ src/ui/utils/computeStats.test.ts (12 tests) 10ms
 ✓ src/ui/hooks/usePermissionsModifyTrust.test.ts (8 tests) 24ms
 ✓ src/ui/hooks/useFolderTrust.test.ts (11 tests) 27ms
 ✓ src/ui/hooks/useIdeTrustListener.test.ts (5 tests) 22ms
 ✓ src/ui/components/Footer.test.tsx (17 tests) 49ms
 ✓ src/ui/hooks/useGitBranchName.test.ts (7 tests | 2 skipped) 29ms
 ✓ src/ui/components/HistoryItemDisplay.test.tsx (13 tests) 132ms
 ✓ src/ui/components/ModelDialog.test.tsx (9 tests) 62ms
 ✓ src/ui/hooks/usePhraseCycler.test.ts (9 tests) 32ms
 ✓ src/ui/components/messages/CompressionMessage.test.tsx (8 tests) 52ms
 ✓ src/ui/hooks/useHistoryManager.test.ts (8 tests) 29ms
 ✓ src/ui/hooks/useMessageQueue.test.ts (9 tests) 21ms
 ✓ src/ui/utils/textUtils.test.ts (9 tests) 2ms
 ✓ src/ui/commands/directoryCommand.test.tsx (7 tests) 7ms
 ✓ src/commands/mcp/remove.test.ts (6 tests) 29ms
 ✓ src/ui/themes/theme-manager.test.ts (12 tests) 27ms
 ✓ src/ui/components/ModelStatsDisplay.test.tsx (6 tests) 66ms
 ✓ src/ui/components/PermissionsModifyTrustDialog.test.tsx (6 tests) 228ms
 ✓ src/ui/commands/mcpCommand.test.ts (5 tests) 6ms
 ✓ src/commands/mcp/list.test.ts (4 tests) 6ms
 ✓ src/utils/deepMerge.test.ts (13 tests) 3ms
 ✓ src/ui/utils/MarkdownDisplay.test.tsx (30 tests) 260ms
 ✓ src/ui/utils/updateCheck.test.ts (9 tests) 6ms
 ✓ src/ui/components/shared/RadioButtonSelect.test.tsx (5 tests) 20ms
 ✓ src/ui/contexts/SessionContext.test.tsx (4 tests) 29ms
 ✓ src/ui/components/DebugProfiler.test.tsx (10 tests) 6ms
 ✓ src/ui/utils/highlight.test.ts (16 tests) 5ms
 ✓ src/utils/commands.test.ts (12 tests) 5ms
 ✓ src/ui/hooks/useLoadingIndicator.test.ts (5 tests) 94ms
 ✓ src/ui/components/ToolStatsDisplay.test.tsx (5 tests) 60ms
 ✓ src/ui/hooks/useFlickerDetector.test.ts (6 tests) 16ms
 ✓ src/ui/commands/aboutCommand.test.ts (5 tests) 8ms
 ✓ src/ui/components/messages/ToolConfirmationMessage.test.tsx (10 tests) 96ms
 ✓ src/ui/App.test.tsx (7 tests) 39ms
 ✓ src/commands/extensions/install.test.ts (8 tests) 14ms
 ✓ src/ui/components/views/McpStatus.test.tsx (12 tests) 67ms
 ✓ src/utils/gitUtils.test.ts (12 tests) 14ms
 ✓ src/ui/hooks/useConsoleMessages.test.ts (7 tests) 46ms
 ✓ src/ui/hooks/useFocus.test.ts (6 tests) 17ms
 ✓ src/ui/components/shared/EnumSelector.test.tsx (9 tests) 44ms
 ✓ src/ui/commands/compressCommand.test.ts (5 tests) 9ms
 ✓ src/ui/hooks/useTimer.test.ts (8 tests) 37ms
 ✓ src/ui/components/AnsiOutput.test.tsx (6 tests) 45ms
 ✓ src/ui/commands/toolsCommand.test.ts (4 tests) 10ms
 ✓ src/ui/components/PrepareLabel.test.tsx (6 tests) 24ms
 ✓ src/ui/components/FolderTrustDialog.test.tsx (9 tests) 156ms
 ✓ src/ui/themes/theme.test.ts (5 tests) 3ms
 ✓ src/ui/hooks/usePrivacySettings.test.ts (4 tests) 185ms
 ✓ src/ui/commands/initCommand.test.ts (3 tests) 4ms
 ✓ src/ui/commands/bugCommand.test.ts (2 tests) 6ms
 ✓ src/utils/userStartupWarnings.test.ts (5 tests) 36ms
 ✓ src/ui/commands/clearCommand.test.ts (2 tests) 5ms
 ✓ src/ui/components/views/ExtensionsList.test.tsx (9 tests) 43ms
 ✓ src/ui/commands/docsCommand.test.ts (3 tests) 8ms
 ✓ src/ui/components/ConsentPrompt.test.tsx (5 tests) 39ms
 ✓ src/utils/readStdin.test.ts (4 tests) 7ms
 ✓ src/ui/utils/displayUtils.test.ts (8 tests) 4ms
 ✓ src/commands/extensions/new.test.ts (4 tests) 29ms
 ✓ src/ui/commands/terminalSetupCommand.test.ts (5 tests) 3ms
 ✓ src/config/auth.test.ts (8 tests) 11ms
 ✓ src/ui/components/ProQuotaDialog.test.tsx (3 tests) 25ms
 ✓ src/ui/components/ThemeDialog.test.tsx (2 tests) 388ms
 ✓ src/ui/commands/statsCommand.test.ts (3 tests) 6ms
 ✓ src/ui/components/IdeTrustChangeDialog.test.tsx (6 tests) 134ms
 ✓ src/ui/components/ContextSummaryDisplay.test.tsx (4 tests) 26ms
 ✓ src/ui/hooks/useMemoryMonitor.test.ts (3 tests) 19ms
 ✓ src/ui/utils/markdownUtilities.test.ts (7 tests) 3ms
 ✓ src/utils/startupWarnings.test.ts (4 tests) 4ms
 ✓ src/ui/components/QueuedMessageDisplay.test.tsx (5 tests) 18ms
 ✓ src/ui/utils/formatters.test.ts (14 tests) 2ms
 ✓ src/test-utils/mockCommandContext.test.ts (3 tests) 4ms
 ✓ src/config/keyBindings.test.ts (3 tests) 9ms
 ✓ src/ui/components/shared/DescriptiveRadioButtonSelect.test.tsx (2 tests) 28ms
 ✓ src/utils/windowTitle.test.ts (7 tests) 3ms
 ✓ src/ui/utils/clipboardUtils.test.ts (6 tests) 168ms
 ✓ src/ui/components/Help.test.tsx (2 tests) 67ms
 ✓ src/ui/commands/helpCommand.test.ts (2 tests) 4ms
 ✓ src/ui/components/views/ToolsList.test.tsx (3 tests) 30ms
 ✓ src/commands/mcp.test.ts (3 tests) 6ms
 ✓ src/ui/commands/quitCommand.test.ts (1 test) 4ms
 ✓ src/ui/components/SessionSummaryDisplay.test.tsx (1 test) 51ms
 ✓ src/utils/cleanup.test.ts (4 tests) 3ms
 ✓ src/ui/components/Header.test.tsx (4 tests) 60ms
 ✓ src/ui/commands/privacyCommand.test.ts (2 tests) 3ms
 ✓ src/ui/hooks/useModelCommand.test.ts (3 tests) 12ms
 ✓ src/ui/components/ShellConfirmationDialog.test.tsx (4 tests) 65ms
 ✓ src/ui/commands/themeCommand.test.ts (2 tests) 3ms
 ✓ src/ui/components/views/ChatList.test.tsx (3 tests) 34ms
 ✓ src/ui/commands/permissionsCommand.test.ts (3 tests) 5ms
 ✓ src/ui/commands/settingsCommand.test.ts (2 tests) 4ms
 ✓ src/ui/commands/modelCommand.test.ts (2 tests) 5ms
 ✓ src/services/prompt-processors/argumentProcessor.test.ts (2 tests) 6ms
 ✓ src/ui/commands/corgiCommand.test.ts (2 tests) 3ms
 ✓ src/ui/commands/authCommand.test.ts (2 tests) 4ms
 ✓ src/ui/commands/editorCommand.test.ts (2 tests) 4ms
 ✓ src/config/extensions/variables.test.ts (1 test) 2ms
 ✓ src/ui/components/LoopDetectionConfirmation.test.tsx (2 tests) 32ms
 ✓ src/utils/processUtils.test.ts (1 test) 2ms
 ✓ src/commands/extensions/uninstall.test.ts (1 test) 6ms

 Test Files  174 passed (174)
      Tests  2665 passed | 8 skipped (2673)
   Start at  20:00:06
   Duration  37.19s (transform 4.27s, setup 1.46s, collect 128.58s, tests 24.82s, environment 44.95s, prepare 10.24s)

JUNIT report written to /Users/owenchristie/gem-cli/packages/cli/junit.xml
 % Coverage report from v8

> @google/[email protected] test:ci
> vitest run


 RUN  v3.2.4 /Users/owenchristie/gem-cli/packages/core
      Coverage enabled with v8

 ✓ src/tools/ripGrep.test.ts (45 tests) 318ms
 ✓ src/code_assist/oauth2.test.ts (24 tests) 75ms
 ✓ src/telemetry/loggers.test.ts (30 tests) 35ms
 ✓ src/core/client.test.ts (66 tests) 147ms
 ✓ src/core/coreToolScheduler.test.ts (30 tests) 269ms
 ✓ src/mcp/oauth-provider.test.ts (21 tests) 164ms
 ✓ src/config/config.test.ts (68 tests) 40ms
 ✓ src/utils/fileUtils.test.ts (65 tests) 109ms
 ✓ src/tools/edit.test.ts (54 tests) 136ms
 ✓ src/utils/memoryImportProcessor.test.ts (25 tests) 25ms
 ✓ src/services/shellExecutionService.test.ts (40 tests) 339ms
 ✓ src/tools/mcp-tool.test.ts (42 tests) 83ms
 ✓ src/tools/write-file.test.ts (30 tests) 143ms
 ✓ src/telemetry/clearcut-logger/clearcut-logger.test.ts (35 tests) 95ms
 ✓ src/utils/editCorrector.test.ts (40 tests) 17ms
 ✓ src/core/subagent.test.ts (19 tests) 28ms
 ✓ src/tools/read-many-files.test.ts (31 tests) 272ms
 ✓ src/core/logger.test.ts (38 tests) 116ms
 ✓ src/ide/ide-client.test.ts (23 tests) 28ms
 ✓ src/telemetry/metrics.test.ts (55 tests) 2566ms
 ✓ src/services/loopDetectionService.test.ts (37 tests) 145ms
 ✓ src/agents/executor.test.ts (15 tests) 19ms
 ✓ src/core/turn.test.ts (19 tests) 11ms
 ✓ src/policy/policy-engine.test.ts (28 tests) 7ms
 ✓ src/tools/smart-edit.test.ts (24 tests) 79ms
 ✓ src/telemetry/memory-monitor.test.ts (31 tests) 22ms
 ✓ src/utils/filesearch/fileSearch.test.ts (27 tests) 139ms
 ✓ src/utils/editor.test.ts (113 tests) 26ms
 ✓ src/telemetry/uiTelemetry.test.ts (19 tests) 7ms
 ✓ src/core/prompts.test.ts (40 tests) 17ms
 ✓ src/utils/memoryDiscovery.test.ts (16 tests) 106ms
 ✓ src/tools/mcp-client.test.ts (30 tests) 132ms
 ✓ src/utils/systemEncoding.test.ts (38 tests) 13ms
 ✓ src/tools/read-file.test.ts (28 tests) 126ms
 ✓ src/tools/memoryTool.test.ts (19 tests) 32ms
(node:96178) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 11 abort listeners added to [AbortSignal]. MaxListeners is 10. Use events.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
(node:96203) MaxListenersExceededWarning: Possible EventTarget memory leak detected. 11 abort listeners added to [AbortSignal]. MaxListeners is 10. Use events.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
 ✓ src/core/baseLlmClient.test.ts (21 tests) 10ms
 ✓ src/utils/workspaceContext.test.ts (34 tests) 43ms
 ✓ src/tools/grep.test.ts (24 tests) 188ms
 ✓ src/mcp/oauth-token-storage.test.ts (28 tests) 13ms
 ✓ src/utils/filesearch/crawler.test.ts (18 tests) 76ms
 ✓ src/code_assist/converter.test.ts (22 tests) 4ms
 ✓ src/utils/pathReader.test.ts (16 tests) 46ms
 ✓ src/utils/shell-utils.test.ts (50 tests) 7ms
 ✓ src/ide/ideContext.test.ts (23 tests) 7ms
 ✓ src/telemetry/gcp-exporters.test.ts (18 tests) 36ms
 ✓ src/tools/ls.test.ts (22 tests) 107ms
 ✓ src/tools/shell.test.ts (21 tests) 62ms
 ✓ src/tools/tool-registry.test.ts (9 tests) 29ms
 ✓ src/tools/glob.test.ts (38 tests) 1899ms
 ✓ src/utils/userAccountManager.test.ts (23 tests) 34ms
 ✓ src/mcp/token-storage/keychain-token-storage.test.ts (24 tests) 73ms
 ✓ src/utils/ignorePatterns.test.ts (28 tests) 8ms
 ✓ src/utils/retry.test.ts (18 tests) 32ms
 ✓ src/utils/getFolderStructure.test.ts (15 tests) 107ms
 ✓ src/utils/partUtils.test.ts (37 tests) 5ms
 ✓ src/core/geminiChat.test.ts (29 tests) 5552ms
   ✓ GeminiChat > sendMessageStream > should fail if the stream ends with an empty part and has no finishReason  507ms
   ✓ GeminiChat > sendMessageStream > should throw an error when a tool call is followed by an empty stream response  502ms
   ✓ GeminiChat > sendMessageStream > should throw InvalidStreamError when no tool call and no finish reason  501ms
   ✓ GeminiChat > sendMessageStream > should throw InvalidStreamError when no tool call and empty response text  501ms
   ✓ GeminiChat > sendMessageStream with retries > should yield a RETRY event when an invalid stream is encountered  503ms
   ✓ GeminiChat > sendMessageStream with retries > should retry on invalid content, succeed, and report metrics  504ms
   ✓ GeminiChat > sendMessageStream with retries > should set temperature to 1 on retry  503ms
   ✓ GeminiChat > sendMessageStream with retries > should fail after all retries on persistent invalid content and report metrics  502ms
   ✓ GeminiChat > should correctly retry and append to an existing history mid-conversation  503ms
   ✓ GeminiChat > should retry if the model returns a completely empty stream (no chunks)  502ms
   ✓ GeminiChat > should discard valid partial content from a failed attempt upon retry  503ms
 ✓ src/tools/modifiable-tool.test.ts (11 tests) 39ms
 ✓ src/mcp/oauth-utils.test.ts (21 tests) 6ms
 ✓ src/utils/generateContentResponseUtilities.test.ts (29 tests) 4ms
 ✓ src/utils/paths.test.ts (55 tests) 6ms
 ✓ src/utils/googleErrors.test.ts (9 tests) 5ms
 ✓ src/output/json-formatter.test.ts (15 tests) 6ms
 ✓ src/utils/llm-edit-fixer.test.ts (7 tests) 6ms
 ✓ src/services/gitService.test.ts (14 tests) 110ms
 ✓ src/services/chatRecordingService.test.ts (10 tests) 8ms
 ✓ src/mcp/token-storage/file-token-storage.test.ts (16 tests) 536ms
 ✓ src/telemetry/rate-limiter.test.ts (24 tests) 8ms
 ✓ src/mcp/token-storage/hybrid-token-storage.test.ts (11 tests) 9ms
 ✓ src/core/nonInteractiveToolExecutor.test.ts (8 tests) 8ms
 ✓ src/agents/invocation.test.ts (11 tests) 9ms
 ✓ src/tools/message-bus-integration.test.ts (9 tests) 42ms
 ✓ src/routing/strategies/classifierStrategy.test.ts (8 tests) 8ms
 ✓ src/utils/gitIgnoreParser.test.ts (20 tests) 67ms
 ✓ src/telemetry/sdk.test.ts (9 tests) 15ms
 ✓ src/utils/secure-browser-launcher.test.ts (14 tests) 11ms
 ✓ src/utils/bfsFileSearch.test.ts (11 tests) 89ms
 ✓ src/confirmation-bus/message-bus.test.ts (10 tests) 7ms
 ✓ src/code_assist/oauth-credential-storage.test.ts (12 tests) 15ms
 ✓ src/utils/errorReporting.test.ts (6 tests) 33ms
 ✓ src/utils/nextSpeakerChecker.test.ts (10 tests) 15ms
 ✓ src/telemetry/high-water-mark-tracker.test.ts (18 tests) 5ms
 ✓ src/services/fileDiscoveryService.test.ts (13 tests) 40ms
 ✓ src/utils/environmentContext.test.ts (8 tests) 22ms
 ✓ src/utils/googleQuotaErrors.test.ts (10 tests) 4ms
 ✓ src/ide/process-utils.test.ts (7 tests) 11ms
 ✓ src/tools/web-search.test.ts (9 tests) 62ms
 ✓ src/utils/terminalSerializer.test.ts (16 tests) 62ms
 ✓ src/tools/tools.test.ts (11 tests) 7ms
 ✓ src/tools/web-fetch.test.ts (9 tests) 55ms
 ✓ src/code_assist/server.test.ts (8 tests) 20ms
 ✓ src/routing/strategies/compositeStrategy.test.ts (6 tests) 6ms
 ✓ src/mcp/token-storage/base-token-storage.test.ts (12 tests) 4ms
 ✓ src/utils/summarizer.test.ts (8 tests) 32ms
 ✓ src/fallback/handler.test.ts (10 tests) 6ms
 ✓ src/code_assist/setup.test.ts (7 tests) 4ms
 ✓ src/ide/ide-installer.test.ts (11 tests) 8ms
 ✓ src/tools/diffOptions.test.ts (9 tests) 4ms
 ✓ src/mcp/sa-impersonation-provider.test.ts (8 tests) 12ms
 ✓ src/utils/filesearch/ignore.test.ts (12 tests) 26ms
 ✓ src/agents/registry.test.ts (12 tests) 7ms
 ✓ src/agents/schema-utils.test.ts (6 tests) 3ms
 ✓ src/telemetry/activity-detector.test.ts (13 tests) 6ms
 ✓ src/core/contentGenerator.test.ts (8 tests) 6ms
 ✓ src/agents/utils.test.ts (12 tests) 3ms
 ✓ src/ide/detect-ide.test.ts (14 tests) 3ms
 ✓ src/telemetry/config.test.ts (11 tests) 5ms
 ✓ src/tools/write-todos.test.ts (9 tests) 22ms
 ✓ src/utils/filesearch/crawlCache.test.ts (9 tests) 7ms
 ✓ src/utils/pathCorrector.test.ts (4 tests) 20ms
 ✓ src/utils/errorParsing.test.ts (10 tests) 7ms
 ✓ src/agents/subagent-tool-wrapper.test.ts (7 tests) 34ms
 ✓ src/mcp/google-auth-provider.test.ts (8 tests) 9ms
 ✓ src/utils/installationManager.test.ts (4 tests) 5ms
 ✓ src/routing/modelRouterService.test.ts (5 tests) 15ms
 ✓ src/utils/textUtils.test.ts (12 tests) 2ms
 ✓ src/config/models.test.ts (9 tests) 3ms
 ✓ src/utils/schemaValidator.test.ts (7 tests) 35ms
 ✓ src/routing/strategies/fallbackStrategy.test.ts (4 tests) 2ms
 ✓ src/utils/thoughtUtils.test.ts (11 tests) 8ms
 ✓ src/utils/safeJsonStringify.test.ts (8 tests) 2ms
 ✓ src/utils/geminiIgnoreParser.test.ts (2 tests) 12ms
 ✓ src/utils/flashFallback.test.ts (4 tests) 9ms
 ✓ src/config/storage.test.ts (6 tests) 7ms
 ✓ src/routing/strategies/overrideStrategy.test.ts (3 tests) 4ms
 ✓ src/utils/filesearch/result-cache.test.ts (3 tests) 3ms
 ✓ src/services/fileSystemService.test.ts (3 tests) 7ms
 ✓ src/telemetry/telemetry-utils.test.ts (6 tests) 2ms
 ✓ src/routing/strategies/defaultStrategy.test.ts (1 test) 2ms
 ✓ src/utils/formatters.test.ts (4 tests) 2ms
 ✓ src/index.test.ts (1 test) 2ms
 ✓ src/config/flashFallback.test.ts (6 tests) 7ms
 ✓ src/utils/tool-utils.test.ts (8 tests) 4ms
 ✓ src/tools/mcp-client-manager.test.ts (2 tests) 2ms
 ✓ src/telemetry/telemetry.test.ts (2 tests) 7ms

 Test Files  134 passed (134)
      Tests  2559 passed (2559)
   Start at  20:00:44
   Duration  14.68s (transform 2.86s, setup 445ms, collect 45.82s, tests 15.95s, environment 17ms, prepare 6.99s)

JUNIT report written to /Users/owenchristie/gem-cli/packages/core/junit.xml
 % Coverage report from v8

> [email protected] test:ci
> vitest run --coverage


 RUN  v3.2.4 /Users/owenchristie/gem-cli/packages/vscode-ide-companion
      Coverage enabled with v8

 ✓ src/open-files-manager.test.ts (17 tests) 13ms
 ✓ src/extension.test.ts (11 tests) 40ms
 ✓ src/ide-server.test.ts (13 tests | 1 skipped) 58ms

 Test Files  3 passed (3)
      Tests  40 passed | 1 skipped (41)
   Start at  20:00:59
   Duration  420ms (transform 169ms, setup 0ms, collect 397ms, tests 111ms, environment 0ms, prepare 126ms)

 % Coverage report from v8
--------------------------------|---------|----------|---------|---------|------------------------------------------------------------------------------------------------------------------
File                            | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
--------------------------------|---------|----------|---------|---------|------------------------------------------------------------------------------------------------------------------
All files                       |      48 |    76.63 |    55.1 |      48 |
 vscode-ide-companion           |       0 |        0 |       0 |       0 |
  esbuild.js                    |       0 |        0 |       0 |       0 | 1-69
 vscode-ide-companion/scripts   |       0 |        0 |       0 |       0 |
  check-vscode-release.js       |       0 |        0 |       0 |       0 | 1-99
  generate-notices.js           |       0 |        0 |       0 |       0 | 1-160
 vscode-ide-companion/src       |   61.57 |     79.2 |   57.77 |   61.57 |
  diff-manager.ts               |   23.38 |       80 |      25 |   23.38 | 21-22,25-26,29-31,34-35,38-39,65,72-75,81-130,136-163,169-188,194-214,219-228,237-238,241-266
  extension.ts                  |   67.19 |       80 |      50 |   67.19 | 101-103,122-124,133-137,142-146,170,173,176-201,204-208,213-227
  ide-server.ts                 |   66.19 |    74.46 |   68.75 |   66.19 | 92-94,97-111,193,198-201,212,214-251,268-284,288-320,330-331,367,374-375,377-382,411-413,429,436,460-463,472-489
  open-files-manager.ts         |   94.36 |    85.29 |     100 |   94.36 | 67-68,85,87-88,146-147,154
 vscode-ide-companion/src/utils |   88.23 |    66.66 |     100 |   88.23 |
  logger.ts                     |   88.23 |    66.66 |     100 |   88.23 | 21-22
--------------------------------|---------|----------|---------|---------|------------------------------------------------------------------------------------------------------------------

> @google/[email protected] test:scripts
> vitest run --config ./scripts/tests/vitest.config.ts


 RUN  v3.2.4 /Users/owenchristie/gem-cli

stderr | scripts/tests/get-release-version.test.js > getVersion > Advanced Scenarios > should ignore a deprecated version and use the next highest
Ignoring deprecated version: 0.9.0-nightly.20250917.deprecated

stderr | scripts/tests/get-release-version.test.js > getVersion > Advanced Scenarios > should auto-increment patch version if the calculated one already exists
Git tag v0.7.0 already exists.
Version 0.7.0 exists, incrementing.

stderr | scripts/tests/get-release-version.test.js > getVersion > Advanced Scenarios > should auto-increment preview number if the calculated one already exists
Version 0.8.0-preview.0 already exists on NPM.
Version 0.8.0-preview.0 exists, incrementing.

 ✓ scripts/tests/get-release-version.test.js (8 tests) 5ms
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
Warning: No valid GitHub run ID found, workflow links may not work correctly
 ✓ scripts/tests/patch-create-comment.test.js (15 tests) 546ms

 Test Files  2 passed (2)
      Tests  23 passed (23)
   Start at  20:01:00
   Duration  700ms (transform 47ms, setup 23ms, collect 64ms, tests 551ms, environment 0ms, prepare 70ms)

system report:

  Model Name:	iMac
  Model Identifier:	Mac16,2
  Chip:	Apple M4
  Total Number of Cores:	8 (4 performance and 4 efficiency)
  Memory:	16 GB
  System Firmware Version:	13822.1.2
  OS Loader Version:	13822.1.2

Dive Deeper

Reviewer Test Plan

Testing Matrix

🍏 🪟 🐧
npm run x
npx
Docker
Podman - -
Seatbelt - -

Linked issues / bugs

Fixes #11026