mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-18 18:07:32 +02:00
Add files via upload
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user