db

package
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Functions

func Connect

func Connect() (*sql.DB, error)

func ConnectForRole added in v0.306.0

func ConnectForRole(isPrimary bool) (*sql.DB, error)

ConnectForRole opens the database in read-write mode when isPrimary is true, or via ConnectRWSecondary when false. This avoids duplicating the role branch in callers.

func ConnectRWSecondary added in v0.326.0

func ConnectRWSecondary() (*sql.DB, error)

ConnectRWSecondary opens the SQLite database in read-write mode with WAL and a short busy_timeout (200 ms). It does NOT run migrations — the primary owns schema management. Secondary instances use this connection to attempt direct WAL writes; if they get SQLITE_BUSY/LOCKED they fall back to the IPC proxy.

func ConnectReadOnly added in v0.294.1

func ConnectReadOnly() (*sql.DB, error)

ConnectReadOnly opens the existing SQLite database in read-only mode. Secondary (non-primary) Pando instances use this so they never write directly; all writes are proxied through the primary via ZMQ RPC. The caller must NOT run migrations — the primary is responsible for that.

func DBPath added in v0.605.1

func DBPath() (string, error)

DBPath returns the absolute path of the main SQLite database file.

Types

type ApplyRewardDeltaToSkillStatsParams added in v1.2.4

type ApplyRewardDeltaToSkillStatsParams struct {
	Delta     float64 `json:"delta"`
	Delta2    float64 `json:"delta2"`
	SessionID string  `json:"session_id"`
}

type ApplyRewardDeltaToVariantStatsParams added in v1.2.4

type ApplyRewardDeltaToVariantStatsParams struct {
	Delta     float64 `json:"delta"`
	Delta2    float64 `json:"delta_2"`
	SessionID string  `json:"session_id"`
}

type ApplySessionRewardToSkillStatsParams added in v1.2.4

type ApplySessionRewardToSkillStatsParams struct {
	Reward    float64 `json:"reward"`
	Reward2   float64 `json:"reward2"`
	SessionID string  `json:"session_id"`
}

type ApplySessionRewardToVariantStatsParams added in v1.2.4

type ApplySessionRewardToVariantStatsParams struct {
	TotalReward float64 `json:"total_reward"`
	AvgReward   float64 `json:"avg_reward"`
	SessionID   string  `json:"session_id"`
}

type CompactOptions added in v0.605.1

type CompactOptions struct {
	// Incremental, when true, only reclaims already-freed pages via
	// PRAGMA incremental_vacuum (cheap, no full file rewrite). It only has an
	// effect when the database is already in auto_vacuum=INCREMENTAL mode.
	Incremental bool
	// EnableAutoVacuum, when true, switches the database into
	// auto_vacuum=INCREMENTAL before running the full VACUUM so future
	// reclamation can be done incrementally. Ignored when Incremental is true.
	EnableAutoVacuum bool
}

CompactOptions controls how Compact reclaims space.

type CompactResult added in v0.605.1

type CompactResult struct {
	// Mode is "full" or "incremental".
	Mode string
	// SizeBefore/SizeAfter are the database sizes in bytes.
	SizeBefore int64
	SizeAfter  int64
	// Freed is SizeBefore - SizeAfter. It can be negative in rare cases.
	Freed int64
}

CompactResult reports the outcome of a Compact call. Sizes are the logical database size (page_count * page_size) in bytes, which matches the on-disk main file size after the trailing WAL checkpoint.

func Compact added in v0.605.1

func Compact(ctx context.Context, conn *sql.DB, opts CompactOptions) (CompactResult, error)

Compact reclaims unused space in the SQLite database.

With opts.Incremental it runs PRAGMA incremental_vacuum (only effective when auto_vacuum is already INCREMENTAL); otherwise it runs a full VACUUM, optionally switching the database into auto_vacuum=INCREMENTAL first so subsequent reclamation can be incremental.

VACUUM must run outside any transaction and briefly acquires an exclusive lock; if another process is writing it may fail with SQLITE_BUSY rather than corrupting anything. Callers should surface such errors to the user.

type CountRecentEligibleScoredParams added in v1.2.4

type CountRecentEligibleScoredParams struct {
	UpdatedAt       int64 `json:"updated_at"`
	IncludeChildren int64 `json:"include_children"`
	Limit           int64 `json:"limit"`
}

type CountRecentEligibleScoredRow added in v1.2.4

type CountRecentEligibleScoredRow struct {
	Total  int64 `json:"total"`
	Scored int64 `json:"scored"`
}

type CreateFileParams

type CreateFileParams struct {
	ID        string `json:"id"`
	SessionID string `json:"session_id"`
	Path      string `json:"path"`
	Content   string `json:"content"`
	Version   string `json:"version"`
}

type CreateGoalParams added in v0.324.0

type CreateGoalParams struct {
	ID                 string `json:"id"`
	SessionID          string `json:"session_id"`
	Objective          string `json:"objective"`
	Status             string `json:"status"`
	MaxIterations      int64  `json:"max_iterations"`
	MaxDurationSeconds int64  `json:"max_duration_seconds"`
	StartedAt          int64  `json:"started_at"`
}

type CreateMessageParams

type CreateMessageParams struct {
	ID        string         `json:"id"`
	SessionID string         `json:"session_id"`
	Role      string         `json:"role"`
	Parts     string         `json:"parts"`
	Model     sql.NullString `json:"model"`
}

type CreateProjectParams added in v0.240.0

type CreateProjectParams struct {
	ID          string        `json:"id"`
	Name        string        `json:"name"`
	Path        string        `json:"path"`
	Status      string        `json:"status"`
	Initialized int64         `json:"initialized"`
	AcpPid      sql.NullInt64 `json:"acp_pid"`
	AcpPort     sql.NullInt64 `json:"acp_port"`
	LastOpened  sql.NullInt64 `json:"last_opened"`
}

