47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/gdamore/tcell/v2"
|
|
"github.com/rivo/tview"
|
|
)
|
|
|
|
var (
|
|
boolColors = map[bool]string{true: "green", false: "red"}
|
|
botRespMode = false
|
|
toolRunningMode = false
|
|
editMode = false
|
|
roleEditMode = false
|
|
injectRole = true
|
|
selectedIndex = int(-1)
|
|
shellMode = false
|
|
shellHistory []string
|
|
shellHistoryPos int = -1
|
|
thinkingCollapsed = false
|
|
toolCollapsed = true
|
|
statusLineTempl = "help (F12) | chat: [orange:-:b]%s[-:-:-] (F1) | [%s:-:b]tool use[-:-:-] (ctrl+k) | model: [%s:-:b]%s[-:-:-] (ctrl+l) | [%s:-:b]skip LLM resp[-:-:-] (F10) | API: [orange:-:b]%s[-:-:-] (ctrl+v)\nwriting as: [orange:-:b]%s[-:-:-] (ctrl+q) | bot will write as [orange:-:b]%s[-:-:-] (ctrl+x)"
|
|
focusSwitcher = map[tview.Primitive]tview.Primitive{}
|
|
app *tview.Application
|
|
)
|
|
|
|
func main() {
|
|
app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
|
if event.Key() == tcell.KeyCtrlC {
|
|
logger.Info("caught Ctrl+C via tcell event")
|
|
go func() {
|
|
if err := pwShutDown(); err != nil {
|
|
logger.Error("shutdown failed", "err", err)
|
|
}
|
|
app.Stop()
|
|
}()
|
|
return nil // swallow the event
|
|
}
|
|
return event
|
|
})
|
|
pages.AddPage("main", flex, true, true)
|
|
if err := app.SetRoot(pages,
|
|
true).EnableMouse(cfg.EnableMouse).EnablePaste(true).Run(); err != nil {
|
|
logger.Error("failed to start tview app", "error", err)
|
|
return
|
|
}
|
|
}
|