Fix: export chat save in db; botPersona switching back to assistant

This commit is contained in:
Grail Finder
2025-08-22 23:15:20 +03:00
parent eee5e83d32
commit a21664fe92
3 changed files with 30 additions and 19 deletions

43
bot.go
View File

@@ -335,6 +335,10 @@ func checkGame(role string, tv *tview.TextView) {
func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
botRespMode = true
botPersona := cfg.AssistantRole
if cfg.WriteNextMsgAsCompletionAgent != "" {
botPersona = cfg.WriteNextMsgAsCompletionAgent
}
defer func() { botRespMode = false }()
// check that there is a model set to use if is not local
if cfg.CurrentAPI == cfg.DeepSeekChatAPI || cfg.CurrentAPI == cfg.DeepSeekCompletionAPI {
@@ -362,7 +366,7 @@ func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
logger.Debug("looking at vars in chatRound", "msg", userMsg, "regen", regen, "resume", resume)
if !resume {
fmt.Fprintf(tv, "[-:-:b](%d) ", len(chatBody.Messages))
fmt.Fprint(tv, roleToIcon(cfg.AssistantRole))
fmt.Fprint(tv, roleToIcon(botPersona))
fmt.Fprint(tv, "[-:-:-]\n")
if cfg.ThinkUse && !strings.Contains(cfg.CurrentAPI, "v1") {
// fmt.Fprint(tv, "<think>")
@@ -404,7 +408,7 @@ out:
// lastM.Content = lastM.Content + respText.String()
} else {
chatBody.Messages = append(chatBody.Messages, models.RoleMsg{
Role: cfg.AssistantRole, Content: respText.String(),
Role: botPersona, Content: respText.String(),
})
}
colorText()
@@ -490,6 +494,26 @@ func removeThinking(chatBody *models.ChatBody) {
chatBody.Messages = msgs
}
func addNewChat(chatName string) {
id, err := store.ChatGetMaxID()
if err != nil {
logger.Error("failed to get max chat id from db;", "id:", id)
// INFO: will rewrite first chat
}
chat := &models.Chat{
ID: id + 1,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Agent: cfg.AssistantRole,
}
if chatName == "" {
chatName = fmt.Sprintf("%d_%s", chat.ID, cfg.AssistantRole)
}
chat.Name = chatName
chatMap[chat.Name] = chat
activeChatName = chat.Name
}
func applyCharCard(cc *models.CharCard) {
cfg.AssistantRole = cc.Role
// FIXME: remove
@@ -506,20 +530,7 @@ func applyCharCard(cc *models.CharCard) {
{Role: "system", Content: cc.SysPrompt},
{Role: cfg.AssistantRole, Content: cc.FirstMsg},
}
id, err := store.ChatGetMaxID()
if err != nil {
logger.Error("failed to get max chat id from db;", "id:", id)
// INFO: will rewrite first chat
}
chat := &models.Chat{
ID: id + 1,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
Agent: cfg.AssistantRole,
}
chat.Name = fmt.Sprintf("%d_%s", chat.ID, cfg.AssistantRole)
chatMap[chat.Name] = chat
activeChatName = chat.Name
addNewChat("")
}
chatBody.Messages = history
}

View File

@@ -47,6 +47,9 @@ func importChat(filename string) error {
return err
}
activeChatName = filepath.Base(filename)
if _, ok := chatMap[activeChatName]; !ok {
addNewChat(activeChatName)
}
chatBody.Messages = messages
cfg.AssistantRole = messages[1].Role
if cfg.AssistantRole == cfg.UserRole {

3
tui.go
View File

@@ -880,9 +880,6 @@ func init() {
colorText()
}
go chatRound(msgText, persona, textView, false, false)
// if !cfg.SkipLLMResp {
// // update statue line
// }
return nil
}
if event.Key() == tcell.KeyPgUp || event.Key() == tcell.KeyPgDn {