type CreateSessionParams

type CreateSessionParams struct {
	ID               string         `json:"id"`
	ParentSessionID  sql.NullString `json:"parent_session_id"`
	Title            string         `json:"title"`
	MessageCount     int64          `json:"message_count"`
	PromptTokens     int64          `json:"prompt_tokens"`
	CompletionTokens int64          `json:"completion_tokens"`
	Cost             float64        `json:"cost"`
}

type DBTX

type DBTX interface {
	ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
	PrepareContext(context.Context, string) (*sql.Stmt, error)
	QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
	QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}

type File

type File struct {
	ID        string `json:"id"`
	SessionID string `json:"session_id"`
	Path      string `json:"path"`
	Content   string `json:"content"`
	Version   string `json:"version"`
	CreatedAt int64  `json:"created_at"`
	UpdatedAt int64  `json:"updated_at"`
}

type GetEvaluatorStatsRow added in v0.26.2

type GetEvaluatorStatsRow struct {
	TotalEvaluations int64         `json:"total_evaluations"`
	AvgReward        float64       `json:"avg_reward"`
	ActiveSkills     int64         `json:"active_skills"`
	LastEvaluation   sql.NullInt64 `json:"last_evaluation"`
}

type GetFileByPathAndSessionParams

type GetFileByPathAndSessionParams struct {
	Path      string `json:"path"`
	SessionID string `json:"session_id"`
}

type GetJudgeUsageSinceRow added in v1.2.4

type GetJudgeUsageSinceRow struct {
	Calls  int64 `json:"calls"`
	Tokens int64 `json:"tokens"`
}

type GetSessionTemplateSelectionParams added in v1.2.4

type GetSessionTemplateSelectionParams struct {
	SessionID string `json:"session_id"`
	Section   string `json:"section"`
}

type GetSessionsTokenBaselineParams added in v1.2.4

type GetSessionsTokenBaselineParams struct {
	ID    string `json:"id"`
	Limit int64  `json:"limit"`
}

type InsertSessionFeedbackEventParams added in v1.2.4

type InsertSessionFeedbackEventParams struct {
	Subject  string `json:"subject"`
	Content  string `json:"content"`
	Metadata string `json:"metadata"`
}

type InsertSessionScoreParams added in v0.26.2

type InsertSessionScoreParams struct {
	ID                    string         `json:"id"`
	SessionID             string         `json:"session_id"`
	TemplateID            sql.NullString `json:"template_id"`
	Reward                float64        `json:"reward"`
	SuccessScore          float64        `json:"success_score"`
	EfficiencyScore       float64        `json:"efficiency_score"`
	JudgeAnalysis         sql.NullString `json:"judge_analysis"`
	JudgeModel            sql.NullString `json:"judge_model"`
	PromptTokens          int64          `json:"prompt_tokens"`
	CompletionTokens      int64          `json:"completion_tokens"`
	MessageCount          int64          `json:"message_count"`
	UserCorrections       int64          `json:"user_corrections"`
	Components            string         `json:"components"`
	JudgePromptTokens     int64          `json:"judge_prompt_tokens"`
	JudgeCompletionTokens int64          `json:"judge_completion_tokens"`
}

type InsertSessionSkillInjectionParams added in v1.2.4

type InsertSessionSkillInjectionParams struct {
	SessionID string `json:"session_id"`
	SkillID   string `json:"skill_id"`
	Position  int64  `json:"position"`
}

type InsertSessionTemplateSelectionParams added in v1.2.4

type InsertSessionTemplateSelectionParams struct {
	SessionID string `json:"session_id"`
	Section   string `json:"section"`
	VariantID string `json:"variant_id"`
}

type InsertSkillParams added in v0.26.2

type InsertSkillParams struct {
	ID               string         `json:"id"`
	Title            string         `json:"title"`
	Content          string         `json:"content"`
	SourceSessionID  sql.NullString `json:"source_session_id"`
	SourceTemplateID sql.NullString `json:"source_template_id"`
	TaskType         string         `json:"task_type"`
}

type ListActiveSkillsByTypeParams added in v0.26.2

type ListActiveSkillsByTypeParams struct {
	TaskType string `json:"task_type"`
	Limit    int64  `json:"limit"`
}

type ListDailyEvaluationMetricsRow added in v1.2.4

type ListDailyEvaluationMetricsRow struct {
	Day                   string  `json:"day"`
	Evaluations           int64   `json:"evaluations"`
	AvgReward             float64 `json:"avg_reward"`
	JudgeCalls            int64   `json:"judge_calls"`
	JudgePromptTokens     int64   `json:"judge_prompt_tokens"`
	JudgeCompletionTokens int64   `json:"judge_completion_tokens"`
}

type ListRecentSessionSkillsRow added in v1.2.4

type ListRecentSessionSkillsRow struct {
	SessionID string `json:"session_id"`
	SkillID   string `json:"skill_id"`
	Title     string `json:"title"`
}

type ListRecentSessionVariantsRow added in v1.2.4

type ListRecentSessionVariantsRow struct {
	SessionID string `json:"session_id"`
	Section   string `json:"section"`
	VariantID string `json:"variant_id"`
}

type ListSessionScoresWithTitleRow added in v1.2.4

