@vybestack/llxprt-code 0.1.23-nightly.250824.52dcfe37 → 0.1.23-nightly.250825.6cba9007

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.
Files changed (51) hide show
  1. package/dist/package.json +4 -3
  2. package/dist/src/auth/anthropic-oauth-provider.d.ts +50 -3
  3. package/dist/src/auth/anthropic-oauth-provider.js +287 -63
  4. package/dist/src/auth/anthropic-oauth-provider.js.map +1 -1
  5. package/dist/src/auth/gemini-oauth-provider.d.ts +34 -3
  6. package/dist/src/auth/gemini-oauth-provider.js +308 -14
  7. package/dist/src/auth/gemini-oauth-provider.js.map +1 -1
  8. package/dist/src/auth/migration.d.ts +26 -0
  9. package/dist/src/auth/migration.js +54 -0
  10. package/dist/src/auth/migration.js.map +1 -0
  11. package/dist/src/auth/oauth-manager.d.ts +24 -0
  12. package/dist/src/auth/oauth-manager.js +179 -14
  13. package/dist/src/auth/oauth-manager.js.map +1 -1
  14. package/dist/src/auth/oauth-manager.spec.js +10 -8
  15. package/dist/src/auth/oauth-manager.spec.js.map +1 -1
  16. package/dist/src/auth/qwen-oauth-provider.d.ts +59 -3
  17. package/dist/src/auth/qwen-oauth-provider.js +263 -41
  18. package/dist/src/auth/qwen-oauth-provider.js.map +1 -1
  19. package/dist/src/config/config.js +4 -1
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/generated/git-commit.d.ts +1 -1
  22. package/dist/src/generated/git-commit.js +1 -1
  23. package/dist/src/providers/providerConfigUtils.js +2 -4
  24. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  25. package/dist/src/providers/providerManagerInstance.js +18 -48
  26. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  27. package/dist/src/services/BuiltinCommandLoader.js +4 -0
  28. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  29. package/dist/src/ui/commands/authCommand.d.ts +9 -0
  30. package/dist/src/ui/commands/authCommand.js +92 -3
  31. package/dist/src/ui/commands/authCommand.js.map +1 -1
  32. package/dist/src/ui/commands/keyCommand.js +16 -54
  33. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  34. package/dist/src/ui/commands/keyCommand.test.js +3 -3
  35. package/dist/src/ui/commands/keyCommand.test.js.map +1 -1
  36. package/dist/src/ui/commands/keyfileCommand.js +37 -39
  37. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  38. package/dist/src/ui/commands/logoutCommand.d.ts +7 -0
  39. package/dist/src/ui/commands/logoutCommand.js +70 -0
  40. package/dist/src/ui/commands/logoutCommand.js.map +1 -0
  41. package/dist/src/ui/commands/profileCommand.js +3 -15
  42. package/dist/src/ui/commands/profileCommand.js.map +1 -1
  43. package/dist/src/ui/commands/profileCommand.test.js +5 -5
  44. package/dist/src/ui/commands/profileCommand.test.js.map +1 -1
  45. package/dist/src/ui/commands/statusCommand.d.ts +7 -0
  46. package/dist/src/ui/commands/statusCommand.js +71 -0
  47. package/dist/src/ui/commands/statusCommand.js.map +1 -0
  48. package/dist/src/ui/contexts/TodoContext.js +2 -2
  49. package/dist/src/ui/contexts/TodoContext.js.map +1 -1
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +4 -3
@@ -5,8 +5,6 @@
5
5
  */
6
6
  import { ProviderManager, OpenAIProvider, AnthropicProvider, GeminiProvider, sanitizeForByteString, needsSanitization, } from '@vybestack/llxprt-code-core';
7
7
  import { NodeFileSystem } from './IFileSystem.js';
8
- import { homedir } from 'os';
9
- import { join } from 'path';
10
8
  import { LoadedSettings, USER_SETTINGS_PATH, } from '../config/settings.js';
11
9
  import stripJsonComments from 'strip-json-comments';
12
10
  import { OAuthManager } from '../auth/oauth-manager.js';
@@ -71,14 +69,16 @@ export function getProviderManager(config, allowBrowserEnvironment = false, sett
71
69
  [])
72
70
  : undefined;
73
71
  }
