threads

package
v1.55.0 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HandleThreadMessages

func HandleThreadMessages(db *sql.DB) http.HandlerFunc

HandleThreadMessages - GET /threads/:id/messages - Get messages for a thread

func HandleThreads

func HandleThreads(db *sql.DB) http.HandlerFunc

HandleThreads - GET /threads - List all threads Query params:

  • all=true: show all threads including children
  • type=task|scheduler|reflection|chat: filter by type

func RegisterRoutes

func RegisterRoutes(mux *http.ServeMux, db *sql.DB)

RegisterRoutes registers all thread-related routes

Types

type DatabaseMessageSaver

type DatabaseMessageSaver struct {
	// contains filtered or unexported fields
}

DatabaseMessageSaver implements MessageSaver using a SQL database

func NewDatabaseMessageSaver

func NewDatabaseMessageSaver(database *sql.DB) *DatabaseMessageSaver

NewDatabaseMessageSaver creates a new DatabaseMessageSaver

func (*DatabaseMessageSaver) CreateThread

func (d *DatabaseMessageSaver) CreateThread(title string) (string, error)

CreateThread creates a new conversation thread

func (*DatabaseMessageSaver) GetThreadMessages

func (d *DatabaseMessageSaver) GetThreadMessages(threadID string) ([]Message, error)

GetThreadMessages retrieves all messages for a thread

func (*DatabaseMessageSaver) GetThreadMessagesSince added in v1.44.0

func (d *DatabaseMessageSaver) GetThreadMessagesSince(threadID string, since time.Time) ([]Message, error)

GetThreadMessagesSince returns messages created after the given timestamp. Used to skip already-compacted messages when a compaction summary exists.

func (*DatabaseMessageSaver) GetThreadTaskID

func (d *DatabaseMessageSaver) GetThreadTaskID(threadID string) string

GetThreadTaskID retrieves the task_id from thread metadata if present

func (*DatabaseMessageSaver) MergeThreadMetadata

func (d *DatabaseMessageSaver) MergeThreadMetadata(threadID string, newMetadata map[string]interface{}) error

MergeThreadMetadata merges new metadata into existing thread metadata

func (*DatabaseMessageSaver) SaveMessage

func (d *DatabaseMessageSaver) SaveMessage(threadID, role string, content interface{}, model *string, metadata map[string]interface{}) error

SaveMessage saves a message to a thread

func (*DatabaseMessageSaver) UpdateThreadActivity added in v1.34.0

func (d *DatabaseMessageSaver) UpdateThreadActivity(threadID, activity string, title *string) error

UpdateThreadActivity updates the activity (and optionally title) of a thread

func (*DatabaseMessageSaver) UpdateThreadMetadata

func (d *DatabaseMessageSaver) UpdateThreadMetadata(threadID string, metadata map[string]interface{}) error

UpdateThreadMetadata updates the metadata field of a thread

type Message

type Message struct {
	ID        string                 `json:"id"`
	ThreadID  string                 `json:"thread_id"`
	Role      string                 `json:"role"`
	Content   interface{}            `json:"content"` // Can be string or []ContentBlock
	Model     *string                `json:"model"`
	CreatedAt time.Time              `json:"created_at"`
	Metadata  map[string]interface{} `json:"metadata"`
}

Message represents a single message in a thread

type MessageSaver

type MessageSaver interface {
	SaveMessage(threadID, role string, content interface{}, model *string, metadata map[string]interface{}) error
	CreateThread(title string) (string, error)
	GetThreadMessages(threadID string) ([]Message, error)
	GetThreadTaskID(threadID string) string
	UpdateThreadMetadata(threadID string, metadata map[string]interface{}) error
	MergeThreadMetadata(threadID string, newMetadata map[string]interface{}) error
	UpdateThreadActivity(threadID, activity string, title *string) error
}

MessageSaver interface defines methods for saving and retrieving messages

type Thread

type Thread struct {
	ID           string                 `json:"id"`
	Title        *string                `json:"title"`
	Type         string                 `json:"type"`
	ParentID     *string                `json:"parent_id,omitempty"`
	Activity     *string                `json:"activity"`
	CreatedAt    time.Time              `json:"created_at"`
	UpdatedAt    time.Time              `json:"updated_at"`
	Metadata     map[string]interface{} `json:"metadata"`
	MessageCount int                    `json:"message_count"`
	Children     []Thread               `json:"children,omitempty"`
}

Thread represents a conversation thread

Jump to

Keyboard shortcuts

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