type ListSessionScoresWithTitleRow struct {
	ID                    string         `json:"id"`
	SessionID             string         `json:"session_id"`
	TemplateID            sql.NullString `json:"template_id"`
	Reward                float64        `json:"reward"`
	SuccessScore          float64        `json:"success_score"`
	EfficiencyScore       float64        `json:"efficiency_score"`
	JudgeAnalysis         sql.NullString `json:"judge_analysis"`
	JudgeModel            sql.NullString `json:"judge_model"`
	PromptTokens          int64          `json:"prompt_tokens"`
	CompletionTokens      int64          `json:"completion_tokens"`
	MessageCount          int64          `json:"message_count"`
	UserCorrections       int64          `json:"user_corrections"`
	EvaluatedAt           int64          `json:"evaluated_at"`
	CreatedAt             int64          `json:"created_at"`
	Components            string         `json:"components"`
	JudgePromptTokens     int64          `json:"judge_prompt_tokens"`
	JudgeCompletionTokens int64          `json:"judge_completion_tokens"`
	Title                 string         `json:"title"`
}

type ListUnscoredSessionsParams added in v1.2.4

type ListUnscoredSessionsParams struct {
	UpdatedAt int64       `json:"updated_at"`
	Column2   interface{} `json:"column_2"`
	Limit     int64       `json:"limit"`
}

type ListVariantSelectionCountsRow added in v1.2.4

type ListVariantSelectionCountsRow struct {
	VariantID  string `json:"variant_id"`
	Selections int64  `json:"selections"`
}

type Message

type Message struct {
	ID         string         `json:"id"`
	SessionID  string         `json:"session_id"`
	Role       string         `json:"role"`
	Parts      string         `json:"parts"`
	Model      sql.NullString `json:"model"`
	CreatedAt  int64          `json:"created_at"`
	UpdatedAt  int64          `json:"updated_at"`
	FinishedAt sql.NullInt64  `json:"finished_at"`
}

type Project added in v0.240.0

type Project struct {
	ID          string        `json:"id"`
	Name        string        `json:"name"`
	Path        string        `json:"path"`
	Status      string        `json:"status"`
	Initialized int64         `json:"initialized"`
	AcpPid      sql.NullInt64 `json:"acp_pid"`
	AcpPort     sql.NullInt64 `json:"acp_port"`
	LastOpened  sql.NullInt64 `json:"last_opened"`
	CreatedAt   int64         `json:"created_at"`
	UpdatedAt   int64         `json:"updated_at"`
}

type PromptTemplate added in v0.26.2

type PromptTemplate struct {
	ID        string `json:"id"`
	Name      string `json:"name"`
	Section   string `json:"section"`
	Content   string `json:"content"`
	Version   int64  `json:"version"`
	IsActive  int64  `json:"is_active"`
	IsDefault int64  `json:"is_default"`
	CreatedAt int64  `json:"created_at"`
	UpdatedAt int64  `json:"updated_at"`
}

type PromptUcbStat added in v0.26.2

type PromptUcbStat struct {
	TemplateID  string        `json:"template_id"`
	TimesUsed   int64         `json:"times_used"`
	TotalReward float64       `json:"total_reward"`
	AvgReward   float64       `json:"avg_reward"`
	UcbScore    float64       `json:"ucb_score"`
	LastUsedAt  sql.NullInt64 `json:"last_used_at"`
	UpdatedAt   int64         `json:"updated_at"`
}

type PromptVariantStat added in v1.2.4

type PromptVariantStat struct {
	VariantID   string  `json:"variant_id"`
	Section     string  `json:"section"`
	TimesUsed   int64   `json:"times_used"`
	TotalReward float64 `json:"total_reward"`
	AvgReward   float64 `json:"avg_reward"`
	UpdatedAt   int64   `json:"updated_at"`
}

type Querier

