@qwen-code/qwen-code 0.18.0-preview.1 → 0.18.0-preview.2

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 (107) hide show
  1. package/bundled/qc-helper/SKILL.md +1 -2
  2. package/bundled/qc-helper/docs/configuration/settings.md +17 -19
  3. package/bundled/qc-helper/docs/features/_meta.ts +0 -3
  4. package/bundled/qc-helper/docs/features/commands.md +14 -12
  5. package/bundled/qc-helper/docs/features/scheduled-tasks.md +1 -1
  6. package/bundled/qc-helper/docs/features/sub-agents.md +39 -0
  7. package/chunks/{agent-SXS4NQWS.js → agent-QB7TZ4HW.js} +22 -16
  8. package/chunks/agent-headless-APVHH7QM.js +50 -0
  9. package/chunks/{anthropicContentGenerator-4QBVSFSJ.js → anthropicContentGenerator-M45EVVRM.js} +4 -4
  10. package/chunks/{askUserQuestion-NOOLRWCJ.js → askUserQuestion-WM2KHM3K.js} +2 -2
  11. package/chunks/{ca-WRHFBIDH.js → ca-BARBRL6N.js} +48 -1
  12. package/chunks/{chunk-G763GDO6.js → chunk-2ZTWI7KH.js} +15 -3
  13. package/chunks/chunk-64WXLC72.js +98 -0
  14. package/chunks/{chunk-NQZ33PWX.js → chunk-7YKXFA3D.js} +11 -11
  15. package/chunks/chunk-AJIR24J2.js +59 -0
  16. package/chunks/{chunk-ERREX2ES.js → chunk-AVW55ZCO.js} +61 -23
  17. package/chunks/{chunk-SHUT5MQY.js → chunk-CNHFPN7T.js} +1 -1
  18. package/chunks/{chunk-5RNZ2QKF.js → chunk-CNSMKPK6.js} +1 -1
  19. package/chunks/{chunk-BBTV54KB.js → chunk-CWV3SJZS.js} +2 -2
  20. package/chunks/{chunk-GBEPNWYB.js → chunk-GX7VH5JQ.js} +1 -1
  21. package/chunks/chunk-HGJPQK33.js +2231 -0
  22. package/chunks/chunk-HV3ZZ7G4.js +159 -0
  23. package/chunks/{chunk-ZW7GBCRE.js → chunk-HXJE7VOG.js} +20 -31
  24. package/chunks/{chunk-PLYZAP4W.js → chunk-ICOI4E4S.js} +1 -1
  25. package/chunks/{chunk-6VFG3EUJ.js → chunk-JUGRPQAB.js} +1 -1
  26. package/chunks/{chunk-AVLOK27J.js → chunk-JVQOQ3OU.js} +1 -1
  27. package/chunks/{chunk-R5PDRHEF.js → chunk-JXAZUMDW.js} +67 -45
  28. package/chunks/{chunk-UABFCMPA.js → chunk-KC6ZMJ5X.js} +3 -1
  29. package/chunks/chunk-LD2XBG6Z.js +102 -0
  30. package/chunks/{chunk-MVX64PNU.js → chunk-LR62TEET.js} +1 -1
  31. package/chunks/{chunk-JMLIPZUU.js → chunk-MVIVIPCU.js} +3 -3
  32. package/chunks/{chunk-KOA52UTF.js → chunk-NW5QBUYO.js} +6 -6
  33. package/chunks/{chunk-JSYEZAYV.js → chunk-P4J26VDS.js} +2 -2
  34. package/chunks/{chunk-SCHRFI7O.js → chunk-PAEBHDIO.js} +1 -1
  35. package/chunks/{chunk-6KH2Q7XN.js → chunk-QCG6KPNM.js} +3685 -1897
  36. package/chunks/chunk-SKBPNJEW.js +45 -0
  37. package/chunks/{chunk-F5ORN4YO.js → chunk-UAMOBVVW.js} +1 -1
  38. package/chunks/chunk-XBFVXFB2.js +216 -0
  39. package/chunks/{chunk-D46KOV3C.js → chunk-Y7R6H6FT.js} +1 -1
  40. package/chunks/{chunk-F6FLCHCS.js → chunk-ZK4AMNIU.js} +39 -12
  41. package/chunks/{computer-use-CT6MU6P3.js → computer-use-B7VIUI7F.js} +22 -16
  42. package/chunks/contextCommand-63RZ3O5R.js +52 -0
  43. package/chunks/{cron-create-PIPMXQN4.js → cron-create-FI5LJVUS.js} +2 -2
  44. package/chunks/{cron-delete-6Y5XIDMS.js → cron-delete-ZGUXWBTG.js} +2 -2
  45. package/chunks/{cron-list-A4WNRUWZ.js → cron-list-QNNZGMN3.js} +2 -2
  46. package/chunks/{de-M5RPB2NB.js → de-YGKK2BC4.js} +48 -1
  47. package/chunks/{edit-A4YK7AIB.js → edit-6UBTS2J5.js} +23 -17
  48. package/chunks/{en-UMYKQAZE.js → en-HSQQNQUB.js} +73 -2
  49. package/chunks/{enter-worktree-VNEQINLC.js → enter-worktree-NN7LIXCM.js} +22 -16
  50. package/chunks/{exit-worktree-AVSMXC33.js → exit-worktree-GGSS5KIE.js} +22 -16
  51. package/chunks/{exitPlanMode-5SQYVROD.js → exitPlanMode-H323NHB2.js} +22 -16
  52. package/chunks/{fr-MPYXXXPW.js → fr-JXBKPJKQ.js} +48 -1
  53. package/chunks/{geminiContentGenerator-CR2WGARL.js → geminiContentGenerator-I4H2NLJG.js} +4 -4
  54. package/chunks/{glob-5V32KOG5.js → glob-OLCX57MD.js} +22 -16
  55. package/chunks/{grep-PUTEPBR4.js → grep-7HXIMDOW.js} +22 -16
  56. package/chunks/{ja-NFZ32AB3.js → ja-TGPZSP2B.js} +48 -1
  57. package/chunks/{keychain-token-storage-UHGOCDD6.js → keychain-token-storage-LB46DAEK.js} +2 -2
  58. package/chunks/{ls-34DLNYCD.js → ls-6PEZUK6O.js} +3 -3
  59. package/chunks/{lsp-NCDEHH3V.js → lsp-JZSJOVT7.js} +2 -2
  60. package/chunks/{monitor-EJBR5VCR.js → monitor-SQO7MVAV.js} +22 -16
  61. package/chunks/{notebook-edit-DZHGPP2L.js → notebook-edit-72L3EBAL.js} +23 -17
  62. package/chunks/{openaiContentGenerator-4QNV3CHM.js → openaiContentGenerator-FTR7CDWF.js} +12 -11
  63. package/chunks/{pt-BR43FRBA.js → pt-TIBG6BIO.js} +48 -1
  64. package/chunks/{qwenContentGenerator-3XOCEMQO.js → qwenContentGenerator-U5UFQ566.js} +24 -18
  65. package/chunks/{qwenOAuth2-KRJT35QH.js → qwenOAuth2-EFSECGHF.js} +4 -4
  66. package/chunks/{read-file-VZ2SQQIX.js → read-file-UA64EEQC.js} +8 -8
  67. package/chunks/{ripGrep-SBIZCPOL.js → ripGrep-WSYCWZVK.js} +22 -16
  68. package/chunks/{ru-DQCW2KHD.js → ru-JBCHCK4L.js} +48 -1
  69. package/chunks/{scheduler-H32DZVDV.js → scheduler-VBASHOCA.js} +22 -16
  70. package/chunks/send-message-OYJZ5TPG.js +244 -0
  71. package/chunks/{serve-56G4B5W6.js → serve-A7E2OJDR.js} +45 -36
  72. package/chunks/{shell-Q77KNP4N.js → shell-3NFOT6F5.js} +22 -16
  73. package/chunks/{skill-CLWFJYBG.js → skill-RA5YUREY.js} +10 -10
  74. package/chunks/{src-47L2LUOU.js → src-NFCMARMT.js} +182 -23
  75. package/chunks/{syntheticOutput-T5SWX3YF.js → syntheticOutput-DETQ2YM6.js} +3 -3
  76. package/chunks/task-create-Y3ZKTJIG.js +19 -0
  77. package/chunks/task-list-ONXJ3I3A.js +151 -0
  78. package/chunks/{task-stop-3VHAQMYM.js → task-stop-UHDC4N5B.js} +2 -2
  79. package/chunks/task-update-TCNOU3P5.js +397 -0
  80. package/chunks/team-create-6SR4OVRG.js +313 -0
  81. package/chunks/team-delete-EJ4U4DDP.js +114 -0
  82. package/chunks/{todoWrite-EAGJGKO5.js → todoWrite-TEYDRS5L.js} +4 -4
  83. package/chunks/{tool-search-Q75AYDTP.js → tool-search-OD435A3X.js} +8 -8
  84. package/chunks/{web-fetch-SS6IKK6N.js → web-fetch-6W67H5PO.js} +4 -4
  85. package/chunks/workflow-62DHH4EO.js +708 -0
  86. package/chunks/{write-file-RENGC25N.js → write-file-475L5OPP.js} +23 -17
  87. package/chunks/{zh-TW-IQZ4AD5M.js → zh-TW-G3HFHVVT.js} +74 -6
  88. package/chunks/{zh-6VFXOAR5.js → zh-VCLWO26Y.js} +77 -6
  89. package/cli.js +6417 -3115
  90. package/examples/agent/qwen-extension.json +1 -0
  91. package/examples/commands/qwen-extension.json +1 -0
  92. package/examples/context/qwen-extension.json +1 -0
  93. package/examples/mcp-server/qwen-extension.json +1 -0
  94. package/examples/skills/qwen-extension.json +1 -0
  95. package/locales/ca.js +51 -0
  96. package/locales/de.js +51 -0
  97. package/locales/en.js +83 -2
  98. package/locales/fr.js +53 -2
  99. package/locales/ja.js +52 -2
  100. package/locales/pt.js +52 -2
  101. package/locales/ru.js +53 -2
  102. package/locales/zh-TW.js +85 -11
  103. package/locales/zh.js +89 -11
  104. package/package.json +2 -2
  105. package/bundled/qc-helper/docs/features/checkpointing.md +0 -77
  106. package/chunks/contextCommand-YODJQYIV.js +0 -46
  107. package/chunks/send-message-YYF56TS7.js +0 -151
