claudebox 0.1.0 → 0.2.0
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 +10 -2
- package/dist/background-update.d.ts +2 -0
- package/dist/background-update.d.ts.map +1 -0
- package/dist/background-update.js +48 -0
- package/dist/background-update.js.map +1 -0
- package/dist/cli.js +58 -50
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +69 -47
- package/dist/config.js.map +1 -1
- package/dist/configure.d.ts +2 -0
- package/dist/configure.d.ts.map +1 -0
- package/dist/configure.js +121 -0
- package/dist/configure.js.map +1 -0
- package/dist/converter.d.ts.map +1 -1
- package/dist/converter.js +42 -33
- package/dist/converter.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +20 -16
- package/dist/logger.js.map +1 -1
- package/dist/providers/gemini.d.ts +2 -2
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +14 -11
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +3 -3
- package/dist/providers/index.js +3 -3
- package/dist/providers/ollama.d.ts +2 -2
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +14 -11
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts +2 -2
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +10 -10
- package/dist/providers/openai.js.map +1 -1
- package/dist/server.js +20 -20
- package/dist/translator.d.ts +1 -1
- package/dist/translator.d.ts.map +1 -1
- package/dist/translator.js +40 -42
- package/dist/translator.js.map +1 -1
- package/dist/types.d.ts +14 -14
- package/dist/update-checker.d.ts +4 -0
- package/dist/update-checker.d.ts.map +1 -0
- package/dist/update-checker.js +96 -0
- package/dist/update-checker.js.map +1 -0
- package/package.json +12 -4
package/README.md
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ccproxy (claudebox)
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/claudebox)
|
|
4
|
+
[](https://www.npmjs.com/package/claudebox)
|
|
5
|
+
[](https://github.com/himasnhu-at/ccproxy/actions/workflows/build.yml)
|
|
2
6
|
|
|
3
7
|
> Use Claude Code with **any** AI provider: OpenAI, Gemini, or Ollama.
|
|
4
8
|
|
|
9
|
+
> [!WARNING]
|
|
10
|
+
> **Active Development Notice**
|
|
11
|
+
> This project is currently under active development. Features may change rapidly and you may encounter bugs. Please report any issues you find!
|
|
12
|
+
|
|
5
13
|
## Quick start
|
|
6
14
|
|
|
7
15
|
```bash
|
|
8
16
|
# Install globally
|
|
9
|
-
npm install -g
|
|
17
|
+
npm install -g claudebox
|
|
10
18
|
|
|
11
19
|
# configure
|
|
12
20
|
ccproxy configure
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-update.d.ts","sourceRoot":"","sources":["../src/background-update.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import * as os from 'node:os';
|
|
4
|
+
import { createRequire } from 'node:module';
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
// In dev (src/) it's ../, in prod (dist/) it's ../
|
|
7
|
+
const { version: currentVersion } = require('../package.json');
|
|
8
|
+
const CONFIG_DIR = path.join(os.homedir(), '.ccproxy');
|
|
9
|
+
const STATUS_FILE = path.join(CONFIG_DIR, 'update-status.json');
|
|
10
|
+
const LOG_FILE = path.join(CONFIG_DIR, 'background-update.log');
|
|
11
|
+
// Passed from parent update-checker
|
|
12
|
+
const isVerbose = process.argv.includes('--verbose');
|
|
13
|
+
// Update this to match your deployed URL for Next.js when ready
|
|
14
|
+
const VERSION_URL = 'http://localhost:3000/api/version';
|
|
15
|
+
async function checkUpdate() {
|
|
16
|
+
try {
|
|
17
|
+
const controller = new AbortController();
|
|
18
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000); // 5 second timeout
|
|
19
|
+
const res = await fetch(VERSION_URL, {
|
|
20
|
+
signal: controller.signal,
|
|
21
|
+
headers: { 'Cache-Control': 'no-cache' },
|
|
22
|
+
});
|
|
23
|
+
clearTimeout(timeoutId);
|
|
24
|
+
if (res.ok) {
|
|
25
|
+
const latestVersion = (await res.text()).trim();
|
|
26
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
27
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
28
|
+
}
|
|
29
|
+
fs.writeFileSync(STATUS_FILE, JSON.stringify({
|
|
30
|
+
latestVersion,
|
|
31
|
+
lastChecked: Date.now(),
|
|
32
|
+
currentVersion,
|
|
33
|
+
}, null, 2));
|
|
34
|
+
if (isVerbose)
|
|
35
|
+
fs.appendFileSync(LOG_FILE, `[${new Date().toISOString()}] Successfully grabbed version: ${latestVersion}\n`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
if (isVerbose)
|
|
39
|
+
fs.appendFileSync(LOG_FILE, `[${new Date().toISOString()}] Fetch failed. Status: ${res.status}\n`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (isVerbose)
|
|
44
|
+
fs.appendFileSync(LOG_FILE, `[${new Date().toISOString()}] Background error: ${err.message}\n`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
checkUpdate();
|
|
48
|
+
//# sourceMappingURL=background-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-update.js","sourceRoot":"","sources":["../src/background-update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,mDAAmD;AACnD,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;AAEhE,oCAAoC;AACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAErD,gEAAgE;AAChE,MAAM,WAAW,GAAG,mCAAmC,CAAC;AAExD,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB;QAEjF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE;SACzC,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;YAED,EAAE,CAAC,aAAa,CACd,WAAW,EACX,IAAI,CAAC,SAAS,CACZ;gBACE,aAAa;gBACb,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,cAAc;aACf,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YAEF,IAAI,SAAS;gBACX,EAAE,CAAC,cAAc,CACf,QAAQ,EACR,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,mCAAmC,aAAa,IAAI,CACjF,CAAC;QACN,CAAC;aAAM,CAAC;YACN,IAAI,SAAS;gBACX,EAAE,CAAC,cAAc,CACf,QAAQ,EACR,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,2BAA2B,GAAG,CAAC,MAAM,IAAI,CACtE,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,SAAS;YACX,EAAE,CAAC,cAAc,CACf,QAAQ,EACR,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,uBAAuB,GAAG,CAAC,OAAO,IAAI,CACnE,CAAC;IACN,CAAC;AACH,CAAC;AAED,WAAW,EAAE,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { parseArgs } from
|
|
3
|
-
import { createRequire } from
|
|
4
|
-
import { spawn as sp } from
|
|
5
|
-
import { config } from
|
|
6
|
-
import chalk from
|
|
7
|
-
import figlet from
|
|
2
|
+
import { parseArgs } from 'node:util';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
import { spawn as sp } from 'node:child_process';
|
|
5
|
+
import { config } from './config.js';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import figlet from 'figlet';
|
|
8
8
|
const require = createRequire(import.meta.url);
|
|
9
|
-
const { version } = require(
|
|
10
|
-
console.log(chalk.cyan(figlet.textSync(
|
|
11
|
-
font:
|
|
12
|
-
horizontalLayout:
|
|
9
|
+
const { version } = require('../package.json');
|
|
10
|
+
console.log(chalk.cyan(figlet.textSync('ccproxy', {
|
|
11
|
+
font: 'Standard',
|
|
12
|
+
horizontalLayout: 'default',
|
|
13
13
|
})));
|
|
14
14
|
console.log(chalk.dim(` v${version}\n`));
|
|
15
15
|
// IMP: Add npm update check here in the future (e.g. using update-notifier)
|
|
16
16
|
const args = process.argv.slice(2);
|
|
17
17
|
const command = args[0];
|
|
18
18
|
const options = {
|
|
19
|
-
port: { type:
|
|
20
|
-
provider: { type:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
verbose: { type:
|
|
27
|
-
help: { type:
|
|
19
|
+
port: { type: 'string', short: 'p' },
|
|
20
|
+
provider: { type: 'string' },
|
|
21
|
+
'big-model': { type: 'string' },
|
|
22
|
+
'small-model': { type: 'string' },
|
|
23
|
+
'ollama-base': { type: 'string' },
|
|
24
|
+
'openai-key': { type: 'string' },
|
|
25
|
+
'gemini-key': { type: 'string' },
|
|
26
|
+
verbose: { type: 'string', short: 'v' },
|
|
27
|
+
help: { type: 'boolean', short: 'h' },
|
|
28
28
|
};
|
|
29
29
|
const { values } = parseArgs({
|
|
30
30
|
args: args,
|
|
@@ -32,6 +32,11 @@ const { values } = parseArgs({
|
|
|
32
32
|
strict: false,
|
|
33
33
|
allowPositionals: true,
|
|
34
34
|
});
|
|
35
|
+
import { checkAndUpdate } from './update-checker.js';
|
|
36
|
+
const { handled } = await checkAndUpdate();
|
|
37
|
+
if (handled) {
|
|
38
|
+
process.exit(0);
|
|
39
|
+
}
|
|
35
40
|
if (values.help) {
|
|
36
41
|
printHelp();
|
|
37
42
|
process.exit(0);
|
|
@@ -45,7 +50,8 @@ USAGE
|
|
|
45
50
|
|
|
46
51
|
COMMANDS
|
|
47
52
|
server Start the proxy server
|
|
48
|
-
config Manage configuration (API keys, models, etc.)
|
|
53
|
+
config Manage configuration (API keys, models, etc.) via arguments
|
|
54
|
+
configure Interactive configuration setup
|
|
49
55
|
(default) Check if server is running, then start 'claude'
|
|
50
56
|
|
|
51
57
|
OPTIONS
|
|
@@ -88,17 +94,17 @@ function getUpdatesFromArgs() {
|
|
|
88
94
|
let vLevel = undefined;
|
|
89
95
|
const vVal = values.verbose;
|
|
90
96
|
if (vVal !== undefined) {
|
|
91
|
-
if (vVal ===
|
|
97
|
+
if (vVal === 'true')
|
|
92
98
|
vLevel = 1;
|
|
93
|
-
else if (vVal ===
|
|
99
|
+
else if (vVal === '0' || vVal === '1' || vVal === '2')
|
|
94
100
|
vLevel = parseInt(vVal, 10);
|
|
95
101
|
}
|
|
96
102
|
// Fallback: manual scan to handle shell flag mangling (e.g. -v without value)
|
|
97
103
|
for (let i = 0; i < args.length; i++) {
|
|
98
104
|
const arg = args[i];
|
|
99
|
-
if (arg ===
|
|
105
|
+
if (arg === '-v' || arg === '--v' || arg === '-verbose' || arg === '--verbose') {
|
|
100
106
|
const next = args[i + 1];
|
|
101
|
-
if (next && (next ===
|
|
107
|
+
if (next && (next === '0' || next === '1' || next === '2')) {
|
|
102
108
|
vLevel = parseInt(next, 10);
|
|
103
109
|
}
|
|
104
110
|
else {
|
|
@@ -110,44 +116,46 @@ function getUpdatesFromArgs() {
|
|
|
110
116
|
updates.verbose = vLevel;
|
|
111
117
|
const providers = {};
|
|
112
118
|
const targetProvider = values.provider ?? config.preferredProvider;
|
|
113
|
-
if (values[
|
|
114
|
-
values[
|
|
115
|
-
values[
|
|
116
|
-
values[
|
|
117
|
-
values[
|
|
119
|
+
if (values['big-model'] ||
|
|
120
|
+
values['small-model'] ||
|
|
121
|
+
values['ollama-base'] ||
|
|
122
|
+
values['openai-key'] ||
|
|
123
|
+
values['gemini-key']) {
|
|
118
124
|
providers[targetProvider] = {};
|
|
119
|
-
const bigModel = values[
|
|
120
|
-
const smallModel = values[
|
|
121
|
-
const ollamaBase = values[
|
|
122
|
-
const openaiKey = values[
|
|
123
|
-
const geminiKey = values[
|
|
124
|
-
if (typeof bigModel ===
|
|
125
|
+
const bigModel = values['big-model'];
|
|
126
|
+
const smallModel = values['small-model'];
|
|
127
|
+
const ollamaBase = values['ollama-base'];
|
|
128
|
+
const openaiKey = values['openai-key'];
|
|
129
|
+
const geminiKey = values['gemini-key'];
|
|
130
|
+
if (typeof bigModel === 'string')
|
|
125
131
|
providers[targetProvider].bigModel = bigModel;
|
|
126
|
-
if (typeof smallModel ===
|
|
132
|
+
if (typeof smallModel === 'string')
|
|
127
133
|
providers[targetProvider].smallModel = smallModel;
|
|
128
|
-
if (typeof ollamaBase ===
|
|
134
|
+
if (typeof ollamaBase === 'string')
|
|
129
135
|
providers[targetProvider].apiBase = ollamaBase;
|
|
130
|
-
if (typeof openaiKey ===
|
|
136
|
+
if (typeof openaiKey === 'string')
|
|
131
137
|
providers[targetProvider].apiKey = openaiKey;
|
|
132
|
-
if (typeof geminiKey ===
|
|
138
|
+
if (typeof geminiKey === 'string')
|
|
133
139
|
providers[targetProvider].apiKey = geminiKey;
|
|
134
140
|
updates.providers = providers;
|
|
135
141
|
}
|
|
136
142
|
return updates;
|
|
137
143
|
}
|
|
138
|
-
if (command ===
|
|
144
|
+
if (command === 'config' || command === 'configure') {
|
|
139
145
|
const updates = getUpdatesFromArgs();
|
|
140
146
|
if (Object.keys(updates).length > 0) {
|
|
141
147
|
config.save(updates);
|
|
142
|
-
console.log(
|
|
148
|
+
console.log('✅ Configuration updated.');
|
|
149
|
+
process.exit(0);
|
|
143
150
|
}
|
|
144
151
|
else {
|
|
145
|
-
|
|
146
|
-
|
|
152
|
+
// If no args are passed to `config` or `configure`, trigger interactive flow
|
|
153
|
+
const { runConfigure } = await import('./configure.js');
|
|
154
|
+
await runConfigure();
|
|
155
|
+
process.exit(0);
|
|
147
156
|
}
|
|
148
|
-
process.exit(0);
|
|
149
157
|
}
|
|
150
|
-
if (command ===
|
|
158
|
+
if (command === 'server') {
|
|
151
159
|
const updates = getUpdatesFromArgs();
|
|
152
160
|
if (Object.keys(updates).length > 0) {
|
|
153
161
|
if (updates.preferredProvider)
|
|
@@ -166,9 +174,9 @@ if (command === "server") {
|
|
|
166
174
|
}
|
|
167
175
|
}
|
|
168
176
|
}
|
|
169
|
-
await import(
|
|
177
|
+
await import('./server.js');
|
|
170
178
|
}
|
|
171
|
-
else if (!command || command ===
|
|
179
|
+
else if (!command || command === 'claude') {
|
|
172
180
|
const running = await isServerRunning(config.port);
|
|
173
181
|
if (!running) {
|
|
174
182
|
console.log(`\n❌ Proxy server is not running on port ${config.port}.`);
|
|
@@ -177,15 +185,15 @@ else if (!command || command === "claude") {
|
|
|
177
185
|
}
|
|
178
186
|
console.log(`🚀 Connecting to ccproxy on port ${config.port}...`);
|
|
179
187
|
try {
|
|
180
|
-
const claude = sp(
|
|
188
|
+
const claude = sp('claude', {
|
|
181
189
|
env: {
|
|
182
190
|
...process.env,
|
|
183
191
|
ANTHROPIC_BASE_URL: `http://localhost:${config.port}`,
|
|
184
192
|
},
|
|
185
|
-
stdio:
|
|
193
|
+
stdio: 'inherit',
|
|
186
194
|
shell: true,
|
|
187
195
|
});
|
|
188
|
-
claude.on(
|
|
196
|
+
claude.on('exit', (code) => {
|
|
189
197
|
process.exit(code ?? 0);
|
|
190
198
|
});
|
|
191
199
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAY,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;IACzB,IAAI,EAAE,UAAU;IAChB,gBAAgB,EAAE,SAAS;CAC5B,CAAC,CACH,CACF,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,OAAO,IAAI,CAAC,CAAC,CAAC;AAC1C,4EAA4E;AAE5E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAY,EAAE;IACtD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;IACrC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;IACxC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;IAC1C,aAAa,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;IAC1C,YAAY,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;IACzC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;IACzC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAY,EAAE;IACzD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,KAAK,EAAE,GAAY,EAAE;CACxD,CAAC;AAEF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,IAAI;IACV,OAAO;IACP,MAAM,EAAE,KAAK;IACb,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IAChB,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type Provider =
|
|
1
|
+
export type Provider = 'openai' | 'gemini' | 'ollama';
|
|
2
2
|
interface ProviderConfig {
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
apiBase?: string;
|
|
@@ -18,7 +18,6 @@ declare class Config {
|
|
|
18
18
|
verbose: number;
|
|
19
19
|
readonly openaiModels: Set<string>;
|
|
20
20
|
readonly geminiModels: Set<string>;
|
|
21
|
-
readonly ollamaModels: Set<string>;
|
|
22
21
|
constructor();
|
|
23
22
|
get bigModel(): string;
|
|
24
23
|
get smallModel(): string;
|
|
@@ -29,7 +28,6 @@ declare class Config {
|
|
|
29
28
|
save(updates: ConfigSchema): void;
|
|
30
29
|
isOpenAIModel(model: string): boolean;
|
|
31
30
|
isGeminiModel(model: string): boolean;
|
|
32
|
-
isOllamaModel(model: string): boolean;
|
|
33
31
|
resolveProvider(model: string): Provider;
|
|
34
32
|
summary(): {
|
|
35
33
|
preferredProvider: Provider;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAgDtD,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,cAAM,MAAM;IACV,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,YAAY,cAAiB;IACtC,QAAQ,CAAC,YAAY,cAAiB;;IAqCtC,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,OAAO,CAAC,YAAY;IAYpB,IAAI,CAAC,OAAO,EAAE,YAAY;IA+B1B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAMxC,OAAO;;;;;;CAQR;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,25 +1,43 @@
|
|
|
1
|
-
import * as fs from
|
|
2
|
-
import * as path from
|
|
3
|
-
import * as os from
|
|
4
|
-
const CONFIG_DIR = path.join(os.homedir(),
|
|
5
|
-
const CONFIG_FILE = path.join(CONFIG_DIR,
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import * as os from 'node:os';
|
|
4
|
+
const CONFIG_DIR = path.join(os.homedir(), '.ccproxy');
|
|
5
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
6
6
|
const OPENAI_MODELS = new Set([
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
// GPT-5 family
|
|
8
|
+
'gpt-5.2',
|
|
9
|
+
'gpt-5.2-pro',
|
|
10
|
+
'gpt-5',
|
|
11
|
+
'gpt-5-mini',
|
|
12
|
+
'gpt-5-nano',
|
|
13
|
+
// GPT-4.1 family
|
|
14
|
+
'gpt-4.1',
|
|
15
|
+
'gpt-4.1-mini',
|
|
16
|
+
'gpt-4.1-nano',
|
|
17
|
+
// GPT-4o family
|
|
18
|
+
'gpt-4o',
|
|
19
|
+
'gpt-4o-mini',
|
|
20
|
+
// reasoning models
|
|
21
|
+
'o3',
|
|
22
|
+
'o3-mini',
|
|
23
|
+
'o3-pro',
|
|
24
|
+
'o4-mini',
|
|
11
25
|
]);
|
|
12
26
|
const GEMINI_MODELS = new Set([
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
// gemini 3.1
|
|
28
|
+
'gemini-3.1-pro',
|
|
29
|
+
'gemini-3.1-flash-lite',
|
|
30
|
+
// gemini 3
|
|
31
|
+
'gemini-3-pro',
|
|
32
|
+
'gemini-3-flash',
|
|
33
|
+
// gemini 2.5
|
|
34
|
+
'gemini-2.5-pro',
|
|
35
|
+
'gemini-2.5-flash',
|
|
36
|
+
'gemini-2.5-flash-lite',
|
|
22
37
|
]);
|
|
38
|
+
const MODEL_ALIASES = {
|
|
39
|
+
// Alias common short names to full model names
|
|
40
|
+
};
|
|
23
41
|
class Config {
|
|
24
42
|
preferredProvider;
|
|
25
43
|
providers;
|
|
@@ -27,50 +45,59 @@ class Config {
|
|
|
27
45
|
verbose;
|
|
28
46
|
openaiModels = OPENAI_MODELS;
|
|
29
47
|
geminiModels = GEMINI_MODELS;
|
|
30
|
-
ollamaModels = OLLAMA_MODELS;
|
|
31
48
|
constructor() {
|
|
32
49
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
33
50
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
34
51
|
}
|
|
35
52
|
const fileConfig = this.loadFromFile();
|
|
36
53
|
const isNewConfig = !fs.existsSync(CONFIG_FILE) || Object.keys(fileConfig).length === 0;
|
|
37
|
-
this.preferredProvider = fileConfig.preferredProvider ??
|
|
54
|
+
this.preferredProvider = fileConfig.preferredProvider ?? 'openai';
|
|
38
55
|
this.port = fileConfig.port ?? 8082;
|
|
39
56
|
this.verbose = fileConfig.verbose ?? 0;
|
|
40
57
|
this.providers = {
|
|
41
58
|
openai: {
|
|
42
|
-
apiKey: fileConfig.providers?.openai?.apiKey ??
|
|
43
|
-
bigModel: fileConfig.providers?.openai?.bigModel ??
|
|
44
|
-
smallModel: fileConfig.providers?.openai?.smallModel ??
|
|
59
|
+
apiKey: fileConfig.providers?.openai?.apiKey ?? '',
|
|
60
|
+
bigModel: fileConfig.providers?.openai?.bigModel ?? 'gpt-5.3',
|
|
61
|
+
smallModel: fileConfig.providers?.openai?.smallModel ?? 'gpt-5',
|
|
45
62
|
},
|
|
46
63
|
gemini: {
|
|
47
|
-
apiKey: fileConfig.providers?.gemini?.apiKey ??
|
|
48
|
-
bigModel: fileConfig.providers?.gemini?.bigModel ??
|
|
49
|
-
smallModel: fileConfig.providers?.gemini?.smallModel ??
|
|
64
|
+
apiKey: fileConfig.providers?.gemini?.apiKey ?? '',
|
|
65
|
+
bigModel: fileConfig.providers?.gemini?.bigModel ?? 'gemini-3.1-pro',
|
|
66
|
+
smallModel: fileConfig.providers?.gemini?.smallModel ?? 'gemini-3.1-flash',
|
|
50
67
|
},
|
|
51
68
|
ollama: {
|
|
52
|
-
apiBase: fileConfig.providers?.ollama?.apiBase ??
|
|
53
|
-
bigModel: fileConfig.providers?.ollama?.bigModel ??
|
|
54
|
-
smallModel: fileConfig.providers?.ollama?.smallModel ??
|
|
69
|
+
apiBase: fileConfig.providers?.ollama?.apiBase ?? 'http://localhost:11434',
|
|
70
|
+
bigModel: fileConfig.providers?.ollama?.bigModel ?? 'llama3.2:3b',
|
|
71
|
+
smallModel: fileConfig.providers?.ollama?.smallModel ?? 'llama3.2:3b',
|
|
55
72
|
},
|
|
56
73
|
};
|
|
57
74
|
if (isNewConfig) {
|
|
58
75
|
this.save({});
|
|
59
76
|
}
|
|
60
77
|
}
|
|
61
|
-
get bigModel() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
get
|
|
65
|
-
|
|
78
|
+
get bigModel() {
|
|
79
|
+
return this.providers[this.preferredProvider].bigModel;
|
|
80
|
+
}
|
|
81
|
+
get smallModel() {
|
|
82
|
+
return this.providers[this.preferredProvider].smallModel;
|
|
83
|
+
}
|
|
84
|
+
get openaiApiKey() {
|
|
85
|
+
return this.providers.openai.apiKey;
|
|
86
|
+
}
|
|
87
|
+
get geminiApiKey() {
|
|
88
|
+
return this.providers.gemini.apiKey;
|
|
89
|
+
}
|
|
90
|
+
get ollamaApiBase() {
|
|
91
|
+
return this.providers.ollama.apiBase;
|
|
92
|
+
}
|
|
66
93
|
loadFromFile() {
|
|
67
94
|
if (fs.existsSync(CONFIG_FILE)) {
|
|
68
95
|
try {
|
|
69
|
-
const content = fs.readFileSync(CONFIG_FILE,
|
|
96
|
+
const content = fs.readFileSync(CONFIG_FILE, 'utf-8');
|
|
70
97
|
return content ? JSON.parse(content) : {};
|
|
71
98
|
}
|
|
72
99
|
catch (e) {
|
|
73
|
-
console.error(
|
|
100
|
+
console.error('Failed to parse config file:', e);
|
|
74
101
|
}
|
|
75
102
|
}
|
|
76
103
|
return {};
|
|
@@ -88,7 +115,7 @@ class Config {
|
|
|
88
115
|
const prov = p;
|
|
89
116
|
this.providers[prov] = {
|
|
90
117
|
...this.providers[prov],
|
|
91
|
-
...updates.providers[prov]
|
|
118
|
+
...updates.providers[prov],
|
|
92
119
|
};
|
|
93
120
|
}
|
|
94
121
|
}
|
|
@@ -96,7 +123,7 @@ class Config {
|
|
|
96
123
|
preferredProvider: this.preferredProvider,
|
|
97
124
|
port: this.port,
|
|
98
125
|
verbose: this.verbose,
|
|
99
|
-
providers: this.providers
|
|
126
|
+
providers: this.providers,
|
|
100
127
|
};
|
|
101
128
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
102
129
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
@@ -104,7 +131,7 @@ class Config {
|
|
|
104
131
|
fs.writeFileSync(CONFIG_FILE, JSON.stringify(fullConfig, null, 2));
|
|
105
132
|
}
|
|
106
133
|
catch (e) {
|
|
107
|
-
console.error(
|
|
134
|
+
console.error('Failed to save config file:', e);
|
|
108
135
|
}
|
|
109
136
|
}
|
|
110
137
|
isOpenAIModel(model) {
|
|
@@ -113,16 +140,11 @@ class Config {
|
|
|
113
140
|
isGeminiModel(model) {
|
|
114
141
|
return this.geminiModels.has(model);
|
|
115
142
|
}
|
|
116
|
-
isOllamaModel(model) {
|
|
117
|
-
return this.ollamaModels.has(model);
|
|
118
|
-
}
|
|
119
143
|
resolveProvider(model) {
|
|
120
144
|
if (this.isOpenAIModel(model))
|
|
121
|
-
return
|
|
145
|
+
return 'openai';
|
|
122
146
|
if (this.isGeminiModel(model))
|
|
123
|
-
return
|
|
124
|
-
if (this.isOllamaModel(model))
|
|
125
|
-
return "ollama";
|
|
147
|
+
return 'gemini';
|
|
126
148
|
return this.preferredProvider;
|
|
127
149
|
}
|
|
128
150
|
summary() {
|
|
@@ -130,7 +152,7 @@ class Config {
|
|
|
130
152
|
preferredProvider: this.preferredProvider,
|
|
131
153
|
port: this.port,
|
|
132
154
|
verbose: this.verbose,
|
|
133
|
-
providers: this.providers
|
|
155
|
+
providers: this.providers,
|
|
134
156
|
};
|
|
135
157
|
}
|
|
136
158
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,kBAwIjC"}
|