type Querier interface {
	CreateFile(ctx context.Context, arg CreateFileParams) (File, error)
	CreateGoal(ctx context.Context, arg CreateGoalParams) (SessionGoal, error)
	CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error)
	CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)
	DeleteFile(ctx context.Context, id string) error
	DeleteGoalsBySession(ctx context.Context, sessionID string) error
	DeleteMessage(ctx context.Context, id string) error
	DeleteSession(ctx context.Context, id string) error
	DeleteSessionFiles(ctx context.Context, sessionID string) error
	DeleteSessionMessages(ctx context.Context, sessionID string) error
	GetFile(ctx context.Context, id string) (File, error)
	GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error)
	GetActiveGoal(ctx context.Context, sessionID string) (SessionGoal, error)
	GetGoalBySession(ctx context.Context, sessionID string) (SessionGoal, error)
	GetMessage(ctx context.Context, id string) (Message, error)
	GetSessionByID(ctx context.Context, id string) (Session, error)
	ListFilesByPath(ctx context.Context, path string) ([]File, error)
	ListFilesBySession(ctx context.Context, sessionID string) ([]File, error)
	ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error)
	ListMessagesBySession(ctx context.Context, sessionID string) ([]Message, error)
	ListNewFiles(ctx context.Context) ([]File, error)
	ListSessions(ctx context.Context) ([]Session, error)
	UpdateFile(ctx context.Context, arg UpdateFileParams) (File, error)
	UpdateGoalProgress(ctx context.Context, arg UpdateGoalProgressParams) (SessionGoal, error)
	UpdateGoalStatus(ctx context.Context, arg UpdateGoalStatusParams) (SessionGoal, error)
	UpdateMessage(ctx context.Context, arg UpdateMessageParams) error
	UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error)
	// Self-improvement queries
	InsertSessionScore(ctx context.Context, arg InsertSessionScoreParams) (SessionScore, error)
	ListUnscoredSessions(ctx context.Context, arg ListUnscoredSessionsParams) ([]string, error)
	GetSessionScore(ctx context.Context, sessionID string) (SessionScore, error)
	UpdateSessionScore(ctx context.Context, arg UpdateSessionScoreParams) (SessionScore, error)
	UpdateSessionScoreJudge(ctx context.Context, arg UpdateSessionScoreJudgeParams) error
	GetJudgeUsageSince(ctx context.Context, createdAt int64) (GetJudgeUsageSinceRow, error)
	InsertSessionTemplateSelection(ctx context.Context, arg InsertSessionTemplateSelectionParams) error
	GetSessionTemplateSelection(ctx context.Context, arg GetSessionTemplateSelectionParams) (string, error)
	ListVariantSelectionCounts(ctx context.Context, section string) ([]ListVariantSelectionCountsRow, error)
	ListVariantStatsBySection(ctx context.Context, section string) ([]PromptVariantStat, error)
	CountEligibleSessions(ctx context.Context, includeChildren int64) (int64, error)
	CountUnscoredEligibleSessions(ctx context.Context, includeChildren int64) (int64, error)
	CountRecentEligibleScored(ctx context.Context, arg CountRecentEligibleScoredParams) (CountRecentEligibleScoredRow, error)
	GetLastEvaluationAt(ctx context.Context) (int64, error)
	ListSessionScoresWithTitle(ctx context.Context, limit int64) ([]ListSessionScoresWithTitleRow, error)
	ListRecentSessionVariants(ctx context.Context, limit int64) ([]ListRecentSessionVariantsRow, error)
	ListRecentSessionSkills(ctx context.Context, limit int64) ([]ListRecentSessionSkillsRow, error)
	ListDailyEvaluationMetrics(ctx context.Context, evaluatedAt int64) ([]ListDailyEvaluationMetricsRow, error)
	ListAllVariantStats(ctx context.Context) ([]PromptVariantStat, error)
	ApplySessionRewardToVariantStats(ctx context.Context, arg ApplySessionRewardToVariantStatsParams) error
	ApplyRewardDeltaToVariantStats(ctx context.Context, arg ApplyRewardDeltaToVariantStatsParams) error
	GetSessionsTokenBaseline(ctx context.Context, arg GetSessionsTokenBaselineParams) (float64, error)
	InsertSessionFeedbackEvent(ctx context.Context, arg InsertSessionFeedbackEventParams) (int64, error)
	GetLatestSessionFeedback(ctx context.Context, subject string) (string, error)
	CountSessionScores(ctx context.Context) (int64, error)
	ListSessionScores(ctx context.Context, limit int64) ([]SessionScore, error)
	InsertSkill(ctx context.Context, arg InsertSkillParams) (SkillLibrary, error)
	ListActiveSkillsByType(ctx context.Context, arg ListActiveSkillsByTypeParams) ([]SkillLibrary, error)
	ListAllActiveSkills(ctx context.Context) ([]SkillLibrary, error)
	CountActiveSkills(ctx context.Context) (int64, error)
	// DeactivateUnderperformingSkills deactivates skills that have low success rate and
	// high usage, indicating they do not improve outcomes despite being frequently selected.
	DeactivateUnderperformingSkills(ctx context.Context) error
	IncrementSkillUsage(ctx context.Context, id string) error
	// Reviewable learned skills (files are the source of truth, the table mirrors them).
	UpsertSkillMirror(ctx context.Context, arg UpsertSkillMirrorParams) error
	SetSkillMirrorState(ctx context.Context, arg SetSkillMirrorStateParams) error
	ListAllSkills(ctx context.Context) ([]SkillLibrary, error)
	GetSkill(ctx context.Context, id string) (SkillLibrary, error)
	InsertSessionSkillInjection(ctx context.Context, arg InsertSessionSkillInjectionParams) error
	CountSessionSkillInjections(ctx context.Context, sessionID string) (int64, error)
	ListSessionInjectedSkills(ctx context.Context, sessionID string) ([]SkillLibrary, error)
	ApplySessionRewardToSkillStats(ctx context.Context, arg ApplySessionRewardToSkillStatsParams) error
	ApplyRewardDeltaToSkillStats(ctx context.Context, arg ApplyRewardDeltaToSkillStatsParams) error
	GetEvaluatorStats(ctx context.Context) (GetEvaluatorStatsRow, error)
	// Project queries
	CreateProject(ctx context.Context, arg CreateProjectParams) (Project, error)
	GetProject(ctx context.Context, id string) (Project, error)
	GetProjectByPath(ctx context.Context, path string) (Project, error)
	ListProjects(ctx context.Context) ([]Project, error)
	UpdateProjectStatus(ctx context.Context, arg UpdateProjectStatusParams) error
	UpdateProjectLastOpened(ctx context.Context, arg UpdateProjectLastOpenedParams) error
	MarkProjectInitialized(ctx context.Context, id string) error
	DeleteProject(ctx context.Context, id string) error
	// ACP session state
	GetSessionACPState(ctx context.Context, id string) (sql.NullString, error)
	UpdateSessionACPState(ctx context.Context, arg UpdateSessionACPStateParams) error
}

type Queries

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

func New

func New(db DBTX) *Queries

func Prepare

func Prepare(ctx context.Context, db DBTX) (*Queries, error)

func (*Queries) ApplyRewardDeltaToSkillStats added in v1.2.4

func (q *Queries) ApplyRewardDeltaToSkillStats(ctx context.Context, arg ApplyRewardDeltaToSkillStatsParams) error

ApplyRewardDeltaToSkillStats applies a re-score's reward change without touching eval_count.

func (*Queries) ApplyRewardDeltaToVariantStats added in v1.2.4

func (q *Queries) ApplyRewardDeltaToVariantStats(ctx context.Context, arg ApplyRewardDeltaToVariantStatsParams) error

