package llm

import (
	"encoding/json"
	"fmt"
	"net/http"
)

type OllamaTagsResponse struct {
	Models []struct {
		Name string `json:"name"`
	} `json:"models"`
}

// Получить список моделей с указанного хоста
func GetModelsFromHost(host string) ([]string, error) {
	resp, err := http.Get(host + "/api/tags")
	if err != nil {
		return nil, fmt.Errorf("ошибка запроса к %s/api/tags: %w", host, err)
	}
	defer resp.Body.Close()

	if resp.StatusCode != http.StatusOK {
		return nil, fmt.Errorf("Ollama вернула статус %s", resp.Status)
	}

	var data OllamaTagsResponse
	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
		return nil, fmt.Errorf("ошибка разбора JSON: %w", err)
	}

	out := make([]string, 0, len(data.Models))
	for _, m := range data.Models {
		out = append(out, m.Name)
	}

	return out, nil
}
