commandcode-api-proxy 0.1.4 → 0.3.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 CHANGED
@@ -73,14 +73,23 @@ commandcode-api-proxy auth logout
73
73
 
74
74
  Equivalent env vars (lower priority than CLI flags):
75
75
 
76
- | Env var | Description |
77
- | ---------------- | -------------------------------------------- |
78
- | `HOST` | Bind address |
79
- | `PORT` | Port |
80
- | `CC_API_KEY` | Command Code API key |
81
- | `CC_API_BASE` | Upstream API base URL |
82
- | `CC_CLI_VERSION` | CLI version sent upstream |
83
- | `LOG_LEVEL` | Log level (`info`, `debug`, etc.) |
76
+ | Env var | Description |
77
+ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
78
+ | `HOST` | Bind address |
79
+ | `PORT` | Port |
80
+ | `CC_API_KEY` | Command Code API key |
81
+ | `CC_API_BASE` | Upstream API base URL |
82
+ | `CC_CLI_VERSION` | CLI version sent upstream |
83
+ | `CC_UPSTREAM_TIMEOUT_MS` | Max ms for upstream to return response headers + first byte (default `600000` / 10 min). Bump for slow reasoning models |
84
+ | `CC_IDLE_TIMEOUT_MS` | Max ms between consecutive stream chunks (default `120000` / 2 min). `0` disables — detects stalled upstreams |
85
+ | `LOG_LEVEL` | Log level (`info`, `debug`, etc.) |
86
+ | `CORS_ORIGIN` | `Access-Control-Allow-Origin` value. `*` by default; empty string disables CORS. Restrict before exposing on a network. |
87
+
88
+ > **Security:** the proxy forwards your paid Command Code key upstream and
89
+ > accepts any auth token from clients (`proxy-managed`), so it is designed for
90
+ > **localhost** use (`HOST=127.0.0.1`). Do not bind it to `0.0.0.0` on an
91
+ > untrusted network without restricting `CORS_ORIGIN` and putting your own auth
92
+ > in front.
84
93
 
85
94
  ## Endpoints
86
95
 
@@ -140,11 +149,11 @@ npx commandcode-api-proxy --setup-claude-code
140
149
 
141
150
  If a settings file already exists, re-run with `--force` to overwrite it.
142
151
 
143
- | Claude Code tier | Env var | Maps to |
144
- | ---------------- | -------------------------------- | --------------------------- |
145
- | `sonnet` | `ANTHROPIC_DEFAULT_SONNET_MODEL` | `deepseek/deepseek-v4-pro` |
146
- | `opus` | `ANTHROPIC_DEFAULT_OPUS_MODEL` | `deepseek/deepseek-v4-pro` |
147
- | `haiku` | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | `deepseek/deepseek-v4-flash`|
152
+ | Claude Code tier | Env var | Maps to |
153
+ | ---------------- | -------------------------------- | ---------------------------- |
154
+ | `sonnet` | `ANTHROPIC_DEFAULT_SONNET_MODEL` | `deepseek/deepseek-v4-pro` |
155
+ | `opus` | `ANTHROPIC_DEFAULT_OPUS_MODEL` | `deepseek/deepseek-v4-pro` |
156
+ | `haiku` | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | `deepseek/deepseek-v4-flash` |
148
157
 
149
158
  Edit those env vars in the settings file to point at other CC models. To force
150
159
  every `claude-*` request to a single model regardless of tier, set
@@ -165,25 +174,46 @@ claude-proxy
165
174
 
166
175
  Short names work in addition to full model IDs:
167
176
 
