Enforce strict tool name collision errors (#37020)

## What changed

- Track the first duplicate effective tool name while assembling the tool registry, including collisions introduced by external tools, code mode, and tool search.
- When `[features.tool_registry].error_on_tool_collisions` is enabled, fail the turn with a `duplicate tool: <namespace>.<name>` error before sending a model request.
- Continue allowing identical tool names in different namespaces, and preserve the existing collision behavior when strict checking is disabled.

## Testing

- Cover registry collision tracking, strict tool planning across tool sources, namespace isolation, failure before sampling, and pre-sampling compaction.

GitOrigin-RevId: 4cf83538fb513cec0b9c8b567780caaaadd3243d
This commit is contained in:
rka-oai authored and copyberry committed 2026-08-05 04:00:50 +00:00
1 parent 5d89ab65dc
commit 1e489adad0
13 files changed
+374 -17

No files matched your search

+1 -1
View File
@@ -3102,7 +3102,7 @@ impl Session {
prepared_recommendations,
)
.or_cancel(cancellation_token)
.await?;
.await??;
Ok(Arc::new(StepContext {
turn: turn_context,
environments,