package tools

import (
	"context"

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

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

type VersionTool struct {
	serverName string
	info       buildinfo.Info
}

type GetVersionInfoInput struct{}

type GetVersionInfoOutput struct {
	ServerName string `json:"server_name"`
	Version    string `json:"version"`
	TagName    string `json:"tag_name"`
	Commit     string `json:"commit"`
	BuildDate  string `json:"build_date"`
}

func NewVersionTool(serverName string, info buildinfo.Info) *VersionTool {
	return &VersionTool{
		serverName: serverName,
		info:       info,
	}
}

func (t *VersionTool) GetInfo(_ context.Context, _ *mcp.CallToolRequest, _ GetVersionInfoInput) (*mcp.CallToolResult, GetVersionInfoOutput, error) {
	if t == nil {
		return nil, GetVersionInfoOutput{}, nil
	}

	return nil, GetVersionInfoOutput{
		ServerName: t.serverName,
		Version:    t.info.Version,
		TagName:    t.info.TagName,
		Commit:     t.info.Commit,
		BuildDate:  t.info.BuildDate,
	}, nil
}
