Commit graph

47 commits

Author SHA1 Message Date
Shaojin Wen
1486e85385
feat(cli/sdk): expose /context usage data in non-interactive mode and SDK API (#2916)
Some checks are pending
Qwen Code CI / Post Coverage Comment (push) Blocked by required conditions
Qwen Code CI / Lint (push) Waiting to run
Qwen Code CI / Test (push) Blocked by required conditions
Qwen Code CI / Test-1 (push) Blocked by required conditions
Qwen Code CI / Test-2 (push) Blocked by required conditions
Qwen Code CI / Test-3 (push) Blocked by required conditions
Qwen Code CI / Test-4 (push) Blocked by required conditions
Qwen Code CI / Test-5 (push) Blocked by required conditions
Qwen Code CI / Test-6 (push) Blocked by required conditions
Qwen Code CI / Test-7 (push) Blocked by required conditions
Qwen Code CI / Test-8 (push) Blocked by required conditions
Qwen Code CI / CodeQL (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run
E2E Tests / E2E Test - macOS (push) Waiting to run
* feat(cli): implement non-interactive /context output and diagnostic

- Extract collectContextData() from contextCommand.ts for shared usage.
- Register /context in ALLOWED_BUILTIN_COMMANDS_NON_INTERACTIVE.
- Extend SDK control protocol with GET_CONTEXT_USAGE request.
- Implement handleGetContextUsage in SystemController for programmatic token queries.
- Expose getContextUsage() method in the TypeScript SDK Query interface.

* fix: address review feedback and fix critical bugs in context usage feature

- Add missing `get_context_usage` route in ControlDispatcher (SDK calls would throw)
- Fix `executionMode` defaulting: use `?? 'interactive'` to match other commands
- Validate dynamic import of `collectContextData` before invoking
- Preserve original error message in handleGetContextUsage catch block
- Add ControlDispatcher test for get_context_usage routing
- Add JSDoc comment for context command in non-interactive allowlist

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: re-check abort signal after async operations in handleGetContextUsage

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: add getContextUsage() to SDK TypeScript documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: clarify getContextUsage showDetails is a display hint, not a data filter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: make showDetails affect response shape, add getContextUsage test

- When showDetails is false, return empty detail arrays instead of full
  data so /context and /context detail produce different payloads
- Add unit test for Query.getContextUsage() covering request payload
  and response handling

* fix: strip UI type from SDK response, sync Java SDK protocol

- Remove leaked `type: 'context_usage'` from control response payload
- Add GET_CONTEXT_USAGE to Java SDK protocol mirror (enum, interface,
  union type)

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 03:28:32 +08:00
pomelo
e90abf4c35
docs: update quota exceeded alternatives to OpenRouter and Fireworks (#3217)
* docs: update quota exceeded alternatives to OpenRouter and Fireworks

- Update README.md news section to recommend OpenRouter and Fireworks
  as primary alternatives, with ModelStudio as third option
- Update retry.ts quota error message to include OpenRouter and
  Fireworks URLs for users whose OAuth quota has been exhausted

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(test): update retry test assertions to match new quota error message

* docs: update free tier quota to 100 req/day with sunset notice and alternatives

Update all references to reflect the Qwen OAuth free tier policy change:
- 1,000 → 100 requests/day across code, i18n, and docs
- Add 2026-04-15 sunset date everywhere
- Guide users to OpenRouter, Fireworks AI, or ModelStudio in docs
- Remove CHANGELOG.md

---------

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: tanzhenxin <tanzhenxing1987@gmail.com>
2026-04-13 21:45:38 +08:00
tanzhenxin
7251da0152 feat(channels): add dispatch modes and prompt lifecycle hooks
Add three dispatch modes for handling concurrent messages:
- steer (default): cancel current prompt and start new one
- collect: buffer messages and coalesce into follow-up prompt
- followup: queue messages for sequential processing

Introduce onPromptStart/onPromptEnd lifecycle hooks for working
indicators. These fire only when a prompt actually begins processing,
not for buffered (collect mode) or gated/blocked messages.

Refactor Telegram, WeChat, and DingTalk adapters to use the new hooks
instead of overriding handleInbound, simplifying the working indicator
pattern and ensuring correct behavior with dispatch modes.

This enables better UX for async workflows and prevents indicator
leaks when messages are buffered or cancelled.
2026-03-28 06:19:02 +00:00
tanzhenxin
39103eea5f docs(channels): document attachments and block streaming features
- Add Attachments interface docs with handling examples
- Document block streaming configuration and behavior
- Update architecture diagrams to show attachment resolution
- Add Attachment type to exported types reference
- Update plugin-example README

Covers new structured attachment support and block streaming
that delivers responses as multiple progressive messages.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 14:57:17 +00:00
tanzhenxin
987eebd1c4 docs(channels): add plugin developer guide and rename mock to plugin-example
- Add comprehensive developer guide for building channel plugins
- Add user-facing docs for installing/configuring custom channel plugins
- Replace custom-channels.md with new plugins.md
- Rename @qwen-code/channel-mock to @qwen-code/channel-plugin-example
- Add messageId field to Envelope type for response correlation

This provides clear documentation for developers building custom channel
adapters and renames the mock package to better reflect its purpose as
a reference implementation example.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 03:19:34 +00:00
tanzhenxin
080271031d
Merge pull request #2400 from QwenLM/feat/system-prompt-sdk
feat: add system prompt customization options in SDK and CLI
2026-03-18 11:29:21 +08:00
tanzhenxin
c3f5dd353d docs(tools): document file encoding and platform-specific behavior
Add documentation for encoding detection, default encoding settings,
CRLF handling for batch files, and UTF-8 BOM for PowerShell scripts on
Windows.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 23:03:50 +08:00
tanzhenxin
58bee3dec9
Merge pull request #2388 from QwenLM/fix/remove-enableToolOutputTruncation-setting
fix(core): improve shell tool truncation, simplify tool output handling, and remove summarization
2026-03-16 09:51:37 +08:00
DragonnZhang
ce6be9aadd feat: add system prompt customization options for CLI and SDK 2026-03-16 03:06:35 +08:00
tanzhenxin
5c31341205 Merge remote main into fix/pdf-session-corruption
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-15 21:24:57 +08:00
tanzhenxin
6997636ba4 fix(fileUtils): use config modalities instead of model-based defaults
This fixes session corruption issues where the modality check was based on
the model name rather than the actual resolved config, causing inconsistent
behavior when the config's modalities differed from the defaults.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-15 21:22:57 +08:00
tanzhenxin
6e0cf6541d refactor(telemetry): update session event fields to match current config
- Remove deprecated fields: embedding_model, api_key_enabled, vertex_ai_enabled, log_prompts_enabled
- Add new fields: truncate_tool_output_threshold, truncate_tool_output_lines, hooks, ide_enabled, interactive_shell_enabled

This aligns telemetry data with the current CLI configuration options.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-15 12:06:01 +08:00
tanzhenxin
affddfe021 docs(shell): clarify enableInteractiveShell default behavior
Document that the setting defaults to true on most platforms but false
on Windows builds <= 19041 due to ConPTY reliability issues, matching
VS Code's approach.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-13 17:16:47 +08:00
tanzhenxin
38dafeb839 Merge branch 'main' into feat/mcp-tui 2026-03-06 15:03:47 +08:00
tanzhenxin
3a549419ba Merge branch 'main' into feat/sandbox-config-improvements 2026-03-06 14:38:39 +08:00
LaZzyMan
7b227a7eb5 Merge branch 'main' into feat/mcp-tui 2026-03-06 14:27:56 +08:00
Drew Duncan
e2ca264874 Merge main to get modalityDefaults support 2026-03-03 20:30:50 -08:00
tanzhenxin
d3cdad5100 feat(cli): improve auth dialog UX with clearer three-option layout
- Replace nested API-KEY submenu with flat three-option layout
- Add descriptive labels for each authentication method:
  - Qwen OAuth: Free, up to 1,000 requests/day
  - Alibaba Cloud Coding Plan: Paid, multiple model providers
  - API Key: Bring your own API key
- Simplify region selection for Coding Plan (China vs Global)
- Use DescriptiveRadioButtonSelect for better visual hierarchy
- Add itemGap prop to BaseSelectionList for spacing
- Update i18n strings in en.js, zh.js, and ru.js
- Simplify custom API key configuration info view
- Clean up unused region-specific strings

Closes #2016

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-01 15:22:35 +08:00
Drew Duncan
de20bb12bd fix(core): reject PDF files to prevent session corruption (fixes #2020) 2026-02-28 10:23:36 -08:00
joeytoday
ec178b782f docs: fix custom command path in mapping table
- Corrected the file path in commands.md mapping table from
  '<project>/commands/git/commit.md' to '<project>/.qwen/commands/git/commit.md'
- Removed trailing blank line in sandbox.md code block

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 12:51:05 +08:00
LaZzyMan
1542a2bdc4 Merge branch 'main' into feat/mcp-tui 2026-02-25 16:31:42 +08:00
LaZzyMan
fe4ca16088 refactor: remove deprecated list and refresh MCP commands
- Delete listCommand and refreshCommand from mcpCommand.ts
- Update subCommands to only include manageCommand and authCommand
- Update documentation to reference MCP management dialog instead of CLI commands
- Simplify mcp command description to focus on management dialog and OAuth auth

Note: i18n strings for deprecated commands are kept for backward compatibility
2026-02-25 11:58:41 +08:00
pomelo-nwu
4013c7c5db docs: update roadmap.md 2026-02-25 11:58:01 +08:00
pomelo-nwu
8b3aeb4550 refactor: unify sandbox configuration naming and improve telemetry config
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-11 11:08:15 +08:00
tanzhenxin
a4ffc6eb24 feat: promote Agent Skills from experimental to stable
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-06 13:04:08 +08:00
pomelo-nwu
0aedfbd779 chore: 降低 Qwen OAuth 免费配额从 2000 次到每天 1000 次
为了让更多用户能够使用 Qwen Code,将 Qwen OAuth 的免费额度从每天 2000 次降低到每天 1000 次。修改涉及以下文档:
- CHANGELOG.md: 更新版本说明
- README.md: 更新功能介绍
- docs/developers/tools/web-search.md: 更新 Web Search 工具文档
- docs/users/configuration/auth.md: 更新认证文档

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-05 19:51:16 +08:00
tanzhenxin
46327f219e feat(core): add disableCacheControl support for Anthropic provider
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-04 15:03:37 +08:00
LaZzyMan
bc7e586028 Merge branch 'main' into feat/extension 2026-01-22 11:41:04 +08:00
LaZzyMan
5f3f81b666 docs move extension to user and hide create docs 2026-01-21 19:57:26 +08:00
LaZzyMan
f467054372 feat: remove excludeTools in extension 2026-01-20 17:50:18 +08:00
LaZzyMan
6e641b8def feat: add docs 2026-01-19 14:51:49 +08:00
tanzhenxin
35c865968f chore: remove tiktoken dependency and replace with character-based token estimation 2026-01-17 22:39:18 +08:00
刘伟光
f762a62a2e feat: Improve the usage documentation 2026-01-13 18:54:26 +08:00
刘伟光
c0c94bd4fc feat: Customizing the sandbox environment 2026-01-13 10:39:32 +08:00
skyfire
ad3086f7dd add qwencode-sdk java doc 2026-01-06 17:18:41 +08:00
skyfire
8f3bbef575 add qwencode-sdk java doc 2026-01-06 17:11:47 +08:00
kefuxin
573c33f68a Merge remote-tracking branch 'upstream/main' into fix/issue-1186-schema-converter 2025-12-16 11:08:51 +08:00
pomelo-nwu
3691ee7038 feat: update docs 2025-12-15 22:17:22 +08:00
pomelo-nwu
53486b7fd3 Merge branch 'main' into docs-byYijing 2025-12-15 19:42:20 +08:00
pomelo-nwu
5742a69d8a feat: update docs 2025-12-15 19:40:14 +08:00
pomelo-nwu
60211b8180 feat: update docs 2025-12-15 09:47:03 +08:00
pomelo-nwu
4d4e9a7b3d docs(menu): reorder contributing
guide in developer docs menu
2025-12-11 21:06:12 +08:00
pomelo-nwu
4fbc329361 docs(roadmap): update feature
versions for QwenCode SDK, Session, Headless
     Mode, and ACP/Zed
2025-12-11 21:03:44 +08:00
pomelo-nwu
692d6e227e docs: enhance architecture documentation and add contribution guidelines 2025-12-11 18:31:24 +08:00
pomelo-nwu
e12a80b24e feat: update docs 2025-12-09 20:16:03 +08:00
pomelo-nwu
bfe8133ea3 feat: refactor docs 2025-12-05 10:51:57 +08:00
pomelo-nwu
17785c418d feat: restructure docs 2025-12-04 18:26:05 +08:00