feat: refactor tool metadata resolution to utilize ToolSpec and enhance tool catalog service
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user