@qwen-code/qwen-code 0.18.4-preview.0 → 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.
Files changed (100) hide show
  1. package/bundled/qc-helper/docs/configuration/auth.md +7 -6
  2. package/bundled/qc-helper/docs/configuration/model-providers.md +16 -2
  3. package/bundled/qc-helper/docs/configuration/settings.md +26 -26
  4. package/bundled/qc-helper/docs/features/approval-mode.md +2 -0
  5. package/bundled/qc-helper/docs/features/mcp.md +49 -0
  6. package/chunks/{agent-PPGQVSZN.js → agent-2TEY55UD.js} +21 -21
  7. package/chunks/{agent-headless-5SGQIWGS.js → agent-headless-SCUAXEEE.js} +21 -21
  8. package/chunks/{anthropicContentGenerator-OLOGBVLP.js → anthropicContentGenerator-5S4OMMNL.js} +9 -7
  9. package/chunks/{askUserQuestion-ANRVSBIJ.js → askUserQuestion-WHVYL2S2.js} +2 -2
  10. package/chunks/{ca-K6MD665I.js → ca-7WC7ELX6.js} +1 -0
  11. package/chunks/{chunk-M5VYHAHT.js → chunk-26ZYKTYZ.js} +2 -2
  12. package/chunks/{chunk-JP3LQIMW.js → chunk-2CNO5W47.js} +14 -14
  13. package/chunks/{chunk-7OCZ77KA.js → chunk-2O3NAOJG.js} +1 -1
  14. package/chunks/{chunk-HU3RKEK2.js → chunk-42HGOMED.js} +1 -1
  15. package/chunks/{chunk-WWU2KUSR.js → chunk-AE6RQU6F.js} +1 -1
  16. package/chunks/{chunk-F6FP3URI.js → chunk-ATLUHLZE.js} +1 -1
  17. package/chunks/{chunk-4HMWGHPP.js → chunk-C6MI2ASN.js} +2 -2
  18. package/chunks/{chunk-VNMHFAZ3.js → chunk-C7JA3XCX.js} +11 -11
  19. package/chunks/{chunk-VWPDSQZY.js → chunk-CTHZVIMD.js} +2 -2
  20. package/chunks/{chunk-IUEQOXOI.js → chunk-CX3SGIPK.js} +2 -2
  21. package/chunks/{chunk-A6OKBLUA.js → chunk-F5E6IKYN.js} +7 -7
  22. package/chunks/{chunk-FPZF3BNV.js → chunk-FH4P6RQA.js} +1 -1
  23. package/chunks/{chunk-PTGKSUUJ.js → chunk-G4BUMVEY.js} +11 -1
  24. package/chunks/{chunk-JN6FVOPP.js → chunk-GBN55AWZ.js} +2 -2
  25. package/chunks/{chunk-JJHY7NAD.js → chunk-GOMVJKBL.js} +1 -1
  26. package/chunks/{chunk-JIJBNW4A.js → chunk-ID533GA3.js} +1 -1
  27. package/chunks/{chunk-E5SRTXRG.js → chunk-KGV3F6UF.js} +1 -1
  28. package/chunks/{chunk-IS4QOHTV.js → chunk-KZGQ3G3Q.js} +62 -11
  29. package/chunks/{chunk-4TW2JM5Q.js → chunk-LF6BKGZT.js} +3 -3
  30. package/chunks/{chunk-N5QHMPZU.js → chunk-LTN3VYMZ.js} +1 -1
  31. package/chunks/{chunk-DZCZZPCY.js → chunk-MSJ2MXJ6.js} +3 -3
  32. package/chunks/{chunk-BR6DF3Y4.js → chunk-SIJKWK35.js} +6 -6
  33. package/chunks/{chunk-MP436DDQ.js → chunk-VECKCOH6.js} +3202 -2678
  34. package/chunks/{chunk-AQDPHFDZ.js → chunk-VKILGMZQ.js} +1 -1
  35. package/chunks/{chunk-IKOWINH4.js → chunk-WE6TNQJU.js} +6 -2
  36. package/chunks/{chunk-2ES3D3TW.js → chunk-XGU3ETVO.js} +3 -3
  37. package/chunks/{chunk-7GX7XYZU.js → chunk-XU7BKR3B.js} +3 -3
  38. package/chunks/{computer-use-LPHSGISW.js → computer-use-OB3C5QG2.js} +23 -22
  39. package/chunks/{contextCommand-SQPW6JX7.js → contextCommand-3327KUC4.js} +23 -23
  40. package/chunks/{cron-create-OKGQO6GX.js → cron-create-THNDTYXU.js} +4 -4
  41. package/chunks/{cron-delete-DTJP7L6O.js → cron-delete-BS5H6TFJ.js} +4 -4
  42. package/chunks/{cron-list-VKZUASFG.js → cron-list-7OBVHT7K.js} +4 -4
  43. package/chunks/{de-K2F3T3TR.js → de-ACHALDED.js} +1 -0
  44. package/chunks/{dist-OLC6NBSB.js → dist-DZ6AJDX4.js} +1 -1
  45. package/chunks/{dist-QUSDBLAK.js → dist-GKRNVFBH.js} +4 -0
  46. package/chunks/{edit-OPGWEYXB.js → edit-GNCLIF67.js} +21 -21
  47. package/chunks/{en-KGSAKBJP.js → en-S3OQBISC.js} +1 -0
  48. package/chunks/{enter-worktree-JLFLU22E.js → enter-worktree-E7BNZOGT.js} +21 -21
  49. package/chunks/{enterPlanMode-JFBUNYML.js → enterPlanMode-IA42A5EU.js} +26 -26
  50. package/chunks/{exit-worktree-NU64ZZRI.js → exit-worktree-QJ2K74UT.js} +21 -21
  51. package/chunks/{exitPlanMode-UR6YQE64.js → exitPlanMode-UKKHBUYJ.js} +21 -21
  52. package/chunks/{fr-2CAQEOK6.js → fr-GVKZ27MF.js} +1 -0
  53. package/chunks/{geminiContentGenerator-KUVZXCGX.js → geminiContentGenerator-ICSDM37U.js} +4 -4
  54. package/chunks/{glob-RNX6IBFD.js → glob-IGD7LWYX.js} +21 -21
  55. package/chunks/{grep-5GUNAZFX.js → grep-IZM3IVND.js} +21 -21
  56. package/chunks/{ja-QWL7V6OJ.js → ja-FKZ2WZ4D.js} +1 -0
  57. package/chunks/{keychain-token-storage-ALKQXYJQ.js → keychain-token-storage-YHXIWXIB.js} +2 -2
  58. package/chunks/{loop-wakeup-RX6YIUSG.js → loop-wakeup-SSBWZ64K.js} +5 -5
  59. package/chunks/{ls-6PLNWHMU.js → ls-YPFUHZRQ.js} +3 -3
  60. package/chunks/{lsp-3HFQU4OF.js → lsp-FD6DNVAF.js} +2 -2
  61. package/chunks/{monitor-LYHRV6SR.js → monitor-ALJNE3R4.js} +21 -21
  62. package/chunks/{notebook-edit-B5FEP65B.js → notebook-edit-7XRZX55T.js} +21 -21
  63. package/chunks/{openaiContentGenerator-XYMMXZFG.js → openaiContentGenerator-FWKITDFJ.js} +13 -11
  64. package/chunks/{pt-2SPOLMAY.js → pt-SY5NCFGR.js} +1 -0
  65. package/chunks/{qwenContentGenerator-QWPW3P7K.js → qwenContentGenerator-5RPGQZ63.js} +24 -24
  66. package/chunks/{qwenOAuth2-XWC5SU63.js → qwenOAuth2-WZ54YZ4J.js} +4 -4
  67. package/chunks/{read-file-ROEHCU4A.js → read-file-4WN2DT5N.js} +8 -8
  68. package/chunks/{ripGrep-YBPCCX22.js → ripGrep-4ZKT6KBQ.js} +21 -21
  69. package/chunks/{ru-35IVJTEH.js → ru-FWNXJG4F.js} +1 -0
  70. package/chunks/{scheduler-NIQSNCLH.js → scheduler-O2E65VDK.js} +21 -21
  71. package/chunks/{send-message-IIT3SHA7.js → send-message-FWFTX62Q.js} +2 -2
  72. package/chunks/{serve-GME2SMSV.js → serve-3DM6CRGD.js} +6942 -6809
  73. package/chunks/{shell-E7NADQBV.js → shell-ARVZK6RF.js} +21 -21
  74. package/chunks/{skill-WVYNAGWW.js → skill-BFUBGA4I.js} +10 -10
  75. package/chunks/{src-4HJAM36V.js → src-5YMCDSII.js} +47 -21
  76. package/chunks/{syntheticOutput-H67FYXU7.js → syntheticOutput-JY5NEDTV.js} +3 -3
  77. package/chunks/{task-create-OVXHSHAI.js → task-create-IGILDV25.js} +6 -6
  78. package/chunks/{task-list-QUUCQJ3U.js → task-list-KBEJVAAG.js} +5 -5
  79. package/chunks/{task-stop-WA5DMTKK.js → task-stop-WFTMQ6AC.js} +2 -2
  80. package/chunks/{task-update-PC5427TI.js → task-update-UIVX7ZEV.js} +6 -6
  81. package/chunks/{team-create-BOSQOS35.js → team-create-HRBV5ATK.js} +21 -21
  82. package/chunks/{team-delete-ZTEMYRJ3.js → team-delete-LPOXDPVB.js} +5 -5
  83. package/chunks/{todoWrite-J6L6ELD6.js → todoWrite-R4RIJKOD.js} +4 -4
  84. package/chunks/{tool-search-PPLILX5J.js → tool-search-67HI54YA.js} +8 -8
  85. package/chunks/{web-fetch-6XLPPTP7.js → web-fetch-JU7SS6KE.js} +4 -4
  86. package/chunks/{workflow-CDROZNXC.js → workflow-W4SCLWLU.js} +22 -22
  87. package/chunks/{write-file-QY4X7MMO.js → write-file-TLNXC2NR.js} +21 -21
  88. package/chunks/{zh-X4KM6MTW.js → zh-QXLZV2PX.js} +1 -0
  89. package/chunks/{zh-TW-BSG6BUWK.js → zh-TW-3OKU7LDA.js} +1 -0
  90. package/cli.js +956 -636
  91. package/locales/ca.js +2 -1
  92. package/locales/de.js +1 -0
  93. package/locales/en.js +1 -0
  94. package/locales/fr.js +1 -0
  95. package/locales/ja.js +1 -0
  96. package/locales/pt.js +1 -0
  97. package/locales/ru.js +1 -0
  98. package/locales/zh-TW.js +1 -0
  99. package/locales/zh.js +1 -0
  100. 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 | 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 value, or empty string) to force-enable, `0` 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` |
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-MP436DDQ.js";
10
+ } from "./chunk-VECKCOH6.js";
11
11
  import "./chunk-K5PGHDBN.js";
12
- import "./chunk-7GX7XYZU.js";
13
- import "./chunk-7OCZ77KA.js";
14
- import "./chunk-2ES3D3TW.js";
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-4HMWGHPP.js";
18
- import "./chunk-4TW2JM5Q.js";
19
- import "./chunk-M5VYHAHT.js";
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-JIJBNW4A.js";
23
- import "./chunk-E5SRTXRG.js";
22
+ import "./chunk-ID533GA3.js";
23
+ import "./chunk-KGV3F6UF.js";
24
24
  import "./chunk-77WXWU44.js";
25
- import "./chunk-WWU2KUSR.js";
26
- import "./chunk-JP3LQIMW.js";
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-FPZF3BNV.js";
32
- import "./chunk-VWPDSQZY.js";
33
- import "./chunk-AQDPHFDZ.js";
34
- import "./chunk-JJHY7NAD.js";
35
- import "./chunk-DZCZZPCY.js";
36
- import "./chunk-F6FP3URI.js";
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-N5QHMPZU.js";
39
- import "./chunk-HU3RKEK2.js";
40
- import "./chunk-PTGKSUUJ.js";
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-IKOWINH4.js";
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-MP436DDQ.js";
7
+ } from "./chunk-VECKCOH6.js";
8
8
  import "./chunk-K5PGHDBN.js";
9
- import "./chunk-7GX7XYZU.js";
10
- import "./chunk-7OCZ77KA.js";
11
- import "./chunk-2ES3D3TW.js";
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-4HMWGHPP.js";
15
- import "./chunk-4TW2JM5Q.js";
16
- import "./chunk-M5VYHAHT.js";
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-JIJBNW4A.js";
20
- import "./chunk-E5SRTXRG.js";
19
+ import "./chunk-ID533GA3.js";
20
+ import "./chunk-KGV3F6UF.js";
21
21
  import "./chunk-77WXWU44.js";
22
- import "./chunk-WWU2KUSR.js";
23
- import "./chunk-JP3LQIMW.js";
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-FPZF3BNV.js";
29
- import "./chunk-VWPDSQZY.js";
30
- import "./chunk-AQDPHFDZ.js";
31
- import "./chunk-JJHY7NAD.js";
32
- import "./chunk-DZCZZPCY.js";
33
- import "./chunk-F6FP3URI.js";
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-N5QHMPZU.js";
36
- import "./chunk-HU3RKEK2.js";
37
- import "./chunk-PTGKSUUJ.js";
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-IKOWINH4.js";
41
+ import "./chunk-WE6TNQJU.js";
42
42
  import "./chunk-ZERZSAZL.js";
43
43
  import "./chunk-QN5NZ3UQ.js";
44
44
  import "./chunk-BR4QREVK.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-KQIKOTQJ.js";
7
7
  import {
8
8
  RequestTokenizer
9
- } from "./chunk-IUEQOXOI.js";
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-HU3RKEK2.js";
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-PTGKSUUJ.js";
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-IKOWINH4.js";
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 envVal = process.env["QWEN_CODE_MAX_OUTPUT_TOKENS"];
5049
- const envMaxTokens = envVal ? parseInt(envVal, 10) : NaN;
5050
- if (!isNaN(envMaxTokens) && envMaxTokens > 0) {
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-JJHY7NAD.js";
12
+ } from "./chunk-GOMVJKBL.js";
13
13
  import {
14
14
  createDebugLogger
15
- } from "./chunk-IKOWINH4.js";
15
+ } from "./chunk-WE6TNQJU.js";
16
16
  import "./chunk-Z2Z3GUXZ.js";
17
17
  import {
18
18
  init_esbuild_shims
@@ -1035,6 +1035,7 @@ var ca_default = {
1035
1035
  "Tools:": "Eines:",
1036
1036
  "Parameters:": "Par\xE0metres:",
1037
1037
  "Prompts:": "Missatges:",
1038
+ "Resources:": "Recursos:",
1038
1039
  Blocked: "Bloquejat",
1039
1040
  "\u{1F4A1} Tips:": "\u{1F4A1} Consells:",
1040
1041
  Use: "Useu",
@@ -10,11 +10,11 @@ import {
10
10
  } from "./chunk-LD2XBG6Z.js";
11
11
  import {
12
12
  atomicWriteJSON
13
- } from "./chunk-N5QHMPZU.js";
13
+ } from "./chunk-LTN3VYMZ.js";
14
14
  import {
15
15
  Storage,
16
16
  isNodeError
17
- } from "./chunk-IKOWINH4.js";
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-FPZF3BNV.js";
26
+ } from "./chunk-FH4P6RQA.js";
27
27
  import {
28
28
  InstallationManager
29
- } from "./chunk-VWPDSQZY.js";
29
+ } from "./chunk-CTHZVIMD.js";
30
30
  import {
31
31
  STRUCTURED_OUTPUT_REDACTED_ARGS
32
- } from "./chunk-AQDPHFDZ.js";
32
+ } from "./chunk-VKILGMZQ.js";
33
33
  import {
34
34
  BaseDeclarativeTool,
35
35
  BaseToolInvocation,
36
36
  ToolDisplayNames,
37
37
  ToolNames
38
- } from "./chunk-JJHY7NAD.js";
38
+ } from "./chunk-GOMVJKBL.js";
39
39
  import {
40
40
  atomicWriteFile,
41
41
  atomicWriteFileSync
42
- } from "./chunk-N5QHMPZU.js";
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-PTGKSUUJ.js";
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-IKOWINH4.js";
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\.5/, { image: true, video: true }],
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-XYMMXZFG.js");
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-XWC5SU63.js");
72107
- const { QwenContentGenerator } = await import("./qwenContentGenerator-QWPW3P7K.js");
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-OLOGBVLP.js");
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-KUVZXCGX.js");
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 (proxyUrl.startsWith("http")) {
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");
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-OFEVLU4C.js";
6
6
  import {
7
7
  SchemaValidator
8
- } from "./chunk-JJHY7NAD.js";
8
+ } from "./chunk-GOMVJKBL.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-A4BMJM77.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-IKOWINH4.js";
5
+ } from "./chunk-WE6TNQJU.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-IKOWINH4.js";
5
+ } from "./chunk-WE6TNQJU.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  getErrorMessage,
5
5
  isNodeError
6
- } from "./chunk-IKOWINH4.js";
6
+ } from "./chunk-WE6TNQJU.js";
7
7
  import {
8
8
  init_esbuild_shims
9
9
  } from "./chunk-A4BMJM77.js";