unbound-claude-code 0.2.4 → 0.2.6
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/auth.js +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/cli.d.ts +8 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +162 -82
- package/dist/cli.js.map +1 -1
- package/dist/global.js +2 -0
- package/dist/global.js.map +1 -1
- package/dist/interceptor.d.ts +1 -3
- package/dist/interceptor.d.ts.map +1 -1
- package/dist/interceptor.js +4 -59
- package/dist/interceptor.js.map +1 -1
- package/dist/storage.d.ts +60 -13
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +242 -37
- package/dist/storage.js.map +1 -1
- package/package.json +7 -5
package/dist/auth.js
CHANGED
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,uCAA2C;AAC3C,qCAA4C;AAE5C,MAAa,WAAW;IAItB,YAAY,UAAkB,GAAG,yBAAgB,KAAK;QACpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE;gBACrD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,EAAE;oBACnC,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,oCAAoC;gBACpC,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,IAAY,CAAC,IAAI,CAAC,IAAK,IAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/E,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1D,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5C,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -13,9 +13,16 @@ declare class UnboundCli {
|
|
|
13
13
|
private parseArgs;
|
|
14
14
|
private showHelp;
|
|
15
15
|
private showVersion;
|
|
16
|
+
/**
|
|
17
|
+
* Read the model configuration from Claude Code
|
|
18
|
+
* This reads from ~/.claude/settings.json and environment variables
|
|
19
|
+
* to determine what model Claude Code is using
|
|
20
|
+
*/
|
|
21
|
+
private getClaudeCodeModel;
|
|
16
22
|
private showConfig;
|
|
17
23
|
private clearConfig;
|
|
18
|
-
private
|
|
24
|
+
private configure;
|
|
25
|
+
private displayStartupConfig;
|
|
19
26
|
private checkClaudeCode;
|
|
20
27
|
private checkAndInstallClaudeCode;
|
|
21
28
|
/**
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AA4BH,cAAM,UAAU;IACd,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,OAAO,CAAiB;;IAOhC,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AA4BH,cAAM,UAAU;IACd,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,OAAO,CAAiB;;IAOhC,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,QAAQ;IAyChB,OAAO,CAAC,WAAW;IAKnB;;;;OAIG;YACW,kBAAkB;YAsBlB,UAAU;YAyCV,WAAW;YAIX,SAAS;YAcT,oBAAoB;YAsBpB,eAAe;YAWf,yBAAyB;IA0CvC;;;;OAIG;YACW,iBAAiB;YA6CjB,yBAAyB;YA2DzB,gBAAgB;YAuDhB,gBAAgB;IAsDjB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAmEhD;AAQD,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -88,11 +88,8 @@ class UnboundCli {
|
|
|
88
88
|
case '--show-config':
|
|
89
89
|
options.showConfig = true;
|
|
90
90
|
break;
|
|
91
|
-
case '--
|
|
92
|
-
|
|
93
|
-
options.setModel = args[i + 1];
|
|
94
|
-
i++; // Skip next arg
|
|
95
|
-
}
|
|
91
|
+
case '--configure':
|
|
92
|
+
options.configure = true;
|
|
96
93
|
break;
|
|
97
94
|
default:
|
|
98
95
|
// Pass through to Claude Code
|
|
@@ -111,14 +108,14 @@ USAGE:
|
|
|
111
108
|
unbound-claude-code [OPTIONS] [CLAUDE_ARGS...]
|
|
112
109
|
|
|
113
110
|
OPTIONS:
|
|
114
|
-
-h, --help
|
|
115
|
-
-v, --version
|
|
116
|
-
--debug
|
|
117
|
-
--skip-auth
|
|
118
|
-
--api-key KEY
|
|
119
|
-
--clear-config
|
|
120
|
-
--show-config
|
|
121
|
-
--
|
|
111
|
+
-h, --help Show this help message
|
|
112
|
+
-v, --version Show version information
|
|
113
|
+
--debug Enable debug logging
|
|
114
|
+
--skip-auth Skip API key authentication (use UNBOUND_API_KEY env var)
|
|
115
|
+
--api-key KEY Provide API key directly (will be stored securely)
|
|
116
|
+
--clear-config Clear stored configuration
|
|
117
|
+
--show-config Show current configuration
|
|
118
|
+
--configure Configure all preferences (model, vertex, etc.)
|
|
122
119
|
|
|
123
120
|
EXAMPLES:
|
|
124
121
|
unbound-claude-code # Start Claude with Unbound AI
|
|
@@ -127,7 +124,10 @@ EXAMPLES:
|
|
|
127
124
|
unbound-claude-code --api-key YOUR_KEY # Set and store API key securely
|
|
128
125
|
unbound-claude-code --show-config # Show stored configuration
|
|
129
126
|
unbound-claude-code --clear-config # Clear stored credentials
|
|
130
|
-
unbound-claude-code --
|
|
127
|
+
unbound-claude-code --configure # Configure all preferences
|
|
128
|
+
|
|
129
|
+
CONFIGURATION COMMANDS:
|
|
130
|
+
--configure Interactively configure all preferences
|
|
131
131
|
|
|
132
132
|
ENVIRONMENT VARIABLES:
|
|
133
133
|
UNBOUND_API_KEY # Your Unbound API key
|
|
@@ -144,50 +144,104 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
144
144
|
const packageJson = require('../package.json');
|
|
145
145
|
console.log(`unbound-claude-code v${packageJson.version}`);
|
|
146
146
|
}
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
/**
|
|
148
|
+
* Read the model configuration from Claude Code
|
|
149
|
+
* This reads from ~/.claude/settings.json and environment variables
|
|
150
|
+
* to determine what model Claude Code is using
|
|
151
|
+
*/
|
|
152
|
+
async getClaudeCodeModel() {
|
|
153
|
+
const envPrimaryModel = process.env.ANTHROPIC_MODEL;
|
|
154
|
+
const envSmallModel = process.env.ANTHROPIC_SMALL_FAST_MODEL;
|
|
155
|
+
const claudeDir = (0, path_1.join)((0, os_1.homedir)(), '.claude');
|
|
156
|
+
const settingsPath = (0, path_1.join)(claudeDir, 'settings.json');
|
|
157
|
+
let settingsModel;
|
|
158
|
+
try {
|
|
159
|
+
const settingsContent = await fs_1.promises.readFile(settingsPath, 'utf8');
|
|
160
|
+
const settings = JSON.parse(settingsContent);
|
|
161
|
+
settingsModel = settings.model || settings.defaultModel;
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
// File doesn't exist or can't be read, that's okay
|
|
165
|
+
}
|
|
166
|
+
const primaryModel = envPrimaryModel || settingsModel || 'claude-sonnet-4-20250514';
|
|
167
|
+
const smallModel = envSmallModel || 'claude-3-5-haiku-20241022';
|
|
168
|
+
return { primaryModel, smallModel };
|
|
169
|
+
}
|
|
170
|
+
async showConfig() {
|
|
171
|
+
const config = await this.storage.getFullConfig();
|
|
172
|
+
const vertexConfig = await this.storage.getVertexConfig();
|
|
173
|
+
const hasApiKey = await this.storage.hasApiKey();
|
|
149
174
|
console.log('Current Unbound Code Configuration:');
|
|
175
|
+
console.log('═'.repeat(50));
|
|
150
176
|
console.log('');
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
177
|
+
if (vertexConfig.useVertex) {
|
|
178
|
+
console.log('🔄 Mode: Vertex AI');
|
|
179
|
+
console.log(` Primary model: ${vertexConfig.model}`);
|
|
180
|
+
console.log(` Small/fast model: ${vertexConfig.smallModel}`);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.log('🔗 Mode: Standard Anthropic');
|
|
184
|
+
// Get the actual model from Claude Code configuration
|
|
185
|
+
const claudeCodeModel = await this.getClaudeCodeModel();
|
|
186
|
+
console.log(` Model: ${claudeCodeModel.primaryModel}`);
|
|
187
|
+
// Show where the model configuration comes from
|
|
188
|
+
if (process.env.ANTHROPIC_MODEL) {
|
|
189
|
+
console.log(` (configured via ANTHROPIC_MODEL environment variable)`);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.log(` (using Claude Code default)`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
155
195
|
if (config.lastUsed) {
|
|
156
|
-
console.log(`Last Used: ${new Date(config.lastUsed).toLocaleString()}`);
|
|
196
|
+
console.log(` Last Used: ${new Date(config.lastUsed).toLocaleString()}`);
|
|
157
197
|
}
|
|
158
198
|
console.log('');
|
|
159
|
-
console.log(
|
|
160
|
-
console.log(`
|
|
199
|
+
console.log('📁 Storage Locations:');
|
|
200
|
+
console.log(` Config: ~/.unbound-code/config.json (non-sensitive data only)`);
|
|
201
|
+
console.log(` API key: System keychain (secure storage)`);
|
|
202
|
+
console.log('');
|
|
203
|
+
console.log('💡 Management Commands:');
|
|
204
|
+
console.log(' --configure # Reconfigure all preferences');
|
|
205
|
+
console.log(' --clear-config # Clear all configuration');
|
|
161
206
|
}
|
|
162
207
|
async clearConfig() {
|
|
163
208
|
await this.storage.clearConfig();
|
|
164
209
|
}
|
|
165
|
-
async
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
210
|
+
async configure() {
|
|
211
|
+
console.log('\n🔧 Unbound Code Configuration Setup');
|
|
212
|
+
console.log('═'.repeat(50));
|
|
213
|
+
console.log('This will configure your preferences for Unbound Code.');
|
|
214
|
+
console.log('');
|
|
215
|
+
// First, configure vertex preferences
|
|
216
|
+
const vertexConfig = await this.promptVertexConfiguration();
|
|
217
|
+
await this.storage.setVertexConfig(vertexConfig);
|
|
218
|
+
console.log('\n✓ Configuration completed successfully!');
|
|
219
|
+
console.log('Use --show-config to view your current settings.');
|
|
220
|
+
}
|
|
221
|
+
async displayStartupConfig() {
|
|
222
|
+
const config = await this.storage.getStartupConfig();
|
|
223
|
+
console.log('\n🔧 Unbound Code Configuration');
|
|
224
|
+
console.log('═'.repeat(40));
|
|
225
|
+
if (config.useVertex) {
|
|
226
|
+
console.log('Mode: Vertex AI');
|
|
227
|
+
console.log(` ✓ Primary model: ${config.vertexPrimaryModel}`);
|
|
228
|
+
console.log(` ✓ Small/fast model: ${config.vertexSmallModel}`);
|
|
171
229
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const modelExists = models.data.some(m => m && m.id && (m.id === model || m.id.endsWith(model)));
|
|
176
|
-
if (!modelExists) {
|
|
177
|
-
console.log(`Model '${model}' not found. Available models:`);
|
|
178
|
-
models.data
|
|
179
|
-
.filter(m => m && m.id)
|
|
180
|
-
.forEach(m => console.log(` - ${m.id}`));
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
230
|
+
else {
|
|
231
|
+
console.log('Mode: Standard Anthropic');
|
|
232
|
+
console.log(` ✓ Model: ${config.model}`);
|
|
183
233
|
}
|
|
184
|
-
|
|
185
|
-
console.log(
|
|
234
|
+
console.log('');
|
|
235
|
+
console.log('💡 Configuration Commands:');
|
|
236
|
+
console.log(' unbound-claude-code --configure # Configure all preferences');
|
|
237
|
+
console.log(' unbound-claude-code --show-config # Show detailed configuration');
|
|
238
|
+
console.log('');
|
|
186
239
|
}
|
|
187
240
|
async checkClaudeCode() {
|
|
188
|
-
// Check if claude command is available
|
|
241
|
+
// Check if claude command is available (cross-platform)
|
|
189
242
|
try {
|
|
190
|
-
|
|
243
|
+
const command = process.platform === 'win32' ? 'where claude' : 'which claude';
|
|
244
|
+
(0, child_process_1.execSync)(command, { stdio: 'ignore' });
|
|
191
245
|
}
|
|
192
246
|
catch (error) {
|
|
193
247
|
// Try to auto-install Claude CLI
|
|
@@ -197,19 +251,43 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
197
251
|
async checkAndInstallClaudeCode() {
|
|
198
252
|
console.log('Claude CLI not found. Installing automatically...');
|
|
199
253
|
try {
|
|
200
|
-
// Attempt to install Claude CLI using npm
|
|
201
|
-
|
|
254
|
+
// Attempt to install Claude CLI using npm with more verbose output for debugging
|
|
255
|
+
const installCommand = 'npm install -g @anthropic-ai/claude-code';
|
|
256
|
+
console.log(`Running: ${installCommand}`);
|
|
257
|
+
try {
|
|
258
|
+
(0, child_process_1.execSync)(installCommand, {
|
|
259
|
+
stdio: 'pipe',
|
|
260
|
+
timeout: 60000 // 60 second timeout
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
catch (installError) {
|
|
264
|
+
// More detailed error reporting
|
|
265
|
+
console.error('Installation error details:', installError.message);
|
|
266
|
+
if (installError.stderr) {
|
|
267
|
+
console.error('Installation stderr:', installError.stderr.toString());
|
|
268
|
+
}
|
|
269
|
+
throw new Error(`Failed to install Claude CLI automatically. Error: ${installError.message}. Please install manually with: npm install -g @anthropic-ai/claude-code`);
|
|
270
|
+
}
|
|
202
271
|
}
|
|
203
|
-
catch (
|
|
204
|
-
throw new Error(
|
|
272
|
+
catch (error) {
|
|
273
|
+
throw new Error(`Failed to install Claude CLI automatically. ${error.message}`);
|
|
205
274
|
}
|
|
206
|
-
// Check if installation was successful
|
|
275
|
+
// Check if installation was successful (cross-platform)
|
|
207
276
|
try {
|
|
208
|
-
|
|
277
|
+
const command = process.platform === 'win32' ? 'where claude' : 'which claude';
|
|
278
|
+
(0, child_process_1.execSync)(command, { stdio: 'ignore' });
|
|
209
279
|
console.log('✓ Claude CLI installed successfully');
|
|
210
280
|
}
|
|
211
281
|
catch (checkError) {
|
|
212
|
-
|
|
282
|
+
// Try alternative check methods
|
|
283
|
+
try {
|
|
284
|
+
// Try running claude directly to see if it's available
|
|
285
|
+
(0, child_process_1.execSync)('claude --version', { stdio: 'ignore', timeout: 5000 });
|
|
286
|
+
console.log('✓ Claude CLI installed successfully');
|
|
287
|
+
}
|
|
288
|
+
catch (versionError) {
|
|
289
|
+
throw new Error('Claude CLI installation completed but command still not found in PATH. Please restart your terminal or check your PATH configuration.');
|
|
290
|
+
}
|
|
213
291
|
}
|
|
214
292
|
}
|
|
215
293
|
/**
|
|
@@ -236,7 +314,6 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
236
314
|
}
|
|
237
315
|
catch (parseError) {
|
|
238
316
|
// Invalid JSON, start with empty object
|
|
239
|
-
console.log('Warning: ~/.claude/settings.json contains invalid JSON, creating new configuration');
|
|
240
317
|
settings = {};
|
|
241
318
|
}
|
|
242
319
|
}
|
|
@@ -253,9 +330,6 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
253
330
|
// Make anthropic_key.sh executable (equivalent to chmod +x)
|
|
254
331
|
const stats = await fs_1.promises.stat(keyHelperPath);
|
|
255
332
|
await fs_1.promises.chmod(keyHelperPath, stats.mode | 0o111);
|
|
256
|
-
console.log('✓ Claude configuration updated successfully');
|
|
257
|
-
console.log(` - Settings: ${settingsPath}`);
|
|
258
|
-
console.log(` - API Key Helper: ${keyHelperPath}`);
|
|
259
333
|
}
|
|
260
334
|
catch (error) {
|
|
261
335
|
throw new Error(`Failed to setup Claude configuration: ${error.message}`);
|
|
@@ -284,12 +358,12 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
284
358
|
console.log(' • Primary model: claude-sonnet-4@20250514');
|
|
285
359
|
console.log(' • Small/fast model: claude-3-5-haiku@20241022');
|
|
286
360
|
console.log('');
|
|
287
|
-
const
|
|
288
|
-
const
|
|
361
|
+
const useDefaultsAnswer = await question('Would you like to proceed with the default models? (y/n): ');
|
|
362
|
+
const useDefaults = useDefaultsAnswer.toLowerCase().trim() === 'y' || useDefaultsAnswer.toLowerCase().trim() === 'yes';
|
|
289
363
|
let primaryModel = 'anthropic.claude-sonnet-4@20250514';
|
|
290
364
|
let smallModel = 'anthropic.claude-3-5-haiku@20241022';
|
|
291
|
-
if (
|
|
292
|
-
console.log('\n📝 Enter custom model IDs:');
|
|
365
|
+
if (!useDefaults) {
|
|
366
|
+
console.log('\n📝 Enter custom Vertex AI model IDs:');
|
|
293
367
|
const customPrimary = await question(`Primary model (default: ${primaryModel}): `);
|
|
294
368
|
if (customPrimary.trim()) {
|
|
295
369
|
primaryModel = customPrimary.trim();
|
|
@@ -339,8 +413,7 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
339
413
|
return storedApiKey;
|
|
340
414
|
}
|
|
341
415
|
else {
|
|
342
|
-
|
|
343
|
-
await this.storage.clearConfig();
|
|
416
|
+
await this.storage.clearConfigDueToInvalidKey();
|
|
344
417
|
}
|
|
345
418
|
}
|
|
346
419
|
// Get API key (from env or prompt) - verification happens during prompt if needed
|
|
@@ -348,16 +421,11 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
348
421
|
// Only verify if key came from environment (prompt already verifies)
|
|
349
422
|
const envApiKey = process.env.UNBOUND_API_KEY;
|
|
350
423
|
if (envApiKey && envApiKey.trim() === apiKey) {
|
|
351
|
-
console.log('Using API key from UNBOUND_API_KEY environment variable...');
|
|
352
|
-
console.log('Verifying API key...');
|
|
353
424
|
const isValid = await this.auth.verifyApiKey(apiKey);
|
|
354
425
|
if (!isValid) {
|
|
426
|
+
await this.storage.clearConfigDueToInvalidKey();
|
|
355
427
|
throw new Error('Invalid API key. Please check your Unbound API key and try again.');
|
|
356
428
|
}
|
|
357
|
-
console.log('✓ API key verified and stored securely');
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
console.log('✓ API key verified and stored securely');
|
|
361
429
|
}
|
|
362
430
|
// Store the API key for future use (suppress duplicate message)
|
|
363
431
|
await this.storage.setApiKey(apiKey, true);
|
|
@@ -371,27 +439,23 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
371
439
|
UNBOUND_LOG_LEVEL: debug ? 'debug' : 'info',
|
|
372
440
|
};
|
|
373
441
|
if (vertexConfig?.useVertex) {
|
|
374
|
-
//
|
|
442
|
+
// Configure Vertex AI to use Unbound gateway
|
|
443
|
+
env.ANTHROPIC_VERTEX_BASE_URL = `${global_1.UNBOUND_BASE_URL}/v1`;
|
|
444
|
+
env.ANTHROPIC_VERTEX_PROJECT_ID = 'unbound-gateway';
|
|
445
|
+
env.CLAUDE_CODE_SKIP_VERTEX_AUTH = '1'; // Skip GCP authentication, let Unbound handle it
|
|
375
446
|
env.CLAUDE_CODE_USE_VERTEX = '1';
|
|
376
|
-
env.CLOUD_ML_REGION = '
|
|
377
|
-
env.ANTHROPIC_VERTEX_PROJECT_ID = 'dummy-project-id';
|
|
447
|
+
env.CLOUD_ML_REGION = 'unbound-gateway'; // Dummy region, Unbound will handle actual routing
|
|
378
448
|
env.ANTHROPIC_MODEL = vertexConfig.model;
|
|
379
449
|
env.ANTHROPIC_SMALL_FAST_MODEL = vertexConfig.smallModel;
|
|
380
|
-
console.log('Starting Claude with Vertex AI configuration...');
|
|
381
|
-
console.log(` ✓ Primary model: ${vertexConfig.model}`);
|
|
382
|
-
console.log(` ✓ Small/fast model: ${vertexConfig.smallModel}`);
|
|
383
450
|
}
|
|
384
451
|
else {
|
|
385
452
|
// Standard Unbound proxy configuration
|
|
386
453
|
env.ANTHROPIC_BASE_URL = global_1.UNBOUND_BASE_URL;
|
|
387
|
-
console.log('Starting Claude with Unbound AI gateway...');
|
|
388
454
|
}
|
|
389
|
-
console.log('');
|
|
390
455
|
// Set up NODE_OPTIONS to inject our interceptor into Claude Code process
|
|
391
456
|
const interceptorPath = (0, path_1.join)(__dirname, 'interceptor-loader.js');
|
|
392
457
|
env.NODE_OPTIONS = `--require "${interceptorPath}"`;
|
|
393
458
|
env.UNBOUND_API_KEY = apiKey; // Pass API key to interceptor
|
|
394
|
-
console.log('');
|
|
395
459
|
// Launch claude directly - it will use the API key from the helper script we set up
|
|
396
460
|
const claudeProcess = (0, child_process_1.spawn)('claude', claudeArgs, {
|
|
397
461
|
stdio: 'inherit',
|
|
@@ -426,24 +490,40 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
426
490
|
return;
|
|
427
491
|
}
|
|
428
492
|
if (options.showConfig) {
|
|
429
|
-
this.showConfig();
|
|
493
|
+
await this.showConfig();
|
|
430
494
|
return;
|
|
431
495
|
}
|
|
432
496
|
if (options.clearConfig) {
|
|
433
497
|
await this.clearConfig();
|
|
434
498
|
return;
|
|
435
499
|
}
|
|
436
|
-
if (options.
|
|
437
|
-
await this.
|
|
500
|
+
if (options.configure) {
|
|
501
|
+
await this.configure();
|
|
438
502
|
return;
|
|
439
503
|
}
|
|
440
504
|
// Check if Claude Code is available
|
|
441
505
|
await this.checkClaudeCode();
|
|
442
506
|
// Authenticate user
|
|
443
507
|
const apiKey = await this.authenticateUser(options);
|
|
444
|
-
//
|
|
445
|
-
|
|
446
|
-
|
|
508
|
+
// Check if user has completed initial configuration
|
|
509
|
+
const isConfigured = await this.storage.isConfigured();
|
|
510
|
+
let vertexConfig;
|
|
511
|
+
if (!isConfigured) {
|
|
512
|
+
// Prompt for initial configuration
|
|
513
|
+
vertexConfig = await this.promptVertexConfiguration();
|
|
514
|
+
await this.storage.setVertexConfig(vertexConfig);
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
// Use stored configuration
|
|
518
|
+
const storedVertexConfig = await this.storage.getVertexConfig();
|
|
519
|
+
vertexConfig = {
|
|
520
|
+
useVertex: storedVertexConfig.useVertex,
|
|
521
|
+
model: storedVertexConfig.model,
|
|
522
|
+
smallModel: storedVertexConfig.smallModel
|
|
523
|
+
};
|
|
524
|
+
// Display current configuration
|
|
525
|
+
await this.displayStartupConfig();
|
|
526
|
+
}
|
|
447
527
|
// Setup Claude configuration files
|
|
448
528
|
await this.setupClaudeConfig(apiKey);
|
|
449
529
|
// Launch Claude Code with interceptor
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAAgD;AAChD,2BAAoC;AACpC,+BAA4B;AAC5B,2BAA6B;AAC7B,mDAAqC;AACrC,iCAAqC;AACrC,uCAA2C;AAC3C,qCAA4C;AAmB5C,MAAM,UAAU;IAId;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;IACtC,CAAC;IAEO,SAAS,CAAC,IAAc;QAC9B,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpB,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,QAAQ,CAAC;gBACd,KAAK,IAAI;oBACP,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;oBACpB,MAAM;gBACR,KAAK,WAAW,CAAC;gBACjB,KAAK,IAAI;oBACP,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;oBACvB,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;oBACrB,MAAM;gBACR,KAAK,aAAa;oBAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACxB,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC7B,CAAC,EAAE,CAAC,CAAC,gBAAgB;oBACvB,CAAC;oBACD,MAAM;gBACR,KAAK,gBAAgB;oBACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC3B,MAAM;gBACR,KAAK,eAAe;oBAClB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC1B,MAAM;gBACR,KAAK,aAAa;oBAChB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC/B,CAAC,EAAE,CAAC,CAAC,gBAAgB;oBACvB,CAAC;oBACD,MAAM;gBACR;oBACE,8BAA8B;oBAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;YACV,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACjC,CAAC;IAEO,QAAQ;QACd,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCf,CAAC,CAAC;IACD,CAAC;IAEO,WAAW;QACjB,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEO,UAAU;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,IAAI,8CAA8C,EAAE,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,OAAO,IAAI,GAAG,yBAAgB,KAAK,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,KAAa;QAClC,kCAAkC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,gCAAgC,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI;qBACR,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;qBACtB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,uCAAuC;QACvC,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iCAAiC;YACjC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB;QACrC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,0CAA0C;YAC1C,IAAA,wBAAQ,EAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oHAAoH,CAAC,CAAC;QACxI,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uIAAuI,CAAC,CAAC;QAC3J,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC5C,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAE1D,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,aAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/C,uBAAuB;YACvB,IAAI,QAAQ,GAAQ,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,gCAAgC;gBAChC,MAAM,aAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC9B,iCAAiC;gBACjC,MAAM,eAAe,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAChE,IAAI,CAAC;oBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACzC,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,wCAAwC;oBACxC,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;oBAClG,QAAQ,GAAG,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,wDAAwD;gBACxD,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,wCAAwC;YACxC,QAAQ,CAAC,YAAY,GAAG,4BAA4B,CAAC;YAErD,8BAA8B;YAC9B,MAAM,aAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAE5E,2CAA2C;YAC3C,MAAM,aAAE,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;YAE5D,4DAA4D;YAC5D,MAAM,KAAK,GAAG,MAAM,aAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3C,MAAM,aAAE,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;YAElD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,YAAY,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,uBAAuB,aAAa,EAAE,CAAC,CAAC;QAEtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yCAA0C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB;QACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAmB,EAAE;YAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAE5B,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,8CAA8C,CAAC,CAAC;YACvF,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC;YAEjH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,+CAA+C,CAAC,CAAC;YACrF,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC;YAE9G,IAAI,YAAY,GAAG,oCAAoC,CAAC;YACxD,IAAI,UAAU,GAAG,qCAAqC,CAAC;YAEvD,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAE5C,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,2BAA2B,YAAY,KAAK,CAAC,CAAC;gBACnF,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;oBACzB,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;gBACtC,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,8BAA8B,UAAU,KAAK,CAAC,CAAC;gBAClF,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;oBACvB,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;gBAClC,CAAC;YACH,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,YAAY;gBACnB,UAAU,EAAE,UAAU;aACvB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAmB;QAChD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,wCAAwC;YACxC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YAEtD,gEAAgE;YAChE,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC;QAED,0CAA0C;QAC1C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACpD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC/C,OAAO,YAAY,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAChE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QAED,kFAAkF;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAE/C,qEAAqE;QACrE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC9C,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;QAED,gEAAgE;QAChE,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE3C,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,UAAoB,EAAE,KAAc,EAAE,YAA2B;QAC9G,kEAAkE;QAClE,0GAA0G;QAC1G,MAAM,GAAG,GAA0C;YACjD,GAAG,OAAO,CAAC,GAAG;YACd,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;SAC5C,CAAC;QAEF,IAAI,YAAY,EAAE,SAAS,EAAE,CAAC;YAC5B,sCAAsC;YACtC,GAAG,CAAC,sBAAsB,GAAG,GAAG,CAAC;YACjC,GAAG,CAAC,eAAe,GAAG,cAAc,CAAC;YACrC,GAAG,CAAC,2BAA2B,GAAG,kBAAkB,CAAC;YACrD,GAAG,CAAC,eAAe,GAAG,YAAY,CAAC,KAAM,CAAC;YAC1C,GAAG,CAAC,0BAA0B,GAAG,YAAY,CAAC,UAAW,CAAC;YAE1D,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,GAAG,CAAC,kBAAkB,GAAG,yBAAgB,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,yEAAyE;QACzE,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QACjE,GAAG,CAAC,YAAY,GAAG,cAAc,eAAe,GAAG,CAAC;QACpD,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,CAAC,8BAA8B;QAE5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,oFAAoF;QACpF,MAAM,aAAa,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,UAAU,EAAE;YAChD,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,wBAAwB;QACxB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,IAAc;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAErD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,oCAAoC;YACpC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,oBAAoB;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAEpD,qCAAqC;YACrC,+DAA+D;YAC/D,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,oCAAoC;YAE/E,mCAAmC;YACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAErC,sCAAsC;YACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,YAAY,CAAC,CAAC;QAExF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF;AAQQ,gCAAU;AANnB,4CAA4C;AAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,UAAU,EAAE,CAAC;IAC7B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/global.js
CHANGED
|
@@ -5,4 +5,6 @@ exports.UNBOUND_BASE_URL = void 0;
|
|
|
5
5
|
exports.UNBOUND_BASE_URL = "https://api.getunbound.ai";
|
|
6
6
|
// Development:
|
|
7
7
|
// export const UNBOUND_BASE_URL = "http://localhost:8787";
|
|
8
|
+
// Staging:
|
|
9
|
+
// export const UNBOUND_BASE_URL = "https://ai-gateway-43843357113.us-west1.run.app";
|
|
8
10
|
//# sourceMappingURL=global.js.map
|
package/dist/global.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.js","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACD,QAAA,gBAAgB,GAAG,2BAA2B,CAAC;AAE5D,eAAe;AACf,2DAA2D"}
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACD,QAAA,gBAAgB,GAAG,2BAA2B,CAAC;AAE5D,eAAe;AACf,2DAA2D;AAE3D,WAAW;AACX,qFAAqF"}
|
package/dist/interceptor.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Unbound Code Interceptor
|
|
3
3
|
*
|
|
4
|
-
* Intercepts and logs requests
|
|
4
|
+
* Intercepts and logs requests. Used for debugging.
|
|
5
5
|
* Uses environment variables to redirect Claude to Unbound gateway.
|
|
6
6
|
*/
|
|
7
7
|
import { UnboundConfig } from "./types";
|
|
@@ -9,8 +9,6 @@ export declare class UnboundInterceptor {
|
|
|
9
9
|
private config;
|
|
10
10
|
constructor(config?: UnboundConfig);
|
|
11
11
|
setApiKey(apiKey: string): void;
|
|
12
|
-
private isOutgoingRequest;
|
|
13
|
-
private extractModelFromVertexURL;
|
|
14
12
|
private logRequest;
|
|
15
13
|
instrumentFetch(): void;
|
|
16
14
|
instrumentAll(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,GAAE,aAAkB;IAQ/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKtC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,GAAE,aAAkB;IAQ/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKtC,OAAO,CAAC,UAAU;IAmDX,eAAe,IAAI,IAAI;IA4BvB,aAAa,IAAI,IAAI;CAG5B;AAKD,wBAAgB,4BAA4B,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,kBAAkB,CASvF;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,GAAG,IAAI,CAEjE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIrD"}
|
package/dist/interceptor.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Unbound Code Interceptor
|
|
4
4
|
*
|
|
5
|
-
* Intercepts and logs requests
|
|
5
|
+
* Intercepts and logs requests. Used for debugging.
|
|
6
6
|
* Uses environment variables to redirect Claude to Unbound gateway.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -23,23 +23,6 @@ class UnboundInterceptor {
|
|
|
23
23
|
// No-op: API key is now handled via environment variables
|
|
24
24
|
console.log("API key set via environment variables");
|
|
25
25
|
}
|
|
26
|
-
isOutgoingRequest(url) {
|
|
27
|
-
return url.includes('aiplatform.googleapis.com');
|
|
28
|
-
}
|
|
29
|
-
extractModelFromVertexURL(url) {
|
|
30
|
-
// Extract model from Vertex AI URL pattern:
|
|
31
|
-
// https://us-east5-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamGenerateContent
|
|
32
|
-
const match = url.match(/\/publishers\/anthropic\/models\/([^:]+)/);
|
|
33
|
-
if (match) {
|
|
34
|
-
let model = match[1];
|
|
35
|
-
// Ensure model starts with 'anthropic.'
|
|
36
|
-
if (!model.startsWith('anthropic.')) {
|
|
37
|
-
model = `anthropic.${model}`;
|
|
38
|
-
}
|
|
39
|
-
return model;
|
|
40
|
-
}
|
|
41
|
-
return 'anthropic.claude-sonnet-4@20250514'; // fallback
|
|
42
|
-
}
|
|
43
26
|
logRequest(url, method, headers, body) {
|
|
44
27
|
console.log('\n🔍 REQUEST INTERCEPTED');
|
|
45
28
|
console.log('═'.repeat(50));
|
|
@@ -104,47 +87,9 @@ class UnboundInterceptor {
|
|
|
104
87
|
global.fetch = async function (input, init = {}) {
|
|
105
88
|
const url = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
|
|
106
89
|
const method = init.method || 'GET';
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// interceptor.logRequest(url, method, init.headers, init.body);
|
|
111
|
-
// Redirect Vertex AI requests to Unbound gateway
|
|
112
|
-
const model = interceptor.extractModelFromVertexURL(url);
|
|
113
|
-
const unboundUrl = `${interceptor.config.baseUrl}/messages`;
|
|
114
|
-
// Parse the original body to add model
|
|
115
|
-
let newBody = init.body;
|
|
116
|
-
if (init.body) {
|
|
117
|
-
try {
|
|
118
|
-
const bodyObj = typeof init.body === 'string' ? JSON.parse(init.body) : init.body;
|
|
119
|
-
const modifiedBody = {
|
|
120
|
-
...bodyObj,
|
|
121
|
-
model: model
|
|
122
|
-
};
|
|
123
|
-
newBody = JSON.stringify(modifiedBody);
|
|
124
|
-
}
|
|
125
|
-
catch (e) {
|
|
126
|
-
console.error('Failed to parse request body:', e);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// Create new headers with Unbound API key
|
|
130
|
-
const apiKey = process.env.UNBOUND_API_KEY;
|
|
131
|
-
if (!apiKey) {
|
|
132
|
-
console.error('UNBOUND_API_KEY environment variable not set');
|
|
133
|
-
return originalFetch(input, init);
|
|
134
|
-
}
|
|
135
|
-
const newHeaders = {
|
|
136
|
-
...init.headers,
|
|
137
|
-
'x-api-key': apiKey,
|
|
138
|
-
'content-type': 'application/json'
|
|
139
|
-
};
|
|
140
|
-
// Make the redirected request
|
|
141
|
-
return originalFetch(unboundUrl, {
|
|
142
|
-
...init,
|
|
143
|
-
headers: newHeaders,
|
|
144
|
-
body: newBody
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
// Pass through to original fetch for non-intercepted requests
|
|
90
|
+
// Enable this to log all outgoing requests for debugging
|
|
91
|
+
// interceptor.logRequest(url, method, init.headers, init.body);
|
|
92
|
+
// Pass through to original fetch
|
|
148
93
|
return originalFetch(input, init);
|
|
149
94
|
};
|
|
150
95
|
// Mark fetch as instrumented
|
package/dist/interceptor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../src/interceptor.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -1,53 +1,100 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Unbound Code Storage - API Key and Config Management
|
|
3
3
|
*
|
|
4
|
-
* Stores API key securely in system keychain
|
|
4
|
+
* Stores API key securely in system keychain when available,
|
|
5
|
+
* falls back to file-based storage for cross-platform compatibility
|
|
5
6
|
*/
|
|
6
7
|
export interface UnboundConfig {
|
|
7
8
|
model?: string;
|
|
8
9
|
baseUrl?: string;
|
|
9
10
|
logLevel?: string;
|
|
10
11
|
lastUsed?: string;
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
useVertex?: boolean;
|
|
14
|
+
vertexPrimaryModel?: string;
|
|
15
|
+
vertexSmallModel?: string;
|
|
16
|
+
isConfigured?: boolean;
|
|
11
17
|
}
|
|
12
18
|
export declare class UnboundStorage {
|
|
13
19
|
private readonly SERVICE_NAME;
|
|
14
20
|
private readonly ACCOUNT_NAME;
|
|
21
|
+
private readonly CONFIG_DIR;
|
|
22
|
+
private readonly CONFIG_FILE;
|
|
15
23
|
constructor();
|
|
24
|
+
private ensureConfigDir;
|
|
25
|
+
private readConfig;
|
|
26
|
+
private writeConfig;
|
|
16
27
|
/**
|
|
17
|
-
* Store API key
|
|
28
|
+
* Store API key securely (keychain preferred, file fallback)
|
|
18
29
|
*/
|
|
19
30
|
setApiKey(apiKey: string, silent?: boolean): Promise<void>;
|
|
20
31
|
/**
|
|
21
|
-
* Get stored API key
|
|
32
|
+
* Get stored API key (keychain preferred, file fallback)
|
|
22
33
|
*/
|
|
23
34
|
getApiKey(): Promise<string | null>;
|
|
24
35
|
/**
|
|
25
|
-
* Get stored model
|
|
36
|
+
* Get stored model
|
|
26
37
|
*/
|
|
27
|
-
getModel(): string
|
|
38
|
+
getModel(): Promise<string>;
|
|
28
39
|
/**
|
|
29
|
-
* Store model
|
|
40
|
+
* Store model preference
|
|
30
41
|
*/
|
|
31
|
-
setModel(model: string): void
|
|
42
|
+
setModel(model: string): Promise<void>;
|
|
32
43
|
/**
|
|
33
|
-
* Get full configuration
|
|
44
|
+
* Get full configuration
|
|
34
45
|
*/
|
|
35
|
-
getFullConfig(): UnboundConfig
|
|
46
|
+
getFullConfig(): Promise<UnboundConfig>;
|
|
36
47
|
/**
|
|
37
|
-
* Update configuration
|
|
48
|
+
* Update configuration
|
|
38
49
|
*/
|
|
39
|
-
updateConfig(updates: Partial<UnboundConfig>): void
|
|
50
|
+
updateConfig(updates: Partial<UnboundConfig>): Promise<void>;
|
|
40
51
|
/**
|
|
41
|
-
* Clear all stored data including keychain
|
|
52
|
+
* Clear all stored data including keychain and config file
|
|
42
53
|
*/
|
|
43
54
|
clearConfig(): Promise<void>;
|
|
55
|
+
clearConfigDueToInvalidKey(): Promise<void>;
|
|
44
56
|
/**
|
|
45
|
-
* Check if API key is stored
|
|
57
|
+
* Check if API key is stored
|
|
46
58
|
*/
|
|
47
59
|
hasApiKey(): Promise<boolean>;
|
|
48
60
|
/**
|
|
49
61
|
* Check if API key is stored (sync version for backward compatibility)
|
|
50
62
|
*/
|
|
51
63
|
hasApiKeySync(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Get vertex configuration
|
|
66
|
+
*/
|
|
67
|
+
getVertexConfig(): Promise<{
|
|
68
|
+
useVertex: boolean;
|
|
69
|
+
model?: string;
|
|
70
|
+
smallModel?: string;
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* Store vertex configuration
|
|
74
|
+
*/
|
|
75
|
+
setVertexConfig(vertexConfig: {
|
|
76
|
+
useVertex: boolean;
|
|
77
|
+
model?: string;
|
|
78
|
+
smallModel?: string;
|
|
79
|
+
}): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Check if user has completed initial configuration
|
|
82
|
+
*/
|
|
83
|
+
isConfigured(): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Mark configuration as complete
|
|
86
|
+
*/
|
|
87
|
+
markAsConfigured(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Get startup display configuration
|
|
90
|
+
*/
|
|
91
|
+
getStartupConfig(): Promise<{
|
|
92
|
+
hasApiKey: boolean;
|
|
93
|
+
model: string;
|
|
94
|
+
useVertex: boolean;
|
|
95
|
+
vertexPrimaryModel?: string;
|
|
96
|
+
vertexSmallModel?: string;
|
|
97
|
+
baseUrl: string;
|
|
98
|
+
}>;
|
|
52
99
|
}
|
|
53
100
|
//# sourceMappingURL=storage.d.ts.map
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;;YAOtD,eAAe;YASf,UAAU;YAUV,WAAW;IASzB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvE;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuBzC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IASjC;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAkB7C;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;OAEG;IACH,aAAa,IAAI,OAAO;IAMxB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB7F;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/G;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAStC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CAsBH"}
|
package/dist/storage.js
CHANGED
|
@@ -2,10 +2,14 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Unbound Code Storage - API Key and Config Management
|
|
4
4
|
*
|
|
5
|
-
* Stores API key securely in system keychain
|
|
5
|
+
* Stores API key securely in system keychain when available,
|
|
6
|
+
* falls back to file-based storage for cross-platform compatibility
|
|
6
7
|
*/
|
|
7
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
9
|
exports.UnboundStorage = void 0;
|
|
10
|
+
const fs_1 = require("fs");
|
|
11
|
+
const path_1 = require("path");
|
|
12
|
+
const os_1 = require("os");
|
|
9
13
|
const global_1 = require("./global");
|
|
10
14
|
// Import keytar for keychain integration
|
|
11
15
|
let keytar = null;
|
|
@@ -14,80 +18,163 @@ try {
|
|
|
14
18
|
}
|
|
15
19
|
catch (error) {
|
|
16
20
|
// keytar not available
|
|
17
|
-
console.warn('keytar not available, API key storage will not work');
|
|
18
21
|
}
|
|
19
22
|
class UnboundStorage {
|
|
20
23
|
constructor() {
|
|
21
24
|
this.SERVICE_NAME = 'unbound-claude-code';
|
|
22
25
|
this.ACCOUNT_NAME = 'api-key';
|
|
23
|
-
|
|
26
|
+
this.CONFIG_DIR = (0, path_1.join)((0, os_1.homedir)(), '.unbound-code');
|
|
27
|
+
this.CONFIG_FILE = (0, path_1.join)(this.CONFIG_DIR, 'config.json');
|
|
28
|
+
// Ensure config directory exists
|
|
29
|
+
this.ensureConfigDir();
|
|
30
|
+
}
|
|
31
|
+
async ensureConfigDir() {
|
|
32
|
+
try {
|
|
33
|
+
await fs_1.promises.mkdir(this.CONFIG_DIR, { recursive: true });
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
// Directory already exists or creation failed - ignore
|
|
37
|
+
//console.warn('Failed to create config directory:', error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async readConfig() {
|
|
41
|
+
try {
|
|
42
|
+
await this.ensureConfigDir();
|
|
43
|
+
const configData = await fs_1.promises.readFile(this.CONFIG_FILE, 'utf8');
|
|
44
|
+
return JSON.parse(configData);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
return {};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async writeConfig(config) {
|
|
51
|
+
try {
|
|
52
|
+
await this.ensureConfigDir();
|
|
53
|
+
await fs_1.promises.writeFile(this.CONFIG_FILE, JSON.stringify(config, null, 2), 'utf8');
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
console.warn('Failed to write config file:', error);
|
|
57
|
+
}
|
|
24
58
|
}
|
|
25
59
|
/**
|
|
26
|
-
* Store API key
|
|
60
|
+
* Store API key securely (keychain preferred, file fallback)
|
|
27
61
|
*/
|
|
28
62
|
async setApiKey(apiKey, silent = false) {
|
|
29
|
-
|
|
30
|
-
|
|
63
|
+
// Try keychain first
|
|
64
|
+
if (keytar) {
|
|
65
|
+
try {
|
|
66
|
+
await keytar.setPassword(this.SERVICE_NAME, this.ACCOUNT_NAME, apiKey);
|
|
67
|
+
if (!silent) {
|
|
68
|
+
console.log('✓ API key stored securely in system keychain');
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
//console.warn('Failed to store in keychain, using file fallback:', error);
|
|
74
|
+
}
|
|
31
75
|
}
|
|
76
|
+
// Fallback to file storage
|
|
32
77
|
try {
|
|
33
|
-
await
|
|
78
|
+
const config = await this.readConfig();
|
|
79
|
+
config.apiKey = apiKey;
|
|
80
|
+
await this.writeConfig(config);
|
|
34
81
|
if (!silent) {
|
|
35
|
-
console.log('✓ API key stored
|
|
82
|
+
console.log('✓ API key stored in config file (consider installing keytar for secure storage)');
|
|
36
83
|
}
|
|
37
84
|
}
|
|
38
85
|
catch (error) {
|
|
39
|
-
throw new Error(`Failed to store API key
|
|
86
|
+
throw new Error(`Failed to store API key: ${error}`);
|
|
40
87
|
}
|
|
41
88
|
}
|
|
42
89
|
/**
|
|
43
|
-
* Get stored API key
|
|
90
|
+
* Get stored API key (keychain preferred, file fallback)
|
|
44
91
|
*/
|
|
45
92
|
async getApiKey() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
93
|
+
// Try keychain first
|
|
94
|
+
if (keytar) {
|
|
95
|
+
try {
|
|
96
|
+
const keychainKey = await keytar.getPassword(this.SERVICE_NAME, this.ACCOUNT_NAME);
|
|
97
|
+
if (keychainKey) {
|
|
98
|
+
return keychainKey;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.warn('Keychain access failed, trying file fallback:', error);
|
|
103
|
+
}
|
|
49
104
|
}
|
|
105
|
+
// Fallback to file storage
|
|
50
106
|
try {
|
|
51
|
-
const
|
|
52
|
-
return
|
|
107
|
+
const config = await this.readConfig();
|
|
108
|
+
return config.apiKey || null;
|
|
53
109
|
}
|
|
54
110
|
catch (error) {
|
|
55
|
-
console.warn('
|
|
111
|
+
console.warn('Failed to read config file:', error);
|
|
56
112
|
return null;
|
|
57
113
|
}
|
|
58
114
|
}
|
|
59
115
|
/**
|
|
60
|
-
* Get stored model
|
|
116
|
+
* Get stored model
|
|
61
117
|
*/
|
|
62
|
-
getModel() {
|
|
63
|
-
|
|
118
|
+
async getModel() {
|
|
119
|
+
try {
|
|
120
|
+
const config = await this.readConfig();
|
|
121
|
+
return config.model || 'anthropic/claude-sonnet-4-20250514';
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
return 'anthropic/claude-sonnet-4-20250514';
|
|
125
|
+
}
|
|
64
126
|
}
|
|
65
127
|
/**
|
|
66
|
-
* Store model
|
|
128
|
+
* Store model preference
|
|
67
129
|
*/
|
|
68
|
-
setModel(model) {
|
|
69
|
-
|
|
70
|
-
|
|
130
|
+
async setModel(model) {
|
|
131
|
+
try {
|
|
132
|
+
const config = await this.readConfig();
|
|
133
|
+
config.model = model;
|
|
134
|
+
await this.writeConfig(config);
|
|
135
|
+
console.log(`✓ Model preference set to: ${model}`);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.warn('Failed to save model preference:', error);
|
|
139
|
+
}
|
|
71
140
|
}
|
|
72
141
|
/**
|
|
73
|
-
* Get full configuration
|
|
142
|
+
* Get full configuration
|
|
74
143
|
*/
|
|
75
|
-
getFullConfig() {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
144
|
+
async getFullConfig() {
|
|
145
|
+
try {
|
|
146
|
+
const config = await this.readConfig();
|
|
147
|
+
return {
|
|
148
|
+
model: config.model || 'anthropic/claude-sonnet-4-20250514',
|
|
149
|
+
baseUrl: config.baseUrl || 'https://api.getunbound.ai/v1',
|
|
150
|
+
logLevel: config.logLevel || 'info',
|
|
151
|
+
lastUsed: config.lastUsed
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return {
|
|
156
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
157
|
+
baseUrl: `${global_1.UNBOUND_BASE_URL}/v1`,
|
|
158
|
+
logLevel: 'info'
|
|
159
|
+
};
|
|
160
|
+
}
|
|
81
161
|
}
|
|
82
162
|
/**
|
|
83
|
-
* Update configuration
|
|
163
|
+
* Update configuration
|
|
84
164
|
*/
|
|
85
|
-
updateConfig(updates) {
|
|
86
|
-
|
|
87
|
-
|
|
165
|
+
async updateConfig(updates) {
|
|
166
|
+
try {
|
|
167
|
+
const config = await this.readConfig();
|
|
168
|
+
Object.assign(config, updates);
|
|
169
|
+
await this.writeConfig(config);
|
|
170
|
+
console.log('Configuration updated successfully');
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.warn('Failed to update configuration:', error);
|
|
174
|
+
}
|
|
88
175
|
}
|
|
89
176
|
/**
|
|
90
|
-
* Clear all stored data including keychain
|
|
177
|
+
* Clear all stored data including keychain and config file
|
|
91
178
|
*/
|
|
92
179
|
async clearConfig() {
|
|
93
180
|
try {
|
|
@@ -101,14 +188,45 @@ class UnboundStorage {
|
|
|
101
188
|
console.warn('Failed to clear API key from keychain:', error);
|
|
102
189
|
}
|
|
103
190
|
}
|
|
191
|
+
// Clear config file
|
|
192
|
+
try {
|
|
193
|
+
await fs_1.promises.unlink(this.CONFIG_FILE);
|
|
194
|
+
console.log('✓ Config file cleared');
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
// File might not exist, which is fine
|
|
198
|
+
}
|
|
104
199
|
console.log('✓ Configuration cleared successfully');
|
|
105
200
|
}
|
|
106
201
|
catch (error) {
|
|
107
202
|
console.error('Failed to clear config:', error);
|
|
108
203
|
}
|
|
109
204
|
}
|
|
205
|
+
async clearConfigDueToInvalidKey() {
|
|
206
|
+
try {
|
|
207
|
+
// Clear from keychain if available
|
|
208
|
+
if (keytar) {
|
|
209
|
+
try {
|
|
210
|
+
await keytar.deletePassword(this.SERVICE_NAME, this.ACCOUNT_NAME);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
// Ignore keychain errors
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Clear config file completely
|
|
217
|
+
try {
|
|
218
|
+
await fs_1.promises.unlink(this.CONFIG_FILE);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
// File might not exist, which is fine
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
console.error('Failed to clear config:', error);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
110
228
|
/**
|
|
111
|
-
* Check if API key is stored
|
|
229
|
+
* Check if API key is stored
|
|
112
230
|
*/
|
|
113
231
|
async hasApiKey() {
|
|
114
232
|
const apiKey = await this.getApiKey();
|
|
@@ -118,10 +236,97 @@ class UnboundStorage {
|
|
|
118
236
|
* Check if API key is stored (sync version for backward compatibility)
|
|
119
237
|
*/
|
|
120
238
|
hasApiKeySync() {
|
|
121
|
-
// This method is deprecated since we only use
|
|
239
|
+
// This method is deprecated since we only use async now
|
|
122
240
|
// Return false to force async check
|
|
123
241
|
return false;
|
|
124
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Get vertex configuration
|
|
245
|
+
*/
|
|
246
|
+
async getVertexConfig() {
|
|
247
|
+
try {
|
|
248
|
+
const config = await this.readConfig();
|
|
249
|
+
return {
|
|
250
|
+
useVertex: config.useVertex || false,
|
|
251
|
+
model: config.vertexPrimaryModel || 'anthropic.claude-sonnet-4@20250514',
|
|
252
|
+
smallModel: config.vertexSmallModel || 'anthropic.claude-3-5-haiku@20241022'
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
return {
|
|
257
|
+
useVertex: false,
|
|
258
|
+
model: 'anthropic.claude-sonnet-4@20250514',
|
|
259
|
+
smallModel: 'anthropic.claude-3-5-haiku@20241022'
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Store vertex configuration
|
|
265
|
+
*/
|
|
266
|
+
async setVertexConfig(vertexConfig) {
|
|
267
|
+
try {
|
|
268
|
+
const config = await this.readConfig();
|
|
269
|
+
config.useVertex = vertexConfig.useVertex;
|
|
270
|
+
config.vertexPrimaryModel = vertexConfig.model;
|
|
271
|
+
config.vertexSmallModel = vertexConfig.smallModel;
|
|
272
|
+
config.isConfigured = true; // Mark as configured when preferences are set
|
|
273
|
+
await this.writeConfig(config);
|
|
274
|
+
console.log('✓ Vertex AI configuration saved');
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
console.warn('Failed to save vertex configuration:', error);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Check if user has completed initial configuration
|
|
282
|
+
*/
|
|
283
|
+
async isConfigured() {
|
|
284
|
+
try {
|
|
285
|
+
const config = await this.readConfig();
|
|
286
|
+
return config.isConfigured === true;
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Mark configuration as complete
|
|
294
|
+
*/
|
|
295
|
+
async markAsConfigured() {
|
|
296
|
+
try {
|
|
297
|
+
const config = await this.readConfig();
|
|
298
|
+
config.isConfigured = true;
|
|
299
|
+
await this.writeConfig(config);
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
console.warn('Failed to mark configuration as complete:', error);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get startup display configuration
|
|
307
|
+
*/
|
|
308
|
+
async getStartupConfig() {
|
|
309
|
+
try {
|
|
310
|
+
const config = await this.readConfig();
|
|
311
|
+
const vertexConfig = await this.getVertexConfig();
|
|
312
|
+
return {
|
|
313
|
+
hasApiKey: true, // We know we have one since we just authenticated
|
|
314
|
+
model: config.model || 'anthropic/claude-sonnet-4-20250514',
|
|
315
|
+
useVertex: vertexConfig.useVertex,
|
|
316
|
+
vertexPrimaryModel: vertexConfig.model,
|
|
317
|
+
vertexSmallModel: vertexConfig.smallModel,
|
|
318
|
+
baseUrl: config.baseUrl || `${global_1.UNBOUND_BASE_URL}/v1`
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
return {
|
|
323
|
+
hasApiKey: false,
|
|
324
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
325
|
+
useVertex: false,
|
|
326
|
+
baseUrl: `${global_1.UNBOUND_BASE_URL}/v1`
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
}
|
|
125
330
|
}
|
|
126
331
|
exports.UnboundStorage = UnboundStorage;
|
|
127
332
|
//# sourceMappingURL=storage.js.map
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unbound-claude-code",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "Claude Code with Unbound integration - Drop-in replacement for Claude Code with multi-provider routing and cost optimization",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"test:watch": "jest --watch",
|
|
16
16
|
"test:coverage": "jest --coverage",
|
|
17
17
|
"prepare": "npm run build",
|
|
18
|
-
"prepublishOnly": "npm run clean && npm run build && npm run typecheck"
|
|
18
|
+
"prepublishOnly": "npm run clean && npm run build && npm run typecheck",
|
|
19
|
+
"postinstall": "node -e \"try { require('keytar'); console.log('✓ keytar available for secure storage'); } catch(e) { console.warn('⚠ keytar not available, using file-based storage fallback. For secure storage, install build tools and run: npm install keytar'); }\""
|
|
19
20
|
},
|
|
20
21
|
"files": [
|
|
21
22
|
"dist/**/*",
|
|
@@ -57,8 +58,9 @@
|
|
|
57
58
|
"typescript": "^5.0.0"
|
|
58
59
|
},
|
|
59
60
|
"dependencies": {
|
|
60
|
-
"@anthropic-ai/claude-code": ">=0.1.0"
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
"@anthropic-ai/claude-code": ">=0.1.0"
|
|
62
|
+
},
|
|
63
|
+
"optionalDependencies": {
|
|
64
|
+
"keytar": "^7.9.0"
|
|
63
65
|
}
|
|
64
66
|
}
|