|
@@ -253,22 +253,14 @@ func SetClipboard(text string) tea.Cmd {
|
|
|
return tea.Sequence(cmds...)
|
|
return tea.Sequence(cmds...)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (a *App) cycleMode(forward bool) (*App, tea.Cmd) {
|
|
|
|
|
- if forward {
|
|
|
|
|
- a.AgentIndex++
|
|
|
|
|
- if a.AgentIndex >= len(a.Agents) {
|
|
|
|
|
- a.AgentIndex = 0
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- a.AgentIndex--
|
|
|
|
|
- if a.AgentIndex < 0 {
|
|
|
|
|
- a.AgentIndex = len(a.Agents) - 1
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if a.Agent().Mode == "subagent" {
|
|
|
|
|
- return a.cycleMode(forward)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+func (a *App) updateModelForNewAgent() {
|
|
|
|
|
+ singleModelEnv := os.Getenv("OPENCODE_AGENTS_SWITCH_SINGLE_MODEL")
|
|
|
|
|
+ isSingleModel := singleModelEnv == "1" || singleModelEnv == "true"
|
|
|
|
|
|
|
|
|
|
+ if isSingleModel {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ // Set up model for the new agent
|
|
|
modelID := a.Agent().Model.ModelID
|
|
modelID := a.Agent().Model.ModelID
|
|
|
providerID := a.Agent().Model.ProviderID
|
|
providerID := a.Agent().Model.ProviderID
|
|
|
if modelID == "" {
|
|
if modelID == "" {
|
|
@@ -292,6 +284,25 @@ func (a *App) cycleMode(forward bool) (*App, tea.Cmd) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (a *App) cycleMode(forward bool) (*App, tea.Cmd) {
|
|
|
|
|
+ if forward {
|
|
|
|
|
+ a.AgentIndex++
|
|
|
|
|
+ if a.AgentIndex >= len(a.Agents) {
|
|
|
|
|
+ a.AgentIndex = 0
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ a.AgentIndex--
|
|
|
|
|
+ if a.AgentIndex < 0 {
|
|
|
|
|
+ a.AgentIndex = len(a.Agents) - 1
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if a.Agent().Mode == "subagent" {
|
|
|
|
|
+ return a.cycleMode(forward)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ a.updateModelForNewAgent()
|
|
|
|
|
|
|
|
a.State.Agent = a.Agent().Name
|
|
a.State.Agent = a.Agent().Name
|
|
|
a.State.UpdateAgentUsage(a.Agent().Name)
|
|
a.State.UpdateAgentUsage(a.Agent().Name)
|
|
@@ -380,30 +391,7 @@ func (a *App) SwitchToAgent(agentName string) (*App, tea.Cmd) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // Set up model for the new agent
|
|
|
|
|
- modelID := a.Agent().Model.ModelID
|
|
|
|
|
- providerID := a.Agent().Model.ProviderID
|
|
|
|
|
- if modelID == "" {
|
|
|
|
|
- if model, ok := a.State.AgentModel[a.Agent().Name]; ok {
|
|
|
|
|
- modelID = model.ModelID
|
|
|
|
|
- providerID = model.ProviderID
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if modelID != "" {
|
|
|
|
|
- for _, provider := range a.Providers {
|
|
|
|
|
- if provider.ID == providerID {
|
|
|
|
|
- a.Provider = &provider
|
|
|
|
|
- for _, model := range provider.Models {
|
|
|
|
|
- if model.ID == modelID {
|
|
|
|
|
- a.Model = &model
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ a.updateModelForNewAgent()
|
|
|
|
|
|
|
|
a.State.Agent = a.Agent().Name
|
|
a.State.Agent = a.Agent().Name
|
|
|
a.State.UpdateAgentUsage(agentName)
|
|
a.State.UpdateAgentUsage(agentName)
|