A LLM Chat client on the terminal built with tview.
Status: Pre-Alpha
Requirements
fzf-tmux
OPENAI_API_KEY as env variable
Install
go install github.com/worldsayshi/cir@main
Then just run cir to start it. It will store the session in a ~/.cir folder.
For a separate session, use the -session flag like this: cir -session my-session.yaml.
Key bindings
Ctrl-o - Manage context
Ctrl-s - Submit message
(Shift-)Tab - Toggle focus between input and chat history
Run from this repo
Run:
go run .
Test:
go test ./...
TODOs for Beta
[/] Refactor application.go so that the control flow is more DAG-like, now it's spaghet
Add the file names sent to the printed chat message
Allow code edits
Bug: Getting Error: <nil> in log
Cleanup: Get rid of frivolous panics
Alpha TODO log
Bug: refactor and fix messages handling so that messages are updated properly
adding context files using fzf?
Define working set data in session data structure:
workingFiles with path and last submitted checksum
Manage current working set in TUI - store in session file
Just add them to the message
Add them but hide them from rendering
Add them to the session data, calculate and store checksum whenever they are added to the sent data, only send when checksum change (sort of untested but seems to work I think??)
Add backwards compatibility for session yaml storage
Prompt templates for sending context
Make the history view scrollable
QOL: Also store the current wip chat message in the session (on exit?)