A re-score applies only the reward delta and never touches times_used.

func (*Queries) ApplySessionRewardToSkillStats added in v1.2.4

func (q *Queries) ApplySessionRewardToSkillStats(ctx context.Context, arg ApplySessionRewardToSkillStatsParams) error

ApplySessionRewardToSkillStats adds an evaluated session's reward to every skill injected into it; success_rate becomes the mean reward.

func (*Queries) ApplySessionRewardToVariantStats added in v1.2.4

func (q *Queries) ApplySessionRewardToVariantStats(ctx context.Context, arg ApplySessionRewardToVariantStatsParams) error

Counts an evaluated session once for every variant it was served: one statement, joined to the session's selections.

func (*Queries) Close

func (q *Queries) Close() error

func (*Queries) CountActiveSkills added in v0.26.2

func (q *Queries) CountActiveSkills(ctx context.Context) (int64, error)

func (*Queries) CountEligibleSessions added in v1.2.4

func (q *Queries) CountEligibleSessions(ctx context.Context, includeChildren int64) (int64, error)

func (*Queries) CountRecentEligibleScored added in v1.2.4

func (*Queries) CountSessionScores added in v0.26.2

func (q *Queries) CountSessionScores(ctx context.Context) (int64, error)

func (*Queries) CountSessionSkillInjections added in v1.2.4

func (q *Queries) CountSessionSkillInjections(ctx context.Context, sessionID string) (int64, error)

CountSessionSkillInjections counts the rows of the session's frozen set, including the empty-set marker.

func (*Queries) CountUnscoredEligibleSessions added in v1.2.4

func (q *Queries) CountUnscoredEligibleSessions(ctx context.Context, includeChildren int64) (int64, error)

func (*Queries) CreateFile

func (q *Queries) CreateFile(ctx context.Context, arg CreateFileParams) (File, error)

func (*Queries) CreateGoal added in v0.324.0

func (q *Queries) CreateGoal(ctx context.Context, arg CreateGoalParams) (SessionGoal, error)

func (*Queries) CreateMessage

func (q *Queries) CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error)

func (*Queries) CreateProject added in v0.240.0

func (q *Queries) CreateProject(ctx context.Context, arg CreateProjectParams) (Project, error)

func (*Queries) CreateSession

func (q *Queries) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error)

func (*Queries) DeactivateUnderperformingSkills added in v0.407.0

func (q *Queries) DeactivateUnderperformingSkills(ctx context.Context) error

DeactivateUnderperformingSkills deactivates skills whose success_rate is below 0.3 AND whose usage_count exceeds 10, pruning low-quality entries from the skill library.

func (*Queries) DeleteFile

func (q *Queries) DeleteFile(ctx context.Context, id string) error

func (*Queries) DeleteGoalsBySession added in v0.324.0

func (q *Queries) DeleteGoalsBySession(ctx context.Context, sessionID string) error

func (*Queries) DeleteMessage

func (q *Queries) DeleteMessage(ctx context.Context, id string) error

func (*Queries) DeleteProject added in v0.240.0

func (q *Queries) DeleteProject(ctx context.Context, id string) error

func (*Queries) DeleteSession

func (q *Queries) DeleteSession(ctx context.Context, id string) error

func (*Queries) DeleteSessionFiles

func (q *Queries) DeleteSessionFiles(ctx context.Context, sessionID string) error

func (*Queries) DeleteSessionMessages

func (q *Queries) DeleteSessionMessages(ctx context.Context, sessionID string) error

func (*Queries) GetActiveGoal added in v0.324.0

func (q *Queries) GetActiveGoal(ctx context.Context, sessionID string) (SessionGoal, error)

func (*Queries) GetEvaluatorStats added in v0.26.2

func (q *Queries) GetEvaluatorStats(ctx context.Context) (GetEvaluatorStatsRow, error)

func (*Queries) GetFile

func (q *Queries) GetFile(ctx context.Context, id string) (File, error)

func (*Queries) GetFileByPathAndSession

func (q *Queries) GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error)

func (*Queries) GetGoalBySession added in v0.324.0

func (q *Queries) GetGoalBySession(ctx context.Context, sessionID string) (SessionGoal, error)

func (*Queries) GetJudgeUsageSince added in v1.2.4

func (q *Queries) GetJudgeUsageSince(ctx context.Context, createdAt int64) (GetJudgeUsageSinceRow, error)

Judge calls and tokens spent since a unix timestamp (start of the local day), derived from persisted scores so the daily budget survives restarts.

func (*Queries) GetLastEvaluationAt added in v1.2.4

func (q *Queries) GetLastEvaluationAt(ctx context.Context) (int64, error)

func (*Queries) GetLatestSessionFeedback added in v1.2.4

func (q *Queries) GetLatestSessionFeedback(ctx context.Context, subject string) (string, error)

func (*Queries) GetMessage

func (q *Queries) GetMessage(ctx context.Context, id string) (Message, error)

func (*Queries) GetProject added in v0.240.0

func (q *Queries) GetProject(ctx context.Context, id string) (Project, error)

func (*Queries) GetProjectByPath added in v0.240.0

func (q *Queries) GetProjectByPath(ctx context.Context, path string) (Project, error)

func (*Queries) GetSessionACPState added in v0.407.0

func (q *Queries) GetSessionACPState(ctx context.Context, id string) (sql.NullString, error)

func (*Queries) GetSessionByID

func (q *Queries) GetSessionByID(ctx context.Context, id string) (Session, error)

func (*Queries) GetSessionScore added in v0.26.2

func (q *Queries) GetSessionScore(ctx context.Context, sessionID string) (SessionScore, error)

