copilot-custom-endpoint 1.1.0 → 1.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.
Files changed (2) hide show
  1. package/README.md +186 -72
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -29,6 +29,7 @@ This repo is for those situations: validated, copy-paste-ready configs when Open
29
29
  | **Xiaomi MiMo** | `mimo-v2.5` | No | ✅ | ✅ | ✅ | ✅⁴ |
30
30
  | **Xiaomi MiMo** | `mimo-v2.5-pro` | No | ✅ | ✅ | ✅ | ❌ |
31
31
  | **Xiaomi MiMo** | `mimo-v2-flash` | No | ✅ | ✅ | ✅ | ❌ |
32
+ | **MiniMax** | `MiniMax-M3` | No | ✅ | ✅ | ✅ | ✅ |
32
33
 
33
34
  ¹ Proxy is optional: direct path works with static `enable_thinking: false`. Proxy adds dynamic thinking suppression (thinking ON in plain chat, OFF in tool loops).
34
35
  ² With proxy: reasoning visible in plain chat. Without proxy: always suppressed.
@@ -156,10 +157,37 @@ Here's a complete, real-world example of `chatLanguageModels.json` combining all
156
157
  }
157
158
  }
158
159
  ]
160
+ },
161
+ {
162
+ "name": "MiniMax",
163
+ "vendor": "customendpoint",
164
+ "apiKey": "<your-minimax-api-key>",
165
+ "apiType": "chat-completions",
166
+ "models": [
167
+ {
168
+ "id": "MiniMax-M3",
169
+ "name": "MiniMax M3",
170
+ "url": "https://api.minimax.io/v1/chat/completions",
171
+ "toolCalling": true,
172
+ "vision": true,
173
+ "streaming": true,
174
+ "maxInputTokens": 1048576,
175
+ "maxOutputTokens": 131072,
176
+ "requestBody": {
177
+ "thinking": { "type": "adaptive" },
178
+ "reasoning_split": true,
179
+ "temperature": 1,
180
+ "top_p": 0.95
181
+ }
182
+ }
183
+ ]
159
184
  }
160
185
  ]
161
186
  ```
162
187
 
188
+ <details>
189
+ <summary>Kimi K2.6 (Moonshot)</summary>
190
+
163
191
  ### Kimi K2.6 (Moonshot)
164
192
 
165
193
  #### 1. Grab a Moonshot API key
@@ -272,33 +300,92 @@ Open (or create) your user config file (see [Config file location](#config-file-
272
300
  | `invalid temperature` / `invalid top_p` | You're talking directly to Moonshot instead of through the proxy. Double-check the `url` in `chatLanguageModels.json`. |
273
301
  | Tool calls fail after first turn | This happens if "thinking" stays enabled during tool loops. The proxy normally disables it automatically; ensure you're on the latest `proxy/kimi-proxy.mjs`. |
274
302
 
303
+ </details>
304
+
275
305
  ---
276
306
 
307
+ <details>
308
+ <summary>Qwen 3.6 Plus / Qwen 3.7 Max (DashScope)</summary>
309
+
277
310
  ### Qwen 3.6 Plus or Qwen 3.7 Max (DashScope)
278
311
 
279
- These models work with the optional `proxy/qwen-proxy.mjs` for dynamic thinking suppression (reasoning visible in plain chat, suppressed in tool loops). They also work **without a proxy** using a static `enable_thinking: false` — see the [direct path alternative](#direct-path-no-proxy) below.
312
+ Qwen models work **directly** with DashScope no proxy needed. Just add `enable_thinking: false` to `requestBody` for tool-calling stability. An optional `proxy/qwen-proxy.mjs` is also available for dynamic thinking suppression (see [below](#optional-local-proxy-for-dynamic-thinking)).
280
313
 
281
314
  #### 1. Grab a DashScope API key
282
315
 
283
- Sign up at [dashscope.aliyun.com](https://dashscope.aliyun.com) and create an API key.
316
+ Create an API key [here](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=dashboard#/api-key).
284
317
 
285
- #### 2. Start the optional local proxy (recommended)
318
+ > **Regional endpoints:** DashScope offers endpoints for several regions. API keys are region-specific.
319
+ >
320
+ > - **China (Beijing):** `https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions`
321
+ > - **US (Virginia):** `https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions`
322
+ > - **Singapore (default):** `https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions`
286
323
 
287
- The proxy dynamically enables thinking in plain chat and disables it during tool calls:
324
+ #### 2. Register the models in VS Code
288
325
 
289
- Run Qwen proxy
326
+ Open (or create) your user config file (see [Config file location](#config-file-location) above) and paste this entry (replace `<your-dashscope-key>`):
327
+
328
+ ```json
329
+ {
330
+ "name": "Qwen",
331
+ "vendor": "customendpoint",
332
+ "apiKey": "<your-dashscope-key>",
333
+ "apiType": "chat-completions",
334
+ "models": [
335
+ {
336
+ "id": "qwen3.7-max",
337
+ "name": "Qwen 3.7 Max",
338
+ "url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
339
+ "toolCalling": true,
340
+ "vision": false,
341
+ "streaming": true,
342
+ "requestBody": {
343
+ "enable_thinking": false
344
+ }
345
+ },
346
+ {
347
+ "id": "qwen3.6-plus",
348
+ "name": "Qwen 3.6 Plus",
349
+ "url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
350
+ "toolCalling": true,
351
+ "vision": true,
352
+ "streaming": true,
353
+ "requestBody": {
354
+ "enable_thinking": false
355
+ }
356
+ }
357
+ ]
358
+ }
359
+ ```
360
+
361
+ > **Trade-off:** `enable_thinking: false` suppresses reasoning in all requests (both plain chat and tool loops). Tool loops stay stable, but you never see the model's thought process. The [optional proxy](#optional-local-proxy-for-dynamic-thinking) below avoids this trade-off.
362
+
363
+ #### 3. Chat!
364
+
365
+ - Open the Copilot chat panel (`Ctrl+Alt+I` / `Cmd+Ctrl+I`).
366
+ - Click the model picker (top-right of the chat input).
367
+ - Choose **Qwen 3.6 Plus** (with vision) or **Qwen 3.7 Max** (text only).
368
+ - Ask something. Streaming, tool use, and vision (3.6 Plus) all work.
369
+
370
+ ---
371
+
372
+ #### Optional: Local proxy for dynamic thinking
373
+
374
+ If you want reasoning visible in plain chat but automatically suppressed during tool loops, run the optional `proxy/qwen-proxy.mjs` instead.
375
+
376
+ Start the proxy:
290
377
 
291
378
  ```bash
292
379
  npm run proxy:qwen
293
380
  ```
294
381
 
295
- Run all proxies
382
+ Or with all proxies:
296
383
 
297
384
  ```bash
298
385
  npm run proxy
299
386
  ```
300
387
 
301
- Run globally (from any directory)
388
+ Or globally (from any directory):
302
389
 
303
390
  ```bash
304
391
  # Qwen only
@@ -307,14 +394,6 @@ npx copilot-custom-endpoint qwen
307
394
  npx copilot-custom-endpoint
308
395
  ```
309
396
 
310
- Clean up debug logs
311
-
312
- ```bash
313
- npm run clean:logs
314
- # or with npx
315
- npx copilot-custom-endpoint clean
316
- ```
317
-
318
397
  You should see:
319
398
 
320
399
  ```
@@ -338,9 +417,7 @@ Expected response:
338
417
  }
339
418
  ```
340
419
 
341
- #### 3. Register the models in VS Code
342
-
343
- Open (or create) your user config file (see [Config file location](#config-file-location) above) and paste this entry (replace `<your-dashscope-key>`). Point URLs at the proxy and omit `requestBody` — the proxy handles thinking dynamically:
420
+ Then update your VS Code config to point URLs at the proxy and remove `requestBody` — the proxy handles thinking dynamically:
344
421
 
345
422
  ```json
