Documentation
¶
Overview ¶
Package responsestore provides persistence for OpenAI-compatible Responses lifecycle endpoints.
Index ¶
- Constants
- Variables
- type MemoryStore
- func (s *MemoryStore) Close() error
- func (s *MemoryStore) Create(_ context.Context, response *StoredResponse) error
- func (s *MemoryStore) Delete(_ context.Context, id string) error
- func (s *MemoryStore) Get(_ context.Context, id string) (*StoredResponse, error)
- func (s *MemoryStore) Update(_ context.Context, response *StoredResponse) error
- type MemoryStoreOption
- type MongoDBStore
- func (s *MongoDBStore) Close() error
- func (s *MongoDBStore) Create(ctx context.Context, response *StoredResponse) error
- func (s *MongoDBStore) Delete(ctx context.Context, id string) error
- func (s *MongoDBStore) DeleteExpired(ctx context.Context) error
- func (s *MongoDBStore) Get(ctx context.Context, id string) (*StoredResponse, error)
- func (s *MongoDBStore) Update(ctx context.Context, response *StoredResponse) error
- type Result
- type SQLStore
- func (s *SQLStore) Close() error
- func (s *SQLStore) Create(ctx context.Context, response *StoredResponse) error
- func (s *SQLStore) Delete(ctx context.Context, id string) error
- func (s *SQLStore) DeleteExpired(ctx context.Context) error
- func (s *SQLStore) Get(ctx context.Context, id string) (*StoredResponse, error)
- func (s *SQLStore) Update(ctx context.Context, response *StoredResponse) error
- type Store
- type StoredResponse
Constants ¶
const ( // DefaultMemoryStoreTTL bounds in-memory response retention by age. DefaultMemoryStoreTTL = 24 * time.Hour // DefaultMemoryStoreMaxEntries bounds in-memory response retention by count. DefaultMemoryStoreMaxEntries = 10000 // DefaultMemoryStoreMaxBytes bounds in-memory response retention by total // serialized size. Agentic clients resend whole conversations as input, so // entry counts alone do not bound memory. DefaultMemoryStoreMaxBytes = 64 << 20 // DefaultMemoryStoreCleanupInterval limits full expired-entry sweeps. DefaultMemoryStoreCleanupInterval = time.Minute )
const ( // DefaultPersistentStoreTTL bounds stored response retention in persistent // backends. Matches OpenAI's documented 30-day retention for stored // responses; expired rows are swept hourly. DefaultPersistentStoreTTL = 30 * 24 * time.Hour // CleanupInterval is how often persistent stores sweep expired snapshots. CleanupInterval = 1 * time.Hour )
Variables ¶
var ErrNotFound = errors.New("response not found")
ErrNotFound indicates a requested response was not found.
Functions ¶
This section is empty.
Types ¶
type MemoryStore ¶
type MemoryStore struct {
// contains filtered or unexported fields
}
MemoryStore keeps response snapshots in process memory. Data survives across requests but not process restarts.
func NewMemoryStore ¶
func NewMemoryStore(options ...MemoryStoreOption) *MemoryStore
NewMemoryStore creates an empty in-memory response store. By default retention is bounded; pass WithUnboundedRetention to opt out.
func (*MemoryStore) Close ¶
func (s *MemoryStore) Close() error
Close releases resources (no-op for memory store).
func (*MemoryStore) Create ¶
func (s *MemoryStore) Create(_ context.Context, response *StoredResponse) error
Create stores a new response snapshot.
func (*MemoryStore) Delete ¶
func (s *MemoryStore) Delete(_ context.Context, id string) error
Delete removes one response snapshot by id.
func (*MemoryStore) Get ¶
func (s *MemoryStore) Get(_ context.Context, id string) (*StoredResponse, error)
Get retrieves one response snapshot by id.
func (*MemoryStore) Update ¶
func (s *MemoryStore) Update(_ context.Context, response *StoredResponse) error
Update replaces an existing response snapshot.
type MemoryStoreOption ¶
type MemoryStoreOption func(*MemoryStore)
MemoryStoreOption configures bounded in-memory response retention.
func WithMaxBytes ¶
func WithMaxBytes(maxBytes int64) MemoryStoreOption
WithMaxBytes caps the total serialized size of stored responses with FIFO eviction. Non-positive values disable the cap.
func WithMaxEntries ¶
func WithMaxEntries(maxEntries int) MemoryStoreOption
WithMaxEntries caps stored responses with FIFO eviction. Non-positive values disable the cap.
func WithTTL ¶
func WithTTL(ttl time.Duration) MemoryStoreOption
WithTTL expires stored responses after ttl. Non-positive values disable TTL.
func WithUnboundedRetention ¶
func WithUnboundedRetention() MemoryStoreOption
WithUnboundedRetention disables default in-memory retention bounds.
type MongoDBStore ¶
type MongoDBStore struct {
// contains filtered or unexported fields
}
MongoDBStore persists response snapshots in MongoDB.
func NewMongoDBStore ¶
func NewMongoDBStore(database *mongo.Database) (*MongoDBStore, error)
NewMongoDBStore creates collection indexes if needed and starts the hourly expired-snapshot sweep.
func (*MongoDBStore) Close ¶
func (s *MongoDBStore) Close() error
Close stops the cleanup loop; client lifecycle is managed by the storage layer.
func (*MongoDBStore) Create ¶
func (s *MongoDBStore) Create(ctx context.Context, response *StoredResponse) error
Create stores a new response snapshot. An existing snapshot with the same id is only replaced when it has already expired.
func (*MongoDBStore) Delete ¶
func (s *MongoDBStore) Delete(ctx context.Context, id string) error
Delete removes one unexpired response snapshot by id.
func (*MongoDBStore) DeleteExpired ¶
func (s *MongoDBStore) DeleteExpired(ctx context.Context) error
DeleteExpired removes all expired response snapshots.
func (*MongoDBStore) Get ¶
func (s *MongoDBStore) Get(ctx context.Context, id string) (*StoredResponse, error)
Get retrieves one response snapshot by id.
func (*MongoDBStore) Update ¶
func (s *MongoDBStore) Update(ctx context.Context, response *StoredResponse) error
Update replaces an existing, unexpired response snapshot. Zero StoredAt or ExpiresAt values preserve the stored retention fields.
type Result ¶
type Result struct {
Store Store
}
Result holds the initialized response store.
type SQLStore ¶ added in v0.1.60
type SQLStore struct {
// contains filtered or unexported fields
}
SQLStore persists response snapshots in a SQL database.
func NewSQLStore ¶ added in v0.1.60
NewSQLStore creates the response_snapshots table if needed and starts the hourly expired-snapshot sweep.
func (*SQLStore) Close ¶ added in v0.1.60
Close stops the cleanup loop; connection lifecycle is managed by the storage layer.
func (*SQLStore) Create ¶ added in v0.1.60
func (s *SQLStore) Create(ctx context.Context, response *StoredResponse) error
Create stores a new response snapshot. An existing snapshot with the same id is only replaced when it has already expired.
func (*SQLStore) DeleteExpired ¶ added in v0.1.60
DeleteExpired removes all expired response snapshots.
type Store ¶
type Store interface {
Create(ctx context.Context, response *StoredResponse) error
Get(ctx context.Context, id string) (*StoredResponse, error)
Update(ctx context.Context, response *StoredResponse) error
Delete(ctx context.Context, id string) error
Close() error
}
Store defines persistence operations for Responses lifecycle APIs.
type StoredResponse ¶
type StoredResponse struct {
Response *core.ResponsesResponse `json:"response"`
InputItems []json.RawMessage `json:"input_items,omitempty"`
Provider string `json:"provider,omitempty"`
ProviderName string `json:"provider_name,omitempty"`
ProviderResponseID string `json:"provider_response_id,omitempty"`
RequestID string `json:"request_id,omitempty"`
UserPath string `json:"user_path,omitempty"`
WorkflowVersionID string `json:"workflow_version_id,omitempty"`
StoredAt time.Time `json:"stored_at"`
ExpiresAt time.Time `json:"expires_at"`
}
StoredResponse keeps the public response snapshot separate from gateway-only routing and input item metadata.