session

package
v1.9.0 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package session provides session lifecycle management for engram.

Index

Constants

View Source
const CleanupInterval = 5 * time.Minute

CleanupInterval is how often to check for stale sessions.

View Source
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

func (m *Manager) DeleteSession(sessionDBID int64)

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

func (m *Manager) GetActiveSessionCount() int

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

func (m *Manager) GetTotalQueueDepth() int

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

func (m *Manager) IsAnySessionProcessing() bool

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

func (m *Manager) SetOnSessionCreated(callback func(int64))

SetOnSessionCreated sets a callback for when a session is created.

func (*Manager) SetOnSessionDeleted

func (m *Manager) SetOnSessionDeleted(callback func(int64))

SetOnSessionDeleted sets a callback for when a session is deleted.

func (*Manager) ShutdownAll

func (m *Manager) ShutdownAll(ctx context.Context)

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

type SummarizeData struct {
	LastUserMessage      string
	LastAssistantMessage string
}

SummarizeData contains data for a summarize request.

Jump to

Keyboard shortcuts

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