session autoload mechanism

This commit is contained in:
Luxferre
2026-09-11 17:43:45 +03:00
parent 9ee04ddf32
commit b776644261
+27
View File
@@ -1665,6 +1665,17 @@ func loadSession(sid string) ([]Message, error) {
return nil, fmt.Errorf("session not found: %s", sid) return nil, fmt.Errorf("session not found: %s", sid)
} }
// findProjectSession returns the saved session for the current working
// directory (if any), or nil when none exists yet.
func findProjectSession() *Session {
pid := projectID()
ss := sessions()
for i := range ss {
if ss[i].ID == pid { return &ss[i] }
}
return nil
}
func autosave(msgs []Message) { func autosave(msgs []Message) {
saveSession(msgs, projectID()) saveSession(msgs, projectID())
} }
@@ -2156,6 +2167,22 @@ func main() {
return return
} }
loadHistory() loadHistory()
// Interactive startup: if a session already exists for this directory, offer
// to autoload it so the user can seamlessly resume prior work.
if sess := findProjectSession(); sess != nil && len(sess.Messages) > 1 {
fmt.Println(c("[session found for this directory]", 33) + " " + c(sess.ID, 32))
fmt.Println(" " + c(sess.Summary, 2))
fmt.Println(c(fmt.Sprintf(" created %s [%d messages]", sess.Created, len(sess.Messages)), 2))
fmt.Print(c("Resume this session? [Y/n]: ", 33))
if ans, ok := readPlain(""); ok {
ans = strings.TrimSpace(strings.ToLower(ans))
if ans == "" || ans == "y" || ans == "yes" {
msgs = sess.Messages
autosave(msgs)
fmt.Println(c("[session resumed: "+sess.ID+"]", 32) + " " + c(summary(msgs), 2))
}
}
}
re := cfg.Raw["reasoning_effort"] re := cfg.Raw["reasoning_effort"]
if re == "" { re = "high" } if re == "" { re = "high" }
fmt.Println(c("Bantam Agent ready", 1, 32) + c(" (Ctrl+J = new line)", 2)) fmt.Println(c("Bantam Agent ready", 1, 32) + c(" (Ctrl+J = new line)", 2))