singularity-forge/packages
Mikael Hugo 58b1d7c601 port(pi-mono): omit tools field instead of sending empty array (refs 3e0ee69b5)
Pi-mono Tier 0 #2 — sf-driven port of PR #3650.

Some LLM providers reject API calls when `tools: []` is sent (an empty
array), but accept the call when the tools field is omitted entirely.
This guards each provider's request-body builder to omit `tools` when
the tool list is empty, instead of serialising the empty array.

Files (5 provider builders):
- packages/pi-ai/src/providers/openai-completions.ts
- packages/pi-ai/src/providers/openai-responses.ts
- packages/pi-ai/src/providers/openai-codex-responses.ts
- packages/pi-ai/src/providers/azure-openai-responses.ts
- packages/pi-ai/src/providers/anthropic-shared.ts (covers anthropic
  and anthropic-vertex which both import buildParams from it)

Pattern: `if (context.tools)` → `if (context.tools && context.tools.length > 0)`.

Preserved: the `else if (hasToolHistory(context.messages))` branch in
openai-completions.ts that intentionally emits `tools: []` for
LiteLLM/Anthropic-proxy compatibility is unchanged.

Type-check passes.

Co-Authored-By: sf v2.75.1 (session 38ed0a48)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 14:22:31 +02:00
..
daemon release: v2.75.0 2026-04-17 17:26:59 +00:00
mcp-server feat(providers): add xiaomi direct API (token-plan-{ams,sgp,cn}) — additive 2026-04-29 13:54:43 +02:00
native sf snapshot: uncommitted changes after 248m inactivity 2026-04-28 21:10:17 +02:00
pi-agent-core Cherry-pick 4 critical recovery fixes from pi-mono upstream 2026-04-18 14:28:15 +02:00
pi-ai port(pi-mono): omit tools field instead of sending empty array (refs 3e0ee69b5) 2026-04-29 14:22:31 +02:00
pi-coding-agent port(pi-mono): escape session metadata + image data in HTML export (refs 7617c1ad9, 57787b655) 2026-04-29 14:20:23 +02:00
pi-tui release: v2.75.0 2026-04-17 17:26:59 +00:00
rpc-client release: v2.75.0 2026-04-17 17:26:59 +00:00