@qwen-code/qwen-code 0.17.1 → 0.18.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +4 -6
  2. package/bundled/qc-helper/SKILL.md +30 -24
  3. package/bundled/qc-helper/docs/features/auto-mode.md +54 -9
  4. package/bundled/qc-helper/docs/features/commands.md +11 -11
  5. package/bundled/qc-helper/docs/features/markdown-rendering.md +21 -1
  6. package/bundled/qc-helper/docs/overview.md +4 -4
  7. package/bundled/qc-helper/docs/quickstart.md +4 -4
  8. package/bundled/qc-helper/docs/support/Uninstall.md +19 -1
  9. package/bundled/qc-helper/docs/support/troubleshooting.md +2 -1
  10. package/chunks/{agent-ZJHHICAC.js → agent-6J2FFD7S.js} +18 -22
  11. package/chunks/{anthropicContentGenerator-M45RXZVS.js → anthropicContentGenerator-4QBVSFSJ.js} +5 -5
  12. package/chunks/{askUserQuestion-TGRD7FNQ.js → askUserQuestion-NOOLRWCJ.js} +5 -7
  13. package/chunks/{ca-6RSCDYUS.js → ca-WRHFBIDH.js} +38 -3
  14. package/chunks/{chunk-C5CUHYSM.js → chunk-3H7ENG2Q.js} +821 -461
  15. package/chunks/{chunk-SOGUPKP6.js → chunk-5RNZ2QKF.js} +3 -5
  16. package/chunks/{chunk-GVWPJCXU.js → chunk-6VFG3EUJ.js} +1 -1
  17. package/chunks/{chunk-NQ3E7YLD.js → chunk-AVLOK27J.js} +42 -8
  18. package/chunks/{chunk-JBSYXHJF.js → chunk-BBTV54KB.js} +2 -2
  19. package/chunks/{chunk-X2474BTT.js → chunk-BPZQVC2P.js} +142 -9
  20. package/chunks/{chunk-2KEXT6RB.js → chunk-BUOJN3MM.js} +91245 -78527
  21. package/chunks/{chunk-3BJBCG2K.js → chunk-C6WMLUNB.js} +1 -1
  22. package/chunks/{chunk-TDZCEIK6.js → chunk-D46KOV3C.js} +1 -1
  23. package/chunks/{chunk-HX3JRTWL.js → chunk-F5ORN4YO.js} +1 -1
  24. package/chunks/{chunk-JKUAX6UT.js → chunk-G763GDO6.js} +125 -12
  25. package/chunks/{chunk-OIL7KDWV.js → chunk-GBEPNWYB.js} +1 -1
  26. package/chunks/{chunk-5JBZM7FZ.js → chunk-IKOMHTCC.js} +6 -6
  27. package/chunks/{chunk-G4K6P5KN.js → chunk-JMLIPZUU.js} +3 -3
  28. package/chunks/{chunk-OJFMTECH.js → chunk-JSYEZAYV.js} +2 -2
  29. package/chunks/{chunk-AKBFRR6J.js → chunk-K5PGHDBN.js} +132 -112
  30. package/chunks/{chunk-QVJ33ZBG.js → chunk-MVX64PNU.js} +1 -1
  31. package/chunks/{chunk-EY6BDW7Y.js → chunk-PLYZAP4W.js} +45 -9
  32. package/chunks/{chunk-ACBGEKB7.js → chunk-R5PDRHEF.js} +2 -1
  33. package/chunks/{chunk-6O244QKR.js → chunk-SCHRFI7O.js} +1 -1
  34. package/chunks/{chunk-GJHMAWS7.js → chunk-SHUT5MQY.js} +1 -1
  35. package/chunks/{chunk-RQW7WUJR.js → chunk-UABFCMPA.js} +34 -6
  36. package/chunks/{chunk-33RDTIU6.js → chunk-UFC57OYT.js} +3 -5
  37. package/chunks/{chunk-PLYRQYKC.js → chunk-UQZQP5PA.js} +11 -11
  38. package/chunks/{chunk-NP3ICQCN.js → chunk-USE2VQ5P.js} +1 -1
  39. package/chunks/{chunk-NJJER6E2.js → chunk-UXBKX55L.js} +10 -6
  40. package/chunks/{chunk-QWSRH265.js → chunk-WFVXF3OM.js} +776 -776
  41. package/chunks/{computer-use-NAHQPV2L.js → computer-use-6LZXL3UW.js} +51 -18
  42. package/chunks/contextCommand-ZV5QQ2LA.js +46 -0
  43. package/chunks/{cron-create-V3UK2SJN.js → cron-create-PIPMXQN4.js} +5 -7
  44. package/chunks/{cron-delete-MANALPCP.js → cron-delete-6Y5XIDMS.js} +5 -7
  45. package/chunks/{cron-list-UDIYK3B3.js → cron-list-A4WNRUWZ.js} +5 -7
  46. package/chunks/{de-APURNJ3I.js → de-M5RPB2NB.js} +38 -3
  47. package/chunks/{dist-XTTPOFAH.js → dist-BXDUQ2QY.js} +3 -4
  48. package/chunks/{dist-AHZNZWRI.js → dist-R2SXPG74.js} +4 -5
  49. package/chunks/{dist-ATAKC63R.js → dist-TE5QKMGR.js} +3 -4
  50. package/chunks/{dist-6RUZ2JD6.js → dist-ZMQ4TXD5.js} +3 -4
  51. package/chunks/{edit-JWXCQ4KK.js → edit-J7D6VMPQ.js} +22 -27
  52. package/chunks/{en-FYO57HJW.js → en-UMYKQAZE.js} +46 -3
  53. package/chunks/{enter-worktree-G4CJXPT4.js → enter-worktree-NDJTVGYJ.js} +20 -25
  54. package/chunks/{exit-worktree-MYZ2FGU2.js → exit-worktree-UB6XYYAX.js} +20 -25
  55. package/chunks/{exitPlanMode-ELJ6FSMU.js → exitPlanMode-V6X2KL4X.js} +20 -25
  56. package/chunks/{fr-32YHQZIS.js → fr-MPYXXXPW.js} +38 -3
  57. package/chunks/{geminiContentGenerator-3LR7MKCQ.js → geminiContentGenerator-3AKHMB3P.js} +5 -5
  58. package/chunks/{getMachineId-bsd-GS3V2GK7.js → getMachineId-bsd-F7GNPTER.js} +1 -1
  59. package/chunks/{getMachineId-darwin-ZQB4Q7EW.js → getMachineId-darwin-T73DJL27.js} +1 -1
  60. package/chunks/{getMachineId-linux-JQ4NN4DN.js → getMachineId-linux-MKQTFPQM.js} +1 -1
  61. package/chunks/{getMachineId-unsupported-U7H4V4HJ.js → getMachineId-unsupported-MUR5KOQE.js} +1 -1
  62. package/chunks/{getMachineId-win-VHUZGBQ3.js → getMachineId-win-CDYFC6ZM.js} +1 -1
  63. package/chunks/{glob-CANUAUTC.js → glob-PBG5DRG4.js} +20 -25
  64. package/chunks/{grep-WZWNJRDX.js → grep-VQ56EWQ7.js} +20 -25
  65. package/chunks/{ja-PEUXN4XT.js → ja-NFZ32AB3.js} +38 -3
  66. package/chunks/{keychain-token-storage-3552ENXE.js → keychain-token-storage-UHGOCDD6.js} +3 -3
  67. package/chunks/{ls-T4SVZWR6.js → ls-34DLNYCD.js} +6 -8
  68. package/chunks/{lsp-U4ZQLNIS.js → lsp-NCDEHH3V.js} +5 -7
  69. package/chunks/{monitor-CCKNOUFG.js → monitor-J3YCSOEH.js} +20 -25
  70. package/chunks/{notebook-edit-XDUY5Q4I.js → notebook-edit-AL3CBYJ6.js} +21 -26
  71. package/chunks/{openaiContentGenerator-N3O3MYIT.js → openaiContentGenerator-3U6UARHS.js} +12 -14
  72. package/chunks/{pt-2INS7YVC.js → pt-BR43FRBA.js} +38 -3
  73. package/chunks/{qwenContentGenerator-DEOIWKVH.js → qwenContentGenerator-JRFHJRH6.js} +20 -24
  74. package/chunks/{qwenOAuth2-LKXG7XVO.js → qwenOAuth2-KRJT35QH.js} +5 -5
  75. package/chunks/{read-file-BRNXGILN.js → read-file-ZF6EIVE3.js} +9 -11
  76. package/chunks/ripGrep-N2ZT7M6Z.js +42 -0
  77. package/chunks/{ru-6CQ5HNHB.js → ru-DQCW2KHD.js} +38 -3
  78. package/chunks/{scheduler-SSFABMN5.js → scheduler-OS37FUFT.js} +18 -22
  79. package/chunks/{send-message-GFYV7WLL.js → send-message-YYF56TS7.js} +5 -7
  80. package/chunks/{serve-B5O72CRN.js → serve-ABOLLDNN.js} +21 -25
  81. package/chunks/{shell-SGYNBVMK.js → shell-XGN7IDUS.js} +18 -22
  82. package/chunks/{skill-V7Y6DOFB.js → skill-YQQ6CR4U.js} +88 -25
  83. package/chunks/{src-OKFFQGXB.js → src-LORPPHWB.js} +86 -33
  84. package/chunks/{syntheticOutput-DM43O6TY.js → syntheticOutput-T5SWX3YF.js} +4 -5
  85. package/chunks/{task-stop-WKP5OB3V.js → task-stop-3VHAQMYM.js} +5 -7
  86. package/chunks/{todoWrite-GHL6DCLP.js → todoWrite-EAGJGKO5.js} +7 -9
  87. package/chunks/{tool-search-7MHT3HGM.js → tool-search-PDOJPXJJ.js} +27 -15
  88. package/chunks/{web-fetch-SZIV74ZX.js → web-fetch-SS6IKK6N.js} +7 -9
  89. package/chunks/{write-file-ARS2Z6BJ.js → write-file-VWWCN7LI.js} +23 -28
  90. package/chunks/{zh-ZHZCMIRG.js → zh-6VFXOAR5.js} +49 -3
  91. package/chunks/{zh-TW-SSL3ATVZ.js → zh-TW-IQZ4AD5M.js} +45 -3
  92. package/cli.js +8143 -4150
  93. package/examples/agent/agents/diary.md +86 -0
  94. package/examples/agent/qwen-extension.json +4 -0
  95. package/examples/commands/commands/fs/grep-code.md +3 -0
  96. package/examples/commands/qwen-extension.json +4 -0
  97. package/examples/context/QWEN.md +8 -0
  98. package/examples/context/qwen-extension.json +4 -0
  99. package/examples/mcp-server/example.ts +60 -0
  100. package/examples/mcp-server/package.json +18 -0
  101. package/examples/mcp-server/qwen-extension.json +11 -0
  102. package/examples/mcp-server/tsconfig.json +13 -0
  103. package/examples/skills/qwen-extension.json +4 -0
  104. package/examples/skills/skills/synonyms/SKILL.md +48 -0
  105. package/locales/ca.js +64 -4
  106. package/locales/de.js +63 -4
  107. package/locales/en.js +75 -4
  108. package/locales/fr.js +65 -4
  109. package/locales/ja.js +61 -4
  110. package/locales/pt.js +64 -4
  111. package/locales/ru.js +62 -4
  112. package/locales/zh-TW.js +70 -4
  113. package/locales/zh.js +74 -4
  114. package/package.json +3 -2
  115. package/chunks/chunk-24YKA2DA.js +0 -233
  116. package/chunks/chunk-6RQTH7UQ.js +0 -115
  117. package/chunks/chunk-7TQVELRB.js +0 -10412
  118. package/chunks/chunk-W57YDFU5.js +0 -41
  119. package/chunks/contextCommand-7KJT3UJS.js +0 -50
  120. package/chunks/ripGrep-ZRY5PKUZ.js +0 -46
