package cli

import (
	"context"
	"fmt"

	"gitea.maximumdirect.net/eric/notarius/internal/core/config"
	"gitea.maximumdirect.net/eric/notarius/internal/framework/llm"
)

func validateExplicitPromptKitProfiles(ctx context.Context, cfg config.Config, profileIDs []string, assets *llm.AssetRegistry) error {
	if len(profileIDs) == 0 {
		return nil
	}
	inspector, err := llm.NewPromptKitProfileInspector(llm.PromptKitProfileInspectorConfig{
		Source: promptKitProfileSourceConfig(cfg),
		Assets: assets,
	})
	if err != nil {
		return fmt.Errorf("load PromptKit profiles: %w", err)
	}
	for _, profileID := range profileIDs {
		if _, err := inspector.InspectProfile(ctx, profileID); err != nil {
			return err
		}
	}
	return nil
}

func promptKitProfileSourceConfig(cfg config.Config) llm.PromptKitProfileSourceConfig {
	return llm.PromptKitProfileSourceConfig{
		ProfileDir:   cfg.PromptKit.ProfileDir,
		ProfileFile:  cfg.PromptKit.ProfileFile,
		LocalBackend: mapPromptKitLocalBackend(cfg.PromptKit.LocalBackend),
	}
}

func mapPromptKitLocalBackend(cfg *config.PromptKitLocalBackendConfig) *llm.PromptKitLocalBackendConfig {
	if cfg == nil {
		return nil
	}
	return &llm.PromptKitLocalBackendConfig{
		Endpoint:         cfg.Endpoint,
		ConcurrencyLimit: cfg.ConcurrencyLimit,
	}
}
