Documentation
¶
Index ¶
- Variables
- type MemoryBank
- func (mb *MemoryBank) Close() error
- func (mb *MemoryBank) CreateSchema(ctx context.Context, schemaPath string) error
- func (mb *MemoryBank) SearchMemory(ctx context.Context, sessionID string, queryEmbedding []float32, limit int) ([]model.MemoryRecord, error)
- func (mb *MemoryBank) StoreMemory(ctx context.Context, sessionID, content, metadata string, embedding []float32) error
- type SessionMemory
- func (sm *SessionMemory) AddShortTerm(sessionID, content, metadata string, embedding []float32)
- func (sm *SessionMemory) Embed(ctx context.Context, text string) ([]float32, error)
- func (sm *SessionMemory) ExportShortTerm() map[string][]model.MemoryRecord
- func (sm *SessionMemory) FlushToLongTerm(ctx context.Context, sessionID string) error
- func (sm *SessionMemory) ImportShortTerm(data map[string][]model.MemoryRecord)
- func (sm *SessionMemory) RetrieveContext(ctx context.Context, sessionID, query string, limit int) ([]model.MemoryRecord, error)
- func (sm *SessionMemory) WithEmbedder(e embed.Embedder) *SessionMemory
- func (sm *SessionMemory) WithEngine(e *memengine.Engine) *SessionMemory
- type SharedSession
- func (ss *SharedSession) AddShortLocal(content string, metadata map[string]string)
- func (ss *SharedSession) AddShortTo(space, content string, metadata map[string]string) error
- func (ss *SharedSession) BroadcastLong(ctx context.Context, content string, metadata map[string]any) ([]model.MemoryRecord, error)
- func (ss *SharedSession) ExportJoinedSpaces() []string
- func (ss *SharedSession) FlushLocal(ctx context.Context) error
- func (ss *SharedSession) FlushSpace(ctx context.Context, space string) error
- func (ss *SharedSession) ImportJoinedSpaces(spaces []string)
- func (ss *SharedSession) Join(space string) error
- func (ss *SharedSession) Leave(space string)
- func (ss *SharedSession) Retrieve(ctx context.Context, query string, limit int) ([]model.MemoryRecord, error)
- func (ss *SharedSession) RetrieveShared(ctx context.Context, query string, limit int) ([]model.MemoryRecord, error)
- func (ss *SharedSession) Spaces() []string
- func (ss *SharedSession) StoreLongTo(ctx context.Context, sessionID, content string, metadata map[string]any) (model.MemoryRecord, error)
- type Space
- type SpaceRegistry
- func (sr *SpaceRegistry) CanRead(spaceName, principal string) bool
- func (sr *SpaceRegistry) CanWrite(spaceName, principal string) bool
- func (sr *SpaceRegistry) Check(spaceName, principal string, requireWrite bool) error
- func (sr *SpaceRegistry) Grant(spaceName, principal string, role SpaceRole, ttl time.Duration) error
- func (sr *SpaceRegistry) List(principal string) []string
- func (sr *SpaceRegistry) Prune() []string
- func (sr *SpaceRegistry) Revoke(spaceName, principal string)
- func (sr *SpaceRegistry) Upsert(name string, ttl time.Duration, acl map[string]SpaceRole) *Space
- type SpaceRole
Constants ¶
This section is empty.
Variables ¶
var ( ErrSpaceUnknown = errors.New("space not registered") ErrSpaceExpired = errors.New("space expired") ErrSpaceForbidden = errors.New("space access denied") )
Errors returned by the space registry.
Functions ¶
This section is empty.
Types ¶
type MemoryBank ¶
type MemoryBank struct {
Store store.VectorStore
}
MemoryBank is a thin wrapper around a VectorStore implementation.
func NewMemoryBank ¶
func NewMemoryBank(ctx context.Context, connStr string) (*MemoryBank, error)
NewMemoryBank creates a new Postgres-backed memory bank.
func NewMemoryBankWithStore ¶
func NewMemoryBankWithStore(s store.VectorStore) *MemoryBank
NewMemoryBankWithStore creates a memory bank backed by a custom vector store implementation.
func (*MemoryBank) Close ¶
func (mb *MemoryBank) Close() error
Close releases underlying resources if the store implements io.Closer.
func (*MemoryBank) CreateSchema ¶
func (mb *MemoryBank) CreateSchema(ctx context.Context, schemaPath string) error
CreateSchema initialises the backing store if it supports schema management.
func (*MemoryBank) SearchMemory ¶
func (mb *MemoryBank) SearchMemory(ctx context.Context, sessionID string, queryEmbedding []float32, limit int) ([]model.MemoryRecord, error)
SearchMemory returns top-k similar memories
func (*MemoryBank) StoreMemory ¶
func (mb *MemoryBank) StoreMemory(ctx context.Context, sessionID, content, metadata string, embedding []float32) error
StoreMemory inserts a long-term record
type SessionMemory ¶
type SessionMemory struct {
Bank *MemoryBank
Embedder embed.Embedder
Engine *memengine.Engine
Spaces *SpaceRegistry
// contains filtered or unexported fields
}
SessionMemory wraps MemoryBank with short- and long-term layers including a configurable short-term buffer and embedding provider.
func NewSessionMemory ¶
func NewSessionMemory(bank *MemoryBank, shortTermSize int) *SessionMemory
NewSessionMemory wraps MemoryBank with short-term cache
func (*SessionMemory) AddShortTerm ¶
func (sm *SessionMemory) AddShortTerm(sessionID, content, metadata string, embedding []float32)
AddShortTerm stores in ephemeral session cache
func (*SessionMemory) Embed ¶
Embed ensures an embedder is available and returns the embedding for the text.
func (*SessionMemory) ExportShortTerm ¶ added in v1.10.3
func (sm *SessionMemory) ExportShortTerm() map[string][]model.MemoryRecord
ExportShortTerm returns a snapshot of the in-memory short-term history.
func (*SessionMemory) FlushToLongTerm ¶
func (sm *SessionMemory) FlushToLongTerm(ctx context.Context, sessionID string) error
FlushToLongTerm writes the short-term cache to the configured vector store.
func (*SessionMemory) ImportShortTerm ¶ added in v1.10.3
func (sm *SessionMemory) ImportShortTerm(data map[string][]model.MemoryRecord)
ImportShortTerm overwrites the in-memory short-term history with the provided data.
func (*SessionMemory) RetrieveContext ¶
func (sm *SessionMemory) RetrieveContext(ctx context.Context, sessionID, query string, limit int) ([]model.MemoryRecord, error)
RetrieveContext returns combined short- and long-term memory
func (*SessionMemory) WithEmbedder ¶
func (sm *SessionMemory) WithEmbedder(e embed.Embedder) *SessionMemory
WithEmbedder overrides the embedder used by the session memory.
func (*SessionMemory) WithEngine ¶
func (sm *SessionMemory) WithEngine(e *memengine.Engine) *SessionMemory
WithEngine attaches an advanced memory engine for long-term storage and retrieval.
type SharedSession ¶
type SharedSession struct {
// contains filtered or unexported fields
}
func NewSharedSession ¶
func NewSharedSession(base *SessionMemory, local string, spaces ...string) *SharedSession
NewSharedSession binds a local sessionID and optional initial shared spaces.
func (*SharedSession) AddShortLocal ¶
func (ss *SharedSession) AddShortLocal(content string, metadata map[string]string)
AddShortLocal appends a short-term memory to the *local* session buffer.
func (*SharedSession) AddShortTo ¶
func (ss *SharedSession) AddShortTo(space, content string, metadata map[string]string) error
AddShortTo writes a short-term memory directly into a shared space buffer.
func (*SharedSession) BroadcastLong ¶
func (ss *SharedSession) BroadcastLong(ctx context.Context, content string, metadata map[string]any) ([]model.MemoryRecord, error)
BroadcastLong writes a long-term memory to the local session and all spaces.
func (*SharedSession) ExportJoinedSpaces ¶ added in v1.10.3
func (ss *SharedSession) ExportJoinedSpaces() []string
ExportJoinedSpaces returns the list of currently joined shared spaces.
func (*SharedSession) FlushLocal ¶
func (ss *SharedSession) FlushLocal(ctx context.Context) error
FlushLocal promotes the local short-term buffer to long-term storage.
func (*SharedSession) FlushSpace ¶
func (ss *SharedSession) FlushSpace(ctx context.Context, space string) error
FlushSpace promotes a shared space short-term buffer to long-term.
func (*SharedSession) ImportJoinedSpaces ¶ added in v1.10.3
func (ss *SharedSession) ImportJoinedSpaces(spaces []string)
ImportJoinedSpaces restores the list of joined shared spaces.
func (*SharedSession) Join ¶
func (ss *SharedSession) Join(space string) error
Join adds a shared space (sessionID) to the view.
func (*SharedSession) Leave ¶
func (ss *SharedSession) Leave(space string)
Leave removes a shared space (sessionID) from the view.
func (*SharedSession) Retrieve ¶
func (ss *SharedSession) Retrieve(ctx context.Context, query string, limit int) ([]model.MemoryRecord, error)
Retrieve merges short-term (local + spaces) and filtered long-term results. Long-term retrieval oversamples then filters to the allowed sessionIDs.
func (*SharedSession) RetrieveShared ¶
func (ss *SharedSession) RetrieveShared(ctx context.Context, query string, limit int) ([]model.MemoryRecord, error)
RetrieveShared returns only joined shared spaces (excludes local).
func (*SharedSession) Spaces ¶
func (ss *SharedSession) Spaces() []string
Spaces returns the current list of shared spaces.
func (*SharedSession) StoreLongTo ¶
func (ss *SharedSession) StoreLongTo(ctx context.Context, sessionID, content string, metadata map[string]any) (model.MemoryRecord, error)
StoreLongTo writes a long-term memory directly to a specific session/space. If Engine is configured it will be used; otherwise we fall back to Bank + Embed.
type Space ¶
type Space struct {
Name string
ACL map[string]SpaceRole
ExpiresAt time.Time
CreatedAt time.Time
UpdatedAt time.Time
}
Space represents a collaborative memory namespace shared across sessions.
type SpaceRegistry ¶
type SpaceRegistry struct {
// contains filtered or unexported fields
}
SpaceRegistry keeps track of collaborative memory spaces, their ACLs and TTLs.
func NewSpaceRegistry ¶
func NewSpaceRegistry(defaultTTL time.Duration) *SpaceRegistry
NewSpaceRegistry builds an empty registry with the provided default TTL.
func (*SpaceRegistry) CanRead ¶
func (sr *SpaceRegistry) CanRead(spaceName, principal string) bool
CanRead reports whether the principal has read access to the space.
func (*SpaceRegistry) CanWrite ¶
func (sr *SpaceRegistry) CanWrite(spaceName, principal string) bool
CanWrite reports whether the principal has write access to the space.
func (*SpaceRegistry) Check ¶
func (sr *SpaceRegistry) Check(spaceName, principal string, requireWrite bool) error
Check enforces access and returns explicit errors.
func (*SpaceRegistry) Grant ¶
func (sr *SpaceRegistry) Grant(spaceName, principal string, role SpaceRole, ttl time.Duration) error
Grant assigns or updates a role for a principal inside a space.
func (*SpaceRegistry) List ¶
func (sr *SpaceRegistry) List(principal string) []string
List returns active spaces the principal can read.
func (*SpaceRegistry) Prune ¶
func (sr *SpaceRegistry) Prune() []string
Prune removes expired spaces.
func (*SpaceRegistry) Revoke ¶
func (sr *SpaceRegistry) Revoke(spaceName, principal string)
Revoke removes a principal from the space ACL.