// Package serper registers the Serper Search Builtin Extension.
package serper

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

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

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