func (*Queries) GetSessionTemplateSelection added in v1.2.4

func (q *Queries) GetSessionTemplateSelection(ctx context.Context, arg GetSessionTemplateSelectionParams) (string, error)

func (*Queries) GetSessionsTokenBaseline added in v1.2.4

func (q *Queries) GetSessionsTokenBaseline(ctx context.Context, arg GetSessionsTokenBaselineParams) (float64, error)

Token baseline from the sessions table itself (not session_scores), so it is available before any session has been scored: mean prompt+completion tokens of the most recent root sessions with at least 4 messages (>= 2 user turns and their replies), excluding the session being evaluated.

func (*Queries) GetSkill added in v1.2.4

func (q *Queries) GetSkill(ctx context.Context, id string) (SkillLibrary, error)

func (*Queries) IncrementSkillUsage added in v0.26.2

func (q *Queries) IncrementSkillUsage(ctx context.Context, id string) error

func (*Queries) InsertSessionFeedbackEvent added in v1.2.4

func (q *Queries) InsertSessionFeedbackEvent(ctx context.Context, arg InsertSessionFeedbackEventParams) (int64, error)

Explicit user feedback (/feedback good|bad) is stored as an event whose subject is "session_feedback:<session id>"; the payload lives in metadata.

func (*Queries) InsertSessionScore added in v0.26.2

func (q *Queries) InsertSessionScore(ctx context.Context, arg InsertSessionScoreParams) (SessionScore, error)

func (*Queries) InsertSessionSkillInjection added in v1.2.4

func (q *Queries) InsertSessionSkillInjection(ctx context.Context, arg InsertSessionSkillInjectionParams) error

InsertSessionSkillInjection records a skill of the session's frozen set. First writer wins.

func (*Queries) InsertSessionTemplateSelection added in v1.2.4

func (q *Queries) InsertSessionTemplateSelection(ctx context.Context, arg InsertSessionTemplateSelectionParams) error

Prompt template variants: the DB holds selections and statistics only; the variant sources are files. variant_id is "<section>#<variant>". First writer wins, so concurrent processes agree on the frozen choice.

func (*Queries) InsertSkill added in v0.26.2

func (q *Queries) InsertSkill(ctx context.Context, arg InsertSkillParams) (SkillLibrary, error)

func (*Queries) ListActiveSkillsByType added in v0.26.2

func (q *Queries) ListActiveSkillsByType(ctx context.Context, arg ListActiveSkillsByTypeParams) ([]SkillLibrary, error)

func (*Queries) ListAllActiveSkills added in v0.26.2

func (q *Queries) ListAllActiveSkills(ctx context.Context) ([]SkillLibrary, error)

func (*Queries) ListAllSkills added in v1.2.4

func (q *Queries) ListAllSkills(ctx context.Context) ([]SkillLibrary, error)

func (*Queries) ListAllVariantStats added in v1.2.4

func (q *Queries) ListAllVariantStats(ctx context.Context) ([]PromptVariantStat, error)

func (*Queries) ListDailyEvaluationMetrics added in v1.2.4

func (q *Queries) ListDailyEvaluationMetrics(ctx context.Context, evaluatedAt int64) ([]ListDailyEvaluationMetricsRow, error)

func (*Queries) ListFilesByPath

func (q *Queries) ListFilesByPath(ctx context.Context, path string) ([]File, error)

func (*Queries) ListFilesBySession

func (q *Queries) ListFilesBySession(ctx context.Context, sessionID string) ([]File, error)

func (*Queries) ListLatestSessionFiles

func (q *Queries) ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error)

func (*Queries) ListMessagesBySession

func (q *Queries) ListMessagesBySession(ctx context.Context, sessionID string) ([]Message, error)

func (*Queries) ListNewFiles

func (q *Queries) ListNewFiles(ctx context.Context) ([]File, error)

func (*Queries) ListProjects added in v0.240.0

func (q *Queries) ListProjects(ctx context.Context) ([]Project, error)

func (*Queries) ListRecentSessionSkills added in v1.2.4

func (q *Queries) ListRecentSessionSkills(ctx context.Context, limit int64) ([]ListRecentSessionSkillsRow, error)

func (*Queries) ListRecentSessionVariants added in v1.2.4

func (q *Queries) ListRecentSessionVariants(ctx context.Context, limit int64) ([]ListRecentSessionVariantsRow, error)

func (*Queries) ListSessionInjectedSkills added in v1.2.4

func (q *Queries) ListSessionInjectedSkills(ctx context.Context, sessionID string) ([]SkillLibrary, error)

ListSessionInjectedSkills returns the skills frozen into the session's prompt, in injection order.

func (*Queries) ListSessionScores added in v0.244.0

func (q *Queries) ListSessionScores(ctx context.Context, limit int64) ([]SessionScore, error)

func (*Queries) ListSessionScoresWithTitle added in v1.2.4

func (q *Queries) ListSessionScoresWithTitle(ctx context.Context, limit int64) ([]ListSessionScoresWithTitleRow, error)

func (*Queries) ListSessions

func (q *Queries) ListSessions(ctx context.Context) ([]Session, error)

func (*Queries) ListUnscoredSessions added in v1.2.4

func (q *Queries) ListUnscoredSessions(ctx context.Context, arg ListUnscoredSessionsParams) ([]string, error)

Sessions that have no session_scores row yet, at least two user messages and have been idle since before the cutoff (unix seconds), oldest first. Child (subagent) sessions are only returned when include_children is 1.

func (*Queries) ListVariantSelectionCounts added in v1.2.4

