package mcp

import (
	"context"
	"encoding/json"
	"strings"

	"github.com/tidbcloud/AgentTeam/desktop/internal/types"
)

type mockToolsListHandler struct {
	tools     []types.MCPToolDef
	callCount int
}

func (m *mockToolsListHandler) Tools() []types.MCPToolDef { return m.tools }
func (m *mockToolsListHandler) CallTool(_ context.Context, _, _ string, _ json.RawMessage) *types.MCPToolResult {
	m.callCount++
	return types.NewToolText("ok")
}
func (m *mockToolsListHandler) SkillDoc(_ types.ToolNamer) string { return "" }
func (m *mockToolsListHandler) SkillDocSplit(types.ToolNamer) types.SkillDocParts {
	return types.SkillDocParts{}
}

type largeToolResultHandler struct{}

func (largeToolResultHandler) Tools() []types.MCPToolDef { return nil }
func (largeToolResultHandler) CallTool(context.Context, string, string, json.RawMessage) *types.MCPToolResult {
	rows := make([]any, 0, 150)
	for i := 0; i < 150; i++ {
		rows = append(rows, map[string]any{
			"id":   i,
			"body": strings.Repeat("structured", 600),
		})
	}
	return types.NewToolTextStructured(strings.Repeat("text", 10000), map[string]any{"rows": rows})
}
func (largeToolResultHandler) SkillDoc(types.ToolNamer) string { return "" }
func (largeToolResultHandler) SkillDocSplit(types.ToolNamer) types.SkillDocParts {
	return types.SkillDocParts{}
}
