Files
ai-agent/internal/ai/runtime/tooling/tool_result.go
T
t 18c9354095 refactor: 将客服后端重构为宿主可嵌入模块
- 注入数据库、运行时配置、统一响应、文件存储和平台 AI 能力,补充业务读写工具与客户快捷操作契约。

- 移除模块内重复的组织、客户、工单、标签、技能、旧工作流、MCP 和迁移实现,将身份权限与业务主体交由宿主管理。

- 使用 libSQL 重构向量存储,并完善图片消息、访客身份、排队调度、企业微信和支持聊天页面。

- 统一 HTTP、DTO 与 WebSocket 的 snake_case 协议,补齐模块初始化、业务动作和公共载荷等回归测试。
2026-08-28 22:23:13 +08:00

43 lines
1.1 KiB
Go

package tooling
import (
"encoding/json"
"strings"
)
type ToolResult struct {
Handled bool `json:"handled"`
Terminal bool `json:"terminal"`
Action string `json:"action"`
ReplyText string `json:"reply_text,omitempty"`
ReplySent bool `json:"reply_sent,omitempty"`
ShouldRetry bool `json:"should_retry"`
}
func MarshalToolResult(result ToolResult) string {
result.Action = strings.TrimSpace(result.Action)
result.ReplyText = strings.TrimSpace(result.ReplyText)
buf, err := json.Marshal(result)
if err != nil {
return ""
}
return string(buf)
}
func ParseToolResult(raw string) (ToolResult, bool) {
raw = strings.TrimSpace(raw)
if raw == "" {
return ToolResult{}, false
}
var result ToolResult
if err := json.Unmarshal([]byte(raw), &result); err != nil {
return ToolResult{}, false
}
result.Action = strings.TrimSpace(result.Action)
result.ReplyText = strings.TrimSpace(result.ReplyText)
if result.Action == "" && result.ReplyText == "" && !result.Handled && !result.Terminal {
return ToolResult{}, false
}
return result, true
}