When a file is skipped because the model doesn't support a modality,
it should not be treated as an error. The error field was incorrectly
being set alongside the informational message.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Adds the required getContentGeneratorConfig mock to read-file.test.ts
and pathReader.test.ts to fix failing tests that depend on content
generator configuration.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
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>
- Increase description warning threshold from 500 to 1,000 characters
- Change system prompt 10,000 char limit from error to warning
- Remove intermediate 5,000 char warning threshold for system prompts
- Update documentation to reflect soft warning behavior
This provides more flexibility for users while still guiding them
toward better practices.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Restructures the convertOpenAIResponseToGemini method to set
response.candidates within the choice conditional block, making
the empty choices handling more explicit and the control flow clearer.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
The streaming path (convertOpenAIChunkToGemini) already uses optional
chaining on choices and guards with `if (choice)`, but the
non-streaming path accesses choices[0] directly. Providers that return
an empty choices array cause a TypeError crash.
Made-with: Cursor
deepseek-r1 normalizes to `deepseek-r1` which does not match the
existing `^deepseek-reasoner` output pattern, causing it to fall
through to the 8K default. DeepSeek R1 supports 64K output tokens,
same as deepseek-reasoner. Without this fix, responses from
deepseek-r1 are silently truncated at 8K tokens.
Made-with: Cursor
ConPTY on Windows builds <= 19041 has known reliability issues including
missing output and hangs. VS Code uses the same cutoff.
This fixes run_shell_command returning empty output on affected Windows
systems by falling back to spawn-based execution instead of node-pty.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Enable windowsVerbatimArguments only when shell is cmd.exe
- PowerShell requires default escaping for correct arg round-trip
The windowsVerbatimArguments option skips Node's MSVC CRT escaping,
which cmd.exe doesn't understand. PowerShell (.NET) needs the default
escaping so args pass correctly through CommandLineToArgvW.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
PowerShell handles array args correctly via CommandLineToArgvW, and
the string form breaks quoted paths ending in backslash (e.g.,
"C:\Temp\") because \" is treated as an escaped quote.
This refines the previous fix to only apply the workaround to cmd.exe.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
On Windows, node-pty's argsToCommandLine re-quotes array elements that
contain spaces, which mangles user-provided quoted arguments. For example,
'type "hello world"' becomes '"type \"hello world\""'.
By passing args as a single string instead of an array on Windows,
node-pty concatenates it verbatim, preserving the original quoting.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Updates test expectations for GLM-5 and GLM-4.7 output limits
from 16K to 128K to align with the implementation changes.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
GPT-5.x models have 400K total context but 128K is reserved for output,
so the actual input limit is 272K (400K - 128K). Also updates GLM-5 and
GLM-4.7 output limits from 16K to 128K.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Track the active OAuth callback server at module level. When a new
authentication is started, close any previously running callback server
first to avoid 'listen EADDRINUSE: address already in use :::7777'
errors that occur when the user navigates back and re-enters auth.
- Show tool count and completion message after successful authentication
- Auto-navigate back to server details after auth success (2s delay)
- Add structured i18n messages for OAuth display (core emits key/params, CLI translates)
- Add 'Clear Authentication' option for servers with stored OAuth tokens
- Fix: clearing auth now disconnects server (not just deleting tokens)
- Fix: auth popup infinite loop caused by onSuccess triggering reload/remount cycle
- Add ToolRegistry.disconnectServer() (disconnect without adding to exclusion list)
- Add i18n translations for all 6 languages (en/zh/de/ja/pt/ru)
Add output truncation for directory listings when entries exceed
configured line limit. This prevents overwhelming output for large
directories while still informing users of truncated content.
- Add MAX_ENTRY_COUNT constant (100) as upper bound
- Use getTruncateToolOutputLines() config for dynamic limits
- Show truncated item count with proper singular/plural handling
- Update output format with --- separators for clarity
- Add comprehensive tests for truncation behavior
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
DeepSeek API requires message content to be a plain string, not an array
of content parts. This fix flattens text-part arrays into joined strings
and replaces non-text parts with placeholder text.
Fixes#2158, Fixes#2318
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
On Windows, non-administrator users do not have permission to create
symlinks by default. Using core.symlinks=true during git clone causes
checkout to fail with 'Permission denied' errors when the repository
contains symlinks.
This fix dynamically sets core.symlinks based on the current platform:
- win32: core.symlinks=false (avoids permission errors)
- other platforms: core.symlinks=true (preserves existing behavior)
Fixes#2243
The index.ts barrel file had 30+ modules exported multiple times across
scattered sections. This consolidates all exports into a single
well-organized structure with clear section headers, removing 90 lines
of redundant export statements. No functional changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace Promise-based dns.promises.lookup with callback-based dns.lookup
for better compatibility across different Node.js environments (e.g.,
VSCode, Cursor).
The callback-based approach avoids potential issues with Promise-based
DNS lookup in certain IDE embedded terminal environments.