summaryrefslogtreecommitdiff
path: root/internal/hexaiaction/prompts.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-09-26 20:19:41 +0300
committerPaul Buetow <paul@buetow.org>2025-09-26 20:19:41 +0300
commit1731126b52e406a300270c8fc8ac1061a4422b27 (patch)
treec74768df49994aa9676cbc69ebfb461ed0422e01 /internal/hexaiaction/prompts.go
parent0583b360ceb606b8e58f12a17f588bd27feeb117 (diff)
Refactor surface config to support multi-provider arrays
Diffstat (limited to 'internal/hexaiaction/prompts.go')
-rw-r--r--internal/hexaiaction/prompts.go31
1 files changed, 17 insertions, 14 deletions
diff --git a/internal/hexaiaction/prompts.go b/internal/hexaiaction/prompts.go
index 47dadbf..a113391 100644
--- a/internal/hexaiaction/prompts.go
+++ b/internal/hexaiaction/prompts.go
@@ -56,9 +56,9 @@ func defaultModelForProvider(cfg appconfig.App, provider string) string {
}
}
-func selectActionTemperature(cfg appconfig.App, provider, model string) (float64, bool) {
- if cfg.CodeActionTemperature != nil {
- return *cfg.CodeActionTemperature, true
+func selectActionTemperature(cfg appconfig.App, provider string, entry appconfig.SurfaceConfig, model string) (float64, bool) {
+ if entry.Temperature != nil {
+ return *entry.Temperature, true
}
if cfg.CodingTemperature != nil {
temp := *cfg.CodingTemperature
@@ -201,22 +201,25 @@ func reqOptsFrom(cfg appconfig.App) requestArgs {
opts = append(opts, llm.WithMaxTokens(cfg.MaxTokens))
}
provider := canonicalProvider(cfg.Provider)
- if strings.TrimSpace(cfg.CodeActionProvider) != "" {
- provider = canonicalProvider(cfg.CodeActionProvider)
+ entries := cfg.CodeActionConfigs
+ if len(entries) == 0 {
+ entries = []appconfig.SurfaceConfig{{Provider: cfg.Provider, Model: strings.TrimSpace(defaultModelForProvider(cfg, provider))}}
}
- override := strings.TrimSpace(cfg.CodeActionModel)
- fallback := strings.TrimSpace(defaultModelForProvider(cfg, provider))
- effective := override
- if effective == "" {
- effective = fallback
+ primary := entries[0]
+ if strings.TrimSpace(primary.Provider) != "" {
+ provider = canonicalProvider(primary.Provider)
}
- if override != "" {
- opts = append(opts, llm.WithModel(override))
+ model := strings.TrimSpace(primary.Model)
+ if model == "" {
+ model = strings.TrimSpace(defaultModelForProvider(cfg, provider))
+ }
+ if strings.TrimSpace(primary.Model) != "" {
+ opts = append(opts, llm.WithModel(strings.TrimSpace(primary.Model)))
}
- if temp, ok := selectActionTemperature(cfg, provider, effective); ok {
+ if temp, ok := selectActionTemperature(cfg, provider, primary, model); ok {
opts = append(opts, llm.WithTemperature(temp))
}
- return requestArgs{model: effective, options: opts}
+ return requestArgs{model: model, options: opts}
}
// Timeout helpers to mirror LSP behavior.