When a model emits tool invocations as plain assistant text instead of
using the function-calling API (e.g. "execute_code: steps=[...]"), the
loop now returns ToolUnsupportedError. This lets freeloader blacklist the
model and cycle to one that properly supports function calling.
Detection: after a turn with stopReason="stop" and no API-level tool
calls, scan assistant text for any registered tool name followed by ':'
or '('. Only fires when tools are configured.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| commands.go | ||
| core.go | ||
| core_test.go | ||
| cost.go | ||
| cost_test.go | ||
| fifo_test.go | ||
| hooks.go | ||
| loop.go | ||
| loop_cache_test.go | ||
| loop_parallel_test.go | ||
| loop_prune.go | ||
| loop_prune_test.go | ||
| loop_texttool_test.go | ||
| loop_truncate_test.go | ||
| loop_turnerror_test.go | ||
| prompt_resolver.go | ||
| session.go | ||
| state.go | ||
| types.go | ||
| waitchange_test.go | ||