Enha (rag): keep page open until user closes it
This commit is contained in:
@@ -24,7 +24,7 @@ const ()
|
|||||||
var (
|
var (
|
||||||
// Status messages for TUI integration
|
// Status messages for TUI integration
|
||||||
LongJobStatusCh = make(chan string, 100) // Increased buffer size for parallel batch updates
|
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"
|
LoadedFileRAGStatus = "loaded file"
|
||||||
ErrRAGStatus = "some error occurred; failed to transfer data to vector db"
|
ErrRAGStatus = "some error occurred; failed to transfer data to vector db"
|
||||||
)
|
)
|
||||||
|
|||||||
31
tables.go
31
tables.go
@@ -243,11 +243,9 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
for _, f := range loadedFiles {
|
for _, f := range loadedFiles {
|
||||||
loadedSet[f] = true
|
loadedSet[f] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build merged list: files from ragdir + orphaned files from DB
|
// Build merged list: files from ragdir + orphaned files from DB
|
||||||
ragFiles := make([]ragFileInfo, 0, len(fileList)+len(loadedFiles))
|
ragFiles := make([]ragFileInfo, 0, len(fileList)+len(loadedFiles))
|
||||||
seen := make(map[string]bool)
|
seen := make(map[string]bool)
|
||||||
|
|
||||||
// Add files from ragdir
|
// Add files from ragdir
|
||||||
for _, f := range fileList {
|
for _, f := range fileList {
|
||||||
ragFiles = append(ragFiles, ragFileInfo{
|
ragFiles = append(ragFiles, ragFileInfo{
|
||||||
@@ -258,7 +256,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
})
|
})
|
||||||
seen[f] = true
|
seen[f] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add orphaned files (in DB but not in ragdir)
|
// Add orphaned files (in DB but not in ragdir)
|
||||||
for _, f := range loadedFiles {
|
for _, f := range loadedFiles {
|
||||||
if !seen[f] {
|
if !seen[f] {
|
||||||
@@ -376,7 +373,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
}
|
}
|
||||||
errCh := make(chan error, 1) // why?
|
errCh := make(chan error, 1) // why?
|
||||||
go func() {
|
go func() {
|
||||||
defer pages.RemovePage(RAGPage)
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case err := <-errCh:
|
case err := <-errCh:
|
||||||
@@ -417,7 +413,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// defer pages.RemovePage(RAGPage)
|
|
||||||
tc := fileTable.GetCell(row, column)
|
tc := fileTable.GetCell(row, column)
|
||||||
tc.SetTextColor(tcell.ColorRed)
|
tc.SetTextColor(tcell.ColorRed)
|
||||||
fileTable.SetSelectable(false, false)
|
fileTable.SetSelectable(false, false)
|
||||||
@@ -430,7 +425,6 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
f := ragFiles[row-1]
|
f := ragFiles[row-1]
|
||||||
// Handle "-" case (orphaned file with no delete option)
|
// Handle "-" case (orphaned file with no delete option)
|
||||||
if tc.Text == "-" {
|
if tc.Text == "-" {
|
||||||
pages.RemovePage(RAGPage)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch tc.Text {
|
switch tc.Text {
|
||||||
@@ -441,14 +435,14 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
if err := ragger.LoadRAG(fpath); err != nil {
|
if err := ragger.LoadRAG(fpath); err != nil {
|
||||||
logger.Error("failed to embed file", "chat", fpath, "error", err)
|
logger.Error("failed to embed file", "chat", fpath, "error", err)
|
||||||
showToast("RAG", "failed to embed file; error: "+err.Error())
|
showToast("RAG", "failed to embed file; error: "+err.Error())
|
||||||
app.QueueUpdate(func() {
|
|
||||||
pages.RemovePage(RAGPage)
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
showToast("RAG", "file loaded successfully")
|
showToast("RAG", "file loaded successfully")
|
||||||
app.QueueUpdate(func() {
|
app.QueueUpdate(func() {
|
||||||
pages.RemovePage(RAGPage)
|
pages.RemovePage(RAGPage)
|
||||||
|
loadedFiles, _ := ragger.ListLoaded()
|
||||||
|
chatRAGTable := makeRAGTable(fileList, loadedFiles)
|
||||||
|
pages.AddPage(RAGPage, chatRAGTable, true, true)
|
||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
return
|
return
|
||||||
@@ -458,14 +452,14 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
if err := ragger.RemoveFile(f.name); err != nil {
|
if err := ragger.RemoveFile(f.name); err != nil {
|
||||||
logger.Error("failed to unload file from RAG", "filename", f.name, "error", err)
|
logger.Error("failed to unload file from RAG", "filename", f.name, "error", err)
|
||||||
showToast("RAG", "failed to unload file; error: "+err.Error())
|
showToast("RAG", "failed to unload file; error: "+err.Error())
|
||||||
app.QueueUpdate(func() {
|
|
||||||
pages.RemovePage(RAGPage)
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
showToast("RAG", "file unloaded successfully")
|
showToast("RAG", "file unloaded successfully")
|
||||||
app.QueueUpdate(func() {
|
app.QueueUpdate(func() {
|
||||||
pages.RemovePage(RAGPage)
|
pages.RemovePage(RAGPage)
|
||||||
|
loadedFiles, _ := ragger.ListLoaded()
|
||||||
|
chatRAGTable := makeRAGTable(fileList, loadedFiles)
|
||||||
|
pages.AddPage(RAGPage, chatRAGTable, true, true)
|
||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
return
|
return
|
||||||
@@ -476,6 +470,19 @@ func makeRAGTable(fileList []string, loadedFiles []string) *tview.Flex {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
showToast("chat deleted", fpath+" was deleted")
|
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
|
return
|
||||||
default:
|
default:
|
||||||
pages.RemovePage(RAGPage)
|
pages.RemovePage(RAGPage)
|
||||||
|
|||||||
1
tui.go
1
tui.go
@@ -50,7 +50,6 @@ var (
|
|||||||
helpPage = "helpPage"
|
helpPage = "helpPage"
|
||||||
renamePage = "renamePage"
|
renamePage = "renamePage"
|
||||||
RAGPage = "RAGPage"
|
RAGPage = "RAGPage"
|
||||||
RAGLoadedPage = "RAGLoadedPage"
|
|
||||||
propsPage = "propsPage"
|
propsPage = "propsPage"
|
||||||
codeBlockPage = "codeBlockPage"
|
codeBlockPage = "codeBlockPage"
|
||||||
imgPage = "imgPage"
|
imgPage = "imgPage"
|
||||||
|
|||||||
Reference in New Issue
Block a user