feat: implement ResolveToolMetadata function and update tool metadata resolution across the codebase
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user