primellm 1.2.6 → 1.2.8

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.js CHANGED
@@ -157,9 +157,29 @@ function checkExistingEnvVars(tool) {
157
157
  }
158
158
  return { apiKey, baseUrl };
159
159
  }
160
+ // Helper to get config block for a single tool
161
+ function getConfigBlock(tool, apiKey, isFish) {
162
+ const toolInfo = TOOLS[tool];
163
+ const startMarker = `# PrimeLLM Configuration for ${tool}`;
164
+ const endMarker = `# End PrimeLLM Configuration for ${tool}`;
165
+ let envVars = '';
166
+ if (tool === 'Claude Code') {
167
+ const keyVal = isFish ? `set -gx ANTHROPIC_API_KEY '${apiKey}'` : `export ANTHROPIC_API_KEY='${apiKey}'`;
168
+ const urlVal = isFish ? `set -gx ANTHROPIC_BASE_URL '${PRIMELLM_BASE_URL}'` : `export ANTHROPIC_BASE_URL='${PRIMELLM_BASE_URL}'`;
169
+ const tokenVal = isFish ? `set -gx ANTHROPIC_AUTH_TOKEN '${apiKey}'` : `export ANTHROPIC_AUTH_TOKEN='${apiKey}'`;
170
+ envVars = `${keyVal}\n${urlVal}\n${tokenVal}`;
171
+ }
172
+ else {
173
+ // Codex
174
+ const keyVal = isFish ? `set -gx OPENAI_API_KEY '${apiKey}'` : `export OPENAI_API_KEY='${apiKey}'`;
175
+ const urlVal = isFish ? `set -gx OPENAI_BASE_URL '${PRIMELLM_BASE_URL}'` : `export OPENAI_BASE_URL='${PRIMELLM_BASE_URL}'`;
176
+ const primeKeyVal = isFish ? `set -gx PRIMELLM_API_KEY '${apiKey}'` : `export PRIMELLM_API_KEY='${apiKey}'`;
177
+ envVars = `${keyVal}\n${urlVal}\n${primeKeyVal}`;
178
+ }
179
+ return `\n${startMarker}\n${envVars}\n${endMarker}\n`;
180
+ }
160
181
  function writeToShellProfile(tool, apiKey) {
161
182
  const profilePath = getShellProfilePath();
162
- const toolInfo = TOOLS[tool];
163
183
  // Ensure directory exists (for PowerShell on Windows)
164
184
  const profileDir = (0, path_1.join)(profilePath, '..');
165
185
  if (!(0, fs_1.existsSync)(profileDir)) {
@@ -175,62 +195,62 @@ function writeToShellProfile(tool, apiKey) {
175
195
  catch {
176
196
  // File doesn't exist, will create new
177
197
  }
178
- // Remove existing PrimeLLM configuration for this tool
179
- const startMarker = `# PrimeLLM Configuration for ${tool}`;
180
- const endMarker = `# End PrimeLLM Configuration for ${tool}`;
181
- const startIndex = profileContent.indexOf(startMarker);
182
- const endIndex = profileContent.indexOf(endMarker);
183
- if (startIndex !== -1 && endIndex !== -1) {
184
- profileContent = profileContent.substring(0, startIndex) +
185
- profileContent.substring(endIndex + endMarker.length);
186
- }
187
- // Build new configuration block
188
- let configBlock;
189
- if (isWindows()) {
190
- // PowerShell syntax
191
- // Also set PRIMELLM_API_KEY for Codex custom provider
192
- const extraEnv = tool === 'Codex' ? `\n$env:PRIMELLM_API_KEY = '${apiKey}'` : '';
193
- configBlock = `
194
- ${startMarker}
195
- $env:${toolInfo.envKeyName} = '${apiKey}'
196
- $env:${toolInfo.envBaseName} = '${PRIMELLM_BASE_URL}'${extraEnv}
197
- ${endMarker}
198
- `;
198
+ let toolsToConfig = [];
199
+ if (tool === 'Configure Both') {
200
+ toolsToConfig = ['Claude Code', 'Codex'];
199
201
  }
200
202
  else {
201
- const shell = process.env.SHELL || '';
202
- if (shell.includes('fish')) {
203
- // Fish shell syntax
204
- const extraEnv = tool === 'Codex' ? `\nset -gx PRIMELLM_API_KEY '${apiKey}'` : '';
205
- configBlock = `
206
- ${startMarker}
207
- set -gx ${toolInfo.envKeyName} '${apiKey}'
208
- set -gx ${toolInfo.envBaseName} '${PRIMELLM_BASE_URL}'${extraEnv}
209
- ${endMarker}
210
- `;
203
+ toolsToConfig = [tool];
204
+ }
205
+ // Remove existing configs
206
+ ['Claude Code', 'Codex'].forEach(t => {
207
+ const startMarker = `# PrimeLLM Configuration for ${t}`;
208
+ const endMarker = `# End PrimeLLM Configuration for ${t}`;
209
+ const startIndex = profileContent.indexOf(startMarker);
210
+ const endIndex = profileContent.indexOf(endMarker);
211
+ if (startIndex !== -1 && endIndex !== -1) {
212
+ profileContent = profileContent.substring(0, startIndex) +
213
+ profileContent.substring(endIndex + endMarker.length);
214
+ }
215
+ });
216
+ // Add new configs
217
+ const isFish = !isWindows() && (process.env.SHELL || '').includes('fish');
218
+ const isWin = isWindows();
219
+ toolsToConfig.forEach(t => {
220
+ if (isWin) {
221
+ // PowerShell
222
+ const startMarker = `# PrimeLLM Configuration for ${t}`;
223
+ const endMarker = `# End PrimeLLM Configuration for ${t}`;
224
+ let envVars = '';
225
+ if (t === 'Claude Code') {
226
+ envVars = `$env:ANTHROPIC_API_KEY = '${apiKey}'\n$env:ANTHROPIC_BASE_URL = '${PRIMELLM_BASE_URL}'\n$env:ANTHROPIC_AUTH_TOKEN = '${apiKey}'`;
227
+ }
228
+ else {
229
+ envVars = `$env:OPENAI_API_KEY = '${apiKey}'\n$env:OPENAI_BASE_URL = '${PRIMELLM_BASE_URL}'\n$env:PRIMELLM_API_KEY = '${apiKey}'`;
230
+ }
231
+ profileContent = profileContent.trimEnd() + `\n\n${startMarker}\n${envVars}\n${endMarker}`;
211
232
  }
212
233
  else {
213
- // Bash/Zsh syntax
214
- const extraEnv = tool === 'Codex' ? `\nexport PRIMELLM_API_KEY='${apiKey}'` : '';
215
- configBlock = `
216
- ${startMarker}
217
- export ${toolInfo.envKeyName}='${apiKey}'
218
- export ${toolInfo.envBaseName}='${PRIMELLM_BASE_URL}'${extraEnv}
219
- ${endMarker}
220
- `;
234
+ // Unix
235
+ profileContent = profileContent.trimEnd() + getConfigBlock(t, apiKey, isFish);
221
236
  }
222
- }
223
- // Append configuration
224
- profileContent = profileContent.trimEnd() + '\n' + configBlock;
237
+ });
225
238
  (0, fs_1.writeFileSync)(profilePath, profileContent);
226
239
  return profilePath;
227
240
  }
228
241
  function setCurrentSessionEnv(tool, apiKey) {
229
- const toolInfo = TOOLS[tool];
230
- process.env[toolInfo.envKeyName] = apiKey;
231
- process.env[toolInfo.envBaseName] = PRIMELLM_BASE_URL;
232
- // Also set PRIMELLM_API_KEY for Codex custom provider
233
- process.env['PRIMELLM_API_KEY'] = apiKey;
242
+ const toolsToConfig = tool === 'Configure Both' ? ['Claude Code', 'Codex'] : [tool];
243
+ toolsToConfig.forEach(t => {
244
+ const toolInfo = TOOLS[t];
245
+ process.env[toolInfo.envKeyName] = apiKey;
246
+ process.env[toolInfo.envBaseName] = PRIMELLM_BASE_URL;
247
+ if (t === 'Codex') {
248
+ process.env['PRIMELLM_API_KEY'] = apiKey;
249
+ }
250
+ else if (t === 'Claude Code') {
251
+ process.env['ANTHROPIC_AUTH_TOKEN'] = apiKey;
252
+ }
253
+ });
234
254
  }
235
255
  // ============================================================================
236
256
  // CODEX CONFIG.TOML CONFIGURATION
@@ -260,7 +280,7 @@ model = "gpt-4o"
260
280
  name = "PrimeLLM"
261
281
  base_url = "${PRIMELLM_BASE_URL}"
262
282
  env_key = "PRIMELLM_API_KEY"
263
- wire_api = "chat"
283
+ wire_api = "responses"
264
284
  `;
265
285
  (0, fs_1.writeFileSync)(configPath, configContent);
266
286
  return configPath;
@@ -315,54 +335,37 @@ async function main() {
315
335
  type: 'select',
316
336
  name: 'selectedTool',
317
337
  message: 'Which tool would you like to configure?',
318
- choices: ['Claude Code', 'Codex'],
338
+ choices: ['Configure Both', 'Claude Code', 'Codex'],
319
339
  });
320
340
  console.log();
341
+ const toolsToConfig = selectedTool === 'Configure Both' ? ['Claude Code', 'Codex'] : [selectedTool];
321
342
  // ============ STEP 2: Tool Detection & Installation ============
322
- const toolInfo = TOOLS[selectedTool];
323
- const toolExists = commandExists(toolInfo.command);
324
- if (toolExists) {
325
- console.log(chalk_1.default.green(`✓ ${selectedTool} is already installed`));
326
- }
327
- else {
328
- console.log(chalk_1.default.yellow(`⚠ ${selectedTool} is not installed`));
329
- const { confirmInstall } = await prompt({
330
- type: 'confirm',
331
- name: 'confirmInstall',
332
- message: `Would you like to install ${selectedTool}?`,
333
- initial: true,
334
- });
335
- if (!confirmInstall) {
336
- console.log(chalk_1.default.yellow('\n⚠ Installation cancelled. Please install manually and run again.'));
337
- process.exit(0);
343
+ for (const tool of toolsToConfig) {
344
+ const toolInfo = TOOLS[tool];
345
+ const toolExists = commandExists(toolInfo.command);
346
+ if (toolExists) {
347
+ console.log(chalk_1.default.green(`✓ ${tool} is already installed`));
338
348
  }
339
- const installed = await installTool(selectedTool);
340
- if (!installed) {
341
- console.log(chalk_1.default.red('\n❌ Installation failed. Please install manually and run again.'));
342
- process.exit(1);
349
+ else {
350
+ console.log(chalk_1.default.yellow(`⚠ ${tool} is not installed`));
351
+ const { confirmInstall } = await prompt({
352
+ type: 'confirm',
353
+ name: 'confirmInstall',
354
+ message: `Would you like to install ${tool}?`,
355
+ initial: true,
356
+ });
357
+ if (!confirmInstall) {
358
+ console.log(chalk_1.default.yellow(`\n⚠ Skipping installation of ${tool}.`));
359
+ continue;
360
+ }
361
+ const installed = await installTool(tool);
362
+ if (!installed) {
363
+ console.log(chalk_1.default.red(`\n❌ Failed to install ${tool}. Please install manually.`));
364
+ }
343
365
  }
344
366
  }
345
367
  console.log();
346
- // ============ STEP 3: Check Existing Config ============
347
- const existing = checkExistingEnvVars(selectedTool);
348
- if (existing.apiKey || existing.baseUrl) {
349
- console.log(chalk_1.default.yellow('⚠ Existing configuration found:\n'));
350
- console.log(chalk_1.default.gray(` API Key: ${existing.apiKey ? maskApiKey(existing.apiKey) : '(not set)'}`));
351
- console.log(chalk_1.default.gray(` Base URL: ${existing.baseUrl || '(not set)'}`));
352
- console.log();
353
- const { confirmOverwrite } = await prompt({
354
- type: 'confirm',
355
- name: 'confirmOverwrite',
356
- message: 'Do you want to overwrite this configuration?',
357
- initial: true,
358
- });
359
- if (!confirmOverwrite) {
360
- console.log(chalk_1.default.yellow('\n⚠ Configuration cancelled.'));
361
- process.exit(0);
362
- }
363
- console.log();
364
- }
365
- // ============ STEP 4: API Key ============
368
+ // ============ STEP 3: API Key ============
366
369
  console.log(chalk_1.default.white.bold('🔑 API Key Configuration\n'));
367
370
  const { hasApiKey } = await prompt({
368
371
  type: 'select',
@@ -399,25 +402,25 @@ async function main() {
399
402
  apiKey = inputApiKey;
400
403
  console.log(chalk_1.default.green(`✓ API key validated: ${maskApiKey(apiKey)}`));
401
404
  console.log();
402
- // ============ STEP 5: Write Configuration to Shell Profile ============
403
- const writeSpinner = (0, ora_1.default)('Writing configuration to shell profile...').start();
405
+ // ============ STEP 4: Write Configuration ============
406
+ const writeSpinner = (0, ora_1.default)('Writing configuration...').start();
404
407
  try {
405
- // Write to shell profile
408
+ // Write to shell profile (handles both if needed)
406
409
  const profilePath = writeToShellProfile(selectedTool, apiKey);
407
410
  // Also set for current session
408
411
  setCurrentSessionEnv(selectedTool, apiKey);
409
412
  // For Codex, also write config.toml
410
413
  let codexConfigPath = null;
411
- if (selectedTool === 'Codex') {
414
+ if (toolsToConfig.includes('Codex')) {
412
415
  codexConfigPath = writeCodexConfig(apiKey);
413
416
  }
414
417
  writeSpinner.succeed(chalk_1.default.green('Configuration saved'));
415
418
  console.log();
416
419
  console.log(chalk_1.default.gray('━'.repeat(60)));
417
420
  console.log();
418
- // Configuration Summary - similar to MegaLLM format
421
+ // Configuration Summary
419
422
  console.log(chalk_1.default.white.bold('📋 Configuration Summary:\n'));
420
- console.log(` ${chalk_1.default.gray('Tool:')} ${chalk_1.default.cyan(selectedTool)}`);
423
+ console.log(` ${chalk_1.default.gray('Tools:')} ${chalk_1.default.cyan(toolsToConfig.join(', '))}`);
421
424
  console.log(` ${chalk_1.default.gray('Base URL:')} ${chalk_1.default.cyan(PRIMELLM_BASE_URL)}`);
422
425
  console.log(` ${chalk_1.default.gray('API Key:')} ${chalk_1.default.yellow(maskApiKey(apiKey))}`);
423
426
  console.log();
@@ -433,11 +436,11 @@ async function main() {
433
436
  console.log(chalk_1.default.yellow.bold('⚠ IMPORTANT: Open a new terminal for changes to take effect!'));
434
437
  console.log();
435
438
  console.log(chalk_1.default.white('You can now use:'));
436
- if (selectedTool === 'Codex') {
437
- console.log(chalk_1.default.cyan(` codex`));
439
+ if (toolsToConfig.includes('Claude Code')) {
440
+ console.log(chalk_1.default.cyan(` claude`));
438
441
  }
439
- else {
440
- console.log(chalk_1.default.cyan(` ${toolInfo.command}`));
442
+ if (toolsToConfig.includes('Codex')) {
443
+ console.log(chalk_1.default.cyan(` codex`));
441
444
  }
442
445
  console.log(chalk_1.default.white('with PrimeLLM as the backend.'));
443
446
  console.log();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "primellm",
3
- "version": "1.2.6",
3
+ "version": "1.2.8",
4
4
  "description": "Configure Claude Code and Codex to use PrimeLLM as the backend",
5
5
  "bin": {
6
6
  "primellm": "./dist/index.js"
package/src/index.ts CHANGED
@@ -180,9 +180,31 @@ function checkExistingEnvVars(tool: ToolName): { apiKey: string | null; baseUrl:
180
180
  return { apiKey, baseUrl };
181
181
  }
182
182
 
183
- function writeToShellProfile(tool: ToolName, apiKey: string): string {
184
- const profilePath = getShellProfilePath();
183
+ // Helper to get config block for a single tool
184
+ function getConfigBlock(tool: 'Claude Code' | 'Codex', apiKey: string, isFish: boolean): string {
185
185
  const toolInfo = TOOLS[tool];
186
+ const startMarker = `# PrimeLLM Configuration for ${tool}`;
187
+ const endMarker = `# End PrimeLLM Configuration for ${tool}`;
188
+
189
+ let envVars = '';
190
+ if (tool === 'Claude Code') {
191
+ const keyVal = isFish ? `set -gx ANTHROPIC_API_KEY '${apiKey}'` : `export ANTHROPIC_API_KEY='${apiKey}'`;
192
+ const urlVal = isFish ? `set -gx ANTHROPIC_BASE_URL '${PRIMELLM_BASE_URL}'` : `export ANTHROPIC_BASE_URL='${PRIMELLM_BASE_URL}'`;
193
+ const tokenVal = isFish ? `set -gx ANTHROPIC_AUTH_TOKEN '${apiKey}'` : `export ANTHROPIC_AUTH_TOKEN='${apiKey}'`;
194
+ envVars = `${keyVal}\n${urlVal}\n${tokenVal}`;
195
+ } else {
196
+ // Codex
197
+ const keyVal = isFish ? `set -gx OPENAI_API_KEY '${apiKey}'` : `export OPENAI_API_KEY='${apiKey}'`;
198
+ const urlVal = isFish ? `set -gx OPENAI_BASE_URL '${PRIMELLM_BASE_URL}'` : `export OPENAI_BASE_URL='${PRIMELLM_BASE_URL}'`;
199
+ const primeKeyVal = isFish ? `set -gx PRIMELLM_API_KEY '${apiKey}'` : `export PRIMELLM_API_KEY='${apiKey}'`;
200
+ envVars = `${keyVal}\n${urlVal}\n${primeKeyVal}`;
201
+ }
202
+
203
+ return `\n${startMarker}\n${envVars}\n${endMarker}\n`;
204
+ }
205
+
206
+ function writeToShellProfile(tool: string, apiKey: string): string {
207
+ const profilePath = getShellProfilePath();
186
208
 
187
209
  // Ensure directory exists (for PowerShell on Windows)
188
210
  const profileDir = join(profilePath, '..');
@@ -200,68 +222,68 @@ function writeToShellProfile(tool: ToolName, apiKey: string): string {
200
222
  // File doesn't exist, will create new
201
223
  }
202
224
 
203
- // Remove existing PrimeLLM configuration for this tool
204
- const startMarker = `# PrimeLLM Configuration for ${tool}`;
205
- const endMarker = `# End PrimeLLM Configuration for ${tool}`;
225
+ let toolsToConfig: ('Claude Code' | 'Codex')[] = [];
226
+ if (tool === 'Configure Both') {
227
+ toolsToConfig = ['Claude Code', 'Codex'];
228
+ } else {
229
+ toolsToConfig = [tool as 'Claude Code' | 'Codex'];
230
+ }
206
231
 
207
- const startIndex = profileContent.indexOf(startMarker);
208
- const endIndex = profileContent.indexOf(endMarker);
232
+ // Remove existing configs
233
+ ['Claude Code', 'Codex'].forEach(t => {
234
+ const startMarker = `# PrimeLLM Configuration for ${t}`;
235
+ const endMarker = `# End PrimeLLM Configuration for ${t}`;
236
+ const startIndex = profileContent.indexOf(startMarker);
237
+ const endIndex = profileContent.indexOf(endMarker);
209
238
 
210
- if (startIndex !== -1 && endIndex !== -1) {
211
- profileContent = profileContent.substring(0, startIndex) +
212
- profileContent.substring(endIndex + endMarker.length);
213
- }
239
+ if (startIndex !== -1 && endIndex !== -1) {
240
+ profileContent = profileContent.substring(0, startIndex) +
241
+ profileContent.substring(endIndex + endMarker.length);
242
+ }
243
+ });
214
244
 
215
- // Build new configuration block
216
- let configBlock: string;
245
+ // Add new configs
246
+ const isFish = !isWindows() && (process.env.SHELL || '').includes('fish');
247
+ const isWin = isWindows();
217
248
 
218
- if (isWindows()) {
219
- // PowerShell syntax
220
- // Also set PRIMELLM_API_KEY for Codex custom provider
221
- const extraEnv = tool === 'Codex' ? `\n$env:PRIMELLM_API_KEY = '${apiKey}'` : '';
222
- configBlock = `
223
- ${startMarker}
224
- $env:${toolInfo.envKeyName} = '${apiKey}'
225
- $env:${toolInfo.envBaseName} = '${PRIMELLM_BASE_URL}'${extraEnv}
226
- ${endMarker}
227
- `;
228
- } else {
229
- const shell = process.env.SHELL || '';
230
- if (shell.includes('fish')) {
231
- // Fish shell syntax
232
- const extraEnv = tool === 'Codex' ? `\nset -gx PRIMELLM_API_KEY '${apiKey}'` : '';
233
- configBlock = `
234
- ${startMarker}
235
- set -gx ${toolInfo.envKeyName} '${apiKey}'
236
- set -gx ${toolInfo.envBaseName} '${PRIMELLM_BASE_URL}'${extraEnv}
237
- ${endMarker}
238
- `;
249
+ toolsToConfig.forEach(t => {
250
+ if (isWin) {
251
+ // PowerShell
252
+ const startMarker = `# PrimeLLM Configuration for ${t}`;
253
+ const endMarker = `# End PrimeLLM Configuration for ${t}`;
254
+ let envVars = '';
255
+
256
+ if (t === 'Claude Code') {
257
+ envVars = `$env:ANTHROPIC_API_KEY = '${apiKey}'\n$env:ANTHROPIC_BASE_URL = '${PRIMELLM_BASE_URL}'\n$env:ANTHROPIC_AUTH_TOKEN = '${apiKey}'`;
258
+ } else {
259
+ envVars = `$env:OPENAI_API_KEY = '${apiKey}'\n$env:OPENAI_BASE_URL = '${PRIMELLM_BASE_URL}'\n$env:PRIMELLM_API_KEY = '${apiKey}'`;
260
+ }
261
+
262
+ profileContent = profileContent.trimEnd() + `\n\n${startMarker}\n${envVars}\n${endMarker}`;
239
263
  } else {
240
- // Bash/Zsh syntax
241
- const extraEnv = tool === 'Codex' ? `\nexport PRIMELLM_API_KEY='${apiKey}'` : '';
242
- configBlock = `
243
- ${startMarker}
244
- export ${toolInfo.envKeyName}='${apiKey}'
245
- export ${toolInfo.envBaseName}='${PRIMELLM_BASE_URL}'${extraEnv}
246
- ${endMarker}
247
- `;
264
+ // Unix
265
+ profileContent = profileContent.trimEnd() + getConfigBlock(t, apiKey, isFish);
248
266
  }
249
- }
250
-
251
- // Append configuration
252
- profileContent = profileContent.trimEnd() + '\n' + configBlock;
267
+ });
253
268
 
254
269
  writeFileSync(profilePath, profileContent);
255
-
256
270
  return profilePath;
257
271
  }
258
272
 
259
- function setCurrentSessionEnv(tool: ToolName, apiKey: string): void {
260
- const toolInfo = TOOLS[tool];
261
- process.env[toolInfo.envKeyName] = apiKey;
262
- process.env[toolInfo.envBaseName] = PRIMELLM_BASE_URL;
263
- // Also set PRIMELLM_API_KEY for Codex custom provider
264
- process.env['PRIMELLM_API_KEY'] = apiKey;
273
+ function setCurrentSessionEnv(tool: string, apiKey: string): void {
274
+ const toolsToConfig = tool === 'Configure Both' ? ['Claude Code', 'Codex'] : [tool];
275
+
276
+ toolsToConfig.forEach(t => {
277
+ const toolInfo = TOOLS[t as ToolName];
278
+ process.env[toolInfo.envKeyName] = apiKey;
279
+ process.env[toolInfo.envBaseName] = PRIMELLM_BASE_URL;
280
+
281
+ if (t === 'Codex') {
282
+ process.env['PRIMELLM_API_KEY'] = apiKey;
283
+ } else if (t === 'Claude Code') {
284
+ process.env['ANTHROPIC_AUTH_TOKEN'] = apiKey;
285
+ }
286
+ });
265
287
  }
266
288
 
267
289
  // ============================================================================
@@ -295,7 +317,7 @@ model = "gpt-4o"
295
317
  name = "PrimeLLM"
296
318
  base_url = "${PRIMELLM_BASE_URL}"
297
319
  env_key = "PRIMELLM_API_KEY"
298
- wire_api = "chat"
320
+ wire_api = "responses"
299
321
  `;
300
322
 
301
323
  writeFileSync(configPath, configContent);
@@ -358,69 +380,49 @@ async function main(): Promise<void> {
358
380
  // ============ STEP 1: Tool Selection ============
359
381
  console.log(chalk.white.bold('🔧 Tool Selection\n'));
360
382
 
361
- const { selectedTool } = await prompt<{ selectedTool: ToolName }>({
383
+ const { selectedTool } = await prompt<{ selectedTool: string }>({
362
384
  type: 'select',
363
385
  name: 'selectedTool',
364
386
  message: 'Which tool would you like to configure?',
365
- choices: ['Claude Code', 'Codex'],
387
+ choices: ['Configure Both', 'Claude Code', 'Codex'],
366
388
  });
367
389
 
368
390
  console.log();
369
391
 
370
- // ============ STEP 2: Tool Detection & Installation ============
371
- const toolInfo = TOOLS[selectedTool];
372
- const toolExists = commandExists(toolInfo.command);
373
-
374
- if (toolExists) {
375
- console.log(chalk.green(`✓ ${selectedTool} is already installed`));
376
- } else {
377
- console.log(chalk.yellow(`⚠ ${selectedTool} is not installed`));
392
+ const toolsToConfig = selectedTool === 'Configure Both' ? ['Claude Code', 'Codex'] : [selectedTool];
378
393
 
379
- const { confirmInstall } = await prompt<{ confirmInstall: boolean }>({
380
- type: 'confirm',
381
- name: 'confirmInstall',
382
- message: `Would you like to install ${selectedTool}?`,
383
- initial: true,
384
- });
385
-
386
- if (!confirmInstall) {
387
- console.log(chalk.yellow('\n⚠ Installation cancelled. Please install manually and run again.'));
388
- process.exit(0);
389
- }
394
+ // ============ STEP 2: Tool Detection & Installation ============
395
+ for (const tool of toolsToConfig) {
396
+ const toolInfo = TOOLS[tool as ToolName];
397
+ const toolExists = commandExists(toolInfo.command);
390
398
 
391
- const installed = await installTool(selectedTool);
392
- if (!installed) {
393
- console.log(chalk.red('\n❌ Installation failed. Please install manually and run again.'));
394
- process.exit(1);
399
+ if (toolExists) {
400
+ console.log(chalk.green(`✓ ${tool} is already installed`));
401
+ } else {
402
+ console.log(chalk.yellow(`⚠ ${tool} is not installed`));
403
+
404
+ const { confirmInstall } = await prompt<{ confirmInstall: boolean }>({
405
+ type: 'confirm',
406
+ name: 'confirmInstall',
407
+ message: `Would you like to install ${tool}?`,
408
+ initial: true,
409
+ });
410
+
411
+ if (!confirmInstall) {
412
+ console.log(chalk.yellow(`\n⚠ Skipping installation of ${tool}.`));
413
+ continue;
414
+ }
415
+
416
+ const installed = await installTool(tool as ToolName);
417
+ if (!installed) {
418
+ console.log(chalk.red(`\n❌ Failed to install ${tool}. Please install manually.`));
419
+ }
395
420
  }
396
421
  }
397
422
 
398
423
  console.log();
399
424
 
400
- // ============ STEP 3: Check Existing Config ============
401
- const existing = checkExistingEnvVars(selectedTool);
402
-
403
- if (existing.apiKey || existing.baseUrl) {
404
- console.log(chalk.yellow('⚠ Existing configuration found:\n'));
405
- console.log(chalk.gray(` API Key: ${existing.apiKey ? maskApiKey(existing.apiKey) : '(not set)'}`));
406
- console.log(chalk.gray(` Base URL: ${existing.baseUrl || '(not set)'}`));
407
- console.log();
408
-
409
- const { confirmOverwrite } = await prompt<{ confirmOverwrite: boolean }>({
410
- type: 'confirm',
411
- name: 'confirmOverwrite',
412
- message: 'Do you want to overwrite this configuration?',
413
- initial: true,
414
- });
415
-
416
- if (!confirmOverwrite) {
417
- console.log(chalk.yellow('\n⚠ Configuration cancelled.'));
418
- process.exit(0);
419
- }
420
- console.log();
421
- }
422
-
423
- // ============ STEP 4: API Key ============
425
+ // ============ STEP 3: API Key ============
424
426
  console.log(chalk.white.bold('🔑 API Key Configuration\n'));
425
427
 
426
428
  const { hasApiKey } = await prompt<{ hasApiKey: string }>({
@@ -463,11 +465,11 @@ async function main(): Promise<void> {
463
465
  console.log(chalk.green(`✓ API key validated: ${maskApiKey(apiKey)}`));
464
466
  console.log();
465
467
 
466
- // ============ STEP 5: Write Configuration to Shell Profile ============
467
- const writeSpinner = ora('Writing configuration to shell profile...').start();
468
+ // ============ STEP 4: Write Configuration ============
469
+ const writeSpinner = ora('Writing configuration...').start();
468
470
 
469
471
  try {
470
- // Write to shell profile
472
+ // Write to shell profile (handles both if needed)
471
473
  const profilePath = writeToShellProfile(selectedTool, apiKey);
472
474
 
473
475
  // Also set for current session
@@ -475,7 +477,7 @@ async function main(): Promise<void> {
475
477
 
476
478
  // For Codex, also write config.toml
477
479
  let codexConfigPath: string | null = null;
478
- if (selectedTool === 'Codex') {
480
+ if (toolsToConfig.includes('Codex')) {
479
481
  codexConfigPath = writeCodexConfig(apiKey);
480
482
  }
481
483
 
@@ -485,9 +487,9 @@ async function main(): Promise<void> {
485
487
  console.log(chalk.gray('━'.repeat(60)));
486
488
  console.log();
487
489
 
488
- // Configuration Summary - similar to MegaLLM format
490
+ // Configuration Summary
489
491
  console.log(chalk.white.bold('📋 Configuration Summary:\n'));
490
- console.log(` ${chalk.gray('Tool:')} ${chalk.cyan(selectedTool)}`);
492
+ console.log(` ${chalk.gray('Tools:')} ${chalk.cyan(toolsToConfig.join(', '))}`);
491
493
  console.log(` ${chalk.gray('Base URL:')} ${chalk.cyan(PRIMELLM_BASE_URL)}`);
492
494
  console.log(` ${chalk.gray('API Key:')} ${chalk.yellow(maskApiKey(apiKey))}`);
493
495
  console.log();
@@ -507,10 +509,11 @@ async function main(): Promise<void> {
507
509
  console.log();
508
510
 
509
511
  console.log(chalk.white('You can now use:'));
510
- if (selectedTool === 'Codex') {
512
+ if (toolsToConfig.includes('Claude Code')) {
513
+ console.log(chalk.cyan(` claude`));
514
+ }
515
+ if (toolsToConfig.includes('Codex')) {
511
516
  console.log(chalk.cyan(` codex`));
512
- } else {
513
- console.log(chalk.cyan(` ${toolInfo.command}`));
514
517
  }
515
518
  console.log(chalk.white('with PrimeLLM as the backend.'));
516
519
  console.log();
package/verify_config.js CHANGED
@@ -19,7 +19,7 @@ model = "gpt-4o"
19
19
  name = "PrimeLLM"
20
20
  base_url = "${PRIMELLM_BASE_URL}"
21
21
  env_key = "PRIMELLM_API_KEY"
22
- wire_api = "chat"
22
+ wire_api = "responses"
23
23
  `;
24
24
  return configContent;
25
25
  }