primellm 1.1.1 → 1.2.1

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
@@ -19,7 +19,7 @@ const { prompt } = enquirer_1.default;
19
19
  // ============================================================================
20
20
  const PRIMELLM_BASE_URL = 'https://api.primellm.in/v1';
21
21
  const PRIMELLM_DASHBOARD_URL = 'https://primellm.in/dashboard/api-keys';
22
- // Tool configuration - uses environment variables
22
+ // Tool configuration
23
23
  const TOOLS = {
24
24
  'Claude Code': {
25
25
  command: 'claude',
@@ -65,44 +65,8 @@ function commandExists(cmd) {
65
65
  return false;
66
66
  }
67
67
  }
68
- // ============================================================================
69
- // SHELL PROFILE DETECTION
70
- // ============================================================================
71
- function getShellProfilePath() {
72
- const home = (0, os_1.homedir)();
73
- const os = (0, os_1.platform)();
74
- if (os === 'win32') {
75
- // Windows uses PowerShell profile
76
- return (0, path_1.join)(home, 'Documents', 'PowerShell', 'Microsoft.PowerShell_profile.ps1');
77
- }
78
- // Unix-like systems
79
- const shell = process.env.SHELL || '';
80
- if (shell.includes('zsh')) {
81
- return (0, path_1.join)(home, '.zshrc');
82
- }
83
- else if (shell.includes('fish')) {
84
- return (0, path_1.join)(home, '.config', 'fish', 'config.fish');
85
- }
86
- else {
87
- // Default to .bashrc
88
- return (0, path_1.join)(home, '.bashrc');
89
- }
90
- }
91
- function formatEnvExport(key, value) {
92
- const os = (0, os_1.platform)();
93
- const shell = process.env.SHELL || '';
94
- if (os === 'win32') {
95
- // PowerShell format
96
- return `$env:${key} = "${value}"`;
97
- }
98
- else if (shell.includes('fish')) {
99
- // Fish shell format
100
- return `set -gx ${key} "${value}"`;
101
- }
102
- else {
103
- // Bash/Zsh format
104
- return `export ${key}="${value}"`;
105
- }
68
+ function isWindows() {
69
+ return (0, os_1.platform)() === 'win32';
106
70
  }
107
71
  // ============================================================================
108
72
  // ASCII ART & DISPLAY
@@ -130,55 +94,128 @@ function displaySystemInfo() {
130
94
  console.log();
131
95
  }
132
96
  // ============================================================================
133
- // CONFIGURATION
97
+ // SHELL PROFILE CONFIGURATION
134
98
  // ============================================================================
99
+ function getShellProfilePath() {
100
+ const home = (0, os_1.homedir)();
101
+ if (isWindows()) {
102
+ // PowerShell profile path
103
+ return (0, path_1.join)(home, 'Documents', 'WindowsPowerShell', 'Microsoft.PowerShell_profile.ps1');
104
+ }
105
+ // Unix-like systems
106
+ const shell = process.env.SHELL || '';
107
+ if (shell.includes('zsh')) {
108
+ return (0, path_1.join)(home, '.zshrc');
109
+ }
110
+ else if (shell.includes('fish')) {
111
+ return (0, path_1.join)(home, '.config', 'fish', 'config.fish');
112
+ }
113
+ else {
114
+ // Default to bash
115
+ return (0, path_1.join)(home, '.bashrc');
116
+ }
117
+ }
118
+ function readShellProfile() {
119
+ const profilePath = getShellProfilePath();
120
+ try {
121
+ if ((0, fs_1.existsSync)(profilePath)) {
122
+ return (0, fs_1.readFileSync)(profilePath, 'utf8');
123
+ }
124
+ }
125
+ catch {
126
+ // Profile doesn't exist
127
+ }
128
+ return '';
129
+ }
135
130
  function checkExistingEnvVars(tool) {
136
131
  const toolInfo = TOOLS[tool];
137
- return {
138
- apiKey: process.env[toolInfo.envKeyName],
139
- baseUrl: process.env[toolInfo.envBaseName],
140
- };
132
+ const profileContent = readShellProfile();
133
+ let apiKey = null;
134
+ let baseUrl = null;
135
+ // Check environment variables first
136
+ apiKey = process.env[toolInfo.envKeyName] || null;
137
+ baseUrl = process.env[toolInfo.envBaseName] || null;
138
+ // If not in env, try to parse from profile
139
+ if (!apiKey) {
140
+ const keyMatch = profileContent.match(new RegExp(`${toolInfo.envKeyName}[=\\s'"]+([^'"\n]+)`));
141
+ if (keyMatch)
142
+ apiKey = keyMatch[1].trim();
143
+ }
144
+ if (!baseUrl) {
145
+ const baseMatch = profileContent.match(new RegExp(`${toolInfo.envBaseName}[=\\s'"]+([^'"\n]+)`));
146
+ if (baseMatch)
147
+ baseUrl = baseMatch[1].trim();
148
+ }
149
+ return { apiKey, baseUrl };
141
150
  }
142
- function writeEnvToProfile(tool, apiKey) {
143
- const toolInfo = TOOLS[tool];
151
+ function writeToShellProfile(tool, apiKey) {
144
152
  const profilePath = getShellProfilePath();
145
- const keyExport = formatEnvExport(toolInfo.envKeyName, apiKey);
146
- const baseExport = formatEnvExport(toolInfo.envBaseName, PRIMELLM_BASE_URL);
147
- const marker = `# PrimeLLM Configuration for ${tool}`;
153
+ const toolInfo = TOOLS[tool];
154
+ // Ensure directory exists (for PowerShell on Windows)
155
+ const profileDir = (0, path_1.join)(profilePath, '..');
156
+ if (!(0, fs_1.existsSync)(profileDir)) {
157
+ (0, fs_1.mkdirSync)(profileDir, { recursive: true });
158
+ }
159
+ // Read existing profile content
160
+ let profileContent = '';
161
+ try {
162
+ if ((0, fs_1.existsSync)(profilePath)) {
163
+ profileContent = (0, fs_1.readFileSync)(profilePath, 'utf8');
164
+ }
165
+ }
166
+ catch {
167
+ // File doesn't exist, will create new
168
+ }
169
+ // Remove existing PrimeLLM configuration for this tool
170
+ const startMarker = `# PrimeLLM Configuration for ${tool}`;
148
171
  const endMarker = `# End PrimeLLM Configuration for ${tool}`;
149
- const configBlock = `
150
- ${marker}
151
- ${keyExport}
152
- ${baseExport}
172
+ const startIndex = profileContent.indexOf(startMarker);
173
+ const endIndex = profileContent.indexOf(endMarker);
174
+ if (startIndex !== -1 && endIndex !== -1) {
175
+ profileContent = profileContent.substring(0, startIndex) +
176
+ profileContent.substring(endIndex + endMarker.length);
177
+ }
178
+ // Build new configuration block
179
+ let configBlock;
180
+ if (isWindows()) {
181
+ // PowerShell syntax
182
+ configBlock = `
183
+ ${startMarker}
184
+ $env:${toolInfo.envKeyName} = '${apiKey}'
185
+ $env:${toolInfo.envBaseName} = '${PRIMELLM_BASE_URL}'
153
186
  ${endMarker}
154
187
  `;
155
- // Check if profile exists and if our config is already there
156
- if ((0, fs_1.existsSync)(profilePath)) {
157
- const content = (0, fs_1.readFileSync)(profilePath, 'utf8');
158
- if (content.includes(marker)) {
159
- // Replace existing config
160
- const regex = new RegExp(`${marker}[\\s\\S]*?${endMarker}`, 'g');
161
- const newContent = content.replace(regex, configBlock.trim());
162
- (0, fs_1.writeFileSync)(profilePath, newContent);
163
- }
164
- else {
165
- // Append new config
166
- (0, fs_1.appendFileSync)(profilePath, configBlock);
167
- }
168
188
  }
169
189
  else {
170
- // Create parent directory if it doesn't exist
171
- const profileDir = (0, path_1.dirname)(profilePath);
172
- if (!(0, fs_1.existsSync)(profileDir)) {
173
- (0, fs_1.mkdirSync)(profileDir, { recursive: true });
190
+ const shell = process.env.SHELL || '';
191
+ if (shell.includes('fish')) {
192
+ // Fish shell syntax
193
+ configBlock = `
194
+ ${startMarker}
195
+ set -gx ${toolInfo.envKeyName} '${apiKey}'
196
+ set -gx ${toolInfo.envBaseName} '${PRIMELLM_BASE_URL}'
197
+ ${endMarker}
198
+ `;
199
+ }
200
+ else {
201
+ // Bash/Zsh syntax
202
+ configBlock = `
203
+ ${startMarker}
204
+ export ${toolInfo.envKeyName}='${apiKey}'
205
+ export ${toolInfo.envBaseName}='${PRIMELLM_BASE_URL}'
206
+ ${endMarker}
207
+ `;
174
208
  }
175
- // Create new profile with config
176
- (0, fs_1.writeFileSync)(profilePath, configBlock);
177
209
  }
178
- return {
179
- profilePath,
180
- commands: [keyExport, baseExport],
181
- };
210
+ // Append configuration
211
+ profileContent = profileContent.trimEnd() + '\n' + configBlock;
212
+ (0, fs_1.writeFileSync)(profilePath, profileContent);
213
+ return profilePath;
214
+ }
215
+ function setCurrentSessionEnv(tool, apiKey) {
216
+ const toolInfo = TOOLS[tool];
217
+ process.env[toolInfo.envKeyName] = apiKey;
218
+ process.env[toolInfo.envBaseName] = PRIMELLM_BASE_URL;
182
219
  }
183
220
  // ============================================================================
184
221
  // TOOL INSTALLATION
@@ -261,9 +298,9 @@ async function main() {
261
298
  // ============ STEP 3: Check Existing Config ============
262
299
  const existing = checkExistingEnvVars(selectedTool);
263
300
  if (existing.apiKey || existing.baseUrl) {
264
- console.log(chalk_1.default.yellow('⚠ Existing environment configuration found:\n'));
265
- console.log(chalk_1.default.gray(` ${toolInfo.envKeyName}: ${existing.apiKey ? maskApiKey(existing.apiKey) : '(not set)'}`));
266
- console.log(chalk_1.default.gray(` ${toolInfo.envBaseName}: ${existing.baseUrl || '(not set)'}`));
301
+ console.log(chalk_1.default.yellow('⚠ Existing configuration found:\n'));
302
+ console.log(chalk_1.default.gray(` API Key: ${existing.apiKey ? maskApiKey(existing.apiKey) : '(not set)'}`));
303
+ console.log(chalk_1.default.gray(` Base URL: ${existing.baseUrl || '(not set)'}`));
267
304
  console.log();
268
305
  const { confirmOverwrite } = await prompt({
269
306
  type: 'confirm',
@@ -314,38 +351,30 @@ async function main() {
314
351
  apiKey = inputApiKey;
315
352
  console.log(chalk_1.default.green(`✓ API key validated: ${maskApiKey(apiKey)}`));
316
353
  console.log();
317
- // ============ STEP 5: Write Configuration ============
354
+ // ============ STEP 5: Write Configuration to Shell Profile ============
318
355
  const writeSpinner = (0, ora_1.default)('Writing configuration to shell profile...').start();
319
356
  try {
320
- const { profilePath, commands } = writeEnvToProfile(selectedTool, apiKey);
357
+ // Write to shell profile
358
+ const profilePath = writeToShellProfile(selectedTool, apiKey);
359
+ // Also set for current session
360
+ setCurrentSessionEnv(selectedTool, apiKey);
321
361
  writeSpinner.succeed(chalk_1.default.green('Configuration saved to shell profile'));
322
362
  console.log();
323
363
  console.log(chalk_1.default.gray('━'.repeat(60)));
324
364
  console.log();
325
365
  console.log(chalk_1.default.green.bold('✅ PrimeLLM configured successfully!'));
326
366
  console.log();
327
- console.log(chalk_1.default.white('Environment variables added:'));
328
- commands.forEach(cmd => {
329
- console.log(chalk_1.default.cyan(` ${cmd}`));
330
- });
367
+ console.log(chalk_1.default.gray(`Profile updated: ${profilePath}`));
368
+ console.log(chalk_1.default.gray(`Base URL: ${PRIMELLM_BASE_URL}`));
331
369
  console.log();
332
- console.log(chalk_1.default.gray(`Profile location: ${profilePath}`));
370
+ // Show what was set
371
+ console.log(chalk_1.default.white('Environment variables configured:'));
372
+ console.log(chalk_1.default.cyan(` ${toolInfo.envKeyName}=${maskApiKey(apiKey)}`));
373
+ console.log(chalk_1.default.cyan(` ${toolInfo.envBaseName}=${PRIMELLM_BASE_URL}`));
333
374
  console.log();
334
- console.log(chalk_1.default.yellow.bold('⚠ IMPORTANT: To apply the changes, run one of the following:'));
335
- console.log();
336
- const os = (0, os_1.platform)();
337
- if (os === 'win32') {
338
- console.log(chalk_1.default.cyan(' 1. Restart PowerShell'));
339
- console.log(chalk_1.default.cyan(' 2. Or run: . $PROFILE'));
340
- }
341
- else {
342
- const shell = process.env.SHELL || '/bin/bash';
343
- const shellName = shell.split('/').pop();
344
- console.log(chalk_1.default.cyan(` 1. Restart your terminal`));
345
- console.log(chalk_1.default.cyan(` 2. Or run: source ${profilePath}`));
346
- }
375
+ console.log(chalk_1.default.yellow.bold('⚠ IMPORTANT: Open a new terminal for changes to take effect!'));
347
376
  console.log();
348
- console.log(chalk_1.default.white('Then you can use:'));
377
+ console.log(chalk_1.default.white('You can now use:'));
349
378
  console.log(chalk_1.default.cyan(` ${toolInfo.command}`));
350
379
  console.log(chalk_1.default.white('with PrimeLLM as the backend.'));
351
380
  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.1.1",
3
+ "version": "1.2.1",
4
4
  "description": "Configure Claude Code and Codex to use PrimeLLM as the backend",
5
5
  "bin": {
6
6
  "primellm": "./dist/index.js"
@@ -43,4 +43,4 @@
43
43
  "@types/node": "^20.11.0",
44
44
  "typescript": "^5.3.0"
45
45
  }
46
- }
46
+ }
package/src/index.ts CHANGED
@@ -6,7 +6,7 @@ import ora from 'ora';
6
6
  import { execSync } from 'child_process';
7
7
  import { platform, homedir } from 'os';
8
8
  import { existsSync, readFileSync, writeFileSync, appendFileSync, mkdirSync } from 'fs';
9
- import { join, dirname } from 'path';
9
+ import { join } from 'path';
10
10
  import open from 'open';
11
11
  import Enquirer from 'enquirer';
12
12
 
@@ -19,7 +19,7 @@ const { prompt } = Enquirer;
19
19
  const PRIMELLM_BASE_URL = 'https://api.primellm.in/v1';
20
20
  const PRIMELLM_DASHBOARD_URL = 'https://primellm.in/dashboard/api-keys';
21
21
 
22
- // Tool configuration - uses environment variables
22
+ // Tool configuration
23
23
  const TOOLS = {
24
24
  'Claude Code': {
25
25
  command: 'claude',
@@ -72,46 +72,8 @@ function commandExists(cmd: string): boolean {
72
72
  }
73
73
  }
74
74
 
75
- // ============================================================================
76
- // SHELL PROFILE DETECTION
77
- // ============================================================================
78
-
79
- function getShellProfilePath(): string {
80
- const home = homedir();
81
- const os = platform();
82
-
83
- if (os === 'win32') {
84
- // Windows uses PowerShell profile
85
- return join(home, 'Documents', 'PowerShell', 'Microsoft.PowerShell_profile.ps1');
86
- }
87
-
88
- // Unix-like systems
89
- const shell = process.env.SHELL || '';
90
-
91
- if (shell.includes('zsh')) {
92
- return join(home, '.zshrc');
93
- } else if (shell.includes('fish')) {
94
- return join(home, '.config', 'fish', 'config.fish');
95
- } else {
96
- // Default to .bashrc
97
- return join(home, '.bashrc');
98
- }
99
- }
100
-
101
- function formatEnvExport(key: string, value: string): string {
102
- const os = platform();
103
- const shell = process.env.SHELL || '';
104
-
105
- if (os === 'win32') {
106
- // PowerShell format
107
- return `$env:${key} = "${value}"`;
108
- } else if (shell.includes('fish')) {
109
- // Fish shell format
110
- return `set -gx ${key} "${value}"`;
111
- } else {
112
- // Bash/Zsh format
113
- return `export ${key}="${value}"`;
114
- }
75
+ function isWindows(): boolean {
76
+ return platform() === 'win32';
115
77
  }
116
78
 
117
79
  // ============================================================================
@@ -147,61 +109,143 @@ function displaySystemInfo(): void {
147
109
  }
148
110
 
149
111
  // ============================================================================
150
- // CONFIGURATION
112
+ // SHELL PROFILE CONFIGURATION
151
113
  // ============================================================================
152
114
 
153
- function checkExistingEnvVars(tool: ToolName): { apiKey?: string; baseUrl?: string } {
154
- const toolInfo = TOOLS[tool];
155
- return {
156
- apiKey: process.env[toolInfo.envKeyName],
157
- baseUrl: process.env[toolInfo.envBaseName],
158
- };
115
+ function getShellProfilePath(): string {
116
+ const home = homedir();
117
+
118
+ if (isWindows()) {
119
+ // PowerShell profile path
120
+ return join(home, 'Documents', 'WindowsPowerShell', 'Microsoft.PowerShell_profile.ps1');
121
+ }
122
+
123
+ // Unix-like systems
124
+ const shell = process.env.SHELL || '';
125
+
126
+ if (shell.includes('zsh')) {
127
+ return join(home, '.zshrc');
128
+ } else if (shell.includes('fish')) {
129
+ return join(home, '.config', 'fish', 'config.fish');
130
+ } else {
131
+ // Default to bash
132
+ return join(home, '.bashrc');
133
+ }
159
134
  }
160
135
 
161
- function writeEnvToProfile(tool: ToolName, apiKey: string): { profilePath: string; commands: string[] } {
136
+ function readShellProfile(): string {
137
+ const profilePath = getShellProfilePath();
138
+ try {
139
+ if (existsSync(profilePath)) {
140
+ return readFileSync(profilePath, 'utf8');
141
+ }
142
+ } catch {
143
+ // Profile doesn't exist
144
+ }
145
+ return '';
146
+ }
147
+
148
+ function checkExistingEnvVars(tool: ToolName): { apiKey: string | null; baseUrl: string | null } {
162
149
  const toolInfo = TOOLS[tool];
150
+ const profileContent = readShellProfile();
151
+
152
+ let apiKey: string | null = null;
153
+ let baseUrl: string | null = null;
154
+
155
+ // Check environment variables first
156
+ apiKey = process.env[toolInfo.envKeyName] || null;
157
+ baseUrl = process.env[toolInfo.envBaseName] || null;
158
+
159
+ // If not in env, try to parse from profile
160
+ if (!apiKey) {
161
+ const keyMatch = profileContent.match(new RegExp(`${toolInfo.envKeyName}[=\\s'"]+([^'"\n]+)`));
162
+ if (keyMatch) apiKey = keyMatch[1].trim();
163
+ }
164
+
165
+ if (!baseUrl) {
166
+ const baseMatch = profileContent.match(new RegExp(`${toolInfo.envBaseName}[=\\s'"]+([^'"\n]+)`));
167
+ if (baseMatch) baseUrl = baseMatch[1].trim();
168
+ }
169
+
170
+ return { apiKey, baseUrl };
171
+ }
172
+
173
+ function writeToShellProfile(tool: ToolName, apiKey: string): string {
163
174
  const profilePath = getShellProfilePath();
175
+ const toolInfo = TOOLS[tool];
164
176
 
165
- const keyExport = formatEnvExport(toolInfo.envKeyName, apiKey);
166
- const baseExport = formatEnvExport(toolInfo.envBaseName, PRIMELLM_BASE_URL);
177
+ // Ensure directory exists (for PowerShell on Windows)
178
+ const profileDir = join(profilePath, '..');
179
+ if (!existsSync(profileDir)) {
180
+ mkdirSync(profileDir, { recursive: true });
181
+ }
167
182
 
168
- const marker = `# PrimeLLM Configuration for ${tool}`;
183
+ // Read existing profile content
184
+ let profileContent = '';
185
+ try {
186
+ if (existsSync(profilePath)) {
187
+ profileContent = readFileSync(profilePath, 'utf8');
188
+ }
189
+ } catch {
190
+ // File doesn't exist, will create new
191
+ }
192
+
193
+ // Remove existing PrimeLLM configuration for this tool
194
+ const startMarker = `# PrimeLLM Configuration for ${tool}`;
169
195
  const endMarker = `# End PrimeLLM Configuration for ${tool}`;
170
196
 
171
- const configBlock = `
172
- ${marker}
173
- ${keyExport}
174
- ${baseExport}
175
- ${endMarker}
176
- `;
197
+ const startIndex = profileContent.indexOf(startMarker);
198
+ const endIndex = profileContent.indexOf(endMarker);
177
199
 
178
- // Check if profile exists and if our config is already there
179
- if (existsSync(profilePath)) {
180
- const content = readFileSync(profilePath, 'utf8');
200
+ if (startIndex !== -1 && endIndex !== -1) {
201
+ profileContent = profileContent.substring(0, startIndex) +
202
+ profileContent.substring(endIndex + endMarker.length);
203
+ }
181
204
 
182
- if (content.includes(marker)) {
183
- // Replace existing config
184
- const regex = new RegExp(`${marker}[\\s\\S]*?${endMarker}`, 'g');
185
- const newContent = content.replace(regex, configBlock.trim());
186
- writeFileSync(profilePath, newContent);
187
- } else {
188
- // Append new config
189
- appendFileSync(profilePath, configBlock);
190
- }
205
+ // Build new configuration block
206
+ let configBlock: string;
207
+
208
+ if (isWindows()) {
209
+ // PowerShell syntax
210
+ configBlock = `
211
+ ${startMarker}
212
+ $env:${toolInfo.envKeyName} = '${apiKey}'
213
+ $env:${toolInfo.envBaseName} = '${PRIMELLM_BASE_URL}'
214
+ ${endMarker}
215
+ `;
191
216
  } else {
192
- // Create parent directory if it doesn't exist
193
- const profileDir = dirname(profilePath);
194
- if (!existsSync(profileDir)) {
195
- mkdirSync(profileDir, { recursive: true });
217
+ const shell = process.env.SHELL || '';
218
+ if (shell.includes('fish')) {
219
+ // Fish shell syntax
220
+ configBlock = `
221
+ ${startMarker}
222
+ set -gx ${toolInfo.envKeyName} '${apiKey}'
223
+ set -gx ${toolInfo.envBaseName} '${PRIMELLM_BASE_URL}'
224
+ ${endMarker}
225
+ `;
226
+ } else {
227
+ // Bash/Zsh syntax
228
+ configBlock = `
229
+ ${startMarker}
230
+ export ${toolInfo.envKeyName}='${apiKey}'
231
+ export ${toolInfo.envBaseName}='${PRIMELLM_BASE_URL}'
232
+ ${endMarker}
233
+ `;
196
234
  }
197
- // Create new profile with config
198
- writeFileSync(profilePath, configBlock);
199
235
  }
200
236
 
201
- return {
202
- profilePath,
203
- commands: [keyExport, baseExport],
204
- };
237
+ // Append configuration
238
+ profileContent = profileContent.trimEnd() + '\n' + configBlock;
239
+
240
+ writeFileSync(profilePath, profileContent);
241
+
242
+ return profilePath;
243
+ }
244
+
245
+ function setCurrentSessionEnv(tool: ToolName, apiKey: string): void {
246
+ const toolInfo = TOOLS[tool];
247
+ process.env[toolInfo.envKeyName] = apiKey;
248
+ process.env[toolInfo.envBaseName] = PRIMELLM_BASE_URL;
205
249
  }
206
250
 
207
251
  // ============================================================================
@@ -303,9 +347,9 @@ async function main(): Promise<void> {
303
347
  const existing = checkExistingEnvVars(selectedTool);
304
348
 
305
349
  if (existing.apiKey || existing.baseUrl) {
306
- console.log(chalk.yellow('⚠ Existing environment configuration found:\n'));
307
- console.log(chalk.gray(` ${toolInfo.envKeyName}: ${existing.apiKey ? maskApiKey(existing.apiKey) : '(not set)'}`));
308
- console.log(chalk.gray(` ${toolInfo.envBaseName}: ${existing.baseUrl || '(not set)'}`));
350
+ console.log(chalk.yellow('⚠ Existing configuration found:\n'));
351
+ console.log(chalk.gray(` API Key: ${existing.apiKey ? maskApiKey(existing.apiKey) : '(not set)'}`));
352
+ console.log(chalk.gray(` Base URL: ${existing.baseUrl || '(not set)'}`));
309
353
  console.log();
310
354
 
311
355
  const { confirmOverwrite } = await prompt<{ confirmOverwrite: boolean }>({
@@ -365,11 +409,16 @@ async function main(): Promise<void> {
365
409
  console.log(chalk.green(`✓ API key validated: ${maskApiKey(apiKey)}`));
366
410
  console.log();
367
411
 
368
- // ============ STEP 5: Write Configuration ============
412
+ // ============ STEP 5: Write Configuration to Shell Profile ============
369
413
  const writeSpinner = ora('Writing configuration to shell profile...').start();
370
414
 
371
415
  try {
372
- const { profilePath, commands } = writeEnvToProfile(selectedTool, apiKey);
416
+ // Write to shell profile
417
+ const profilePath = writeToShellProfile(selectedTool, apiKey);
418
+
419
+ // Also set for current session
420
+ setCurrentSessionEnv(selectedTool, apiKey);
421
+
373
422
  writeSpinner.succeed(chalk.green('Configuration saved to shell profile'));
374
423
 
375
424
  console.log();
@@ -378,31 +427,20 @@ async function main(): Promise<void> {
378
427
  console.log(chalk.green.bold('✅ PrimeLLM configured successfully!'));
379
428
  console.log();
380
429
 
381
- console.log(chalk.white('Environment variables added:'));
382
- commands.forEach(cmd => {
383
- console.log(chalk.cyan(` ${cmd}`));
384
- });
430
+ console.log(chalk.gray(`Profile updated: ${profilePath}`));
431
+ console.log(chalk.gray(`Base URL: ${PRIMELLM_BASE_URL}`));
385
432
  console.log();
386
433
 
387
- console.log(chalk.gray(`Profile location: ${profilePath}`));
434
+ // Show what was set
435
+ console.log(chalk.white('Environment variables configured:'));
436
+ console.log(chalk.cyan(` ${toolInfo.envKeyName}=${maskApiKey(apiKey)}`));
437
+ console.log(chalk.cyan(` ${toolInfo.envBaseName}=${PRIMELLM_BASE_URL}`));
388
438
  console.log();
389
439
 
390
- console.log(chalk.yellow.bold('⚠ IMPORTANT: To apply the changes, run one of the following:'));
440
+ console.log(chalk.yellow.bold('⚠ IMPORTANT: Open a new terminal for changes to take effect!'));
391
441
  console.log();
392
442
 
393
- const os = platform();
394
- if (os === 'win32') {
395
- console.log(chalk.cyan(' 1. Restart PowerShell'));
396
- console.log(chalk.cyan(' 2. Or run: . $PROFILE'));
397
- } else {
398
- const shell = process.env.SHELL || '/bin/bash';
399
- const shellName = shell.split('/').pop();
400
- console.log(chalk.cyan(` 1. Restart your terminal`));
401
- console.log(chalk.cyan(` 2. Or run: source ${profilePath}`));
402
- }
403
-
404
- console.log();
405
- console.log(chalk.white('Then you can use:'));
443
+ console.log(chalk.white('You can now use:'));
406
444
  console.log(chalk.cyan(` ${toolInfo.command}`));
407
445
  console.log(chalk.white('with PrimeLLM as the backend.'));
408
446
  console.log();