func (q *Queries) ListVariantSelectionCounts(ctx context.Context, section string) ([]ListVariantSelectionCountsRow, error)

func (*Queries) ListVariantStatsBySection added in v1.2.4

func (q *Queries) ListVariantStatsBySection(ctx context.Context, section string) ([]PromptVariantStat, error)

func (*Queries) MarkProjectInitialized added in v0.240.0

func (q *Queries) MarkProjectInitialized(ctx context.Context, id string) error

func (*Queries) SetSkillMirrorState added in v1.2.4

func (q *Queries) SetSkillMirrorState(ctx context.Context, arg SetSkillMirrorStateParams) error

func (*Queries) UpdateFile

func (q *Queries) UpdateFile(ctx context.Context, arg UpdateFileParams) (File, error)

func (*Queries) UpdateGoalProgress added in v0.324.0

func (q *Queries) UpdateGoalProgress(ctx context.Context, arg UpdateGoalProgressParams) (SessionGoal, error)

func (*Queries) UpdateGoalStatus added in v0.324.0

func (q *Queries) UpdateGoalStatus(ctx context.Context, arg UpdateGoalStatusParams) (SessionGoal, error)

func (*Queries) UpdateMessage

func (q *Queries) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error

func (*Queries) UpdateProjectLastOpened added in v0.240.0

func (q *Queries) UpdateProjectLastOpened(ctx context.Context, arg UpdateProjectLastOpenedParams) error

func (*Queries) UpdateProjectName added in v0.290.1

func (q *Queries) UpdateProjectName(ctx context.Context, id, name string) error

func (*Queries) UpdateProjectStatus added in v0.240.0

func (q *Queries) UpdateProjectStatus(ctx context.Context, arg UpdateProjectStatusParams) error

func (*Queries) UpdateSession

func (q *Queries) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error)

func (*Queries) UpdateSessionACPState added in v0.407.0

func (q *Queries) UpdateSessionACPState(ctx context.Context, arg UpdateSessionACPStateParams) error

func (*Queries) UpdateSessionScore added in v1.2.4

func (q *Queries) UpdateSessionScore(ctx context.Context, arg UpdateSessionScoreParams) (SessionScore, error)

Re-scores a session in place (explicit feedback). The row is UPDATEd, never re-inserted, so the insert-only UCB trigger cannot double count it; the update_ucb_after_rescore trigger applies just the reward delta.

func (*Queries) UpdateSessionScoreJudge added in v1.2.4

func (q *Queries) UpdateSessionScoreJudge(ctx context.Context, arg UpdateSessionScoreJudgeParams) error

Stores the LLM judge output on an existing score. It does not touch reward, so neither UCB trigger fires.

func (*Queries) UpsertSkillMirror added in v1.2.4

func (q *Queries) UpsertSkillMirror(ctx context.Context, arg UpsertSkillMirrorParams) error

UpsertSkillMirror mirrors a skill file into skill_library without touching its statistics.

func (*Queries) WithTx

func (q *Queries) WithTx(tx *sql.Tx) *Queries

type Session

type Session struct {
	ID                  string         `json:"id"`
	ParentSessionID     sql.NullString `json:"parent_session_id"`
	Title               string         `json:"title"`
	MessageCount        int64          `json:"message_count"`
	PromptTokens        int64          `json:"prompt_tokens"`
	CompletionTokens    int64          `json:"completion_tokens"`
	Cost                float64        `json:"cost"`
	UpdatedAt           int64          `json:"updated_at"`
	CreatedAt           int64          `json:"created_at"`
	SummaryMessageID    sql.NullString `json:"summary_message_id"`
	CacheReadTokens     int64          `json:"cache_read_tokens"`
	CacheCreationTokens int64          `json:"cache_creation_tokens"`
	ReasoningTokens     int64          `json:"reasoning_tokens"`
}

type SessionGoal added in v0.324.0

type SessionGoal struct {
	ID                 string         `json:"id"`
	SessionID          string         `json:"session_id"`
	Objective          string         `json:"objective"`
	Status             string         `json:"status"`
	Iteration          int64          `json:"iteration"`
	MaxIterations      int64          `json:"max_iterations"`
	MaxDurationSeconds int64          `json:"max_duration_seconds"`
	StartedAt          int64          `json:"started_at"`
	CompletedAt        sql.NullInt64  `json:"completed_at"`
	LastProgress       sql.NullString `json:"last_progress"`
	NextStep           sql.NullString `json:"next_step"`
	BlockedReason      sql.NullString `json:"blocked_reason"`
	CreatedAt          int64          `json:"created_at"`
}

type SessionScore added in v0.26.2

type SessionScore struct {
	ID                    string         `json:"id"`
	SessionID             string         `json:"session_id"`
	TemplateID            sql.NullString `json:"template_id"`
	Reward                float64        `json:"reward"`
	SuccessScore          float64        `json:"success_score"`
	EfficiencyScore       float64        `json:"efficiency_score"`
	JudgeAnalysis         sql.NullString `json:"judge_analysis"`
	JudgeModel            sql.NullString `json:"judge_model"`
	PromptTokens          int64          `json:"prompt_tokens"`
	CompletionTokens      int64          `json:"completion_tokens"`
	MessageCount          int64          `json:"message_count"`
	UserCorrections       int64          `json:"user_corrections"`
	EvaluatedAt           int64          `json:"evaluated_at"`
	CreatedAt             int64          `json:"created_at"`
	Components            string         `json:"components"`
	JudgePromptTokens     int64          `json:"judge_prompt_tokens"`
	JudgeCompletionTokens int64          `json:"judge_completion_tokens"`
}

type SessionTemplateSelection added in v1.2.4

