mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-18 20:57:37 +08:00
feat: migrate all remaining MCP tools to use UnifiedActionRequest
- Migrated 39 remaining MCP tools from individual Request structures to UnifiedActionRequest
- All tools now use unifiedReq.GetMCPOptions(ACTION_*) instead of option.NewMCPOptions(Request{})
- Completed the unification of parameter definitions across all 40 MCP tools
- Eliminated duplication between ActionOptions and Request structures
- All tests pass, confirming successful migration
Tools migrated:
- Basic operations: TapAbsXY, TapByOCR, TapByCV, DoubleTapXY
- Device management: ListPackages, ScreenShot, GetScreenSize, PressButton
- App management: LaunchApp, TerminateApp, AppInstall, AppUninstall, AppClear
- Swipe operations: SwipeDirection, SwipeCoordinate, SwipeToTapApp, SwipeToTapText, SwipeToTapTexts
- Input/Navigation: Input, Home, Back, Drag
- Web operations: WebLoginNoneUI, SecondaryClick, HoverBySelector, TapBySelector, SecondaryClickBySelector, WebCloseTab
- System utilities: SetIme, GetSource, ClosePopups
- Sleep operations: SleepMS, SleepRandom
- AI/Task management: AIAction, Finished
This completes the ActionOptions and Request structures integration initiative.
This commit is contained in:
@@ -299,7 +299,8 @@ func (t *ToolTapXY) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolTapXY) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TapRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_TapXY)
|
||||
}
|
||||
|
||||
func (t *ToolTapXY) Implement() server.ToolHandlerFunc {
|
||||
@@ -309,31 +310,32 @@ func (t *ToolTapXY) Implement() server.ToolHandlerFunc {
|
||||
return nil, fmt.Errorf("setup driver failed: %w", err)
|
||||
}
|
||||
|
||||
var tapReq option.TapRequest
|
||||
if err := mapToStruct(request.Params.Arguments, &tapReq); err != nil {
|
||||
var unifiedReq option.UnifiedActionRequest
|
||||
if err := mapToStruct(request.Params.Arguments, &unifiedReq); err != nil {
|
||||
return nil, fmt.Errorf("parse parameters error: %w", err)
|
||||
}
|
||||
|
||||
// Build action options from request structure
|
||||
var opts []option.ActionOption
|
||||
|
||||
// Add numeric options
|
||||
if tapReq.Duration > 0 {
|
||||
opts = append(opts, option.WithDuration(tapReq.Duration))
|
||||
}
|
||||
// Convert to ActionOptions
|
||||
actionOpts := unifiedReq.ToActionOptions()
|
||||
opts := actionOpts.Options()
|
||||
|
||||
// Add default options
|
||||
opts = append(opts, option.WithPreMarkOperation(true))
|
||||
|
||||
// Tap action logic
|
||||
log.Info().Float64("x", tapReq.X).Float64("y", tapReq.Y).Msg("tapping at coordinates")
|
||||
// Validate required parameters
|
||||
if unifiedReq.X == nil || unifiedReq.Y == nil {
|
||||
return nil, fmt.Errorf("x and y coordinates are required")
|
||||
}
|
||||
|
||||
err = driverExt.TapXY(tapReq.X, tapReq.Y, opts...)
|
||||
// Tap action logic
|
||||
log.Info().Float64("x", *unifiedReq.X).Float64("y", *unifiedReq.Y).Msg("tapping at coordinates")
|
||||
|
||||
err = driverExt.TapXY(*unifiedReq.X, *unifiedReq.Y, opts...)
|
||||
if err != nil {
|
||||
return mcp.NewToolResultError(fmt.Sprintf("Tap failed: %s", err.Error())), nil
|
||||
}
|
||||
|
||||
return mcp.NewToolResultText(fmt.Sprintf("Successfully tapped at coordinates (%.2f, %.2f)", tapReq.X, tapReq.Y)), nil
|
||||
return mcp.NewToolResultText(fmt.Sprintf("Successfully tapped at coordinates (%.2f, %.2f)", *unifiedReq.X, *unifiedReq.Y)), nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,7 +371,8 @@ func (t *ToolTapAbsXY) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolTapAbsXY) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TapAbsXYRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_TapAbsXY)
|
||||
}
|
||||
|
||||
func (t *ToolTapAbsXY) Implement() server.ToolHandlerFunc {
|
||||
@@ -436,7 +439,8 @@ func (t *ToolTapByOCR) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolTapByOCR) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TapByOCRRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_TapByOCR)
|
||||
}
|
||||
|
||||
func (t *ToolTapByOCR) Implement() server.ToolHandlerFunc {
|
||||
@@ -510,7 +514,8 @@ func (t *ToolTapByCV) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolTapByCV) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TapByCVRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_TapByCV)
|
||||
}
|
||||
|
||||
func (t *ToolTapByCV) Implement() server.ToolHandlerFunc {
|
||||
@@ -583,7 +588,8 @@ func (t *ToolDoubleTapXY) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolDoubleTapXY) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.DoubleTapXYRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_DoubleTapXY)
|
||||
}
|
||||
|
||||
func (t *ToolDoubleTapXY) Implement() server.ToolHandlerFunc {
|
||||
@@ -633,7 +639,8 @@ func (t *ToolListPackages) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolListPackages) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TargetDeviceRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_ListPackages)
|
||||
}
|
||||
|
||||
func (t *ToolListPackages) Implement() server.ToolHandlerFunc {
|
||||
@@ -667,7 +674,8 @@ func (t *ToolLaunchApp) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolLaunchApp) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.AppLaunchRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_AppLaunch)
|
||||
}
|
||||
|
||||
func (t *ToolLaunchApp) Implement() server.ToolHandlerFunc {
|
||||
@@ -719,7 +727,8 @@ func (t *ToolTerminateApp) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolTerminateApp) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.AppTerminateRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_AppTerminate)
|
||||
}
|
||||
|
||||
func (t *ToolTerminateApp) Implement() server.ToolHandlerFunc {
|
||||
@@ -774,7 +783,8 @@ func (t *ToolScreenShot) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolScreenShot) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TargetDeviceRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_ScreenShot)
|
||||
}
|
||||
|
||||
func (t *ToolScreenShot) Implement() server.ToolHandlerFunc {
|
||||
@@ -810,7 +820,8 @@ func (t *ToolGetScreenSize) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolGetScreenSize) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TargetDeviceRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_GetScreenSize)
|
||||
}
|
||||
|
||||
func (t *ToolGetScreenSize) Implement() server.ToolHandlerFunc {
|
||||
@@ -846,7 +857,8 @@ func (t *ToolPressButton) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolPressButton) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.PressButtonRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_PressButton)
|
||||
}
|
||||
|
||||
func (t *ToolPressButton) Implement() server.ToolHandlerFunc {
|
||||
@@ -896,16 +908,8 @@ func (t *ToolSwipe) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSwipe) Options() []mcp.ToolOption {
|
||||
// Combine options from both direction and coordinate swipe
|
||||
directionOptions := option.NewMCPOptions(option.SwipeRequest{})
|
||||
coordinateOptions := option.NewMCPOptions(option.SwipeAdvancedRequest{})
|
||||
|
||||
// Merge the options
|
||||
allOptions := make([]mcp.ToolOption, 0, len(directionOptions)+len(coordinateOptions))
|
||||
allOptions = append(allOptions, directionOptions...)
|
||||
allOptions = append(allOptions, coordinateOptions...)
|
||||
|
||||
return allOptions
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_Swipe)
|
||||
}
|
||||
|
||||
func (t *ToolSwipe) Implement() server.ToolHandlerFunc {
|
||||
@@ -965,7 +969,8 @@ func (t *ToolSwipeDirection) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSwipeDirection) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SwipeRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SwipeDirection)
|
||||
}
|
||||
|
||||
func (t *ToolSwipeDirection) Implement() server.ToolHandlerFunc {
|
||||
@@ -1054,7 +1059,8 @@ func (t *ToolSwipeCoordinate) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSwipeCoordinate) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SwipeAdvancedRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SwipeCoordinate)
|
||||
}
|
||||
|
||||
func (t *ToolSwipeCoordinate) Implement() server.ToolHandlerFunc {
|
||||
@@ -1127,7 +1133,8 @@ func (t *ToolSwipeToTapApp) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSwipeToTapApp) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SwipeToTapAppRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SwipeToTapApp)
|
||||
}
|
||||
|
||||
func (t *ToolSwipeToTapApp) Implement() server.ToolHandlerFunc {
|
||||
@@ -1195,7 +1202,8 @@ func (t *ToolSwipeToTapText) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSwipeToTapText) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SwipeToTapTextRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SwipeToTapText)
|
||||
}
|
||||
|
||||
func (t *ToolSwipeToTapText) Implement() server.ToolHandlerFunc {
|
||||
@@ -1266,7 +1274,8 @@ func (t *ToolSwipeToTapTexts) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSwipeToTapTexts) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SwipeToTapTextsRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SwipeToTapTexts)
|
||||
}
|
||||
|
||||
func (t *ToolSwipeToTapTexts) Implement() server.ToolHandlerFunc {
|
||||
@@ -1342,7 +1351,8 @@ func (t *ToolDrag) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolDrag) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.DragRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_Drag)
|
||||
}
|
||||
|
||||
func (t *ToolDrag) Implement() server.ToolHandlerFunc {
|
||||
@@ -1458,7 +1468,8 @@ func (t *ToolHome) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolHome) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TargetDeviceRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_Home)
|
||||
}
|
||||
|
||||
func (t *ToolHome) Implement() server.ToolHandlerFunc {
|
||||
@@ -1495,7 +1506,8 @@ func (t *ToolBack) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolBack) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TargetDeviceRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_Back)
|
||||
}
|
||||
|
||||
func (t *ToolBack) Implement() server.ToolHandlerFunc {
|
||||
@@ -1532,7 +1544,8 @@ func (t *ToolInput) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolInput) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.InputRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_Input)
|
||||
}
|
||||
|
||||
func (t *ToolInput) Implement() server.ToolHandlerFunc {
|
||||
@@ -1582,7 +1595,8 @@ func (t *ToolWebLoginNoneUI) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolWebLoginNoneUI) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.WebLoginNoneUIRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_WebLoginNoneUI)
|
||||
}
|
||||
|
||||
func (t *ToolWebLoginNoneUI) Implement() server.ToolHandlerFunc {
|
||||
@@ -1629,7 +1643,8 @@ func (t *ToolAppInstall) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolAppInstall) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.AppInstallRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_AppInstall)
|
||||
}
|
||||
|
||||
func (t *ToolAppInstall) Implement() server.ToolHandlerFunc {
|
||||
@@ -1677,7 +1692,8 @@ func (t *ToolAppUninstall) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolAppUninstall) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.AppUninstallRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_AppUninstall)
|
||||
}
|
||||
|
||||
func (t *ToolAppUninstall) Implement() server.ToolHandlerFunc {
|
||||
@@ -1725,7 +1741,8 @@ func (t *ToolAppClear) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolAppClear) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.AppClearRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_AppClear)
|
||||
}
|
||||
|
||||
func (t *ToolAppClear) Implement() server.ToolHandlerFunc {
|
||||
@@ -1773,7 +1790,8 @@ func (t *ToolSecondaryClick) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSecondaryClick) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SecondaryClickRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SecondaryClick)
|
||||
}
|
||||
|
||||
func (t *ToolSecondaryClick) Implement() server.ToolHandlerFunc {
|
||||
@@ -1822,7 +1840,8 @@ func (t *ToolHoverBySelector) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolHoverBySelector) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SelectorRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_HoverBySelector)
|
||||
}
|
||||
|
||||
func (t *ToolHoverBySelector) Implement() server.ToolHandlerFunc {
|
||||
@@ -1870,7 +1889,8 @@ func (t *ToolTapBySelector) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolTapBySelector) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SelectorRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_TapBySelector)
|
||||
}
|
||||
|
||||
func (t *ToolTapBySelector) Implement() server.ToolHandlerFunc {
|
||||
@@ -1918,7 +1938,8 @@ func (t *ToolSecondaryClickBySelector) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSecondaryClickBySelector) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SelectorRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SecondaryClickBySelector)
|
||||
}
|
||||
|
||||
func (t *ToolSecondaryClickBySelector) Implement() server.ToolHandlerFunc {
|
||||
@@ -1966,7 +1987,8 @@ func (t *ToolWebCloseTab) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolWebCloseTab) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.WebCloseTabRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_WebCloseTab)
|
||||
}
|
||||
|
||||
func (t *ToolWebCloseTab) Implement() server.ToolHandlerFunc {
|
||||
@@ -2027,7 +2049,8 @@ func (t *ToolSetIme) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSetIme) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SetImeRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SetIme)
|
||||
}
|
||||
|
||||
func (t *ToolSetIme) Implement() server.ToolHandlerFunc {
|
||||
@@ -2075,7 +2098,8 @@ func (t *ToolGetSource) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolGetSource) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.GetSourceRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_GetSource)
|
||||
}
|
||||
|
||||
func (t *ToolGetSource) Implement() server.ToolHandlerFunc {
|
||||
@@ -2181,7 +2205,8 @@ func (t *ToolSleepMS) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSleepMS) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SleepMSRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SleepMS)
|
||||
}
|
||||
|
||||
func (t *ToolSleepMS) Implement() server.ToolHandlerFunc {
|
||||
@@ -2226,7 +2251,8 @@ func (t *ToolSleepRandom) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolSleepRandom) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.SleepRandomRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_SleepRandom)
|
||||
}
|
||||
|
||||
func (t *ToolSleepRandom) Implement() server.ToolHandlerFunc {
|
||||
@@ -2266,7 +2292,8 @@ func (t *ToolClosePopups) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolClosePopups) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.TargetDeviceRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_ClosePopups)
|
||||
}
|
||||
|
||||
func (t *ToolClosePopups) Implement() server.ToolHandlerFunc {
|
||||
@@ -2303,7 +2330,8 @@ func (t *ToolAIAction) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolAIAction) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.AIActionRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_AIAction)
|
||||
}
|
||||
|
||||
func (t *ToolAIAction) Implement() server.ToolHandlerFunc {
|
||||
@@ -2351,7 +2379,8 @@ func (t *ToolFinished) Description() string {
|
||||
}
|
||||
|
||||
func (t *ToolFinished) Options() []mcp.ToolOption {
|
||||
return option.NewMCPOptions(option.FinishedRequest{})
|
||||
unifiedReq := &option.UnifiedActionRequest{}
|
||||
return unifiedReq.GetMCPOptions(option.ACTION_Finished)
|
||||
}
|
||||
|
||||
func (t *ToolFinished) Implement() server.ToolHandlerFunc {
|
||||
|
||||
Reference in New Issue
Block a user