168
- | Alias | Maps to |
169
- | -------------------------------------------------- | ------------------------------ |
170
- | `deepseek-v4-pro`, `deepseek-v4`, `deepseek-pro` | `deepseek/deepseek-v4-pro` |
171
- | `deepseek-v4-flash`, `deepseek-flash` | `deepseek/deepseek-v4-flash` |
172
- | `kimi-k2.6`, `kimi2.6` | `moonshotai/Kimi-K2.6` |
173
- | `kimi-k2.5`, `kimi2.5` | `moonshotai/Kimi-K2.5` |
174
- | `glm-5.1` | `zai-org/GLM-5.1` |
175
- | `glm-5` | `zai-org/GLM-5` |
176
- | `minimax-m2.7`, `minimax2.7` | `MiniMaxAI/MiniMax-M2.7` |
177
- | `minimax-m2.5`, `minimax2.5` | `MiniMaxAI/MiniMax-M2.5` |
178
- | `qwen3.6-max`, `qwen-3.6-max` | `Qwen/Qwen3.6-Max-Preview` |
179
- | `qwen3.6-plus`, `qwen-3.6-plus` | `Qwen/Qwen3.6-Plus` |
180
- | `qwen3.7-max`, `qwen-3.7-max` | `Qwen/Qwen3.7-Max` |
181
- | `qwen3.7-plus`, `qwen-3.7-plus` | `Qwen/Qwen3.7-Plus` |
182
- | `step3.5`, `step-3.5-flash` | `stepfun/Step-3.5-Flash` |
183
- | `mimo-v2.5`, `mimo2.5` | `xiaomi/mimo-v2.5` |
177
+ | Alias | Maps to |
178
+ | ------------------------------------------------ | ------------------------------------- |
179
+ | `deepseek-v4-pro`, `deepseek-v4`, `deepseek-pro` | `deepseek/deepseek-v4-pro` |
180
+ | `deepseek-v4-flash`, `deepseek-flash` | `deepseek/deepseek-v4-flash` |
181
+ | `glm-5.2`, `glm5.2` | `zai-org/GLM-5.2` |
182
+ | `glm-5.2-fast`, `glm5.2-fast` | `zai-org/GLM-5.2-Fast` |
183
+ | `glm-5.1` | `zai-org/GLM-5.1` |
184
+ | `glm-5` | `zai-org/GLM-5` |
185
+ | `minimax-m3`, `minimax3` | `MiniMaxAI/MiniMax-M3` |
186
+ | `minimax-m2.7`, `minimax2.7` | `MiniMaxAI/MiniMax-M2.7` |
187
+ | `minimax-m2.5`, `minimax2.5` | `MiniMaxAI/MiniMax-M2.5` |
188
+ | `kimi-k3`, `kimi3` | `moonshotai/Kimi-K3` |
189
+ | `kimi-k2.7-code`, `kimi-code` | `moonshotai/Kimi-K2.7-Code` |
190
+ | `kimi-k2.7-highspeed`, `kimi-highspeed` | `moonshotai/Kimi-K2.7-Code-Highspeed` |
191
+ | `kimi-k2.6`, `kimi2.6` | `moonshotai/Kimi-K2.6` |
192
+ | `kimi-k2.5`, `kimi2.5` | `moonshotai/Kimi-K2.5` |
193
+ | `qwen3.7-max`, `qwen-3.7-max` | `Qwen/Qwen3.7-Max` |
194
+ | `qwen3.7-plus`, `qwen-3.7-plus` | `Qwen/Qwen3.7-Plus` |
195
+ | `qwen3.6-max`, `qwen-3.6-max` | `Qwen/Qwen3.6-Max-Preview` |
196
+ | `qwen3.6-plus`, `qwen-3.6-plus` | `Qwen/Qwen3.6-Plus` |
197
+ | `step-3.7-flash`, `step3.7` | `stepfun/Step-3.7-Flash` |
198
+ | `step3.5`, `step-3.5-flash` | `stepfun/Step-3.5-Flash` |
199
+ | `mimo-v2.5-pro`, `mimo-pro` | `xiaomi/mimo-v2.5-pro` |
200
+ | `mimo-v2.5`, `mimo2.5` | `xiaomi/mimo-v2.5` |
201
+ | `grok-4.5`, `grok4.5` | `xai/grok-4.5` |
202
+ | `nemotron`, `nemotron-3-ultra` | `nvidia/nemotron-3-ultra-550b-a55b` |
203
+ | `inkling` | `thinkingmachines/inkling` |
204
+ | `hy3` | `tencent/Hy3` |
184
205
 
185
206
  Any model ID is passed through as-is — the proxy does not validate against a fixed list.
186
207
 
208
+ ### Reasoning effort
209
+
210
+ Some models support a `reasoning_effort` (`low` | `medium` | `high` | `xhigh` | `max`), and
211
+ each accepts a different subset. The proxy sends the closest valid level for the model
212
+ (e.g. `deepseek-v4-pro` supports only `high`/`max`, so `low` is clipped up to `high` and
213
+ `max` is reachable). Models without a discrete effort set ignore the value. Pass the
214
+ effort via OpenAI's `reasoning_effort`, or Anthropic's `thinking.budget_tokens`
215
+ (larger budget → higher effort).
216
+
187
217
  ## License