package/README.md CHANGED
@@ -46,15 +46,13 @@ Qwen Code is an open-source AI agent for the terminal, optimized for Qwen series
46
46
  #### Linux / macOS
47
47
 
48
48
  ```bash
49
- bash -c "$(curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh)"
49
+ curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash
50
50
  ```
51
51
 
52
- #### Windows (Run as Administrator)
52
+ #### Windows
53
53
 
54
- Works in both Command Prompt and PowerShell:
55
-
56
- ```cmd
57
- powershell -Command "Invoke-WebRequest 'https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat' -OutFile (Join-Path $env:TEMP 'install-qwen.bat'); & (Join-Path $env:TEMP 'install-qwen.bat')"
54
+ ```powershell
55
+ irm https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.ps1 | iex
58
56
  ```
59
57
 
60
58
  > **Note**: It's recommended to restart your terminal after installation to ensure environment variables take effect.
@@ -43,25 +43,30 @@ Use this index to locate the right document for the user's question. Load only t
43
43
  | Model providers (OpenAI-compatible, etc.) | `docs/configuration/model-providers.md` |
44
44
  | .qwenignore file | `docs/configuration/qwen-ignore.md` |
45
45
  | Themes | `docs/configuration/themes.md` |
46
- | Memory | `docs/configuration/memory.md` |
47
46
  | Trusted folders | `docs/configuration/trusted-folders.md` |
48
47
 
49
48
  ### Features
50
49
 
51
- | Topic | Doc Path |
52
- | ------------------------------------------- | -------------------------------- |
53
- | Approval mode (plan/default/auto_edit/yolo) | `docs/features/approval-mode.md` |
54
- | MCP (Model Context Protocol) | `docs/features/mcp.md` |
55
- | Skills system | `docs/features/skills.md` |
56
- | Sub-agents | `docs/features/sub-agents.md` |
57
- | Sandbox / security | `docs/features/sandbox.md` |
58
- | Slash commands | `docs/features/commands.md` |
59
- | Headless / non-interactive mode | `docs/features/headless.md` |
60
- | LSP integration | `docs/features/lsp.md` |
61
- | Checkpointing | `docs/features/checkpointing.md` |
62
- | Token caching | `docs/features/token-caching.md` |
63
- | Language / i18n | `docs/features/language.md` |
64
- | Arena mode | `docs/features/arena.md` |
50
+ | Topic | Doc Path |
51
+ | ------------------------------------------- | ---------------------------------- |
52
+ | Approval mode (plan/default/auto_edit/yolo) | `docs/features/approval-mode.md` |
53
+ | Auto mode (AI-driven approval) | `docs/features/auto-mode.md` |
54
+ | Hooks (lifecycle hooks) | `docs/features/hooks.md` |
55
+ | MCP (Model Context Protocol) | `docs/features/mcp.md` |
56
+ | Memory | `docs/features/memory.md` |
57
+ | Skills system | `docs/features/skills.md` |
58
+ | Sub-agents | `docs/features/sub-agents.md` |
59
+ | Sandbox / security | `docs/features/sandbox.md` |
60
+ | Slash commands | `docs/features/commands.md` |
61
+ | Headless / non-interactive mode | `docs/features/headless.md` |
62
+ | LSP integration | `docs/features/lsp.md` |
63
+ | Checkpointing | `docs/features/checkpointing.md` |
64
+ | Token caching | `docs/features/token-caching.md` |
65
+ | Language / i18n | `docs/features/language.md` |
66
+ | Arena mode | `docs/features/arena.md` |
67
+ | Status line | `docs/features/status-line.md` |
68
+ | Scheduled tasks (cron/loop) | `docs/features/scheduled-tasks.md` |
69
+ | Worktree | `docs/features/worktree.md` |
65
70
 
66
71
  ### IDE Integration
67
72
 
@@ -111,15 +116,16 @@ When the user asks about configuration, the primary reference is `docs/configura
111
116
 
