Files
aego/editor/shell/agentsettings.go
sanspie 5eb1832907
ci-platforms / darwin amd64 smoke (push) Skipped
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 15m28s
ci / release (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
ci-platforms / darwin arm64 smoke (push) Skipped
ci / checks (push) Successful in 7m47s
Complete Stage 12 for v0.12.0
2026-11-05 11:46:53 +03:00

77 lines
1.9 KiB
Go

package shell
import (
"sync"
"aego/editor/core/agentui"
"aego/editor/core/state"
)
// Availability checks run off the UI thread while the user can select another CLI.
type agentPreferences struct {
mu sync.RWMutex
provider string
claude agentui.ProviderSettings
codex agentui.ProviderSettings
}
// AgentSettings returns one provider's preferences; empty selects the current provider.
func (a *App) AgentSettings(provider string) agentui.ProviderSettings {
p := &a.agentPrefs
p.mu.RLock()
defer p.mu.RUnlock()
if provider == "" {
provider = p.provider
}
if provider == "" {
provider = "claude"
}
s := p.claude
if provider == "codex" {
s = p.codex
}
s.Provider = provider
return s
}
// SetAgentSettings selects a provider and changes only its own preferences.
func (a *App) SetAgentSettings(s agentui.ProviderSettings) {
p := &a.agentPrefs
p.mu.Lock()
defer p.mu.Unlock()
switch s.Provider {
case "", "claude":
s.Provider, s.Effort = "claude", ""
p.claude = s
case "codex":
p.codex = s
default:
return
}
p.provider = s.Provider
}
func (a *App) loadAgentSettings(s *state.Editor) {
p := &a.agentPrefs
p.mu.Lock()
defer p.mu.Unlock()
p.provider = s.AgentProvider
if p.provider != "codex" {
p.provider = "claude"
}
p.claude = agentui.ProviderSettings{Provider: "claude", Command: s.AgentCommand, Model: s.AgentClaudeModel}
p.codex = agentui.ProviderSettings{Provider: "codex", Command: s.AgentCodexCommand, Model: s.AgentCodexModel, Effort: s.AgentCodexEffort}
}
func (a *App) saveAgentSettings(s *state.Editor) {
p := &a.agentPrefs
p.mu.RLock()
defer p.mu.RUnlock()
s.AgentProvider = p.provider
if s.AgentProvider == "claude" {
s.AgentProvider = ""
}
s.AgentCommand, s.AgentClaudeModel = p.claude.Command, p.claude.Model
s.AgentCodexCommand, s.AgentCodexModel, s.AgentCodexEffort = p.codex.Command, p.codex.Model, p.codex.Effort
}