From deb99a3b2164af1f2da083c214dc31c9cf235322 Mon Sep 17 00:00:00 2001 From: hokupod Date: Tue, 23 Sep 2025 15:29:29 +0900 Subject: [PATCH] feat: add OpenAI and Qwen OAuth auth support to Zed ACP integration (#678) - Add USE_OPENAI and QWEN_OAUTH authentication methods to GeminiAgent's authMethods array - Enables Zed editor integration to support all available authentication options - Add test case for QWEN_OAUTH authentication configuration - Maintains backward compatibility with existing Google authentication methods This allows Zed users to authenticate using: - OpenAI API key (requires OPENAI_API_KEY environment variable) - Qwen OAuth (2000 daily requests with OAuth2 flow) - Existing Google authentication methods (unchanged) --- packages/cli/src/validateNonInterActiveAuth.test.ts | 12 ++++++++++++ packages/cli/src/zed-integration/zedIntegration.ts | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/packages/cli/src/validateNonInterActiveAuth.test.ts b/packages/cli/src/validateNonInterActiveAuth.test.ts index 3ae53426..67f4b379 100644 --- a/packages/cli/src/validateNonInterActiveAuth.test.ts +++ b/packages/cli/src/validateNonInterActiveAuth.test.ts @@ -126,6 +126,18 @@ describe('validateNonInterActiveAuth', () => { expect(refreshAuthMock).toHaveBeenCalledWith(AuthType.USE_OPENAI); }); + it('uses configured QWEN_OAUTH if provided', async () => { + const nonInteractiveConfig: NonInteractiveConfig = { + refreshAuth: refreshAuthMock, + }; + await validateNonInteractiveAuth( + AuthType.QWEN_OAUTH, + undefined, + nonInteractiveConfig, + ); + expect(refreshAuthMock).toHaveBeenCalledWith(AuthType.QWEN_OAUTH); + }); + it('uses USE_VERTEX_AI if GOOGLE_GENAI_USE_VERTEXAI is true (with GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION)', async () => { process.env['GOOGLE_GENAI_USE_VERTEXAI'] = 'true'; process.env['GOOGLE_CLOUD_PROJECT'] = 'test-project'; diff --git a/packages/cli/src/zed-integration/zedIntegration.ts b/packages/cli/src/zed-integration/zedIntegration.ts index 1668b53d..7fdadc5d 100644 --- a/packages/cli/src/zed-integration/zedIntegration.ts +++ b/packages/cli/src/zed-integration/zedIntegration.ts @@ -97,6 +97,18 @@ class GeminiAgent { name: 'Vertex AI', description: null, }, + { + id: AuthType.USE_OPENAI, + name: 'Use OpenAI API key', + description: + 'Requires setting the `OPENAI_API_KEY` environment variable', + }, + { + id: AuthType.QWEN_OAUTH, + name: 'Qwen OAuth', + description: + 'OAuth authentication for Qwen models with 2000 daily requests', + }, ]; return {