diff options
| author | Grail Finder <wohilas@gmail.com> | 2026-03-08 08:50:50 +0300 |
|---|---|---|
| committer | Grail Finder <wohilas@gmail.com> | 2026-03-08 08:50:50 +0300 |
| commit | e0201886f80528790c3a05864da66bafdf07f9d8 (patch) | |
| tree | 8af44a14ad3ea69e3df570b4542caf3d98b33ed6 | |
| parent | 5b175c12a63099525444ab455b333c8a6579bd78 (diff) | |
Enha (rag): keep page open until user closes it
| -rw-r--r-- | rag/rag.go | 2 | ||||
| -rw-r--r-- | tables.go | 31 | ||||
| -rw-r--r-- | tui.go | 1 |
3 files changed, 20 insertions, 14 deletions
@@ -24,7 +24,7 @@ const () var ( // Status messages for TUI integration LongJobStatusCh = make(chan string, 100) // Increased buffer size for parallel batch updates - FinishedRAGStatus = "finished loading RAG file; press Enter" + FinishedRAGStatus = "finished loading RAG file; press x to exit" LoadedFileRAGStatus = "loaded file" ErrRAGStatus = "some error occurred; failed to transfer data to vector db" ) @@ -243,11 +243,9 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { for _, f := range loadedFiles { loadedSet[f] = true } - // Build merged list: files from ragdir + orphaned files from DB ragFiles := make([]ragFileInfo, 0, len(fileList)+len(loadedFiles)) seen := make(map[string]bool) - // Add files from ragdir for _, f := range fileList { ragFiles = append(ragFiles, ragFileInfo{ @@ -258,7 +256,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { }) seen[f] = true } - // Add orphaned files (in DB but not in ragdir) for _, f := range loadedFiles { if !seen[f] { @@ -376,7 +373,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { } errCh := make(chan error, 1) // why? go func() { - defer pages.RemovePage(RAGPage) for { select { case err := <-errCh: @@ -417,7 +413,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { } return } - // defer pages.RemovePage(RAGPage) tc := fileTable.GetCell(row, column) tc.SetTextColor(tcell.ColorRed) fileTable.SetSelectable(false, false) @@ -430,7 +425,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { f := ragFiles[row-1] // Handle "-" case (orphaned file with no delete option) if tc.Text == "-" { - pages.RemovePage(RAGPage) return } switch tc.Text { @@ -441,14 +435,14 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { if err := ragger.LoadRAG(fpath); err != nil { logger.Error("failed to embed file", "chat", fpath, "error", err) showToast("RAG", "failed to embed file; error: "+err.Error()) - app.QueueUpdate(func() { - pages.RemovePage(RAGPage) - }) return } showToast("RAG", "file loaded successfully") app.QueueUpdate(func() { pages.RemovePage(RAGPage) + loadedFiles, _ := ragger.ListLoaded() + chatRAGTable := makeRAGTable(fileList, loadedFiles) + pages.AddPage(RAGPage, chatRAGTable, true, true) }) }() return @@ -458,14 +452,14 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { if err := ragger.RemoveFile(f.name); err != nil { logger.Error("failed to unload file from RAG", "filename", f.name, "error", err) showToast("RAG", "failed to unload file; error: "+err.Error()) - app.QueueUpdate(func() { - pages.RemovePage(RAGPage) - }) return } showToast("RAG", "file unloaded successfully") app.QueueUpdate(func() { pages.RemovePage(RAGPage) + loadedFiles, _ := ragger.ListLoaded() + chatRAGTable := makeRAGTable(fileList, loadedFiles) + pages.AddPage(RAGPage, chatRAGTable, true, true) }) }() return @@ -476,6 +470,19 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex { return } showToast("chat deleted", fpath+" was deleted") + app.QueueUpdate(func() { + pages.RemovePage(RAGPage) + newFileList, _ := os.ReadDir(cfg.RAGDir) + loadedFiles, _ := ragger.ListLoaded() + var newFiles []string + for _, f := range newFileList { + if !f.IsDir() { + newFiles = append(newFiles, f.Name()) + } + } + chatRAGTable := makeRAGTable(newFiles, loadedFiles) + pages.AddPage(RAGPage, chatRAGTable, true, true) + }) return default: pages.RemovePage(RAGPage) @@ -50,7 +50,6 @@ var ( helpPage = "helpPage" renamePage = "renamePage" RAGPage = "RAGPage" - RAGLoadedPage = "RAGLoadedPage" propsPage = "propsPage" codeBlockPage = "codeBlockPage" imgPage = "imgPage" |
