Feat: import chat on f11

This commit is contained in:
Grail Finder
2025-04-06 13:59:44 +03:00
parent 4a9c90af3f
commit d2e4846835
4 changed files with 120 additions and 4 deletions

28
tui.go
View File

@@ -8,6 +8,7 @@ import (
_ "image/jpeg"
_ "image/png"
"os"
"path"
"slices"
"strconv"
"strings"
@@ -54,7 +55,7 @@ var (
[yellow]F8[white]: copy n msg to clipboard (linux xclip)
[yellow]F9[white]: table to copy from; with all code blocks
[yellow]F10[white]: manage loaded rag files (that already in vector db)
[yellow]F11[white]: switch RAGEnabled boolean
[yellow]F11[white]: import chat file
[yellow]F12[white]: show this help page
[yellow]Ctrl+w[white]: resume generation on the last msg
[yellow]Ctrl+s[white]: load new char/agent
@@ -201,7 +202,9 @@ func makePropsForm(props map[string]float32) *tview.Form {
AddTextView("Notes", "Props for llamacpp completion call", 40, 2, true, false).
AddCheckbox("Insert <think> (/completion only)", cfg.ThinkUse, func(checked bool) {
cfg.ThinkUse = checked
}).AddDropDown("Set log level (Enter): ", []string{"Debug", "Info", "Warn"}, 1,
}).AddCheckbox("RAG use", cfg.RAGEnabled, func(checked bool) {
cfg.RAGEnabled = checked
}).AddDropDown("Set log level (Enter): ", []string{"Debug", "Info", "Warn"}, 1,
func(option string, optionIndex int) {
setLogLevel(option)
}).AddDropDown("Select an api: ", slices.Insert(cfg.ApiLinks, 0, cfg.CurrentAPI), 0,
@@ -555,8 +558,25 @@ func init() {
return nil
}
if event.Key() == tcell.KeyF11 {
// xor
cfg.RAGEnabled = !cfg.RAGEnabled
// read files in chat_exports
dirname := "chat_exports"
filelist, err := os.ReadDir(dirname)
if err != nil {
if err := notifyUser("failed to load exports", err.Error()); err != nil {
logger.Error("failed to send notification", "error", err)
}
}
fli := []string{}
for _, f := range filelist {
if f.IsDir() || !strings.HasSuffix(f.Name(), ".json") {
continue
}
fpath := path.Join(dirname, f.Name())
fli = append(fli, fpath)
}
// check error
exportsTable := makeImportChatTable(fli)
pages.AddPage(historyPage, exportsTable, true, true)
updateStatusLine()
return nil
}