centaurus-cli 2.0.0 → 2.0.2

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 (103) hide show
  1. package/CONFIG_GUIDE.md +100 -106
  2. package/README.md +68 -63
  3. package/dist/cli-adapter.d.ts +9 -3
  4. package/dist/cli-adapter.d.ts.map +1 -1
  5. package/dist/cli-adapter.js +123 -164
  6. package/dist/cli-adapter.js.map +1 -1
  7. package/dist/commands/CommandParser.d.ts +1 -1
  8. package/dist/commands/CommandParser.d.ts.map +1 -1
  9. package/dist/commands/CommandParser.js +3 -18
  10. package/dist/commands/CommandParser.js.map +1 -1
  11. package/dist/commands/view-duplication-logs.d.ts +5 -0
  12. package/dist/commands/view-duplication-logs.d.ts.map +1 -0
  13. package/dist/commands/view-duplication-logs.js +14 -0
  14. package/dist/commands/view-duplication-logs.js.map +1 -0
  15. package/dist/config/ConfigManager.d.ts +10 -7
  16. package/dist/config/ConfigManager.d.ts.map +1 -1
  17. package/dist/config/ConfigManager.js +43 -142
  18. package/dist/config/ConfigManager.js.map +1 -1
  19. package/dist/config/defaultConfig.d.ts +0 -4
  20. package/dist/config/defaultConfig.d.ts.map +1 -1
  21. package/dist/config/defaultConfig.js +1 -6
  22. package/dist/config/defaultConfig.js.map +1 -1
  23. package/dist/config/manager.d.ts +15 -13
  24. package/dist/config/manager.d.ts.map +1 -1
  25. package/dist/config/manager.js +52 -41
  26. package/dist/config/manager.js.map +1 -1
  27. package/dist/config/models.d.ts +31 -0
  28. package/dist/config/models.d.ts.map +1 -0
  29. package/dist/config/models.js +49 -0
  30. package/dist/config/models.js.map +1 -0
  31. package/dist/config/types.d.ts +0 -3
  32. package/dist/config/types.d.ts.map +1 -1
  33. package/dist/config/types.js +0 -1
  34. package/dist/config/types.js.map +1 -1
  35. package/dist/index.js +27 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/prompts/system-prompt.d.ts +1 -1
  38. package/dist/prompts/system-prompt.d.ts.map +1 -1
  39. package/dist/prompts/system-prompt.js +0 -1
  40. package/dist/prompts/system-prompt.js.map +1 -1
  41. package/dist/services/ai-service-client.d.ts +82 -0
  42. package/dist/services/ai-service-client.d.ts.map +1 -0
  43. package/dist/services/ai-service-client.js +254 -0
  44. package/dist/services/ai-service-client.js.map +1 -0
  45. package/dist/services/api-client.js +3 -3
  46. package/dist/services/api-client.js.map +1 -1
  47. package/dist/tools/ToolRegistry.d.ts +14 -3
  48. package/dist/tools/ToolRegistry.d.ts.map +1 -1
  49. package/dist/tools/ToolRegistry.js +46 -34
  50. package/dist/tools/ToolRegistry.js.map +1 -1
  51. package/dist/tools/command.d.ts.map +1 -1
  52. package/dist/tools/command.js +17 -3
  53. package/dist/tools/command.js.map +1 -1
  54. package/dist/tools/file-ops.js +3 -3
  55. package/dist/tools/file-ops.js.map +1 -1
  56. package/dist/tools/web-search.js +2 -2
  57. package/dist/tools/web-search.js.map +1 -1
  58. package/dist/types/index.d.ts +1 -0
  59. package/dist/types/index.d.ts.map +1 -1
  60. package/dist/ui/components/App.d.ts +3 -2
  61. package/dist/ui/components/App.d.ts.map +1 -1
  62. package/dist/ui/components/App.js +107 -16
  63. package/dist/ui/components/App.js.map +1 -1
  64. package/dist/ui/components/CodeBlock.d.ts.map +1 -1
  65. package/dist/ui/components/CodeBlock.js +15 -3
  66. package/dist/ui/components/CodeBlock.js.map +1 -1
  67. package/dist/ui/components/ConfirmPrompt.d.ts.map +1 -1
  68. package/dist/ui/components/ConfirmPrompt.js +32 -20
  69. package/dist/ui/components/ConfirmPrompt.js.map +1 -1
  70. package/dist/ui/components/DiffViewer.d.ts.map +1 -1
  71. package/dist/ui/components/DiffViewer.js +16 -2
  72. package/dist/ui/components/DiffViewer.js.map +1 -1
  73. package/dist/ui/components/InputBox.d.ts.map +1 -1
  74. package/dist/ui/components/InputBox.js +26 -9
  75. package/dist/ui/components/InputBox.js.map +1 -1
  76. package/dist/ui/components/LoadingIndicator.d.ts.map +1 -1
  77. package/dist/ui/components/LoadingIndicator.js +6 -2
  78. package/dist/ui/components/LoadingIndicator.js.map +1 -1
  79. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
  80. package/dist/ui/components/MarkdownRenderer.js +8 -12
  81. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  82. package/dist/ui/components/StreamingMessageDisplay.d.ts +6 -7
  83. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
  84. package/dist/ui/components/StreamingMessageDisplay.js +69 -12
  85. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  86. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
  87. package/dist/ui/components/ToolExecutionMessage.js +44 -16
  88. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  89. package/dist/ui/components/WelcomeBanner.d.ts.map +1 -1
  90. package/dist/ui/components/WelcomeBanner.js.map +1 -1
  91. package/dist/ui/utils/duplication-detector.d.ts +32 -0
  92. package/dist/ui/utils/duplication-detector.d.ts.map +1 -0
  93. package/dist/ui/utils/duplication-detector.js +227 -0
  94. package/dist/ui/utils/duplication-detector.js.map +1 -0
  95. package/dist/ui/utils/duplication-logger.d.ts +21 -0
  96. package/dist/ui/utils/duplication-logger.d.ts.map +1 -0
  97. package/dist/ui/utils/duplication-logger.js +85 -0
  98. package/dist/ui/utils/duplication-logger.js.map +1 -0
  99. package/dist/ui/utils/terminal-scanner.d.ts +19 -0
  100. package/dist/ui/utils/terminal-scanner.d.ts.map +1 -0
  101. package/dist/ui/utils/terminal-scanner.js +217 -0
  102. package/dist/ui/utils/terminal-scanner.js.map +1 -0
  103. package/package.json +2 -13
