refactor(agent-modal): revamped UI/UX for the agent modal (#1838)
Co-authored-by: Dax Raad <d@ironbay.co> Co-authored-by: Dax <mail@thdxr.com>
This commit is contained in:
committed by
GitHub
parent
d16ae1fc4e
commit
81583cddbd
@@ -71,9 +71,11 @@ type ModelSelectedMsg struct {
|
||||
Provider opencode.Provider
|
||||
Model opencode.Model
|
||||
}
|
||||
|
||||
type AgentSelectedMsg struct {
|
||||
Agent opencode.Agent
|
||||
AgentName string
|
||||
}
|
||||
|
||||
type SessionClearedMsg struct{}
|
||||
type CompactSessionMsg struct{}
|
||||
type SendPrompt = Prompt
|
||||
@@ -272,6 +274,7 @@ func (a *App) cycleMode(forward bool) (*App, tea.Cmd) {
|
||||
}
|
||||
|
||||
a.State.Agent = a.Agent().Name
|
||||
a.State.UpdateAgentUsage(a.Agent().Name)
|
||||
return a, a.SaveState()
|
||||
}
|
||||
|
||||
@@ -316,6 +319,45 @@ func (a *App) CycleRecentModel() (*App, tea.Cmd) {
|
||||
return a, toast.NewErrorToast("Recent model not found")
|
||||
}
|
||||
|
||||
func (a *App) SwitchToAgent(agentName string) (*App, tea.Cmd) {
|
||||
// Find the agent index by name
|
||||
for i, agent := range a.Agents {
|
||||
if agent.Name == agentName {
|
||||
a.AgentIndex = i
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 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.State.Agent = a.Agent().Name
|
||||
a.State.UpdateAgentUsage(agentName)
|
||||
return a, a.SaveState()
|
||||
}
|
||||
|
||||
// findModelByFullID finds a model by its full ID in the format "provider/model"
|
||||
func findModelByFullID(
|
||||
providers []opencode.Provider,
|
||||
|
||||
Reference in New Issue
Block a user