// Package searxng registers the SearXNG search Builtin Extension.
package searxng

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

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

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