feat: refactor tool metadata resolution to utilize ToolSpec and enhance tool catalog service

This commit is contained in:
mlogclub
2026-04-12 22:30:00 +08:00
parent 11252d31da
commit ef6815a3c6
3 changed files with 46 additions and 32 deletions
+38
View File
@@ -82,10 +82,16 @@ var (
GraphCreateTicketConfirm,
GraphHandoffConversation,
}
AgentDirectToolSpecs = []ToolSpec{
GraphCreateTicketConfirm,
GraphHandoffConversation,
BuiltinToolSearch,
}
)
var (
toolSpecByCode = buildToolSpecByCode()
toolSpecByName = buildToolSpecByName()
toolAliasToCanonical = buildToolAliasToCanonical()
)
@@ -114,6 +120,18 @@ func buildToolAliasToCanonical() map[string]string {
return ret
}
func buildToolSpecByName() map[string]ToolSpec {
ret := make(map[string]ToolSpec, len(RegisteredToolSpecs))
for _, spec := range RegisteredToolSpecs {
name := strings.TrimSpace(spec.Name)
if name == "" {
continue
}
ret[name] = spec
}
return ret
}
func ListRegisteredToolSpecs() []ToolSpec {
return append([]ToolSpec(nil), RegisteredToolSpecs...)
}
@@ -124,6 +142,12 @@ func GetRegisteredToolSpec(toolCode string) (ToolSpec, bool) {
return spec, ok
}
func GetRegisteredToolSpecByName(name string) (ToolSpec, bool) {
name = strings.TrimSpace(name)
spec, ok := toolSpecByName[name]
return spec, ok
}
func GetRegisteredToolTitle(toolCode string) string {
spec, ok := GetRegisteredToolSpec(toolCode)
if !ok {
@@ -168,6 +192,20 @@ func IsAutoInjectedToolCode(toolCode string) bool {
return ok && spec.AutoInjected
}
func ListAgentDirectToolSpecs() []ToolSpec {
return append([]ToolSpec(nil), AgentDirectToolSpecs...)
}
func IsAgentDirectToolCode(toolCode string) bool {
toolCode = NormalizeToolCodeAlias(strings.TrimSpace(toolCode))
for _, spec := range AgentDirectToolSpecs {
if spec.Code == toolCode {
return true
}
}
return false
}
func NormalizeToolCodeAlias(toolCode string) string {
toolCode = strings.TrimSpace(toolCode)
if canonical, ok := toolAliasToCanonical[toolCode]; ok {