@qwen-code/qwen-code 0.18.4 → 0.18.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/auth.md +7 -6
- package/bundled/qc-helper/docs/configuration/model-providers.md +16 -2
- package/bundled/qc-helper/docs/configuration/settings.md +26 -26
- package/bundled/qc-helper/docs/features/approval-mode.md +2 -0
- package/bundled/qc-helper/docs/features/mcp.md +49 -0
- package/chunks/{agent-LYTC56HT.js → agent-2TEY55UD.js} +21 -21
- package/chunks/{agent-headless-FPUP5WHP.js → agent-headless-SCUAXEEE.js} +21 -21
- package/chunks/{anthropicContentGenerator-OLOGBVLP.js → anthropicContentGenerator-5S4OMMNL.js} +9 -7
- package/chunks/{askUserQuestion-ANRVSBIJ.js → askUserQuestion-WHVYL2S2.js} +2 -2
- package/chunks/{ca-K6MD665I.js → ca-7WC7ELX6.js} +1 -0
- package/chunks/{chunk-M5VYHAHT.js → chunk-26ZYKTYZ.js} +2 -2
- package/chunks/{chunk-6Z2MVJIJ.js → chunk-2CNO5W47.js} +14 -14
- package/chunks/{chunk-7OCZ77KA.js → chunk-2O3NAOJG.js} +1 -1
- package/chunks/{chunk-HU3RKEK2.js → chunk-42HGOMED.js} +1 -1
- package/chunks/{chunk-WWU2KUSR.js → chunk-AE6RQU6F.js} +1 -1
- package/chunks/{chunk-F6FP3URI.js → chunk-ATLUHLZE.js} +1 -1
- package/chunks/{chunk-4HMWGHPP.js → chunk-C6MI2ASN.js} +2 -2
- package/chunks/{chunk-SZWDOOGV.js → chunk-C7JA3XCX.js} +11 -11
- package/chunks/{chunk-VWPDSQZY.js → chunk-CTHZVIMD.js} +2 -2
- package/chunks/{chunk-IUEQOXOI.js → chunk-CX3SGIPK.js} +2 -2
- package/chunks/{chunk-GBTJHKQ6.js → chunk-F5E6IKYN.js} +7 -7
- package/chunks/{chunk-FPZF3BNV.js → chunk-FH4P6RQA.js} +1 -1
- package/chunks/{chunk-PTGKSUUJ.js → chunk-G4BUMVEY.js} +11 -1
- package/chunks/{chunk-JN6FVOPP.js → chunk-GBN55AWZ.js} +2 -2
- package/chunks/{chunk-JJHY7NAD.js → chunk-GOMVJKBL.js} +1 -1
- package/chunks/{chunk-JIJBNW4A.js → chunk-ID533GA3.js} +1 -1
- package/chunks/{chunk-E5SRTXRG.js → chunk-KGV3F6UF.js} +1 -1
- package/chunks/{chunk-LXUQBWQA.js → chunk-KZGQ3G3Q.js} +62 -11
- package/chunks/{chunk-4TW2JM5Q.js → chunk-LF6BKGZT.js} +3 -3
- package/chunks/{chunk-N5QHMPZU.js → chunk-LTN3VYMZ.js} +1 -1
- package/chunks/{chunk-DZCZZPCY.js → chunk-MSJ2MXJ6.js} +3 -3
- package/chunks/{chunk-5RVEAAD2.js → chunk-SIJKWK35.js} +6 -6
- package/chunks/{chunk-32SSXBMG.js → chunk-VECKCOH6.js} +3202 -2678
- package/chunks/{chunk-AQDPHFDZ.js → chunk-VKILGMZQ.js} +1 -1
- package/chunks/{chunk-IKOWINH4.js → chunk-WE6TNQJU.js} +6 -2
- package/chunks/{chunk-2ES3D3TW.js → chunk-XGU3ETVO.js} +3 -3
- package/chunks/{chunk-7GX7XYZU.js → chunk-XU7BKR3B.js} +3 -3
- package/chunks/{computer-use-P4WQBATW.js → computer-use-OB3C5QG2.js} +23 -22
- package/chunks/{contextCommand-POQ6GYN3.js → contextCommand-3327KUC4.js} +23 -23
- package/chunks/{cron-create-OKGQO6GX.js → cron-create-THNDTYXU.js} +4 -4
- package/chunks/{cron-delete-DTJP7L6O.js → cron-delete-BS5H6TFJ.js} +4 -4
- package/chunks/{cron-list-VKZUASFG.js → cron-list-7OBVHT7K.js} +4 -4
- package/chunks/{de-K2F3T3TR.js → de-ACHALDED.js} +1 -0
- package/chunks/{dist-OLC6NBSB.js → dist-DZ6AJDX4.js} +1 -1
- package/chunks/{dist-QUSDBLAK.js → dist-GKRNVFBH.js} +4 -0
- package/chunks/{edit-CS7DSS4Z.js → edit-GNCLIF67.js} +21 -21
- package/chunks/{en-KGSAKBJP.js → en-S3OQBISC.js} +1 -0
- package/chunks/{enter-worktree-PA4HPHJK.js → enter-worktree-E7BNZOGT.js} +21 -21
- package/chunks/{enterPlanMode-SFE5AFKZ.js → enterPlanMode-IA42A5EU.js} +26 -26
- package/chunks/{exit-worktree-FR3AZTC6.js → exit-worktree-QJ2K74UT.js} +21 -21
- package/chunks/{exitPlanMode-AHOUO44D.js → exitPlanMode-UKKHBUYJ.js} +21 -21
- package/chunks/{fr-2CAQEOK6.js → fr-GVKZ27MF.js} +1 -0
- package/chunks/{geminiContentGenerator-AXCVDKGI.js → geminiContentGenerator-ICSDM37U.js} +4 -4
- package/chunks/{glob-BQPAW3IW.js → glob-IGD7LWYX.js} +21 -21
- package/chunks/{grep-2F7BL5TQ.js → grep-IZM3IVND.js} +21 -21
- package/chunks/{ja-QWL7V6OJ.js → ja-FKZ2WZ4D.js} +1 -0
- package/chunks/{keychain-token-storage-ALKQXYJQ.js → keychain-token-storage-YHXIWXIB.js} +2 -2
- package/chunks/{loop-wakeup-RX6YIUSG.js → loop-wakeup-SSBWZ64K.js} +5 -5
- package/chunks/{ls-6PLNWHMU.js → ls-YPFUHZRQ.js} +3 -3
- package/chunks/{lsp-3HFQU4OF.js → lsp-FD6DNVAF.js} +2 -2
- package/chunks/{monitor-YTTMDFW2.js → monitor-ALJNE3R4.js} +21 -21
- package/chunks/{notebook-edit-7TNZMTBR.js → notebook-edit-7XRZX55T.js} +21 -21
- package/chunks/{openaiContentGenerator-JA6YXXPI.js → openaiContentGenerator-FWKITDFJ.js} +13 -11
- package/chunks/{pt-2SPOLMAY.js → pt-SY5NCFGR.js} +1 -0
- package/chunks/{qwenContentGenerator-NBOVGW7B.js → qwenContentGenerator-5RPGQZ63.js} +24 -24
- package/chunks/{qwenOAuth2-XWC5SU63.js → qwenOAuth2-WZ54YZ4J.js} +4 -4
- package/chunks/{read-file-RUBU3KUA.js → read-file-4WN2DT5N.js} +8 -8
- package/chunks/{ripGrep-TPFC7KZF.js → ripGrep-4ZKT6KBQ.js} +21 -21
- package/chunks/{ru-35IVJTEH.js → ru-FWNXJG4F.js} +1 -0
- package/chunks/{scheduler-NTVF45LR.js → scheduler-O2E65VDK.js} +21 -21
- package/chunks/{send-message-IIT3SHA7.js → send-message-FWFTX62Q.js} +2 -2
- package/chunks/{serve-J6VG37OX.js → serve-3DM6CRGD.js} +6942 -6809
- package/chunks/{shell-EQQEHEFI.js → shell-ARVZK6RF.js} +21 -21
- package/chunks/{skill-QWRWJCQJ.js → skill-BFUBGA4I.js} +10 -10
- package/chunks/{src-LNADIG5P.js → src-5YMCDSII.js} +47 -21
- package/chunks/{syntheticOutput-H67FYXU7.js → syntheticOutput-JY5NEDTV.js} +3 -3
- package/chunks/{task-create-OVXHSHAI.js → task-create-IGILDV25.js} +6 -6
- package/chunks/{task-list-QUUCQJ3U.js → task-list-KBEJVAAG.js} +5 -5
- package/chunks/{task-stop-WA5DMTKK.js → task-stop-WFTMQ6AC.js} +2 -2
- package/chunks/{task-update-PC5427TI.js → task-update-UIVX7ZEV.js} +6 -6
- package/chunks/{team-create-TXWQL777.js → team-create-HRBV5ATK.js} +21 -21
- package/chunks/{team-delete-ZTEMYRJ3.js → team-delete-LPOXDPVB.js} +5 -5
- package/chunks/{todoWrite-J6L6ELD6.js → todoWrite-R4RIJKOD.js} +4 -4
- package/chunks/{tool-search-JAVM7ABF.js → tool-search-67HI54YA.js} +8 -8
- package/chunks/{web-fetch-6XLPPTP7.js → web-fetch-JU7SS6KE.js} +4 -4
- package/chunks/{workflow-7LN3L6KK.js → workflow-W4SCLWLU.js} +22 -22
- package/chunks/{write-file-DAKE7YKB.js → write-file-TLNXC2NR.js} +21 -21
- package/chunks/{zh-X4KM6MTW.js → zh-QXLZV2PX.js} +1 -0
- package/chunks/{zh-TW-BSG6BUWK.js → zh-TW-3OKU7LDA.js} +1 -0
- package/cli.js +956 -636
- package/locales/ca.js +2 -1
- package/locales/de.js +1 -0
- package/locales/en.js +1 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +1 -0
- package/locales/zh.js +1 -0
- package/package.json +2 -2
|
@@ -101,7 +101,7 @@ If you prefer to skip the interactive `/auth` flow, add the following to `~/.qwe
|
|
|
101
101
|
|
|
102
102
|
## 🚀 Option 3: API Key (flexible)
|
|
103
103
|
|
|
104
|
-
Use this if you want to connect to third-party providers such as OpenAI, Anthropic, Google, Azure OpenAI, OpenRouter, ModelScope, or a self-hosted endpoint. Supports multiple protocols and providers.
|
|
104
|
+
Use this if you want to connect to third-party providers such as OpenAI, Anthropic, Google, Azure OpenAI, OpenRouter, Requesty, ModelScope, or a self-hosted endpoint. Supports multiple protocols and providers.
|
|
105
105
|
|
|
106
106
|
### Recommended: One-file setup via `settings.json`
|
|
107
107
|
|
|
@@ -153,11 +153,11 @@ The key concept is **Model Providers** (`modelProviders`): Qwen Code supports mu
|
|
|
153
153
|
|
|
154
154
|
#### Supported protocols
|
|
155
155
|
|
|
156
|
-
| Protocol | `modelProviders` key | Environment variables | Providers
|
|
157
|
-
| ----------------- | -------------------- | ------------------------------------------------------------ |
|
|
158
|
-
| OpenAI-compatible | `openai` | `OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL` | OpenAI, Azure OpenAI, OpenRouter, ModelScope, Alibaba Cloud, any OpenAI-compatible endpoint |
|
|
159
|
-
| Anthropic | `anthropic` | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` | Anthropic Claude
|
|
160
|
-
| Google GenAI | `gemini` | `GEMINI_API_KEY`, `GEMINI_MODEL` | Google Gemini
|
|
156
|
+
| Protocol | `modelProviders` key | Environment variables | Providers |
|
|
157
|
+
| ----------------- | -------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
|
|
158
|
+
| OpenAI-compatible | `openai` | `OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL` | OpenAI, Azure OpenAI, OpenRouter, Requesty, ModelScope, Alibaba Cloud, any OpenAI-compatible endpoint |
|
|
159
|
+
| Anthropic | `anthropic` | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` | Anthropic Claude |
|
|
160
|
+
| Google GenAI | `gemini` | `GEMINI_API_KEY`, `GEMINI_MODEL` | Google Gemini |
|
|
161
161
|
|
|
162
162
|
#### Step 1: Configure models and providers in `~/.qwen/settings.json`
|
|
163
163
|
|
|
@@ -315,6 +315,7 @@ The standalone `qwen auth` CLI command has been removed. Use these replacements
|
|
|
315
315
|
| Interactive authentication setup | Run `qwen`, then use `/auth` |
|
|
316
316
|
| Coding Plan setup | Use `/auth`, or set `BAILIAN_CODING_PLAN_API_KEY` with the Coding Plan base URL |
|
|
317
317
|
| OpenRouter setup | Use `/auth`, or set `OPENROUTER_API_KEY` and `OPENAI_BASE_URL=https://openrouter.ai/api/v1` |
|
|
318
|
+
| Requesty setup | Use `/auth`, or set `REQUESTY_API_KEY` and `OPENAI_BASE_URL=https://router.requesty.ai/v1` |
|
|
318
319
|
| API-key or custom provider setup | Configure `~/.qwen/settings.json`, `.env`, or provider-specific environment variables |
|
|
319
320
|
| Check current authentication | Run `/doctor` inside Qwen Code |
|
|
320
321
|
| OAuth browser flow | Run `qwen` interactively and use `/auth`; OAuth cannot be configured with env vars alone |
|
|
@@ -47,13 +47,14 @@ This means the `baseUrl` you configure should be compatible with the correspondi
|
|
|
47
47
|
|
|
48
48
|
### OpenAI-compatible providers (`openai`)
|
|
49
49
|
|
|
50
|
-
This auth type supports not only OpenAI's official API but also any OpenAI-compatible endpoint, including aggregated model providers like OpenRouter.
|
|
50
|
+
This auth type supports not only OpenAI's official API but also any OpenAI-compatible endpoint, including aggregated model providers like OpenRouter and Requesty.
|
|
51
51
|
|
|
52
52
|
```json
|
|
53
53
|
{
|
|
54
54
|
"env": {
|
|
55
55
|
"OPENAI_API_KEY": "sk-your-actual-openai-key-here",
|
|
56
|
-
"OPENROUTER_API_KEY": "sk-or-your-actual-openrouter-key-here"
|
|
56
|
+
"OPENROUTER_API_KEY": "sk-or-your-actual-openrouter-key-here",
|
|
57
|
+
"REQUESTY_API_KEY": "sk-your-actual-requesty-key-here"
|
|
57
58
|
},
|
|
58
59
|
"modelProviders": {
|
|
59
60
|
"openai": [
|
|
@@ -111,6 +112,19 @@ This auth type supports not only OpenAI's official API but also any OpenAI-compa
|
|
|
111
112
|
"temperature": 0.7
|
|
112
113
|
}
|
|
113
114
|
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "openai/gpt-4o-mini",
|
|
118
|
+
"name": "GPT-4o Mini (via Requesty)",
|
|
119
|
+
"envKey": "REQUESTY_API_KEY",
|
|
120
|
+
"baseUrl": "https://router.requesty.ai/v1",
|
|
121
|
+
"generationConfig": {
|
|
122
|
+
"timeout": 120000,
|
|
123
|
+
"maxRetries": 3,
|
|
124
|
+
"samplingParams": {
|
|
125
|
+
"temperature": 0.7
|
|
126
|
+
}
|
|
127
|
+
}
|
|
114
128
|
}
|
|
115
129
|
]
|
|
116
130
|
}
|
|
@@ -580,32 +580,32 @@ For authentication-related variables (like `OPENAI_*`) and the recommended `.qwe
|
|
|
580
580
|
|
|
581
581
|
### Environment Variables Table
|
|
582
582
|
|
|
583
|
-
| Variable | Description
|
|
584
|
-
| -------------------------------------------------- |
|
|
585
|
-
| `QWEN_HOME` | Customizes the global configuration directory (default: `~/.qwen`). Accepts an absolute or relative path (relative paths are resolved from the current working directory). Leading `~` is expanded to the user's home directory.
|
|
586
|
-
| `QWEN_RUNTIME_DIR` | Overrides the runtime output directory (conversations, logs, todos). When unset, defaults to the `QWEN_HOME` directory.
|
|
587
|
-
| `QWEN_TELEMETRY_ENABLED` | Set to `true` or `1` to enable telemetry. Any other value is treated as disabling it.
|
|
588
|
-
| `QWEN_TELEMETRY_TARGET` | Sets an informational label for the telemetry destination (`local` or `gcp`). Does not control routing; use `QWEN_TELEMETRY_OTLP_ENDPOINT` or `QWEN_TELEMETRY_OUTFILE` to configure where data is sent.
|
|
589
|
-
| `QWEN_TELEMETRY_OTLP_ENDPOINT` | Sets the OTLP endpoint for telemetry.
|
|
590
|
-
| `QWEN_TELEMETRY_OTLP_PROTOCOL` | Sets the OTLP protocol (`grpc` or `http`).
|
|
591
|
-
| `QWEN_TELEMETRY_LOG_PROMPTS` | Set to `true` or `1` to enable or disable logging of user prompts. Any other value is treated as disabling it.
|
|
592
|
-
| `QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES` | Set to `true` or `1` to attach verbatim user prompts, system prompts, tool I/O, and model responses to native OTel span attributes (and keep `prompt` / `function_args` / `response_text` on log-to-span bridge spans). Any other value disables it.
|
|
593
|
-
| `QWEN_TELEMETRY_OUTFILE` | Sets the file path to write telemetry to. When set, overrides OTLP export.
|
|
594
|
-
| `QWEN_SANDBOX` | Alternative to the `sandbox` setting in `settings.json`.
|
|
595
|
-
| `QWEN_SANDBOX_IMAGE` | Overrides sandbox image selection for Docker/Podman.
|
|
596
|
-
| `SEATBELT_PROFILE` | (macOS specific) Switches the Seatbelt (`sandbox-exec`) profile on macOS.
|
|
597
|
-
| `DEBUG` or `DEBUG_MODE` | (often used by underlying libraries or the CLI itself) Set to `true` or `1` to enable verbose debug logging, which can be helpful for troubleshooting.
|
|
598
|
-
| `NO_COLOR` | Set to any value to disable all color output in the CLI.
|
|
599
|
-
| `FORCE_HYPERLINK` | Override the OSC 8 clickable-link detection in the markdown renderer. Set to `1` (or any non-zero
|
|
600
|
-
| `QWEN_DISABLE_HYPERLINKS` | Set to `1` to hard-disable OSC 8 clickable hyperlinks in the markdown renderer even on terminals that auto-detect as capable.
|
|
601
|
-
| `CLI_TITLE` | Set to a string to customize the title of the CLI.
|
|
602
|
-
| `CODE_ASSIST_ENDPOINT` | Specifies the endpoint for the code assist server.
|
|
603
|
-
| `QWEN_CODE_MAX_OUTPUT_TOKENS` | Overrides the default maximum output tokens per response. When not set, Qwen Code uses an adaptive strategy: starts with 8K tokens and automatically retries with 64K if the response is truncated. Set this to a specific value (e.g., `16000`) to use a fixed limit instead.
|
|
604
|
-
| `QWEN_CODE_UNATTENDED_RETRY` | Set to `true` or `1` to enable persistent retry mode. When enabled, transient API capacity errors (HTTP 429 Rate Limit and 529 Overloaded) are retried indefinitely with exponential backoff (capped at 5 minutes per retry) and heartbeat keepalives every 30 seconds on stderr.
|
|
605
|
-
| `QWEN_CODE_PROFILE_STARTUP` | Set to `1` to enable startup performance profiling. Writes a JSON timing report to `~/.qwen/startup-perf/` with per-phase durations.
|
|
606
|
-
| `QWEN_CODE_PROFILE_STARTUP_OUTER` | Set to `1` together with `QWEN_CODE_PROFILE_STARTUP=1` to also collect a startup profile in the outer (pre-sandbox) process. Outer-process reports get an `outer-` filename prefix to keep them distinct from the sandbox child's report.
|
|
607
|
-
| `QWEN_CODE_PROFILE_STARTUP_NO_HEAP` | Set to `1` together with `QWEN_CODE_PROFILE_STARTUP=1` to skip the per-checkpoint `process.memoryUsage()` snapshots. Useful when measuring the profiler's own Heisenberg overhead.
|
|
608
|
-
| `QWEN_CODE_LEGACY_MCP_BLOCKING` | Set to `1` to restore the pre-progressive-MCP behavior where `Config.initialize()` waits synchronously for every configured MCP server's discover handshake before returning.
|
|
583
|
+
| Variable | Description | Notes |
|
|
584
|
+
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
585
|
+
| `QWEN_HOME` | Customizes the global configuration directory (default: `~/.qwen`). Accepts an absolute or relative path (relative paths are resolved from the current working directory). Leading `~` is expanded to the user's home directory. | Stores credentials, settings, memory, skills, and other global state. When set, project-level `.qwen/` directories are unaffected. An empty string is treated as unset. |
|
|
586
|
+
| `QWEN_RUNTIME_DIR` | Overrides the runtime output directory (conversations, logs, todos). When unset, defaults to the `QWEN_HOME` directory. | Use this to separate ephemeral runtime data from persistent config. Useful when `QWEN_HOME` is on a shared/slow filesystem. |
|
|
587
|
+
| `QWEN_TELEMETRY_ENABLED` | Set to `true` or `1` to enable telemetry. Any other value is treated as disabling it. | Overrides the `telemetry.enabled` setting. |
|
|
588
|
+
| `QWEN_TELEMETRY_TARGET` | Sets an informational label for the telemetry destination (`local` or `gcp`). Does not control routing; use `QWEN_TELEMETRY_OTLP_ENDPOINT` or `QWEN_TELEMETRY_OUTFILE` to configure where data is sent. | Overrides the `telemetry.target` setting. |
|
|
589
|
+
| `QWEN_TELEMETRY_OTLP_ENDPOINT` | Sets the OTLP endpoint for telemetry. | Overrides the `telemetry.otlpEndpoint` setting. |
|
|
590
|
+
| `QWEN_TELEMETRY_OTLP_PROTOCOL` | Sets the OTLP protocol (`grpc` or `http`). | Overrides the `telemetry.otlpProtocol` setting. |
|
|
591
|
+
| `QWEN_TELEMETRY_LOG_PROMPTS` | Set to `true` or `1` to enable or disable logging of user prompts. Any other value is treated as disabling it. | Overrides the `telemetry.logPrompts` setting. |
|
|
592
|
+
| `QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES` | Set to `true` or `1` to attach verbatim user prompts, system prompts, tool I/O, and model responses to native OTel span attributes (and keep `prompt` / `function_args` / `response_text` on log-to-span bridge spans). Any other value disables it. | Overrides the `telemetry.includeSensitiveSpanAttributes` setting. ⚠️ Streams sensitive data to your OTLP backend. |
|
|
593
|
+
| `QWEN_TELEMETRY_OUTFILE` | Sets the file path to write telemetry to. When set, overrides OTLP export. | Overrides the `telemetry.outfile` setting. |
|
|
594
|
+
| `QWEN_SANDBOX` | Alternative to the `sandbox` setting in `settings.json`. | Accepts `true`, `false`, `docker`, `podman`, or a custom command string. |
|
|
595
|
+
| `QWEN_SANDBOX_IMAGE` | Overrides sandbox image selection for Docker/Podman. | Takes precedence over `tools.sandboxImage`. |
|
|
596
|
+
| `SEATBELT_PROFILE` | (macOS specific) Switches the Seatbelt (`sandbox-exec`) profile on macOS. | `permissive-open`: (Default) Restricts writes to the project folder (and a few other folders, see `packages/cli/src/utils/sandbox-macos-permissive-open.sb`) but allows other operations. `strict`: Uses a strict profile that declines operations by default. `<profile_name>`: Uses a custom profile. To define a custom profile, create a file named `sandbox-macos-<profile_name>.sb` in your project's `.qwen/` directory (e.g., `my-project/.qwen/sandbox-macos-custom.sb`). |
|
|
597
|
+
| `DEBUG` or `DEBUG_MODE` | (often used by underlying libraries or the CLI itself) Set to `true` or `1` to enable verbose debug logging, which can be helpful for troubleshooting. | **Note:** These variables are automatically excluded from project `.env` files by default to prevent interference with the CLI behavior. Use `.qwen/.env` files if you need to set these for Qwen Code specifically. |
|
|
598
|
+
| `NO_COLOR` | Set to any value to disable all color output in the CLI. | |
|
|
599
|
+
| `FORCE_HYPERLINK` | Override the OSC 8 clickable-link detection in the markdown renderer. Set to `1` (or any non-zero integer, or empty string) to force-enable; set to `0` or a non-numeric value such as `false` / `off` to force-disable. Honors `NO_COLOR` / `QWEN_DISABLE_HYPERLINKS` opt-outs above it. | Use this to opt into OSC 8 inside `tmux` / GNU `screen` (auto-detection refuses by default because the host terminal's capabilities are hidden behind the multiplexer). Requires `set -g allow-passthrough on` on tmux 3.3+. Also enables Hyper, which isn't auto-detected. |
|
|
600
|
+
| `QWEN_DISABLE_HYPERLINKS` | Set to `1` to hard-disable OSC 8 clickable hyperlinks in the markdown renderer even on terminals that auto-detect as capable. | Useful when a terminal advertises support but breaks on long URLs, or when piping output through an intermediary that mangles escape sequences. The renderer falls back to plain `label (url)` rendering. |
|
|
601
|
+
| `CLI_TITLE` | Set to a string to customize the title of the CLI. | |
|
|
602
|
+
| `CODE_ASSIST_ENDPOINT` | Specifies the endpoint for the code assist server. | This is useful for development and testing. |
|
|
603
|
+
| `QWEN_CODE_MAX_OUTPUT_TOKENS` | Overrides the default maximum output tokens per response. When not set, Qwen Code uses an adaptive strategy: starts with 8K tokens and automatically retries with 64K if the response is truncated. Set this to a specific value (e.g., `16000`) to use a fixed limit instead. | Takes precedence over the capped default (8K) but is overridden by `samplingParams.max_tokens` in settings. Disables automatic escalation when set. Example: `export QWEN_CODE_MAX_OUTPUT_TOKENS=16000` |
|
|
604
|
+
| `QWEN_CODE_UNATTENDED_RETRY` | Set to `true` or `1` to enable persistent retry mode. When enabled, transient API capacity errors (HTTP 429 Rate Limit and 529 Overloaded) are retried indefinitely with exponential backoff (capped at 5 minutes per retry) and heartbeat keepalives every 30 seconds on stderr. | Designed for CI/CD pipelines and background automation where long-running tasks should survive temporary API outages. Must be set explicitly — `CI=true` alone does **not** activate this mode. See [Headless Mode](../features/headless#persistent-retry-mode) for details. Example: `export QWEN_CODE_UNATTENDED_RETRY=1` |
|
|
605
|
+
| `QWEN_CODE_PROFILE_STARTUP` | Set to `1` to enable startup performance profiling. Writes a JSON timing report to `~/.qwen/startup-perf/` with per-phase durations. | Only active inside the sandbox child process (or with `QWEN_CODE_PROFILE_STARTUP_OUTER=1`). Zero overhead when not set. Example: `export QWEN_CODE_PROFILE_STARTUP=1` |
|
|
606
|
+
| `QWEN_CODE_PROFILE_STARTUP_OUTER` | Set to `1` together with `QWEN_CODE_PROFILE_STARTUP=1` to also collect a startup profile in the outer (pre-sandbox) process. Outer-process reports get an `outer-` filename prefix to keep them distinct from the sandbox child's report. | Off by default — only the sandbox child collects, to avoid duplicate reports. Useful for local development where the cli isn't relaunched into a sandbox. |
|
|
607
|
+
| `QWEN_CODE_PROFILE_STARTUP_NO_HEAP` | Set to `1` together with `QWEN_CODE_PROFILE_STARTUP=1` to skip the per-checkpoint `process.memoryUsage()` snapshots. Useful when measuring the profiler's own Heisenberg overhead. | Off by default. Heap snapshots cost ~50 µs each (well below 1% of total startup) so most users should leave this alone. |
|
|
608
|
+
| `QWEN_CODE_LEGACY_MCP_BLOCKING` | Set to `1` to restore the pre-progressive-MCP behavior where `Config.initialize()` waits synchronously for every configured MCP server's discover handshake before returning. | Off by default. Modern qwen-code lets MCP servers come online in the background while the UI is already interactive; the model sees each batch of new tools within ~16 ms of the server settling. This flag is kept as a rollback escape hatch for ≥ 1 release. Example: `export QWEN_CODE_LEGACY_MCP_BLOCKING=1` |
|
|
609
609
|
|
|
610
610
|
When both user-level `.env` files define the same variable, the Qwen-specific
|
|
611
611
|
file wins: `<QWEN_HOME>/.env` (or `~/.qwen/.env` when `QWEN_HOME` is unset) is
|
|
@@ -52,6 +52,8 @@ If you are in Normal Mode, **Shift+Tab** (or **Tab** on Windows) first switches
|
|
|
52
52
|
|
|
53
53
|
The `/plan` command provides a quick shortcut for entering and exiting Plan Mode:
|
|
54
54
|
|
|
55
|
+
Regular planning requests do not switch modes by themselves. If you want the read-only Plan Mode workflow, use `/plan`, the keyboard shortcut, or set the approval mode to `plan` explicitly.
|
|
56
|
+
|
|
55
57
|
```bash
|
|
56
58
|
/plan # Enter plan mode
|
|
57
59
|
/plan refactor the auth module # Enter plan mode and start planning
|
|
@@ -147,6 +147,55 @@ CLI:
|
|
|
147
147
|
qwen mcp add --transport sse sseServer http://localhost:8080/sse --timeout 30000
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
+
## Using MCP prompts and resources
|
|
151
|
+
|
|
152
|
+
Besides tools, Qwen Code discovers and surfaces two other MCP primitives.
|
|
153
|
+
|
|
154
|
+
### Prompts (slash commands)
|
|
155
|
+
|
|
156
|
+
Any prompt a server advertises via `prompts/list` becomes an executable
|
|
157
|
+
**slash command**. After discovery, type `/` and you'll see the prompt
|
|
158
|
+
listed (labeled `MCP: <server>`); run it like any other command:
|
|
159
|
+
|
|
160
|
+
```text
|
|
161
|
+
/my_prompt --arg1="value" --arg2="value"
|
|
162
|
+
# positional form also works:
|
|
163
|
+
/my_prompt "value" "value"
|
|
164
|
+
# show the prompt's arguments:
|
|
165
|
+
/my_prompt help
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The prompt's messages are sent to the model, which then acts on them.
|
|
169
|
+
|
|
170
|
+
> Discovery is lenient about the declared `prompts` capability: some
|
|
171
|
+
> servers implement `prompts/list` but omit `prompts` from their
|
|
172
|
+
> `initialize` capabilities. Qwen Code attempts `prompts/list` anyway, so
|
|
173
|
+
> those prompts still appear. A server that genuinely has no prompts simply
|
|
174
|
+
> answers `Method not found`, which is ignored.
|
|
175
|
+
|
|
176
|
+
### Resources
|
|
177
|
+
|
|
178
|
+
Resources a server advertises via `resources/list` are discovered per
|
|
179
|
+
server. Open the management dialog with `/mcp` and select a server to see
|
|
180
|
+
its **Resources** count alongside its tools and prompts. As with prompts,
|
|
181
|
+
the `resources` capability is not required to be declared.
|
|
182
|
+
|
|
183
|
+
Inject a resource's contents into your message with the `@server:uri`
|
|
184
|
+
syntax — type `@`, then the server name, a colon, and the resource URI:
|
|
185
|
+
|
|
186
|
+
```text
|
|
187
|
+
summarize @myserver:file:///docs/spec.md and list the open questions
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Typing `@myserver:` shows an autocomplete list of that server's resource
|
|
191
|
+
URIs. On submit, the referenced resource is read and its contents are
|
|
192
|
+
appended to your message (text inline, binary blobs as attachments); the
|
|
193
|
+
`@server:uri` reference is preserved in the prompt so the model knows what
|
|
194
|
+
it is looking at. The `server` prefix must match a configured MCP server —
|
|
195
|
+
otherwise the token is treated as a normal file path, so existing
|
|
196
|
+
`@path/to/file` references are unaffected. Resource reads are disabled in
|
|
197
|
+
untrusted folders.
|
|
198
|
+
|
|
150
199
|
## Progressive availability and discovery timeouts
|
|
151
200
|
|
|
152
201
|
Qwen Code discovers MCP servers in the background after the UI is already
|
|
@@ -7,41 +7,41 @@ import {
|
|
|
7
7
|
hasRebuiltToolRegistry,
|
|
8
8
|
rebuildToolRegistryOnOverride,
|
|
9
9
|
resolveSubagentApprovalMode
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VECKCOH6.js";
|
|
11
11
|
import "./chunk-K5PGHDBN.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-XU7BKR3B.js";
|
|
13
|
+
import "./chunk-2O3NAOJG.js";
|
|
14
|
+
import "./chunk-XGU3ETVO.js";
|
|
15
15
|
import "./chunk-2MPVVENX.js";
|
|
16
16
|
import "./chunk-ZTQ26VBE.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-C6MI2ASN.js";
|
|
18
|
+
import "./chunk-LF6BKGZT.js";
|
|
19
|
+
import "./chunk-26ZYKTYZ.js";
|
|
20
20
|
import "./chunk-MLZQVCF3.js";
|
|
21
21
|
import "./chunk-LD2XBG6Z.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-ID533GA3.js";
|
|
23
|
+
import "./chunk-KGV3F6UF.js";
|
|
24
24
|
import "./chunk-77WXWU44.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-AE6RQU6F.js";
|
|
26
|
+
import "./chunk-2CNO5W47.js";
|
|
27
27
|
import "./chunk-3PJXIDKI.js";
|
|
28
28
|
import "./chunk-UWCTAVOD.js";
|
|
29
29
|
import "./chunk-OFEVLU4C.js";
|
|
30
30
|
import "./chunk-OMX7CUOE.js";
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-FH4P6RQA.js";
|
|
32
|
+
import "./chunk-CTHZVIMD.js";
|
|
33
|
+
import "./chunk-VKILGMZQ.js";
|
|
34
|
+
import "./chunk-GOMVJKBL.js";
|
|
35
|
+
import "./chunk-MSJ2MXJ6.js";
|
|
36
|
+
import "./chunk-ATLUHLZE.js";
|
|
37
37
|
import "./chunk-64WXLC72.js";
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-LTN3VYMZ.js";
|
|
39
|
+
import "./chunk-42HGOMED.js";
|
|
40
|
+
import "./chunk-G4BUMVEY.js";
|
|
41
41
|
import "./chunk-55ZMG67I.js";
|
|
42
42
|
import "./chunk-H6BD2ELD.js";
|
|
43
43
|
import "./chunk-5IFG2VC4.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-WE6TNQJU.js";
|
|
45
45
|
import "./chunk-ZERZSAZL.js";
|
|
46
46
|
import "./chunk-QN5NZ3UQ.js";
|
|
47
47
|
import "./chunk-BR4QREVK.js";
|
|
@@ -4,41 +4,41 @@ import {
|
|
|
4
4
|
AgentHeadless,
|
|
5
5
|
ContextState,
|
|
6
6
|
templateString
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VECKCOH6.js";
|
|
8
8
|
import "./chunk-K5PGHDBN.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-XU7BKR3B.js";
|
|
10
|
+
import "./chunk-2O3NAOJG.js";
|
|
11
|
+
import "./chunk-XGU3ETVO.js";
|
|
12
12
|
import "./chunk-2MPVVENX.js";
|
|
13
13
|
import "./chunk-ZTQ26VBE.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-C6MI2ASN.js";
|
|
15
|
+
import "./chunk-LF6BKGZT.js";
|
|
16
|
+
import "./chunk-26ZYKTYZ.js";
|
|
17
17
|
import "./chunk-MLZQVCF3.js";
|
|
18
18
|
import "./chunk-LD2XBG6Z.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-ID533GA3.js";
|
|
20
|
+
import "./chunk-KGV3F6UF.js";
|
|
21
21
|
import "./chunk-77WXWU44.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-AE6RQU6F.js";
|
|
23
|
+
import "./chunk-2CNO5W47.js";
|
|
24
24
|
import "./chunk-3PJXIDKI.js";
|
|
25
25
|
import "./chunk-UWCTAVOD.js";
|
|
26
26
|
import "./chunk-OFEVLU4C.js";
|
|
27
27
|
import "./chunk-OMX7CUOE.js";
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-FH4P6RQA.js";
|
|
29
|
+
import "./chunk-CTHZVIMD.js";
|
|
30
|
+
import "./chunk-VKILGMZQ.js";
|
|
31
|
+
import "./chunk-GOMVJKBL.js";
|
|
32
|
+
import "./chunk-MSJ2MXJ6.js";
|
|
33
|
+
import "./chunk-ATLUHLZE.js";
|
|
34
34
|
import "./chunk-64WXLC72.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-LTN3VYMZ.js";
|
|
36
|
+
import "./chunk-42HGOMED.js";
|
|
37
|
+
import "./chunk-G4BUMVEY.js";
|
|
38
38
|
import "./chunk-55ZMG67I.js";
|
|
39
39
|
import "./chunk-H6BD2ELD.js";
|
|
40
40
|
import "./chunk-5IFG2VC4.js";
|
|
41
|
-
import "./chunk-
|
|
41
|
+
import "./chunk-WE6TNQJU.js";
|
|
42
42
|
import "./chunk-ZERZSAZL.js";
|
|
43
43
|
import "./chunk-QN5NZ3UQ.js";
|
|
44
44
|
import "./chunk-BR4QREVK.js";
|
package/chunks/{anthropicContentGenerator-OLOGBVLP.js → anthropicContentGenerator-5S4OMMNL.js}
RENAMED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-KQIKOTQJ.js";
|
|
7
7
|
import {
|
|
8
8
|
RequestTokenizer
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CX3SGIPK.js";
|
|
10
10
|
import {
|
|
11
11
|
Blob,
|
|
12
12
|
File,
|
|
@@ -16,16 +16,17 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
buildRuntimeFetchOptions,
|
|
18
18
|
redactProxyError
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-42HGOMED.js";
|
|
20
20
|
import {
|
|
21
21
|
CAPPED_DEFAULT_MAX_TOKENS,
|
|
22
22
|
DEFAULT_TIMEOUT,
|
|
23
23
|
convertSchema,
|
|
24
24
|
hasExplicitOutputLimit,
|
|
25
|
+
parsePositiveIntegerEnvValue,
|
|
25
26
|
runtimeDiagnostics,
|
|
26
27
|
safeJsonParse,
|
|
27
28
|
tokenLimit
|
|
28
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-G4BUMVEY.js";
|
|
29
30
|
import {
|
|
30
31
|
FinishReason,
|
|
31
32
|
GenerateContentResponse
|
|
@@ -34,7 +35,7 @@ import "./chunk-H6BD2ELD.js";
|
|
|
34
35
|
import "./chunk-5IFG2VC4.js";
|
|
35
36
|
import {
|
|
36
37
|
createDebugLogger
|
|
37
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-WE6TNQJU.js";
|
|
38
39
|
import {
|
|
39
40
|
require_ms
|
|
40
41
|
} from "./chunk-BR4QREVK.js";
|
|
@@ -5045,9 +5046,10 @@ var AnthropicContentGenerator = class {
|
|
|
5045
5046
|
if (userMaxTokens !== void 0 && userMaxTokens !== null) {
|
|
5046
5047
|
maxTokens = isKnownModel ? Math.min(userMaxTokens, modelLimit) : userMaxTokens;
|
|
5047
5048
|
} else {
|
|
5048
|
-
const
|
|
5049
|
-
|
|
5050
|
-
|
|
5049
|
+
const envMaxTokens = parsePositiveIntegerEnvValue(
|
|
5050
|
+
process.env["QWEN_CODE_MAX_OUTPUT_TOKENS"]
|
|
5051
|
+
);
|
|
5052
|
+
if (envMaxTokens !== void 0) {
|
|
5051
5053
|
maxTokens = isKnownModel ? Math.min(envMaxTokens, modelLimit) : envMaxTokens;
|
|
5052
5054
|
} else {
|
|
5053
5055
|
maxTokens = Math.min(modelLimit, CAPPED_DEFAULT_MAX_TOKENS);
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
BaseToolInvocation,
|
|
10
10
|
ToolDisplayNames,
|
|
11
11
|
ToolNames
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GOMVJKBL.js";
|
|
13
13
|
import {
|
|
14
14
|
createDebugLogger
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WE6TNQJU.js";
|
|
16
16
|
import "./chunk-Z2Z3GUXZ.js";
|
|
17
17
|
import {
|
|
18
18
|
init_esbuild_shims
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
} from "./chunk-LD2XBG6Z.js";
|
|
11
11
|
import {
|
|
12
12
|
atomicWriteJSON
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-LTN3VYMZ.js";
|
|
14
14
|
import {
|
|
15
15
|
Storage,
|
|
16
16
|
isNodeError
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-WE6TNQJU.js";
|
|
18
18
|
import {
|
|
19
19
|
init_esbuild_shims
|
|
20
20
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -23,23 +23,23 @@ import {
|
|
|
23
23
|
} from "./chunk-OMX7CUOE.js";
|
|
24
24
|
import {
|
|
25
25
|
isAnyAutoMemPath
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-FH4P6RQA.js";
|
|
27
27
|
import {
|
|
28
28
|
InstallationManager
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-CTHZVIMD.js";
|
|
30
30
|
import {
|
|
31
31
|
STRUCTURED_OUTPUT_REDACTED_ARGS
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-VKILGMZQ.js";
|
|
33
33
|
import {
|
|
34
34
|
BaseDeclarativeTool,
|
|
35
35
|
BaseToolInvocation,
|
|
36
36
|
ToolDisplayNames,
|
|
37
37
|
ToolNames
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-GOMVJKBL.js";
|
|
39
39
|
import {
|
|
40
40
|
atomicWriteFile,
|
|
41
41
|
atomicWriteFileSync
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-LTN3VYMZ.js";
|
|
43
43
|
import {
|
|
44
44
|
DEFAULT_OPENAI_BASE_URL,
|
|
45
45
|
convertSchema,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
runtimeDiagnostics,
|
|
48
48
|
safeJsonParse,
|
|
49
49
|
tokenLimit
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-G4BUMVEY.js";
|
|
51
51
|
import {
|
|
52
52
|
FinishReason,
|
|
53
53
|
GenerateContentResponse
|
|
@@ -70,7 +70,7 @@ import {
|
|
|
70
70
|
setShellTracePropagation,
|
|
71
71
|
shortenPath,
|
|
72
72
|
unescapePath
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-WE6TNQJU.js";
|
|
74
74
|
import {
|
|
75
75
|
require_dist
|
|
76
76
|
} from "./chunk-ZERZSAZL.js";
|
|
@@ -70725,7 +70725,7 @@ var MODALITY_PATTERNS = [
|
|
|
70725
70725
|
// -------------------
|
|
70726
70726
|
// Moonshot / Kimi
|
|
70727
70727
|
// -------------------
|
|
70728
|
-
[/^kimi-k2
|
|
70728
|
+
[/^kimi-k2\./, { image: true, video: true }],
|
|
70729
70729
|
[/^kimi-/, {}],
|
|
70730
70730
|
// -------------------
|
|
70731
70731
|
// ByteDance Doubao — Seed-series and *-vision / *-vl models accept image
|
|
@@ -72100,11 +72100,11 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
|
|
|
72100
72100
|
let baseGenerator;
|
|
72101
72101
|
try {
|
|
72102
72102
|
if (authType === "openai" /* USE_OPENAI */) {
|
|
72103
|
-
const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-
|
|
72103
|
+
const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-FWKITDFJ.js");
|
|
72104
72104
|
baseGenerator = createOpenAIContentGenerator(generatorConfig, config);
|
|
72105
72105
|
} else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
|
|
72106
|
-
const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-
|
|
72107
|
-
const { QwenContentGenerator } = await import("./qwenContentGenerator-
|
|
72106
|
+
const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-WZ54YZ4J.js");
|
|
72107
|
+
const { QwenContentGenerator } = await import("./qwenContentGenerator-5RPGQZ63.js");
|
|
72108
72108
|
try {
|
|
72109
72109
|
const qwenClient = await getQwenOauthClient(
|
|
72110
72110
|
config,
|
|
@@ -72122,10 +72122,10 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
|
|
|
72122
72122
|
throw new Error(error instanceof Error ? error.message : String(error));
|
|
72123
72123
|
}
|
|
72124
72124
|
} else if (authType === "anthropic" /* USE_ANTHROPIC */) {
|
|
72125
|
-
const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-
|
|
72125
|
+
const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-5S4OMMNL.js");
|
|
72126
72126
|
baseGenerator = createAnthropicContentGenerator(generatorConfig, config);
|
|
72127
72127
|
} else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
|
|
72128
|
-
const { createGeminiContentGenerator } = await import("./geminiContentGenerator-
|
|
72128
|
+
const { createGeminiContentGenerator } = await import("./geminiContentGenerator-ICSDM37U.js");
|
|
72129
72129
|
baseGenerator = createGeminiContentGenerator(generatorConfig, config);
|
|
72130
72130
|
} else {
|
|
72131
72131
|
throw new Error(
|
|
@@ -72933,7 +72933,7 @@ var QwenLogger = class _QwenLogger {
|
|
|
72933
72933
|
getProxyAgent() {
|
|
72934
72934
|
const proxyUrl = this.config?.getProxy();
|
|
72935
72935
|
if (!proxyUrl) return void 0;
|
|
72936
|
-
if (
|
|
72936
|
+
if (/^https?:\/\//i.test(proxyUrl)) {
|
|
72937
72937
|
return new import_https_proxy_agent.HttpsProxyAgent(proxyUrl);
|
|
72938
72938
|
} else {
|
|
72939
72939
|
throw new Error("Unsupported proxy type");
|