unbound-claude-code 0.2.3 → 0.2.5
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.d.ts.map +1 -1
- package/dist/auth.js +2 -1
- package/dist/auth.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +149 -19
- package/dist/cli.js.map +1 -1
- package/dist/global.d.ts +2 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +10 -0
- package/dist/global.js.map +1 -0
- package/dist/interceptor-loader.js +3 -24
- package/dist/interceptor.d.ts +4 -1
- package/dist/interceptor.d.ts.map +1 -1
- package/dist/interceptor.js +114 -3
- package/dist/interceptor.js.map +1 -1
- package/dist/storage.d.ts +20 -13
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +133 -37
- package/dist/storage.js.map +1 -1
- package/package.json +7 -5
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIhD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,GAAE,MAAiC;IAKtD;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCpD;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAgCtE;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAqCxC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAalC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAoBtC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CActC"}
|
package/dist/auth.js
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.UnboundAuth = void 0;
|
|
7
7
|
const storage_1 = require("./storage");
|
|
8
|
+
const global_1 = require("./global");
|
|
8
9
|
class UnboundAuth {
|
|
9
|
-
constructor(baseUrl =
|
|
10
|
+
constructor(baseUrl = `${global_1.UNBOUND_BASE_URL}/v1`) {
|
|
10
11
|
this.baseUrl = baseUrl;
|
|
11
12
|
this.storage = new storage_1.UnboundStorage();
|
|
12
13
|
}
|
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;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
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;
|
|
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;IAoDjB,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,WAAW;YAKL,UAAU;YAgBV,WAAW;YAIX,QAAQ;YAyBR,eAAe;YAWf,yBAAyB;IA0CvC;;;;OAIG;YACW,iBAAiB;YAkDjB,yBAAyB;YA2DzB,gBAAgB;YA4DhB,gBAAgB;IA4DjB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAkDhD;AAQD,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -7,14 +7,49 @@
|
|
|
7
7
|
* It intercepts API calls to Anthropic and sends them to Unbound AI.
|
|
8
8
|
* It also provides a CLI interface for managing the Unbound AI API key and model.
|
|
9
9
|
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
10
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
44
|
exports.UnboundCli = void 0;
|
|
12
45
|
const child_process_1 = require("child_process");
|
|
13
46
|
const fs_1 = require("fs");
|
|
14
47
|
const path_1 = require("path");
|
|
15
48
|
const os_1 = require("os");
|
|
49
|
+
const readline = __importStar(require("readline"));
|
|
16
50
|
const auth_1 = require("./auth");
|
|
17
51
|
const storage_1 = require("./storage");
|
|
52
|
+
const global_1 = require("./global");
|
|
18
53
|
class UnboundCli {
|
|
19
54
|
constructor() {
|
|
20
55
|
this.auth = new auth_1.UnboundAuth();
|
|
@@ -109,20 +144,20 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
109
144
|
const packageJson = require('../package.json');
|
|
110
145
|
console.log(`unbound-claude-code v${packageJson.version}`);
|
|
111
146
|
}
|
|
112
|
-
showConfig() {
|
|
113
|
-
const config = this.storage.getFullConfig();
|
|
147
|
+
async showConfig() {
|
|
148
|
+
const config = await this.storage.getFullConfig();
|
|
114
149
|
console.log('Current Unbound Code Configuration:');
|
|
115
150
|
console.log('');
|
|
116
151
|
console.log(`API Key: Stored securely in system keychain`);
|
|
117
152
|
console.log(`Model: ${config.model || 'Default (anthropic/claude-sonnet-4-20250514)'}`);
|
|
118
|
-
console.log(`Base URL: ${config.baseUrl ||
|
|
153
|
+
console.log(`Base URL: ${config.baseUrl || `${global_1.UNBOUND_BASE_URL}/v1`}`);
|
|
119
154
|
console.log(`Log Level: ${config.logLevel || 'info'}`);
|
|
120
155
|
if (config.lastUsed) {
|
|
121
156
|
console.log(`Last Used: ${new Date(config.lastUsed).toLocaleString()}`);
|
|
122
157
|
}
|
|
123
158
|
console.log('');
|
|
124
159
|
console.log(`Config stored at: ~/.unbound-code/config.json (non-sensitive data only)`);
|
|
125
|
-
console.log(`API key stored securely in system keychain`);
|
|
160
|
+
console.log(`API key stored securely in system keychain when available`);
|
|
126
161
|
}
|
|
127
162
|
async clearConfig() {
|
|
128
163
|
await this.storage.clearConfig();
|
|
@@ -146,13 +181,14 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
146
181
|
return;
|
|
147
182
|
}
|
|
148
183
|
}
|
|
149
|
-
this.storage.setModel(model);
|
|
184
|
+
await this.storage.setModel(model);
|
|
150
185
|
console.log(`✓ Default model set to: ${model}`);
|
|
151
186
|
}
|
|
152
187
|
async checkClaudeCode() {
|
|
153
|
-
// Check if claude command is available
|
|
188
|
+
// Check if claude command is available (cross-platform)
|
|
154
189
|
try {
|
|
155
|
-
|
|
190
|
+
const command = process.platform === 'win32' ? 'where claude' : 'which claude';
|
|
191
|
+
(0, child_process_1.execSync)(command, { stdio: 'ignore' });
|
|
156
192
|
}
|
|
157
193
|
catch (error) {
|
|
158
194
|
// Try to auto-install Claude CLI
|
|
@@ -162,19 +198,43 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
162
198
|
async checkAndInstallClaudeCode() {
|
|
163
199
|
console.log('Claude CLI not found. Installing automatically...');
|
|
164
200
|
try {
|
|
165
|
-
// Attempt to install Claude CLI using npm
|
|
166
|
-
|
|
201
|
+
// Attempt to install Claude CLI using npm with more verbose output for debugging
|
|
202
|
+
const installCommand = 'npm install -g @anthropic-ai/claude-code';
|
|
203
|
+
console.log(`Running: ${installCommand}`);
|
|
204
|
+
try {
|
|
205
|
+
(0, child_process_1.execSync)(installCommand, {
|
|
206
|
+
stdio: 'pipe',
|
|
207
|
+
timeout: 60000 // 60 second timeout
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch (installError) {
|
|
211
|
+
// More detailed error reporting
|
|
212
|
+
console.error('Installation error details:', installError.message);
|
|
213
|
+
if (installError.stderr) {
|
|
214
|
+
console.error('Installation stderr:', installError.stderr.toString());
|
|
215
|
+
}
|
|
216
|
+
throw new Error(`Failed to install Claude CLI automatically. Error: ${installError.message}. Please install manually with: npm install -g @anthropic-ai/claude-code`);
|
|
217
|
+
}
|
|
167
218
|
}
|
|
168
|
-
catch (
|
|
169
|
-
throw new Error(
|
|
219
|
+
catch (error) {
|
|
220
|
+
throw new Error(`Failed to install Claude CLI automatically. ${error.message}`);
|
|
170
221
|
}
|
|
171
|
-
// Check if installation was successful
|
|
222
|
+
// Check if installation was successful (cross-platform)
|
|
172
223
|
try {
|
|
173
|
-
|
|
224
|
+
const command = process.platform === 'win32' ? 'where claude' : 'which claude';
|
|
225
|
+
(0, child_process_1.execSync)(command, { stdio: 'ignore' });
|
|
174
226
|
console.log('✓ Claude CLI installed successfully');
|
|
175
227
|
}
|
|
176
228
|
catch (checkError) {
|
|
177
|
-
|
|
229
|
+
// Try alternative check methods
|
|
230
|
+
try {
|
|
231
|
+
// Try running claude directly to see if it's available
|
|
232
|
+
(0, child_process_1.execSync)('claude --version', { stdio: 'ignore', timeout: 5000 });
|
|
233
|
+
console.log('✓ Claude CLI installed successfully');
|
|
234
|
+
}
|
|
235
|
+
catch (versionError) {
|
|
236
|
+
throw new Error('Claude CLI installation completed but command still not found in PATH. Please restart your terminal or check your PATH configuration.');
|
|
237
|
+
}
|
|
178
238
|
}
|
|
179
239
|
}
|
|
180
240
|
/**
|
|
@@ -226,6 +286,54 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
226
286
|
throw new Error(`Failed to setup Claude configuration: ${error.message}`);
|
|
227
287
|
}
|
|
228
288
|
}
|
|
289
|
+
async promptVertexConfiguration() {
|
|
290
|
+
const rl = readline.createInterface({
|
|
291
|
+
input: process.stdin,
|
|
292
|
+
output: process.stdout
|
|
293
|
+
});
|
|
294
|
+
const question = (query) => {
|
|
295
|
+
return new Promise((resolve) => {
|
|
296
|
+
rl.question(query, resolve);
|
|
297
|
+
});
|
|
298
|
+
};
|
|
299
|
+
try {
|
|
300
|
+
console.log('\n🔄 Vertex AI Configuration');
|
|
301
|
+
console.log('─'.repeat(40));
|
|
302
|
+
const useVertexAnswer = await question('Do you want to use Vertex AI models? (y/n): ');
|
|
303
|
+
const useVertex = useVertexAnswer.toLowerCase().trim() === 'y' || useVertexAnswer.toLowerCase().trim() === 'yes';
|
|
304
|
+
if (!useVertex) {
|
|
305
|
+
return { useVertex: false };
|
|
306
|
+
}
|
|
307
|
+
console.log('\n📝 Vertex AI Model Configuration:');
|
|
308
|
+
console.log('Default models:');
|
|
309
|
+
console.log(' • Primary model: claude-sonnet-4@20250514');
|
|
310
|
+
console.log(' • Small/fast model: claude-3-5-haiku@20241022');
|
|
311
|
+
console.log('');
|
|
312
|
+
const modifyAnswer = await question('Do you want to modify these defaults? (y/n): ');
|
|
313
|
+
const modifyModels = modifyAnswer.toLowerCase().trim() === 'y' || modifyAnswer.toLowerCase().trim() === 'yes';
|
|
314
|
+
let primaryModel = 'anthropic.claude-sonnet-4@20250514';
|
|
315
|
+
let smallModel = 'anthropic.claude-3-5-haiku@20241022';
|
|
316
|
+
if (modifyModels) {
|
|
317
|
+
console.log('\n📝 Enter custom model IDs:');
|
|
318
|
+
const customPrimary = await question(`Primary model (default: ${primaryModel}): `);
|
|
319
|
+
if (customPrimary.trim()) {
|
|
320
|
+
primaryModel = customPrimary.trim();
|
|
321
|
+
}
|
|
322
|
+
const customSmall = await question(`Small/fast model (default: ${smallModel}): `);
|
|
323
|
+
if (customSmall.trim()) {
|
|
324
|
+
smallModel = customSmall.trim();
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return {
|
|
328
|
+
useVertex: true,
|
|
329
|
+
model: primaryModel,
|
|
330
|
+
smallModel: smallModel
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
finally {
|
|
334
|
+
rl.close();
|
|
335
|
+
}
|
|
336
|
+
}
|
|
229
337
|
async authenticateUser(options) {
|
|
230
338
|
if (options.skipAuth) {
|
|
231
339
|
const apiKey = process.env.UNBOUND_API_KEY;
|
|
@@ -280,15 +388,34 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
280
388
|
await this.storage.setApiKey(apiKey, true);
|
|
281
389
|
return apiKey;
|
|
282
390
|
}
|
|
283
|
-
async launchClaudeCode(apiKey, claudeArgs, debug) {
|
|
391
|
+
async launchClaudeCode(apiKey, claudeArgs, debug, vertexConfig) {
|
|
284
392
|
// Set environment variables to redirect Claude to Unbound gateway
|
|
285
393
|
// Don't set ANTHROPIC_API_KEY in env to avoid the confirmation prompt, api key is set in anthropic_key.sh
|
|
286
394
|
const env = {
|
|
287
395
|
...process.env,
|
|
288
|
-
ANTHROPIC_BASE_URL: "https://api.getunbound.ai",
|
|
289
396
|
UNBOUND_LOG_LEVEL: debug ? 'debug' : 'info',
|
|
290
397
|
};
|
|
291
|
-
|
|
398
|
+
if (vertexConfig?.useVertex) {
|
|
399
|
+
// Set Vertex AI environment variables
|
|
400
|
+
env.CLAUDE_CODE_USE_VERTEX = '1';
|
|
401
|
+
env.CLOUD_ML_REGION = 'dummy-region';
|
|
402
|
+
env.ANTHROPIC_VERTEX_PROJECT_ID = 'dummy-project-id';
|
|
403
|
+
env.ANTHROPIC_MODEL = vertexConfig.model;
|
|
404
|
+
env.ANTHROPIC_SMALL_FAST_MODEL = vertexConfig.smallModel;
|
|
405
|
+
console.log('Starting Claude with Vertex AI configuration...');
|
|
406
|
+
console.log(` ✓ Primary model: ${vertexConfig.model}`);
|
|
407
|
+
console.log(` ✓ Small/fast model: ${vertexConfig.smallModel}`);
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
// Standard Unbound proxy configuration
|
|
411
|
+
env.ANTHROPIC_BASE_URL = global_1.UNBOUND_BASE_URL;
|
|
412
|
+
console.log('Starting Claude with Unbound AI gateway...');
|
|
413
|
+
}
|
|
414
|
+
console.log('');
|
|
415
|
+
// Set up NODE_OPTIONS to inject our interceptor into Claude Code process
|
|
416
|
+
const interceptorPath = (0, path_1.join)(__dirname, 'interceptor-loader.js');
|
|
417
|
+
env.NODE_OPTIONS = `--require "${interceptorPath}"`;
|
|
418
|
+
env.UNBOUND_API_KEY = apiKey; // Pass API key to interceptor
|
|
292
419
|
console.log('');
|
|
293
420
|
// Launch claude directly - it will use the API key from the helper script we set up
|
|
294
421
|
const claudeProcess = (0, child_process_1.spawn)('claude', claudeArgs, {
|
|
@@ -324,7 +451,7 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
324
451
|
return;
|
|
325
452
|
}
|
|
326
453
|
if (options.showConfig) {
|
|
327
|
-
this.showConfig();
|
|
454
|
+
await this.showConfig();
|
|
328
455
|
return;
|
|
329
456
|
}
|
|
330
457
|
if (options.clearConfig) {
|
|
@@ -339,10 +466,13 @@ and ANTHROPIC_API_KEY set to your Unbound API key.
|
|
|
339
466
|
await this.checkClaudeCode();
|
|
340
467
|
// Authenticate user
|
|
341
468
|
const apiKey = await this.authenticateUser(options);
|
|
469
|
+
// Prompt for Vertex AI configuration
|
|
470
|
+
// const vertexConfig = await this.promptVertexConfiguration();
|
|
471
|
+
const vertexConfig = { useVertex: false }; // Skip vertex configuration for now
|
|
342
472
|
// Setup Claude configuration files
|
|
343
473
|
await this.setupClaudeConfig(apiKey);
|
|
344
474
|
// Launch Claude Code with interceptor
|
|
345
|
-
await this.launchClaudeCode(apiKey, claudeArgs, options.debug || false);
|
|
475
|
+
await this.launchClaudeCode(apiKey, claudeArgs, options.debug || false, vertexConfig);
|
|
346
476
|
}
|
|
347
477
|
catch (error) {
|
|
348
478
|
console.error('Error:', error.message);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/global.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,8BAA8B,CAAC"}
|
package/dist/global.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UNBOUND_BASE_URL = void 0;
|
|
4
|
+
// Production:
|
|
5
|
+
exports.UNBOUND_BASE_URL = "https://api.getunbound.ai";
|
|
6
|
+
// Development:
|
|
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";
|
|
10
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +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,0DAA0D;AAE1D,SAAS;AACT,oFAAoF"}
|
|
@@ -19,34 +19,13 @@ if (__filename.includes('node_modules')) {
|
|
|
19
19
|
|
|
20
20
|
try {
|
|
21
21
|
// Load the interceptor
|
|
22
|
-
const { initializeUnboundInterceptor
|
|
22
|
+
const { initializeUnboundInterceptor } = require(interceptorPath);
|
|
23
23
|
|
|
24
|
-
//
|
|
25
|
-
const apiKey = process.env.UNBOUND_API_KEY;
|
|
26
|
-
|
|
27
|
-
if (!apiKey) {
|
|
28
|
-
console.error('Error: UNBOUND_API_KEY not passed to interceptor.');
|
|
29
|
-
console.error('This should not happen if using the CLI properly.');
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Don't set ANTHROPIC_API_KEY - let Claude Code handle its own authentication
|
|
34
|
-
// The interceptor will extract the Claude API key from request headers
|
|
35
|
-
|
|
36
|
-
// Initialize the interceptor
|
|
24
|
+
// Initialize the interceptor for debugging
|
|
37
25
|
const interceptor = initializeUnboundInterceptor({
|
|
38
26
|
logLevel: process.env.UNBOUND_LOG_LEVEL || 'info'
|
|
39
27
|
});
|
|
40
|
-
|
|
41
|
-
// Set the API key
|
|
42
|
-
setUnboundApiKey(apiKey);
|
|
43
|
-
|
|
44
|
-
// Only log success if not in production mode
|
|
45
|
-
if (process.env.UNBOUND_LOG_LEVEL === 'debug') {
|
|
46
|
-
console.log('✓ Unbound Code interceptor loaded successfully');
|
|
47
|
-
}
|
|
48
|
-
|
|
49
28
|
} catch (error) {
|
|
50
29
|
console.error('Failed to load Unbound interceptor:', error.message);
|
|
51
|
-
|
|
30
|
+
// Don't exit - let Claude Code continue to work even if interceptor fails
|
|
52
31
|
}
|
package/dist/interceptor.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Unbound Code Interceptor
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Intercepts and logs requests, particularly Vertex AI requests for debugging.
|
|
5
5
|
* Uses environment variables to redirect Claude to Unbound gateway.
|
|
6
6
|
*/
|
|
7
7
|
import { UnboundConfig } from "./types";
|
|
@@ -9,6 +9,9 @@ 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
|
+
private logRequest;
|
|
12
15
|
instrumentFetch(): void;
|
|
13
16
|
instrumentAll(): void;
|
|
14
17
|
}
|
|
@@ -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;
|
|
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,iBAAiB;IAIzB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,UAAU;IAmDX,eAAe,IAAI,IAAI;IAsEvB,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
|
-
*
|
|
5
|
+
* Intercepts and logs requests, particularly Vertex AI requests for debugging.
|
|
6
6
|
* Uses environment variables to redirect Claude to Unbound gateway.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -10,10 +10,11 @@ exports.UnboundInterceptor = void 0;
|
|
|
10
10
|
exports.initializeUnboundInterceptor = initializeUnboundInterceptor;
|
|
11
11
|
exports.getUnboundInterceptor = getUnboundInterceptor;
|
|
12
12
|
exports.setUnboundApiKey = setUnboundApiKey;
|
|
13
|
+
const global_1 = require("./global");
|
|
13
14
|
class UnboundInterceptor {
|
|
14
15
|
constructor(config = {}) {
|
|
15
16
|
this.config = {
|
|
16
|
-
baseUrl:
|
|
17
|
+
baseUrl: `${global_1.UNBOUND_BASE_URL}/v1`,
|
|
17
18
|
logLevel: "info",
|
|
18
19
|
...config,
|
|
19
20
|
};
|
|
@@ -22,6 +23,74 @@ class UnboundInterceptor {
|
|
|
22
23
|
// No-op: API key is now handled via environment variables
|
|
23
24
|
console.log("API key set via environment variables");
|
|
24
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
|
+
logRequest(url, method, headers, body) {
|
|
44
|
+
console.log('\n🔍 REQUEST INTERCEPTED');
|
|
45
|
+
console.log('═'.repeat(50));
|
|
46
|
+
console.log(`📍 URL: ${url}`);
|
|
47
|
+
console.log(`🔧 Method: ${method}`);
|
|
48
|
+
console.log('\n📋 Headers:');
|
|
49
|
+
if (headers) {
|
|
50
|
+
if (headers instanceof Headers) {
|
|
51
|
+
headers.forEach((value, key) => {
|
|
52
|
+
// Mask sensitive headers
|
|
53
|
+
const maskedValue = key.toLowerCase().includes('authorization') || key.toLowerCase().includes('key')
|
|
54
|
+
? `${value.substring(0, 10)}...`
|
|
55
|
+
: value;
|
|
56
|
+
console.log(` ${key}: ${maskedValue}`);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
61
|
+
const maskedValue = key.toLowerCase().includes('authorization') || key.toLowerCase().includes('key')
|
|
62
|
+
? `${String(value).substring(0, 10)}...`
|
|
63
|
+
: value;
|
|
64
|
+
console.log(` ${key}: ${maskedValue}`);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
console.log('\n📦 Body:');
|
|
69
|
+
if (body) {
|
|
70
|
+
try {
|
|
71
|
+
const bodyStr = typeof body === 'string' ? body : body.toString();
|
|
72
|
+
const parsedBody = JSON.parse(bodyStr);
|
|
73
|
+
console.log('📦 Request Payload:');
|
|
74
|
+
console.log(JSON.stringify(parsedBody, null, 2));
|
|
75
|
+
// Specifically log messages if they exist
|
|
76
|
+
if (parsedBody.messages) {
|
|
77
|
+
console.log('\n💬 Messages being sent:');
|
|
78
|
+
parsedBody.messages.forEach((msg, index) => {
|
|
79
|
+
console.log(` Message ${index + 1} (${msg.role}):`);
|
|
80
|
+
console.log(` ${msg.content}`);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.log('📦 Request Body (raw):');
|
|
86
|
+
console.log(body);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
console.log('[No body]');
|
|
91
|
+
}
|
|
92
|
+
console.log('═'.repeat(50));
|
|
93
|
+
}
|
|
25
94
|
instrumentFetch() {
|
|
26
95
|
if (!global.fetch) {
|
|
27
96
|
return;
|
|
@@ -33,7 +102,49 @@ class UnboundInterceptor {
|
|
|
33
102
|
const originalFetch = global.fetch;
|
|
34
103
|
const interceptor = this;
|
|
35
104
|
global.fetch = async function (input, init = {}) {
|
|
36
|
-
|
|
105
|
+
const url = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
|
|
106
|
+
const method = init.method || 'GET';
|
|
107
|
+
// Log all outgoing requests for debugging
|
|
108
|
+
if (interceptor.isOutgoingRequest(url)) {
|
|
109
|
+
// Log the request for debugging
|
|
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
|
|
37
148
|
return originalFetch(input, init);
|
|
38
149
|
};
|
|
39
150
|
// 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,48 +1,55 @@
|
|
|
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;
|
|
11
13
|
}
|
|
12
14
|
export declare class UnboundStorage {
|
|
13
15
|
private readonly SERVICE_NAME;
|
|
14
16
|
private readonly ACCOUNT_NAME;
|
|
17
|
+
private readonly CONFIG_DIR;
|
|
18
|
+
private readonly CONFIG_FILE;
|
|
15
19
|
constructor();
|
|
20
|
+
private ensureConfigDir;
|
|
21
|
+
private readConfig;
|
|
22
|
+
private writeConfig;
|
|
16
23
|
/**
|
|
17
|
-
* Store API key
|
|
24
|
+
* Store API key securely (keychain preferred, file fallback)
|
|
18
25
|
*/
|
|
19
26
|
setApiKey(apiKey: string, silent?: boolean): Promise<void>;
|
|
20
27
|
/**
|
|
21
|
-
* Get stored API key
|
|
28
|
+
* Get stored API key (keychain preferred, file fallback)
|
|
22
29
|
*/
|
|
23
30
|
getApiKey(): Promise<string | null>;
|
|
24
31
|
/**
|
|
25
|
-
* Get stored model
|
|
32
|
+
* Get stored model
|
|
26
33
|
*/
|
|
27
|
-
getModel(): string
|
|
34
|
+
getModel(): Promise<string>;
|
|
28
35
|
/**
|
|
29
|
-
* Store model
|
|
36
|
+
* Store model preference
|
|
30
37
|
*/
|
|
31
|
-
setModel(model: string): void
|
|
38
|
+
setModel(model: string): Promise<void>;
|
|
32
39
|
/**
|
|
33
|
-
* Get full configuration
|
|
40
|
+
* Get full configuration
|
|
34
41
|
*/
|
|
35
|
-
getFullConfig(): UnboundConfig
|
|
42
|
+
getFullConfig(): Promise<UnboundConfig>;
|
|
36
43
|
/**
|
|
37
|
-
* Update configuration
|
|
44
|
+
* Update configuration
|
|
38
45
|
*/
|
|
39
|
-
updateConfig(updates: Partial<UnboundConfig>): void
|
|
46
|
+
updateConfig(updates: Partial<UnboundConfig>): Promise<void>;
|
|
40
47
|
/**
|
|
41
|
-
* Clear all stored data including keychain
|
|
48
|
+
* Clear all stored data including keychain and config file
|
|
42
49
|
*/
|
|
43
50
|
clearConfig(): Promise<void>;
|
|
44
51
|
/**
|
|
45
|
-
* Check if API key is stored
|
|
52
|
+
* Check if API key is stored
|
|
46
53
|
*/
|
|
47
54
|
hasApiKey(): Promise<boolean>;
|
|
48
55
|
/**
|
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;CACjB;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;IA0BlC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;OAEG;IACH,aAAa,IAAI,OAAO;CAKzB"}
|
package/dist/storage.js
CHANGED
|
@@ -2,10 +2,15 @@
|
|
|
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");
|
|
13
|
+
const global_1 = require("./global");
|
|
9
14
|
// Import keytar for keychain integration
|
|
10
15
|
let keytar = null;
|
|
11
16
|
try {
|
|
@@ -13,80 +18,163 @@ try {
|
|
|
13
18
|
}
|
|
14
19
|
catch (error) {
|
|
15
20
|
// keytar not available
|
|
16
|
-
console.warn('keytar not available, API key storage will not work');
|
|
17
21
|
}
|
|
18
22
|
class UnboundStorage {
|
|
19
23
|
constructor() {
|
|
20
24
|
this.SERVICE_NAME = 'unbound-claude-code';
|
|
21
25
|
this.ACCOUNT_NAME = 'api-key';
|
|
22
|
-
|
|
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
|
+
}
|
|
23
58
|
}
|
|
24
59
|
/**
|
|
25
|
-
* Store API key
|
|
60
|
+
* Store API key securely (keychain preferred, file fallback)
|
|
26
61
|
*/
|
|
27
62
|
async setApiKey(apiKey, silent = false) {
|
|
28
|
-
|
|
29
|
-
|
|
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
|
+
}
|
|
30
75
|
}
|
|
76
|
+
// Fallback to file storage
|
|
31
77
|
try {
|
|
32
|
-
await
|
|
78
|
+
const config = await this.readConfig();
|
|
79
|
+
config.apiKey = apiKey;
|
|
80
|
+
await this.writeConfig(config);
|
|
33
81
|
if (!silent) {
|
|
34
|
-
console.log('✓ API key stored
|
|
82
|
+
console.log('✓ API key stored in config file (consider installing keytar for secure storage)');
|
|
35
83
|
}
|
|
36
84
|
}
|
|
37
85
|
catch (error) {
|
|
38
|
-
throw new Error(`Failed to store API key
|
|
86
|
+
throw new Error(`Failed to store API key: ${error}`);
|
|
39
87
|
}
|
|
40
88
|
}
|
|
41
89
|
/**
|
|
42
|
-
* Get stored API key
|
|
90
|
+
* Get stored API key (keychain preferred, file fallback)
|
|
43
91
|
*/
|
|
44
92
|
async getApiKey() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
+
}
|
|
48
104
|
}
|
|
105
|
+
// Fallback to file storage
|
|
49
106
|
try {
|
|
50
|
-
const
|
|
51
|
-
return
|
|
107
|
+
const config = await this.readConfig();
|
|
108
|
+
return config.apiKey || null;
|
|
52
109
|
}
|
|
53
110
|
catch (error) {
|
|
54
|
-
console.warn('
|
|
111
|
+
console.warn('Failed to read config file:', error);
|
|
55
112
|
return null;
|
|
56
113
|
}
|
|
57
114
|
}
|
|
58
115
|
/**
|
|
59
|
-
* Get stored model
|
|
116
|
+
* Get stored model
|
|
60
117
|
*/
|
|
61
|
-
getModel() {
|
|
62
|
-
|
|
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
|
+
}
|
|
63
126
|
}
|
|
64
127
|
/**
|
|
65
|
-
* Store model
|
|
128
|
+
* Store model preference
|
|
66
129
|
*/
|
|
67
|
-
setModel(model) {
|
|
68
|
-
|
|
69
|
-
|
|
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
|
+
}
|
|
70
140
|
}
|
|
71
141
|
/**
|
|
72
|
-
* Get full configuration
|
|
142
|
+
* Get full configuration
|
|
73
143
|
*/
|
|
74
|
-
getFullConfig() {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
+
}
|
|
80
161
|
}
|
|
81
162
|
/**
|
|
82
|
-
* Update configuration
|
|
163
|
+
* Update configuration
|
|
83
164
|
*/
|
|
84
|
-
updateConfig(updates) {
|
|
85
|
-
|
|
86
|
-
|
|
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
|
+
}
|
|
87
175
|
}
|
|
88
176
|
/**
|
|
89
|
-
* Clear all stored data including keychain
|
|
177
|
+
* Clear all stored data including keychain and config file
|
|
90
178
|
*/
|
|
91
179
|
async clearConfig() {
|
|
92
180
|
try {
|
|
@@ -100,6 +188,14 @@ class UnboundStorage {
|
|
|
100
188
|
console.warn('Failed to clear API key from keychain:', error);
|
|
101
189
|
}
|
|
102
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
|
+
}
|
|
103
199
|
console.log('✓ Configuration cleared successfully');
|
|
104
200
|
}
|
|
105
201
|
catch (error) {
|
|
@@ -107,7 +203,7 @@ class UnboundStorage {
|
|
|
107
203
|
}
|
|
108
204
|
}
|
|
109
205
|
/**
|
|
110
|
-
* Check if API key is stored
|
|
206
|
+
* Check if API key is stored
|
|
111
207
|
*/
|
|
112
208
|
async hasApiKey() {
|
|
113
209
|
const apiKey = await this.getApiKey();
|
|
@@ -117,7 +213,7 @@ class UnboundStorage {
|
|
|
117
213
|
* Check if API key is stored (sync version for backward compatibility)
|
|
118
214
|
*/
|
|
119
215
|
hasApiKeySync() {
|
|
120
|
-
// This method is deprecated since we only use
|
|
216
|
+
// This method is deprecated since we only use async now
|
|
121
217
|
// Return false to force async check
|
|
122
218
|
return false;
|
|
123
219
|
}
|
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.5",
|
|
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
|
}
|