feat: show model in new session reply
This commit is contained in:
parent
4949ad9961
commit
148015ba0d
2 changed files with 75 additions and 3 deletions
|
|
@ -462,7 +462,41 @@ func (al *AgentLoop) startNewSessionForMessage(msg bus.InboundMessage) (string,
|
||||||
overrideKey := buildSessionOverrideKey(msg.Channel, msg.ChatID, agent.ID)
|
overrideKey := buildSessionOverrideKey(msg.Channel, msg.ChatID, agent.ID)
|
||||||
al.sessionOverride.Set(overrideKey, newSessionKey)
|
al.sessionOverride.Set(overrideKey, newSessionKey)
|
||||||
|
|
||||||
return "Starting a new conversation...", nil
|
return formatNewSessionResponse(al.cfg, agent), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func formatNewSessionResponse(cfg *config.Config, agent *AgentInstance) string {
|
||||||
|
provider, model := resolveAgentModelDisplay(cfg, agent)
|
||||||
|
if model == "" {
|
||||||
|
return "Starting a new conversation..."
|
||||||
|
}
|
||||||
|
if provider == "" {
|
||||||
|
return fmt.Sprintf("Starting a new conversation... (model: %s)", model)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("Starting a new conversation... (provider: %s, model: %s)", provider, model)
|
||||||
|
}
|
||||||
|
|
||||||
|
func resolveAgentModelDisplay(cfg *config.Config, agent *AgentInstance) (string, string) {
|
||||||
|
if agent == nil {
|
||||||
|
return "", ""
|
||||||
|
}
|
||||||
|
modelName := strings.TrimSpace(agent.Model)
|
||||||
|
if modelName == "" {
|
||||||
|
return "", ""
|
||||||
|
}
|
||||||
|
if cfg != nil {
|
||||||
|
if modelCfg, err := cfg.GetModelConfig(modelName); err == nil && modelCfg != nil {
|
||||||
|
if ref := providers.ParseModelRef(modelCfg.Model, ""); ref != nil {
|
||||||
|
return ref.Provider, ref.Model
|
||||||
|
}
|
||||||
|
return "", strings.TrimSpace(modelCfg.Model)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ref := providers.ParseModelRef(modelName, "")
|
||||||
|
if ref == nil {
|
||||||
|
return "", modelName
|
||||||
|
}
|
||||||
|
return ref.Provider, ref.Model
|
||||||
}
|
}
|
||||||
|
|
||||||
// runAgentLoop is the core message processing logic.
|
// runAgentLoop is the core message processing logic.
|
||||||
|
|
|
||||||
|
|
@ -401,7 +401,7 @@ func TestNewSessionCommand_SuccessAndIsolation(t *testing.T) {
|
||||||
ChatID: "chat1",
|
ChatID: "chat1",
|
||||||
Content: "/new",
|
Content: "/new",
|
||||||
})
|
})
|
||||||
if response != "Starting a new conversation..." {
|
if response != "Starting a new conversation... (model: test-model)" {
|
||||||
t.Fatalf("Expected confirmation response, got %q", response)
|
t.Fatalf("Expected confirmation response, got %q", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -435,6 +435,44 @@ func TestNewSessionCommand_SuccessAndIsolation(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewSessionCommand_IncludesProviderWhenPrefixed(t *testing.T) {
|
||||||
|
provider := &simpleMockProvider{response: "OK"}
|
||||||
|
tmpDir, err := os.MkdirTemp("", "agent-test-*")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to create temp dir: %v", err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tmpDir)
|
||||||
|
|
||||||
|
cfg := &config.Config{
|
||||||
|
Agents: config.AgentsConfig{
|
||||||
|
Defaults: config.AgentDefaults{
|
||||||
|
Workspace: tmpDir,
|
||||||
|
Model: "openai/gpt-5.2",
|
||||||
|
MaxTokens: 4096,
|
||||||
|
MaxToolIterations: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
msgBus := bus.NewMessageBus()
|
||||||
|
al := NewAgentLoop(cfg, msgBus, provider)
|
||||||
|
if al.registry.GetDefaultAgent() == nil {
|
||||||
|
t.Fatal("No default agent found")
|
||||||
|
}
|
||||||
|
|
||||||
|
helper := testHelper{al: al}
|
||||||
|
ctx := context.Background()
|
||||||
|
response := helper.executeAndGetResponse(t, ctx, bus.InboundMessage{
|
||||||
|
Channel: "test",
|
||||||
|
SenderID: "user1",
|
||||||
|
ChatID: "chat1",
|
||||||
|
Content: "/new",
|
||||||
|
})
|
||||||
|
if response != "Starting a new conversation... (provider: openai, model: gpt-5.2)" {
|
||||||
|
t.Fatalf("Expected confirmation response, got %q", response)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestNewSessionCommand_RejectsArgs(t *testing.T) {
|
func TestNewSessionCommand_RejectsArgs(t *testing.T) {
|
||||||
provider := &simpleMockProvider{response: "OK"}
|
provider := &simpleMockProvider{response: "OK"}
|
||||||
al, tmpDir := newTestAgentLoop(t, provider)
|
al, tmpDir := newTestAgentLoop(t, provider)
|
||||||
|
|
@ -526,7 +564,7 @@ func TestNewSessionCommand_NoCrossChatImpact(t *testing.T) {
|
||||||
"peer_id": "group1",
|
"peer_id": "group1",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
if response != "Starting a new conversation..." {
|
if response != "Starting a new conversation... (model: test-model)" {
|
||||||
t.Fatalf("Expected confirmation response, got %q", response)
|
t.Fatalf("Expected confirmation response, got %q", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue