DashScope / Aliyun Qwen (OpenAI-compatible) rejects `tools: []` with HTTP 400 `"[] is too short - 'tools'"`. Five providers used a truthy check (`if (context.tools)`) that treated an empty array as "send tools", so `pi --no-tools` produced `tools: []` in the request body. Matching the Google provider's pattern, we now guard on `context.tools.length > 0`: - openai-completions.ts - openai-responses.ts - openai-codex-responses.ts - azure-openai-responses.ts - anthropic.ts The openai-completions fallback that emits `tools: []` when the conversation has tool history (required by LiteLLM / Anthropic proxies) is preserved via the existing `else if (hasToolHistory)` branch. closes #3649 Co-authored-by: 槐聚 <huaiju@zbyte-inc.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
3.9 KiB
3.9 KiB