@@ -60,7 +60,6 @@ Use this index to locate the right document for the user's question. Load only t
60
60
  | Slash commands | `docs/features/commands.md` |
61
61
  | Headless / non-interactive mode | `docs/features/headless.md` |
62
62
  | LSP integration | `docs/features/lsp.md` |
63
- | Checkpointing | `docs/features/checkpointing.md` |
64
63
  | Token caching | `docs/features/token-caching.md` |
65
64
  | Language / i18n | `docs/features/language.md` |
66
65
  | Arena mode | `docs/features/arena.md` |
@@ -121,7 +120,7 @@ When the user asks about configuration, the primary reference is `docs/configura
121
120
  | Permissions | `permissions.allow/ask/deny` | `docs/configuration/settings.md`, `docs/features/approval-mode.md` |
122
121
  | MCP Servers | `mcpServers.*`, `mcp.*` | `docs/configuration/settings.md`, `docs/features/mcp.md` |
123
122
  | Tool Approval | `tools.approvalMode` | `docs/configuration/settings.md`, `docs/features/approval-mode.md`, `docs/features/auto-mode.md` |
124
- | Hooks | `hooks.*` | `docs/features/hooks.md` |
123
+ | Hooks | `hooks.*` | `docs/configuration/settings.md`, `docs/features/hooks.md` |
125
124
  | Model | `model.name`, `modelProviders` | `docs/configuration/settings.md`, `docs/configuration/model-providers.md` |
126
125
  | General/UI | `general.*`, `ui.*`, `ide.*`, `output.*` | `docs/configuration/settings.md` |
127
126
  | Context | `context.*` | `docs/configuration/settings.md` |
@@ -86,7 +86,6 @@ Settings are organized into categories. Most settings should be placed within th
86
86
  | `general.sessionRecapAwayThresholdMinutes` | number | Minutes the terminal must be blurred before an auto-recap fires on focus-in. Only used when `showSessionRecap` is enabled. | `5` |
87
87
  | `general.gitCoAuthor.commit` | boolean | Add a Co-authored-by trailer to git commit messages AND attach a per-file AI-attribution git note (`refs/notes/ai-attribution`) for commits made through Qwen Code. Disabling skips both. | `true` |
88
88
  | `general.gitCoAuthor.pr` | boolean | Append a Qwen Code attribution line to pull request descriptions when running `gh pr create`. | `true` |
89
- | `general.checkpointing.enabled` | boolean | Enable session checkpointing for recovery. | `false` |
90
89
  | `general.defaultFileEncoding` | string | Default encoding for new files. Use `"utf-8"` (default) for UTF-8 without BOM, or `"utf-8-bom"` for UTF-8 with BOM. Only change this if your project specifically requires BOM. | `"utf-8"` |
91
90
  | `general.cleanupPeriodDays` | number | Days to retain `~/.qwen/file-history/` session backups used by `/rewind`. Backups older than this are removed by a background pass that runs at most once per day. `0` = minimum retention (~1 hour): keeps sessions touched in the last hour plus the currently active one. Changes take effect after restart. | `30` |
92
91
 
@@ -140,23 +139,23 @@ Settings are organized into categories. Most settings should be placed within th
140
139
 
141
140
  #### model
142
141
 
143
- | Setting | Type | Description | Default |
144
- | -------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |
145
- | `model.name` | string | The Qwen model to use for conversations. | `undefined` |
146
- | `model.maxSessionTurns` | number | Maximum number of user/model/tool turns to keep in a session. -1 means unlimited. | `-1` |
147
- | `model.maxWallTimeSeconds` | number | Wall-clock budget for headless / unattended runs, in seconds. `-1` means unlimited. Overridable per-invocation via `--max-wall-time`, which requires a positive duration (`90`, `30s`, `5m`, `1h`, `1.5h`); the minimum is 1 second — sub-second values (`500ms`, `0.5`) are rejected as typos. Omit the flag to fall back to this setting. Aborts with exit code 55 when exceeded. | `-1` |
148
- | `model.maxToolCalls` | number | Cumulative tool-call budget for a run (counts every executed tool, success or failure; `structured_output` under `--json-schema` is exempt). `-1` means unlimited; `0` means "no tool calls allowed". Capped at 1,000,000 to catch typos. Overridable via `--max-tool-calls`. Aborts with exit code 55 when exceeded. | `-1` |
149
- | `model.generationConfig` | object | Advanced overrides passed to the underlying content generator. Supports request controls such as `timeout`, `maxRetries`, `enableCacheControl`, `splitToolMedia` (set `true` for strict OpenAI-compatible servers like LM Studio that reject non-text content on `role: "tool"` messages splits media into a follow-up user message), `contextWindowSize` (override model's context window size), `modalities` (override auto-detected input modalities), `customHeaders` (custom HTTP headers for API requests), and `extra_body` (additional body parameters for OpenAI-compatible API requests only), along with fine-tuning knobs under `samplingParams` (for example `temperature`, `top_p`, `max_tokens`). Leave unset to rely on provider defaults. | `undefined` |
150
- | `model.chatCompression.contextPercentageThreshold` | number | **REMOVED.** Auto-compaction now uses a three-tier threshold ladder (warn / auto / hard) computed internally from the model's context window via the `computeThresholds()` function — no longer user-configurable. Setting this field in `settings.json` is silently ignored (no startup warning). There is currently no replacement for "disable compression entirely" — reactive overflow recovery remains the safety net at the API layer if compression itself fails. (See PR #4345 / `docs/design/auto-compaction-threshold-redesign.md` for the redesign rationale.) | `N/A` |
151
- | `model.chatCompression.maxRecentFilesToRetain` | number | Number of most-recently-touched files whose current content is restored (embedded if small, otherwise referenced by path) into history after auto-compaction. `0` restores none. Env override: `QWEN_COMPACT_MAX_RECENT_FILES`. | `5` |
152
- | `model.chatCompression.maxRecentImagesToRetain` | number | Number of most-recent images (tool screenshots / user pastes) restored into history after auto-compaction. `0` restores none. Env override: `QWEN_COMPACT_MAX_RECENT_IMAGES`. | `3` |
153
- | `model.chatCompression.enableScreenshotTrigger` | boolean | When `true`, auto-compaction also fires once the number of tool-returned images accumulated in history reaches `screenshotTriggerThreshold`, independent of token usage — aimed at computer-use sessions where frequent screenshots dilute model attention. Counts only images returned inside tool results, not user-pasted images. Env override: `QWEN_COMPACT_SCREENSHOT_TRIGGER` (`1`/`true`/`0`/`false`). | `true` |
154
- | `model.chatCompression.screenshotTriggerThreshold` | number | Tool-returned image count at or above which the screenshot trigger fires (only when `enableScreenshotTrigger`). Compaction resets the count — surviving images are re-embedded as top-level parts, which the trigger doesn't count — so it won't immediately re-fire. Env override: `QWEN_COMPACT_SCREENSHOT_THRESHOLD`. | `50` |
155
- | `model.skipNextSpeakerCheck` | boolean | Skip the next speaker check. | `false` |
156
- | `model.skipLoopDetection` | boolean | Disables streaming loop detection checks. Defaults to `true` (loop detection is skipped) to avoid false positives interrupting legitimate workflows. Set to `false` to re-enable streaming loop detection — useful as a guardrail in headless / non-interactive runs where stuck repetition can otherwise waste budget. | `true` |
157
- | `model.skipStartupContext` | boolean | Skips sending the startup workspace context (environment summary and acknowledgement) at the beginning of each session. Enable this if you prefer to provide context manually or want to save tokens on startup. | `false` |
158
- | `model.enableOpenAILogging` | boolean | Enables logging of OpenAI API calls for debugging and analysis. When enabled, API requests and responses are logged to JSON files. | `false` |
159
- | `model.openAILoggingDir` | string | Custom directory path for OpenAI API logs. If not specified, defaults to `logs/openai` in the current working directory. Supports absolute paths, relative paths (resolved from current working directory), and `~` expansion (home directory). | `undefined` |
142
+ | Setting | Type | Description | Default |
143
+ | -------------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
144
+ | `model.name` | string | The Qwen model to use for conversations. | `undefined` |
145
+ | `model.maxSessionTurns` | number | Maximum number of user/model/tool turns to keep in a session. -1 means unlimited. | `-1` |
146
+ | `model.maxWallTimeSeconds` | number | Wall-clock budget for headless / unattended runs, in seconds. `-1` means unlimited. Overridable per-invocation via `--max-wall-time`, which requires a positive duration (`90`, `30s`, `5m`, `1h`, `1.5h`); the minimum is 1 second — sub-second values (`500ms`, `0.5`) are rejected as typos. Omit the flag to fall back to this setting. Aborts with exit code 55 when exceeded. | `-1` |
147
+ | `model.maxToolCalls` | number | Cumulative tool-call budget for a run (counts every executed tool, success or failure; `structured_output` under `--json-schema` is exempt). `-1` means unlimited; `0` means "no tool calls allowed". Capped at 1,000,000 to catch typos. Overridable via `--max-tool-calls`. Aborts with exit code 55 when exceeded. | `-1` |
148
+ | `model.generationConfig` | object | Advanced overrides passed to the underlying content generator. Supports request controls such as `timeout`, `maxRetries`, `enableCacheControl`, `splitToolMedia` (default `true`; splits tool-returned media including images read by the built-in read_file into a follow-up user message instead of the spec-violating `role: "tool"` message, so strict OpenAI-compatible servers like doubao / new-api / LM Studio can see it; set `false` to restore the legacy embed-in-tool behavior), `contextWindowSize` (override model's context window size), `modalities` (override auto-detected input modalities), `customHeaders` (custom HTTP headers for API requests), and `extra_body` (additional body parameters for OpenAI-compatible API requests only), along with fine-tuning knobs under `samplingParams` (for example `temperature`, `top_p`, `max_tokens`). Leave unset to rely on provider defaults. | `undefined` |
149
+ | `model.chatCompression.contextPercentageThreshold` | number | **REMOVED.** Auto-compaction now uses a three-tier threshold ladder (warn / auto / hard) computed internally from the model's context window via the `computeThresholds()` function — no longer user-configurable. Setting this field in `settings.json` is silently ignored (no startup warning). There is currently no replacement for "disable compression entirely" — reactive overflow recovery remains the safety net at the API layer if compression itself fails. (See PR #4345 / `docs/design/auto-compaction-threshold-redesign.md` for the redesign rationale.) | `N/A` |
150
+ | `model.chatCompression.maxRecentFilesToRetain` | number | Number of most-recently-touched files whose current content is restored (embedded if small, otherwise referenced by path) into history after auto-compaction. `0` restores none. Env override: `QWEN_COMPACT_MAX_RECENT_FILES`. | `5` |
151
+ | `model.chatCompression.maxRecentImagesToRetain` | number | Number of most-recent images (tool screenshots / user pastes) restored into history after auto-compaction. `0` restores none. Env override: `QWEN_COMPACT_MAX_RECENT_IMAGES`. | `3` |
152
+ | `model.chatCompression.enableScreenshotTrigger` | boolean | When `true`, auto-compaction also fires once the number of tool-returned images accumulated in history reaches `screenshotTriggerThreshold`, independent of token usage — aimed at computer-use sessions where frequent screenshots dilute model attention. Counts only images returned inside tool results, not user-pasted images. Env override: `QWEN_COMPACT_SCREENSHOT_TRIGGER` (`1`/`true`/`0`/`false`). | `true` |
153
+ | `model.chatCompression.screenshotTriggerThreshold` | number | Tool-returned image count at or above which the screenshot trigger fires (only when `enableScreenshotTrigger`). Compaction resets the count — surviving images are re-embedded as top-level parts, which the trigger doesn't count — so it won't immediately re-fire. Env override: `QWEN_COMPACT_SCREENSHOT_THRESHOLD`. | `50` |
154
+ | `model.skipNextSpeakerCheck` | boolean | Skip the next speaker check. | `false` |
155
+ | `model.skipLoopDetection` | boolean | Disables streaming loop detection checks. Defaults to `true` (loop detection is skipped) to avoid false positives interrupting legitimate workflows. Set to `false` to re-enable streaming loop detection — useful as a guardrail in headless / non-interactive runs where stuck repetition can otherwise waste budget. | `true` |
156
+ | `model.skipStartupContext` | boolean | Skips sending the startup workspace context (environment summary and acknowledgement) at the beginning of each session. Enable this if you prefer to provide context manually or want to save tokens on startup. | `false` |
157
+ | `model.enableOpenAILogging` | boolean | Enables logging of OpenAI API calls for debugging and analysis. When enabled, API requests and responses are logged to JSON files. | `false` |
158
+ | `model.openAILoggingDir` | string | Custom directory path for OpenAI API logs. If not specified, defaults to `logs/openai` in the current working directory. Supports absolute paths, relative paths (resolved from current working directory), and `~` expansion (home directory). | `undefined` |
160
159
 
161
160
  **Example model.generationConfig:**
162
161
 
@@ -638,7 +637,6 @@ For sandbox image selection, precedence is:
638
637
  | `--telemetry-otlp-endpoint` | | Sets the OTLP endpoint for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
639
638
  | `--telemetry-otlp-protocol` | | Sets the OTLP protocol for telemetry (`grpc` or `http`). | | Defaults to `grpc`. See [telemetry](../../developers/development/telemetry) for more information. |
640
639
  | `--telemetry-log-prompts` | | Enables logging of prompts for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
641
- | `--checkpointing` | | Enables [checkpointing](../features/checkpointing). | | |
642
640
  | `--acp` | | Enables ACP mode (Agent Client Protocol). Useful for IDE/editor integrations like [Zed](../integration-zed). | | Stable. Replaces the deprecated `--experimental-acp` flag. |
643
641
  | `--experimental-lsp` | | Enables experimental [LSP (Language Server Protocol)](../features/lsp) feature for code intelligence (go-to-definition, find references, diagnostics, etc.). | | Experimental. Requires language servers to be installed. |
644
642
  | `--extensions` | `-e` | Specifies a list of extensions to use for the session. | Extension names | If not provided, all available extensions are used. Use the special term `qwen -e none` to disable all extensions. Example: `qwen -e my-extension -e my-other-extension` |
@@ -11,9 +11,6 @@ export default {
11
11
  headless: 'Headless Mode',
12
12
  'structured-output': 'Structured Output',
13
13
  'dual-output': 'Dual Output',
14
- checkpointing: {
15
- display: 'hidden',
16
- },
17
14
  'approval-mode': 'Approval Mode',
18
15
  'auto-mode': 'Auto Mode',
19
16
  worktree: 'Worktrees',
@@ -225,7 +225,7 @@ In interactive mode, `/diff` opens a dialog with a **source picker** along the t
225
225
 
226
226
  The file list displays per-file stats (lines added/removed) with tags for special states (`new`, `deleted`, `untracked`, `binary`, `truncated`, `oversized`). Press Enter on a file to view its inline diff with syntax-highlighted hunks.
227
227
 
228
- Per-turn diffs require [file checkpointing](./checkpointing) to be enabled (on by default in interactive mode). When file checkpointing is off, only the "Current" source is available.
228
+ Per-turn diffs require file checkpointing to be enabled (on by default in interactive mode). When file checkpointing is off, only the "Current" source is available.
229
229
 
230
230
  **Keyboard shortcuts:**
231
231
 
@@ -268,17 +268,19 @@ In headless (`--prompt`) or non-interactive contexts, `/diff` prints a plain-tex
268
268
 
269
269
  Commands for obtaining information and performing system settings.
270
270
 
271
- | Command | Description | Usage Examples |
272
- | --------------- | ------------------------------------------------------------- | -------------------------------- |
273
- | `/help` | Display help information for available commands | `/help` or `/?` |
274
- | `/status` | Display version information | `/status` or `/about` |
275
- | `/status paths` | Display current session file and log paths | `/status paths` |
276
- | `/stats` | Display detailed statistics for current session | `/stats` |
277
- | `/settings` | Open settings editor | `/settings` |
278
- | `/auth` | Change authentication method | `/auth` |
279
- | `/bug` | Submit issue about Qwen Code | `/bug Button click unresponsive` |
280
- | `/copy` | Copy AI output to clipboard (`/copy N` = Nth-last AI message) | `/copy` or `/copy 2` |
281
- | `/quit` | Exit Qwen Code immediately | `/quit` or `/exit` |
271
+ | Command | Description | Usage Examples |
272
+ | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
273
+ | `/help` | Display help information for available commands | `/help` or `/?` |
274
+ | `/status` | Display version information | `/status` or `/about` |
275
+ | `/status paths` | Display current session file and log paths | `/status paths` |
276
+ | `/stats` | Open interactive usage statistics dashboard with three tabs: Session (live metrics), Activity (heatmap, token trend, project ranking), and Efficiency (cache rate, tool leaderboard, model comparison). Use `tab` to switch tabs, `r` to cycle time ranges, `←→` to pan months, `esc` to close. | `/stats` |
277
+ | `/stats model` | Show per-model token breakdown and estimated cost | `/stats model` |
278
+ | `/stats tools` | Show per-tool call counts | `/stats tools` |
279
+ | `/settings` | Open settings editor | `/settings` |
280
+ | `/auth` | Change authentication method | `/auth` |
281
+ | `/bug` | Submit issue about Qwen Code | `/bug Button click unresponsive` |
282
+ | `/copy` | Copy AI output to clipboard (`/copy N` = Nth-last AI message) | `/copy` or `/copy 2` |
283
+ | `/quit` | Exit Qwen Code immediately | `/quit` or `/exit` |
282
284
 
283
285
  ### 1.10 Common Shortcuts
284
286
 
@@ -6,7 +6,7 @@ Scheduled tasks let Qwen Code re-run a prompt automatically on an interval. Use
6
6
 
7
7
  Tasks are session-scoped: they live in the current Qwen Code process and are gone when you exit. Nothing is written to disk.
8
8
 
9
- > **Note:** Scheduled tasks are an experimental feature. Enable them with `experimental.cron: true` in your [settings](../configuration/settings.md), or set `QWEN_CODE_ENABLE_CRON=1` in your environment.
9
+ > **Tip:** Scheduled tasks are enabled by default. To disable them, set `experimental.cron: false` in your [settings](../configuration/settings.md), or set `QWEN_CODE_DISABLE_CRON=1` in your environment.
10
10
 
11
11
  ## Schedule a recurring prompt with /loop
12
12
 
@@ -275,6 +275,45 @@ disallowedTools:
275
275
  ---
276
276
  ```
