package core import "encoding/json" // 工具契约(4.8):内置、声明式 HTTP、插件工具统一走 ToolProvider 形态。 // Parameters 是 JSON Schema(draft-07 子集即可),调用参数按其校验。 type SourceKind string const ( SourceBuiltin SourceKind = "builtin" SourcePlugin SourceKind = "plugin" SourceUser SourceKind = "user" ) type ToolDesc struct { Name string `json:"name"` Description string `json:"description"` Parameters json.RawMessage `json:"parameters,omitempty"` Source SourceKind `json:"source"` PluginID string `json:"pluginId,omitempty"` HTTP *HTTPToolSpec `json:"http,omitempty"` // 声明式 HTTP 工具(无代码) // Hidden 预留能力形态:默认不对模型与 /api/tools 列表可见,须运行时开关 // (如 runtime.fsTools)或管理动作开启后可用(提案 2026-09-30-file-preview-and-reserved-capabilities)。 Hidden bool `json:"hidden,omitempty"` // ReadOnly、Edits、Risk 是工具注册时的权限声明。Risk 取 low、medium、high。 ReadOnly bool `json:"readOnly,omitempty"` Edits bool `json:"edits,omitempty"` Risk string `json:"risk,omitempty"` } // HTTPToolSpec:无代码自定义工具(4.8)。模板变量 {{param.x}} 从调用参数注入。 type HTTPToolSpec struct { Method string `json:"method"` URL string `json:"url"` Headers map[string]string `json:"headers,omitempty"` BodyTemplate string `json:"bodyTemplate,omitempty"` // JSON 模板 AuthRef string `json:"authRef,omitempty"` // 设置中的密钥引用(settings key) TimeoutMs int `json:"timeoutMs,omitempty"` // ResultPath 从响应 JSON 中裁剪(jq 点路径);空取整个响应。 ResultPath string `json:"resultPath,omitempty"` } type ToolCallRequest struct { CallID string `json:"callId"` Name string `json:"name"` Arguments json.RawMessage `json:"arguments,omitempty"` } type ToolCallResult struct { CallID string `json:"callId"` Status string `json:"status"` // ok | error Output string `json:"output,omitempty"` Truncated bool `json:"truncated,omitempty"` Artifact *Artifact `json:"artifact,omitempty"` // 超长转工件 }