36 lines
1.0 KiB
Go
36 lines
1.0 KiB
Go
package setup
|
|
|
|
import (
|
|
"context"
|
|
|
|
"forge.cadoles.com/wpetit/clearcase/internal/config"
|
|
"forge.cadoles.com/wpetit/clearcase/internal/core/service"
|
|
"github.com/bornholm/genai/llm/provider"
|
|
"github.com/pkg/errors"
|
|
|
|
_ "github.com/bornholm/genai/llm/provider/openai"
|
|
_ "github.com/bornholm/genai/llm/provider/openrouter"
|
|
)
|
|
|
|
func NewIssueManagerFromConfig(ctx context.Context, conf *config.Config) (*service.IssueManager, error) {
|
|
client, err := provider.Create(ctx,
|
|
provider.WithConfig(&provider.Config{
|
|
Provider: provider.Name(conf.LLM.Provider.Name),
|
|
BaseURL: conf.LLM.Provider.BaseURL,
|
|
Key: conf.LLM.Provider.Key,
|
|
Model: conf.LLM.Provider.Model,
|
|
}))
|
|
if err != nil {
|
|
return nil, errors.Wrapf(err, "could not create llm client '%s'", conf.LLM.Provider.Name)
|
|
}
|
|
|
|
forgeFactories, err := getForgeFactories(conf)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "could not get forge factories")
|
|
}
|
|
|
|
issueManager := service.NewIssueManager(client, forgeFactories...)
|
|
|
|
return issueManager, nil
|
|
}
|