277
277
 
278
+ #### Claude Code Compatibility Fields
279
+
280
+ Qwen Code accepts the Claude Code 2.1.168 frontmatter fields below so you
281
+ can drop a CC agent file into `.qwen/agents/` and have the supported fields
282
+ parse identically. Optional fields with invalid values are silently dropped
283
+ at parse time rather than rejected — the same lenient posture CC uses.
284
+
285
+ | Field | Type | Notes |
286
+ | ---------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
287
+ | `permissionMode` | enum string | `acceptEdits`, `auto`, `bypassPermissions`, `default`, `dontAsk`, `plan`. Mapped to `approvalMode` at parse time; when both are set, the explicit `approvalMode` wins. |
288
+ | `maxTurns` | positive integer | Caps the agent's turn budget. Wired into `runConfig.max_turns` at runtime; when both are set, the top-level field wins. |
289
+ | `color` | enum string | Display color. Allowlist: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan` (mirrors CC's `_Y`). The legacy qwen sentinel `auto` is also preserved for backward compatibility. Other values are silently dropped on parse. |
290
+
291
+ Example:
292
+
293
+ ```
294
+ ---
295
+ name: rigorous-reviewer
296
+ description: Deep code review with a turn cap
297
+ permissionMode: plan
298
+ maxTurns: 50
299
+ color: cyan
300
+ tools:
301
+ - read_file
302
+ - grep_search
303
+ - glob
304
+ ---
305
+
306
+ You are a code reviewer. Analyze the code thoroughly and report findings
307
+ ordered by severity.
308
+ ```
309
+
310
+ The remaining CC frontmatter fields — `effort`, `skills`, `initialPrompt`,
311
+ `memory`, `isolation`, `mcpServers`, `hooks` — are documented in the
312
+ declarative-agent design doc and land in follow-up PRs once the prerequisite
313
+ infrastructure exists (`effort` needs a model-layer parameter; `memory`
314
+ needs a scoped memory subsystem; `mcpServers` / `hooks` need a nested-aware
315
+ YAML parser; `--agent` CLI flag enables `initialPrompt`; etc.).
316
+
278
317
  #### Example Usage
279
318
 
280
319
  ```
