// Package brave registers the Brave Search Builtin Extension.
package brave

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.ProviderBrave
	Revision = "search-v1"
)

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

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