storage

package
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 23, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Package storage defines the core persistence interfaces for Chronos.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuditLog

type AuditLog struct {
	ID        string         `json:"id"`
	SessionID string         `json:"session_id"`
	Actor     string         `json:"actor"`
	Action    string         `json:"action"`
	Resource  string         `json:"resource"`
	Detail    map[string]any `json:"detail,omitempty"`
	CreatedAt time.Time      `json:"created_at"`
}

AuditLog records a security-relevant event.

type Checkpoint

type Checkpoint struct {
	ID        string         `json:"id"`
	SessionID string         `json:"session_id"`
	RunID     string         `json:"run_id"`
	NodeID    string         `json:"node_id"`
	State     map[string]any `json:"state"`
	SeqNum    int64          `json:"seq_num"`
	CreatedAt time.Time      `json:"created_at"`
}

Checkpoint captures the full state of a run for resume/time-travel.

type Config

type Config struct {
	// Storage backend: "sqlite", "postgres", "mysql", "redis", "mongo", "dynamo"
	Backend string `json:"backend" yaml:"backend"`

	// DSN / connection string for the storage backend.
	DSN string `json:"dsn" yaml:"dsn"`

	// VectorBackend: "qdrant", "redisvector", "milvus", "weaviate", "pinecone"
	VectorBackend string `json:"vector_backend" yaml:"vector_backend"`

	// VectorDSN / connection for vector store.
	VectorDSN string `json:"vector_dsn" yaml:"vector_dsn"`
}

Config selects which storage and vector adapters to use at runtime.

type Embedding

type Embedding struct {
	ID       string         `json:"id"`
	Vector   []float32      `json:"vector"`
	Metadata map[string]any `json:"metadata,omitempty"`
	Content  string         `json:"content,omitempty"`
}

Embedding represents a vector embedding with metadata.

type Event

type Event struct {
	ID        string    `json:"id"`
	SessionID string    `json:"session_id"`
	SeqNum    int64     `json:"seq_num"`
	Type      string    `json:"type"`
	Payload   any       `json:"payload"`
	CreatedAt time.Time `json:"created_at"`
}

Event is an append-only ledger entry for replayability.

type MemoryRecord

type MemoryRecord struct {
	ID        string    `json:"id"`
	SessionID string    `json:"session_id,omitempty"` // empty = long-term
	AgentID   string    `json:"agent_id"`
	UserID    string    `json:"user_id,omitempty"`
	Kind      string    `json:"kind"` // short_term, long_term
	Key       string    `json:"key"`
	Value     any       `json:"value"`
	CreatedAt time.Time `json:"created_at"`
}

MemoryRecord represents a short-term or long-term memory entry.

type SearchResult

type SearchResult struct {
	Embedding
	Score float32 `json:"score"`
}

SearchResult is a single result from a similarity search.

type Session

type Session struct {
	ID        string         `json:"id"`
	AgentID   string         `json:"agent_id"`
	Status    string         `json:"status"` // running, paused, completed, failed
	Metadata  map[string]any `json:"metadata,omitempty"`
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
}

Session represents an agent execution session.

type Storage

