zeroclaw/src
Edvard 508fb53ac1 fix(provider): delegate native tool calling through ReliableProvider
ReliableProvider wraps underlying providers with retry/fallback logic
but did not delegate `supports_native_tools()` or `chat_with_tools()`.
This caused the agent loop to fall back to prompt-based tool calling
for all providers, even those with native tool support (OpenRouter,
OpenAI, Anthropic). Models like Gemini 2.0 Flash would then output
tool calls as text instead of structured API responses, breaking the
tool execution loop entirely.

Add `supports_native_tools()` delegation to the primary provider and
`chat_with_tools()` with the same retry/fallback logic as the existing
`chat_with_system()` and `chat_with_history()` methods.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 10:15:46 +08:00
..
agent feat: add /clear command 2026-02-18 10:01:22 +08:00
approval refactor(sync): migrate remaining std mutex usage to parking_lot 2026-02-18 00:45:26 +08:00
channels style(channels): apply rustfmt drift after main rebase 2026-02-18 00:45:26 +08:00
config fix(gateway): harden client identity and bound key stores 2026-02-18 10:05:44 +08:00
cost refactor(sync): migrate remaining std mutex usage to parking_lot 2026-02-18 00:45:26 +08:00
cron feat(channels): add Mattermost integration for sovereign communication 2026-02-18 00:19:20 +08:00
daemon fix(dingtalk,daemon): process stream callbacks and supervise DingTalk channel 2026-02-18 00:42:40 +08:00
doctor feat(doctor): harden provider and workspace diagnostics 2026-02-17 17:20:56 +08:00
gateway fix(gateway): honor configured max key bounds 2026-02-18 10:05:44 +08:00
hardware fix(agent): parse tool-call alias tags in channel runtime 2026-02-18 00:28:08 +08:00
health refactor(sync): migrate remaining std mutex usage to parking_lot 2026-02-18 00:45:26 +08:00
heartbeat test: deepen and complete project-wide test coverage (#297) 2026-02-16 05:58:24 -05:00
integrations refactor(provider): unify China alias families across modules 2026-02-18 01:01:57 +08:00
memory refactor(sync): migrate remaining std mutex usage to parking_lot 2026-02-18 00:45:26 +08:00
observability fix(build): complete strict lint and test cleanup (replacement for #476) 2026-02-18 00:18:54 +08:00
onboard fix(provider): address Astrai follow-up review from #486 2026-02-18 10:00:32 +08:00
peripherals fix(agent): parse tool-call alias tags in channel runtime 2026-02-18 00:28:08 +08:00
providers fix(provider): delegate native tool calling through ReliableProvider 2026-02-18 10:15:46 +08:00
rag chore(lint): extend low-risk clippy cleanup batch 2026-02-17 16:40:58 +08:00
runtime fix: replace std::sync::Mutex with parking_lot::Mutex (#350) 2026-02-16 15:02:46 -05:00
security fix(ci): unblock dependabot dependency PR checks (#658) 2026-02-17 15:51:07 -05:00
service fix(gateway): persist pairing tokens and honor docker config (#630) 2026-02-17 15:05:56 -05:00
skillforge fix(providers): use Bearer auth for Gemini CLI OAuth tokens 2026-02-15 14:32:33 -05:00
skills Merge remote-tracking branch 'origin/main' into feat/glm-provider 2026-02-17 13:27:58 -05:00
tools fix(policy): treat git branch listing as read-only operation 2026-02-18 09:15:28 +08:00
tunnel test: deepen and complete project-wide test coverage (#297) 2026-02-16 05:58:24 -05:00
identity.rs fix(providers): use Bearer auth for Gemini CLI OAuth tokens 2026-02-15 14:32:33 -05:00
lib.rs feat(approval): interactive approval workflow for supervised mode (#215) 2026-02-17 23:06:12 +08:00
main.rs chore(ci): align formatting and clippy output for gates 2026-02-18 00:50:51 +08:00
migration.rs feat(memory): add session_id isolation to Memory trait (#530) 2026-02-17 07:44:05 -05:00
util.rs fix(channels): check response status in send() for Telegram, Slack, and Discord 2026-02-15 09:48:58 -05:00