Merge origin/main into feat/hermes-relay-shared-metrics

Signed-off-by: Alex Fournier <afournier@nvidia.com>
This commit is contained in:
Alex Fournier
2026-07-26 09:21:19 -07:00
1114 changed files with 96474 additions and 8371 deletions
+18 -3
View File
@@ -569,10 +569,15 @@ def _compute_tool_definitions(
config=ts_cfg,
)
if assembly.activated and not quiet_mode:
_forms = {"full": "catalog listing embedded",
"names": "names-only listing embedded",
"mixed": "listing embedded (oversized servers summarized)",
"groups": "server summary embedded (search-only discovery)",
"none": "no listing (search-only)"}
print(
f"🔎 Tool Search: {assembly.deferred_count} MCP/plugin tools deferred "
f"(~{assembly.deferred_tokens} tokens) behind tool_search/describe/call. "
f"Threshold ~{assembly.threshold_tokens} tokens."
f"🔎 Tool Search (tier {assembly.tier}): {assembly.deferred_count} "
f"MCP/plugin tools deferred (~{assembly.deferred_tokens} tokens) behind "
f"tool_search/describe/call — {_forms.get(assembly.listing_form, assembly.listing_form)}."
)
filtered_tools = assembly.tool_defs
except Exception as e: # pragma: no cover — never break tool loading
@@ -726,6 +731,16 @@ def coerce_tool_args(tool_name: str, args: Dict[str, Any]) -> Dict[str, Any]:
if not properties:
return args
# The model saw the SANITIZED schema — property keys violating provider
# patterns (e.g. Cloudflare's ``issue_class~neq``) were renamed before
# the request. Map any sanitized keys back to the registry's original
# wire names before schema lookup / dispatch.
try:
from tools.schema_sanitizer import unrename_tool_args
args = unrename_tool_args(schema.get("parameters"), args)
except Exception: # pragma: no cover — never break dispatch
pass
for key, value in list(args.items()):
prop_schema = properties.get(key)
if not prop_schema: