feat: introduce ToolSourceType enum and refactor related code to use it
This commit is contained in:
@@ -93,7 +93,6 @@ func toolSetStaticToolMetadata(toolSet *registry.ToolSet) map[string]registry.To
|
||||
item.ToolCode = strings.TrimSpace(item.ToolCode)
|
||||
item.ServerCode = strings.TrimSpace(item.ServerCode)
|
||||
item.ToolName = strings.TrimSpace(item.ToolName)
|
||||
item.SourceType = strings.TrimSpace(item.SourceType)
|
||||
ret[trimmedName] = item
|
||||
}
|
||||
return ret
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
|
||||
impladapter "cs-agent/internal/ai/runtime/internal/impl/adapter"
|
||||
"cs-agent/internal/pkg/enums"
|
||||
"cs-agent/internal/pkg/toolx"
|
||||
|
||||
einotool "github.com/cloudwego/eino/components/tool"
|
||||
@@ -18,7 +19,7 @@ type ToolMetadata struct {
|
||||
ToolCode string
|
||||
ServerCode string
|
||||
ToolName string
|
||||
SourceType string
|
||||
SourceType enums.ToolSourceType
|
||||
}
|
||||
|
||||
type RuntimeTraceHandler struct {
|
||||
@@ -101,7 +102,7 @@ func (h *RuntimeTraceHandler) WrapInvokableToolCall(_ context.Context, endpoint
|
||||
item.ErrorMessage = err.Error()
|
||||
}
|
||||
h.collector.AddToolItem(item)
|
||||
if metadata, ok := h.resolveToolMetadata(item.ToolName); ok && strings.TrimSpace(metadata.SourceType) == toolx.GraphCreateTicketConfirm.ServerCode {
|
||||
if metadata, ok := h.resolveToolMetadata(item.ToolName); ok && metadata.SourceType == enums.ToolSourceTypeGraph {
|
||||
recommendedAction, riskLevel, ticketDraftReady := parseGraphToolOutcome(item.ToolCode, result)
|
||||
h.collector.AddGraphToolItem(GraphToolTraceItem{
|
||||
ToolCode: item.ToolCode,
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
impladapter "cs-agent/internal/ai/runtime/internal/impl/adapter"
|
||||
runtimetooling "cs-agent/internal/ai/runtime/tooling"
|
||||
"cs-agent/internal/models"
|
||||
"cs-agent/internal/pkg/enums"
|
||||
"cs-agent/internal/pkg/toolx"
|
||||
|
||||
einotool "github.com/cloudwego/eino/components/tool"
|
||||
@@ -34,7 +35,7 @@ func (f *ToolFactory) BuildMCPTools(aiAgent *models.AIAgent) ([]runtimetooling.M
|
||||
if toolCode == "" {
|
||||
toolCode = toolx.BuildMCPToolCode(item.ServerCode, item.ToolName)
|
||||
}
|
||||
if toolx.ResolveToolSourceType(toolCode) != "mcp" {
|
||||
if toolx.ResolveToolSourceType(toolCode) != enums.ToolSourceTypeMCP {
|
||||
continue
|
||||
}
|
||||
serverCode, toolName := toolx.SplitMCPToolCode(toolCode)
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"cs-agent/internal/ai/runtime/registry"
|
||||
runtimetooling "cs-agent/internal/ai/runtime/tooling"
|
||||
"cs-agent/internal/models"
|
||||
"cs-agent/internal/pkg/enums"
|
||||
"cs-agent/internal/pkg/toolx"
|
||||
)
|
||||
|
||||
@@ -37,7 +38,7 @@ func buildRuntimeTraceToolMetadata(
|
||||
ToolCode: strings.TrimSpace(item.ToolCode),
|
||||
ServerCode: strings.TrimSpace(item.ServerCode),
|
||||
ToolName: strings.TrimSpace(item.ToolName),
|
||||
SourceType: "mcp",
|
||||
SourceType: enums.ToolSourceTypeMCP,
|
||||
}
|
||||
}
|
||||
for modelName, metadata := range staticToolMetadata {
|
||||
@@ -45,7 +46,6 @@ func buildRuntimeTraceToolMetadata(
|
||||
metadata.ToolCode = strings.TrimSpace(metadata.ToolCode)
|
||||
metadata.ServerCode = strings.TrimSpace(metadata.ServerCode)
|
||||
metadata.ToolName = strings.TrimSpace(metadata.ToolName)
|
||||
metadata.SourceType = strings.TrimSpace(metadata.SourceType)
|
||||
if modelName == "" || metadata.ToolCode == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -60,8 +60,8 @@ func (r *Registry) Resolve(ctx Context) (*ToolSet, error) {
|
||||
if strings.TrimSpace(resolvedMetadata.ToolName) == "" {
|
||||
resolvedMetadata.ToolName = toolName
|
||||
}
|
||||
if strings.TrimSpace(resolvedMetadata.SourceType) == "" {
|
||||
resolvedMetadata.SourceType = strings.TrimSpace(spec.SourceType)
|
||||
if resolvedMetadata.SourceType == "" {
|
||||
resolvedMetadata.SourceType = spec.SourceType
|
||||
}
|
||||
ret.StaticToolMetadata[toolName] = ToolMetadata{
|
||||
ToolCode: resolvedMetadata.ToolCode,
|
||||
|
||||
@@ -2,6 +2,7 @@ package registry
|
||||
|
||||
import (
|
||||
"cs-agent/internal/models"
|
||||
"cs-agent/internal/pkg/enums"
|
||||
"cs-agent/internal/pkg/toolx"
|
||||
|
||||
einotool "github.com/cloudwego/eino/components/tool"
|
||||
@@ -19,7 +20,7 @@ type ToolMetadata struct {
|
||||
ToolCode string
|
||||
ServerCode string
|
||||
ToolName string
|
||||
SourceType string
|
||||
SourceType enums.ToolSourceType
|
||||
}
|
||||
|
||||
// ToolSet 描述当前运行时可直接挂载到 ToolsNode 上的固定工具集合。
|
||||
|
||||
Reference in New Issue
Block a user