Add files via upload

This commit is contained in:
公明
2026-07-16 21:15:00 +08:00
committed by GitHub
parent 787982e802
commit b7a1710051
2 changed files with 20 additions and 4 deletions
+3 -3
View File
@@ -27,9 +27,9 @@ func registerAssetTools(server *mcp.Server, db *database.DB, logger *zap.Logger)
server.RegisterTool(mcp.Tool{
Name: builtin.ToolCreateAsset, ShortDescription: "新增或去重更新资产",
Description: "向资产库新增资产。按目标+端口+协议去重;若资产已存在则更新非空字段。至少提供 host、ip、domain 之一。",
InputSchema: map[string]interface{}{"type": "object", "properties": properties, "anyOf": []interface{}{
map[string]interface{}{"required": []string{"host"}}, map[string]interface{}{"required": []string{"ip"}}, map[string]interface{}{"required": []string{"domain"}},
}},
// Bedrock rejects tool schemas with top-level oneOf/allOf/anyOf. The
// host/ip/domain requirement is enforced by assetFromCreateArgs below.
InputSchema: map[string]interface{}{"type": "object", "properties": properties},
}, func(ctx context.Context, args map[string]interface{}) (*mcp.ToolResult, error) {
asset, err := assetFromCreateArgs(args)
if err != nil {
+17 -1
View File
@@ -47,7 +47,23 @@ func TestAssetToolsCRUDQueryAndPageLimit(t *testing.T) {
}
}
result, _, err := server.CallTool(ctx, builtin.ToolCreateAsset, map[string]interface{}{
for _, tool := range server.GetAllTools() {
if tool.Name != builtin.ToolCreateAsset {
continue
}
for _, keyword := range []string{"oneOf", "allOf", "anyOf"} {
if _, exists := tool.InputSchema[keyword]; exists {
t.Fatalf("create asset schema contains Bedrock-incompatible top-level %s", keyword)
}
}
}
result, _, err := server.CallTool(ctx, builtin.ToolCreateAsset, map[string]interface{}{"title": "Missing target"})
if err != nil || result == nil || !result.IsError {
t.Fatalf("create asset accepted missing host/ip/domain: result=%#v err=%v", result, err)
}
result, _, err = server.CallTool(ctx, builtin.ToolCreateAsset, map[string]interface{}{
"ip": "192.0.2.42", "port": 443, "protocol": "https", "title": "Before", "tags": []interface{}{"prod"},
})
if err != nil || result == nil || result.IsError {