feat: introduce ToolSourceType enum and refactor related code to use it

This commit is contained in:
mlogclub
2026-04-14 15:05:38 +08:00
parent 0ea493e536
commit 8d560bb6bd
12 changed files with 76 additions and 39 deletions
@@ -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
}