@@ -10,11 +10,9 @@ export declare class ConfigManager {
10
10
  private config;
11
11
  private encryptionKey;
12
12
  private useBackendSync;
13
+ private migrationPerformed;
13
14
  private constructor();
14
15
  static getInstance(): ConfigManager;
15
- private getMachineKey;
16
- private encrypt;
17
- private decrypt;
18
16
  initialize(): Promise<void>;
19
17
  /**
20
18
  * Enable backend synchronization
@@ -37,15 +35,11 @@ export declare class ConfigManager {
37
35
  save(): Promise<void>;
38
36
  get(key: keyof CentaurusConfig): any;
39
37
  getAll(): CentaurusConfig;
40
- getProvider(): string;
41
38
  getModel(): string;
42
- getApiKey(provider?: string): string | undefined;
43
39
  isAutoAcceptEnabled(): boolean;
44
40
  getTheme(): string;
45
41
  set<K extends keyof CentaurusConfig>(key: K, value: CentaurusConfig[K]): Promise<void>;
46
- setProvider(provider: string): Promise<void>;
47
42
  setModel(model: string): Promise<void>;
48
- setApiKey(provider: string, apiKey: string): Promise<void>;
49
43
  setAutoAccept(enabled: boolean): Promise<void>;
50
44
  setTheme(theme: string): Promise<void>;
51
45
  validateConfig(): {
@@ -54,6 +48,15 @@ export declare class ConfigManager {
54
48
  };
55
49
  reset(): Promise<void>;
56
50
  exportConfig(): object;
51
+ /**
52
+ * Check if configuration migration was performed
53
+ * This is used to show a one-time migration message to users
54
+ */
55
+ wasMigrationPerformed(): boolean;
56
+ /**
57
+ * Reset migration flag (after showing migration message)
58
+ */
59
+ resetMigrationFlag(): void;
57
60
  }
58
61
  export default ConfigManager;
