Documentation
¶
Overview ¶
Package memory defines interfaces and types for agentic memory — cross-session knowledge that persists beyond a single conversation.
PromptKit defines interfaces and an in-memory test store. Production implementations (vector search, graph retrieval, compliance) are provided by platform layers like Omnia.
Index ¶
- Constants
- func RegisterMemoryTools(registry *tools.Registry)
- type Executor
- type Extractor
- type InMemoryStore
- func (s *InMemoryStore) Delete(_ context.Context, scope map[string]string, memoryID string) error
- func (s *InMemoryStore) DeleteAll(_ context.Context, scope map[string]string) error
- func (s *InMemoryStore) List(_ context.Context, scope map[string]string, opts ListOptions) ([]*Memory, error)
- func (s *InMemoryStore) Retrieve(_ context.Context, scope map[string]string, query string, opts RetrieveOptions) ([]*Memory, error)
- func (s *InMemoryStore) Save(_ context.Context, m *Memory) error
- type ListOptions
- type Memory
- type Provenance
- type RetrieveOptions
- type Retriever
- type Store
- type ToolProvider
Constants ¶
const ( RecallToolName = "memory__recall" RememberToolName = "memory__remember" ListToolName = "memory__list" ForgetToolName = "memory__forget" )
Tool names in the memory namespace.
const ExecutorMode = "memory"
ExecutorMode is the executor name for Mode-based routing.
Variables ¶
This section is empty.
Functions ¶
func RegisterMemoryTools ¶
RegisterMemoryTools registers the four base memory tools with executor routing.
Types ¶
type Executor ¶
type Executor struct {
// contains filtered or unexported fields
}
Executor implements tools.Executor for all memory tools. It routes by tool name to the appropriate Store method.
func NewExecutor ¶
NewExecutor creates a Executor for the given store and scope.
func (*Executor) Execute ¶
func (e *Executor) Execute( ctx context.Context, desc *tools.ToolDescriptor, args json.RawMessage, ) (json.RawMessage, error)
Execute implements tools.Executor. Routes by tool name.
type Extractor ¶
type Extractor interface {
Extract(ctx context.Context, scope map[string]string, messages []types.Message) ([]*Memory, error)
}
Extractor derives memories from conversation messages. PromptKit defines the interface only. Implementations are provided by platform layers (Omnia) or SDK examples.
type InMemoryStore ¶
type InMemoryStore struct {
// contains filtered or unexported fields
}
InMemoryStore is a test/development memory store. Substring matching for retrieval, no vector search. Not for production use.
func NewInMemoryStore ¶
func NewInMemoryStore() *InMemoryStore
NewInMemoryStore creates a new in-memory store.
func (*InMemoryStore) List ¶
func (s *InMemoryStore) List( _ context.Context, scope map[string]string, opts ListOptions, ) ([]*Memory, error)
List returns memories matching the scope and filters.
type ListOptions ¶
ListOptions configures a memory list query.
type Memory ¶
type Memory struct {
ID string `json:"id"`
Type string `json:"type"` // Free-form: "preference", "episodic", "code_symbol", etc.
Content string `json:"content"` // Natural language summary
Metadata map[string]any `json:"metadata,omitempty"` // Structured data, store-specific extensions
Confidence float64 `json:"confidence"` // 0.0-1.0
Scope map[string]string `json:"scope"` // Scoping keys: {"user_id": "x", "workspace_id": "y"}
SessionID string `json:"session_id,omitempty"`
TurnRange [2]int `json:"turn_range,omitempty"`
CreatedAt time.Time `json:"created_at"`
AccessedAt time.Time `json:"accessed_at"`
ExpiresAt *time.Time `json:"expires_at,omitempty"`
}
Memory represents a single memory unit. Deliberately thin — domain-specific concerns (purpose, trust model, sensitivity) belong in the store implementation, not the type.
func (*Memory) GetProvenance ¶ added in v1.3.29
func (m *Memory) GetProvenance() Provenance
GetProvenance returns the provenance from metadata, or empty string if unset.
func (*Memory) SetProvenance ¶ added in v1.3.29
func (m *Memory) SetProvenance(p Provenance)
SetProvenance sets the provenance metadata on a Memory, initializing the Metadata map if nil. This always overwrites any existing provenance value to prevent callers from spoofing provenance.
type Provenance ¶ added in v1.3.29
type Provenance string
Provenance indicates how a memory was created. Downstream systems (PII redaction, audit, retention) use this to apply context-appropriate policies. Stored in Memory.Metadata[MetaKeyProvenance].
const ( // MetaKeyProvenance is the well-known Metadata key for provenance. MetaKeyProvenance = "provenance" // ProvenanceUserRequested — user explicitly asked the agent to remember this. ProvenanceUserRequested Provenance = "user_requested" // ProvenanceAgentExtracted — the agent/pipeline extracted this from // conversation without an explicit user request (safe default). ProvenanceAgentExtracted Provenance = "agent_extracted" // ProvenanceSystemGenerated — created by system logic, not from user content. ProvenanceSystemGenerated Provenance = "system_generated" // ProvenanceOperatorCurated — manually created/edited by an operator. ProvenanceOperatorCurated Provenance = "operator_curated" )
type RetrieveOptions ¶
type RetrieveOptions struct {
Types []string // Filter by memory type (empty = all)
Limit int // Max results (0 = store default)
MinConfidence float64 // Minimum confidence threshold (0 = no filter)
}
RetrieveOptions configures a memory retrieval query.
type Retriever ¶
type Retriever interface {
RetrieveContext(ctx context.Context, scope map[string]string, messages []types.Message) ([]*Memory, error)
}
Retriever finds relevant memories given conversation context. Used by the retrieval pipeline stage for automatic RAG injection. Different from Store.Retrieve() which is tool-facing (specific query). Retriever sees the full conversation context and decides what's relevant.
type Store ¶
type Store interface {
Save(ctx context.Context, memory *Memory) error
Retrieve(ctx context.Context, scope map[string]string, query string, opts RetrieveOptions) ([]*Memory, error)
List(ctx context.Context, scope map[string]string, opts ListOptions) ([]*Memory, error)
Delete(ctx context.Context, scope map[string]string, memoryID string) error
DeleteAll(ctx context.Context, scope map[string]string) error
}
Store is the core memory persistence interface.
type ToolProvider ¶
ToolProvider is optionally implemented by stores that want to register additional tools beyond the base recall/remember/list/forget. Custom tools are registered in the "memory" namespace.