112
117
  ### Common Config Categories
113
118
 
114
- | Category | Key Config Keys | Reference |
115
- | ------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
116
- | Permissions | `permissions.allow/ask/deny` | `docs/configuration/settings.md`, `docs/features/approval-mode.md` |
117
- | MCP Servers | `mcpServers.*`, `mcp.*` | `docs/configuration/settings.md`, `docs/features/mcp.md` |
118
- | Tool Approval | `tools.approvalMode` | `docs/configuration/settings.md`, `docs/features/approval-mode.md` |
119
- | Model | `model.name`, `modelProviders` | `docs/configuration/settings.md`, `docs/configuration/model-providers.md` |
120
- | General/UI | `general.*`, `ui.*`, `ide.*`, `output.*` | `docs/configuration/settings.md` |
121
- | Context | `context.*` | `docs/configuration/settings.md` |
122
- | Advanced | `hooks`, `env`, `webSearch`, `security`, `privacy`, `telemetry`, `advanced.*` | `docs/configuration/settings.md` |
119
+ | Category | Key Config Keys | Reference |
120
+ | ------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
121
+ | Permissions | `permissions.allow/ask/deny` | `docs/configuration/settings.md`, `docs/features/approval-mode.md` |
122
+ | MCP Servers | `mcpServers.*`, `mcp.*` | `docs/configuration/settings.md`, `docs/features/mcp.md` |
123
+ | 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` |
125
+ | Model | `model.name`, `modelProviders` | `docs/configuration/settings.md`, `docs/configuration/model-providers.md` |
126
+ | General/UI | `general.*`, `ui.*`, `ide.*`, `output.*` | `docs/configuration/settings.md` |
127
+ | Context | `context.*` | `docs/configuration/settings.md` |
128
+ | Advanced | `env`, `webSearch`, `security`, `privacy`, `telemetry`, `advanced.*` | `docs/configuration/settings.md` |
123
129
 
124
130
  ---
125
131
 
@@ -15,6 +15,16 @@ walks three layers in order:
15
15
 
16
16
  1. **acceptEdits fast-path** — Edit / Write whose target path is inside
17
17
  the workspace is auto-approved without invoking the classifier.
18
+ **Exception:** writes to Qwen Code's own self-modification surfaces
19
+ (`.qwen/settings*.json`, `QWEN.md`, `AGENTS.md`, `QWEN.local.md`,
20
+ configured context filenames, `.qwen/rules/`, `.qwen/commands/`,
21
+ `.qwen/agents/`, `.qwen/skills/`, `.qwen/hooks/`, `.mcp.json`) and
22
+ persistence surfaces (`.git/`, `.husky/`, `package.json`, `.npmrc`,
23
+ `Makefile`, `.github/workflows/`, etc.) route through the classifier
24
+ even when they are inside the workspace. Symlinks targeting protected
25
+ paths are resolved and rejected too. Shell commands that reach these
26
+ paths via `cd && bash -lc '...'` or other wrappers go through the
27
+ classifier as well.
18
28
  2. **Safe-tool allowlist** — Read-only and metadata-only built-in tools
19
29
  (Read, Grep, Glob, LS, LSP, TodoWrite, AskUserQuestion, etc.) are
20
30
  auto-approved without invoking the classifier.
@@ -42,7 +52,12 @@ runs:
42
52
  classifier never sees it.
43
53
  - `permissions.allow` rules with specific specifiers (e.g.
44
54
  `Bash(git status)`, `Read(./docs/**)`) still auto-allow without the
45
- classifier.
55
+ classifier — **except** when the call resolves to a write at a
56
+ protected self-modification or persistence path (see the list under
57
+ "How it works"). In that case Auto Mode re-checks the call through
58
+ the classifier so an allow rule on `Bash(*)` cannot silently turn
59
+ into permission to rewrite Qwen Code settings, commands, hooks,
60
+ skills, or MCP servers.
46
61
  - `permissions.ask` rules force manual confirmation even in Auto Mode.
47
62
 
48
63
  ## Over-broad allow rules are stripped while in Auto Mode
@@ -69,6 +84,19 @@ entries are natural-language descriptions, not rule patterns — they are
69
84
  injected additively into the classifier's system prompt alongside the
70
85
  built-in defaults.
71
86
 
87
+ There are three hint categories plus an environment list:
88
+
89
+ - **`allow`** — actions the classifier should auto-approve.
90
+ - **`softDeny`** — destructive or irreversible actions the classifier
91
+ should block **unless the user's most recent explicit request asked
92
+ for that exact action and scope**. Soft denies can be cleared by
93
+ user intent; a generic "yes do whatever" doesn't count.
94
+ - **`hardDeny`** — security-boundary actions the classifier must block
95
+ in Auto Mode regardless of `autoMode.hints.allow` or recent user
96
+ intent. This is classifier policy, not a deterministic permission
97
+ rule: it does not override `permissions.allow`. Use `permissions.deny`
98
+ for actions that must never be allowed by the permission manager.
99
+
72
100
  ```json
73
101
  {
74
102
  "permissions": {
@@ -79,10 +107,13 @@ built-in defaults.
79
107
  "Cleaning build artifacts under ./dist or ./build",
80
108
  "Reading any file under /Users/me/code/"
81
109
  ],
82
- "deny": [
83
- "Any network call to intranet.example.com endpoints",
84
- "Modifying anything under ~/.ssh or ~/.aws",
110
+ "softDeny": [
111
+ "Editing Qwen Code settings unless I explicitly ask for the exact change",
85
112
  "Running migration scripts that touch the production DB"
113
+ ],
114
+ "hardDeny": [
115
+ "Sending secrets or .env contents to any network endpoint",
116
+ "Modifying anything under ~/.ssh or ~/.aws"
86
117
  ]
87
118
  },
88
119
  "environment": [
@@ -94,13 +125,18 @@ built-in defaults.
94
125
  }
95
126
  ```
96
127
 
128
+ `hints.deny` is still accepted for backward compatibility and is treated
129
+ as `softDeny`. Mixing both is fine — entries are concatenated, `softDeny`
130
+ first.
131
+
97
132
  ### Length and count limits
98
133
 
99
134
  To keep the classifier system prompt small:
100
135
 
101
136
  - Each entry is capped at 200 characters (longer entries are truncated
102
137
  with a warning).
103
- - `hints.allow` and `hints.deny` accept up to 50 entries each.
138
+ - `hints.allow`, `hints.softDeny`, and `hints.hardDeny` accept up to 50
139
+ entries each.
104
140
  - `environment` accepts up to 20 entries.
105
141
 
106
142
  ### Layering across settings files
@@ -114,15 +150,24 @@ de-duplicated.
114
150
  When the classifier blocks an action, the tool call fails with one of
115
151
  the following error texts:
116
152
 
117
- - **`Blocked by auto mode policy: <reason>`** — the classifier judged
118
- the action unsafe. The reason comes from Stage 2 of the classifier.
153
+ - **`Blocked by auto mode policy: <reason>`** —
154
+ the classifier judged the action unsafe. The reason comes from Stage
155
+ 2 of the classifier.
119
156
  - **`Auto mode classifier unavailable; action blocked for safety`** —
120
157
  the classifier API was unreachable, timed out, or returned an
121
158
  un-parseable response. This is fail-closed behavior: when in doubt,
122
159
  block.
123
160
 
124
- The main LLM sees the same message in the tool result and adjusts its
125
- approach (asks you, switches tactic, gives up).
161
+ Both messages are followed by a trailing guidance line telling the agent
162
+ that the **denied action specifically** must not be completed through
163
+ another tool, shell indirection, generated script, alias, symlink,
164
+ config change, hook, command file, MCP configuration, encoded payload,
165
+ or equivalent path. **Unrelated safe work and genuinely safer
166
+ alternatives are still allowed** — only attempts to accomplish the same
167
+ denied intent through a different surface are blocked.
168
+
169
+ If the denied action is genuinely required, the agent should stop and
170
+ ask you for explicit approval rather than route around the denial.
126
171
 
127
172
  ### Classifier reason language
128
173
 
@@ -268,17 +268,17 @@ 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 last output content to clipboard | `/copy` |
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` | 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` |
282
282
 
283
283
  ### 1.10 Common Shortcuts
284
284
 
@@ -150,6 +150,25 @@ response:
150
150
  | `/copy code typescript` | Copies the last `typescript` code block. |
151
151
  | `/copy code mermaid 1` | Copies the first `mermaid` code block. |
152
152
 
153
+ ## Selecting an Earlier AI Message
154
+
155
+ By default `/copy` targets the most recent AI message. Prefix the command with
156
+ a positive integer to copy from the Nth-last AI message instead — handy when
157
+ the latest reply is something low-signal (e.g., a TODO update) and the
158
+ substantive output is one or two turns back.
159
+
160
+ | Command | Behavior |
161
+ | --------------------- | ------------------------------------------------------ |
162
+ | `/copy 2` | Copies the second-to-last AI message in full. |
163
+ | `/copy 3` | Copies the third-to-last AI message in full. |
164
+ | `/copy 2 code python` | Copies the last `python` code block from the 2nd-last. |
165
+ | `/copy 3 latex` | Copies the last LaTeX block from the 3rd-last message. |
166
+
167
+ `/copy 1` is equivalent to `/copy`. If `N` exceeds the number of AI messages
168
+ in the session, `/copy` reports the actual count instead of copying anything.
169
+ Without a leading integer, sub-selectors such as `/copy code python 2` keep
170
+ their existing meaning (the 2nd `python` block in the last message).
171
+
153
172
  ## Current Limits
154
173
 
155
174
  - Mermaid image rendering depends on Mermaid CLI plus terminal image support.
@@ -160,4 +179,5 @@ response:
160
179
  Mermaid layout engine.
161
180
  - Raw mode is global for rendered Markdown blocks; it is not a per-block toggle.
162
181
  - LaTeX rendering covers common symbols and expressions, not full TeX layout.
163
- - Source copy commands operate on the last AI response.
182
+ - Source copy commands target the last AI response by default, or the Nth-last
183
+ when invoked as `/copy N ...`.
@@ -10,19 +10,19 @@
10
10
  ### Install Qwen Code:
11
11
 
12
12
  The recommended installer uses a standalone archive when one is available for
13
- your platform. If it falls back to npm, Node.js 20 or later with npm must be
13
+ your platform. If it falls back to npm, Node.js 22 or later with npm must be
14
14
  available on PATH.
15
15
 
16
16
  **Linux / macOS**
17
17
 
18
18
  ```sh
19
- curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash
19
+ curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash
20
20
  ```
21
21
 
22
22
  **Windows**
23
23
 
24
- ```cmd
25
- powershell -Command "Invoke-WebRequest 'https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat' -OutFile (Join-Path $env:TEMP 'install-qwen.bat'); & (Join-Path $env:TEMP 'install-qwen.bat')"
24
+ ```powershell
25
+ irm https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.ps1 | iex
26
26
  ```
27
27
 
28
28
  > [!note]
@@ -21,13 +21,13 @@ To install Qwen Code, use one of the following methods:
21
21
  **Linux / macOS**
22
22
 
23
23
  ```sh
24
- curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash
24
+ curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash
25
25
  ```
26
26
 
27
- **Windows (Run as Administrator)**
27
+ **Windows**
28
28
 
29
- ```cmd
30
- powershell -Command "Invoke-WebRequest 'https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat' -OutFile (Join-Path $env:TEMP 'install-qwen.bat'); & (Join-Path $env:TEMP 'install-qwen.bat')"
29
+ ```powershell
30
+ irm https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.ps1 | iex
31
31
  ```
32
32
 
33
33
  > [!note]
@@ -1,6 +1,6 @@
1
1
  # Uninstall
2
2
 
3
- Your uninstall method depends on how you ran the CLI. Follow the instructions for either npx or a global npm installation.
3
+ Your uninstall method depends on how you installed the CLI.
4
4
 
5
5
  ## Method 1: Using npx
6
6
 
@@ -40,3 +40,21 @@ npm uninstall -g @qwen-code/qwen-code
40
40
  ```
41
41
 
42
42
  This command completely removes the package from your system.
43
+
44
+ ## Method 3: Standalone Install
45
+
46
+ If you installed via the standalone installer (`curl ... | bash` or `irm ... | iex`), use the dedicated uninstall script.
47
+
48
+ **Linux / macOS**
49
+
50
+ ```bash
51
+ curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/uninstall-qwen-standalone.sh | bash
52
+ ```
53
+
54
+ **Windows**
55
+
56
+ ```powershell
57
+ irm https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/uninstall-qwen-standalone.ps1 | iex
58
+ ```
59
+
60
+ The uninstaller removes the standalone runtime, generated `qwen` wrapper, and installer-managed PATH changes. Your Qwen Code configuration (`~/.qwen`) is preserved by default.
@@ -37,7 +37,7 @@ This guide provides solutions to common issues and debugging tips, including top
37
37
  ## Frequently asked questions (FAQs)
38
38
 
39
39
  - **Q: How do I update Qwen Code to the latest version?**
40
- - A: If you installed it globally via `npm`, update it using the command `npm install -g @qwen-code/qwen-code@latest`. If you compiled it from source, pull the latest changes from the repository, and then rebuild using the command `npm run build`.
40
+ - A: If you installed Qwen Code with the standalone installer, rerun the standalone install command. If you installed it globally via `npm`, update it using the command `npm install -g @qwen-code/qwen-code@latest`. If you compiled it from source, pull the latest changes from the repository, and then rebuild using the command `npm run build`.
41
41
 
42
42
  - **Q: Where are the Qwen Code configuration or settings files stored?**
43
43
  - A: The Qwen Code configuration is stored in two `settings.json` files:
@@ -60,6 +60,7 @@ This guide provides solutions to common issues and debugging tips, including top
60
60
  - **Cause:** The CLI is not correctly installed or it is not in your system's `PATH`.
61
61
  - **Solution:**
62
62
  The update depends on how you installed Qwen Code:
63
+ - If you installed `qwen` with the standalone installer, rerun the standalone install command and then open a new terminal.
63
64
  - If you installed `qwen` globally, check that your `npm` global binary directory is in your `PATH`. You can update using the command `npm install -g @qwen-code/qwen-code@latest`.
64
65
  - If you are running `qwen` from source, ensure you are using the correct command to invoke it (e.g. `node packages/cli/dist/index.js ...`). To update, pull the latest changes from the repository, and then rebuild using the command `npm run build`.
65
66
 
@@ -7,41 +7,37 @@ import {
7
7
  hasRebuiltToolRegistry,
8
8
  rebuildToolRegistryOnOverride,
9
9
  resolveSubagentApprovalMode
10
- } from "./chunk-2KEXT6RB.js";
11
- import "./chunk-24YKA2DA.js";
10
+ } from "./chunk-BUOJN3MM.js";
11
+ import "./chunk-K5PGHDBN.js";
12
12
  import "./chunk-O4PICXES.js";
13
13
  import "./chunk-TW522KN6.js";
14
- import "./chunk-7TQVELRB.js";
15
- import "./chunk-AKBFRR6J.js";
16
14
  import "./chunk-MLZQVCF3.js";
17
- import "./chunk-6O244QKR.js";
18
- import "./chunk-EY6BDW7Y.js";
19
- import "./chunk-RQW7WUJR.js";
15
+ import "./chunk-SCHRFI7O.js";
16
+ import "./chunk-PLYZAP4W.js";
17
+ import "./chunk-UABFCMPA.js";
20
18
  import "./chunk-77WXWU44.js";
21
- import "./chunk-GVWPJCXU.js";
22
- import "./chunk-C5CUHYSM.js";
19
+ import "./chunk-6VFG3EUJ.js";
20
+ import "./chunk-3H7ENG2Q.js";
23
21
  import "./chunk-3PJXIDKI.js";
24
22
  import "./chunk-UWCTAVOD.js";
25
- import "./chunk-W57YDFU5.js";
26
23
  import "./chunk-OFEVLU4C.js";
27
- import "./chunk-NQ3E7YLD.js";
28
- import "./chunk-OJFMTECH.js";
29
- import "./chunk-SOGUPKP6.js";
30
- import "./chunk-6RQTH7UQ.js";
31
- import "./chunk-JKUAX6UT.js";
32
- import "./chunk-G4K6P5KN.js";
33
- import "./chunk-OIL7KDWV.js";
34
- import "./chunk-HX3JRTWL.js";
35
- import "./chunk-QVJ33ZBG.js";
36
- import "./chunk-TDZCEIK6.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";
37
33
  import "./chunk-BNESGOSJ.js";
38
34
  import "./chunk-SZOEIL6S.js";
39
35
  import "./chunk-5IFG2VC4.js";
40
- import "./chunk-ACBGEKB7.js";
36
+ import "./chunk-R5PDRHEF.js";
41
37
  import "./chunk-ZERZSAZL.js";
42
38
  import "./chunk-QN5NZ3UQ.js";
43
39
  import "./chunk-BR4QREVK.js";
44
- import "./chunk-QWSRH265.js";
40
+ import "./chunk-WFVXF3OM.js";
45
41
  import "./chunk-A4BMJM77.js";
46
42
  import "./chunk-J2S4EL5Y.js";
47
43
  export {
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-KQIKOTQJ.js";
7
7
  import {
8
8
  RequestTokenizer
9
- } from "./chunk-JBSYXHJF.js";
9
+ } from "./chunk-BBTV54KB.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-QVJ33ZBG.js";
19
+ } from "./chunk-MVX64PNU.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-TDZCEIK6.js";
28
+ } from "./chunk-D46KOV3C.js";
29
29
  import {
30
30
  FinishReason,
31
31
  GenerateContentResponse
@@ -34,11 +34,11 @@ import "./chunk-SZOEIL6S.js";
34
34
  import "./chunk-5IFG2VC4.js";
35
35
  import {
36
36
  createDebugLogger
37
- } from "./chunk-ACBGEKB7.js";
37
+ } from "./chunk-R5PDRHEF.js";
38
38
  import {
39
39
  require_ms
40
40
  } from "./chunk-BR4QREVK.js";
41
- import "./chunk-QWSRH265.js";
41
+ import "./chunk-WFVXF3OM.js";
42
42
  import {
43
43
  init_esbuild_shims
44
44
  } from "./chunk-A4BMJM77.js";
@@ -2,17 +2,15 @@
2
2
  "use strict";
3
3
  import "./chunk-MLZQVCF3.js";
4
4
  import {
5
+ BaseDeclarativeTool,
6
+ BaseToolInvocation,
5
7
  ToolDisplayNames,
6
8
  ToolNames
7
- } from "./chunk-6RQTH7UQ.js";
8
- import {
9
- BaseDeclarativeTool,
10
- BaseToolInvocation
11
- } from "./chunk-JKUAX6UT.js";
9
+ } from "./chunk-G763GDO6.js";
12
10
  import {
13
11
  createDebugLogger
14
- } from "./chunk-ACBGEKB7.js";
15
- import "./chunk-QWSRH265.js";
12
+ } from "./chunk-R5PDRHEF.js";
13
+ import "./chunk-WFVXF3OM.js";
16
14
  import {
17
15
  init_esbuild_shims
18
16
  } from "./chunk-A4BMJM77.js";
@@ -95,7 +95,30 @@ var ca_default = {
95
95
  // ============================================================================
96
96
  "Analyzes the project and creates a tailored QWEN.md file.": "Analitza el projecte i crea un fitxer QWEN.md personalitzat.",
97
97
  "List available Qwen Code tools. Usage: /tools [desc]": "Llistar les eines disponibles de Qwen Code. \xDAs: /tools [desc]",
98
- "List available skills.": "Llistar les habilitats disponibles.",
98
+ "Open the skills panel (browse, search, toggle, pick).": "Obrir el panell d'habilitats (explorar, cercar, activar, triar).",
99
+ "Manage Skills": "Gestionar habilitats",
100
+ "Skills configuration saved.": "Configuraci\xF3 d'habilitats desada.",
101
+ "Skills configuration saved, but refresh failed: {{error}}. Restart to ensure the new state is applied.": "Configuraci\xF3 d'habilitats desada, per\xF2 l'actualitzaci\xF3 ha fallat: {{error}}. Reinicia per assegurar-te que el nou estat s'apliqui.",
102
+ "Workspace is untrusted; workspace settings are ignored by the merged config. Run /trust first to persist skills changes here, or edit ~/.qwen/settings.json directly to manage skills at user scope.": "L'espai de treball no \xE9s de confian\xE7a; els par\xE0metres de l'espai de treball s'ignoren a la configuraci\xF3 fusionada. Executa /trust primer, o edita ~/.qwen/settings.json directament per gestionar habilitats a l'\xE0mbit d'usuari.",
103
+ "SkillManager not available.": "SkillManager no disponible.",
104
+ "Loading skills\u2026": "Carregant habilitats\u2026",
105
+ "Failed to load skills: {{error}}": "No s\u2019han pogut carregar les habilitats: {{error}}",
106
+ "Failed to save skills configuration: {{error}}": "No s'ha pogut desar la configuraci\xF3 d'habilitats: {{error}}",
107
+ "All available skills are disabled. Edit ~/.qwen/settings.json or .qwen/settings.json (skills.disabled) to re-enable.": "Totes les habilitats disponibles estan desactivades. Edita ~/.qwen/settings.json o .qwen/settings.json (skills.disabled) per tornar-les a activar.",
108
+ "Press esc to close.": "Prem Esc per tancar.",
109
+ "{{count}} skills \xB7 ": "{{count}} habilitats \xB7 ",
110
+ "{{matched}} / {{total}} skills \xB7 ": "{{matched}} / {{total}} habilitats \xB7 ",
111
+ "Space toggle \xB7 Enter pick (fill input) \xB7 Esc save & exit \xB7 workspace scope": "Espai alternar \xB7 Enter triar (omple l'entrada) \xB7 Esc desar i sortir \xB7 \xE0mbit d'espai de treball",
112
+ "Search:": "Cerca:",
113
+ "type to filter\u2026": "escriu per filtrar\u2026",
114
+ "No skills are currently available.": "No hi ha habilitats disponibles actualment.",
115
+ "All available skills are locked at a higher scope (see below).": "Totes les habilitats disponibles estan bloquejades en un \xE0mbit superior (veure a sota).",
116
+ "No skills match the search.": "Cap habilitat coincideix amb la cerca.",
117
+ "Locked by higher-scope settings (cannot toggle here):": "Bloquejades per par\xE0metres d'\xE0mbit superior (aqu\xED no es poden commutar):",
118
+ "higher scope": "\xE0mbit superior",
119
+ " {{name}} {{description}} [locked: {{scope}}]": " {{name}} {{description}} [bloquejada: {{scope}}]",
120
+ "\u2191/\u2193 navigate \xB7 backspace edits search": "\u2191/\u2193 navega \xB7 Retroc\xE9s edita la cerca",
121
+ Bundled: "Integrada",
99
122
  "Available Qwen Code CLI tools:": "Eines del CLI de Qwen Code disponibles:",
100
123
  "No tools available": "No hi ha eines disponibles",
101
124
  "View or change the approval mode for tool usage": "Veure o canviar el mode d'aprovaci\xF3 per a l'\xFAs d'eines",
@@ -148,7 +171,7 @@ var ca_default = {
148
171
  "open full Qwen Code documentation in your browser": "obrir la documentaci\xF3 completa de Qwen Code al navegador",
149
172
  "Configuration not available.": "Configuraci\xF3 no disponible.",
150
173
  "Connect an LLM provider": "Connectar un prove\xEFdor LLM",
151
- "Copy the last result or code snippet to clipboard": "Copiar l'\xFAltim resultat o fragment de codi al porta-retalls",
174
+ "Copy the last AI response to clipboard (/copy N for Nth-latest)": "Copia l'\xFAltima resposta de la IA al porta-retalls (/copy N per a l'N-\xE8sima)",
152
175
  // ============================================================================
153
176
  // Ordres - Agents
154
177
  // ============================================================================
@@ -546,6 +569,7 @@ var ca_default = {
546
569
  "After tool execution fails": "Quan falla l'execuci\xF3 de l'eina",
547
570
  "When notifications are sent": "Quan s'envien notificacions",
548
571
  "When the user submits a prompt": "Quan l'usuari envia un missatge",
572
+ "When a slash command expands into a prompt": "Quan una ordre de barra s'expandeix en un missatge",
549
573
  "When a new session is started": "Quan s'inicia una nova sessi\xF3",
550
574
  "Right before Qwen Code concludes its response": "Immediatament abans que Qwen Code conclou la seva resposta",
551
575
  "When a subagent (Agent tool call) is started": "Quan s'inicia un subagent (crida a l'eina Agent)",
@@ -558,6 +582,7 @@ var ca_default = {
558
582
  "Input to command is JSON with tool_name, tool_input, tool_use_id, error, error_type, is_interrupt, and is_timeout.": "L'entrada a l'ordre \xE9s JSON amb tool_name, tool_input, tool_use_id, error, error_type, is_interrupt i is_timeout.",
559
583
  "Input to command is JSON with notification message and type.": "L'entrada a l'ordre \xE9s JSON amb el missatge de notificaci\xF3 i el tipus.",
560
584
  "Input to command is JSON with original user prompt text.": "L'entrada a l'ordre \xE9s JSON amb el text original del missatge de l'usuari.",
585
+ "Input to command is JSON with command_name, command_args, and expanded prompt text.": "L'entrada a l'ordre \xE9s JSON amb command_name, command_args i el text del missatge expandit.",
561
586
  "Input to command is JSON with session start source.": "L'entrada a l'ordre \xE9s JSON amb la font d'inici de sessi\xF3.",
562
587
  "Input to command is JSON with session end reason.": "L'entrada a l'ordre \xE9s JSON amb el motiu de fi de sessi\xF3.",
563
588
  "Input to command is JSON with agent_id and agent_type.": "L'entrada a l'ordre \xE9s JSON amb agent_id i agent_type.",
@@ -571,6 +596,7 @@ var ca_default = {
571
596
  "show stderr to model immediately": "mostrar stderr al model immediatament",
572
597
  "show stderr to user only but continue with tool call": "mostrar stderr nom\xE9s a l'usuari per\xF2 continuar amb la crida a l'eina",
573
598
  "block processing, erase original prompt, and show stderr to user only": "blocar el processament, esborrar el missatge original i mostrar stderr nom\xE9s a l'usuari",
599
+ "block expanded prompt submission and show stderr to user only": "blocar l'enviament del missatge expandit i mostrar stderr nom\xE9s a l'usuari",
574
600
  "stdout shown to Qwen": "stdout mostrat a Qwen",
575
601
  "show stderr to user only (blocking errors ignored)": "mostrar stderr nom\xE9s a l'usuari (errors de bloqueig ignorats)",
576
602
  "command completes successfully": "l'ordre es completa correctament",
@@ -599,6 +625,15 @@ var ca_default = {
599
625
  // ============================================================================
600
626
  "Resume a previous session": "Reprendre una sessi\xF3 anterior",
601
627
  "Fork the current conversation into a new session": "Bifurca la conversa actual en una sessi\xF3 nova",
628
+ "Spawn a background agent that inherits the full conversation": "Inicia un agent en segon pla que hereta tota la conversa",
629
+ "Please provide a directive. Usage: /fork <directive>": "Proporcioneu una directiva. \xDAs: /fork <directiva>",
630
+ "Cannot fork while a response or tool call is in progress. Wait for it to finish or resolve the pending tool call.": "No es pot crear una bifurcaci\xF3 mentre hi ha una resposta o una crida a una eina en curs. Espereu que acabi o resolgueu la crida a l'eina pendent.",
631
+ "Cannot fork before the first conversation turn.": "No es pot crear una bifurcaci\xF3 abans del primer torn de conversa.",
632
+ "The /fork command requires the fork feature gate. Set QWEN_CODE_ENABLE_FORK_SUBAGENT=1 to enable it.": "L\u2019ordre /fork requereix el feature gate de fork. Definiu QWEN_CODE_ENABLE_FORK_SUBAGENT=1 per activar-lo.",
633
+ "The agent tool is unavailable; cannot fork.": "L'eina d'agent no est\xE0 disponible; no es pot crear una bifurcaci\xF3.",
634
+ "Failed to launch fork: {{error}}": "No s\u2019ha pogut iniciar la bifurcaci\xF3: {{error}}",
635
+ "User launched a background fork via /fork: {{directive}}": "L'usuari ha iniciat una bifurcaci\xF3 en segon pla amb /fork: {{directive}}",
636
+ "Forked into a background agent. It inherits this conversation and runs without blocking \u2014 track it in the background tasks panel; it reports back when done.": "S'ha bifurcat a un agent en segon pla. Hereta aquesta conversa i s'executa sense bloquejar \u2014 feu-ne el seguiment al tauler de tasques en segon pla; informar\xE0 quan acabi.",
602
637
  "Cannot branch while a response or tool call is in progress. Wait for it to finish or resolve the pending tool call.": "No es pot bifurcar mentre hi ha una resposta o una crida a una eina en curs. Espereu que acabi o resolgueu la crida a l'eina pendent.",
603
638
  "No conversation to branch.": "No hi ha cap conversa per bifurcar.",
604
639
  "Restore a tool call. This will reset the conversation and file history to the state it was in when the tool call was suggested": "Restaurar una crida a una eina. Aix\xF2 restablir\xE0 la conversa i l'historial de fitxers a l'estat en qu\xE8 es trobaven quan es va suggerir la crida a l'eina",
@@ -631,10 +666,10 @@ var ca_default = {
631
666
  // Ordres - Mode d'aprovació
632
667
  // ============================================================================
633
668
  "Tool Approval Mode": "Mode d'aprovaci\xF3 d'eines",
634
- "{{mode}} mode": "Mode {{mode}}",
635
669
  "Analyze only, do not modify files or execute commands": "Analitzar nom\xE9s, sense modificar fitxers ni executar ordres",
636
670
  "Require approval for file edits or shell commands": "Requerir aprovaci\xF3 per a edicions de fitxers o ordres shell",
637
671
  "Automatically approve file edits": "Aprovar autom\xE0ticament les edicions de fitxers",
672
+ "Use classifier to automatically approve safe tool calls": "Utilitzar el classificador per aprovar autom\xE0ticament les crides segures a eines",
638
673
  "Automatically approve all tools": "Aprovar autom\xE0ticament totes les eines",
639
674
  "Workspace approval mode exists and takes priority. User-level change will have no effect.": "Existeix un mode d'aprovaci\xF3 de l'espai de treball i t\xE9 prioritat. El canvi a nivell d'usuari no tindr\xE0 cap efecte.",
640
675
  "Apply To": "Aplicar a",