74
- // Create OAuth manager for providers
72
+ // @plan:PLAN-20250823-AUTHFIXES.P15
73
+ // @requirement:REQ-004
74
+ // Create OAuth manager for providers with TokenStore integration
75
75
  const tokenStore = new MultiProviderTokenStore();
76
76
  const oauthManager = new OAuthManager(tokenStore, loadedSettings);
77
77
  oauthManagerInstance = oauthManager;
78
- // Register OAuth providers
79
- oauthManager.registerProvider(new GeminiOAuthProvider());
80
- oauthManager.registerProvider(new QwenOAuthProvider());
81
- oauthManager.registerProvider(new AnthropicOAuthProvider());
78
+ // Register OAuth providers with TokenStore for persistence
79
+ oauthManager.registerProvider(new GeminiOAuthProvider(tokenStore));
80
+ oauthManager.registerProvider(new QwenOAuthProvider(tokenStore));
81
+ oauthManager.registerProvider(new AnthropicOAuthProvider(tokenStore));
82
82
  // Set config BEFORE registering providers so logging wrapper works
83
83
  if (config) {
84
84
  providerManagerInstance.setConfig(config);
@@ -89,37 +89,13 @@ export function getProviderManager(config, allowBrowserEnvironment = false, sett
89
89
  geminiProvider.setConfig(config);
90
90
  }
91
91
  providerManagerInstance.registerProvider(geminiProvider);
92
- // Configure Gemini auth - check for keyfile only
93
- try {
94
- const keyfilePath = join(homedir(), '.google_key');
95
- if (fs.existsSync(keyfilePath)) {
96
- const geminiApiKey = fs.readFileSync(keyfilePath, 'utf-8').trim();
97
- if (geminiApiKey) {
98
- geminiProvider.setApiKey(sanitizeApiKey(geminiApiKey));
99
- }
100
- }
101
- }
102
- catch (_error) {
103
- // No Google keyfile available, that's OK - will use OAuth if available
104
- }
92
+ // Gemini auth configuration removed - use explicit --key/--keyfile, /key//keyfile commands, profiles, env vars, or OAuth only
105
93
  // Always register OpenAI provider
106
- // Priority: Environment variable > keyfile (skip keyfile in test)
94
+ // Priority: Environment variable only - no automatic keyfile loading
107
95
  let openaiApiKey;
108
96
  if (process.env.OPENAI_API_KEY) {
109
97
  openaiApiKey = sanitizeApiKey(process.env.OPENAI_API_KEY);
110
98
  }
111
- if (!openaiApiKey) {
112
- try {
113
- const apiKeyPath = join(homedir(), '.openai_key');
114
- if (fs.existsSync(apiKeyPath)) {
115
- const rawKey = fs.readFileSync(apiKeyPath, 'utf-8').trim();
116
- openaiApiKey = sanitizeApiKey(rawKey);
117
- }
118
- }
119
- catch (_error) {
120
- // No OpenAI keyfile available, that's OK
121
- }
122
- }
123
99
  const openaiBaseUrl = process.env.OPENAI_BASE_URL;
124
100
  if (process.env.DEBUG || process.env.VERBOSE) {
125
101
  console.log('[ProviderManager] Initializing OpenAI provider with:', {
@@ -144,9 +120,15 @@ export function getProviderManager(config, allowBrowserEnvironment = false, sett
144
120
  providerManagerInstance.registerProvider(openaiProvider);
145
121
  // Register qwen as an alias to OpenAI provider with OAuth
146
122
  // When user selects "--provider qwen", we create a separate OpenAI instance for Qwen
123
+ // Create a special config for qwen that ensures proper OAuth identification
124
+ const qwenProviderConfig = {
125
+ ...openaiProviderConfig,
126
+ // Override any OAuth-related settings that might affect provider identification
127
+ forceQwenOAuth: true,
128
+ };
147
129
  const qwenProvider = new OpenAIProvider(undefined, // No API key - force OAuth
148
- undefined, // No base URL - will be set from OAuth token's resource_url
149
- openaiProviderConfig, oauthManager);
130
+ 'https://portal.qwen.ai/v1', // Set Qwen base URL to trigger OAuth enablement
131
+ qwenProviderConfig, oauthManager);
150
132
  // Override the name to 'qwen' so it can be selected
151
133
  Object.defineProperty(qwenProvider, 'name', {
152
134
  value: 'qwen',
@@ -156,23 +138,11 @@ export function getProviderManager(config, allowBrowserEnvironment = false, sett
156
138
  });
157
139
  providerManagerInstance.registerProvider(qwenProvider);
158
140
  // Always register Anthropic provider
159
- // Priority: Environment variable > keyfile (skip keyfile in test)
141
+ // Priority: Environment variable only - no automatic keyfile loading
160
142
  let anthropicApiKey;
161
143
  if (process.env.ANTHROPIC_API_KEY) {
162
144
  anthropicApiKey = sanitizeApiKey(process.env.ANTHROPIC_API_KEY);
163
145
  }
164
- if (!anthropicApiKey) {
165
- try {
166
- const apiKeyPath = join(homedir(), '.anthropic_key');
167
- if (fs.existsSync(apiKeyPath)) {
168
- const rawKey = fs.readFileSync(apiKeyPath, 'utf-8').trim();
169
- anthropicApiKey = sanitizeApiKey(rawKey);
170
- }
171
- }
172
- catch (_error) {
173
- // No Anthropic keyfile available, that's OK
174
- }
175
- }
176
146
  const anthropicBaseUrl = process.env.ANTHROPIC_BASE_URL;
177
147
  // Create provider config from user settings
178
148
  const anthropicProviderConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"providerManagerInstance.js","sourceRoot":"","sources":["../../../src/providers/providerManagerInstance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providerManagerInstance.js","sourceRoot":"","sources":["../../../src/providers/providerManagerInstance.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ import { profileCommand } from '../ui/commands/profileCommand.js';
40
40
  import { diagnosticsCommand } from '../ui/commands/diagnosticsCommand.js';
41
41
  import { terminalSetupCommand } from '../ui/commands/terminalSetupCommand.js';
42
42
  import { debugCommand } from '../ui/commands/debugCommands.js';
43
+ import { logoutCommand } from '../ui/commands/logoutCommand.js';
44
+ import { statusCommand } from '../ui/commands/statusCommand.js';
43
45
  /**
44
46
  * Loads the core, hard-coded slash commands that are an integral part
45
47
  * of the Gemini CLI application.
@@ -95,6 +97,8 @@ export class BuiltinCommandLoader {
95
97
  setupGithubCommand,
96
98
  terminalSetupCommand,
97
99
  debugCommand,
100
+ logoutCommand,
101
+ statusCommand,
98
102
  ];
99
103
  return allDefinitions.filter((cmd) => cmd !== null);
100
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,15 @@ export declare class AuthCommandExecutor {
12
12
  private showOAuthMenu;
13
13
  private showProviderStatus;
14
14
  private setProviderOAuth;
15
+ /**
16
+ * @plan PLAN-20250823-AUTHFIXES.P14
17
+ * @requirement REQ-002.3
18
+ * @pseudocode lines 26-63
19
+ * Logout from a specific provider
20
+ * @param provider - Name of the provider to logout from
21
+ * @returns MessageActionReturn with logout result
22
+ */
23
+ private logoutProvider;
15
24
  getAuthStatus(): Promise<string[]>;
16
25
  }
17
26
  export declare const authCommand: SlashCommand;
@@ -31,11 +31,15 @@ export class AuthCommandExecutor {
31
31
  if (action === 'enable' || action === 'disable') {
32
32
  return this.setProviderOAuth(provider, action === 'enable');
33
33
  }
34
- // Invalid action
34
+ // Lines 15-17: Handle logout action (NEW) @pseudocode lines 15-17
35
+ if (action === 'logout' || action === 'signout') {
36
+ return this.logoutProvider(provider);
37
+ }
38
+ // Lines 19-24: Invalid action @pseudocode lines 19-24
35
39
  return {
36
40
  type: 'message',
37
41
  messageType: 'error',
38
- content: `Invalid action: ${action}. Use 'enable' or 'disable'`,
42
+ content: `Invalid action: ${action}. Use enable, disable, or logout`,
39
43
  };
40
44
  }
41
45
  async showOAuthMenu() {
@@ -61,7 +65,29 @@ export class AuthCommandExecutor {
61
65
  const isAuthenticated = await this.oauthManager.isAuthenticated(provider);
62
66
  let status = `OAuth for ${provider}: ${isEnabled ? 'ENABLED' : 'DISABLED'}`;
63
67
  if (isEnabled && isAuthenticated) {
64
- status += ' (authenticated)';
68
+ // Lines 70-85: Show token expiry information @pseudocode lines 70-85
69
+ const token = await this.oauthManager.getOAuthToken(provider);
70
+ if (token && token.expiry) {
71
+ // Lines 72-76: Calculate time until expiry
72
+ const expiryDate = new Date(token.expiry * 1000);
73
+ const timeUntilExpiry = Math.max(0, token.expiry - Date.now() / 1000);
74
+ const hours = Math.floor(timeUntilExpiry / 3600);
75
+ const minutes = Math.floor((timeUntilExpiry % 3600) / 60);
76
+ // Lines 78-85: Return detailed status with logout instruction
77
+ status =
78
+ `${provider} OAuth: Enabled and authenticated\n` +
79
+ `Token expires: ${expiryDate.toISOString()}\n` +
80
+ `Time remaining: ${hours}h ${minutes}m\n` +
81
+ `Use /auth ${provider} logout to sign out`;
82
+ return {
83
+ type: 'message',
84
+ messageType: 'info',
85
+ content: status,
86
+ };
87
+ }
88
+ else {
89
+ status += ' (authenticated)';
90
+ }
65
91
  }
66
92
  else if (isEnabled && !isAuthenticated) {
67
93
  status += ' (not authenticated)';
@@ -134,6 +160,69 @@ export class AuthCommandExecutor {
134
160
  };
135
161
  }
136
162
  }
163
+ /**
164
+ * @plan PLAN-20250823-AUTHFIXES.P14
165
+ * @requirement REQ-002.3
166
+ * @pseudocode lines 26-63
167
+ * Logout from a specific provider
168
+ * @param provider - Name of the provider to logout from
169
+ * @returns MessageActionReturn with logout result
170
+ */
171
+ async logoutProvider(provider) {
172
+ try {
173
+ // Lines 28-35: Check if provider is supported
174
+ const supportedProviders = this.oauthManager.getSupportedProviders();
175
+ if (!supportedProviders.includes(provider)) {
176
+ return {
177
+ type: 'message',
178
+ messageType: 'error',
179
+ content: `Unknown provider: ${provider}. Supported providers: ${supportedProviders.join(', ')}`,
180
+ };
181
+ }
182
+ // Lines 38-49: Check if user is authenticated and perform logout
183
+ const isAuthenticated = await this.oauthManager.isAuthenticated(provider);
184
+ if (!isAuthenticated) {
185
+ // Still attempt logout in case there's an expired/invalid token to clean up
186
+ try {
187
+ await this.oauthManager.logout(provider);
188
+ }
189
+ catch (error) {
190
+ // OAuth manager failures should be treated as errors
191
+ const errorMessage = error instanceof Error ? error.message : String(error);
192
+ return {
193
+ type: 'message',
194
+ messageType: 'error',
195
+ content: `Failed to logout from ${provider}: ${errorMessage}`,
196
+ };
197
+ }
198
+ // If logout succeeded for unauthenticated user, they had stale tokens
199
+ return {
200
+ type: 'message',
201
+ messageType: 'info',
202
+ content: `Successfully logged out of ${provider}`,
203
+ };
204
+ }
205
+ else {
206
+ // User is authenticated, perform logout
207
+ await this.oauthManager.logout(provider);
208
+ }
209
+ // Lines 51-55: Return success message
210
+ return {
211
+ type: 'message',
212
+ messageType: 'info',
213
+ content: `Successfully logged out of ${provider}`,
214
+ };
215
+ }
216
+ catch (error) {
217
+ // Lines 56-62: Handle errors
218
+ const errorMessage = error instanceof Error ? error.message : String(error);
219
+ return {
220
+ type: 'message',
221
+ messageType: 'error',
222
+ content: `Failed to logout from ${provider}: ${errorMessage}`,
223
+ };
224
+ }
225
+ }
137
226
  async getAuthStatus() {
138
227
  try {
139
228
  const statuses = await this.oauthManager.getAuthStatus();
@@ -1 +1 @@
1
- {"version":3,"file":"authCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/authCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/authCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,GAMZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,4CAA4C,CAAC;AAEpD,MAAM,OAAO,mBAAmB;IACV;IAApB,YAAoB,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAElD,KAAK,CAAC,OAAO,CACX,OAAuB,EACvB,IAAa;QAEb,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAExB,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,gCAAgC;QAChC,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAED,kEAAkE;QAClE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,sDAAsD;QACtD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,mBAAmB,MAAM,kCAAkC;SACrE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,2DAA2D;QAC3D,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,QAAgB;QAEhB,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;YACrE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,qBAAqB,QAAQ,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAChG,CAAC;YACJ,CAAC;YAED,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC7D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE1E,IAAI,MAAM,GAAG,aAAa,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC5E,IAAI,SAAS,IAAI,eAAe,EAAE,CAAC;gBACjC,qEAAqE;gBACrE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC9D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC1B,2CAA2C;oBAC3C,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;oBACjD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;oBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;oBACjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAE1D,8DAA8D;oBAC9D,MAAM;wBACJ,GAAG,QAAQ,qCAAqC;4BAChD,kBAAkB,UAAU,CAAC,WAAW,EAAE,IAAI;4BAC9C,mBAAmB,KAAK,KAAK,OAAO,KAAK;4BACzC,aAAa,QAAQ,qBAAqB,CAAC;oBAC7C,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,MAAM;wBACnB,OAAO,EAAE,MAAM;qBAChB,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,kBAAkB,CAAC;gBAC/B,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzC,MAAM,IAAI,sBAAsB,CAAC;YACnC,CAAC;YAED,iCAAiC;YACjC,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,IAAI,WAAW,kBAAkB,uBAAuB,CAAC;YACjE,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,MAAM;aAChB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,4BAA4B,QAAQ,KAAK,YAAY,EAAE;aACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,QAAgB,EAChB,MAAe;QAEf,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;YACrE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,qBAAqB,QAAQ,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAChG,CAAC;YACJ,CAAC;YAED,sBAAsB;YACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEpE,8CAA8C;YAC9C,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;gBAChC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,aAAa,QAAQ,eAAe,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;iBAC/E,CAAC;YACJ,CAAC;YAED,6DAA6D;YAC7D,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAErD,yCAAyC;YACzC,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,SAAS,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,QAAQ,QAAQ,EAAE,CAAC;YAE/E,IAAI,MAAM,IAAI,kBAAkB,EAAE,CAAC;gBACjC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,GAAG,WAAW,WAAW,kBAAkB,wBAAwB;iBAC7E,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,WAAW;aACrB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,aAAa,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,cAAc,QAAQ,KAAK,YAAY,EAAE;aAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,cAAc,CAAC,QAAgB;QAC3C,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;YACrE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,OAAO;oBACpB,OAAO,EAAE,qBAAqB,QAAQ,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAChG,CAAC;YACJ,CAAC;YAED,iEAAiE;YACjE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1E,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,4EAA4E;gBAC5E,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,qDAAqD;oBACrD,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzD,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,OAAO;wBACpB,OAAO,EAAE,yBAAyB,QAAQ,KAAK,YAAY,EAAE;qBAC9D,CAAC;gBACJ,CAAC;gBACD,sEAAsE;gBACtE,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,8BAA8B,QAAQ,EAAE;iBAClD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,wCAAwC;gBACxC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;YAED,sCAAsC;YACtC,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,8BAA8B,QAAQ,EAAE;aAClD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6BAA6B;YAC7B,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,yBAAyB,QAAQ,KAAK,YAAY,EAAE;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YACzD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa;oBACnC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACtG,CAAC,CAAC,mBAAmB,CAAC;gBACxB,MAAM,WAAW,GACf,MAAM,CAAC,YAAY,KAAK,SAAS;oBAC/B,CAAC,CAAC,WAAW,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG;oBAC5D,CAAC,CAAC,EAAE,CAAC;gBACT,OAAO,GAAG,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,GAAG,WAAW,EAAE,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACvF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,iEAAiE;IACnE,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,2EAA2E;QAC3E,8DAA8D;QAC9D,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEhE,wCAAwC;QACxC,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;QAErC,qDAAqD;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,yDAAyD;YACzD,MAAM,UAAU,GAAG,IAAI,uBAAuB,EAAE,CAAC;YACjD,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEvE,2BAA2B;YAC3B,YAAY,CAAC,gBAAgB,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;YACzD,YAAY,CAAC,gBAAgB,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;YACvD,YAAY,CAAC,gBAAgB,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACvD,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF,CAAC"}
@@ -18,8 +18,7 @@ export const keyCommand = {
18
18
  content: 'No configuration available',
19
19
  };
20
20
  }
21
- const settingsService = config.getSettingsService();
22
- const useSettingsService = settingsService !== null;
21
+ // Settings service not needed for command-level auth
23
22
  const providerManager = config.getProviderManager();
24
23
  if (!providerManager) {
25
24
  return {
@@ -33,65 +32,28 @@ export const keyCommand = {
33
32
  const apiKey = args?.trim();
34
33
  // If no key provided or 'none', remove the key
35
34
  if (!apiKey || apiKey.toLowerCase() === 'none') {
36
- // Clear the API key
35
+ // Clear authentication using the provider's method (which now stores in SettingsService)
37
36
  if (activeProvider.setApiKey) {
38
37
  activeProvider.setApiKey('');
39
- if (useSettingsService && settingsService) {
40
- // Use SettingsService to update provider settings
41
- try {
42
- await settingsService.updateSettings(providerName, {
43
- apiKey: undefined,
44
- });
45
- }
46
- catch (error) {
47
- console.error('SettingsService error, using fallback:', error);
48
- config.setEphemeralSetting('auth-key', undefined);
49
- }
50
- }
51
- else {
52
- // Fallback to direct ephemeral setting
53
- config.setEphemeralSetting('auth-key', undefined);
54
- }
55
- // If this is the Gemini provider, we might need to switch auth mode
56
- const requiresAuthRefresh = providerName === 'gemini';
57
- if (requiresAuthRefresh) {
58
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
59
- }
60
- const isPaidMode = activeProvider.isPaidMode?.() ?? true;
61
- const paymentMessage = !isPaidMode && providerName === 'gemini'
62
- ? '\n✅ You are now in FREE MODE - using OAuth authentication'
63
- : '';
64
- return {
65
- type: 'message',
66
- messageType: 'info',
67
- content: `API key removed for provider '${providerName}'${paymentMessage}`,
68
- };
69
38
  }
70
- else {
71
- return {
72
- type: 'message',
73
- messageType: 'error',
74
- content: `Provider '${providerName}' does not support API key updates`,
75
- };
39
+ // If this is the Gemini provider, we might need to switch auth mode
40
+ const requiresAuthRefresh = providerName === 'gemini';
41
+ if (requiresAuthRefresh) {
42
+ await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
76
43
  }
44
+ const isPaidMode = activeProvider.isPaidMode?.() ?? true;
45
+ const paymentMessage = !isPaidMode && providerName === 'gemini'
46
+ ? '\n✅ You are now in FREE MODE - using OAuth authentication'
47
+ : '';
48
+ return {
49
+ type: 'message',
50
+ messageType: 'info',
51
+ content: `API key removed for provider '${providerName}'${paymentMessage}`,
52
+ };
77
53
  }
78
- // Set the API key
54
+ // Set the API key using the provider's method (which now stores in SettingsService)
79
55
  if (activeProvider.setApiKey) {
80
56
  activeProvider.setApiKey(apiKey);
81
- if (useSettingsService && settingsService) {
82
- // Use SettingsService to update provider settings
83
- try {
84
- await settingsService.updateSettings(providerName, { apiKey });
85
- }
86
- catch (error) {
87
- console.error('SettingsService error, using fallback:', error);
88
- config.setEphemeralSetting('auth-key', apiKey);
89
- }
90
- }
91
- else {
92
- // Fallback to direct ephemeral setting
93
- config.setEphemeralSetting('auth-key', apiKey);
94
- }
95
57
  // If this is the Gemini provider, we need to refresh auth to use API key mode
96
58
  const requiresAuthRefresh = providerName === 'gemini';
97
59
  if (requiresAuthRefresh) {
@@ -1 +1 @@
1
- {"version":3,"file":"keyCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/keyCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/keyCommand.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ describe('keyCommand', () => {
44
44
  const testApiKey = 'test-api-key-12345';
45
45
  const result = await keyCommand.action(mockContext, testApiKey);
46
46
  expect(mockActiveProvider.setApiKey).toHaveBeenCalledWith(testApiKey);
47
- expect(mockConfig.setEphemeralSetting).toHaveBeenCalledWith('auth-key', testApiKey);
47
+ // setEphemeralSetting is no longer called - auth is stored via SettingsService through activeProvider.setApiKey()
48
48
  expect(result).toEqual({
49
49
  type: 'message',
50
50
  messageType: 'info',
@@ -57,7 +57,7 @@ describe('keyCommand', () => {
57
57
  }
58
58
  const result = await keyCommand.action(mockContext, '');
59
59
  expect(mockActiveProvider.setApiKey).toHaveBeenCalledWith('');
60
- expect(mockConfig.setEphemeralSetting).toHaveBeenCalledWith('auth-key', undefined);
60
+ // setEphemeralSetting is no longer called - auth is stored via SettingsService through activeProvider.setApiKey()
61
61
  expect(result).toEqual({
62
62
  type: 'message',
63
63
  messageType: 'info',
@@ -70,7 +70,7 @@ describe('keyCommand', () => {
70
70
  }
71
71
  const result = await keyCommand.action(mockContext, 'none');
72
72
  expect(mockActiveProvider.setApiKey).toHaveBeenCalledWith('');
73
- expect(mockConfig.setEphemeralSetting).toHaveBeenCalledWith('auth-key', undefined);
73
+ // setEphemeralSetting is no longer called - auth is stored via SettingsService through activeProvider.setApiKey()
74
74
  expect(result).toEqual({
75
75
  type: 'message',
76
76
  messageType: 'info',
@@ -1 +1 @@
1
- {"version":3,"file":"keyCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/keyCommand.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/keyCommand.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,WAA2B,CAAC;IAChC,IAAI,kBAIH,CAAC;IACF,IAAI,mBAGH,CAAC;IACF,IAAI,UAKH,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,8BAA8B;QAC9B,kBAAkB,GAAG;YACnB,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;SAC1C,CAAC;QAEF,+BAA+B;QAC/B,mBAAmB,GAAG;YACpB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;YAC9D,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;SAChE,CAAC;QAEF,2CAA2C;QAC3C,UAAU,GAAG;YACX,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,mBAAmB,CAAC;YAChE,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC5B,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;YACpB,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,uCAAuC;SAC3F,CAAC;QAEF,WAAW,GAAG,wBAAwB,CAAC;YACrC,QAAQ,EAAE;gBACR,MAAM,EAAE,UAAU;aACnB;SACgD,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAEhE,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACtE,kHAAkH;QAElH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,6HAA6H;SACvI,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAExD,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9D,kHAAkH;QAElH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,8CAA8C;SACxD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC9D,kHAAkH;QAElH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,8CAA8C;SACxD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,iDAAiD;QACjD,kBAAkB,CAAC,SAAS,GAAG,SAAS,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,2DAA2D;SACrE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,0BAA0B,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG;YACtB,GAAG,WAAW;YACd,sBAAsB,EAAE,0BAA0B;SACQ,CAAC;QAE7D,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,MAAM,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAExD,MAAM,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAE1D,yBAAyB;QACzB,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,0BAA0B,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAE5D,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,iDAAiD;QACjD,kBAAkB,CAAC,SAAS,GAAG,SAAS,CAAC;QAEzC,MAAM,0BAA0B,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG;YACtB,GAAG,WAAW;YACd,sBAAsB,EAAE,0BAA0B;SACQ,CAAC;QAE7D,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,MAAM,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAExD,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAE1D,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -62,14 +62,21 @@ export const keyfileCommand = {
62
62
  // Handle removal
63
63
  if (filePath === 'none') {
64
64
  const removedPath = context.services.settings.getProviderKeyfile(providerName);
65
- // Clear the API key from the provider
66
- if (activeProvider.setApiKey) {
65
+ // Clear authentication using the provider's method (which now stores in SettingsService)
66
+ if ('clearAuth' in activeProvider &&
67
+ typeof activeProvider.clearAuth === 'function') {
68
+ activeProvider.clearAuth();
69
+ }
70
+ else if (activeProvider.setApiKey) {
71
+ // Fallback to clearing just the API key if clearAuth is not available
67
72
  activeProvider.setApiKey('');
68
73
  }
69
- // Clear from ephemeral settings
70
- if (context.services.config) {
71
- context.services.config.setEphemeralSetting('auth-keyfile', undefined);
72
- context.services.config.setEphemeralSetting('auth-key', undefined);
74
+ else {
75
+ return {
76
+ type: 'message',
77
+ messageType: 'error',
78
+ content: `Provider '${providerName}' does not support keyfile commands`,
79
+ };
73
80
  }
74
81
  // Remove from saved settings
75
82
  if (removedPath) {
@@ -86,7 +93,7 @@ export const keyfileCommand = {
86
93
  const resolvedPath = filePath.replace(/^~/, homedir());
87
94
  // Check if file exists
88
95
  await fs.access(resolvedPath);
89
- // Read the key to set it on the provider
96
+ // Verify the file is not empty
90
97
  const apiKey = (await fs.readFile(resolvedPath, 'utf-8')).trim();
91
98
  if (!apiKey) {
92
99
  return {
@@ -95,46 +102,37 @@ export const keyfileCommand = {
95
102
  content: 'The specified file is empty',
96
103
  };
97
104
  }
98
- // Set API key on provider
105
+ // Get the active provider
99
106
  const activeProvider = providerManager.getActiveProvider();
100
107
  const providerName = activeProvider.name;
101
- if (activeProvider.setApiKey) {
102
- activeProvider.setApiKey(apiKey);
103
- // Store the keyfile PATH in ephemeral settings, not the key itself
104
- if (context.services.config) {
105
- context.services.config.setEphemeralSetting('auth-keyfile', filePath);
106
- // Remove any stored auth-key since we're using keyfile
107
- context.services.config.setEphemeralSetting('auth-key', undefined);
108
- }
109
- // Check if we're now in paid mode
110
- const isPaidMode = activeProvider.isPaidMode?.() ?? true;
111
- const paymentWarning = isPaidMode
112
- ? '\nWARNING: You are now in PAID MODE - API usage will be charged to your account'
113
- : '';
114
- // Trigger payment mode check if available
115
- const extendedContext = context;
116
- if (extendedContext.checkPaymentModeChange) {
117
- setTimeout(extendedContext.checkPaymentModeChange, 100);
118
- }
119
- return {
120
- type: 'message',
121
- messageType: 'info',
122
- content: `API key loaded from ${resolvedPath} for provider '${providerName}'${paymentWarning}`,
123
- };
108
+ // Store the keyfile PATH in SettingsService (ephemeral settings)
109
+ // The AuthPrecedenceResolver will read from here when needed
110
+ if (context.services.config) {
111
+ context.services.config.setEphemeralSetting('auth-keyfile', filePath);
112
+ // Remove any stored auth-key since we're using keyfile
113
+ context.services.config.setEphemeralSetting('auth-key', undefined);
124
114
  }
125
- else {
126
- return {
127
- type: 'message',
128
- messageType: 'error',
129
- content: `Provider '${providerName}' does not support API key updates`,
130
- };
115
+ // Check if we're now in paid mode
116
+ const isPaidMode = activeProvider.isPaidMode?.() ?? true;
117
+ const paymentWarning = isPaidMode
118
+ ? '\nWARNING: You are now in PAID MODE - API usage will be charged to your account'
119
+ : '';
120
+ // Trigger payment mode check if available
121
+ const extendedContext = context;
122
+ if (extendedContext.checkPaymentModeChange) {
123
+ setTimeout(extendedContext.checkPaymentModeChange, 100);
131
124
  }
125
+ return {
126
+ type: 'message',
127
+ messageType: 'info',
128
+ content: `API key loaded from ${resolvedPath} for provider '${providerName}'${paymentWarning}`,
129
+ };
132
130
  }
133
131
  catch (error) {
134
132
  return {
135
133
  type: 'message',
136
134
  messageType: 'error',
137
- content: `Failed to load keyfile: ${error instanceof Error ? error.message : String(error)}`,
135
+ content: `Failed to manage keyfile: ${error instanceof Error ? error.message : String(error)}`,
138
136
  };
139
137
  }
140
138
  }
@@ -142,7 +140,7 @@ export const keyfileCommand = {
142
140
  return {
143
141
  type: 'message',
144
142
  messageType: 'error',
145
- content: `Failed to manage keyfile: ${error instanceof Error ? error.message : String(error)}`,
143
+ content: `Failed to access provider: ${error instanceof Error ? error.message : String(error)}`,
146
144
  };
147
145
  }
148
146
  },