* 新增 tools 包:统一工具定义、注册表与 Server 接口,对齐 MCP 规范 * 新增 websocket 包:泛化连接管理、心跳、并发写锁与优雅关闭 * 新增参数读取工具函数,避免类型断言静默失败 * 新增 OSS 路径识别与 JSON 扁平映射还原工具 * 修复租户 SQL 条件插入位置,正确处理 GROUP BY 与 ORDER BY 同时出现的场景
30 lines
982 B
Go
30 lines
982 B
Go
package tools
|
|
|
|
import "fmt"
|
|
|
|
// ToolResult 工具统一返回结构。Code=0 表示成功,非 0 为业务/内部错误码;
|
|
// 调用方(工作流前置/后置钩子、模型 function calling)统一按 Code 判断结果。
|
|
type ToolResult struct {
|
|
Code int `json:"code"` // 0=成功,非 0=失败
|
|
Message string `json:"message"` // 成功说明或错误信息
|
|
Data any `json:"data,omitempty"`
|
|
}
|
|
|
|
// 标准错误码。业务工具可自定义扩展 >500 的错误码。
|
|
const (
|
|
CodeOK = 0 // 成功
|
|
CodeInvalidArgs = 400 // 入参缺失或格式错误
|
|
CodeNotFound = 404 // 工具/数据不存在
|
|
CodeInternal = 500 // 内部执行错误
|
|
)
|
|
|
|
// OK 构造成功结果
|
|
func OK(data any) ToolResult {
|
|
return ToolResult{Code: CodeOK, Data: data}
|
|
}
|
|
|
|
// Fail 构造失败结果,message 支持 fmt 格式化
|
|
func Fail(code int, format string, args ...any) ToolResult {
|
|
return ToolResult{Code: code, Message: fmt.Sprintf(format, args...)}
|
|
}
|