db

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package db contains sqlc-generated query and model types for PostgreSQL. All other files in this package are generated by sqlc — do not edit by hand. Run `task sqlc` from the build/ directory to regenerate after query/migration changes.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ActivityLog

type ActivityLog struct {
	ID          uuid.UUID          `json:"id"`
	Actor       string             `json:"actor"`
	ProjectID   pgtype.UUID        `json:"project_id"`
	Action      string             `json:"action"`
	Notes       pgtype.Text        `json:"notes"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
}

type AiCostLedger

type AiCostLedger struct {
	ID               uuid.UUID   `json:"id"`
	WorkspaceID      pgtype.UUID `json:"workspace_id"`
	Caller           string      `json:"caller"`
	Model            string      `json:"model"`
	InputTokens      int64       `json:"input_tokens"`
	OutputTokens     int64       `json:"output_tokens"`
	CacheReadTokens  int64       `json:"cache_read_tokens"`
	CacheWriteTokens int64       `json:"cache_write_tokens"`
	// Computed cost in micro-USD (USD * 1_000_000). Stored as integer to avoid float rounding.
	CostUsdMicro int64              `json:"cost_usd_micro"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
}

AI token usage and computed USD cost per API call. 30-day retention via daily-ai-cost-ledger-prune scheduler job per backend-security-design.md §1.3.

type BeginTaskStatusParams

type BeginTaskStatusParams struct {
	ID          uuid.UUID `json:"id"`
	WorkspaceID uuid.UUID `json:"workspace_id"`
}

type BehaviorRule