type Storage interface {
	// Sessions
	CreateSession(ctx context.Context, s *Session) error
	GetSession(ctx context.Context, id string) (*Session, error)
	UpdateSession(ctx context.Context, s *Session) error
	ListSessions(ctx context.Context, agentID string, limit, offset int) ([]*Session, error)

	// Memory
	PutMemory(ctx context.Context, m *MemoryRecord) error
	GetMemory(ctx context.Context, agentID, key string) (*MemoryRecord, error)
	ListMemory(ctx context.Context, agentID string, kind string) ([]*MemoryRecord, error)
	DeleteMemory(ctx context.Context, id string) error

	// Audit logs
	AppendAuditLog(ctx context.Context, log *AuditLog) error
	ListAuditLogs(ctx context.Context, sessionID string, limit, offset int) ([]*AuditLog, error)

	// Traces
	InsertTrace(ctx context.Context, t *Trace) error
	GetTrace(ctx context.Context, id string) (*Trace, error)
	ListTraces(ctx context.Context, sessionID string) ([]*Trace, error)

	// Event ledger (append-only)
	AppendEvent(ctx context.Context, e *Event) error
	ListEvents(ctx context.Context, sessionID string, afterSeq int64) ([]*Event, error)

	// Checkpoints
	SaveCheckpoint(ctx context.Context, cp *Checkpoint) error
	GetCheckpoint(ctx context.Context, id string) (*Checkpoint, error)
	GetLatestCheckpoint(ctx context.Context, sessionID string) (*Checkpoint, error)
	ListCheckpoints(ctx context.Context, sessionID string) ([]*Checkpoint, error)

	// Lifecycle
	Migrate(ctx context.Context) error
	Close() error
}

Storage is the primary persistence interface. All adapters must implement this.

type Trace

type Trace struct {
	ID        string    `json:"id"`
	SessionID string    `json:"session_id"`
	ParentID  string    `json:"parent_id,omitempty"`
	Name      string    `json:"name"`
	Kind      string    `json:"kind"` // node, tool_call, model_call, approval
	Input     any       `json:"input,omitempty"`
	Output    any       `json:"output,omitempty"`
	Error     string    `json:"error,omitempty"`
	StartedAt time.Time `json:"started_at"`
	EndedAt   time.Time `json:"ended_at,omitempty"`
}

Trace represents a single trace span for observability.

type VectorStore

type VectorStore interface {
	// Upsert inserts or updates embeddings in the given collection.
	Upsert(ctx context.Context, collection string, embeddings []Embedding) error

	// Search performs similarity search and returns top-k results.
	Search(ctx context.Context, collection string, query []float32, topK int) ([]SearchResult, error)

	// Delete removes embeddings by IDs.
	Delete(ctx context.Context, collection string, ids []string) error

	// CreateCollection ensures a collection exists.
	CreateCollection(ctx context.Context, name string, dimension int) error

	// Close releases resources.
	Close() error
}

VectorStore abstracts vector DB operations for RAG and embeddings.

Directories

Path Synopsis
adapters
dynamo
Package dynamo provides a DynamoDB-backed Storage adapter for Chronos.
Package dynamo provides a DynamoDB-backed Storage adapter for Chronos.
milvus
Package milvus provides a Milvus-backed VectorStore adapter for Chronos.
Package milvus provides a Milvus-backed VectorStore adapter for Chronos.
mongo
Package mongo provides a MongoDB-backed Storage adapter for Chronos.
Package mongo provides a MongoDB-backed Storage adapter for Chronos.
pinecone
Package pinecone provides a Pinecone-backed VectorStore adapter for Chronos.
Package pinecone provides a Pinecone-backed VectorStore adapter for Chronos.
postgres
Package postgres provides a PostgreSQL-backed Storage adapter for Chronos.
Package postgres provides a PostgreSQL-backed Storage adapter for Chronos.
qdrant
Package qdrant provides a Qdrant-backed VectorStore adapter for Chronos.
Package qdrant provides a Qdrant-backed VectorStore adapter for Chronos.
redis
Package redis provides a Redis-backed Storage adapter for Chronos.
Package redis provides a Redis-backed Storage adapter for Chronos.
redisvector
Package redisvector provides a Redis-backed VectorStore adapter using RediSearch.
Package redisvector provides a Redis-backed VectorStore adapter using RediSearch.
sqlite
Package sqlite provides a SQLite-backed Storage adapter for Chronos.
Package sqlite provides a SQLite-backed Storage adapter for Chronos.
weaviate
Package weaviate provides a Weaviate-backed VectorStore adapter for Chronos.
Package weaviate provides a Weaviate-backed VectorStore adapter for Chronos.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL