Documentation
¶
Index ¶
- Variables
- type ContradictionDetector
- type ContradictionHit
- type MockStore
- func (m *MockStore) Close() error
- func (m *MockStore) Delete(_ context.Context, id string) error
- func (m *MockStore) EnsureCollection(_ context.Context) error
- func (m *MockStore) FindDuplicates(_ context.Context, vector []float32, threshold float64) ([]models.SearchResult, error)
- func (m *MockStore) Get(_ context.Context, id string) (*models.Memory, error)
- func (m *MockStore) GetChain(ctx context.Context, id string) ([]models.Memory, error)
- func (m *MockStore) GetEntity(_ context.Context, id string) (*models.Entity, error)
- func (m *MockStore) GetHistory(ctx context.Context, id string) ([]models.Memory, error)
- func (m *MockStore) InvalidateMemory(_ context.Context, id string, validTo time.Time) error
- func (m *MockStore) LinkMemoryToEntity(_ context.Context, entityID, memoryID string) error
- func (m *MockStore) List(_ context.Context, filters *SearchFilters, limit uint64, cursor string) ([]models.Memory, string, error)
- func (m *MockStore) MigrateTemporalFields(_ context.Context) error
- func (m *MockStore) Search(_ context.Context, vector []float32, limit uint64, filters *SearchFilters) ([]models.SearchResult, error)
- func (m *MockStore) SearchEntities(_ context.Context, name string) ([]models.Entity, error)
- func (m *MockStore) Stats(_ context.Context) (*models.CollectionStats, error)
- func (m *MockStore) UpdateAccessMetadata(_ context.Context, id string) error
- func (m *MockStore) UpdateConflictFields(_ context.Context, id, groupID, status string) error
- func (m *MockStore) UpdateReinforcement(_ context.Context, id string, boost float64) error
- func (m *MockStore) Upsert(_ context.Context, memory models.Memory, vector []float32) error
- func (m *MockStore) UpsertEntity(_ context.Context, entity models.Entity) error
- type SearchFilters
- type Store
Constants ¶
This section is empty.
Variables ¶
var ErrNotFound = errors.New("memory not found")
ErrNotFound is returned by Get and Delete when the requested memory does not exist.
Functions ¶
This section is empty.
Types ¶
type ContradictionDetector ¶ added in v0.8.0
type ContradictionDetector interface {
FindContradictions(ctx context.Context, content string, embedding []float32) ([]ContradictionHit, error)
}
ContradictionDetector is the interface the store uses to detect contradictions. Implemented by capture.MemoryContradictionDetector.
type ContradictionHit ¶ added in v0.8.0
ContradictionHit describes a memory that contradicts a new one being stored.
type MockStore ¶
type MockStore struct {
// contains filtered or unexported fields
}
MockStore is an in-memory implementation of Store for testing.
func (*MockStore) EnsureCollection ¶
EnsureCollection is a no-op for the mock store.
func (*MockStore) FindDuplicates ¶
func (m *MockStore) FindDuplicates(_ context.Context, vector []float32, threshold float64) ([]models.SearchResult, error)
FindDuplicates returns memories with cosine similarity above the threshold.
func (*MockStore) GetChain ¶ added in v0.4.0
GetChain follows the SupersedesID chain and returns the full history. The chain is returned newest first. Stops when SupersedesID is empty or the referenced memory is not found. A visited set prevents infinite loops.
func (*MockStore) GetHistory ¶ added in v0.8.0
GetHistory returns all versions of a memory chain (follows SupersedesID).
func (*MockStore) InvalidateMemory ¶ added in v0.8.0
InvalidateMemory sets valid_to on a memory without deleting it.
func (*MockStore) LinkMemoryToEntity ¶ added in v0.4.0
LinkMemoryToEntity adds a memory ID to an entity's MemoryIDs list.
func (*MockStore) List ¶
func (m *MockStore) List(_ context.Context, filters *SearchFilters, limit uint64, cursor string) ([]models.Memory, string, error)
List returns memories matching filters with cursor-based pagination.
func (*MockStore) MigrateTemporalFields ¶ added in v0.8.0
MigrateTemporalFields is a no-op in the mock store.
func (*MockStore) Search ¶
func (m *MockStore) Search(_ context.Context, vector []float32, limit uint64, filters *SearchFilters) ([]models.SearchResult, error)
Search finds memories by cosine similarity to the query vector.
func (*MockStore) SearchEntities ¶ added in v0.4.0
SearchEntities finds entities whose Name or any Alias contains the given substring (case-insensitive).
func (*MockStore) UpdateAccessMetadata ¶
UpdateAccessMetadata updates the last-accessed timestamp and increments the access count.
func (*MockStore) UpdateConflictFields ¶ added in v0.4.0
UpdateConflictFields sets ConflictGroupID and ConflictStatus on an existing memory.
func (*MockStore) UpdateReinforcement ¶ added in v0.4.0
UpdateReinforcement boosts the confidence of an existing memory (capped at 1.0) and increments ReinforcedCount.
type SearchFilters ¶
type SearchFilters struct {
Type *models.MemoryType `json:"type,omitempty"`
Scope *models.MemoryScope `json:"scope,omitempty"`
Visibility *models.MemoryVisibility `json:"visibility,omitempty"`
Project *string `json:"project,omitempty"`
Tags []string `json:"tags,omitempty"`
Source *string `json:"source,omitempty"`
ConflictStatus *models.ConflictStatus `json:"conflict_status,omitempty"` // filter by conflict status ("active", "resolved", "")
// IncludeInvalidated includes memories with valid_to set (historical versions).
// Default: false (only return currently-valid memories).
IncludeInvalidated bool `json:"include_invalidated,omitempty"`
// AsOf returns memories valid at a specific point in time.
// valid_from <= AsOf AND (valid_to IS NULL OR valid_to > AsOf)
AsOf *time.Time `json:"as_of,omitempty"`
}
SearchFilters allows filtering search results.
type Store ¶
type Store interface {
// EnsureCollection creates the vector collection if it doesn't exist.
EnsureCollection(ctx context.Context) error
// Upsert inserts or updates a memory with its embedding vector.
Upsert(ctx context.Context, memory models.Memory, vector []float32) error
// Search finds memories similar to the query vector.
Search(ctx context.Context, vector []float32, limit uint64, filters *SearchFilters) ([]models.SearchResult, error)
// Get retrieves a single memory by ID.
Get(ctx context.Context, id string) (*models.Memory, error)
// Delete removes a memory by ID.
Delete(ctx context.Context, id string) error
// List returns memories matching the given filters.
// The cursor parameter is opaque; pass "" for the first page.
// The returned cursor is empty when no more results remain.
List(ctx context.Context, filters *SearchFilters, limit uint64, cursor string) ([]models.Memory, string, error)
// FindDuplicates returns memories with cosine similarity above the threshold.
FindDuplicates(ctx context.Context, vector []float32, threshold float64) ([]models.SearchResult, error)
// UpdateAccessMetadata increments access count and updates last_accessed time.
UpdateAccessMetadata(ctx context.Context, id string) error
// Stats returns collection statistics.
Stats(ctx context.Context) (*models.CollectionStats, error)
// UpsertEntity inserts or updates an entity.
UpsertEntity(ctx context.Context, entity models.Entity) error
// GetEntity retrieves a single entity by ID.
GetEntity(ctx context.Context, id string) (*models.Entity, error)
// SearchEntities finds entities whose name contains the given string.
SearchEntities(ctx context.Context, name string) ([]models.Entity, error)
// LinkMemoryToEntity adds a memory ID to an entity's memory list.
LinkMemoryToEntity(ctx context.Context, entityID, memoryID string) error
// GetChain follows the SupersedesID chain and returns the full history.
// The chain is returned newest first, stopping when SupersedesID is empty
// or the referenced memory is not found.
GetChain(ctx context.Context, id string) ([]models.Memory, error)
// UpdateConflictFields sets ConflictGroupID and ConflictStatus on an existing memory
// without requiring a re-embed.
UpdateConflictFields(ctx context.Context, id, conflictGroupID, conflictStatus string) error
// UpdateReinforcement boosts the confidence of an existing memory (capped at 1.0)
// and increments ReinforcedCount. Used when a near-duplicate is captured.
UpdateReinforcement(ctx context.Context, id string, confidenceBoost float64) error
// InvalidateMemory sets valid_to on a memory without deleting it.
// Used when a superseding memory is stored (temporal versioning).
InvalidateMemory(ctx context.Context, id string, validTo time.Time) error
// GetHistory returns all versions of a memory chain, including invalidated ones.
// Uses SupersedesID chain traversal. Newest version first.
GetHistory(ctx context.Context, id string) ([]models.Memory, error)
// MigrateTemporalFields backfills valid_from = created_at for all memories
// that do not yet have valid_from set. Idempotent.
MigrateTemporalFields(ctx context.Context) error
// Close cleans up resources.
Close() error
}
Store defines the interface for memory persistence with vector search.