59
62
  //# sourceMappingURL=ConfigManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAiB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGpE,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO;IASP,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,OAAO;IAuBT,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;YACW,eAAe;IA8B7B;;OAEG;YACW,aAAa;YAkBb,eAAe;IASvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B,GAAG,CAAC,GAAG,EAAE,MAAM,eAAe,GAAG,GAAG;IAIpC,MAAM,IAAI,eAAe;IAKzB,WAAW,IAAI,MAAM;IAIrB,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAchD,mBAAmB,IAAI,OAAO;IAI9B,QAAQ,IAAI,MAAM;IAKZ,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1D,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,cAAc,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAuBhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,YAAY,IAAI,MAAM;CAgBvB;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAiB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIpE,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,kBAAkB,CAAkB;IAE5C,OAAO;IAOP,MAAM,CAAC,WAAW,IAAI,aAAa;IAQ7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;YACW,eAAe;IA2B7B;;OAEG;YACW,aAAa;YAiBb,eAAe;IASvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,GAAG,CAAC,GAAG,EAAE,MAAM,eAAe,GAAG,GAAG;IAIpC,MAAM,IAAI,eAAe;IAKzB,QAAQ,IAAI,MAAM;IAIlB,mBAAmB,IAAI,OAAO;IAI9B,QAAQ,IAAI,MAAM;IAKZ,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,cAAc,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAchD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,qBAAqB,IAAI,OAAO;IAIhC;;OAEG;IACH,kBAAkB,IAAI,IAAI;CAG3B;AAED,eAAe,aAAa,CAAC"}
@@ -6,21 +6,21 @@
6
6
  import * as fs from 'fs/promises';
7
7
  import * as path from 'path';
8
8
  import * as os from 'os';
9
- import * as crypto from 'crypto';
10
9
  import { defaultConfig } from './defaultConfig.js';
11
10
  import { apiClient } from '../services/api-client.js';
11
+ import { isValidModel, getInvalidModelError } from './models.js';
12
12
  export class ConfigManager {
13
13
  static instance;
14
14
  configPath;
15
15
  config;
16
16
  encryptionKey;
17
17
  useBackendSync = false;
18
+ migrationPerformed = false;
18
19
  constructor() {
19
20
  const configDir = path.join(os.homedir(), '.centaurus');
20
21
  this.configPath = path.join(configDir, 'config.json');
21
22
  this.config = { ...defaultConfig };
22
- // Generate encryption key based on machine ID
23
- this.encryptionKey = this.getMachineKey();
23
+ this.encryptionKey = ''; // No longer needed but kept for compatibility
24
24
  }
25
25
  static getInstance() {
26
26
  if (!ConfigManager.instance) {
@@ -28,44 +28,6 @@ export class ConfigManager {
28
28
  }
29
29
  return ConfigManager.instance;
30
30
  }
31
- getMachineKey() {
32
- // Use a combination of hostname and username for encryption key
33
- const hostname = os.hostname();
34
- const username = os.userInfo().username;
35
- return crypto.createHash('sha256')
36
- .update(`${hostname}:${username}:centaurus`)
37
- .digest('hex')
38
- .substring(0, 32);
39
- }
40
- encrypt(text) {
41
- const algorithm = 'aes-256-gcm';
42
- const iv = crypto.randomBytes(16);
43
- const cipher = crypto.createCipheriv(algorithm, Buffer.from(this.encryptionKey), iv);
44
- let encrypted = cipher.update(text, 'utf8', 'hex');
45
- encrypted += cipher.final('hex');
46
- const authTag = cipher.getAuthTag();
47
- return iv.toString('hex') + ':' + authTag.toString('hex') + ':' + encrypted;
48
- }
49
- decrypt(encryptedData) {
50
- try {
51
- const parts = encryptedData.split(':');
52
- if (parts.length !== 3)
53
- return encryptedData; // Not encrypted
54
- const algorithm = 'aes-256-gcm';
55
- const iv = Buffer.from(parts[0], 'hex');
56
- const authTag = Buffer.from(parts[1], 'hex');
57
- const encrypted = parts[2];
58
- const decipher = crypto.createDecipheriv(algorithm, Buffer.from(this.encryptionKey), iv);
59
- decipher.setAuthTag(authTag);
60
- let decrypted = decipher.update(encrypted, 'hex', 'utf8');
61
- decrypted += decipher.final('utf8');
62
- return decrypted;
63
- }
64
- catch (error) {
65
- // If decryption fails, return the original (might be plain text from old version)
66
- return encryptedData;
67
- }
68
- }
69
31
  async initialize() {
70
32
  try {
71
33
  await this.load();
@@ -106,9 +68,6 @@ export class ConfigManager {
106
68
  if (settings.defaultModel) {
107
69
  this.config.model = settings.defaultModel;
108
70
  }
109
- if (settings.defaultProvider) {
110
- this.config.provider = settings.defaultProvider;
111
- }
112
71
  if (settings.theme) {
113
72
  this.config.theme = settings.theme;
114
73
  }
@@ -133,7 +92,6 @@ export class ConfigManager {
133
92
  try {
134
93
  await apiClient.updateSettings({
135
94
  defaultModel: this.config.model,
136
- defaultProvider: this.config.provider,
137
95
  theme: this.config.theme,
138
96
  autoSave: this.config.autoAccept,
139
97
  });
@@ -156,18 +114,29 @@ export class ConfigManager {
156
114
  try {
157
115
  const data = await fs.readFile(this.configPath, 'utf-8');
158
116
  const loadedConfig = JSON.parse(data);
159
- // Decrypt API keys
160
- if (loadedConfig.googleApiKey) {
161
- loadedConfig.googleApiKey = this.decrypt(loadedConfig.googleApiKey);
117
+ // Detect if old config format exists (migration needed)
118
+ const hasDeprecatedFields = 'googleApiKey' in loadedConfig ||
119
+ 'openrouterApiKey' in loadedConfig ||
120
+ 'openRouterApiKey' in loadedConfig ||
121
+ 'anthropicApiKey' in loadedConfig ||
122
+ 'provider' in loadedConfig;
123
+ if (hasDeprecatedFields) {
124
+ this.migrationPerformed = true;
125
+ // Remove deprecated fields
126
+ delete loadedConfig.googleApiKey;
127
+ delete loadedConfig.openrouterApiKey;
128
+ delete loadedConfig.openRouterApiKey;
129
+ delete loadedConfig.anthropicApiKey;
130
+ delete loadedConfig.provider;
131
+ // Preserve model preference and other settings
132
+ this.config = { ...defaultConfig, ...loadedConfig };
133
+ // Save the migrated config immediately
134
+ await this.save();
162
135
  }
163
- if (loadedConfig.openRouterApiKey) {
164
- loadedConfig.openRouterApiKey = this.decrypt(loadedConfig.openRouterApiKey);
136
+ else {
137
+ // Merge with defaults to ensure all fields exist
138
+ this.config = { ...defaultConfig, ...loadedConfig };
165
139
  }
166
- if (loadedConfig.anthropicApiKey) {
167
- loadedConfig.anthropicApiKey = this.decrypt(loadedConfig.anthropicApiKey);
168
- }
169
- // Merge with defaults to ensure all fields exist
170
- this.config = { ...defaultConfig, ...loadedConfig };
171
140
  }
172
141
  catch (error) {
173
142
  if (error.code !== 'ENOENT') {
@@ -179,19 +148,7 @@ export class ConfigManager {
179
148
  }
180
149
  async save() {
181
150
  await this.ensureConfigDir();
182
- // Create a copy for saving with encrypted API keys
183
- const configToSave = { ...this.config };
184
- // Encrypt API keys before saving
185
- if (configToSave.googleApiKey) {
186
- configToSave.googleApiKey = this.encrypt(configToSave.googleApiKey);
187
- }
188
- if (configToSave.openRouterApiKey) {
189
- configToSave.openRouterApiKey = this.encrypt(configToSave.openRouterApiKey);
190
- }
191
- if (configToSave.anthropicApiKey) {
192
- configToSave.anthropicApiKey = this.encrypt(configToSave.anthropicApiKey);
193
- }
194
- await fs.writeFile(this.configPath, JSON.stringify(configToSave, null, 2), 'utf-8');
151
+ await fs.writeFile(this.configPath, JSON.stringify(this.config, null, 2), 'utf-8');
195
152
  }
196
153
  // Getters
197
154
  get(key) {
@@ -201,25 +158,9 @@ export class ConfigManager {
201
158
  // Return a copy to prevent direct modification
202
159
  return { ...this.config };
203
160
  }
204
- getProvider() {
205
- return this.config.provider;
206
- }
207
161
  getModel() {
208
162
  return this.config.model;
209
163
  }
210
- getApiKey(provider) {
211
- const p = provider || this.config.provider;
212
- switch (p) {
213
- case 'google':
214
- return this.config.googleApiKey;
215
- case 'openrouter':
216
- return this.config.openRouterApiKey;
217
- case 'anthropic':
218
- return this.config.anthropicApiKey;
219
- default:
220
- return undefined;
221
- }
222
- }
223
164
  isAutoAcceptEnabled() {
224
165
  return this.config.autoAccept;
225
166
  }
@@ -232,50 +173,15 @@ export class ConfigManager {
232
173
  await this.save();
233
174
  await this.syncToBackend();
234
175
  }
235
- async setProvider(provider) {
236
- if (!['google', 'openrouter', 'anthropic'].includes(provider)) {
237
- throw new Error(`Invalid provider: ${provider}`);
238
- }
239
- this.config.provider = provider;
240
- await this.save();
241
- await this.syncToBackend();
242
- }
243
176
  async setModel(model) {
177
+ // Validate model before setting
178
+ if (!isValidModel(model)) {
179
+ throw new Error(getInvalidModelError(model));
180
+ }
244
181
  this.config.model = model;
245
182
  await this.save();
246
183
  await this.syncToBackend();
247
184
  }
248
- async setApiKey(provider, apiKey) {
249
- // If backend sync is enabled, store API key in backend
250
- if (this.useBackendSync && apiClient.isAuthenticated()) {
251
- try {
252
- await apiClient.storeApiKey({
253
- provider: provider,
254
- keyName: `${provider} API Key`,
255
- apiKey: apiKey,
256
- });
257
- }
258
- catch (error) {
259
- console.error('Failed to store API key in backend:', error);
260
- // Fall back to local storage
261
- }
262
- }
263
- // Also store locally for offline access
264
- switch (provider) {
265
- case 'google':
266
- this.config.googleApiKey = apiKey;
267
- break;
268
- case 'openrouter':
269
- this.config.openRouterApiKey = apiKey;
270
- break;
271
- case 'anthropic':
272
- this.config.anthropicApiKey = apiKey;
273
- break;
274
- default:
275
- throw new Error(`Invalid provider: ${provider}`);
276
- }
277
- await this.save();
278
- }
279
185
  async setAutoAccept(enabled) {
280
186
  this.config.autoAccept = enabled;
281
187
  await this.save();
@@ -292,16 +198,9 @@ export class ConfigManager {
292
198
  // Validation
293
199
  validateConfig() {
294
200
  const errors = [];
295
- if (!this.config.provider) {
296
- errors.push('Provider is not set');
297
- }
298
201
  if (!this.config.model) {
299
202
  errors.push('Model is not set');
300
203
  }
301
- const apiKey = this.getApiKey();
302
- if (!apiKey) {
303
- errors.push(`API key for ${this.config.provider} is not set`);
304
- }
305
204
  return {
306
205
  valid: errors.length === 0,
307
206
  errors
@@ -314,18 +213,20 @@ export class ConfigManager {
314
213
  }
315
214
  // Export configuration (without sensitive data)
316
215
  exportConfig() {
317
- const exported = { ...this.config };
318
- // Remove sensitive data
319
- delete exported.googleApiKey;
320
- delete exported.openRouterApiKey;
321
- delete exported.anthropicApiKey;
322
- // Add masked indicators
323
- return {
324
- ...exported,
325
- googleApiKey: this.config.googleApiKey ? '***SET***' : undefined,
326
- openRouterApiKey: this.config.openRouterApiKey ? '***SET***' : undefined,
327
- anthropicApiKey: this.config.anthropicApiKey ? '***SET***' : undefined
328
- };
216
+ return { ...this.config };
217
+ }
218
+ /**
219
+ * Check if configuration migration was performed
220
+ * This is used to show a one-time migration message to users
221
+ */
222
+ wasMigrationPerformed() {
223
+ return this.migrationPerformed;
224
+ }
225
+ /**
226
+ * Reset migration flag (after showing migration message)
227
+ */
228
+ resetMigrationFlag() {
229
+ this.migrationPerformed = false;
329
230
  }
330
231
  }
331
232
  export default ConfigManager;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,7 @@
3
3
  * Defines default settings and configuration types
4
4
  */
5
5
  export interface CentaurusConfig {
6
- provider: string;
7
6
  model: string;
8
- googleApiKey?: string;
9
- openRouterApiKey?: string;
10
- anthropicApiKey?: string;
11
7
  autoAccept: boolean;
12
8
  streamResponses: boolean;
13
9
  saveSession: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAE9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IAGd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IAGrB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAG5B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IAGnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,eAmC3B,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAE9B,KAAK,EAAE,MAAM,CAAC;IAGd,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IAGrB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAG5B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IAGnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,eA6B3B,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -3,13 +3,8 @@
3
3
  * Defines default settings and configuration types
4
4
  */
5
5
  export const defaultConfig = {
6
- // Provider settings
7
- provider: 'google',
6
+ // Model settings
8
7
  model: 'gemini-2.0-flash-exp',
9
- // API Keys (will be set during first run)
10
- googleApiKey: undefined,
11
- openRouterApiKey: undefined,
12
- anthropicApiKey: undefined,
13
8
  // Features
14
9
  autoAccept: false,
15
10
  streamResponses: true,
@@ -1 +1 @@
1
- {"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuCH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,oBAAoB;IACpB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,sBAAsB;IAE7B,0CAA0C;IAC1C,YAAY,EAAE,SAAS;IACvB,gBAAgB,EAAE,SAAS;IAC3B,eAAe,EAAE,SAAS;IAE1B,WAAW;IACX,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;IAEjB,cAAc;IACd,KAAK,EAAE,SAAS;IAChB,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,IAAI;IAExB,gBAAgB;IAChB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,KAAK,EAAE,aAAa;IACjC,UAAU,EAAE,CAAC;IAEb,mBAAmB;IACnB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,EAAE,EAAE,wCAAwC;IAE/D,oBAAoB;IACpB,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,SAAS,EAAO,OAAO;QAChC,SAAS,EAAE,SAAS,EAAK,cAAc;QACvC,OAAO,EAAE,SAAS,EAAO,QAAQ;QACjC,KAAK,EAAE,SAAS,EAAS,MAAM;QAC/B,OAAO,EAAE,SAAS,EAAO,SAAS;QAClC,IAAI,EAAE,SAAS,EAAU,WAAW;QACpC,IAAI,EAAE,SAAS,EAAU,QAAQ;QACjC,OAAO,EAAE,SAAS,CAAO,OAAO;KACjC;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;IACD,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../../src/config/defaultConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,iBAAiB;IACjB,KAAK,EAAE,sBAAsB;IAE7B,WAAW;IACX,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;IAEjB,cAAc;IACd,KAAK,EAAE,SAAS;IAChB,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,IAAI;IAExB,gBAAgB;IAChB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,KAAK,EAAE,aAAa;IACjC,UAAU,EAAE,CAAC;IAEb,mBAAmB;IACnB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,EAAE,EAAE,wCAAwC;IAE/D,oBAAoB;IACpB,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,SAAS,EAAO,OAAO;QAChC,SAAS,EAAE,SAAS,EAAK,cAAc;QACvC,OAAO,EAAE,SAAS,EAAO,QAAQ;QACjC,KAAK,EAAE,SAAS,EAAS,MAAM;QAC/B,OAAO,EAAE,SAAS,EAAO,SAAS;QAClC,IAAI,EAAE,SAAS,EAAU,WAAW;QACpC,IAAI,EAAE,SAAS,EAAU,QAAQ;QACjC,OAAO,EAAE,SAAS,CAAO,OAAO;KACjC;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;IACD,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -3,6 +3,7 @@ export declare class ConfigManager {
3
3
  private configPath;
4
4
  private config;
5
5
  private useBackendSync;
6
+ private migrationPerformed;
6
7
  constructor();
7
8
  /**
8
9
  * Enable backend synchronization
@@ -16,18 +17,6 @@ export declare class ConfigManager {
16
17
  * Sync settings to backend
17
18
  */
18
19
  private syncToBackend;
19
- /**
20
- * Parse comma-separated API keys into an array
21
- */
22
- private parseApiKeys;
23
- /**
24
- * Get all Google API keys as an array
25
- */
26
- getGoogleApiKeys(): string[];
27
- /**
28
- * Get all OpenRouter API keys as an array
29
- */
30
- getOpenRouterApiKeys(): string[];
31
20
  /**
32
21
  * Load configuration from disk
33
22
  */
@@ -44,17 +33,30 @@ export declare class ConfigManager {
44
33
  * Set a specific configuration value
45
34
  */
46
35
  set<K extends keyof Config>(key: K, value: Config[K]): void;
36
+ /**
37
+ * Set model with validation
38
+ */
39
+ setModel(model: string): void;
47
40
  /**
48
41
  * Get all configuration
49
42
  */
50
43
  getAll(): Config;
51
44
  /**
52
- * Check if configuration is complete (has required API keys)
45
+ * Check if configuration is complete
53
46
  */
54
47
  isComplete(): boolean;
55
48
  /**
56
49
  * Get the config file path
57
50
  */
58
51
  getConfigPath(): string;
52
+ /**
53
+ * Check if configuration migration was performed
54
+ * This is used to show a one-time migration message to users
55
+ */
56
+ wasMigrationPerformed(): boolean;
57
+ /**
58
+ * Reset migration flag (after showing migration message)
59
+ */
60
+ resetMigrationFlag(): void;
59
61
  }
60
62
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAkB,MAAM,YAAY,CAAC;AAGpD,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAkB;;IAaxC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;YACW,aAAa;IAiB3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAK5B;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAKhC;;OAEG;IACH,IAAI,IAAI,MAAM;IA2Bd;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IASnC;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;IAI1D;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAgB3D;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,UAAU,IAAI,OAAO;IAYrB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAkB,MAAM,YAAY,CAAC;AAIpD,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,kBAAkB,CAAkB;;IAa5C;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;YACW,aAAa;IAgB3B;;OAEG;IACH,IAAI,IAAI,MAAM;IA+Cd;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IASnC;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;IAI1D;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;IAkB3D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,UAAU,IAAI,OAAO;IAKrB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,qBAAqB,IAAI,OAAO;IAIhC;;OAEG;IACH,kBAAkB,IAAI,IAAI;CAG3B"}
@@ -3,10 +3,12 @@ import * as path from 'path';
3
3
  import * as os from 'os';
4
4
  import { DEFAULT_CONFIG } from './types.js';
5
5
  import { apiClient } from '../services/api-client.js';
6
+ import { isValidModel, getInvalidModelError } from './models.js';
6
7
  export class ConfigManager {
7
8
  configPath;
8
9
  config = null;
9
10
  useBackendSync = false;
11
+ migrationPerformed = false;
10
12
  constructor() {
11
13
  const homeDir = os.homedir();
12
14
  const configDir = path.join(homeDir, '.centaurus');
@@ -39,7 +41,6 @@ export class ConfigManager {
39
41
  const config = this.load();
40
42
  await apiClient.updateSettings({
41
43
  defaultModel: config.model,
42
- defaultProvider: config.provider,
43
44
  });
44
45
  }
45
46
  catch (error) {
@@ -47,28 +48,6 @@ export class ConfigManager {
47
48
  console.error('Failed to sync settings to backend:', error);
48
49
  }
49
50
  }
50
- /**
51
- * Parse comma-separated API keys into an array
52
- */
53
- parseApiKeys(keys) {
54
- if (!keys)
55
- return [];
56
- return keys.split(',').map(key => key.trim()).filter(key => key.length > 0);
57
- }
58
- /**
59
- * Get all Google API keys as an array
60
- */
61
- getGoogleApiKeys() {
62
- const config = this.load();
63
- return this.parseApiKeys(config.googleApiKey);
64
- }
65
- /**
66
- * Get all OpenRouter API keys as an array
67
- */
68
- getOpenRouterApiKeys() {
69
- const config = this.load();
70
- return this.parseApiKeys(config.openrouterApiKey);
71
- }
72
51
  /**
73
52
  * Load configuration from disk
74
53
  */
@@ -79,13 +58,29 @@ export class ConfigManager {
79
58
  if (fs.existsSync(this.configPath)) {
80
59
  try {
81
60
  const data = fs.readFileSync(this.configPath, 'utf-8');
82
- this.config = { ...DEFAULT_CONFIG, ...JSON.parse(data) };
83
- // Validate and fix invalid provider value
84
- if (this.config.provider !== 'google' && this.config.provider !== 'openrouter') {
85
- console.warn(`Invalid provider '${this.config.provider}' in config, defaulting to 'google'`);
86
- this.config.provider = 'google';
61
+ const loadedConfig = JSON.parse(data);
62
+ // Detect if old config format exists (migration needed)
63
+ const hasDeprecatedFields = 'googleApiKey' in loadedConfig ||
64
+ 'openrouterApiKey' in loadedConfig ||
65
+ 'openRouterApiKey' in loadedConfig ||
66
+ 'anthropicApiKey' in loadedConfig ||
67
+ 'provider' in loadedConfig;
68
+ if (hasDeprecatedFields) {
69
+ this.migrationPerformed = true;
70
+ // Remove deprecated fields
71
+ delete loadedConfig.googleApiKey;
72
+ delete loadedConfig.openrouterApiKey;
73
+ delete loadedConfig.openRouterApiKey;
74
+ delete loadedConfig.anthropicApiKey;
75
+ delete loadedConfig.provider;
76
+ // Preserve model preference and other settings
77
+ this.config = { ...DEFAULT_CONFIG, ...loadedConfig };
78
+ // Save the migrated config immediately
87
79
  this.save(this.config);
88
80
  }
81
+ else {
82
+ this.config = { ...DEFAULT_CONFIG, ...loadedConfig };
83
+ }
89
84
  }
90
85
  catch (error) {
91
86
  console.error('Error loading config:', error);
@@ -119,9 +114,11 @@ export class ConfigManager {
119
114
  * Set a specific configuration value
120
115
  */
121
116
  set(key, value) {
122
- // Validate provider value
123
- if (key === 'provider' && value !== 'google' && value !== 'openrouter') {
124
- throw new Error(`Invalid provider: ${value}. Must be 'google' or 'openrouter'`);
117
+ // Validate model if setting model key
118
+ if (key === 'model' && typeof value === 'string') {
119
+ if (!isValidModel(value)) {
120
+ throw new Error(getInvalidModelError(value));
121
+ }
125
122
  }
126
123
  const config = this.load();
127
124
  config[key] = value;
@@ -131,6 +128,15 @@ export class ConfigManager {
131
128
  // Ignore sync errors
132
129
  });
133
130
  }
131
+ /**
132
+ * Set model with validation
133
+ */
134
+ setModel(model) {
135
+ if (!isValidModel(model)) {
136
+ throw new Error(getInvalidModelError(model));
137
+ }
138
+ this.set('model', model);
139
+ }
134
140
  /**
135
141
  * Get all configuration
136
142
  */
@@ -138,19 +144,11 @@ export class ConfigManager {
138
144
  return this.load();
139
145
  }
140
146
  /**
141
- * Check if configuration is complete (has required API keys)
147
+ * Check if configuration is complete
142
148
  */
143
149
  isComplete() {
144
150
  const config = this.load();
145
- if (config.provider === 'google') {
146
- const keys = this.getGoogleApiKeys();
147
- return keys.length > 0;
148
- }
149
- else if (config.provider === 'openrouter') {
150
- const keys = this.getOpenRouterApiKeys();
151
- return keys.length > 0;
152
- }
153
- return false;
151
+ return !!config.model;
154
152
  }
155
153
  /**
156
154
  * Get the config file path
@@ -158,5 +156,18 @@ export class ConfigManager {
158
156
  getConfigPath() {
159
157
  return this.configPath;
160
158
  }
159
+ /**
160
+ * Check if configuration migration was performed
161
+ * This is used to show a one-time migration message to users
162
+ */
163
+ wasMigrationPerformed() {
164
+ return this.migrationPerformed;
165
+ }
166
+ /**
167
+ * Reset migration flag (after showing migration message)
168
+ */
169
+ resetMigrationFlag() {
170
+ this.migrationPerformed = false;
171
+ }
161
172
  }
162
173
  //# sourceMappingURL=manager.js.map