Documentation
¶
Overview ¶
Package session provides session lifecycle management for engram.
Index ¶
- Constants
- type ActiveSession
- type Manager
- func (m *Manager) DeleteSession(sessionDBID int64)
- func (m *Manager) DrainMessages(sessionDBID int64) []PendingMessage
- func (m *Manager) GetActiveSessionCount() int
- func (m *Manager) GetAllSessions() []*ActiveSession
- func (m *Manager) GetTotalQueueDepth() int
- func (m *Manager) InitializeSession(ctx context.Context, sessionDBID int64, userPrompt string, promptNumber int) (*ActiveSession, error)
- func (m *Manager) IsAnySessionProcessing() bool
- func (m *Manager) QueueObservation(ctx context.Context, sessionDBID int64, data ObservationData) error
- func (m *Manager) QueueSummarize(ctx context.Context, sessionDBID int64, ...) error
- func (m *Manager) SetOnSessionCreated(callback func(int64))
- func (m *Manager) SetOnSessionDeleted(callback func(int64))
- func (m *Manager) ShutdownAll(ctx context.Context)
- type MessageType
- type ObservationData
- type PendingMessage
- type SummarizeData
Constants ¶
const CleanupInterval = 5 * time.Minute
CleanupInterval is how often to check for stale sessions.
const SessionTimeout = 30 * time.Minute
SessionTimeout is how long an inactive session can exist before cleanup.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActiveSession ¶
type ActiveSession struct {
StartTime time.Time
Project string
UserPrompt string
SDKSessionID string
ClaudeSessionID string
LastPromptNumber int
CumulativeInputTokens int64
CumulativeOutputTokens int64
SessionDBID int64
// contains filtered or unexported fields
}
ActiveSession represents an in-memory active session being processed.
type Manager ¶
type Manager struct {
ProcessNotify chan struct{}
// contains filtered or unexported fields
}
Manager manages active session lifecycles.
func NewManager ¶
func NewManager(sessionStore *gorm.SessionStore) *Manager
NewManager creates a new session manager.
func (*Manager) DeleteSession ¶
DeleteSession removes a session and cleans up resources.
func (*Manager) DrainMessages ¶
func (m *Manager) DrainMessages(sessionDBID int64) []PendingMessage
DrainMessages drains and returns all pending messages for a session.
func (*Manager) GetActiveSessionCount ¶
GetActiveSessionCount returns the number of active sessions.
func (*Manager) GetAllSessions ¶
func (m *Manager) GetAllSessions() []*ActiveSession
GetAllSessions returns a copy of all active sessions.
func (*Manager) GetTotalQueueDepth ¶
GetTotalQueueDepth returns the total queue depth across all sessions.
func (*Manager) InitializeSession ¶
func (m *Manager) InitializeSession(ctx context.Context, sessionDBID int64, userPrompt string, promptNumber int) (*ActiveSession, error)
InitializeSession initializes a session, creating it if needed.
func (*Manager) IsAnySessionProcessing ¶
IsAnySessionProcessing returns true if any session is actively processing.
func (*Manager) QueueObservation ¶
func (m *Manager) QueueObservation(ctx context.Context, sessionDBID int64, data ObservationData) error
QueueObservation queues an observation for SDK processing.
func (*Manager) QueueSummarize ¶
func (m *Manager) QueueSummarize(ctx context.Context, sessionDBID int64, lastUserMessage, lastAssistantMessage string) error
QueueSummarize queues a summarize request for SDK processing.
func (*Manager) SetOnSessionCreated ¶
SetOnSessionCreated sets a callback for when a session is created.
func (*Manager) SetOnSessionDeleted ¶
SetOnSessionDeleted sets a callback for when a session is deleted.
func (*Manager) ShutdownAll ¶
ShutdownAll shuts down all active sessions.
type MessageType ¶
type MessageType int
MessageType represents the type of pending message.
const ( MessageTypeObservation MessageType = iota MessageTypeSummarize )
type ObservationData ¶
type ObservationData struct {
ToolInput interface{}
ToolResponse interface{}
ToolName string
CWD string
PromptNumber int
}
ObservationData contains data for a tool observation.
type PendingMessage ¶
type PendingMessage struct {
Observation *ObservationData
Summarize *SummarizeData
Type MessageType
}
PendingMessage represents a message queued for SDK processing.
type SummarizeData ¶
SummarizeData contains data for a summarize request.