fix: resolve global AntiRisk configuration not taking effect

This commit is contained in:
lilong.129
2025-05-29 19:22:23 +08:00
parent d3011d467e
commit dc20eaa816
3 changed files with 29 additions and 17 deletions
+1 -1
View File
@@ -1 +1 @@
v5.0.0-beta-2505290059 v5.0.0-beta-2505291922
+1 -3
View File
@@ -374,9 +374,7 @@ func NewCaseRunner(testcase TestCase, hrpRunner *HRPRunner) (*CaseRunner, error)
if mcpConfigPath != "" { if mcpConfigPath != "" {
mcpHost, err := mcphost.NewMCPHost(mcpConfigPath, false) mcpHost, err := mcphost.NewMCPHost(mcpConfigPath, false)
if err != nil { if err != nil {
log.Error().Err(err). return nil, errors.Wrapf(err, "init mcp config %s failed", mcpConfigPath)
Str("mcpConfigPath", mcpConfigPath).Msg("init MCP hub failed")
return nil, err
} }
caseRunner.parser.MCPHost = mcpHost caseRunner.parser.MCPHost = mcpHost
log.Info().Str("mcpConfigPath", mcpConfigPath).Msg("mcp server loaded") log.Info().Str("mcpConfigPath", mcpConfigPath).Msg("mcp server loaded")
+27 -13
View File
@@ -4,6 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"fmt" "fmt"
"slices"
"time" "time"
"github.com/danielpaulus/go-ios/ios" "github.com/danielpaulus/go-ios/ios"
@@ -967,21 +968,16 @@ func (t *ToolSwipeDirection) Implement() server.ToolHandlerFunc {
if err := mapToStruct(request.Params.Arguments, &unifiedReq); err != nil { if err := mapToStruct(request.Params.Arguments, &unifiedReq); err != nil {
return nil, fmt.Errorf("parse parameters error: %w", err) return nil, fmt.Errorf("parse parameters error: %w", err)
} }
swipeDirection := unifiedReq.Direction.(string)
// Swipe action logic // Swipe action logic
log.Info().Interface("direction", unifiedReq.Direction).Msg("performing swipe") log.Info().Str("direction", swipeDirection).Msg("performing swipe")
// Validate direction // Validate direction
validDirections := []string{"up", "down", "left", "right"} validDirections := []string{"up", "down", "left", "right"}
isValid := false if !slices.Contains(validDirections, swipeDirection) {
for _, validDir := range validDirections { return nil, fmt.Errorf("invalid swipe direction: %s, expected one of: %v",
if unifiedReq.Direction == validDir { swipeDirection, validDirections)
isValid = true
break
}
}
if !isValid {
return nil, fmt.Errorf("invalid swipe direction: %s, expected one of: %v", unifiedReq.Direction, validDirections)
} }
opts := []option.ActionOption{ opts := []option.ActionOption{
@@ -989,9 +985,12 @@ func (t *ToolSwipeDirection) Implement() server.ToolHandlerFunc {
option.WithDuration(getFloat64ValueOrDefault(unifiedReq.Duration, 0.5)), option.WithDuration(getFloat64ValueOrDefault(unifiedReq.Duration, 0.5)),
option.WithPressDuration(getFloat64ValueOrDefault(unifiedReq.PressDuration, 0.1)), option.WithPressDuration(getFloat64ValueOrDefault(unifiedReq.PressDuration, 0.1)),
} }
if unifiedReq.AntiRisk {
opts = append(opts, option.WithAntiRisk(true))
}
// Convert direction to coordinates and perform swipe // Convert direction to coordinates and perform swipe
switch unifiedReq.Direction { switch swipeDirection {
case "up": case "up":
err = driverExt.Swipe(0.5, 0.5, 0.5, 0.1, opts...) err = driverExt.Swipe(0.5, 0.5, 0.5, 0.1, opts...)
case "down": case "down":
@@ -1001,14 +1000,15 @@ func (t *ToolSwipeDirection) Implement() server.ToolHandlerFunc {
case "right": case "right":
err = driverExt.Swipe(0.5, 0.5, 0.9, 0.5, opts...) err = driverExt.Swipe(0.5, 0.5, 0.9, 0.5, opts...)
default: default:
return mcp.NewToolResultError(fmt.Sprintf("Unexpected swipe direction: %s", unifiedReq.Direction)), nil return mcp.NewToolResultError(
fmt.Sprintf("Unexpected swipe direction: %s", swipeDirection)), nil
} }
if err != nil { if err != nil {
return mcp.NewToolResultError(fmt.Sprintf("Swipe failed: %s", err.Error())), nil return mcp.NewToolResultError(fmt.Sprintf("Swipe failed: %s", err.Error())), nil
} }
return mcp.NewToolResultText(fmt.Sprintf("Successfully swiped %s", unifiedReq.Direction)), nil return mcp.NewToolResultText(fmt.Sprintf("Successfully swiped %s", swipeDirection)), nil
} }
} }
@@ -1025,6 +1025,10 @@ func (t *ToolSwipeDirection) ConvertActionToCallToolRequest(action MobileAction)
if pressDuration := action.ActionOptions.PressDuration; pressDuration > 0 { if pressDuration := action.ActionOptions.PressDuration; pressDuration > 0 {
arguments["pressDuration"] = pressDuration arguments["pressDuration"] = pressDuration
} }
// Extract all action options
extractActionOptionsToArguments(action.GetOptions(), arguments)
return buildMCPCallToolRequest(t.Name(), arguments), nil return buildMCPCallToolRequest(t.Name(), arguments), nil
} }
return mcp.CallToolRequest{}, fmt.Errorf("invalid swipe params: %v", action.Params) return mcp.CallToolRequest{}, fmt.Errorf("invalid swipe params: %v", action.Params)
@@ -1070,6 +1074,8 @@ func (t *ToolSwipeCoordinate) Implement() server.ToolHandlerFunc {
Msg("performing advanced swipe") Msg("performing advanced swipe")
params := []float64{unifiedReq.FromX, unifiedReq.FromY, unifiedReq.ToX, unifiedReq.ToY} params := []float64{unifiedReq.FromX, unifiedReq.FromY, unifiedReq.ToX, unifiedReq.ToY}
// Build action options from the unified request
opts := []option.ActionOption{} opts := []option.ActionOption{}
if unifiedReq.Duration > 0 { if unifiedReq.Duration > 0 {
opts = append(opts, option.WithDuration(unifiedReq.Duration)) opts = append(opts, option.WithDuration(unifiedReq.Duration))
@@ -1077,6 +1083,9 @@ func (t *ToolSwipeCoordinate) Implement() server.ToolHandlerFunc {
if unifiedReq.PressDuration > 0 { if unifiedReq.PressDuration > 0 {
opts = append(opts, option.WithPressDuration(unifiedReq.PressDuration)) opts = append(opts, option.WithPressDuration(unifiedReq.PressDuration))
} }
if unifiedReq.AntiRisk {
opts = append(opts, option.WithAntiRisk(true))
}
swipeAction := prepareSwipeAction(driverExt, params, opts...) swipeAction := prepareSwipeAction(driverExt, params, opts...)
err = swipeAction(driverExt) err = swipeAction(driverExt)
@@ -1104,6 +1113,10 @@ func (t *ToolSwipeCoordinate) ConvertActionToCallToolRequest(action MobileAction
if pressDuration := action.ActionOptions.PressDuration; pressDuration > 0 { if pressDuration := action.ActionOptions.PressDuration; pressDuration > 0 {
arguments["pressDuration"] = pressDuration arguments["pressDuration"] = pressDuration
} }
// Extract all action options
extractActionOptionsToArguments(action.GetOptions(), arguments)
return buildMCPCallToolRequest(t.Name(), arguments), nil return buildMCPCallToolRequest(t.Name(), arguments), nil
} }
return mcp.CallToolRequest{}, fmt.Errorf("invalid swipe advanced params: %v", action.Params) return mcp.CallToolRequest{}, fmt.Errorf("invalid swipe advanced params: %v", action.Params)
@@ -1425,6 +1438,7 @@ func extractActionOptionsToArguments(actionOptions []option.ActionOption, argume
"ignore_NotFoundError": tempOptions.IgnoreNotFoundError, "ignore_NotFoundError": tempOptions.IgnoreNotFoundError,
"regex": tempOptions.Regex, "regex": tempOptions.Regex,
"tap_random_rect": tempOptions.TapRandomRect, "tap_random_rect": tempOptions.TapRandomRect,
"anti_risk": tempOptions.AntiRisk,
} }
// Add boolean options only if they are true // Add boolean options only if they are true