summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2024-11-26 22:16:18 +0300
committerGrail Finder <wohilas@gmail.com>2024-11-26 22:16:18 +0300
commit7f48741b11038715f82747f1eacee14470547855 (patch)
tree80c88aea10f2dbfb12a4ac50139db9c293ac0006
parentad65c3583a47d09dc1b3b50fd02fb411344bd9ae (diff)
Fix: continue llm resp; clear status line
-rw-r--r--README.md9
-rw-r--r--bot.go9
-rw-r--r--tui.go16
3 files changed, 14 insertions, 20 deletions
diff --git a/README.md b/README.md
index 5547d1d..9fe6a32 100644
--- a/README.md
+++ b/README.md
@@ -17,11 +17,12 @@
- option to switch between predefined sys prompts; +
- sqlite for the bot memory; +
- rename current chat; +
+- help page with all key bindings; +
- fullscreen textarea option (bothersome to implement);
- consider adding use /completion of llamacpp, since openai endpoint clearly has template|format issues;
- change temp, min-p and other params from tui;
-- help page with all key bindings;
- default config file (api url, path to sysprompts, path to log, limits, etc);
+- export whole chat into a json file;
### FIX:
- bot responding (or haninging) blocks everything; +
@@ -30,6 +31,6 @@
- Tab is needed to copy paste text into textarea box, use shift+tab to switch focus; (changed tp pgup) +
- sometimes bots put additional info around the tool call, have a regexp to match tool call; +
- remove all panics from code; +
-- delete last msg: can have unexpected behavior (deletes what appears to be two messages if last bot msg was not generated (should only delete icon in that case));
-- empty input to continue bot msg gens new msg index and bot icon;
-- new chat replaces old ones in db;
+- new chat replaces old ones in db; +
+- empty input to continue bot msg gens new msg index and bot icon; +
+- delete last msg: can have unexpected behavior (deletes what appears to be two messages if last bot msg was not generated (should only delete icon in that case)) (should use regen instead of delete in that case);
diff --git a/bot.go b/bot.go
index d4c86f0..245e806 100644
--- a/bot.go
+++ b/bot.go
@@ -122,11 +122,14 @@ func chatRound(userMsg, role string, tv *tview.TextView) {
botRespMode = true
reader := formMsg(chatBody, userMsg, role)
if reader == nil {
- return // any notification in that case?
+ logger.Error("empty reader from msgs", "role", role)
+ return
}
go sendMsgToLLM(reader)
- fmt.Fprintf(tv, fmt.Sprintf("(%d) ", len(chatBody.Messages)))
- fmt.Fprintf(tv, assistantIcon)
+ if userMsg != "" { // no need to write assistant icon since we continue old message
+ fmt.Fprintf(tv, fmt.Sprintf("(%d) ", len(chatBody.Messages)))
+ fmt.Fprintf(tv, assistantIcon)
+ }
respText := strings.Builder{}
out:
for {
diff --git a/tui.go b/tui.go
index 9984a07..33ecd65 100644
--- a/tui.go
+++ b/tui.go
@@ -62,12 +62,7 @@ func init() {
AddItem(textArea, 0, 10, true).
AddItem(position, 0, 1, false)
updateStatusLine := func() {
- fromRow, fromColumn, toRow, toColumn := textArea.GetCursor()
- if fromRow == toRow && fromColumn == toColumn {
- position.SetText(fmt.Sprintf(indexLine, botRespMode, activeChatName))
- } else {
- position.SetText(fmt.Sprintf("Esc: send msg; PgUp/Down: switch focus; F1: manage chats; F2: regen last; F3:delete last msg; F4: edit msg; F5: toggle system; F6: interrupt bot resp; Row: [yellow]%d[white], Column: [yellow]%d[white] - [red]To[white] Row: [yellow]%d[white], To Column: [yellow]%d; bot resp mode: %v", fromRow, fromColumn, toRow, toColumn, botRespMode))
- }
+ position.SetText(fmt.Sprintf(indexLine, botRespMode, activeChatName))
}
chatOpts := []string{"cancel", "new", "rename current"}
chatList, err := loadHistoryChats()
@@ -260,11 +255,10 @@ func init() {
go chatRound("", userRole, textView)
return nil
}
- if event.Key() == tcell.KeyF3 {
+ if event.Key() == tcell.KeyF3 && !botRespMode {
// delete last msg
chatBody.Messages = chatBody.Messages[:len(chatBody.Messages)-1]
textView.SetText(chatToText(showSystemMsgs))
- botRespMode = false // hmmm; is that correct?
return nil
}
if event.Key() == tcell.KeyF4 {
@@ -314,8 +308,7 @@ func init() {
}
// cannot send msg in editMode or botRespMode
if event.Key() == tcell.KeyEscape && !editMode && !botRespMode {
- fromRow, fromColumn, _, _ := textArea.GetCursor()
- position.SetText(fmt.Sprintf(indexLine, fromRow, fromColumn, botRespMode))
+ position.SetText(fmt.Sprintf(indexLine, botRespMode, activeChatName))
// read all text into buffer
msgText := textArea.GetText()
if msgText != "" {
@@ -333,9 +326,6 @@ func init() {
return nil
}
if isASCII(string(event.Rune())) && !botRespMode {
- // botRespMode = false
- // fromRow, fromColumn, _, _ := textArea.GetCursor()
- // position.SetText(fmt.Sprintf(indexLine, fromRow, fromColumn, botRespMode))
return event
}
return event