// Package tavily registers the Tavily Search Builtin Extension.
package tavily

import (
	"fmt"

	"github.com/tidbcloud/AgentTeam/internal/extension/providers/searchengine"
	"github.com/tidbcloud/AgentTeam/internal/extension/providers/searchengine/runtime"
	"github.com/tidbcloud/AgentTeam/internal/extension/registry"
)

const (
	Provider = runtime.ProviderTavily
	Revision = "search-v1"
)

func Definition() registry.Definition {
	return searchengine.NewDefinition(
		Provider,
		"Tavily Search",
		"Search the web with the configured Tavily Search App.",
	)
}

func Register(reg *registry.Registry, invoker searchengine.Invoker) error {
	if reg == nil {
		return fmt.Errorf("Tavily extension registry is required")
	}
	if invoker == nil {
		return fmt.Errorf("Tavily search service is required")
	}
	if _, err := reg.RegisterBuiltin(
		Definition(),
		searchengine.NewExecutor(Provider, invoker),
		Revision,
	); err != nil {
		return fmt.Errorf("register Tavily Builtin: %w", err)
	}
	return nil
}
