@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
package/dist/index.d.ts
CHANGED
|
@@ -5,3 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export * from './src/index.js';
|
|
7
7
|
export { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, } from './src/config/models.js';
|
|
8
|
+
export { QwenDeviceFlow, DeviceFlowConfig, } from './src/auth/qwen-device-flow.js';
|
|
9
|
+
export { MultiProviderTokenStore } from './src/auth/token-store.js';
|
|
10
|
+
export { openBrowserSecurely, shouldLaunchBrowser, } from './src/utils/secure-browser-launcher.js';
|
package/dist/index.js
CHANGED
|
@@ -5,4 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export * from './src/index.js';
|
|
7
7
|
export { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, } from './src/config/models.js';
|
|
8
|
+
export { QwenDeviceFlow, } from './src/auth/qwen-device-flow.js';
|
|
9
|
+
export { MultiProviderTokenStore } from './src/auth/token-store.js';
|
|
10
|
+
export { openBrowserSecurely, shouldLaunchBrowser, } from './src/utils/secure-browser-launcher.js';
|
|
8
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wCAAwC,CAAC"}
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
7
|
+
describe('Auth Integration: Complete Precedence Flow and Provider Coordination', () => {
|
|
8
|
+
let mockConfig;
|
|
9
|
+
let mockOAuthManager;
|
|
10
|
+
let mockQwenProvider;
|
|
11
|
+
let mockGeminiProvider;
|
|
12
|
+
let originalEnv;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
vi.clearAllMocks();
|
|
15
|
+
originalEnv = { ...process.env };
|
|
16
|
+
// Mock configuration system
|
|
17
|
+
mockConfig = {
|
|
18
|
+
getOAuthEnabled: vi.fn(),
|
|
19
|
+
setOAuthEnabled: vi.fn(),
|
|
20
|
+
getHigherPriorityAuth: vi.fn(),
|
|
21
|
+
};
|
|
22
|
+
// Mock OAuth manager
|
|
23
|
+
mockOAuthManager = {
|
|
24
|
+
toggleOAuthEnabled: vi.fn(),
|
|
25
|
+
isOAuthEnabled: vi.fn(),
|
|
26
|
+
getToken: vi.fn(),
|
|
27
|
+
getHigherPriorityAuth: vi.fn(),
|
|
28
|
+
getAuthStatus: vi.fn(),
|
|
29
|
+
};
|
|
30
|
+
// Mock provider instances
|
|
31
|
+
mockQwenProvider = {
|
|
32
|
+
name: 'qwen',
|
|
33
|
+
isAuthenticated: vi.fn(),
|
|
34
|
+
resolveAuthentication: vi.fn(),
|
|
35
|
+
makeApiCall: vi.fn(),
|
|
36
|
+
};
|
|
37
|
+
mockGeminiProvider = {
|
|
38
|
+
name: 'gemini',
|
|
39
|
+
isAuthenticated: vi.fn(),
|
|
40
|
+
resolveAuthentication: vi.fn(),
|
|
41
|
+
makeApiCall: vi.fn(),
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
afterEach(() => {
|
|
45
|
+
process.env = originalEnv;
|
|
46
|
+
});
|
|
47
|
+
describe('Complete Auth Precedence Flow', () => {
|
|
48
|
+
/**
|
|
49
|
+
* @scenario Complete precedence chain with OAuth
|
|
50
|
+
* @given CLI arg, env var, and OAuth all available
|
|
51
|
+
* @when Provider resolves authentication
|
|
52
|
+
* @then Uses CLI arg (highest precedence)
|
|
53
|
+
* @and OAuth is not triggered
|
|
54
|
+
*/
|
|
55
|
+
it('should follow complete precedence chain: CLI > Env > OAuth', async () => {
|
|
56
|
+
// Given: All auth methods available
|
|
57
|
+
const cliArg = 'cli-api-key-123';
|
|
58
|
+
process.env.OPENAI_API_KEY = 'env-key-456';
|
|
59
|
+
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
|
|
60
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
|
|
61
|
+
vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue('CLI API Key');
|
|
62
|
+
// When: Provider resolves authentication with CLI key
|
|
63
|
+
vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => {
|
|
64
|
+
// Simulate provider precedence logic
|
|
65
|
+
if (cliArg)
|
|
66
|
+
return cliArg;
|
|
67
|
+
if (process.env.OPENAI_API_KEY)
|
|
68
|
+
return process.env.OPENAI_API_KEY;
|
|
69
|
+
return await mockOAuthManager.getToken('qwen');
|
|
70
|
+
});
|
|
71
|
+
const resolvedAuth = await mockQwenProvider.resolveAuthentication();
|
|
72
|
+
// Then: Should use CLI key (highest precedence)
|
|
73
|
+
expect(resolvedAuth).toBe(cliArg);
|
|
74
|
+
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
75
|
+
});
|
|
76
|
+
/**
|
|
77
|
+
* @scenario Environment variable fallback
|
|
78
|
+
* @given No CLI arg, env var and OAuth available
|
|
79
|
+
* @when Provider resolves authentication
|
|
80
|
+
* @then Uses env var (second precedence)
|
|
81
|
+
* @and OAuth is not triggered
|
|
82
|
+
*/
|
|
83
|
+
it('should fall back to environment variable when no CLI arg', async () => {
|
|
84
|
+
// Given: Env var and OAuth available, no CLI arg
|
|
85
|
+
process.env.OPENAI_API_KEY = 'env-key-456';
|
|
86
|
+
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
|
|
87
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
|
|
88
|
+
vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue('Environment Variable');
|
|
89
|
+
// When: Provider resolves authentication without CLI key
|
|
90
|
+
vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => {
|
|
91
|
+
if (process.env.OPENAI_API_KEY)
|
|
92
|
+
return process.env.OPENAI_API_KEY;
|
|
93
|
+
return await mockOAuthManager.getToken('qwen');
|
|
94
|
+
});
|
|
95
|
+
const resolvedAuth = await mockQwenProvider.resolveAuthentication();
|
|
96
|
+
// Then: Should use environment variable (second precedence)
|
|
97
|
+
expect(resolvedAuth).toBe('env-key-456');
|
|
98
|
+
expect(mockOAuthManager.getToken).not.toHaveBeenCalled();
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* @scenario OAuth as final fallback
|
|
102
|
+
* @given No CLI arg, no env var, OAuth enabled
|
|
103
|
+
* @when Provider resolves authentication
|
|
104
|
+
* @then Triggers lazy OAuth (lowest precedence)
|
|
105
|
+
* @and Returns OAuth token
|
|
106
|
+
*/
|
|
107
|
+
it('should use OAuth as final fallback when no higher precedence auth', async () => {
|
|
108
|
+
// Given: Only OAuth available
|
|
109
|
+
delete process.env.OPENAI_API_KEY;
|
|
110
|
+
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-789');
|
|
111
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
|
|
112
|
+
vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue(null);
|
|
113
|
+
// When: Provider resolves authentication with OAuth only
|
|
114
|
+
vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('qwen'));
|
|
115
|
+
const resolvedAuth = await mockQwenProvider.resolveAuthentication();
|
|
116
|
+
// Then: Should use OAuth token (lowest precedence)
|
|
117
|
+
expect(resolvedAuth).toBe('oauth-token-789');
|
|
118
|
+
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('OAuth Enablement Persistence', () => {
|
|
122
|
+
/**
|
|
123
|
+
* @scenario OAuth enablement persists across sessions
|
|
124
|
+
* @given OAuth enabled for qwen
|
|
125
|
+
* @when System restarts (new instances)
|
|
126
|
+
* @then OAuth remains enabled
|
|
127
|
+
* @and Can be toggled again
|
|
128
|
+
*/
|
|
129
|
+
it('should persist OAuth enablement across system restarts', async () => {
|
|
130
|
+
// Given: OAuth enabled for qwen in first session
|
|
131
|
+
vi.mocked(mockOAuthManager.toggleOAuthEnabled).mockResolvedValue(true);
|
|
132
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
|
|
133
|
+
vi.mocked(mockConfig.getOAuthEnabled).mockReturnValue(true);
|
|
134
|
+
// When: Enable OAuth in first session
|
|
135
|
+
const firstToggleResult = await mockOAuthManager.toggleOAuthEnabled('qwen');
|
|
136
|
+
expect(firstToggleResult).toBe(true);
|
|
137
|
+
// Simulate system restart with new instances
|
|
138
|
+
const newOAuthManager = { ...mockOAuthManager };
|
|
139
|
+
vi.mocked(newOAuthManager.isOAuthEnabled).mockResolvedValue(true); // Persisted state
|
|
140
|
+
// Then: OAuth should remain enabled after restart
|
|
141
|
+
const persistedState = await newOAuthManager.isOAuthEnabled('qwen');
|
|
142
|
+
expect(persistedState).toBe(true);
|
|
143
|
+
// And: Can be toggled again (disable)
|
|
144
|
+
vi.mocked(newOAuthManager.toggleOAuthEnabled).mockResolvedValue(false);
|
|
145
|
+
const secondToggleResult = await newOAuthManager.toggleOAuthEnabled('qwen');
|
|
146
|
+
expect(secondToggleResult).toBe(false);
|
|
147
|
+
});
|
|
148
|
+
/**
|
|
149
|
+
* @scenario Independent enablement per provider
|
|
150
|
+
* @given Multiple providers registered
|
|
151
|
+
* @when OAuth enabled for qwen only
|
|
152
|
+
* @then Qwen OAuth enabled, Gemini OAuth disabled
|
|
153
|
+
* @and States persist independently
|
|
154
|
+
*/
|
|
155
|
+
it('should maintain independent OAuth enablement per provider', async () => {
|
|
156
|
+
// Given: Multiple providers with different OAuth states
|
|
157
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockImplementation(async (provider) => provider === 'qwen');
|
|
158
|
+
// When: Check enablement for both providers
|
|
159
|
+
const qwenEnabled = await mockOAuthManager.isOAuthEnabled('qwen');
|
|
160
|
+
const geminiEnabled = await mockOAuthManager.isOAuthEnabled('gemini');
|
|
161
|
+
// Then: Should reflect independent states
|
|
162
|
+
expect(qwenEnabled).toBe(true);
|
|
163
|
+
expect(geminiEnabled).toBe(false);
|
|
164
|
+
// And: Status should reflect independent OAuth enablement
|
|
165
|
+
vi.mocked(mockOAuthManager.getAuthStatus).mockResolvedValue([
|
|
166
|
+
{
|
|
167
|
+
provider: 'qwen',
|
|
168
|
+
authenticated: false,
|
|
169
|
+
authType: 'none',
|
|
170
|
+
oauthEnabled: true,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
provider: 'gemini',
|
|
174
|
+
authenticated: false,
|
|
175
|
+
authType: 'none',
|
|
176
|
+
oauthEnabled: false,
|
|
177
|
+
},
|
|
178
|
+
]);
|
|
179
|
+
const status = await mockOAuthManager.getAuthStatus();
|
|
180
|
+
expect(status.find((s) => s.provider === 'qwen')?.oauthEnabled).toBe(true);
|
|
181
|
+
expect(status.find((s) => s.provider === 'gemini')?.oauthEnabled).toBe(false);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
describe('Lazy OAuth Triggering During API Calls', () => {
|
|
185
|
+
/**
|
|
186
|
+
* @scenario Lazy OAuth triggers on first API call
|
|
187
|
+
* @given OAuth enabled but not authenticated
|
|
188
|
+
* @when Provider makes API call
|
|
189
|
+
* @then OAuth flow triggered automatically
|
|
190
|
+
* @and Subsequent calls use cached token
|
|
191
|
+
*/
|
|
192
|
+
it('should trigger OAuth lazily on first API call and cache for subsequent calls', async () => {
|
|
193
|
+
// Given: OAuth enabled but not yet authenticated
|
|
194
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
|
|
195
|
+
vi.mocked(mockOAuthManager.getToken)
|
|
196
|
+
.mockResolvedValueOnce(null) // First call - not authenticated
|
|
197
|
+
.mockResolvedValue('oauth-token-123'); // Subsequent calls - authenticated
|
|
198
|
+
// Mock provider API call that triggers lazy authentication
|
|
199
|
+
if (mockQwenProvider.makeApiCall) {
|
|
200
|
+
vi.mocked(mockQwenProvider.makeApiCall).mockImplementation(async () => {
|
|
201
|
+
const token = await mockOAuthManager.getToken('qwen');
|
|
202
|
+
if (!token) {
|
|
203
|
+
// Simulate lazy OAuth triggering
|
|
204
|
+
await mockOAuthManager.getToken('qwen'); // This would trigger OAuth in real implementation
|
|
205
|
+
return 'api-call-success-with-oauth';
|
|
206
|
+
}
|
|
207
|
+
return 'api-call-success-cached';
|
|
208
|
+
});
|
|
209
|
+
// When: Make first API call (should trigger OAuth)
|
|
210
|
+
const firstCallResult = await mockQwenProvider.makeApiCall();
|
|
211
|
+
// Then: Should succeed with OAuth
|
|
212
|
+
expect(firstCallResult).toBe('api-call-success-with-oauth');
|
|
213
|
+
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
214
|
+
// When: Make second API call (should use cached token)
|
|
215
|
+
const secondCallResult = await mockQwenProvider.makeApiCall();
|
|
216
|
+
// Then: Should succeed with cached token
|
|
217
|
+
expect(secondCallResult).toBe('api-call-success-cached');
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
/**
|
|
221
|
+
* @scenario No OAuth triggering when disabled
|
|
222
|
+
* @given OAuth disabled for provider
|
|
223
|
+
* @when Provider attempts API call without other auth
|
|
224
|
+
* @then API call fails with no authentication
|
|
225
|
+
* @and No OAuth flow is triggered
|
|
226
|
+
*/
|
|
227
|
+
it('should not trigger OAuth when disabled, causing API call to fail', async () => {
|
|
228
|
+
// Given: OAuth disabled, no other auth methods
|
|
229
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(false);
|
|
230
|
+
vi.mocked(mockOAuthManager.getToken).mockResolvedValue(null);
|
|
231
|
+
// Mock provider API call that checks authentication
|
|
232
|
+
if (mockQwenProvider.makeApiCall) {
|
|
233
|
+
vi.mocked(mockQwenProvider.makeApiCall).mockImplementation(async () => {
|
|
234
|
+
const token = await mockOAuthManager.getToken('qwen');
|
|
235
|
+
if (!token) {
|
|
236
|
+
throw new Error('No authentication available');
|
|
237
|
+
}
|
|
238
|
+
return 'api-call-success';
|
|
239
|
+
});
|
|
240
|
+
// When: Attempt API call without authentication
|
|
241
|
+
await expect(mockQwenProvider.makeApiCall()).rejects.toThrow('No authentication available');
|
|
242
|
+
}
|
|
243
|
+
// Then: OAuth should not have been triggered
|
|
244
|
+
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
245
|
+
// No OAuth flow should have been initiated since it's disabled
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
describe('Provider Coordination with Auth System', () => {
|
|
249
|
+
/**
|
|
250
|
+
* @scenario Multiple providers coordinate with shared auth system
|
|
251
|
+
* @given Qwen and Gemini providers both using OAuth manager
|
|
252
|
+
* @when Each provider resolves authentication independently
|
|
253
|
+
* @then Each triggers OAuth only for its own provider
|
|
254
|
+
* @and Auth states remain independent
|
|
255
|
+
*/
|
|
256
|
+
it('should coordinate multiple providers with shared auth system', async () => {
|
|
257
|
+
// Given: Both providers use same OAuth manager with different states
|
|
258
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockImplementation(async (provider) => provider === 'qwen');
|
|
259
|
+
vi.mocked(mockOAuthManager.getToken).mockImplementation(async (provider) => (provider === 'qwen' ? 'qwen-oauth-token' : null));
|
|
260
|
+
// Mock provider authentication resolution
|
|
261
|
+
vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('qwen'));
|
|
262
|
+
vi.mocked(mockGeminiProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('gemini'));
|
|
263
|
+
// When: Both providers resolve authentication
|
|
264
|
+
const qwenAuth = await mockQwenProvider.resolveAuthentication();
|
|
265
|
+
const geminiAuth = await mockGeminiProvider.resolveAuthentication();
|
|
266
|
+
// Then: Each provider gets appropriate result
|
|
267
|
+
expect(qwenAuth).toBe('qwen-oauth-token');
|
|
268
|
+
expect(geminiAuth).toBe(null);
|
|
269
|
+
// And: OAuth manager called for each provider independently
|
|
270
|
+
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
271
|
+
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('gemini');
|
|
272
|
+
});
|
|
273
|
+
/**
|
|
274
|
+
* @scenario Shared OAuth manager provides consistent status
|
|
275
|
+
* @given Multiple providers registered with OAuth manager
|
|
276
|
+
* @when Getting auth status
|
|
277
|
+
* @then Returns consistent status across all providers
|
|
278
|
+
* @and Includes OAuth enablement information
|
|
279
|
+
*/
|
|
280
|
+
it('should provide consistent auth status across multiple providers', async () => {
|
|
281
|
+
// Given: OAuth manager with multiple providers in different states
|
|
282
|
+
vi.mocked(mockOAuthManager.getAuthStatus).mockResolvedValue([
|
|
283
|
+
{
|
|
284
|
+
provider: 'qwen',
|
|
285
|
+
authenticated: true,
|
|
286
|
+
authType: 'oauth',
|
|
287
|
+
oauthEnabled: true,
|
|
288
|
+
expiresIn: 3600,
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
provider: 'gemini',
|
|
292
|
+
authenticated: false,
|
|
293
|
+
authType: 'none',
|
|
294
|
+
oauthEnabled: false,
|
|
295
|
+
},
|
|
296
|
+
]);
|
|
297
|
+
// When: Get comprehensive auth status
|
|
298
|
+
const status = await mockOAuthManager.getAuthStatus();
|
|
299
|
+
// Then: Should show consistent state for all providers
|
|
300
|
+
expect(status).toHaveLength(2);
|
|
301
|
+
const qwenStatus = status.find((s) => s.provider === 'qwen');
|
|
302
|
+
const geminiStatus = status.find((s) => s.provider === 'gemini');
|
|
303
|
+
expect(qwenStatus).toEqual({
|
|
304
|
+
provider: 'qwen',
|
|
305
|
+
authenticated: true,
|
|
306
|
+
authType: 'oauth',
|
|
307
|
+
oauthEnabled: true,
|
|
308
|
+
expiresIn: 3600,
|
|
309
|
+
});
|
|
310
|
+
expect(geminiStatus).toEqual({
|
|
311
|
+
provider: 'gemini',
|
|
312
|
+
authenticated: false,
|
|
313
|
+
authType: 'none',
|
|
314
|
+
oauthEnabled: false,
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
describe('End-to-End Integration Scenarios', () => {
|
|
319
|
+
/**
|
|
320
|
+
* @scenario Complete user workflow: enable OAuth, make API call, check status
|
|
321
|
+
* @given Fresh system with no authentication
|
|
322
|
+
* @when User enables OAuth, makes API call, checks status
|
|
323
|
+
* @then All steps succeed with proper coordination
|
|
324
|
+
*/
|
|
325
|
+
it('should handle complete user workflow end-to-end', async () => {
|
|
326
|
+
// Step 1: Enable OAuth for qwen
|
|
327
|
+
vi.mocked(mockOAuthManager.toggleOAuthEnabled).mockResolvedValue(true);
|
|
328
|
+
vi.mocked(mockOAuthManager.getHigherPriorityAuth).mockResolvedValue(null);
|
|
329
|
+
const enableResult = await mockOAuthManager.toggleOAuthEnabled('qwen');
|
|
330
|
+
expect(enableResult).toBe(true);
|
|
331
|
+
// Step 2: Simulate API call that triggers lazy OAuth
|
|
332
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockResolvedValue(true);
|
|
333
|
+
vi.mocked(mockOAuthManager.getToken).mockResolvedValue('oauth-token-from-lazy-trigger');
|
|
334
|
+
if (mockQwenProvider.makeApiCall) {
|
|
335
|
+
vi.mocked(mockQwenProvider.makeApiCall).mockResolvedValue('api-success');
|
|
336
|
+
const apiResult = await mockQwenProvider.makeApiCall();
|
|
337
|
+
expect(apiResult).toBe('api-success');
|
|
338
|
+
}
|
|
339
|
+
// Step 3: Check status shows OAuth enabled and authenticated
|
|
340
|
+
vi.mocked(mockOAuthManager.getAuthStatus).mockResolvedValue([
|
|
341
|
+
{
|
|
342
|
+
provider: 'qwen',
|
|
343
|
+
authenticated: true,
|
|
344
|
+
authType: 'oauth',
|
|
345
|
+
oauthEnabled: true,
|
|
346
|
+
expiresIn: 3600,
|
|
347
|
+
},
|
|
348
|
+
]);
|
|
349
|
+
const finalStatus = await mockOAuthManager.getAuthStatus();
|
|
350
|
+
expect(finalStatus[0]).toMatchObject({
|
|
351
|
+
provider: 'qwen',
|
|
352
|
+
authenticated: true,
|
|
353
|
+
authType: 'oauth',
|
|
354
|
+
oauthEnabled: true,
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
/**
|
|
358
|
+
* @scenario Mixed auth methods coordination
|
|
359
|
+
* @given Some providers use API keys, others use OAuth
|
|
360
|
+
* @when Making API calls with mixed authentication
|
|
361
|
+
* @then Each provider uses appropriate auth method
|
|
362
|
+
* @and No interference between auth methods
|
|
363
|
+
*/
|
|
364
|
+
it('should coordinate mixed authentication methods without interference', async () => {
|
|
365
|
+
// Given: Mixed authentication setup
|
|
366
|
+
process.env.OPENAI_API_KEY = 'env-api-key-for-gemini';
|
|
367
|
+
vi.mocked(mockOAuthManager.isOAuthEnabled).mockImplementation(async (provider) => provider === 'qwen');
|
|
368
|
+
vi.mocked(mockOAuthManager.getToken).mockImplementation(async (provider) => (provider === 'qwen' ? 'qwen-oauth-token' : null));
|
|
369
|
+
// Mock providers with different auth strategies
|
|
370
|
+
vi.mocked(mockQwenProvider.resolveAuthentication).mockImplementation(async () => await mockOAuthManager.getToken('qwen'));
|
|
371
|
+
vi.mocked(mockGeminiProvider.resolveAuthentication).mockImplementation(async () => process.env.OPENAI_API_KEY || null);
|
|
372
|
+
// When: Both providers resolve authentication
|
|
373
|
+
const qwenAuth = await mockQwenProvider.resolveAuthentication();
|
|
374
|
+
const geminiAuth = await mockGeminiProvider.resolveAuthentication();
|
|
375
|
+
// Then: Each uses appropriate method without interference
|
|
376
|
+
expect(qwenAuth).toBe('qwen-oauth-token'); // OAuth for Qwen
|
|
377
|
+
expect(geminiAuth).toBe('env-api-key-for-gemini'); // Env var for Gemini
|
|
378
|
+
// And: OAuth manager only called for OAuth-enabled provider
|
|
379
|
+
expect(mockOAuthManager.getToken).toHaveBeenCalledWith('qwen');
|
|
380
|
+
expect(mockOAuthManager.getToken).not.toHaveBeenCalledWith('gemini');
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
//# sourceMappingURL=auth-integration.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-integration.spec.js","sourceRoot":"","sources":["../../../src/auth/auth-integration.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export interface AuthPrecedenceConfig {
|
|
7
|
+
commandKey?: string;
|
|
8
|
+
commandKeyfile?: string;
|
|
9
|
+
cliKey?: string;
|
|
10
|
+
cliKeyfile?: string;
|
|
11
|
+
envKeyNames?: string[];
|
|
12
|
+
isOAuthEnabled?: boolean;
|
|
13
|
+
supportsOAuth?: boolean;
|
|
14
|
+
oauthProvider?: string;
|
|
15
|
+
}
|
|
16
|
+
import { OAuthToken } from './types.js';
|
|
17
|
+
export interface OAuthManager {
|
|
18
|
+
getToken(provider: string): Promise<string | null>;
|
|
19
|
+
isAuthenticated(provider: string): Promise<boolean>;
|
|
20
|
+
getOAuthToken?(provider: string): Promise<OAuthToken | null>;
|
|
21
|
+
}
|
|
22
|
+
export declare class AuthPrecedenceResolver {
|
|
23
|
+
private config;
|
|
24
|
+
private oauthManager?;
|
|
25
|
+
constructor(config: AuthPrecedenceConfig, oauthManager?: OAuthManager);
|
|
26
|
+
/**
|
|
27
|
+
* Resolves authentication using the full precedence chain
|
|
28
|
+
* Returns the first available authentication method or null if none found
|
|
29
|
+
*/
|
|
30
|
+
resolveAuthentication(): Promise<string | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Check if any authentication method is available without triggering OAuth
|
|
33
|
+
*/
|
|
34
|
+
hasNonOAuthAuthentication(): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Check if OAuth is the only available authentication method
|
|
37
|
+
*/
|
|
38
|
+
isOAuthOnlyAvailable(): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Get authentication method name for debugging/logging
|
|
41
|
+
*/
|
|
42
|
+
getAuthMethodName(): Promise<string | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Reads API key from a file path, handling both absolute and relative paths
|
|
45
|
+
*/
|
|
46
|
+
private readKeyFile;
|
|
47
|
+
/**
|
|
48
|
+
* Updates the configuration
|
|
49
|
+
*/
|
|
50
|
+
updateConfig(newConfig: Partial<AuthPrecedenceConfig>): void;
|
|
51
|
+
/**
|
|
52
|
+
* Updates the OAuth manager
|
|
53
|
+
*/
|
|
54
|
+
updateOAuthManager(oauthManager: OAuthManager): void;
|
|
55
|
+
}
|