package tools

import (
	"context"

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

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

type ArchiveTool struct {
	store *store.DB
}

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

type ArchiveOutput struct {
	Archived bool `json:"archived"`
}

func NewArchiveTool(db *store.DB) *ArchiveTool {
	return &ArchiveTool{store: db}
}

func (t *ArchiveTool) Handle(ctx context.Context, _ *mcp.CallToolRequest, in ArchiveInput) (*mcp.CallToolResult, ArchiveOutput, error) {
	id, err := parseUUID(in.ID)
	if err != nil {
		return nil, ArchiveOutput{}, err
	}
	if err := t.store.ArchiveThought(ctx, id); err != nil {
		return nil, ArchiveOutput{}, err
	}
	return nil, ArchiveOutput{Archived: true}, nil
}
