49 lines
1.9 KiB
Go
49 lines
1.9 KiB
Go
// ── models_memory.go ────────────────────────
|
|
// Memory model for v0.18.0 — add these types to models/models.go
|
|
// (or keep as a separate file in the models package)
|
|
|
|
package models
|
|
|
|
import "time"
|
|
|
|
// ── Memory Scope Constants ──────────────────
|
|
|
|
const (
|
|
MemoryScopeUser = "user" // personal facts, persists across all conversations
|
|
MemoryScopePersona = "persona" // shared across all users of a Persona
|
|
MemoryScopePersonaUser = "persona_user" // per-user within a Persona context
|
|
)
|
|
|
|
// ── Memory Status Constants ─────────────────
|
|
|
|
const (
|
|
MemoryStatusActive = "active"
|
|
MemoryStatusPendingReview = "pending_review"
|
|
MemoryStatusArchived = "archived"
|
|
)
|
|
|
|
// Memory represents a single fact or preference persisted across conversations.
|
|
type Memory struct {
|
|
ID string `json:"id" db:"id"`
|
|
Scope string `json:"scope" db:"scope"`
|
|
OwnerID string `json:"owner_id" db:"owner_id"`
|
|
UserID *string `json:"user_id,omitempty" db:"user_id"`
|
|
Key string `json:"key" db:"key"`
|
|
Value string `json:"value" db:"value"`
|
|
SourceChannelID *string `json:"source_channel_id,omitempty" db:"source_channel_id"`
|
|
Confidence float64 `json:"confidence" db:"confidence"`
|
|
Status string `json:"status" db:"status"`
|
|
CreatedAt time.Time `json:"created_at" db:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
|
|
}
|
|
|
|
// MemoryFilter specifies which memories to retrieve.
|
|
type MemoryFilter struct {
|
|
Scope string // required: user, persona, persona_user
|
|
OwnerID string // required: user_id or persona_id
|
|
UserID *string // only for persona_user scope
|
|
Status string // default: "active"
|
|
Query string // optional: keyword filter on key+value
|
|
Limit int // max results (default 50)
|
|
}
|