feat: implement ResolveToolMetadata function and update tool metadata resolution across the codebase

This commit is contained in:
mlogclub
2026-04-14 09:51:03 +08:00
parent d87253dddd
commit ceb5df87fd
4 changed files with 40 additions and 16 deletions
@@ -125,11 +125,12 @@ func (h *RuntimeTraceHandler) resolveToolMetadata(modelToolName string) (ToolMet
return ToolMetadata{}, false
}
if spec, ok := toolx.GetRegisteredToolSpecByName(modelToolName); ok {
resolved := toolx.ResolveToolMetadata(spec.Code, spec.Name)
return ToolMetadata{
ToolCode: spec.Code,
ServerCode: spec.ServerCode,
ToolName: spec.Name,
SourceType: spec.SourceType,
ToolCode: resolved.ToolCode,
ServerCode: resolved.ServerCode,
ToolName: resolved.ToolName,
SourceType: resolved.SourceType,
}, true
}
metadata, ok := h.toolMetadataBy[modelToolName]
@@ -45,11 +45,12 @@ func buildRuntimeTraceToolMetadata(
}
}
if selectedSkill != nil {
resolved := toolx.ResolveToolMetadata(toolx.BuiltinSkill.Code, toolx.BuiltinSkill.Name)
ret[toolx.BuiltinSkill.Name] = einocallbacks.ToolMetadata{
ToolCode: toolx.BuiltinSkill.Code,
ServerCode: toolx.BuiltinSkill.ServerCode,
ToolName: toolx.BuiltinSkill.Name,
SourceType: toolx.BuiltinSkill.SourceType,
ToolCode: resolved.ToolCode,
ServerCode: resolved.ServerCode,
ToolName: resolved.ToolName,
SourceType: resolved.SourceType,
}
}
return ret
+5 -8
View File
@@ -46,15 +46,12 @@ func (r *Registry) Resolve(ctx Context) (*ToolSet, error) {
}
ret.StaticTools = append(ret.StaticTools, tool)
ret.StaticToolCodes[toolName] = toolCode
serverCode, resolvedToolName, sourceType, _ := toolx.BuildToolMetadata(toolCode)
if resolvedToolName == "" {
resolvedToolName = toolName
}
resolvedMetadata := toolx.ResolveToolMetadata(toolCode, toolName)
ret.StaticToolMetadata[toolName] = ToolMetadata{
ToolCode: toolCode,
ServerCode: serverCode,
ToolName: resolvedToolName,
SourceType: sourceType,
ToolCode: resolvedMetadata.ToolCode,
ServerCode: resolvedMetadata.ServerCode,
ToolName: resolvedMetadata.ToolName,
SourceType: resolvedMetadata.SourceType,
}
}
return ret, nil
+25
View File
@@ -16,6 +16,13 @@ type ToolSpec struct {
Appendix string
}
type ToolMetadata struct {
ToolCode string
ServerCode string
ToolName string
SourceType string
}
var (
BuiltinToolSearch = ToolSpec{
Code: "builtin/tool_search",
@@ -310,6 +317,24 @@ func BuildToolMetadata(toolCode string) (serverCode, toolName, sourceType string
return spec.ServerCode, spec.Name, spec.SourceType, true
}
func ResolveToolMetadata(toolCode string, fallbackName string) ToolMetadata {
toolCode = NormalizeToolCodeAlias(strings.TrimSpace(toolCode))
fallbackName = strings.TrimSpace(fallbackName)
serverCode, toolName, sourceType, ok := BuildToolMetadata(toolCode)
if !ok && toolName == "" {
toolName = fallbackName
}
if toolName == "" {
toolName = fallbackName
}
return ToolMetadata{
ToolCode: toolCode,
ServerCode: strings.TrimSpace(serverCode),
ToolName: strings.TrimSpace(toolName),
SourceType: strings.TrimSpace(sourceType),
}
}
func IsAlwaysAllowedToolCode(toolCode string) bool {
return NormalizeToolCodeAlias(strings.TrimSpace(toolCode)) == GraphHandoffConversation.Code
}