package arxiv

import (
	"fmt"

	"github.com/tidbcloud/AgentTeam/internal/extension"
	"github.com/tidbcloud/AgentTeam/internal/extension/registry"
	"github.com/tidbcloud/AgentTeam/internal/extension/runner"
)

func Register(reg *registry.Registry) error {
	if reg == nil {
		return fmt.Errorf("arXiv extension registry is required")
	}
	if _, err := reg.RegisterBuiltinWithOptions(
		Definition(),
		NewExecutor(newService()),
		Revision,
		registry.BuiltinOptions{
			ConnectionPolicy: registry.ConnectionNone,
		},
	); err != nil {
		return fmt.Errorf("register arXiv Builtin: %w", err)
	}
	return nil
}

// Extension composes the connectionless arXiv Builtin with its product
// Distribution.
func Extension() extension.Extension {
	return extension.Extension{
		Definition: Definition(),
		Implementation: runner.Implementation{
			Executor:         NewExecutor(newService()),
			Revision:         Revision,
			ConnectionPolicy: registry.ConnectionNone,
		},
		Distribution: extension.Distribution{
			AppID:          "app_arxiv",
			AppSlug:        "arxiv",
			DefaultName:    Domain,
			DefaultEnabled: true,
			IconURL:        "/app-icons/arxiv.png",
		},
	}
}