type SessionTemplateSelection struct {
	SessionID  string `json:"session_id"`
	Section    string `json:"section"`
	VariantID  string `json:"variant_id"`
	SelectedAt int64  `json:"selected_at"`
}

type SetSkillMirrorStateParams added in v1.2.4

type SetSkillMirrorStateParams struct {
	Status   string `json:"status"`
	IsActive int64  `json:"is_active"`
	ID       string `json:"id"`
}

type SkillLibrary added in v0.26.2

type SkillLibrary struct {
	ID               string         `json:"id"`
	Title            string         `json:"title"`
	Content          string         `json:"content"`
	SourceSessionID  sql.NullString `json:"source_session_id"`
	SourceTemplateID sql.NullString `json:"source_template_id"`
	TaskType         string         `json:"task_type"`
	UsageCount       int64          `json:"usage_count"`
	SuccessRate      float64        `json:"success_rate"`
	IsActive         int64          `json:"is_active"`
	CreatedAt        int64          `json:"created_at"`
	UpdatedAt        int64          `json:"updated_at"`
	// Status mirrors the review state of the skill file: pending, approved,
	// rejected, or legacy (a pre-review row not yet exported to a file).
	Status     string  `json:"status"`
	Confidence float64 `json:"confidence"`
	JudgeModel string  `json:"judge_model"`
	// EvalCount and RewardTotal accumulate the reward of the evaluated sessions
	// the skill was injected in; SuccessRate = RewardTotal / EvalCount.
	EvalCount   int64   `json:"eval_count"`
	RewardTotal float64 `json:"reward_total"`
}

type UpdateFileParams

type UpdateFileParams struct {
	Content string `json:"content"`
	Version string `json:"version"`
	ID      string `json:"id"`
}

type UpdateGoalProgressParams added in v0.324.0

type UpdateGoalProgressParams struct {
	LastProgress sql.NullString `json:"last_progress"`
	NextStep     sql.NullString `json:"next_step"`
	Iteration    int64          `json:"iteration"`
	ID           string         `json:"id"`
}

type UpdateGoalStatusParams added in v0.324.0

type UpdateGoalStatusParams struct {
	Status        string         `json:"status"`
	Iteration     int64          `json:"iteration"`
	LastProgress  sql.NullString `json:"last_progress"`
	NextStep      sql.NullString `json:"next_step"`
	BlockedReason sql.NullString `json:"blocked_reason"`
	CompletedAt   sql.NullInt64  `json:"completed_at"`
	ID            string         `json:"id"`
}

type UpdateMessageParams

type UpdateMessageParams struct {
	Parts      string        `json:"parts"`
	FinishedAt sql.NullInt64 `json:"finished_at"`
	ID         string        `json:"id"`
}

type UpdateProjectLastOpenedParams added in v0.240.0

type UpdateProjectLastOpenedParams struct {
	LastOpened sql.NullInt64 `json:"last_opened"`
	ID         string        `json:"id"`
}

type UpdateProjectStatusParams added in v0.240.0

type UpdateProjectStatusParams struct {
	Status  string        `json:"status"`
	AcpPid  sql.NullInt64 `json:"acp_pid"`
	AcpPort sql.NullInt64 `json:"acp_port"`
	ID      string        `json:"id"`
}

type UpdateSessionACPStateParams added in v0.407.0

type UpdateSessionACPStateParams struct {
	ACPState sql.NullString `json:"acp_state"`
	ID       string         `json:"id"`
}

type UpdateSessionParams

type UpdateSessionParams struct {
	Title               string         `json:"title"`
	PromptTokens        int64          `json:"prompt_tokens"`
	CompletionTokens    int64          `json:"completion_tokens"`
	CacheReadTokens     int64          `json:"cache_read_tokens"`
	CacheCreationTokens int64          `json:"cache_creation_tokens"`
	ReasoningTokens     int64          `json:"reasoning_tokens"`
	SummaryMessageID    sql.NullString `json:"summary_message_id"`
	Cost                float64        `json:"cost"`
	ID                  string         `json:"id"`
}

type UpdateSessionScoreJudgeParams added in v1.2.4

type UpdateSessionScoreJudgeParams struct {
	JudgeAnalysis         sql.NullString `json:"judge_analysis"`
	JudgeModel            sql.NullString `json:"judge_model"`
	JudgePromptTokens     int64          `json:"judge_prompt_tokens"`
	JudgeCompletionTokens int64          `json:"judge_completion_tokens"`
	SessionID             string         `json:"session_id"`
}

type UpdateSessionScoreParams added in v1.2.4

type UpdateSessionScoreParams struct {
	Reward           float64 `json:"reward"`
	SuccessScore     float64 `json:"success_score"`
	EfficiencyScore  float64 `json:"efficiency_score"`
	PromptTokens     int64   `json:"prompt_tokens"`
	CompletionTokens int64   `json:"completion_tokens"`
	MessageCount     int64   `json:"message_count"`
	UserCorrections  int64   `json:"user_corrections"`
	Components       string  `json:"components"`
	SessionID        string  `json:"session_id"`
}

type UpsertSkillMirrorParams added in v1.2.4

type UpsertSkillMirrorParams struct {
	ID              string         `json:"id"`
	Title           string         `json:"title"`
	Content         string         `json:"content"`
	SourceSessionID sql.NullString `json:"source_session_id"`
	TaskType        string         `json:"task_type"`
	IsActive        int64          `json:"is_active"`
	Status          string         `json:"status"`
	Confidence      float64        `json:"confidence"`
	JudgeModel      string         `json:"judge_model"`
	CreatedAt       int64          `json:"created_at"`
}

Jump to

Keyboard shortcuts

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