- Add Close() to AgentInstance, AgentRegistry, and AgentLoop so JSONL file handles are released during gateway shutdown and CLI exit. - Fall back to SessionManager when migration fails, preventing a split state where some sessions live in JSONL and others remain in JSON. - Add defer agentLoop.Close() in the CLI agent command path. - Document SessionStore interface methods (fire-and-forget contract).
32 lines
1.4 KiB
Go
32 lines
1.4 KiB
Go
package session
|
|
|
|
import "github.com/sipeed/picoclaw/pkg/providers"
|
|
|
|
// SessionStore defines the persistence operations used by the agent loop.
|
|
// Both SessionManager (legacy JSON backend) and JSONLBackend satisfy this
|
|
// interface, allowing the storage layer to be swapped without touching the
|
|
// agent loop code.
|
|
//
|
|
// Write methods (Add*, Set*, Truncate*) are fire-and-forget: they do not
|
|
// return errors. Implementations should log failures internally. This
|
|
// matches the original SessionManager contract that the agent loop relies on.
|
|
type SessionStore interface {
|
|
// AddMessage appends a simple role/content message to the session.
|
|
AddMessage(sessionKey, role, content string)
|
|
// AddFullMessage appends a complete message including tool calls.
|
|
AddFullMessage(sessionKey string, msg providers.Message)
|
|
// GetHistory returns the full message history for the session.
|
|
GetHistory(key string) []providers.Message
|
|
// GetSummary returns the conversation summary, or "" if none.
|
|
GetSummary(key string) string
|
|
// SetSummary replaces the conversation summary.
|
|
SetSummary(key, summary string)
|
|
// SetHistory replaces the full message history.
|
|
SetHistory(key string, history []providers.Message)
|
|
// TruncateHistory keeps only the last keepLast messages.
|
|
TruncateHistory(key string, keepLast int)
|
|
// Save persists any pending state to durable storage.
|
|
Save(key string) error
|
|
// Close releases resources held by the store.
|
|
Close() error
|
|
}
|