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 +129 -100
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +143 -105
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
|
|
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
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
|
143
|
-
const toolInfo = TOOLS[tool];
|
|
151
|
+
function writeToShellProfile(tool, apiKey) {
|
|
144
152
|
const profilePath = getShellProfilePath();
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
const
|
|
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
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
|
265
|
-
console.log(chalk_1.default.gray(`
|
|
266
|
-
console.log(chalk_1.default.gray(`
|
|
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
|
-
|
|
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.
|
|
328
|
-
|
|
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
|
-
|
|
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:
|
|
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('
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
|
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
|
-
|
|
166
|
-
const
|
|
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
|
-
|
|
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
|
|
172
|
-
|
|
173
|
-
${keyExport}
|
|
174
|
-
${baseExport}
|
|
175
|
-
${endMarker}
|
|
176
|
-
`;
|
|
197
|
+
const startIndex = profileContent.indexOf(startMarker);
|
|
198
|
+
const endIndex = profileContent.indexOf(endMarker);
|
|
177
199
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
200
|
+
if (startIndex !== -1 && endIndex !== -1) {
|
|
201
|
+
profileContent = profileContent.substring(0, startIndex) +
|
|
202
|
+
profileContent.substring(endIndex + endMarker.length);
|
|
203
|
+
}
|
|
181
204
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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
|
|
307
|
-
console.log(chalk.gray(`
|
|
308
|
-
console.log(chalk.gray(`
|
|
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
|
-
|
|
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.
|
|
382
|
-
|
|
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
|
-
|
|
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:
|
|
440
|
+
console.log(chalk.yellow.bold('⚠ IMPORTANT: Open a new terminal for changes to take effect!'));
|
|
391
441
|
console.log();
|
|
392
442
|
|
|
393
|
-
|
|
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();
|