mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
32ec8cadeb
Introduce a backend-agnostic Store interface in pkg/memory/ that maps one-to-one with the current SessionManager API. Each method is atomic — no separate Save() call needed. Refs #711
39 lines
1.5 KiB
Go
39 lines
1.5 KiB
Go
package memory
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/sipeed/picoclaw/pkg/providers"
|
|
)
|
|
|
|
// Store defines an interface for persistent session storage.
|
|
// Each method is an atomic operation — there is no separate Save() call.
|
|
type Store interface {
|
|
// AddMessage appends a simple text message to a session.
|
|
AddMessage(ctx context.Context, sessionKey, role, content string) error
|
|
|
|
// AddFullMessage appends a complete message (with tool calls, etc.) to a session.
|
|
AddFullMessage(ctx context.Context, sessionKey string, msg providers.Message) error
|
|
|
|
// GetHistory returns all messages for a session in insertion order.
|
|
// Returns an empty slice (not nil) if the session does not exist.
|
|
GetHistory(ctx context.Context, sessionKey string) ([]providers.Message, error)
|
|
|
|
// GetSummary returns the conversation summary for a session.
|
|
// Returns an empty string if no summary exists.
|
|
GetSummary(ctx context.Context, sessionKey string) (string, error)
|
|
|
|
// SetSummary updates the conversation summary for a session.
|
|
SetSummary(ctx context.Context, sessionKey, summary string) error
|
|
|
|
// TruncateHistory removes all but the last keepLast messages from a session.
|
|
// If keepLast <= 0, all messages are removed.
|
|
TruncateHistory(ctx context.Context, sessionKey string, keepLast int) error
|
|
|
|
// SetHistory replaces all messages in a session with the provided history.
|
|
SetHistory(ctx context.Context, sessionKey string, history []providers.Message) error
|
|
|
|
// Close releases any resources held by the store.
|
|
Close() error
|
|
}
|