type BehaviorRule struct {
	ID          uuid.UUID          `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Condition   string             `json:"condition"`
	Action      string             `json:"action"`
	SourceType  string             `json:"source_type"`
	SourceID    pgtype.UUID        `json:"source_id"`
	Confidence  pgtype.Numeric     `json:"confidence"`
	Status      string             `json:"status"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

behavior_rules table; 365-day retention for rejected/deprecated rows via daily-behavior-rule-prune job per backend-security-design.md §1.3. Active and proposed rows are never auto-pruned.

type CompleteTaskParams

type CompleteTaskParams struct {
	Artifact    pgtype.Text `json:"artifact"`
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type CompletionCandidate

type CompletionCandidate struct {
	ID                uuid.UUID          `json:"id"`
	WorkspaceID       pgtype.UUID        `json:"workspace_id"`
	TaskID            uuid.UUID          `json:"task_id"`
	RepoName          pgtype.Text        `json:"repo_name"`
	Reason            string             `json:"reason"`
	EvidenceRefs      []string           `json:"evidence_refs"`
	Confidence        string             `json:"confidence"`
	SuggestedArtifact pgtype.Text        `json:"suggested_artifact"`
	Status            string             `json:"status"`
	DetectedAt        pgtype.Timestamptz `json:"detected_at"`
	ResolvedAt        pgtype.Timestamptz `json:"resolved_at"`
}

type Concept

type Concept struct {
	ID             uuid.UUID          `json:"id"`
	Title          string             `json:"title"`
	Content        string             `json:"content"`
	Tags           []string           `json:"tags"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	Status         string             `json:"status"`
	Importance     float64            `json:"importance"`
	RecallCount    int32              `json:"recall_count"`
	LastRecalledAt pgtype.Timestamptz `json:"last_recalled_at"`
	BaseLambda     float64            `json:"base_lambda"`
	ArchivedAt     pgtype.Timestamptz `json:"archived_at"`
}

type CreateActivityLogParams

type CreateActivityLogParams struct {
	Actor       string      `json:"actor"`
	ProjectID   pgtype.UUID `json:"project_id"`
	Action      string      `json:"action"`
	Notes       pgtype.Text `json:"notes"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type CreateConceptParams

type CreateConceptParams struct {
	Title       string      `json:"title"`
	Content     string      `json:"content"`
	Tags        []string    `json:"tags"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type CreateDecisionParams

type CreateDecisionParams struct {
	ProjectID        pgtype.UUID `json:"project_id"`
	RepoName         pgtype.Text `json:"repo_name"`
	Title            string      `json:"title"`
	Context          string      `json:"context"`
	Decision         string      `json:"decision"`
	Rationale        string      `json:"rationale"`
	Alternatives     pgtype.Text `json:"alternatives"`
	WorkspaceID      pgtype.UUID `json:"workspace_id"`
	TaskID           pgtype.UUID `json:"task_id"`
	Source           string      `json:"source"`
	ActorSessionID   pgtype.Text `json:"actor_session_id"`
	ConfirmedByHuman bool        `json:"confirmed_by_human"`
}

type CreateGoalParams

type CreateGoalParams struct {
	Title       string             `json:"title"`
	Description pgtype.Text        `json:"description"`
	Area        pgtype.Text        `json:"area"`
	DueDate     pgtype.Timestamptz `json:"due_date"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
}

type CreatePendingProposalParams

type CreatePendingProposalParams struct {
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	Type        string      `json:"type"`
	Payload     []byte      `json:"payload"`
	ProposedBy  pgtype.Text `json:"proposed_by"`
}

type CreateProjectParams

type CreateProjectParams struct {
	GoalID      pgtype.UUID `json:"goal_id"`
	Name        string      `json:"name"`
	Title       string      `json:"title"`
	Description pgtype.Text `json:"description"`
	Area        string      `json:"area"`
	Priority    int32       `json:"priority"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type CreateReviewScheduleParams

type CreateReviewScheduleParams struct {
	ConceptID   uuid.UUID   `json:"concept_id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type CreateTaskParams

type CreateTaskParams struct {
	ProjectID    pgtype.UUID        `json:"project_id"`
	Title        string             `json:"title"`
	Description  pgtype.Text        `json:"description"`
	Priority     int32              `json:"priority"`
	Assignee     pgtype.Text        `json:"assignee"`
	DueDate      pgtype.Timestamptz `json:"due_date"`
	Importance   pgtype.Int2        `json:"importance"`
	Context      pgtype.Text        `json:"context"`
	Kind         string             `json:"kind"`
	WorkspaceID  pgtype.UUID        `json:"workspace_id"`
	VisionItemID pgtype.UUID        `json:"vision_item_id"`
}

type DBTX

type DBTX interface {
	Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error)
	Query(context.Context, string, ...interface{}) (pgx.Rows, error)
	QueryRow(context.Context, string, ...interface{}) pgx.Row
}

type Decision

type Decision struct {
	ID                uuid.UUID          `json:"id"`
	ProjectID         pgtype.UUID        `json:"project_id"`
	RepoName          pgtype.Text        `json:"repo_name"`
	Title             string             `json:"title"`
	Context           string             `json:"context"`
	Decision          string             `json:"decision"`
	Rationale         string             `json:"rationale"`
	Alternatives      pgtype.Text        `json:"alternatives"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
	WorkspaceID       pgtype.UUID        `json:"workspace_id"`
	Embedding         []byte             `json:"embedding"`
	TaskID            pgtype.UUID        `json:"task_id"`
	EmbeddingProvider pgtype.Text        `json:"embedding_provider"`
	EmbeddingModel    pgtype.Text        `json:"embedding_model"`
	EmbeddingDim      pgtype.Int4        `json:"embedding_dim"`
	Source            string             `json:"source"`
	ActorSessionID    pgtype.Text        `json:"actor_session_id"`
	ConfirmedByHuman  bool               `json:"confirmed_by_human"`
}

func (Decision) MarshalJSON

func (d Decision) MarshalJSON() ([]byte, error)

MarshalJSON hides Decision.ActorSessionID and Decision.ConfirmedByHuman from every JSON serialization boundary in this codebase (handler.JSON responses, MCP jsonText, any future c.JSON(decision) call site) — PR160 M-3 / M-2. Declared on the VALUE receiver, not a pointer: pgtype's own MarshalJSON methods (Text, UUID, Timestamptz — see this package's go.sum-pinned pgx/v5) all use value receivers for the identical reason mcp.safeSessionHandoff documents (internal/mcp/session_handoff_safe.go): encoding/json only special-cases a pointer receiver when the value being marshaled is addressable, which a map value or an `any`-boxed element is not guaranteed to be. A value receiver makes "this type never emits those two fields" hold regardless of how a caller stores or nests the value — []db.Decision, *db.Decision, map[string]any{"decision": d}, []any{d}, a struct field — all of them.

The write path is untouched: Decision.ActorSessionID/ConfirmedByHuman still round-trip through the DB exactly as before (this method only governs json.Marshal(Decision), never affects DB reads/writes, which go through pgx's binary/text wire protocol, not encoding/json).

type DeleteTaskParams

type DeleteTaskParams struct {
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type DisciplineEvent

type DisciplineEvent struct {
	ID               int64              `json:"id"`
	SessionID        string             `json:"session_id"`
	RepoName         pgtype.Text        `json:"repo_name"`
	ToolName         string             `json:"tool_name"`
	IsMutating       bool               `json:"is_mutating"`
	ObservedAt       pgtype.Timestamptz `json:"observed_at"`
	LinkedDecisionID pgtype.UUID        `json:"linked_decision_id"`
	WorkspaceID      pgtype.UUID        `json:"workspace_id"`
}

MCP tool-call audit trail for meta-rule drift detection; 30-day TTL via task discipline-prune

type DisciplineEventsM8

type DisciplineEventsM8 struct {
	ID          uuid.UUID          `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	EventType   string             `json:"event_type"`
	Severity    string             `json:"severity"`
	Detail      []byte             `json:"detail"`
	ResolvedAt  pgtype.Timestamptz `json:"resolved_at"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

Watchdog meta-cognition events (M8). 90-day retention via daily-discipline-event-m8-prune scheduler job per backend-security-design.md §1.3.

type Evaluation

type Evaluation struct {
	ID                     uuid.UUID          `json:"id"`
	WorkspaceID            pgtype.UUID        `json:"workspace_id"`
	OutcomeID              uuid.UUID          `json:"outcome_id"`
	Analysis               string             `json:"analysis"`
	Lessons                []byte             `json:"lessons"`
	ImprovementSuggestions []byte             `json:"improvement_suggestions"`
	CreatedAt              pgtype.Timestamptz `json:"created_at"`
}

type GetPendingProposalParams

type GetPendingProposalParams struct {
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type GetProjectByIDParams

type GetProjectByIDParams struct {
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type GetProjectByNameParams

type GetProjectByNameParams struct {
	Name        string      `json:"name"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type GetRepoByNameParams

type GetRepoByNameParams struct {
	Name        string      `json:"name"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type GetTasksByProjectParams

type GetTasksByProjectParams struct {
	ProjectID   pgtype.UUID `json:"project_id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type Goal

type Goal struct {
	ID          uuid.UUID          `json:"id"`
	Title       string             `json:"title"`
	Description pgtype.Text        `json:"description"`
	Status      string             `json:"status"`
	Area        pgtype.Text        `json:"area"`
	DueDate     pgtype.Timestamptz `json:"due_date"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
}

type GuardBypass

type GuardBypass struct {
	ID        uuid.UUID          `json:"id"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	ExpiresAt pgtype.Timestamptz `json:"expires_at"`
	Scope     string             `json:"scope"`
	Target    string             `json:"target"`
	ToolName  pgtype.Text        `json:"tool_name"`
	Reason    string             `json:"reason"`
	CreatedBy pgtype.Text        `json:"created_by"`
}

type GuardEvent

type GuardEvent struct {
	ID         uuid.UUID          `json:"id"`
	CreatedAt  pgtype.Timestamptz `json:"created_at"`
	SessionID  pgtype.Text        `json:"session_id"`
	ToolName   string             `json:"tool_name"`
	ToolInput  []byte             `json:"tool_input"`
	Cwd        pgtype.Text        `json:"cwd"`
	RepoName   pgtype.Text        `json:"repo_name"`
	RiskTier   int16              `json:"risk_tier"`
	RiskReason pgtype.Text        `json:"risk_reason"`
	WouldDeny  bool               `json:"would_deny"`
	Matcher    string             `json:"matcher"`
	BypassID   pgtype.UUID        `json:"bypass_id"`
}

type HandoffsSinceParams

type HandoffsSinceParams struct {
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Since       pgtype.Timestamptz `json:"since"`
	LimitN      int32              `json:"limit_n"`
}

type KnowledgeItem

type KnowledgeItem struct {
	ID             uuid.UUID          `json:"id"`
	Type           string             `json:"type"`
	Title          string             `json:"title"`
	Content        string             `json:"content"`
	Url            pgtype.Text        `json:"url"`
	Tags           []string           `json:"tags"`
	Embedding      pgvector.Vector    `json:"embedding"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
	Source         string             `json:"source"`
	LearningValue  pgtype.Int4        `json:"learning_value"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	Importance     float64            `json:"importance"`
	RecallCount    int32              `json:"recall_count"`
	LastRecalledAt pgtype.Timestamptz `json:"last_recalled_at"`
	BaseLambda     float64            `json:"base_lambda"`
	ArchivedAt     pgtype.Timestamptz `json:"archived_at"`
	ParentID       pgtype.UUID        `json:"parent_id"`
	HeadingPath    pgtype.Text        `json:"heading_path"`
	HeadingLevel   pgtype.Int4        `json:"heading_level"`
	ProjectID      pgtype.UUID        `json:"project_id"`
	TaskID         pgtype.UUID        `json:"task_id"`
	DecisionID     pgtype.UUID        `json:"decision_id"`
}

type KnowledgeRanked

type KnowledgeRanked struct {
	ID             uuid.UUID          `json:"id"`
	Type           string             `json:"type"`
	Title          string             `json:"title"`
	Content        string             `json:"content"`
	Url            pgtype.Text        `json:"url"`
	Tags           []string           `json:"tags"`
	Embedding      pgvector.Vector    `json:"embedding"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
	Source         string             `json:"source"`
	LearningValue  pgtype.Int4        `json:"learning_value"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	Importance     float64            `json:"importance"`
	RecallCount    int32              `json:"recall_count"`
	LastRecalledAt pgtype.Timestamptz `json:"last_recalled_at"`
	BaseLambda     float64            `json:"base_lambda"`
	ArchivedAt     pgtype.Timestamptz `json:"archived_at"`
	Strength       interface{}        `json:"strength"`
}

type ListAllDecisionsParams

type ListAllDecisionsParams struct {
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	LimitN      int32       `json:"limit_n"`
}

type ListConceptsForAIReviewParams

type ListConceptsForAIReviewParams struct {
	MinReviewCount int32       `json:"min_review_count"`
	WorkspaceID    pgtype.UUID `json:"workspace_id"`
}

type ListConceptsForAIReviewRow

type ListConceptsForAIReviewRow struct {
	ID          uuid.UUID `json:"id"`
	Title       string    `json:"title"`
	Content     string    `json:"content"`
	ReviewCount int32     `json:"review_count"`
	Stability   float64   `json:"stability"`
}

type ListConceptsParams

type ListConceptsParams struct {
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	LimitN      int32       `json:"limit_n"`
}

type ListDecisionsByProjectParams

type ListDecisionsByProjectParams struct {
	ProjectID   pgtype.UUID `json:"project_id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	LimitN      int32       `json:"limit_n"`
}

type ListDecisionsByRepoParams

type ListDecisionsByRepoParams struct {
	RepoName    pgtype.Text `json:"repo_name"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	LimitN      int32       `json:"limit_n"`
}

type ListDecisionsByTaskIDParams

type ListDecisionsByTaskIDParams struct {
	TaskID      pgtype.UUID `json:"task_id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	LimitN      int32       `json:"limit_n"`
}

type ListDecisionsFilteredParams

type ListDecisionsFilteredParams struct {
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	ProjectID   pgtype.UUID `json:"project_id"`
	RepoName    pgtype.Text `json:"repo_name"`
	IncludeAuto bool        `json:"include_auto"`
	LimitN      int32       `json:"limit_n"`
}

type ListDueReviewsParams

type ListDueReviewsParams struct {
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	LimitN      int32       `json:"limit_n"`
}

type ListDueReviewsRow

type ListDueReviewsRow struct {
	ID          uuid.UUID          `json:"id"`
	Title       string             `json:"title"`
	Content     string             `json:"content"`
	Tags        []string           `json:"tags"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
	Status      string             `json:"status"`
	ScheduleID  uuid.UUID          `json:"schedule_id"`
	Stability   float64            `json:"stability"`
	Difficulty  float64            `json:"difficulty"`
	DueDate     pgtype.Timestamptz `json:"due_date"`
	ReviewCount int32              `json:"review_count"`
}

type ListProjectTasksAllStatusesParams

type ListProjectTasksAllStatusesParams struct {
	ProjectID   pgtype.UUID `json:"project_id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type MemoryAtom

type MemoryAtom struct {
	ID          uuid.UUID          `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	ParentTable string             `json:"parent_table"`
	ParentID    uuid.UUID          `json:"parent_id"`
	Content     string             `json:"content"`
	Keywords    []byte             `json:"keywords"`
	Tags        []byte             `json:"tags"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	// pending | done | failed | consolidated | promoted
	DigestStatus string      `json:"digest_status"`
	ErrorMsg     pgtype.Text `json:"error_msg"`
}

Atomic fact units; retain 90 days (TTL not enforced by DB; use scheduled DELETE)

type MemoryLink struct {
	FromAtomID uuid.UUID          `json:"from_atom_id"`
	ToAtomID   uuid.UUID          `json:"to_atom_id"`
	LinkType   string             `json:"link_type"`
	Confidence float32            `json:"confidence"`
	CreatedAt  pgtype.Timestamptz `json:"created_at"`
}

type MergedPrsObserved

type MergedPrsObserved struct {
	ID          uuid.UUID          `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Repo        string             `json:"repo"`
	Url         string             `json:"url"`
	HeadRef     pgtype.Text        `json:"head_ref"`
	Title       pgtype.Text        `json:"title"`
	BodyExcerpt pgtype.Text        `json:"body_excerpt"`
	MergedAt    pgtype.Timestamptz `json:"merged_at"`
	ObservedAt  pgtype.Timestamptz `json:"observed_at"`
}

type Outcome

type Outcome struct {
	ID             uuid.UUID          `json:"id"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	EntityType     string             `json:"entity_type"`
	EntityID       uuid.UUID          `json:"entity_id"`
	Result         string             `json:"result"`
	Metrics        []byte             `json:"metrics"`
	Notes          pgtype.Text        `json:"notes"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	RelatedRuleIds []uuid.UUID        `json:"related_rule_ids"`
	WorkSessionID  pgtype.UUID        `json:"work_session_id"`
	SupersedesID   pgtype.UUID        `json:"supersedes_id"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
}

type PendingProposal

type PendingProposal struct {
	ID          uuid.UUID          `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Type        string             `json:"type"`
	Payload     []byte             `json:"payload"`
	Status      string             `json:"status"`
	ProposedBy  pgtype.Text        `json:"proposed_by"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	ResolvedAt  pgtype.Timestamptz `json:"resolved_at"`
	Reason      pgtype.Text        `json:"reason"`
}

func (PendingProposal) MarshalJSON

func (p PendingProposal) MarshalJSON() ([]byte, error)

MarshalJSON emits a clean JSON shape for PendingProposal that hides pgx pgtype.* wrapper internals.

Without this method, default reflection marshalling of pgtype.Text / pgtype.UUID / pgtype.Timestamptz leaks `{"String":"x","Valid":true}` or `{"Bytes":[1,2,...],"Valid":true}` whenever a caller serialises a raw db.PendingProposal — which today happens only through the handler-layer toResponse() but is one stray c.JSON(prop) away from regressing. Adding the method here makes the type self-defending regardless of caller.

sqlc regen (`cd build && task sqlc`) never touches this file (different basename from generated files), so the override survives schema iterations.

Time format mirrors handler.toResponse() (RFC3339, second-resolution); the existing API contract emits this shape and tests assert on it.

type Playbook

type Playbook struct {
	ID                uuid.UUID          `json:"id"`
	WorkspaceID       pgtype.UUID        `json:"workspace_id"`
	TriggerPattern    string             `json:"trigger_pattern"`
	ActionTemplate    string             `json:"action_template"`
	SourceDecisionIds []uuid.UUID        `json:"source_decision_ids"`
	Confidence        pgtype.Numeric     `json:"confidence"`
	Hits              int32              `json:"hits"`
	LastUsedAt        pgtype.Timestamptz `json:"last_used_at"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
	UpdatedAt         pgtype.Timestamptz `json:"updated_at"`
}

type ProceduralMemory

type ProceduralMemory struct {
	ID           uuid.UUID          `json:"id"`
	WorkspaceID  pgtype.UUID        `json:"workspace_id"`
	RepoName     string             `json:"repo_name"`
	ProjectID    pgtype.UUID        `json:"project_id"`
	Title        string             `json:"title"`
	WhenToUse    string             `json:"when_to_use"`
	ApproachMd   string             `json:"approach_md"`
	ToolsUsed    []byte             `json:"tools_used"`
	FilesTouched []byte             `json:"files_touched"`
	SuccessCount int32              `json:"success_count"`
	LastUsedAt   pgtype.Timestamptz `json:"last_used_at"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
}

type Project

type Project struct {
	ID          uuid.UUID          `json:"id"`
	GoalID      pgtype.UUID        `json:"goal_id"`
	Name        string             `json:"name"`
	Title       string             `json:"title"`
	Description pgtype.Text        `json:"description"`
	Status      string             `json:"status"`
	Area        string             `json:"area"`
	Priority    int32              `json:"priority"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	// Optional repo binding for workspace overview drill-down; populated by hand-rolled UPDATE post-migration
	RepoName pgtype.Text `json:"repo_name"`
}

type ProjectArch

type ProjectArch struct {
	ID            uuid.UUID          `json:"id"`
	Slug          string             `json:"slug"`
	Summary       string             `json:"summary"`
	FileMap       []byte             `json:"file_map"`
	LastCommitSha string             `json:"last_commit_sha"`
	UpdatedAt     pgtype.Timestamptz `json:"updated_at"`
}

type ProjectStatusSnapshot

type ProjectStatusSnapshot struct {
	ID                uuid.UUID          `json:"id"`
	Slug              string             `json:"slug"`
	WorkspaceID       pgtype.UUID        `json:"workspace_id"`
	GeneratedAt       pgtype.Timestamptz `json:"generated_at"`
	SprintSummary     pgtype.Text        `json:"sprint_summary"`
	GapAnalysis       pgtype.Text        `json:"gap_analysis"`
	SotaCatchupPct    pgtype.Int4        `json:"sota_catchup_pct"`
	PendingSummary    pgtype.Text        `json:"pending_summary"`
	SourceDecisionIds []uuid.UUID        `json:"source_decision_ids"`
	Embedding         []byte             `json:"embedding"`
	Source            string             `json:"source"`
	EmbeddingProvider pgtype.Text        `json:"embedding_provider"`
	EmbeddingModel    pgtype.Text        `json:"embedding_model"`
	EmbeddingDim      pgtype.Int4        `json:"embedding_dim"`
}

type Querier

type Querier interface {
	// Atomically sets status to in_progress only when the current status is not
	// already in_progress, preventing duplicate activity_log rows on concurrent calls.
	// Returns pgx.ErrNoRows when the task is already in_progress or not found.
	BeginTaskStatus(ctx context.Context, arg BeginTaskStatusParams) (Task, error)
	// artifact is presence-aware (Ω4, 2026-08-20-mcp-surface-spec.md): omitting
	// it (sqlc.narg → SQL NULL) preserves whatever is already stored, matching
	// upsert_project_arch.summary/file_map's established convention. Without
	// COALESCE, re-completing a reopened task without re-supplying artifact
	// silently wiped an already-recorded PR/commit link.
	CompleteTask(ctx context.Context, arg CompleteTaskParams) (Task, error)
	CountCompletedTasksThisWeek(ctx context.Context, workspaceID pgtype.UUID) (int64, error)
	// Returns count of tasks that are "relevant to this week":
	// (1) completed this week, OR
	// (2) pending/in_progress AND (due_date this week OR created this week)
	CountWeeklyRelevantTasks(ctx context.Context, workspaceID pgtype.UUID) (int64, error)
	CreateActivityLog(ctx context.Context, arg CreateActivityLogParams) (ActivityLog, error)
	CreateConcept(ctx context.Context, arg CreateConceptParams) (Concept, error)
	// actor_session_id / confirmed_by_human (migration 000076): caller-code-path
	// values only, never decoded from an MCP/HTTP payload — see
	// internal/decision.LogParams's ActorSessionID/ConfirmedByHuman doc comments.
	CreateDecision(ctx context.Context, arg CreateDecisionParams) (Decision, error)
	CreateGoal(ctx context.Context, arg CreateGoalParams) (Goal, error)
	CreatePendingProposal(ctx context.Context, arg CreatePendingProposalParams) (PendingProposal, error)
	CreateProject(ctx context.Context, arg CreateProjectParams) (Project, error)
	CreateReviewSchedule(ctx context.Context, arg CreateReviewScheduleParams) (ReviewSchedule, error)
	CreateTask(ctx context.Context, arg CreateTaskParams) (Task, error)
	// The Go-side store wraps this in a transaction together with cleanup of
	// work_session_tasks + work_sessions.current_task_id (the cascade behaviour
	// previously enforced by FKs; see migration 000026 and gtd.Store.DeleteTask).
	DeleteTask(ctx context.Context, arg DeleteTaskParams) error
	GetAllPendingTasks(ctx context.Context, workspaceID pgtype.UUID) ([]Task, error)
	GetPendingProposal(ctx context.Context, arg GetPendingProposalParams) (PendingProposal, error)
	GetProjectByID(ctx context.Context, arg GetProjectByIDParams) (Project, error)
	GetProjectByName(ctx context.Context, arg GetProjectByNameParams) (Project, error)
	GetRepoByName(ctx context.Context, arg GetRepoByNameParams) (Repo, error)
	GetTasksByProject(ctx context.Context, arg GetTasksByProjectParams) ([]Task, error)
	HandoffsSince(ctx context.Context, arg HandoffsSinceParams) ([]SessionHandoff, error)
	ListActiveGoals(ctx context.Context, workspaceID pgtype.UUID) ([]Goal, error)
	// All queries take workspace_id as the named nullable arg @workspace_id.
	// NULL → no filter (legacy mode); UUID → strict per-workspace scope.
	ListActiveProjects(ctx context.Context, workspaceID pgtype.UUID) ([]Project, error)
	ListActiveRepos(ctx context.Context, workspaceID pgtype.UUID) ([]Repo, error)
	ListAllDecisions(ctx context.Context, arg ListAllDecisionsParams) ([]Decision, error)
	ListConcepts(ctx context.Context, arg ListConceptsParams) ([]Concept, error)
	ListConceptsForAIReview(ctx context.Context, arg ListConceptsForAIReviewParams) ([]ListConceptsForAIReviewRow, error)
	ListDecisionsByProject(ctx context.Context, arg ListDecisionsByProjectParams) ([]Decision, error)
	ListDecisionsByRepo(ctx context.Context, arg ListDecisionsByRepoParams) ([]Decision, error)
	ListDecisionsByTaskID(ctx context.Context, arg ListDecisionsByTaskIDParams) ([]Decision, error)
	// P3.0a Stage B: source-filtered read path for MCP list_decisions.
	// project_id and repo_name are mutually exclusive at the application layer
	// (decision.ListParams.Validate) — this query accepts both narg'd so a nil
	// one is a no-op filter, but callers never pass both non-nil.
	// Source is filtered BEFORE ORDER/LIMIT so the limit isn't consumed by rows
	// that get excluded.
	ListDecisionsFiltered(ctx context.Context, arg ListDecisionsFilteredParams) ([]Decision, error)
	ListDueReviews(ctx context.Context, arg ListDueReviewsParams) ([]ListDueReviewsRow, error)
	ListPendingProposals(ctx context.Context, workspaceID pgtype.UUID) ([]PendingProposal, error)
	// All-statuses variant of GetTasksByProject. Used by the ProjectDetailPage to
	// render both the "open" and the "completed/cancelled" sections; the default
	// GetTasksByProject query stays active-only so existing GTD list pages don't
	// regress. Ordering: newest activity first via COALESCE(updated_at, created_at)
	// DESC so completed rows surface in roughly the order they were finished.
	ListProjectTasksAllStatuses(ctx context.Context, arg ListProjectTasksAllStatusesParams) ([]Task, error)
	ResolveHandoff(ctx context.Context, arg ResolveHandoffParams) (int64, error)
	ResolvePendingProposal(ctx context.Context, arg ResolvePendingProposalParams) (PendingProposal, error)
	ReviewedSince(ctx context.Context, arg ReviewedSinceParams) ([]ReviewedSinceRow, error)
	SetTaskVisionItemID(ctx context.Context, arg SetTaskVisionItemIDParams) (Task, error)
	UpdateConceptStatus(ctx context.Context, arg UpdateConceptStatusParams) (Concept, error)
	UpdateGoal(ctx context.Context, arg UpdateGoalParams) (Goal, error)
	UpdateKnowledgeEmbedding(ctx context.Context, arg UpdateKnowledgeEmbeddingParams) error
	UpdateProject(ctx context.Context, arg UpdateProjectParams) (Project, error)
	UpdateProjectStatus(ctx context.Context, arg UpdateProjectStatusParams) (Project, error)
	UpdateReviewSchedule(ctx context.Context, arg UpdateReviewScheduleParams) (ReviewSchedule, error)
	UpdateTaskStatus(ctx context.Context, arg UpdateTaskStatusParams) (Task, error)
	// path/description/language/current_branch/next_planned_step are
	// presence-aware (Ω6, 2026-08-20-mcp-surface-spec.md): the CASE checks the
	// bound PARAMETER ($2/$3/$4/$5/$7), not EXCLUDED.<col> (which post-INSERT is
	// never NULL — it's whatever the VALUES clause carried). NULL means the
	// caller omitted the field (preserve stored value); a non-NULL value
	// (including "") means an explicit set. Without this, every sync_repo call
	// that didn't re-specify a field silently wiped it. known_issues already had
	// this protection.
	UpsertRepo(ctx context.Context, arg UpsertRepoParams) (Repo, error)
}

type Queries

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

func New

func New(db DBTX) *Queries

func (*Queries) BeginTaskStatus

func (q *Queries) BeginTaskStatus(ctx context.Context, arg BeginTaskStatusParams) (Task, error)

Atomically sets status to in_progress only when the current status is not already in_progress, preventing duplicate activity_log rows on concurrent calls. Returns pgx.ErrNoRows when the task is already in_progress or not found.

func (*Queries) CompleteTask

func (q *Queries) CompleteTask(ctx context.Context, arg CompleteTaskParams) (Task, error)

artifact is presence-aware (Ω4, 2026-08-20-mcp-surface-spec.md): omitting it (sqlc.narg → SQL NULL) preserves whatever is already stored, matching upsert_project_arch.summary/file_map's established convention. Without COALESCE, re-completing a reopened task without re-supplying artifact silently wiped an already-recorded PR/commit link.

func (*Queries) CountCompletedTasksThisWeek

func (q *Queries) CountCompletedTasksThisWeek(ctx context.Context, workspaceID pgtype.UUID) (int64, error)

func (*Queries) CountWeeklyRelevantTasks

func (q *Queries) CountWeeklyRelevantTasks(ctx context.Context, workspaceID pgtype.UUID) (int64, error)

Returns count of tasks that are "relevant to this week": (1) completed this week, OR (2) pending/in_progress AND (due_date this week OR created this week)

func (*Queries) CreateActivityLog

func (q *Queries) CreateActivityLog(ctx context.Context, arg CreateActivityLogParams) (ActivityLog, error)

func (*Queries) CreateConcept

func (q *Queries) CreateConcept(ctx context.Context, arg CreateConceptParams) (Concept, error)

func (*Queries) CreateDecision

func (q *Queries) CreateDecision(ctx context.Context, arg CreateDecisionParams) (Decision, error)

actor_session_id / confirmed_by_human (migration 000076): caller-code-path values only, never decoded from an MCP/HTTP payload — see internal/decision.LogParams's ActorSessionID/ConfirmedByHuman doc comments.

func (*Queries) CreateGoal

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

func (*Queries) CreatePendingProposal

func (q *Queries) CreatePendingProposal(ctx context.Context, arg CreatePendingProposalParams) (PendingProposal, error)

func (*Queries) CreateProject

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

func (*Queries) CreateReviewSchedule

func (q *Queries) CreateReviewSchedule(ctx context.Context, arg CreateReviewScheduleParams) (ReviewSchedule, error)

func (*Queries) CreateTask

func (q *Queries) CreateTask(ctx context.Context, arg CreateTaskParams) (Task, error)

func (*Queries) DeleteTask

func (q *Queries) DeleteTask(ctx context.Context, arg DeleteTaskParams) error

The Go-side store wraps this in a transaction together with cleanup of work_session_tasks + work_sessions.current_task_id (the cascade behaviour previously enforced by FKs; see migration 000026 and gtd.Store.DeleteTask).

func (*Queries) GetAllPendingTasks

func (q *Queries) GetAllPendingTasks(ctx context.Context, workspaceID pgtype.UUID) ([]Task, error)

func (*Queries) GetPendingProposal

func (q *Queries) GetPendingProposal(ctx context.Context, arg GetPendingProposalParams) (PendingProposal, error)

func (*Queries) GetProjectByID

func (q *Queries) GetProjectByID(ctx context.Context, arg GetProjectByIDParams) (Project, error)

func (*Queries) GetProjectByName

func (q *Queries) GetProjectByName(ctx context.Context, arg GetProjectByNameParams) (Project, error)

func (*Queries) GetRepoByName

func (q *Queries) GetRepoByName(ctx context.Context, arg GetRepoByNameParams) (Repo, error)

func (*Queries) GetTasksByProject

func (q *Queries) GetTasksByProject(ctx context.Context, arg GetTasksByProjectParams) ([]Task, error)

func (*Queries) HandoffsSince

func (q *Queries) HandoffsSince(ctx context.Context, arg HandoffsSinceParams) ([]SessionHandoff, error)

func (*Queries) ListActiveGoals

func (q *Queries) ListActiveGoals(ctx context.Context, workspaceID pgtype.UUID) ([]Goal, error)

func (*Queries) ListActiveProjects

func (q *Queries) ListActiveProjects(ctx context.Context, workspaceID pgtype.UUID) ([]Project, error)

All queries take workspace_id as the named nullable arg @workspace_id. NULL → no filter (legacy mode); UUID → strict per-workspace scope.

func (*Queries) ListActiveRepos

func (q *Queries) ListActiveRepos(ctx context.Context, workspaceID pgtype.UUID) ([]Repo, error)

func (*Queries) ListAllDecisions

func (q *Queries) ListAllDecisions(ctx context.Context, arg ListAllDecisionsParams) ([]Decision, error)

func (*Queries) ListConcepts

func (q *Queries) ListConcepts(ctx context.Context, arg ListConceptsParams) ([]Concept, error)

func (*Queries) ListConceptsForAIReview

func (q *Queries) ListConceptsForAIReview(ctx context.Context, arg ListConceptsForAIReviewParams) ([]ListConceptsForAIReviewRow, error)

func (*Queries) ListDecisionsByProject

func (q *Queries) ListDecisionsByProject(ctx context.Context, arg ListDecisionsByProjectParams) ([]Decision, error)

func (*Queries) ListDecisionsByRepo

func (q *Queries) ListDecisionsByRepo(ctx context.Context, arg ListDecisionsByRepoParams) ([]Decision, error)

func (*Queries) ListDecisionsByTaskID

func (q *Queries) ListDecisionsByTaskID(ctx context.Context, arg ListDecisionsByTaskIDParams) ([]Decision, error)

func (*Queries) ListDecisionsFiltered

func (q *Queries) ListDecisionsFiltered(ctx context.Context, arg ListDecisionsFilteredParams) ([]Decision, error)

P3.0a Stage B: source-filtered read path for MCP list_decisions. project_id and repo_name are mutually exclusive at the application layer (decision.ListParams.Validate) — this query accepts both narg'd so a nil one is a no-op filter, but callers never pass both non-nil. Source is filtered BEFORE ORDER/LIMIT so the limit isn't consumed by rows that get excluded.

func (*Queries) ListDueReviews

func (q *Queries) ListDueReviews(ctx context.Context, arg ListDueReviewsParams) ([]ListDueReviewsRow, error)

func (*Queries) ListPendingProposals

func (q *Queries) ListPendingProposals(ctx context.Context, workspaceID pgtype.UUID) ([]PendingProposal, error)

func (*Queries) ListProjectTasksAllStatuses

func (q *Queries) ListProjectTasksAllStatuses(ctx context.Context, arg ListProjectTasksAllStatusesParams) ([]Task, error)

All-statuses variant of GetTasksByProject. Used by the ProjectDetailPage to render both the "open" and the "completed/cancelled" sections; the default GetTasksByProject query stays active-only so existing GTD list pages don't regress. Ordering: newest activity first via COALESCE(updated_at, created_at) DESC so completed rows surface in roughly the order they were finished.

func (*Queries) ResolveHandoff

func (q *Queries) ResolveHandoff(ctx context.Context, arg ResolveHandoffParams) (int64, error)

func (*Queries) ResolvePendingProposal

func (q *Queries) ResolvePendingProposal(ctx context.Context, arg ResolvePendingProposalParams) (PendingProposal, error)

func (*Queries) ReviewedSince

func (q *Queries) ReviewedSince(ctx context.Context, arg ReviewedSinceParams) ([]ReviewedSinceRow, error)

func (*Queries) SetTaskVisionItemID

func (q *Queries) SetTaskVisionItemID(ctx context.Context, arg SetTaskVisionItemIDParams) (Task, error)

func (*Queries) UpdateConceptStatus

func (q *Queries) UpdateConceptStatus(ctx context.Context, arg UpdateConceptStatusParams) (Concept, error)

func (*Queries) UpdateGoal

func (q *Queries) UpdateGoal(ctx context.Context, arg UpdateGoalParams) (Goal, error)

func (*Queries) UpdateKnowledgeEmbedding

func (q *Queries) UpdateKnowledgeEmbedding(ctx context.Context, arg UpdateKnowledgeEmbeddingParams) error

func (*Queries) UpdateProject

func (q *Queries) UpdateProject(ctx context.Context, arg UpdateProjectParams) (Project, error)

func (*Queries) UpdateProjectStatus

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

func (*Queries) UpdateReviewSchedule

func (q *Queries) UpdateReviewSchedule(ctx context.Context, arg UpdateReviewScheduleParams) (ReviewSchedule, error)

func (*Queries) UpdateTaskStatus

func (q *Queries) UpdateTaskStatus(ctx context.Context, arg UpdateTaskStatusParams) (Task, error)

func (*Queries) UpsertRepo

func (q *Queries) UpsertRepo(ctx context.Context, arg UpsertRepoParams) (Repo, error)

path/description/language/current_branch/next_planned_step are presence-aware (Ω6, 2026-08-20-mcp-surface-spec.md): the CASE checks the bound PARAMETER ($2/$3/$4/$5/$7), not EXCLUDED.<col> (which post-INSERT is never NULL — it's whatever the VALUES clause carried). NULL means the caller omitted the field (preserve stored value); a non-NULL value (including "") means an explicit set. Without this, every sync_repo call that didn't re-specify a field silently wiped it. known_issues already had this protection.

func (*Queries) WithTx

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

type Reflection

type Reflection struct {
	ID                uuid.UUID          `json:"id"`
	WorkspaceID       pgtype.UUID        `json:"workspace_id"`
	Type              string             `json:"type"`
	RelatedEntityType pgtype.Text        `json:"related_entity_type"`
	RelatedEntityID   pgtype.UUID        `json:"related_entity_id"`
	Summary           string             `json:"summary"`
	Insights          []byte             `json:"insights"`
	PatternsDetected  []byte             `json:"patterns_detected"`
	SuggestedActions  []byte             `json:"suggested_actions"`
	Confidence        float64            `json:"confidence"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
}

Persisted AI reflection records; 180-day retention via the scheduled daily-reflection-prune job (DELETE WHERE created_at < NOW() - INTERVAL '180 days') per backend-security-design.md §1.3.

type Repo

type Repo struct {
	ID              uuid.UUID          `json:"id"`
	Name            string             `json:"name"`
	Path            pgtype.Text        `json:"path"`
	Description     pgtype.Text        `json:"description"`
	Language        pgtype.Text        `json:"language"`
	Status          string             `json:"status"`
	CurrentBranch   pgtype.Text        `json:"current_branch"`
	KnownIssues     []string           `json:"known_issues"`
	NextPlannedStep pgtype.Text        `json:"next_planned_step"`
	LastActivity    pgtype.Timestamptz `json:"last_activity"`
	CreatedAt       pgtype.Timestamptz `json:"created_at"`
	UpdatedAt       pgtype.Timestamptz `json:"updated_at"`
	WorkspaceID     pgtype.UUID        `json:"workspace_id"`
}

type ResolveHandoffParams

type ResolveHandoffParams struct {
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type ResolvePendingProposalParams

type ResolvePendingProposalParams struct {
	Status      string      `json:"status"`
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type ReviewSchedule

type ReviewSchedule struct {
	ID           uuid.UUID          `json:"id"`
	ConceptID    uuid.UUID          `json:"concept_id"`
	Stability    float64            `json:"stability"`
	Difficulty   float64            `json:"difficulty"`
	DueDate      pgtype.Timestamptz `json:"due_date"`
	LastReviewAt pgtype.Timestamptz `json:"last_review_at"`
	ReviewCount  int32              `json:"review_count"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
	WorkspaceID  pgtype.UUID        `json:"workspace_id"`
}

type ReviewedSinceParams

type ReviewedSinceParams struct {
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Since       pgtype.Timestamptz `json:"since"`
	LimitN      int32              `json:"limit_n"`
}

type ReviewedSinceRow

type ReviewedSinceRow struct {
	ID      uuid.UUID          `json:"id"`
	Title   string             `json:"title"`
	DueDate pgtype.Timestamptz `json:"due_date"`
}

type SessionHandoff

type SessionHandoff struct {
	ID                uuid.UUID          `json:"id"`
	ProjectID         pgtype.UUID        `json:"project_id"`
	RepoName          pgtype.Text        `json:"repo_name"`
	Intent            string             `json:"intent"`
	ContextSummary    pgtype.Text        `json:"context_summary"`
	ResolvedAt        pgtype.Timestamptz `json:"resolved_at"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
	WorkspaceID       pgtype.UUID        `json:"workspace_id"`
	SummaryText       pgtype.Text        `json:"summary_text"`
	Embedding         []byte             `json:"embedding"`
	NextActions       []byte             `json:"next_actions"`
	EmbeddingProvider pgtype.Text        `json:"embedding_provider"`
	EmbeddingModel    pgtype.Text        `json:"embedding_model"`
	EmbeddingDim      pgtype.Int4        `json:"embedding_dim"`
}

type SetTaskVisionItemIDParams

type SetTaskVisionItemIDParams struct {
	VisionItemID pgtype.UUID `json:"vision_item_id"`
	ID           uuid.UUID   `json:"id"`
	WorkspaceID  pgtype.UUID `json:"workspace_id"`
}

type Skill

type Skill struct {
	ID                    uuid.UUID   `json:"id"`
	WorkspaceID           pgtype.UUID `json:"workspace_id"`
	Name                  string      `json:"name"`
	Description           string      `json:"description"`
	Triggers              []byte      `json:"triggers"`
	Steps                 []byte      `json:"steps"`
	FailureModes          []byte      `json:"failure_modes"`
	VerificationChecklist []byte      `json:"verification_checklist"`
	Examples              []byte      `json:"examples"`
	// Code-layer refs to memory_atoms.id; no FK per project red-line #9
	SourceAtomIds []byte             `json:"source_atom_ids"`
	SuccessCount  int32              `json:"success_count"`
	FailureCount  int32              `json:"failure_count"`
	LastUsedAt    pgtype.Timestamptz `json:"last_used_at"`
	CreatedAt     pgtype.Timestamptz `json:"created_at"`
	UpdatedAt     pgtype.Timestamptz `json:"updated_at"`
}

Curated skill library — intentionally no TTL; rows accumulate by design (explicit extract_skill only).

type Task

type Task struct {
	ID           uuid.UUID          `json:"id"`
	ProjectID    pgtype.UUID        `json:"project_id"`
	Title        string             `json:"title"`
	Description  pgtype.Text        `json:"description"`
	Status       string             `json:"status"`
	Priority     int32              `json:"priority"`
	Assignee     pgtype.Text        `json:"assignee"`
	DueDate      pgtype.Timestamptz `json:"due_date"`
	Artifact     pgtype.Text        `json:"artifact"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
	WorkspaceID  pgtype.UUID        `json:"workspace_id"`
	Importance   pgtype.Int2        `json:"importance"`
	Context      pgtype.Text        `json:"context"`
	Checklist    []byte             `json:"checklist"`
	Kind         string             `json:"kind"`
	BranchName   pgtype.Text        `json:"branch_name"`
	PRUrl        pgtype.Text        `json:"pr_url"`
	CommitSHAs   []string           `json:"commit_shas"`
	VisionItemID pgtype.UUID        `json:"vision_item_id"`
}

type UpdateConceptStatusParams

type UpdateConceptStatusParams struct {
	Status string    `json:"status"`
	ID     uuid.UUID `json:"id"`
}

type UpdateGoalParams

type UpdateGoalParams struct {
	Title       string             `json:"title"`
	Description pgtype.Text        `json:"description"`
	Area        pgtype.Text        `json:"area"`
	Status      string             `json:"status"`
	DueDate     pgtype.Timestamptz `json:"due_date"`
	ID          uuid.UUID          `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
}

type UpdateKnowledgeEmbeddingParams

type UpdateKnowledgeEmbeddingParams struct {
	ID        uuid.UUID       `json:"id"`
	Embedding pgvector.Vector `json:"embedding"`
}

type UpdateProjectParams

type UpdateProjectParams struct {
	Title       string      `json:"title"`
	Description pgtype.Text `json:"description"`
	Area        string      `json:"area"`
	Priority    int32       `json:"priority"`
	Status      string      `json:"status"`
	GoalID      pgtype.UUID `json:"goal_id"`
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type UpdateProjectStatusParams

type UpdateProjectStatusParams struct {
	Status      string      `json:"status"`
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type UpdateReviewScheduleParams

type UpdateReviewScheduleParams struct {
	Stability   float64            `json:"stability"`
	Difficulty  float64            `json:"difficulty"`
	DueDate     pgtype.Timestamptz `json:"due_date"`
	ID          uuid.UUID          `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
}

type UpdateTaskStatusParams

type UpdateTaskStatusParams struct {
	Status      string      `json:"status"`
	ID          uuid.UUID   `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
}

type UpsertRepoParams

type UpsertRepoParams struct {
	Name            string             `json:"name"`
	Path            pgtype.Text        `json:"path"`
	Description     pgtype.Text        `json:"description"`
	Language        pgtype.Text        `json:"language"`
	CurrentBranch   pgtype.Text        `json:"current_branch"`
	KnownIssues     []string           `json:"known_issues"`
	NextPlannedStep pgtype.Text        `json:"next_planned_step"`
	LastActivity    pgtype.Timestamptz `json:"last_activity"`
	WorkspaceID     pgtype.UUID        `json:"workspace_id"`
}

type VisionItem

type VisionItem struct {
	ID               uuid.UUID          `json:"id"`
	WorkspaceID      pgtype.UUID        `json:"workspace_id"`
	RepoName         pgtype.Text        `json:"repo_name"`
	ProjectID        pgtype.UUID        `json:"project_id"`
	Title            string             `json:"title"`
	WhyBlocked       string             `json:"why_blocked"`
	DependsOn        []byte             `json:"depends_on"`
	ParentInitiative pgtype.Text        `json:"parent_initiative"`
	Status           string             `json:"status"`
	ContextMd        pgtype.Text        `json:"context_md"`
	PromotedTaskID   pgtype.UUID        `json:"promoted_task_id"`
	LastDiscussedAt  pgtype.Timestamptz `json:"last_discussed_at"`
	CreatedAt        pgtype.Timestamptz `json:"created_at"`
}

type WorkSession

type WorkSession struct {
	ID                        uuid.UUID          `json:"id"`
	WorkspaceID               uuid.UUID          `json:"workspace_id"`
	RepoName                  string             `json:"repo_name"`
	ProjectID                 pgtype.UUID        `json:"project_id"`
	Title                     string             `json:"title"`
	Goal                      string             `json:"goal"`
	Status                    string             `json:"status"`
	Source                    string             `json:"source"`
	ConfirmedPlanID           pgtype.UUID        `json:"confirmed_plan_id"`
	CurrentTaskID             pgtype.UUID        `json:"current_task_id"`
	FinalSummary              pgtype.Text        `json:"final_summary"`
	StartedAt                 pgtype.Timestamptz `json:"started_at"`
	LastCheckpointAt          pgtype.Timestamptz `json:"last_checkpoint_at"`
	CompletedAt               pgtype.Timestamptz `json:"completed_at"`
	CreatedAt                 pgtype.Timestamptz `json:"created_at"`
	UpdatedAt                 pgtype.Timestamptz `json:"updated_at"`
	ContextPackID             pgtype.UUID        `json:"context_pack_id"`
	VerificationStatus        pgtype.Text        `json:"verification_status"`
	VerificationCommand       pgtype.Text        `json:"verification_command"`
	VerificationOutputExcerpt pgtype.Text        `json:"verification_output_excerpt"`
	OutcomeID                 pgtype.UUID        `json:"outcome_id"`
	FinalResult               pgtype.Text        `json:"final_result"`
	BranchName                pgtype.Text        `json:"branch_name"`
}

type WorkSessionEvidence

type WorkSessionEvidence struct {
	ID            uuid.UUID          `json:"id"`
	WorkspaceID   pgtype.UUID        `json:"workspace_id"`
	SessionID     uuid.UUID          `json:"session_id"`
	EvidenceType  string             `json:"evidence_type"`
	Status        string             `json:"status"`
	Command       pgtype.Text        `json:"command"`
	Artifact      pgtype.Text        `json:"artifact"`
	OutputExcerpt pgtype.Text        `json:"output_excerpt"`
	CreatedAt     pgtype.Timestamptz `json:"created_at"`
}

type WorkSessionTask

type WorkSessionTask struct {
	SessionID uuid.UUID          `json:"session_id"`
	TaskID    uuid.UUID          `json:"task_id"`
	Role      string             `json:"role"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type WorkspacePreference

type WorkspacePreference struct {
	WorkspaceID     uuid.UUID          `json:"workspace_id"`
	ModelPreference string             `json:"model_preference"`
	CreatedAt       pgtype.Timestamptz `json:"created_at"`
	UpdatedAt       pgtype.Timestamptz `json:"updated_at"`
}

Jump to

Keyboard shortcuts

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