188
218
 
189
219
  MIT
package/dist/config.d.ts CHANGED
@@ -5,6 +5,11 @@ export interface Config {
5
5
  ccApiBase: string;
6
6
  ccVersion: string;
7
7
  logLevel: string;
8
+ corsOrigin: string;
9
+ /** Max wall-clock ms for upstream to send response headers + first byte. */
10
+ upstreamTimeoutMs: number;
11
+ /** Max ms between consecutive chunks during streaming. 0 = disabled. */
12
+ idleTimeoutMs: number;
8
13
  }
9
14
  /**
10
15
  * Hardcoded CLI version fallback. The real CLI ships frequent releases, so
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAM3C;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBpE;AAqBD,wBAAgB,UAAU,IAAI,MAAM,CAWnC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAM3C;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBpE;AAqBD,wBAAgB,UAAU,IAAI,MAAM,CAoCnC"}
package/dist/config.js CHANGED
@@ -62,6 +62,35 @@ export function loadConfig() {
62
62
  const ccApiBase = process.env.CC_API_BASE || "https://api.commandcode.ai";
63
63
  const ccVersion = process.env.CC_CLI_VERSION || cachedVersion || DEFAULT_CC_VERSION;
64
64
  const logLevel = process.env.LOG_LEVEL || "info";
65
- return { host, port, apiKey, ccApiBase, ccVersion, logLevel };
65
+ // `*` is fine for a localhost proxy; restrict (e.g. to an origin or leave
66
+ // empty to disable) before exposing the proxy on a network.
67
+ const corsOrigin = process.env.CORS_ORIGIN ?? "*";
68
+ // Upstream timeouts. The connection timeout covers the wall-clock time
69
+ // until the upstream returns response headers + first byte — bump it for
70
+ // slow reasoning models. The idle timeout catches stalled streams where
71
+ // the upstream opened the connection but stopped sending chunks
72
+ // mid-response (e.g. tool call hung on the upstream side). Set
73
+ // CC_IDLE_TIMEOUT_MS=0 to disable idle detection entirely.
74
+ const upstreamTimeoutMs = parsePositiveInt(process.env.CC_UPSTREAM_TIMEOUT_MS, 600_000);
75
+ const idleTimeoutMs = parsePositiveInt(process.env.CC_IDLE_TIMEOUT_MS, 120_000); // 2 minutes
76
+ return {
77
+ host,
78
+ port,
79
+ apiKey,
80
+ ccApiBase,
81
+ ccVersion,
82
+ logLevel,
83
+ corsOrigin,
84
+ upstreamTimeoutMs,
85
+ idleTimeoutMs,
86
+ };
87
+ }
88
+ function parsePositiveInt(raw, fallback) {
89
+ if (raw == null || raw === "")
90
+ return fallback;
91
+ const n = Number(raw);
92
+ if (!Number.isFinite(n) || n < 0)
93
+ return fallback;
94
+ return Math.floor(n);
66
95
  }
67
96
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/models.json CHANGED
@@ -2,18 +2,30 @@
2
2
  "builtin": [
3
3
  "deepseek/deepseek-v4-pro",
4
4
  "deepseek/deepseek-v4-flash",
5
- "MiniMaxAI/MiniMax-M2.7",
6
- "MiniMaxAI/MiniMax-M2.5",
5
+ "zai-org/GLM-5.2",
6
+ "zai-org/GLM-5.2-Fast",
7
7
  "zai-org/GLM-5.1",
8
8
  "zai-org/GLM-5",
9
+ "MiniMaxAI/MiniMax-M3",
10
+ "MiniMaxAI/MiniMax-M2.7",
11
+ "MiniMaxAI/MiniMax-M2.5",
12
+ "moonshotai/Kimi-K3",
13
+ "moonshotai/Kimi-K2.7-Code",
14
+ "moonshotai/Kimi-K2.7-Code-Highspeed",
9
15
  "moonshotai/Kimi-K2.6",
10
16
  "moonshotai/Kimi-K2.5",
17
+ "Qwen/Qwen3.7-Max",
18
+ "Qwen/Qwen3.7-Plus",
11
19
  "Qwen/Qwen3.6-Max-Preview",
12
20
  "Qwen/Qwen3.6-Plus",
21
+ "stepfun/Step-3.7-Flash",
13
22
  "stepfun/Step-3.5-Flash",
23
+ "xiaomi/mimo-v2.5-pro",
14
24
  "xiaomi/mimo-v2.5",
15
- "Qwen/Qwen3.7-Max",
16
- "Qwen/Qwen3.7-Plus"
25
+ "xai/grok-4.5",
26
+ "nvidia/nemotron-3-ultra-550b-a55b",
27
+ "thinkingmachines/inkling",
28
+ "tencent/Hy3"
17
29
  ],
18
30
  "shortAliases": {
19
31
  "deepseek-v4-pro": "deepseek/deepseek-v4-pro",
@@ -21,60 +33,113 @@
21
33
  "deepseek-pro": "deepseek/deepseek-v4-pro",
22
34
  "deepseek-v4-flash": "deepseek/deepseek-v4-flash",
23
35
  "deepseek-flash": "deepseek/deepseek-v4-flash",
24
- "kimi-k2.6": "moonshotai/Kimi-K2.6",
25
- "kimi-k2.5": "moonshotai/Kimi-K2.5",
26
- "kimi2.6": "moonshotai/Kimi-K2.6",
27
- "kimi2.5": "moonshotai/Kimi-K2.5",
36
+ "glm-5.2": "zai-org/GLM-5.2",
37
+ "glm5.2": "zai-org/GLM-5.2",
38
+ "glm-5.2-fast": "zai-org/GLM-5.2-Fast",
39
+ "glm5.2-fast": "zai-org/GLM-5.2-Fast",
28
40
  "glm-5.1": "zai-org/GLM-5.1",
29
41
  "glm-5": "zai-org/GLM-5",
42
+ "minimax-m3": "MiniMaxAI/MiniMax-M3",
43
+ "minimax3": "MiniMaxAI/MiniMax-M3",
30
44
  "minimax-m2.7": "MiniMaxAI/MiniMax-M2.7",
31
45
  "minimax2.7": "MiniMaxAI/MiniMax-M2.7",
32
46
  "minimax-m2.5": "MiniMaxAI/MiniMax-M2.5",
33
47
  "minimax2.5": "MiniMaxAI/MiniMax-M2.5",
48
+ "kimi-k3": "moonshotai/Kimi-K3",
49
+ "kimi3": "moonshotai/Kimi-K3",
50
+ "kimi-k2.7-code": "moonshotai/Kimi-K2.7-Code",
51
+ "kimi2.7-code": "moonshotai/Kimi-K2.7-Code",
52
+ "kimi-code": "moonshotai/Kimi-K2.7-Code",
53
+ "kimi-k2.7-highspeed": "moonshotai/Kimi-K2.7-Code-Highspeed",
54
+ "kimi-highspeed": "moonshotai/Kimi-K2.7-Code-Highspeed",
55
+ "kimi-k2.6": "moonshotai/Kimi-K2.6",
56
+ "kimi2.6": "moonshotai/Kimi-K2.6",
57
+ "kimi-k2.5": "moonshotai/Kimi-K2.5",
58
+ "kimi2.5": "moonshotai/Kimi-K2.5",
59
+ "qwen3.7-max": "Qwen/Qwen3.7-Max",
60
+ "qwen-3.7-max": "Qwen/Qwen3.7-Max",
61
+ "qwen3.7-plus": "Qwen/Qwen3.7-Plus",
62
+ "qwen-3.7-plus": "Qwen/Qwen3.7-Plus",
34
63
  "qwen-3.6-max": "Qwen/Qwen3.6-Max-Preview",
35
64
  "qwen3.6-max": "Qwen/Qwen3.6-Max-Preview",
36
65
  "qwen-3.6-plus": "Qwen/Qwen3.6-Plus",
37
66
  "qwen3.6-plus": "Qwen/Qwen3.6-Plus",
67
+ "step-3.7-flash": "stepfun/Step-3.7-Flash",
68
+ "step3.7": "stepfun/Step-3.7-Flash",
38
69
  "step-3.5-flash": "stepfun/Step-3.5-Flash",
39
70
  "step3.5": "stepfun/Step-3.5-Flash",
71
+ "mimo-v2.5-pro": "xiaomi/mimo-v2.5-pro",
72
+ "mimo-pro": "xiaomi/mimo-v2.5-pro",
40
73
  "mimo-v2.5": "xiaomi/mimo-v2.5",
41
74
  "mimo2.5": "xiaomi/mimo-v2.5",
42
- "qwen3.7-max": "Qwen/Qwen3.7-Max",
43
- "qwen-3.7-max": "Qwen/Qwen3.7-Max",
44
- "qwen3.7-plus": "Qwen/Qwen3.7-Plus",
45
- "qwen-3.7-plus": "Qwen/Qwen3.7-Plus"
75
+ "grok-4.5": "xai/grok-4.5",
76
+ "grok4.5": "xai/grok-4.5",
77
+ "nemotron": "nvidia/nemotron-3-ultra-550b-a55b",
78
+ "nemotron-3-ultra": "nvidia/nemotron-3-ultra-550b-a55b",
79
+ "inkling": "thinkingmachines/inkling",
80
+ "hy3": "tencent/Hy3"
46
81
  },
47
82
  "contextWindows": {
48
83
  "deepseek/deepseek-v4-pro": 1048576,
49
84
  "deepseek/deepseek-v4-flash": 1048576,
50
- "MiniMaxAI/MiniMax-M2.7": 204800,
51
- "MiniMaxAI/MiniMax-M2.5": 204800,
85
+ "zai-org/GLM-5.2": 1048576,
86
+ "zai-org/GLM-5.2-Fast": 1048576,
52
87
  "zai-org/GLM-5.1": 200000,
53
88
  "zai-org/GLM-5": 200000,
54
- "moonshotai/Kimi-K2.6": 262144,
55
- "moonshotai/Kimi-K2.5": 262144,
89
+ "MiniMaxAI/MiniMax-M3": 1048576,
90
+ "MiniMaxAI/MiniMax-M2.7": 204800,
91
+ "MiniMaxAI/MiniMax-M2.5": 200000,
92
+ "moonshotai/Kimi-K3": 1048576,
93
+ "moonshotai/Kimi-K2.7-Code": 256000,
94
+ "moonshotai/Kimi-K2.7-Code-Highspeed": 262000,
95
+ "moonshotai/Kimi-K2.6": 256000,
96
+ "moonshotai/Kimi-K2.5": 256000,
97
+ "Qwen/Qwen3.7-Max": 1048576,
98
+ "Qwen/Qwen3.7-Plus": 1048576,
56
99
  "Qwen/Qwen3.6-Max-Preview": 262144,
57
100
  "Qwen/Qwen3.6-Plus": 1048576,
58
- "stepfun/Step-3.5-Flash": 262144,
101
+ "stepfun/Step-3.7-Flash": 256000,
102
+ "stepfun/Step-3.5-Flash": 1048576,
103
+ "xiaomi/mimo-v2.5-pro": 1048576,
59
104
  "xiaomi/mimo-v2.5": 1048576,
60
- "Qwen/Qwen3.7-Max": 1048576,
61
- "Qwen/Qwen3.7-Plus": 1048576
105
+ "xai/grok-4.5": 500000,
106
+ "nvidia/nemotron-3-ultra-550b-a55b": 1048576,
107
+ "thinkingmachines/inkling": 256000,
108
+ "tencent/Hy3": 262144
62
109
  },
63
110
  "modelNames": {
64
111
  "deepseek/deepseek-v4-pro": "DeepSeek V4 Pro",
65
112
  "deepseek/deepseek-v4-flash": "DeepSeek V4 Flash",
66
- "MiniMaxAI/MiniMax-M2.7": "MiniMax M2.7",
67
- "MiniMaxAI/MiniMax-M2.5": "MiniMax M2.5",
113
+ "zai-org/GLM-5.2": "GLM-5.2",
114
+ "zai-org/GLM-5.2-Fast": "GLM-5.2 Fast",
68
115
  "zai-org/GLM-5.1": "GLM-5.1",
69
116
  "zai-org/GLM-5": "GLM-5",
117
+ "MiniMaxAI/MiniMax-M3": "MiniMax M3",
118
+ "MiniMaxAI/MiniMax-M2.7": "MiniMax M2.7",
119
+ "MiniMaxAI/MiniMax-M2.5": "MiniMax M2.5",
120
+ "moonshotai/Kimi-K3": "Kimi K3",
121
+ "moonshotai/Kimi-K2.7-Code": "Kimi K2.7 Code",
122
+ "moonshotai/Kimi-K2.7-Code-Highspeed": "Kimi K2.7 Code Highspeed",
70
123
  "moonshotai/Kimi-K2.6": "Kimi K2.6",
71
124
  "moonshotai/Kimi-K2.5": "Kimi K2.5",
125
+ "Qwen/Qwen3.7-Max": "Qwen 3.7 Max",
126
+ "Qwen/Qwen3.7-Plus": "Qwen 3.7 Plus",
72
127
  "Qwen/Qwen3.6-Max-Preview": "Qwen 3.6 Max Preview",
73
128
  "Qwen/Qwen3.6-Plus": "Qwen 3.6 Plus",
129
+ "stepfun/Step-3.7-Flash": "Step 3.7 Flash",
74
130
  "stepfun/Step-3.5-Flash": "Step 3.5 Flash",
131
+ "xiaomi/mimo-v2.5-pro": "MiMo V2.5 Pro",
75
132
  "xiaomi/mimo-v2.5": "MiMo V2.5",
76
- "Qwen/Qwen3.7-Max": "Qwen 3.7 Max",
77
- "Qwen/Qwen3.7-Plus": "Qwen 3.7 Plus"
133
+ "xai/grok-4.5": "Grok 4.5",
134
+ "nvidia/nemotron-3-ultra-550b-a55b": "Nemotron 3 Ultra",
135
+ "thinkingmachines/inkling": "Inkling",
136
+ "tencent/Hy3": "Hy3"
137
+ },
138
+ "reasoningEfforts": {
139
+ "deepseek/deepseek-v4-pro": ["high", "max"],
140
+ "deepseek/deepseek-v4-flash": ["high", "max"],
141
+ "zai-org/GLM-5.2": ["high", "max"],
142
+ "xai/grok-4.5": ["low", "medium", "high"]
78
143
  },
79
144
  "maxOutputTokens": {
80
145
  "deepseek/deepseek-v4-pro": 393216,
package/dist/proxy.js CHANGED
@@ -78,11 +78,24 @@ server.listen(config.port, config.host, () => {
78
78
  console.log("");
79
79
  console.log(" Press Ctrl+C to stop\n");
80
80
  });
81
- process.on("SIGINT", () => {
82
- console.log("\n Shutting down...");
83
- server.close(() => process.exit(0));
81
+ // Never let an unexpected async error crash the proxy silently — log and keep
82
+ // serving. (Route handlers already catch their own errors; this is a backstop.)
83
+ process.on("unhandledRejection", (reason) => {
84
+ logger.error("[fatal] Unhandled promise rejection:", reason);
84
85
  });
85
- process.on("SIGTERM", () => {
86
- server.close(() => process.exit(0));
86
+ process.on("uncaughtException", (err) => {
87
+ logger.error("[fatal] Uncaught exception:", err);
87
88
  });
89
+ const shutdown = (signal) => {
90
+ logger.info(`Received ${signal}, shutting down...`);
91
+ // Don't hang forever waiting on a stuck streaming connection.
92
+ const force = setTimeout(() => {
93
+ logger.warn("Forcing shutdown after 10s timeout");
94
+ process.exit(1);
95
+ }, 10_000);
96
+ force.unref();
97
+ server.close(() => process.exit(0));
98
+ };
99
+ process.on("SIGINT", () => shutdown("SIGINT"));
100
+ process.on("SIGTERM", () => shutdown("SIGTERM"));
88
101
  //# sourceMappingURL=proxy.js.map
package/dist/proxy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACtC,MAAM,mBAAmB,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAC5B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,CAAC,IAAI,CACT,mBAAmB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,GAAG,CAC9I,CAAC;AAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC7C,IAAI,MAAM;QAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;AACxC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IAC3C,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,gFAAgF;AAChF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAQ,EAAE;IACxC,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,oBAAoB,CAAC,CAAC;IACpD,8DAA8D;IAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC,CAAC;IACX,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  import http from "node:http";
2
2
  import type { Config } from "./config.js";
3
+ export declare class BodyParseError extends Error {
4
+ readonly status: number;
5
+ constructor(status: number, message: string);
6
+ }
3
7
  export declare function createServer(cfg: Config): http.Server;
4
8
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAoc1C,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CA4DrD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAqC1C,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AA4hBD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CA6DrD"}