claude-gateway 2.0.4 → 2.0.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/README.md +38 -5
- package/dist/cli.js +12 -2
- package/dist/cli.js.map +1 -1
- package/dist/router/server.d.ts +2 -1
- package/dist/router/server.d.ts.map +1 -1
- package/dist/router/server.js +113 -115
- package/dist/router/server.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -41,11 +41,12 @@ That's it! The gateway will:
|
|
|
41
41
|
### CLI Commands
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
npx claude-gateway start
|
|
45
|
-
npx claude-gateway start --port 8080
|
|
46
|
-
npx claude-gateway start --
|
|
47
|
-
npx claude-gateway
|
|
48
|
-
npx claude-gateway
|
|
44
|
+
npx claude-gateway start # Start the gateway server
|
|
45
|
+
npx claude-gateway start --port 8080 # Use custom port
|
|
46
|
+
npx claude-gateway start --apiKey my-secret-key # Enable API key authentication
|
|
47
|
+
npx claude-gateway start --verbose # Full request logging
|
|
48
|
+
npx claude-gateway login # Authenticate with OAuth
|
|
49
|
+
npx claude-gateway status # Check authentication status
|
|
49
50
|
```
|
|
50
51
|
|
|
51
52
|
### Alternative: Clone and Run
|
|
@@ -106,6 +107,7 @@ console.log(response.choices[0].message.content);
|
|
|
106
107
|
```bash
|
|
107
108
|
curl -X POST http://localhost:45554/v1/chat/completions \
|
|
108
109
|
-H "Content-Type: application/json" \
|
|
110
|
+
-H "Authorization: Bearer your-api-key-here" \
|
|
109
111
|
-d '{
|
|
110
112
|
"model": "claude-sonnet-4-5-20250929",
|
|
111
113
|
"messages": [
|
|
@@ -115,6 +117,8 @@ curl -X POST http://localhost:45554/v1/chat/completions \
|
|
|
115
117
|
}'
|
|
116
118
|
```
|
|
117
119
|
|
|
120
|
+
*Note: The Authorization header is only required if you started the server with `--apiKey`*
|
|
121
|
+
|
|
118
122
|
### Streaming
|
|
119
123
|
|
|
120
124
|
```python
|
|
@@ -178,6 +182,34 @@ curl http://localhost:45554/v1/models \
|
|
|
178
182
|
-H "x-api-key: sk-ant-api03-..."
|
|
179
183
|
```
|
|
180
184
|
|
|
185
|
+
## Security
|
|
186
|
+
|
|
187
|
+
### API Key Authentication
|
|
188
|
+
|
|
189
|
+
By default, the gateway runs without authentication. To add basic security, use the `--apiKey` flag:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
npx claude-gateway start --apiKey your-secret-key-here
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
When API key authentication is enabled, all requests to `/v1/chat/completions` must include the key in the `Authorization` header:
|
|
196
|
+
|
|
197
|
+
```python
|
|
198
|
+
from openai import OpenAI
|
|
199
|
+
|
|
200
|
+
client = OpenAI(
|
|
201
|
+
api_key="your-secret-key-here", # Must match the --apiKey value
|
|
202
|
+
base_url="http://localhost:45554/v1",
|
|
203
|
+
)
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Important Notes:**
|
|
207
|
+
- The API key is checked for all chat completion requests
|
|
208
|
+
- Both `Bearer <key>` and raw key formats are supported
|
|
209
|
+
- The `/v1/models` endpoint does not require authentication
|
|
210
|
+
- This provides basic protection but should not be considered enterprise-grade security
|
|
211
|
+
- For production use, consider running behind a reverse proxy with proper TLS/SSL
|
|
212
|
+
|
|
181
213
|
## Configuration
|
|
182
214
|
|
|
183
215
|
### Command Line Options
|
|
@@ -189,6 +221,7 @@ npx claude-gateway start [options]
|
|
|
189
221
|
| Option | Short | Description |
|
|
190
222
|
|--------|-------|-------------|
|
|
191
223
|
| `--port PORT` | `-p` | Set port (default: 45554) |
|
|
224
|
+
| `--apiKey KEY` | | Require API key for authentication (optional) |
|
|
192
225
|
| `--verbose` | `-V` | Full request/response logging |
|
|
193
226
|
| `--minimal` | `-m` | One line per request |
|
|
194
227
|
| `--quiet` | `-q` | No request logging |
|
package/dist/cli.js
CHANGED
|
@@ -51,6 +51,7 @@ function parseArgs() {
|
|
|
51
51
|
const config = {
|
|
52
52
|
command: null,
|
|
53
53
|
port: 45554,
|
|
54
|
+
apiKey: null,
|
|
54
55
|
showHelp: false,
|
|
55
56
|
showVersion: false,
|
|
56
57
|
};
|
|
@@ -80,6 +81,13 @@ function parseArgs() {
|
|
|
80
81
|
i++; // Skip next arg since we consumed it
|
|
81
82
|
}
|
|
82
83
|
}
|
|
84
|
+
else if (arg === '--apiKey') {
|
|
85
|
+
const apiKeyValue = args[i + 1];
|
|
86
|
+
if (apiKeyValue && !apiKeyValue.startsWith('-')) {
|
|
87
|
+
config.apiKey = apiKeyValue;
|
|
88
|
+
i++; // Skip next arg since we consumed it
|
|
89
|
+
}
|
|
90
|
+
}
|
|
83
91
|
else if (!arg.startsWith('-') && config.command === null) {
|
|
84
92
|
// First non-flag argument is the command
|
|
85
93
|
config.command = arg;
|
|
@@ -97,6 +105,7 @@ Usage:
|
|
|
97
105
|
|
|
98
106
|
Options:
|
|
99
107
|
-p, --port PORT Port to listen on (default: 45554)
|
|
108
|
+
--apiKey KEY Require API key for requests (optional)
|
|
100
109
|
-q, --quiet Quiet mode - no request logging
|
|
101
110
|
-m, --minimal Minimal logging - one line per request
|
|
102
111
|
-V, --verbose Maximum logging - full request/response bodies
|
|
@@ -105,8 +114,9 @@ Options:
|
|
|
105
114
|
Examples:
|
|
106
115
|
claude-gateway start
|
|
107
116
|
claude-gateway start --port 8080
|
|
117
|
+
claude-gateway start --apiKey my-secret-key
|
|
108
118
|
claude-gateway start --minimal
|
|
109
|
-
claude-gateway start -p 8080 --verbose
|
|
119
|
+
claude-gateway start -p 8080 --apiKey my-secret-key --verbose
|
|
110
120
|
`);
|
|
111
121
|
}
|
|
112
122
|
else if (command === 'login') {
|
|
@@ -377,7 +387,7 @@ async function main() {
|
|
|
377
387
|
// Execute the appropriate command
|
|
378
388
|
switch (config.command) {
|
|
379
389
|
case 'start':
|
|
380
|
-
await startServer(config.port, question, closeReadline);
|
|
390
|
+
await startServer(config.port, config.apiKey, question, closeReadline);
|
|
381
391
|
break;
|
|
382
392
|
case 'login':
|
|
383
393
|
case 'authenticate':
|
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/router/server.d.ts
CHANGED
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* Start the router server
|
|
9
9
|
* @param port Port to listen on
|
|
10
|
+
* @param apiKey Optional API key to require for all requests
|
|
10
11
|
* @param askQuestion Function to ask user questions (for OAuth flow)
|
|
11
12
|
* @param onReadyCallback Optional callback when server is ready and no longer needs user input
|
|
12
13
|
*/
|
|
13
|
-
export declare function startServer(port: number, askQuestion: (prompt: string) => Promise<string>, onReadyCallback?: () => void): Promise<void>;
|
|
14
|
+
export declare function startServer(port: number, apiKey: string | null, askQuestion: (prompt: string) => Promise<string>, onReadyCallback?: () => void): Promise<void>;
|
|
14
15
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/router/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/router/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4BH;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAChD,eAAe,CAAC,EAAE,MAAM,IAAI,iBAgc7B"}
|
package/dist/router/server.js
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* Exports a startServer function that can be called programmatically
|
|
5
5
|
* or from the CLI entry point.
|
|
6
6
|
*/
|
|
7
|
-
import
|
|
7
|
+
import { Hono } from 'hono';
|
|
8
|
+
import { serve } from '@hono/node-server';
|
|
9
|
+
import { cors } from 'hono/cors';
|
|
8
10
|
import { getValidAccessToken, loadTokens, saveTokens } from '../token-manager.js';
|
|
9
11
|
import { startOAuthFlow, exchangeCodeForTokens } from '../oauth.js';
|
|
10
12
|
import { ensureRequiredSystemPrompt } from './middleware.js';
|
|
@@ -18,28 +20,44 @@ const ANTHROPIC_BETA = 'oauth-2025-04-20,claude-code-20250219,interleaved-thinki
|
|
|
18
20
|
/**
|
|
19
21
|
* Start the router server
|
|
20
22
|
* @param port Port to listen on
|
|
23
|
+
* @param apiKey Optional API key to require for all requests
|
|
21
24
|
* @param askQuestion Function to ask user questions (for OAuth flow)
|
|
22
25
|
* @param onReadyCallback Optional callback when server is ready and no longer needs user input
|
|
23
26
|
*/
|
|
24
|
-
export async function startServer(port, askQuestion, onReadyCallback) {
|
|
25
|
-
const app =
|
|
27
|
+
export async function startServer(port, apiKey, askQuestion, onReadyCallback) {
|
|
28
|
+
const app = new Hono();
|
|
26
29
|
// CORS middleware - allow cross-origin requests from anywhere
|
|
27
|
-
app.use(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
app.use('*', cors());
|
|
31
|
+
// API key authentication middleware (if API key is set)
|
|
32
|
+
if (apiKey) {
|
|
33
|
+
app.use('/v1/chat/completions', async (c, next) => {
|
|
34
|
+
const authHeader = c.req.header('Authorization');
|
|
35
|
+
if (!authHeader) {
|
|
36
|
+
return c.json({
|
|
37
|
+
error: {
|
|
38
|
+
message: 'Missing Authorization header',
|
|
39
|
+
type: 'invalid_request_error',
|
|
40
|
+
code: 'missing_api_key',
|
|
41
|
+
},
|
|
42
|
+
}, 401);
|
|
43
|
+
}
|
|
44
|
+
// Support both "Bearer <key>" and raw key
|
|
45
|
+
const providedKey = authHeader.startsWith('Bearer ') ? authHeader.slice(7) : authHeader;
|
|
46
|
+
if (providedKey !== apiKey) {
|
|
47
|
+
return c.json({
|
|
48
|
+
error: {
|
|
49
|
+
message: 'Invalid API key',
|
|
50
|
+
type: 'invalid_request_error',
|
|
51
|
+
code: 'invalid_api_key',
|
|
52
|
+
},
|
|
53
|
+
}, 401);
|
|
54
|
+
}
|
|
55
|
+
await next();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// Helper function to render homepage
|
|
59
|
+
const renderHomepage = (c) => {
|
|
60
|
+
return c.html(`
|
|
43
61
|
<!DOCTYPE html>
|
|
44
62
|
<html lang="en">
|
|
45
63
|
<head>
|
|
@@ -73,6 +91,8 @@ export async function startServer(port, askQuestion, onReadyCallback) {
|
|
|
73
91
|
h1 {
|
|
74
92
|
font-size: 2.5em;
|
|
75
93
|
margin-bottom: 8px;
|
|
94
|
+
}
|
|
95
|
+
.title-text {
|
|
76
96
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
77
97
|
-webkit-background-clip: text;
|
|
78
98
|
-webkit-text-fill-color: transparent;
|
|
@@ -83,22 +103,6 @@ export async function startServer(port, askQuestion, onReadyCallback) {
|
|
|
83
103
|
font-size: 1.1em;
|
|
84
104
|
margin-bottom: 32px;
|
|
85
105
|
}
|
|
86
|
-
.status {
|
|
87
|
-
background: #e8f5e9;
|
|
88
|
-
border-left: 4px solid #4caf50;
|
|
89
|
-
padding: 16px;
|
|
90
|
-
border-radius: 4px;
|
|
91
|
-
margin-bottom: 32px;
|
|
92
|
-
}
|
|
93
|
-
.status-title {
|
|
94
|
-
font-weight: 600;
|
|
95
|
-
color: #2e7d32;
|
|
96
|
-
margin-bottom: 8px;
|
|
97
|
-
font-size: 1.1em;
|
|
98
|
-
}
|
|
99
|
-
.status-text {
|
|
100
|
-
color: #1b5e20;
|
|
101
|
-
}
|
|
102
106
|
.section {
|
|
103
107
|
margin-bottom: 32px;
|
|
104
108
|
}
|
|
@@ -109,32 +113,26 @@ export async function startServer(port, askQuestion, onReadyCallback) {
|
|
|
109
113
|
border-bottom: 2px solid #f0f0f0;
|
|
110
114
|
padding-bottom: 8px;
|
|
111
115
|
}
|
|
112
|
-
.
|
|
116
|
+
.base-url-box {
|
|
113
117
|
background: #f8f9fa;
|
|
118
|
+
border: 2px solid #667eea;
|
|
114
119
|
border-radius: 8px;
|
|
115
|
-
padding:
|
|
116
|
-
margin-bottom:
|
|
117
|
-
|
|
120
|
+
padding: 20px;
|
|
121
|
+
margin-bottom: 16px;
|
|
122
|
+
text-align: center;
|
|
118
123
|
}
|
|
119
|
-
.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
.base-url-label {
|
|
125
|
+
font-size: 0.9em;
|
|
126
|
+
color: #666;
|
|
127
|
+
margin-bottom: 8px;
|
|
123
128
|
font-weight: 600;
|
|
124
|
-
font-size: 0.85em;
|
|
125
|
-
margin-right: 12px;
|
|
126
|
-
}
|
|
127
|
-
.method.post {
|
|
128
|
-
background: #ffc107;
|
|
129
|
-
color: #333;
|
|
130
|
-
}
|
|
131
|
-
.method.get {
|
|
132
|
-
background: #2196f3;
|
|
133
|
-
color: white;
|
|
134
129
|
}
|
|
135
|
-
.url {
|
|
136
|
-
|
|
137
|
-
font-size:
|
|
130
|
+
.base-url {
|
|
131
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
132
|
+
font-size: 1.3em;
|
|
133
|
+
color: #667eea;
|
|
134
|
+
font-weight: 600;
|
|
135
|
+
user-select: all;
|
|
138
136
|
}
|
|
139
137
|
.code-block {
|
|
140
138
|
background: #1e1e1e;
|
|
@@ -196,28 +194,15 @@ export async function startServer(port, askQuestion, onReadyCallback) {
|
|
|
196
194
|
</head>
|
|
197
195
|
<body>
|
|
198
196
|
<div class="container">
|
|
199
|
-
<h1
|
|
197
|
+
<h1>🚀 <span class="title-text">Claude Gateway</span></h1>
|
|
200
198
|
<p class="subtitle">OpenAI-compatible proxy for Claude Code subscriptions</p>
|
|
201
|
-
|
|
202
|
-
<div class="status">
|
|
203
|
-
<div class="status-title">✅ Gateway is running</div>
|
|
204
|
-
<div class="status-text">The server is ready to accept requests</div>
|
|
205
|
-
</div>
|
|
206
|
-
|
|
207
|
-
<div class="section">
|
|
208
|
-
<h2>📋 Available Endpoints</h2>
|
|
209
|
-
<div class="endpoint">
|
|
210
|
-
<span class="method post">POST</span>
|
|
211
|
-
<span class="url">http://localhost:${port}/v1/chat/completions</span>
|
|
212
|
-
</div>
|
|
213
|
-
<div class="endpoint">
|
|
214
|
-
<span class="method get">GET</span>
|
|
215
|
-
<span class="url">http://localhost:${port}/v1/models</span>
|
|
216
|
-
</div>
|
|
217
|
-
</div>
|
|
218
199
|
|
|
219
200
|
<div class="section">
|
|
220
201
|
<h2>💡 Quick Start</h2>
|
|
202
|
+
<div class="base-url-box">
|
|
203
|
+
<div class="base-url-label">BASE URL</div>
|
|
204
|
+
<div class="base-url">http://localhost:${port}/v1</div>
|
|
205
|
+
</div>
|
|
221
206
|
<p style="margin-bottom: 16px;">Use with any OpenAI-compatible tool:</p>
|
|
222
207
|
<div class="code-block">
|
|
223
208
|
<span class="keyword">from</span> openai <span class="keyword">import</span> OpenAI
|
|
@@ -265,21 +250,24 @@ response = client.chat.completions.create(
|
|
|
265
250
|
</body>
|
|
266
251
|
</html>
|
|
267
252
|
`);
|
|
268
|
-
}
|
|
253
|
+
};
|
|
254
|
+
// Root endpoint - landing page
|
|
255
|
+
app.get('/', renderHomepage);
|
|
256
|
+
app.get('/v1', renderHomepage);
|
|
269
257
|
// OpenAI Models endpoint - return static model list
|
|
270
|
-
app.get('/v1/models', (
|
|
271
|
-
|
|
258
|
+
app.get('/v1/models', (c) => {
|
|
259
|
+
return c.json({
|
|
272
260
|
object: 'list',
|
|
273
261
|
data: ANTHROPIC_MODELS,
|
|
274
262
|
});
|
|
275
263
|
});
|
|
276
264
|
// OpenAI Chat Completions endpoint handler
|
|
277
|
-
const handleChatCompletionsRequest = async (
|
|
265
|
+
const handleChatCompletionsRequest = async (c) => {
|
|
278
266
|
const requestId = Math.random().toString(36).substring(7);
|
|
279
267
|
const timestamp = new Date().toISOString();
|
|
280
268
|
try {
|
|
281
269
|
// Get the request body as an OpenAI request
|
|
282
|
-
const openaiRequest = req.
|
|
270
|
+
const openaiRequest = await c.req.json();
|
|
283
271
|
// Validate the request
|
|
284
272
|
validateOpenAIRequest(openaiRequest);
|
|
285
273
|
// Translate OpenAI request to Anthropic format
|
|
@@ -303,21 +291,40 @@ response = client.chat.completions.create(
|
|
|
303
291
|
// Handle streaming responses
|
|
304
292
|
if (openaiRequest.stream &&
|
|
305
293
|
response.headers.get('content-type')?.includes('text/event-stream')) {
|
|
306
|
-
res.setHeader('Content-Type', 'text/event-stream');
|
|
307
|
-
res.setHeader('Cache-Control', 'no-cache');
|
|
308
|
-
res.setHeader('Connection', 'keep-alive');
|
|
309
|
-
res.status(response.status);
|
|
310
294
|
// Generate a message ID for the stream
|
|
311
295
|
const messageId = `chatcmpl-${requestId}`;
|
|
312
|
-
//
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
296
|
+
// Create a streaming response
|
|
297
|
+
const { readable, writable } = new TransformStream();
|
|
298
|
+
const writer = writable.getWriter();
|
|
299
|
+
const encoder = new TextEncoder();
|
|
300
|
+
// Process the stream asynchronously
|
|
301
|
+
(async () => {
|
|
302
|
+
try {
|
|
303
|
+
// Translate Anthropic stream to OpenAI format
|
|
304
|
+
for await (const chunk of translateAnthropicStreamToOpenAI(response.body, openaiRequest.model, messageId)) {
|
|
305
|
+
await writer.write(encoder.encode(chunk));
|
|
306
|
+
}
|
|
307
|
+
// Log streaming response
|
|
308
|
+
logger.logRequest(requestId, timestamp, modifiedRequest, hadSystemPrompt, {
|
|
309
|
+
status: response.status,
|
|
310
|
+
data: undefined,
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
logger.error(`[${requestId}] Error in stream:`, error);
|
|
315
|
+
}
|
|
316
|
+
finally {
|
|
317
|
+
await writer.close();
|
|
318
|
+
}
|
|
319
|
+
})();
|
|
320
|
+
// Return streaming response
|
|
321
|
+
return new Response(readable, {
|
|
319
322
|
status: response.status,
|
|
320
|
-
|
|
323
|
+
headers: {
|
|
324
|
+
'Content-Type': 'text/event-stream',
|
|
325
|
+
'Cache-Control': 'no-cache',
|
|
326
|
+
Connection: 'keep-alive',
|
|
327
|
+
},
|
|
321
328
|
});
|
|
322
329
|
}
|
|
323
330
|
else {
|
|
@@ -329,8 +336,7 @@ response = client.chat.completions.create(
|
|
|
329
336
|
status: response.status,
|
|
330
337
|
data: undefined,
|
|
331
338
|
});
|
|
332
|
-
|
|
333
|
-
return;
|
|
339
|
+
return c.json({ error: errorObject }, response.status);
|
|
334
340
|
}
|
|
335
341
|
const anthropicResponse = (await response.json());
|
|
336
342
|
const openaiResponse = translateAnthropicToOpenAI(anthropicResponse, openaiRequest.model);
|
|
@@ -338,21 +344,15 @@ response = client.chat.completions.create(
|
|
|
338
344
|
status: response.status,
|
|
339
345
|
data: anthropicResponse,
|
|
340
346
|
});
|
|
341
|
-
|
|
347
|
+
return c.json(openaiResponse, response.status);
|
|
342
348
|
}
|
|
343
349
|
}
|
|
344
350
|
catch (error) {
|
|
345
351
|
// Log the error
|
|
346
|
-
logger.logRequest(requestId, timestamp,
|
|
347
|
-
// If headers were already sent (e.g., streaming response in progress),
|
|
348
|
-
// we cannot send an error response - just log and return
|
|
349
|
-
if (res.headersSent) {
|
|
350
|
-
logger.error(`[${requestId}] Error occurred after headers sent:`, error);
|
|
351
|
-
return;
|
|
352
|
-
}
|
|
352
|
+
logger.logRequest(requestId, timestamp, {}, false, undefined, error instanceof Error ? error : new Error('Unknown error'));
|
|
353
353
|
// Return OpenAI-format error
|
|
354
354
|
const errorObject = translateAnthropicErrorToOpenAI(error instanceof Error ? { message: error.message } : { message: 'Unknown error' });
|
|
355
|
-
|
|
355
|
+
return c.json({ error: errorObject }, 500);
|
|
356
356
|
}
|
|
357
357
|
};
|
|
358
358
|
// OpenAI Chat Completions endpoint
|
|
@@ -388,14 +388,10 @@ response = client.chat.completions.create(
|
|
|
388
388
|
process.exit(1);
|
|
389
389
|
}
|
|
390
390
|
}
|
|
391
|
-
else {
|
|
392
|
-
logger.startup('✅ OAuth tokens found.');
|
|
393
|
-
}
|
|
394
391
|
// Validate/refresh token
|
|
395
392
|
if (tokens) {
|
|
396
393
|
try {
|
|
397
394
|
await getValidAccessToken();
|
|
398
|
-
logger.startup('✅ Token validated.');
|
|
399
395
|
}
|
|
400
396
|
catch (error) {
|
|
401
397
|
logger.error('❌ Token validation failed:', error);
|
|
@@ -403,16 +399,18 @@ response = client.chat.completions.create(
|
|
|
403
399
|
process.exit(1);
|
|
404
400
|
}
|
|
405
401
|
}
|
|
406
|
-
logger.startup('');
|
|
407
402
|
// Start the server
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
logger.startup(`
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
403
|
+
serve({
|
|
404
|
+
fetch: app.fetch,
|
|
405
|
+
port,
|
|
406
|
+
}, (info) => {
|
|
407
|
+
logger.startup(`Base URL: http://localhost:${info.port}/v1`);
|
|
408
|
+
if (apiKey) {
|
|
409
|
+
logger.startup('🔒 API Key authentication: ENABLED');
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
logger.startup('⚠️ API Key authentication: DISABLED (use --apiKey for security)');
|
|
413
|
+
}
|
|
416
414
|
logger.startup('');
|
|
417
415
|
// Notify that we're ready and no longer need user input
|
|
418
416
|
if (onReadyCallback) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/router/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/router/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,gCAAgC,EAChC,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/C,8BAA8B;AAC9B,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAClE,MAAM,iBAAiB,GAAG,YAAY,CAAC;AACvC,MAAM,cAAc,GAClB,8GAA8G,CAAC;AAEjH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,MAAqB,EACrB,WAAgD,EAChD,eAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,8DAA8D;IAC9D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAErB,wDAAwD;IACxD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YAChD,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,CAAC,CAAC,IAAI,CACX;oBACE,KAAK,EAAE;wBACL,OAAO,EAAE,8BAA8B;wBACvC,IAAI,EAAE,uBAAuB;wBAC7B,IAAI,EAAE,iBAAiB;qBACxB;iBACF,EACD,GAAG,CACJ,CAAC;YACJ,CAAC;YAED,0CAA0C;YAC1C,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAExF,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,CAAC,IAAI,CACX;oBACE,KAAK,EAAE;wBACL,OAAO,EAAE,iBAAiB;wBAC1B,IAAI,EAAE,uBAAuB;wBAC7B,IAAI,EAAE,iBAAiB;qBACxB;iBACF,EACD,GAAG,CACJ,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qCAAqC;IACrC,MAAM,cAAc,GAAG,CAAC,CAAU,EAAE,EAAE;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDAgJuC,IAAI;;;;;;;;sDAQP,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwCrD,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,+BAA+B;IAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC7B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAE/B,oDAAoD;IACpD,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,4BAA4B,GAAG,KAAK,EAAE,CAAU,EAAE,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,CAAC;YACH,4CAA4C;YAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAqC,CAAC;YAE5E,uBAAuB;YACvB,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAErC,+CAA+C;YAC/C,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;YAEnE,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE1F,+CAA+C;YAC/C,MAAM,eAAe,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;YAErE,4DAA4D;YAC5D,MAAM,WAAW,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAEhD,uCAAuC;YACvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,WAAW,EAAE;oBACtC,mBAAmB,EAAE,iBAAiB;oBACtC,gBAAgB,EAAE,cAAc;iBACjC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;aACtC,CAAC,CAAC;YAEH,6BAA6B;YAC7B,IACE,aAAa,CAAC,MAAM;gBACpB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACnE,CAAC;gBACD,uCAAuC;gBACvC,MAAM,SAAS,GAAG,YAAY,SAAS,EAAE,CAAC;gBAE1C,8BAA8B;gBAC9B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;gBAElC,oCAAoC;gBACpC,CAAC,KAAK,IAAI,EAAE;oBACV,IAAI,CAAC;wBACH,8CAA8C;wBAC9C,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gCAAgC,CACxD,QAAQ,CAAC,IAAiC,EAC1C,aAAa,CAAC,KAAK,EACnB,SAAS,CACV,EAAE,CAAC;4BACF,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC5C,CAAC;wBAED,yBAAyB;wBACzB,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE;4BACxE,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,IAAI,EAAE,SAAS;yBAChB,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,oBAAoB,EAAE,KAAK,CAAC,CAAC;oBACzD,CAAC;4BAAS,CAAC;wBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;gBAEL,4BAA4B;gBAC5B,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE;oBAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE;wBACP,cAAc,EAAE,mBAAmB;wBACnC,eAAe,EAAE,UAAU;wBAC3B,UAAU,EAAE,YAAY;qBACzB;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,gCAAgC;gBAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACxC,MAAM,WAAW,GAAG,+BAA+B,CAAC,SAAS,CAAC,CAAC;oBAC/D,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE;wBACxE,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,IAAI,EAAE,SAAS;qBAChB,CAAC,CAAC;oBACH,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,MAA8B,CAAC,CAAC;gBACjF,CAAC;gBAED,MAAM,iBAAiB,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;gBACvE,MAAM,cAAc,GAAG,0BAA0B,CAAC,iBAAiB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;gBAE1F,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE;oBACxE,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,IAAI,EAAE,iBAAiB;iBACxB,CAAC,CAAC;gBAEH,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,MAA8B,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB;YAChB,MAAM,CAAC,UAAU,CACf,SAAS,EACT,SAAS,EACT,EAAmC,EACnC,KAAK,EACL,SAAS,EACT,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAC5D,CAAC;YAEF,6BAA6B;YAC7B,MAAM,WAAW,GAAG,+BAA+B,CACjD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CACnF,CAAC;YAEF,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC;IAEF,mCAAmC;IACnC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;IAE/D,mBAAmB;IACnB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;IACrE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnB,0BAA0B;IAC1B,IAAI,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,yDAAyD;QACzD,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;QACpE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEnB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YAC3C,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;YAEhD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,GAAG,SAAS,CAAC;YAEnB,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,mBAAmB,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,KAAK,CACH;QACE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI;KACL,EACD,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,CAAC,OAAO,CAAC,8BAA8B,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;QAC7D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEnB,wDAAwD;QACxD,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-gateway",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"description": "OpenAI-compatible gateway for Claude Code subscription - Use your Claude subscription with any OpenAI-compatible tool",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -60,11 +60,11 @@
|
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"conf": "^15.0.2",
|
|
62
62
|
"dotenv": "^16.4.5",
|
|
63
|
-
"
|
|
63
|
+
"hono": "^4.7.9"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
67
|
-
"@
|
|
67
|
+
"@hono/node-server": "^1.14.2",
|
|
68
68
|
"@types/node": "^20.11.5",
|
|
69
69
|
"@typescript-eslint/eslint-plugin": "^8.48.1",
|
|
70
70
|
"@typescript-eslint/parser": "^8.48.1",
|