@vybestack/llxprt-code-core 0.1.18-nightly.250808.f9b79d74 → 0.1.18-nightly.250811.b0db22c6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/src/auth/auth-integration.spec.d.ts +6 -0
- package/dist/src/auth/auth-integration.spec.js +384 -0
- package/dist/src/auth/auth-integration.spec.js.map +1 -0
- package/dist/src/auth/precedence.d.ts +55 -0
- package/dist/src/auth/precedence.js +211 -0
- package/dist/src/auth/precedence.js.map +1 -0
- package/dist/src/auth/precedence.test.d.ts +6 -0
- package/dist/src/auth/precedence.test.js +374 -0
- package/dist/src/auth/precedence.test.js.map +1 -0
- package/dist/src/auth/qwen-device-flow.d.ts +45 -0
- package/dist/src/auth/qwen-device-flow.js +179 -0
- package/dist/src/auth/qwen-device-flow.js.map +1 -0
- package/dist/src/auth/qwen-device-flow.spec.d.ts +6 -0
- package/dist/src/auth/qwen-device-flow.spec.js +793 -0
- package/dist/src/auth/qwen-device-flow.spec.js.map +1 -0
- package/dist/src/auth/token-store.d.ts +66 -0
- package/dist/src/auth/token-store.js +147 -0
- package/dist/src/auth/token-store.js.map +1 -0
- package/dist/src/auth/token-store.spec.d.ts +6 -0
- package/dist/src/auth/token-store.spec.js +405 -0
- package/dist/src/auth/token-store.spec.js.map +1 -0
- package/dist/src/auth/types.d.ts +130 -0
- package/dist/src/auth/types.js +60 -0
- package/dist/src/auth/types.js.map +1 -0
- package/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +1 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +48 -1
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +2 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/server.test.js +4 -1
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/config/config.d.ts +71 -2
- package/dist/src/config/config.ephemeral.test.d.ts +6 -0
- package/dist/src/config/config.ephemeral.test.js +152 -0
- package/dist/src/config/config.ephemeral.test.js.map +1 -0
- package/dist/src/config/config.js +117 -2
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +8 -0
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/endpoints.d.ts +60 -0
- package/dist/src/config/endpoints.js +126 -0
- package/dist/src/config/endpoints.js.map +1 -0
- package/dist/src/config/endpoints.test.d.ts +6 -0
- package/dist/src/config/endpoints.test.js +196 -0
- package/dist/src/config/endpoints.test.js.map +1 -0
- package/dist/src/core/client.js +16 -16
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +13 -7
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +3 -1
- package/dist/src/core/contentGenerator.js +2 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/logger.d.ts +1 -0
- package/dist/src/core/logger.js +18 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +29 -0
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +24 -0
- package/dist/src/core/loggingContentGenerator.js +89 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +17 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/subagent.js +12 -10
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +8 -17
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +2 -2
- package/dist/src/ide/ide-client.js +56 -18
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/integration-tests/oauth-integration.spec.d.ts +6 -0
- package/dist/src/integration-tests/oauth-integration.spec.js +518 -0
- package/dist/src/integration-tests/oauth-integration.spec.js.map +1 -0
- package/dist/src/integration-tests/oauth-simple-test.spec.d.ts +1 -0
- package/dist/src/integration-tests/oauth-simple-test.spec.js +88 -0
- package/dist/src/integration-tests/oauth-simple-test.spec.js.map +1 -0
- package/dist/src/providers/BaseProvider.d.ts +98 -0
- package/dist/src/providers/BaseProvider.js +180 -0
- package/dist/src/providers/BaseProvider.js.map +1 -0
- package/dist/src/providers/BaseProvider.test.d.ts +6 -0
- package/dist/src/providers/BaseProvider.test.js +472 -0
- package/dist/src/providers/BaseProvider.test.js.map +1 -0
- package/dist/src/providers/IProviderManager.d.ts +5 -0
- package/dist/src/providers/LoggingProviderWrapper.d.ts +53 -0
- package/dist/src/providers/LoggingProviderWrapper.js +347 -0
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -0
- package/dist/src/providers/ProviderManager.d.ts +20 -0
- package/dist/src/providers/ProviderManager.js +214 -1
- package/dist/src/providers/ProviderManager.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +12 -7
- package/dist/src/providers/gemini/GeminiProvider.js +130 -147
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/integration/multi-provider.integration.test.js +18 -2
- package/dist/src/providers/integration/multi-provider.integration.test.js.map +1 -1
- package/dist/src/providers/logging/ProviderContentExtractor.d.ts +27 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js +198 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js.map +1 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.d.ts +43 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js +98 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js.map +1 -0
- package/dist/src/providers/openai/OpenAIProvider.d.ts +21 -6
- package/dist/src/providers/openai/OpenAIProvider.js +173 -27
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.test.js +3 -2
- package/dist/src/providers/openai/OpenAIProvider.test.js.map +1 -1
- package/dist/src/providers/openai/openai-oauth.spec.d.ts +16 -0
- package/dist/src/providers/openai/openai-oauth.spec.js +544 -0
- package/dist/src/providers/openai/openai-oauth.spec.js.map +1 -0
- package/dist/src/providers/types.d.ts +47 -0
- package/dist/src/services/git-stats-service.d.ts +32 -0
- package/dist/src/services/git-stats-service.js +22 -0
- package/dist/src/services/git-stats-service.js.map +1 -0
- package/dist/src/services/loopDetectionService.js +10 -6
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +139 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +44 -8
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/storage/ConversationFileWriter.d.ts +16 -0
- package/dist/src/storage/ConversationFileWriter.js +69 -0
- package/dist/src/storage/ConversationFileWriter.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +8 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +56 -3
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +6 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +187 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +11 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +5 -0
- package/dist/src/telemetry/constants.js +5 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +5 -1
- package/dist/src/telemetry/loggers.js +87 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +2 -1
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +2 -1
- package/dist/src/telemetry/metrics.js +7 -1
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +50 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +56 -1
- package/dist/src/telemetry/types.js +123 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -1
- package/dist/src/telemetry/uiTelemetry.js +1 -1
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +2 -1
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/tools/diffOptions.d.ts +2 -0
- package/dist/src/tools/diffOptions.js +28 -0
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.d.ts +6 -0
- package/dist/src/tools/diffOptions.test.js +119 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -0
- package/dist/src/tools/edit.d.ts +8 -32
- package/dist/src/tools/edit.js +153 -136
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +77 -51
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +3 -10
- package/dist/src/tools/glob.js +97 -99
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +37 -26
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +3 -35
- package/dist/src/tools/grep.js +117 -88
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +36 -22
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +4 -3
- package/dist/src/tools/mcp-client.js +23 -6
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +44 -2
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/read-file.js +37 -9
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +8 -2
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/shell.test.js +17 -0
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/todo-pause.d.ts +22 -0
- package/dist/src/tools/todo-pause.js +93 -0
- package/dist/src/tools/todo-pause.js.map +1 -0
- package/dist/src/tools/todo-pause.spec.d.ts +6 -0
- package/dist/src/tools/todo-pause.spec.js +287 -0
- package/dist/src/tools/todo-pause.spec.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +4 -0
- package/dist/src/tools/tool-error.js +4 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.js +3 -3
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +2 -2
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +18 -0
- package/dist/src/tools/tools.js +15 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-search.test.js +1 -0
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +4 -0
- package/dist/src/tools/write-file.js +90 -16
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +5 -4
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/types/modelParams.d.ts +2 -0
- package/dist/src/utils/environmentContext.js +1 -1
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +6 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +7 -0
- package/dist/src/utils/fileUtils.js +9 -0
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +27 -19
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderManager.js","sourceRoot":"","sources":["../../../src/providers/ProviderManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProviderManager.js","sourceRoot":"","sources":["../../../src/providers/ProviderManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* Copyright 2025 Vybestack LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { IProvider } from '../IProvider.js';
|
|
7
6
|
import { IModel } from '../IModel.js';
|
|
8
7
|
import { IMessage } from '../IMessage.js';
|
|
9
8
|
import { ITool } from '../ITool.js';
|
|
10
9
|
import { Config, AuthType } from '@vybestack/llxprt-code-core';
|
|
10
|
+
import { BaseProvider } from '../BaseProvider.js';
|
|
11
|
+
import { OAuthManager } from '../../auth/precedence.js';
|
|
11
12
|
/**
|
|
12
13
|
* Represents the default Gemini provider.
|
|
13
14
|
* This provider is implicitly active when no other provider is explicitly set.
|
|
@@ -17,23 +18,27 @@ import { Config, AuthType } from '@vybestack/llxprt-code-core';
|
|
|
17
18
|
* system to use the native Gemini client with the appropriate authentication.
|
|
18
19
|
*/
|
|
19
20
|
type GeminiAuthMode = 'oauth' | 'gemini-api-key' | 'vertex-ai' | 'none';
|
|
20
|
-
export declare class GeminiProvider
|
|
21
|
-
readonly name: string;
|
|
22
|
-
private apiKey?;
|
|
21
|
+
export declare class GeminiProvider extends BaseProvider {
|
|
23
22
|
private authMode;
|
|
24
|
-
private
|
|
23
|
+
private geminiConfig?;
|
|
25
24
|
private currentModel;
|
|
26
25
|
private modelExplicitlySet;
|
|
27
26
|
private authDetermined;
|
|
28
27
|
private baseURL?;
|
|
29
28
|
private modelParams?;
|
|
30
29
|
private toolSchemas;
|
|
31
|
-
|
|
30
|
+
private geminiOAuthManager?;
|
|
31
|
+
constructor(apiKey?: string, baseURL?: string, config?: Config, oauthManager?: OAuthManager);
|
|
32
32
|
/**
|
|
33
33
|
* Determines the best available authentication method based on environment variables
|
|
34
|
-
* and existing configuration.
|
|
34
|
+
* and existing configuration. Now uses lazy evaluation with proper precedence chain.
|
|
35
35
|
*/
|
|
36
36
|
private determineBestAuth;
|
|
37
|
+
/**
|
|
38
|
+
* Implementation of BaseProvider abstract method
|
|
39
|
+
* Determines if this provider supports OAuth authentication
|
|
40
|
+
*/
|
|
41
|
+
protected supportsOAuth(): boolean;
|
|
37
42
|
/**
|
|
38
43
|
* Checks if Vertex AI credentials are available
|
|
39
44
|
*/
|
|
@@ -4,65 +4,98 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { AuthType, ContentGeneratorRole, AuthenticationRequiredError, getCoreSystemPromptAsync, createCodeAssistContentGenerator, } from '@vybestack/llxprt-code-core';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
apiKey;
|
|
7
|
+
import { BaseProvider } from '../BaseProvider.js';
|
|
8
|
+
export class GeminiProvider extends BaseProvider {
|
|
10
9
|
authMode = 'none';
|
|
11
|
-
|
|
10
|
+
geminiConfig;
|
|
12
11
|
currentModel = 'gemini-2.5-pro';
|
|
13
12
|
modelExplicitlySet = false;
|
|
14
13
|
authDetermined = false;
|
|
15
14
|
baseURL;
|
|
16
15
|
modelParams;
|
|
17
16
|
toolSchemas;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
|
|
17
|
+
geminiOAuthManager;
|
|
18
|
+
constructor(apiKey, baseURL, config, oauthManager) {
|
|
19
|
+
// Initialize base provider with auth configuration
|
|
20
|
+
// Check if OAuth is enabled for Gemini
|
|
21
|
+
let oauthEnabled = false;
|
|
22
|
+
if (oauthManager) {
|
|
23
|
+
// Cast to specific interface with isOAuthEnabled method
|
|
24
|
+
const manager = oauthManager;
|
|
25
|
+
if (manager.isOAuthEnabled &&
|
|
26
|
+
typeof manager.isOAuthEnabled === 'function') {
|
|
27
|
+
oauthEnabled = manager.isOAuthEnabled('gemini');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const baseConfig = {
|
|
31
|
+
name: 'gemini',
|
|
32
|
+
apiKey,
|
|
33
|
+
baseURL,
|
|
34
|
+
cliKey: apiKey, // CLI --key argument
|
|
35
|
+
envKeyNames: ['GEMINI_API_KEY', 'GOOGLE_API_KEY'],
|
|
36
|
+
isOAuthEnabled: oauthEnabled, // Check if OAuth is enabled
|
|
37
|
+
oauthProvider: 'gemini',
|
|
38
|
+
oauthManager, // Keep the manager for checking enablement
|
|
39
|
+
};
|
|
40
|
+
super(baseConfig);
|
|
41
|
+
// Store Gemini-specific configuration
|
|
42
|
+
this.geminiConfig = config;
|
|
43
|
+
this.baseURL = baseURL;
|
|
44
|
+
this.geminiOAuthManager = oauthManager;
|
|
23
45
|
// Do not determine auth mode on instantiation.
|
|
24
46
|
// This will be done lazily when a chat completion is requested.
|
|
25
47
|
}
|
|
26
48
|
/**
|
|
27
49
|
* Determines the best available authentication method based on environment variables
|
|
28
|
-
* and existing configuration.
|
|
50
|
+
* and existing configuration. Now uses lazy evaluation with proper precedence chain.
|
|
29
51
|
*/
|
|
30
|
-
determineBestAuth() {
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
this.authDetermined = true;
|
|
37
|
-
// Check if user explicitly selected USE_NONE via the content generator config
|
|
38
|
-
const authType = this.config?.getContentGeneratorConfig()?.authType;
|
|
39
|
-
if (authType === AuthType.USE_NONE) {
|
|
40
|
-
this.authMode = 'none';
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// If authType is USE_PROVIDER and no credentials exist, fall back to OAuth
|
|
44
|
-
if (authType === AuthType.USE_PROVIDER) {
|
|
45
|
-
if (!this.hasVertexAICredentials() && !this.hasGeminiAPIKey()) {
|
|
52
|
+
async determineBestAuth() {
|
|
53
|
+
// Use the base provider's auth precedence resolution
|
|
54
|
+
try {
|
|
55
|
+
const token = await this.getAuthToken();
|
|
56
|
+
// Check for special OAuth signal
|
|
57
|
+
if (token === 'USE_LOGIN_WITH_GOOGLE') {
|
|
46
58
|
this.authMode = 'oauth';
|
|
47
|
-
|
|
59
|
+
this.authDetermined = true;
|
|
60
|
+
return token; // Return the magic token
|
|
48
61
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
// Determine auth mode based on resolved authentication method
|
|
63
|
+
const authMethodName = await this.getAuthMethodName();
|
|
64
|
+
if (authMethodName?.startsWith('oauth-')) {
|
|
65
|
+
this.authMode = 'oauth';
|
|
66
|
+
}
|
|
67
|
+
else if (this.hasVertexAICredentials()) {
|
|
68
|
+
this.authMode = 'vertex-ai';
|
|
69
|
+
this.setupVertexAIAuth();
|
|
70
|
+
}
|
|
71
|
+
else if (this.hasGeminiAPIKey() || authMethodName?.includes('key')) {
|
|
72
|
+
this.authMode = 'gemini-api-key';
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.authMode = 'none';
|
|
76
|
+
}
|
|
77
|
+
this.authDetermined = true;
|
|
78
|
+
return token;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
// Handle case where no auth is available
|
|
82
|
+
const authType = this.geminiConfig?.getContentGeneratorConfig()?.authType;
|
|
83
|
+
if (authType === AuthType.USE_NONE) {
|
|
84
|
+
this.authMode = 'none';
|
|
85
|
+
this.authDetermined = true;
|
|
86
|
+
throw new AuthenticationRequiredError('Authentication is set to USE_NONE but no credentials are available', this.authMode, ['GEMINI_API_KEY', 'GOOGLE_API_KEY']);
|
|
87
|
+
}
|
|
88
|
+
throw error;
|
|
64
89
|
}
|
|
65
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Implementation of BaseProvider abstract method
|
|
93
|
+
* Determines if this provider supports OAuth authentication
|
|
94
|
+
*/
|
|
95
|
+
supportsOAuth() {
|
|
96
|
+
// Gemini always supports Google OAuth
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
66
99
|
/**
|
|
67
100
|
* Checks if Vertex AI credentials are available
|
|
68
101
|
*/
|
|
@@ -75,7 +108,7 @@ export class GeminiProvider {
|
|
|
75
108
|
* Checks if Gemini API key is available
|
|
76
109
|
*/
|
|
77
110
|
hasGeminiAPIKey() {
|
|
78
|
-
return !!
|
|
111
|
+
return !!process.env.GEMINI_API_KEY;
|
|
79
112
|
}
|
|
80
113
|
/**
|
|
81
114
|
* Sets up environment variables for Vertex AI authentication
|
|
@@ -88,17 +121,18 @@ export class GeminiProvider {
|
|
|
88
121
|
* Sets the config instance for reading OAuth credentials
|
|
89
122
|
*/
|
|
90
123
|
setConfig(config) {
|
|
91
|
-
this.
|
|
124
|
+
this.geminiConfig = config;
|
|
92
125
|
// Sync with config model if user hasn't explicitly set a model
|
|
93
126
|
// This ensures consistency between config and provider state
|
|
94
127
|
const configModel = config.getModel();
|
|
95
128
|
if (!this.modelExplicitlySet && configModel) {
|
|
96
129
|
this.currentModel = configModel;
|
|
97
130
|
}
|
|
131
|
+
// Update OAuth configuration based on config
|
|
132
|
+
const authType = config.getContentGeneratorConfig()?.authType;
|
|
133
|
+
this.updateOAuthConfig(authType === AuthType.LOGIN_WITH_GOOGLE, 'gemini', this.geminiOAuthManager);
|
|
98
134
|
// Clear auth cache when config changes to allow re-determination
|
|
99
135
|
this.authDetermined = false;
|
|
100
|
-
// Re-determine auth after config is set
|
|
101
|
-
this.determineBestAuth();
|
|
102
136
|
}
|
|
103
137
|
async getModels() {
|
|
104
138
|
// For OAuth mode, return fixed list of models
|
|
@@ -126,7 +160,7 @@ export class GeminiProvider {
|
|
|
126
160
|
}
|
|
127
161
|
// For API key modes (gemini-api-key or vertex-ai), try to fetch real models
|
|
128
162
|
if (this.authMode === 'gemini-api-key' || this.authMode === 'vertex-ai') {
|
|
129
|
-
const apiKey = this.
|
|
163
|
+
const apiKey = (await this.getAuthToken()) || process.env.GEMINI_API_KEY;
|
|
130
164
|
if (apiKey) {
|
|
131
165
|
try {
|
|
132
166
|
const url = this.baseURL
|
|
@@ -206,39 +240,20 @@ export class GeminiProvider {
|
|
|
206
240
|
console.log('DEBUG: GeminiProvider.generateChatCompletion called with messages:', JSON.stringify(messages, null, 2));
|
|
207
241
|
}
|
|
208
242
|
}
|
|
209
|
-
// Check if we need to re-determine auth
|
|
210
|
-
const oauthValid = await this.isOAuthValid();
|
|
211
|
-
if (!oauthValid) {
|
|
212
|
-
this.authDetermined = false;
|
|
213
|
-
}
|
|
214
243
|
// Lazily determine the best auth method now that it's needed.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
case 'gemini-api-key':
|
|
220
|
-
if (!this.apiKey && !process.env.GEMINI_API_KEY) {
|
|
221
|
-
throw new AuthenticationRequiredError('Gemini API key required but not found. Please set GEMINI_API_KEY environment variable or use /auth to login with Google OAuth.', this.authMode, ['GEMINI_API_KEY']);
|
|
222
|
-
}
|
|
223
|
-
break;
|
|
224
|
-
case 'vertex-ai':
|
|
225
|
-
if (!process.env.GOOGLE_API_KEY) {
|
|
226
|
-
throw new AuthenticationRequiredError('Google API key required for Vertex AI. Please set GOOGLE_API_KEY environment variable or use /auth to login with Google OAuth.', this.authMode, ['GOOGLE_API_KEY', 'GOOGLE_CLOUD_PROJECT', 'GOOGLE_CLOUD_LOCATION']);
|
|
227
|
-
}
|
|
228
|
-
break;
|
|
229
|
-
case 'oauth':
|
|
230
|
-
// OAuth auth will be validated when creating the content generator
|
|
231
|
-
break;
|
|
232
|
-
case 'none':
|
|
233
|
-
// In 'none' mode, check if ANY credentials are available
|
|
234
|
-
if (!this.hasGeminiAPIKey() && !this.hasVertexAICredentials()) {
|
|
235
|
-
throw new AuthenticationRequiredError('No authentication credentials found. Please use /auth to login with Google OAuth, set GEMINI_API_KEY, or configure Vertex AI credentials.', this.authMode, ['GEMINI_API_KEY', 'GOOGLE_API_KEY']);
|
|
236
|
-
}
|
|
237
|
-
break;
|
|
238
|
-
default:
|
|
239
|
-
// For any other auth mode, proceed without validation
|
|
240
|
-
break;
|
|
244
|
+
// This implements lazy OAuth triggering - OAuth is only triggered when making API calls
|
|
245
|
+
let authToken;
|
|
246
|
+
try {
|
|
247
|
+
authToken = await this.determineBestAuth();
|
|
241
248
|
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
if (error instanceof AuthenticationRequiredError) {
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
throw new AuthenticationRequiredError('Failed to resolve authentication for Gemini provider', this.authMode, ['GEMINI_API_KEY', 'GOOGLE_API_KEY']);
|
|
254
|
+
}
|
|
255
|
+
// Authentication has already been resolved by determineBestAuth()
|
|
256
|
+
// No need for additional validation since the auth token is already obtained
|
|
242
257
|
// Import the necessary modules dynamically to avoid circular dependencies
|
|
243
258
|
const { GoogleGenAI } = await import('@google/genai');
|
|
244
259
|
// Create the appropriate client based on auth mode
|
|
@@ -250,11 +265,8 @@ export class GeminiProvider {
|
|
|
250
265
|
};
|
|
251
266
|
switch (this.authMode) {
|
|
252
267
|
case 'gemini-api-key':
|
|
253
|
-
if (!this.apiKey && !process.env.GEMINI_API_KEY) {
|
|
254
|
-
throw new Error('Gemini API key required but not found');
|
|
255
|
-
}
|
|
256
268
|
genAI = new GoogleGenAI({
|
|
257
|
-
apiKey:
|
|
269
|
+
apiKey: authToken,
|
|
258
270
|
httpOptions: this.baseURL
|
|
259
271
|
? {
|
|
260
272
|
...httpOptions,
|
|
@@ -264,11 +276,8 @@ export class GeminiProvider {
|
|
|
264
276
|
});
|
|
265
277
|
break;
|
|
266
278
|
case 'vertex-ai':
|
|
267
|
-
if (!process.env.GOOGLE_API_KEY) {
|
|
268
|
-
throw new Error('Google API key required for Vertex AI');
|
|
269
|
-
}
|
|
270
279
|
genAI = new GoogleGenAI({
|
|
271
|
-
apiKey:
|
|
280
|
+
apiKey: authToken,
|
|
272
281
|
vertexai: true,
|
|
273
282
|
httpOptions: this.baseURL
|
|
274
283
|
? {
|
|
@@ -280,16 +289,16 @@ export class GeminiProvider {
|
|
|
280
289
|
break;
|
|
281
290
|
case 'oauth': {
|
|
282
291
|
// For OAuth, we need to use the code assist server
|
|
283
|
-
const contentGenerator = await createCodeAssistContentGenerator(httpOptions, AuthType.LOGIN_WITH_GOOGLE, this.
|
|
292
|
+
const contentGenerator = await createCodeAssistContentGenerator(httpOptions, AuthType.LOGIN_WITH_GOOGLE, this.geminiConfig, this.baseURL);
|
|
284
293
|
// Convert messages to Gemini request format
|
|
285
294
|
// Use config model in OAuth mode to ensure synchronization
|
|
286
295
|
const oauthModel = this.modelExplicitlySet
|
|
287
296
|
? this.currentModel
|
|
288
|
-
: this.
|
|
297
|
+
: this.geminiConfig?.getModel() || this.currentModel;
|
|
289
298
|
// Generate systemInstruction using getCoreSystemPrompt
|
|
290
299
|
// Get user memory from config if available
|
|
291
|
-
const userMemory = this.
|
|
292
|
-
? this.
|
|
300
|
+
const userMemory = this.geminiConfig?.getUserMemory
|
|
301
|
+
? this.geminiConfig.getUserMemory()
|
|
293
302
|
: '';
|
|
294
303
|
const systemInstruction = await getCoreSystemPromptAsync(userMemory, oauthModel);
|
|
295
304
|
// Store tools if provided
|
|
@@ -314,7 +323,7 @@ export class GeminiProvider {
|
|
|
314
323
|
},
|
|
315
324
|
};
|
|
316
325
|
// Use the content generator stream
|
|
317
|
-
const streamResult = await contentGenerator.generateContentStream(request, this.
|
|
326
|
+
const streamResult = await contentGenerator.generateContentStream(request, this.geminiConfig?.getSessionId() || 'default');
|
|
318
327
|
// Convert the stream to our format
|
|
319
328
|
for await (const response of streamResult) {
|
|
320
329
|
// Extract text from the response
|
|
@@ -351,34 +360,17 @@ export class GeminiProvider {
|
|
|
351
360
|
return;
|
|
352
361
|
}
|
|
353
362
|
case 'none':
|
|
354
|
-
// For 'none' mode,
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
}
|
|
366
|
-
else if (this.hasVertexAICredentials()) {
|
|
367
|
-
this.setupVertexAIAuth();
|
|
368
|
-
genAI = new GoogleGenAI({
|
|
369
|
-
apiKey: process.env.GOOGLE_API_KEY,
|
|
370
|
-
vertexai: true,
|
|
371
|
-
httpOptions: this.baseURL
|
|
372
|
-
? {
|
|
373
|
-
...httpOptions,
|
|
374
|
-
baseUrl: this.baseURL,
|
|
375
|
-
}
|
|
376
|
-
: httpOptions,
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
else {
|
|
380
|
-
throw new Error('No authentication credentials found. Please use /auth to login with Google OAuth, set GEMINI_API_KEY, or configure Vertex AI credentials.');
|
|
381
|
-
}
|
|
363
|
+
// For 'none' mode, use the resolved auth token
|
|
364
|
+
genAI = new GoogleGenAI({
|
|
365
|
+
apiKey: authToken,
|
|
366
|
+
vertexai: this.hasVertexAICredentials(),
|
|
367
|
+
httpOptions: this.baseURL
|
|
368
|
+
? {
|
|
369
|
+
...httpOptions,
|
|
370
|
+
baseUrl: this.baseURL,
|
|
371
|
+
}
|
|
372
|
+
: httpOptions,
|
|
373
|
+
});
|
|
382
374
|
break;
|
|
383
375
|
default:
|
|
384
376
|
throw new Error(`Unsupported auth mode: ${this.authMode}`);
|
|
@@ -399,15 +391,15 @@ export class GeminiProvider {
|
|
|
399
391
|
// Use explicit model if set, otherwise fall back to config model
|
|
400
392
|
const modelToUse = this.modelExplicitlySet
|
|
401
393
|
? this.currentModel
|
|
402
|
-
: this.
|
|
394
|
+
: this.geminiConfig?.getModel() || this.currentModel;
|
|
403
395
|
// For Flash models, always include tools if available
|
|
404
396
|
if (modelToUse.includes('flash') && !geminiTools && this.toolSchemas) {
|
|
405
397
|
geminiTools = this.toolSchemas;
|
|
406
398
|
}
|
|
407
399
|
// Generate systemInstruction using getCoreSystemPrompt
|
|
408
400
|
// Get user memory from config if available
|
|
409
|
-
const userMemory = this.
|
|
410
|
-
? this.
|
|
401
|
+
const userMemory = this.geminiConfig?.getUserMemory
|
|
402
|
+
? this.geminiConfig.getUserMemory()
|
|
411
403
|
: '';
|
|
412
404
|
const systemInstruction = await getCoreSystemPromptAsync(userMemory, modelToUse);
|
|
413
405
|
const request = {
|
|
@@ -696,13 +688,12 @@ export class GeminiProvider {
|
|
|
696
688
|
return result;
|
|
697
689
|
}
|
|
698
690
|
setApiKey(apiKey) {
|
|
699
|
-
|
|
691
|
+
// Call base provider implementation
|
|
692
|
+
super.setApiKey?.(apiKey);
|
|
700
693
|
// Set the API key as an environment variable so it can be used by the core library
|
|
701
694
|
process.env.GEMINI_API_KEY = apiKey;
|
|
702
695
|
// Clear auth cache when API key changes
|
|
703
696
|
this.authDetermined = false;
|
|
704
|
-
// Re-determine auth after API key is set
|
|
705
|
-
this.determineBestAuth();
|
|
706
697
|
}
|
|
707
698
|
setBaseUrl(baseUrl) {
|
|
708
699
|
// If no baseUrl is provided or it's an empty string, clear to undefined
|
|
@@ -743,8 +734,8 @@ export class GeminiProvider {
|
|
|
743
734
|
this.modelExplicitlySet = true;
|
|
744
735
|
// Always update config if available, not just in OAuth mode
|
|
745
736
|
// This ensures the model is properly synchronized
|
|
746
|
-
if (this.
|
|
747
|
-
this.
|
|
737
|
+
if (this.geminiConfig) {
|
|
738
|
+
this.geminiConfig.setModel(modelId);
|
|
748
739
|
}
|
|
749
740
|
}
|
|
750
741
|
/**
|
|
@@ -811,13 +802,12 @@ export class GeminiProvider {
|
|
|
811
802
|
},
|
|
812
803
|
};
|
|
813
804
|
let genAI;
|
|
805
|
+
// Get authentication token lazily
|
|
806
|
+
const authToken = await this.determineBestAuth();
|
|
814
807
|
switch (this.authMode) {
|
|
815
808
|
case 'gemini-api-key': {
|
|
816
|
-
if (!this.apiKey && !process.env.GEMINI_API_KEY) {
|
|
817
|
-
throw new Error('Gemini API key required for web search');
|
|
818
|
-
}
|
|
819
809
|
genAI = new GoogleGenAI({
|
|
820
|
-
apiKey:
|
|
810
|
+
apiKey: authToken,
|
|
821
811
|
httpOptions: this.baseURL
|
|
822
812
|
? {
|
|
823
813
|
...httpOptions,
|
|
@@ -843,11 +833,8 @@ export class GeminiProvider {
|
|
|
843
833
|
return apiKeyResult;
|
|
844
834
|
}
|
|
845
835
|
case 'vertex-ai': {
|
|
846
|
-
if (!process.env.GOOGLE_API_KEY) {
|
|
847
|
-
throw new Error('Google API key required for web search');
|
|
848
|
-
}
|
|
849
836
|
genAI = new GoogleGenAI({
|
|
850
|
-
apiKey:
|
|
837
|
+
apiKey: authToken,
|
|
851
838
|
vertexai: true,
|
|
852
839
|
httpOptions: this.baseURL
|
|
853
840
|
? {
|
|
@@ -875,7 +862,7 @@ export class GeminiProvider {
|
|
|
875
862
|
}
|
|
876
863
|
case 'oauth': {
|
|
877
864
|
// For OAuth, use the code assist content generator
|
|
878
|
-
const oauthContentGenerator = await createCodeAssistContentGenerator(httpOptions, AuthType.LOGIN_WITH_GOOGLE, this.
|
|
865
|
+
const oauthContentGenerator = await createCodeAssistContentGenerator(httpOptions, AuthType.LOGIN_WITH_GOOGLE, this.geminiConfig);
|
|
879
866
|
// For web search, always use gemini-2.5-flash regardless of the active model
|
|
880
867
|
const oauthRequest = {
|
|
881
868
|
model: 'gemini-2.5-flash',
|
|
@@ -889,7 +876,7 @@ export class GeminiProvider {
|
|
|
889
876
|
tools: [{ googleSearch: {} }],
|
|
890
877
|
},
|
|
891
878
|
};
|
|
892
|
-
const result = await oauthContentGenerator.generateContent(oauthRequest, this.
|
|
879
|
+
const result = await oauthContentGenerator.generateContent(oauthRequest, this.geminiConfig?.getSessionId() || 'default');
|
|
893
880
|
return result;
|
|
894
881
|
}
|
|
895
882
|
default:
|
|
@@ -908,13 +895,12 @@ export class GeminiProvider {
|
|
|
908
895
|
},
|
|
909
896
|
};
|
|
910
897
|
let genAI;
|
|
898
|
+
// Get authentication token lazily
|
|
899
|
+
const authToken = await this.determineBestAuth();
|
|
911
900
|
switch (this.authMode) {
|
|
912
901
|
case 'gemini-api-key': {
|
|
913
|
-
if (!this.apiKey && !process.env.GEMINI_API_KEY) {
|
|
914
|
-
throw new Error('Gemini API key required for web fetch');
|
|
915
|
-
}
|
|
916
902
|
genAI = new GoogleGenAI({
|
|
917
|
-
apiKey:
|
|
903
|
+
apiKey: authToken,
|
|
918
904
|
httpOptions: this.baseURL
|
|
919
905
|
? {
|
|
920
906
|
...httpOptions,
|
|
@@ -940,11 +926,8 @@ export class GeminiProvider {
|
|
|
940
926
|
return apiKeyResult;
|
|
941
927
|
}
|
|
942
928
|
case 'vertex-ai': {
|
|
943
|
-
if (!process.env.GOOGLE_API_KEY) {
|
|
944
|
-
throw new Error('Google API key required for web fetch');
|
|
945
|
-
}
|
|
946
929
|
genAI = new GoogleGenAI({
|
|
947
|
-
apiKey:
|
|
930
|
+
apiKey: authToken,
|
|
948
931
|
vertexai: true,
|
|
949
932
|
httpOptions: this.baseURL
|
|
950
933
|
? {
|
|
@@ -972,7 +955,7 @@ export class GeminiProvider {
|
|
|
972
955
|
}
|
|
973
956
|
case 'oauth': {
|
|
974
957
|
// For OAuth, use the code assist content generator
|
|
975
|
-
const oauthContentGenerator = await createCodeAssistContentGenerator(httpOptions, AuthType.LOGIN_WITH_GOOGLE, this.
|
|
958
|
+
const oauthContentGenerator = await createCodeAssistContentGenerator(httpOptions, AuthType.LOGIN_WITH_GOOGLE, this.geminiConfig);
|
|
976
959
|
// For web fetch, always use gemini-2.5-flash regardless of the active model
|
|
977
960
|
const oauthRequest = {
|
|
978
961
|
model: 'gemini-2.5-flash',
|
|
@@ -986,7 +969,7 @@ export class GeminiProvider {
|
|
|
986
969
|
tools: [{ urlContext: {} }],
|
|
987
970
|
},
|
|
988
971
|
};
|
|
989
|
-
const result = await oauthContentGenerator.generateContent(oauthRequest, this.
|
|
972
|
+
const result = await oauthContentGenerator.generateContent(oauthRequest, this.geminiConfig?.getSessionId() || 'default');
|
|
990
973
|
return result;
|
|
991
974
|
}
|
|
992
975
|
default:
|