@@ -7,33 +7,39 @@ import {
7
7
  hasRebuiltToolRegistry,
8
8
  rebuildToolRegistryOnOverride,
9
9
  resolveSubagentApprovalMode
10
- } from "./chunk-6KH2Q7XN.js";
10
+ } from "./chunk-QCG6KPNM.js";
11
11
  import "./chunk-K5PGHDBN.js";
12
+ import "./chunk-SKBPNJEW.js";
12
13
  import "./chunk-O4PICXES.js";
13
14
  import "./chunk-TW522KN6.js";
15
+ import "./chunk-AJIR24J2.js";
16
+ import "./chunk-HGJPQK33.js";
17
+ import "./chunk-XBFVXFB2.js";
14
18
  import "./chunk-MLZQVCF3.js";
15
- import "./chunk-SCHRFI7O.js";
16
- import "./chunk-PLYZAP4W.js";
17
- import "./chunk-UABFCMPA.js";
19
+ import "./chunk-PAEBHDIO.js";
20
+ import "./chunk-LD2XBG6Z.js";
21
+ import "./chunk-ICOI4E4S.js";
22
+ import "./chunk-KC6ZMJ5X.js";
18
23
  import "./chunk-77WXWU44.js";
19
- import "./chunk-6VFG3EUJ.js";
20
- import "./chunk-F6FLCHCS.js";
24
+ import "./chunk-JUGRPQAB.js";
25
+ import "./chunk-64WXLC72.js";
26
+ import "./chunk-ZK4AMNIU.js";
21
27
  import "./chunk-3PJXIDKI.js";
22
28
  import "./chunk-UWCTAVOD.js";
23
29
  import "./chunk-OFEVLU4C.js";
24
- import "./chunk-AVLOK27J.js";
25
- import "./chunk-JSYEZAYV.js";
26
- import "./chunk-5RNZ2QKF.js";
27
- import "./chunk-G763GDO6.js";
28
- import "./chunk-JMLIPZUU.js";
29
- import "./chunk-GBEPNWYB.js";
30
- import "./chunk-F5ORN4YO.js";
31
- import "./chunk-MVX64PNU.js";
32
- import "./chunk-D46KOV3C.js";
30
+ import "./chunk-JVQOQ3OU.js";
31
+ import "./chunk-P4J26VDS.js";
32
+ import "./chunk-CNSMKPK6.js";
33
+ import "./chunk-2ZTWI7KH.js";
34
+ import "./chunk-MVIVIPCU.js";
35
+ import "./chunk-GX7VH5JQ.js";
36
+ import "./chunk-UAMOBVVW.js";
37
+ import "./chunk-LR62TEET.js";
38
+ import "./chunk-Y7R6H6FT.js";
33
39
  import "./chunk-BNESGOSJ.js";
34
40
  import "./chunk-SZOEIL6S.js";
35
41
  import "./chunk-5IFG2VC4.js";
