package tools

import (
	"context"

	"github.com/modelcontextprotocol/go-sdk/mcp"

	"git.warky.dev/wdevs/amcs/internal/store"
	thoughttypes "git.warky.dev/wdevs/amcs/internal/types"
)

type GetTool struct {
	store *store.DB
}

type GetInput struct {
	ID string `json:"id" jsonschema:"the thought id"`
}

type GetOutput struct {
	Thought thoughttypes.Thought `json:"thought"`
}

func NewGetTool(db *store.DB) *GetTool {
	return &GetTool{store: db}
}

func (t *GetTool) Handle(ctx context.Context, _ *mcp.CallToolRequest, in GetInput) (*mcp.CallToolResult, GetOutput, error) {
	id, err := parseUUID(in.ID)
	if err != nil {
		return nil, GetOutput{}, err
	}

	thought, err := t.store.GetThought(ctx, id)
	if err != nil {
		return nil, GetOutput{}, err
	}

	return nil, GetOutput{Thought: thought}, nil
}