346
423
  {
@@ -371,59 +448,7 @@ Open (or create) your user config file (see [Config file location](#config-file-
371
448
 
372
449
  > **Keep the proxy terminal open** while using these models.
373
450
 
374
- #### 4. Chat!
375
-
376
- - Open the Copilot chat panel (`Ctrl+Alt+I` / `Cmd+Ctrl+I`).
377
- - Click the model picker (top-right of the chat input).
378
- - Choose **Qwen 3.6 Plus** (with vision) or **Qwen 3.7 Max** (text only).
379
- - Ask something. Streaming, tool use, and vision (3.6 Plus) all work.
380
-
381
- > **Regional endpoints:** If connecting directly (no proxy), DashScope offers endpoints for several regions. The proxy uses `dashscope-intl.aliyuncs.com` (Singapore) by default, configurable via `QWEN_UPSTREAM_URL`.
382
- >
383
- > - **China (Beijing):** `https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions`
384
- > - **US (Virginia):** `https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions`
385
- > - **Singapore:** `https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions` (proxy default)
386
- >
387
- > API keys are region-specific.
388
-
389
- #### Direct path (no proxy)
390
-
391
- If you prefer not to run the proxy, Qwen models work **directly** with DashScope by using the upstream URL and a static `enable_thinking: false` in `requestBody`:
392
-
393
- ```json
394
- {
395
- "name": "Qwen",
396
- "vendor": "customendpoint",
397
- "apiKey": "<your-dashscope-key>",
398
- "apiType": "chat-completions",
399
- "models": [
400
- {
401
- "id": "qwen3.7-max",
402
- "name": "Qwen 3.7 Max",
403
- "url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
404
- "toolCalling": true,
405
- "vision": false,
406
- "streaming": true,
407
- "requestBody": {
408
- "enable_thinking": false
409
- }
410
- },
411
- {
412
- "id": "qwen3.6-plus",
413
- "name": "Qwen 3.6 Plus",
414
- "url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
415
- "toolCalling": true,
416
- "vision": true,
417
- "streaming": true,
418
- "requestBody": {
419
- "enable_thinking": false
420
- }
421
- }
422
- ]
423
- }
424
- ```
425
-
426
- > **Trade-off:** `enable_thinking: false` suppresses reasoning in all requests (both plain chat and tool loops). Tool loops stay stable, but you never see the model's thought process. The proxy path avoids this trade-off.
451
+ The proxy URL is configurable via the `QWEN_UPSTREAM_URL` environment variable (defaults to the Singapore endpoint shown in [step 1](#1-grab-a-dashscope-api-key)).
427
452
 
428
453
  #### Troubleshooting (Qwen)
429
454
 
@@ -432,8 +457,13 @@ If you prefer not to run the proxy, Qwen models work **directly** with DashScope
432
457
  | `reasoning_content` errors during tool loops | Ensure `enable_thinking: false` is present in `requestBody` for every Qwen model. |
433
458
  | Vision images fail to upload | Use base64-encoded images; external image URLs may fail if DashScope cannot reach them. |
434
459
 
460
+ </details>
461
+
435
462
  ---
436
463
 
464
+ <details>
465
+ <summary>DeepSeek V4 (VS Code Extension)</summary>
466
+
437
467
  ### DeepSeek V4 (VS Code Extension)
438
468
 
439
469
  DeepSeek V4 Pro & Flash are available via a **dedicated VS Code extension** rather than a raw custom endpoint. The extension plugs DeepSeek directly into Copilot Chat's model picker while preserving agent mode, tool calling, skills, and MCP support.
@@ -475,8 +505,13 @@ DeepSeek V4 is text-only, but the extension handles images automatically — dro
475
505
 
476
506
  > For the full official guide, see: [github.com/deepseek-ai/awesome-deepseek-agent/blob/main/docs/github_copilot.md](https://github.com/deepseek-ai/awesome-deepseek-agent/blob/main/docs/github_copilot.md)
477
507
 
508
+ </details>
509
+
478
510
  ---
479
511
 
512
+ <details>
513
+ <summary>Xiaomi MiMo</summary>
514
+
480
515
  ### Xiaomi MiMo
481
516
 
482
517
  MiMo works **directly** — no proxy needed. Just add the provider entry to your VS Code config and select the model in the chat picker.
@@ -563,6 +598,80 @@ Open your user config file (see [Config file location](#config-file-location) ab
563
598
  | 400 error `reasoning_content` during tool loops | Ensure `thinking: { "type": "disabled" }` is present in `requestBody` for every MiMo model. |
564
599
  | Vision images fail to upload | Use `mimo-v2.5` (the only model with native vision). Text-only models (`pro`, `flash`) don't support image input. |
565
600
 
601
+ </details>
602
+
603
+ ---
604
+
605
+ <details>
606
+ <summary>MiniMax M3 (MiniMax)</summary>
607
+
608
+ ### MiniMax M3 (MiniMax)
609
+
610
+ MiniMax works **directly** with the OpenAI-compatible Chat Completions endpoint — no proxy needed. The recommended config enables MiniMax's native reasoning via `thinking: { "type": "adaptive" }` + `reasoning_split: true`.
611
+
612
+ #### 1. Grab a MiniMax API key
613
+
614
+ Create an API key at the [MiniMax Developer Platform](https://platform.minimax.io/user-center/basic-information/interface-key).
615
+
616
+ > **Regional endpoints:** MiniMax offers endpoints for different regions. API keys are region-specific.
617
+ >
618
+ > - **International (default):** `https://api.minimax.io/v1/chat/completions`
619
+ > - **China:** `https://api.minimaxi.com/v1/chat/completions`
620
+
621
+ #### 2. Register the model in VS Code
622
+
623
+ Open (or create) your user config file (see [Config file location](#config-file-location) above) and paste this entry (replace `<your-minimax-api-key>`):
624
+
625
+ ```json
626
+ {
627
+ "name": "MiniMax",
628
+ "vendor": "customendpoint",
629
+ "apiKey": "<your-minimax-api-key>",
630
+ "apiType": "chat-completions",
631
+ "models": [
632
+ {
633
+ "id": "MiniMax-M3",
634
+ "name": "MiniMax M3",
635
+ "url": "https://api.minimax.io/v1/chat/completions",
636
+ "toolCalling": true,
637
+ "vision": true,
638
+ "streaming": true,
639
+ "maxInputTokens": 1048576,
640
+ "maxOutputTokens": 131072,
641
+ "requestBody": {
642
+ "thinking": { "type": "adaptive" },
643
+ "reasoning_split": true,
644
+ "temperature": 1,
645
+ "top_p": 0.95
646
+ }
647
+ }
648
+ ]
649
+ }
650
+ ```
651
+
652
+ **Why this config?**
653
+
654
+ - `thinking: { "type": "adaptive" }` — MiniMax's documented default. The model decides when to reason.
655
+ - `reasoning_split: true` — the server returns reasoning in a structured `reasoning_details` field instead of mixing `<think>` tags into `content`. VS Code sees a clean OpenAI-format message.
656
+
657
+ > **Note:** `thinking: { "type": "disabled" }` is **not** a hard override — Phase 1 testing confirmed MiniMax-M3 still reasons internally regardless of this setting, and emits `<think>` tags in `content` either way. Setting it to `disabled` only changes the response field layout, not actual model behavior. We recommend `adaptive` for clarity.
658
+
659
+ #### 3. Chat!
660
+
661
+ - Open the Copilot chat panel (`Ctrl+Alt+I` / `Cmd+Ctrl+I`).
662
+ - Click the model picker and select **MiniMax M3**.
663
+ - Ask something. Plain chat, streaming, tool use, and vision all work.
664
+
665
+ #### Troubleshooting (MiniMax)
666
+
667
+ | Symptom | Fix |
668
+ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
669
+ | Model not appearing in picker | Check your `chatLanguageModels.json` syntax. Reload the VS Code window. |
670
+ | 400 on tool calls | Confirm the model ID is `MiniMax-M3` (capital M's, lowercase i, hyphen). Check the API key region. |
671
+ | Responses show leaked `<think>` tags | Make sure `"reasoning_split": true` is set in `requestBody` so reasoning goes to `reasoning_details` instead. |
672
+
673
+ </details>
674
+
566
675
  ---
567
676
 
568
677
  For the full research notes, tested values, and known limitations, see:
@@ -570,12 +679,13 @@ For the full research notes, tested values, and known limitations, see:
570
679
  - [`docs/models/kimi-k2.6.md`](docs/models/kimi-k2.6.md)
571
680
  - [`docs/models/qwen.md`](docs/models/qwen.md)
572
681
  - [`docs/models/mimo.md`](docs/models/mimo.md)
682
+ - [`docs/models/minimax.md`](docs/models/minimax.md)
573
683
 
574
684
  ## Pricing comparison
575
685
 
576
686
  > **⏰ June 1, 2026 — GitHub Copilot switched to usage-based billing (AI Credits) today.**
577
687
  >
578
- > Before this change, Copilot was a flat subscriptionno per-turn metering, so you could use chat and agent mode as much as you wanted within rate-limit bounds. Now **every interaction burns AI credits** from your monthly allowance. Agent mode and complex multi-file tasks consume significantly more tokens than simple Q&A, which means your 7,000 Pro+ credits can disappear fast if you're using frontier models.
688
+ > Before this change, Copilot used **premium request-based billing**each model had its own multiplier (e.g., GPT-5.5 = 7.5×, Claude Sonnet 4.6 = 1×, Haiku 4.5 = 0.33×), and every request consumed `multiplier × 1` from your monthly premium-request allowance. Now **every interaction burns AI credits** based on actual token consumption. Agent mode and complex multi-file tasks consume significantly more tokens than simple Q&A, which means your 7,000 Pro+ credits can disappear fast if you're using frontier models.
579
689
  >
580
690
  > **The practical workaround:** use cheaper alternative models (DeepSeek V4 Flash, Kimi K2.6, Qwen) that are still powerful enough for coding — often at **5–55× less cost** than the Copilot defaults. The tables below show the exact comparison.
581
691
  >
@@ -625,6 +735,7 @@ These are the models available through GitHub Copilot's model roster as of June
625
735
  | **MiMo V2.5 Pro** | Xiaomi | $1.00 | $3.00 | 1M |
626
736
  | **Qwen 3.6 Plus** | DashScope | $0.50 (≤256K) / $2.00 (>256K) | $3.00 (≤256K) / $6.00 (>256K) | 1M |
627
737
  | **Qwen 3.7 Max** | DashScope | $2.50 (≤1M) | $7.50 (≤1M) | 1M |
738
+ | **MiniMax M3** | MiniMax | $0.60 (≤512K) / $1.20 (>512K) | $2.40 (≤512K) / $4.80 (>512K) | 1M |
628
739
 
629
740
  > **Notes:**
630
741
  >
@@ -636,6 +747,7 @@ These are the models available through GitHub Copilot's model roster as of June
636
747
  > - **Qwen** models use **tiered pricing** — determined by total input tokens per request. Prices above are for non-thinking mode.
637
748
  > - **Kimi K2.6** pricing is from the **Moonshot platform** (direct). Via DashScope: $0.89 input / $3.71 output.
638
749
  > - **DashScope** offers a **free quota** of 1M input + 1M output tokens per model, valid for 90 days.
750
+ > - **MiniMax M3** uses **tiered pricing** — input price doubles above 512K input tokens. A 7-day 50% off promotion is available for new accounts.
639
751
  > - **MiMo** offers a **Token Plan** subscription model with discounted rates and a free cache-writing promotion.
640
752
  > - For typical Copilot chat usage (short-to-medium prompts), you'll almost always fall in the lowest pricing tier.
641
753
 
@@ -650,6 +762,7 @@ These are the models available through GitHub Copilot's model roster as of June
650
762
  | Kimi K2.6 (thinking) | ~$0.48 | — |
651
763
  | Gemini 3 Flash | ~$0.55 | ~55 |
652
764
  | Qwen 3.6 Plus | ~$0.55 | — |
765
+ | MiniMax M3 | ~$0.54 | — |
653
766
  | MiMo V2.5 Pro | ~$0.80 | — |
654
767
  | GPT-5.4 mini | ~$0.83 | ~83 |
655
768
  | Claude Haiku 4.5 | ~$1.00 | ~100 |
@@ -675,6 +788,7 @@ These are the models available through GitHub Copilot's model roster as of June
675
788
  > - [DashScope pricing](https://www.alibabacloud.com/help/en/model-studio/billing-for-model-studio)
676
789
  > - [DeepSeek pricing](https://api-docs.deepseek.com/quick_start/pricing)
677
790
  > - [MiMo pricing](https://platform.xiaomimimo.com/docs/en-US/pricing)
791
+ > - [MiniMax pricing](https://platform.minimax.io/docs/pricing/overview)
678
792
 
679
793
  ## Repo layout
680
794
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "copilot-custom-endpoint",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Local proxies for VS Code Copilot custom endpoints — Kimi K2 & Qwen 3.x",
5
5
  "license": "MIT",
6
6
  "type": "module",