36
- import "./chunk-R5PDRHEF.js";
42
+ import "./chunk-JXAZUMDW.js";
37
43
  import "./chunk-ZERZSAZL.js";
38
44
  import "./chunk-QN5NZ3UQ.js";
39
45
  import "./chunk-BR4QREVK.js";
@@ -0,0 +1,50 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ AgentHeadless,
5
+ ContextState,
6
+ templateString
7
+ } from "./chunk-QCG6KPNM.js";
8
+ import "./chunk-K5PGHDBN.js";
9
+ import "./chunk-SKBPNJEW.js";
10
+ import "./chunk-O4PICXES.js";
11
+ import "./chunk-TW522KN6.js";
12
+ import "./chunk-AJIR24J2.js";
13
+ import "./chunk-HGJPQK33.js";
14
+ import "./chunk-XBFVXFB2.js";
15
+ import "./chunk-MLZQVCF3.js";
16
+ import "./chunk-PAEBHDIO.js";
17
+ import "./chunk-LD2XBG6Z.js";
18
+ import "./chunk-ICOI4E4S.js";
19
+ import "./chunk-KC6ZMJ5X.js";
20
+ import "./chunk-77WXWU44.js";
21
+ import "./chunk-JUGRPQAB.js";
22
+ import "./chunk-64WXLC72.js";
23
+ import "./chunk-ZK4AMNIU.js";
24
+ import "./chunk-3PJXIDKI.js";
25
+ import "./chunk-UWCTAVOD.js";
26
+ import "./chunk-OFEVLU4C.js";
27
+ import "./chunk-JVQOQ3OU.js";
28
+ import "./chunk-P4J26VDS.js";
29
+ import "./chunk-CNSMKPK6.js";
30
+ import "./chunk-2ZTWI7KH.js";
31
+ import "./chunk-MVIVIPCU.js";
32
+ import "./chunk-GX7VH5JQ.js";
33
+ import "./chunk-UAMOBVVW.js";
34
+ import "./chunk-LR62TEET.js";
35
+ import "./chunk-Y7R6H6FT.js";
36
+ import "./chunk-BNESGOSJ.js";
37
+ import "./chunk-SZOEIL6S.js";
38
+ import "./chunk-5IFG2VC4.js";
39
+ import "./chunk-JXAZUMDW.js";
40
+ import "./chunk-ZERZSAZL.js";
41
+ import "./chunk-QN5NZ3UQ.js";
42
+ import "./chunk-BR4QREVK.js";
43
+ import "./chunk-WFVXF3OM.js";
44
+ import "./chunk-A4BMJM77.js";
45
+ import "./chunk-J2S4EL5Y.js";
46
+ export {
47
+ AgentHeadless,
48
+ ContextState,
49
+ templateString
50
+ };
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-KQIKOTQJ.js";
7
7
  import {
8
8
  RequestTokenizer
9
- } from "./chunk-BBTV54KB.js";
9
+ } from "./chunk-CWV3SJZS.js";
10
10
  import {
11
11
  Blob,
12
12
  File,
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  buildRuntimeFetchOptions,
18
18
  redactProxyError
19
- } from "./chunk-MVX64PNU.js";
19
+ } from "./chunk-LR62TEET.js";
20
20
  import {
21
21
  CAPPED_DEFAULT_MAX_TOKENS,
22
22
  DEFAULT_TIMEOUT,
@@ -25,7 +25,7 @@ import {
25
25
  runtimeDiagnostics,
26
26
  safeJsonParse,
27
27
  tokenLimit
28
- } from "./chunk-D46KOV3C.js";
28
+ } from "./chunk-Y7R6H6FT.js";
29
29
  import {
30
30
  FinishReason,
31
31
  GenerateContentResponse
@@ -34,7 +34,7 @@ import "./chunk-SZOEIL6S.js";
34
34
  import "./chunk-5IFG2VC4.js";
35
35
  import {
36
36
  createDebugLogger
37
- } from "./chunk-R5PDRHEF.js";
37
+ } from "./chunk-JXAZUMDW.js";
38
38
  import {
39
39
  require_ms
40
40
  } from "./chunk-BR4QREVK.js";
@@ -6,10 +6,10 @@ import {
6
6
  BaseToolInvocation,
7
7
  ToolDisplayNames,
8
8
  ToolNames
9
- } from "./chunk-G763GDO6.js";
9
+ } from "./chunk-2ZTWI7KH.js";
10
10
  import {
11
11
  createDebugLogger
12
- } from "./chunk-R5PDRHEF.js";
12
+ } from "./chunk-JXAZUMDW.js";
13
13
  import "./chunk-WFVXF3OM.js";
14
14
  import {
15
15
  init_esbuild_shims
@@ -1087,6 +1087,21 @@ var ca_default = {
1087
1087
  " Overall Agreement Rate:": " Taxa d'acord global:",
1088
1088
  "No tool calls have been made in this session.": "No s'ha realitzat cap crida a eines en aquesta sessi\xF3.",
1089
1089
  "Session start time is unavailable, cannot calculate stats.": "L'hora d'inici de la sessi\xF3 no est\xE0 disponible, no es poden calcular les estad\xEDstiques.",
1090
+ Activity: "Activitat",
1091
+ Efficiency: "Efici\xE8ncia",
1092
+ Today: "Avui",
1093
+ "Token Trend": "Tend\xE8ncia de Tokens",
1094
+ "Cache Hit Rate": "Taxa d'encert de cache",
1095
+ "Tool Success": "\xC8xit d'eines",
1096
+ "Tool Leaderboard": "Classificaci\xF3 d'eines",
1097
+ Time: "Temps",
1098
+ Success: "\xC8xit",
1099
+ Cache: "Cache",
1100
+ Latency: "Lat\xE8ncia",
1101
+ "Code Impact": "Impacte al codi",
1102
+ net: "net",
1103
+ streak: "ratxa",
1104
+ best: "r\xE8cord",
1090
1105
  // ============================================================================
1091
1106
  // Migració del format d'ordres
1092
1107
  // ============================================================================
@@ -1423,7 +1438,39 @@ var ca_default = {
1423
1438
  "Desc:": "Descripci\xF3:",
1424
1439
  "Ref:": "Refer\xE8ncia:",
1425
1440
  "\u4E2D\u56FD (China)": "Xina",
1426
- "\u4E2D\u56FD (China) - \u963F\u91CC\u4E91\u767E\u70BC": "Xina - \u963F\u91CC\u4E91\u767E\u70BC"
1441
+ "\u4E2D\u56FD (China) - \u963F\u91CC\u4E91\u767E\u70BC": "Xina - \u963F\u91CC\u4E91\u767E\u70BC",
1442
+ // Stats Dashboard — Category 2
1443
+ "Activity Heatmap": "Mapa d'activitat",
1444
+ Less: "Menys",
1445
+ More: "M\xE9s",
1446
+ Sessions: "Sessions",
1447
+ Duration: "Durada",
1448
+ Projects: "Projectes",
1449
+ "Loading stats...": "Carregant estad\xEDstiques...",
1450
+ "(no data)": "(sense dades)",
1451
+ d: "d",
1452
+ h: "h",
1453
+ m: "m",
1454
+ Input: "Entrada",
1455
+ Models: "Models",
1456
+ "All time": "Tot el temps",
1457
+ "Last 7 days": "\xDAltims 7 dies",
1458
+ "Last 30 days": "\xDAltims 30 dies",
1459
+ "Show usage statistics dashboard.": "Mostra el tauler d'estad\xEDstiques d'\xFAs.",
1460
+ // Stats Dashboard — keyboard hints (not translated)
1461
+ "tab \xB7 esc": "tab \xB7 esc",
1462
+ "tab \xB7 r dates \xB7 \u2190\u2192 month \xB7 esc": "tab \xB7 r dates \xB7 \u2190\u2192 month \xB7 esc",
1463
+ "tab \xB7 r dates \xB7 esc": "tab \xB7 r dates \xB7 esc",
1464
+ // Stats Dashboard — missing labels
1465
+ "API Requests": "Sol\xB7licituds d'API",
1466
+ "Tool Calls": "Crides d'eines",
1467
+ "Success rate": "Taxa d'\xE8xit",
1468
+ "Code Changes": "Canvis de codi",
1469
+ Tool: "Eina",
1470
+ reqs: "sol.",
1471
+ in: "ent.",
1472
+ out: "sort.",
1473
+ "In/Out": "Ent/Sort"
1427
1474
  };
1428
1475
  export {
1429
1476
  ca_default as default
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-R5PDRHEF.js";
5
+ } from "./chunk-JXAZUMDW.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-A4BMJM77.js";
@@ -14869,6 +14869,11 @@ var ToolNames = {
14869
14869
  CRON_LIST: "cron_list",
14870
14870
  CRON_DELETE: "cron_delete",
14871
14871
  TASK_STOP: "task_stop",
14872
+ TASK_CREATE: "task_create",
14873
+ TASK_UPDATE: "task_update",
14874
+ TASK_LIST: "task_list",
14875
+ TEAM_CREATE: "team_create",
14876
+ TEAM_DELETE: "team_delete",
14872
14877
  SEND_MESSAGE: "send_message",
14873
14878
  STRUCTURED_OUTPUT: "structured_output",
14874
14879
  MONITOR: "monitor",
@@ -14887,7 +14892,8 @@ var ToolNames = {
14887
14892
  COMPUTER_USE_DRAG: "computer_use__drag",
14888
14893
  COMPUTER_USE_TYPE_TEXT: "computer_use__type_text",
14889
14894
  COMPUTER_USE_PRESS_KEY: "computer_use__press_key",
14890
- COMPUTER_USE_SET_VALUE: "computer_use__set_value"
14895
+ COMPUTER_USE_SET_VALUE: "computer_use__set_value",
14896
+ WORKFLOW: "workflow"
14891
14897
  };
14892
14898
  var ToolDisplayNames = {
14893
14899
  EDIT: "Edit",
@@ -14909,6 +14915,11 @@ var ToolDisplayNames = {
14909
14915
  CRON_LIST: "CronList",
14910
14916
  CRON_DELETE: "CronDelete",
14911
14917
  TASK_STOP: "TaskStop",
14918
+ TASK_CREATE: "TaskCreate",
14919
+ TASK_UPDATE: "TaskUpdate",
14920
+ TASK_LIST: "TaskList",
14921
+ TEAM_CREATE: "TeamCreate",
14922
+ TEAM_DELETE: "TeamDelete",
14912
14923
  SEND_MESSAGE: "SendMessage",
14913
14924
  STRUCTURED_OUTPUT: "StructuredOutput",
14914
14925
  MONITOR: "Monitor",
@@ -14924,7 +14935,8 @@ var ToolDisplayNames = {
14924
14935
  COMPUTER_USE_DRAG: "computer_use__drag",
14925
14936
  COMPUTER_USE_TYPE_TEXT: "computer_use__type_text",
14926
14937
  COMPUTER_USE_PRESS_KEY: "computer_use__press_key",
14927
- COMPUTER_USE_SET_VALUE: "computer_use__set_value"
14938
+ COMPUTER_USE_SET_VALUE: "computer_use__set_value",
14939
+ WORKFLOW: "Workflow"
14928
14940
  };
14929
14941
  var ToolNamesMigration = {
14930
14942
  search_file_content: ToolNames.GREP,