// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.31.1

package db

import (
	"net/netip"

	"github.com/jackc/pgx/v5/pgtype"
)

type ActivityLog struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	IssueID     pgtype.UUID        `json:"issue_id"`
	ActorType   pgtype.Text        `json:"actor_type"`
	ActorID     pgtype.UUID        `json:"actor_id"`
	Action      string             `json:"action"`
	Details     []byte             `json:"details"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type Agent struct {
	ID                 pgtype.UUID        `json:"id"`
	WorkspaceID        pgtype.UUID        `json:"workspace_id"`
	Name               string             `json:"name"`
	AvatarUrl          pgtype.Text        `json:"avatar_url"`
	RuntimeMode        string             `json:"runtime_mode"`
	RuntimeConfig      []byte             `json:"runtime_config"`
	Visibility         string             `json:"visibility"`
	Status             string             `json:"status"`
	MaxConcurrentTasks int32              `json:"max_concurrent_tasks"`
	OwnerID            pgtype.UUID        `json:"owner_id"`
	CreatedAt          pgtype.Timestamptz `json:"created_at"`
	UpdatedAt          pgtype.Timestamptz `json:"updated_at"`
	Description        string             `json:"description"`
	RuntimeID          pgtype.UUID        `json:"runtime_id"`
	Instructions       string             `json:"instructions"`
	ArchivedAt         pgtype.Timestamptz `json:"archived_at"`
	ArchivedBy         pgtype.UUID        `json:"archived_by"`
	CustomEnv          []byte             `json:"custom_env"`
	CustomArgs         []byte             `json:"custom_args"`
	McpConfig          []byte             `json:"mcp_config"`
	Model              pgtype.Text        `json:"model"`
	ThinkingLevel      pgtype.Text        `json:"thinking_level"`
}

type AgentRuntime struct {
	ID             pgtype.UUID        `json:"id"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	DaemonID       pgtype.Text        `json:"daemon_id"`
	Name           string             `json:"name"`
	RuntimeMode    string             `json:"runtime_mode"`
	Provider       string             `json:"provider"`
	Status         string             `json:"status"`
	DeviceInfo     string             `json:"device_info"`
	Metadata       []byte             `json:"metadata"`
	LastSeenAt     pgtype.Timestamptz `json:"last_seen_at"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
	OwnerID        pgtype.UUID        `json:"owner_id"`
	LegacyDaemonID pgtype.Text        `json:"legacy_daemon_id"`
	Visibility     string             `json:"visibility"`
}

type AgentSkill struct {
	AgentID   pgtype.UUID        `json:"agent_id"`
	SkillID   pgtype.UUID        `json:"skill_id"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type AgentTaskQueue struct {
	ID                pgtype.UUID        `json:"id"`
	AgentID           pgtype.UUID        `json:"agent_id"`
	IssueID           pgtype.UUID        `json:"issue_id"`
	Status            string             `json:"status"`
	Priority          int32              `json:"priority"`
	DispatchedAt      pgtype.Timestamptz `json:"dispatched_at"`
	StartedAt         pgtype.Timestamptz `json:"started_at"`
	CompletedAt       pgtype.Timestamptz `json:"completed_at"`
	Result            []byte             `json:"result"`
	Error             pgtype.Text        `json:"error"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
	Context           []byte             `json:"context"`
	RuntimeID         pgtype.UUID        `json:"runtime_id"`
	SessionID         pgtype.Text        `json:"session_id"`
	WorkDir           pgtype.Text        `json:"work_dir"`
	TriggerCommentID  pgtype.UUID        `json:"trigger_comment_id"`
	ChatSessionID     pgtype.UUID        `json:"chat_session_id"`
	AutopilotRunID    pgtype.UUID        `json:"autopilot_run_id"`
	Attempt           int32              `json:"attempt"`
	MaxAttempts       int32              `json:"max_attempts"`
	ParentTaskID      pgtype.UUID        `json:"parent_task_id"`
	FailureReason     pgtype.Text        `json:"failure_reason"`
	TriggerSummary    pgtype.Text        `json:"trigger_summary"`
	ForceFreshSession bool               `json:"force_fresh_session"`
	IsLeaderTask      bool               `json:"is_leader_task"`
	WaitReason        pgtype.Text        `json:"wait_reason"`
}

type Attachment struct {
	ID            pgtype.UUID        `json:"id"`
	WorkspaceID   pgtype.UUID        `json:"workspace_id"`
	IssueID       pgtype.UUID        `json:"issue_id"`
	CommentID     pgtype.UUID        `json:"comment_id"`
	UploaderType  string             `json:"uploader_type"`
	UploaderID    pgtype.UUID        `json:"uploader_id"`
	Filename      string             `json:"filename"`
	Url           string             `json:"url"`
	ContentType   string             `json:"content_type"`
	SizeBytes     int64              `json:"size_bytes"`
	CreatedAt     pgtype.Timestamptz `json:"created_at"`
	ChatSessionID pgtype.UUID        `json:"chat_session_id"`
	ChatMessageID pgtype.UUID        `json:"chat_message_id"`
}

type Autopilot struct {
	ID                 pgtype.UUID        `json:"id"`
	WorkspaceID        pgtype.UUID        `json:"workspace_id"`
	Title              string             `json:"title"`
	Description        pgtype.Text        `json:"description"`
	AssigneeID         pgtype.UUID        `json:"assignee_id"`
	Status             string             `json:"status"`
	ExecutionMode      string             `json:"execution_mode"`
	IssueTitleTemplate pgtype.Text        `json:"issue_title_template"`
	CreatedByType      string             `json:"created_by_type"`
	CreatedByID        pgtype.UUID        `json:"created_by_id"`
	LastRunAt          pgtype.Timestamptz `json:"last_run_at"`
	CreatedAt          pgtype.Timestamptz `json:"created_at"`
	UpdatedAt          pgtype.Timestamptz `json:"updated_at"`
	AssigneeType       string             `json:"assignee_type"`
	ProjectID          pgtype.UUID        `json:"project_id"`
}

type AutopilotRun struct {
	ID             pgtype.UUID        `json:"id"`
	AutopilotID    pgtype.UUID        `json:"autopilot_id"`
	TriggerID      pgtype.UUID        `json:"trigger_id"`
	Source         string             `json:"source"`
	Status         string             `json:"status"`
	IssueID        pgtype.UUID        `json:"issue_id"`
	TaskID         pgtype.UUID        `json:"task_id"`
	TriggeredAt    pgtype.Timestamptz `json:"triggered_at"`
	CompletedAt    pgtype.Timestamptz `json:"completed_at"`
	FailureReason  pgtype.Text        `json:"failure_reason"`
	TriggerPayload []byte             `json:"trigger_payload"`
	Result         []byte             `json:"result"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	SquadID        pgtype.UUID        `json:"squad_id"`
}

type AutopilotTrigger struct {
	ID             pgtype.UUID        `json:"id"`
	AutopilotID    pgtype.UUID        `json:"autopilot_id"`
	Kind           string             `json:"kind"`
	Enabled        bool               `json:"enabled"`
	CronExpression pgtype.Text        `json:"cron_expression"`
	Timezone       pgtype.Text        `json:"timezone"`
	NextRunAt      pgtype.Timestamptz `json:"next_run_at"`
	WebhookToken   pgtype.Text        `json:"webhook_token"`
	Label          pgtype.Text        `json:"label"`
	LastFiredAt    pgtype.Timestamptz `json:"last_fired_at"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
	Provider       string             `json:"provider"`
	SigningSecret  pgtype.Text        `json:"signing_secret"`
	EventFilters   []byte             `json:"event_filters"`
}

type ChatMessage struct {
	ID            pgtype.UUID        `json:"id"`
	ChatSessionID pgtype.UUID        `json:"chat_session_id"`
	Role          string             `json:"role"`
	Content       string             `json:"content"`
	TaskID        pgtype.UUID        `json:"task_id"`
	CreatedAt     pgtype.Timestamptz `json:"created_at"`
	FailureReason pgtype.Text        `json:"failure_reason"`
	ElapsedMs     pgtype.Int8        `json:"elapsed_ms"`
}

type ChatSession struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	AgentID     pgtype.UUID        `json:"agent_id"`
	CreatorID   pgtype.UUID        `json:"creator_id"`
	Title       string             `json:"title"`
	SessionID   pgtype.Text        `json:"session_id"`
	WorkDir     pgtype.Text        `json:"work_dir"`
	Status      string             `json:"status"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
	UnreadSince pgtype.Timestamptz `json:"unread_since"`
	RuntimeID   pgtype.UUID        `json:"runtime_id"`
}

type Comment struct {
	ID             pgtype.UUID        `json:"id"`
	IssueID        pgtype.UUID        `json:"issue_id"`
	AuthorType     string             `json:"author_type"`
	AuthorID       pgtype.UUID        `json:"author_id"`
	Content        string             `json:"content"`
	Type           string             `json:"type"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
	ParentID       pgtype.UUID        `json:"parent_id"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	ResolvedAt     pgtype.Timestamptz `json:"resolved_at"`
	ResolvedByType pgtype.Text        `json:"resolved_by_type"`
	ResolvedByID   pgtype.UUID        `json:"resolved_by_id"`
}

type CommentReaction struct {
	ID          pgtype.UUID        `json:"id"`
	CommentID   pgtype.UUID        `json:"comment_id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	ActorType   string             `json:"actor_type"`
	ActorID     pgtype.UUID        `json:"actor_id"`
	Emoji       string             `json:"emoji"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type ContactSalesInquiry struct {
	ID              pgtype.UUID        `json:"id"`
	FirstName       string             `json:"first_name"`
	LastName        string             `json:"last_name"`
	BusinessEmail   string             `json:"business_email"`
	CompanyName     string             `json:"company_name"`
	CompanySize     string             `json:"company_size"`
	CountryRegion   string             `json:"country_region"`
	UseCase         string             `json:"use_case"`
	Goals           string             `json:"goals"`
	ConsentOutreach bool               `json:"consent_outreach"`
	ConsentUpdates  bool               `json:"consent_updates"`
	SubmitterIp     *netip.Addr        `json:"submitter_ip"`
	UserAgent       string             `json:"user_agent"`
	CreatedAt       pgtype.Timestamptz `json:"created_at"`
}

type DaemonConnection struct {
	ID              pgtype.UUID        `json:"id"`
	AgentID         pgtype.UUID        `json:"agent_id"`
	DaemonID        string             `json:"daemon_id"`
	Status          string             `json:"status"`
	LastHeartbeatAt pgtype.Timestamptz `json:"last_heartbeat_at"`
	RuntimeInfo     []byte             `json:"runtime_info"`
	CreatedAt       pgtype.Timestamptz `json:"created_at"`
	UpdatedAt       pgtype.Timestamptz `json:"updated_at"`
}

type DaemonToken struct {
	ID          pgtype.UUID        `json:"id"`
	TokenHash   string             `json:"token_hash"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	DaemonID    string             `json:"daemon_id"`
	ExpiresAt   pgtype.Timestamptz `json:"expires_at"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type Feedback struct {
	ID          pgtype.UUID        `json:"id"`
	UserID      pgtype.UUID        `json:"user_id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Message     string             `json:"message"`
	Metadata    []byte             `json:"metadata"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type GithubInstallation struct {
	ID               pgtype.UUID        `json:"id"`
	WorkspaceID      pgtype.UUID        `json:"workspace_id"`
	InstallationID   int64              `json:"installation_id"`
	AccountLogin     string             `json:"account_login"`
	AccountType      string             `json:"account_type"`
	AccountAvatarUrl pgtype.Text        `json:"account_avatar_url"`
	ConnectedByID    pgtype.UUID        `json:"connected_by_id"`
	CreatedAt        pgtype.Timestamptz `json:"created_at"`
	UpdatedAt        pgtype.Timestamptz `json:"updated_at"`
}

type GithubPullRequest struct {
	ID              pgtype.UUID        `json:"id"`
	WorkspaceID     pgtype.UUID        `json:"workspace_id"`
	InstallationID  int64              `json:"installation_id"`
	RepoOwner       string             `json:"repo_owner"`
	RepoName        string             `json:"repo_name"`
	PrNumber        int32              `json:"pr_number"`
	Title           string             `json:"title"`
	State           string             `json:"state"`
	HtmlUrl         string             `json:"html_url"`
	Branch          pgtype.Text        `json:"branch"`
	AuthorLogin     pgtype.Text        `json:"author_login"`
	AuthorAvatarUrl pgtype.Text        `json:"author_avatar_url"`
	MergedAt        pgtype.Timestamptz `json:"merged_at"`
	ClosedAt        pgtype.Timestamptz `json:"closed_at"`
	PrCreatedAt     pgtype.Timestamptz `json:"pr_created_at"`
	PrUpdatedAt     pgtype.Timestamptz `json:"pr_updated_at"`
	CreatedAt       pgtype.Timestamptz `json:"created_at"`
	UpdatedAt       pgtype.Timestamptz `json:"updated_at"`
	HeadSha         string             `json:"head_sha"`
	MergeableState  pgtype.Text        `json:"mergeable_state"`
	Additions       int32              `json:"additions"`
	Deletions       int32              `json:"deletions"`
	ChangedFiles    int32              `json:"changed_files"`
}

type GithubPullRequestCheckSuite struct {
	PrID       pgtype.UUID        `json:"pr_id"`
	SuiteID    int64              `json:"suite_id"`
	HeadSha    string             `json:"head_sha"`
	AppID      int64              `json:"app_id"`
	Conclusion pgtype.Text        `json:"conclusion"`
	Status     string             `json:"status"`
	UpdatedAt  pgtype.Timestamptz `json:"updated_at"`
}

type InboxItem struct {
	ID            pgtype.UUID        `json:"id"`
	WorkspaceID   pgtype.UUID        `json:"workspace_id"`
	RecipientType string             `json:"recipient_type"`
	RecipientID   pgtype.UUID        `json:"recipient_id"`
	Type          string             `json:"type"`
	Severity      string             `json:"severity"`
	IssueID       pgtype.UUID        `json:"issue_id"`
	Title         string             `json:"title"`
	Body          pgtype.Text        `json:"body"`
	Read          bool               `json:"read"`
	Archived      bool               `json:"archived"`
	CreatedAt     pgtype.Timestamptz `json:"created_at"`
	ActorType     pgtype.Text        `json:"actor_type"`
	ActorID       pgtype.UUID        `json:"actor_id"`
	Details       []byte             `json:"details"`
}

type Issue struct {
	ID                 pgtype.UUID        `json:"id"`
	WorkspaceID        pgtype.UUID        `json:"workspace_id"`
	Title              string             `json:"title"`
	Description        pgtype.Text        `json:"description"`
	Status             string             `json:"status"`
	Priority           string             `json:"priority"`
	AssigneeType       pgtype.Text        `json:"assignee_type"`
	AssigneeID         pgtype.UUID        `json:"assignee_id"`
	CreatorType        string             `json:"creator_type"`
	CreatorID          pgtype.UUID        `json:"creator_id"`
	ParentIssueID      pgtype.UUID        `json:"parent_issue_id"`
	AcceptanceCriteria []byte             `json:"acceptance_criteria"`
	ContextRefs        []byte             `json:"context_refs"`
	Position           float64            `json:"position"`
	DueDate            pgtype.Date        `json:"due_date"`
	CreatedAt          pgtype.Timestamptz `json:"created_at"`
	UpdatedAt          pgtype.Timestamptz `json:"updated_at"`
	Number             int32              `json:"number"`
	ProjectID          pgtype.UUID        `json:"project_id"`
	OriginType         pgtype.Text        `json:"origin_type"`
	OriginID           pgtype.UUID        `json:"origin_id"`
	FirstExecutedAt    pgtype.Timestamptz `json:"first_executed_at"`
	StartDate          pgtype.Date        `json:"start_date"`
	Metadata           []byte             `json:"metadata"`
}

type IssueDependency struct {
	ID               pgtype.UUID `json:"id"`
	IssueID          pgtype.UUID `json:"issue_id"`
	DependsOnIssueID pgtype.UUID `json:"depends_on_issue_id"`
	Type             string      `json:"type"`
}

type IssueLabel struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Name        string             `json:"name"`
	Color       string             `json:"color"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

type IssuePullRequest struct {
	IssueID       pgtype.UUID        `json:"issue_id"`
	PullRequestID pgtype.UUID        `json:"pull_request_id"`
	LinkedByType  pgtype.Text        `json:"linked_by_type"`
	LinkedByID    pgtype.UUID        `json:"linked_by_id"`
	LinkedAt      pgtype.Timestamptz `json:"linked_at"`
	CloseIntent   bool               `json:"close_intent"`
}

type IssueReaction struct {
	ID          pgtype.UUID        `json:"id"`
	IssueID     pgtype.UUID        `json:"issue_id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	ActorType   string             `json:"actor_type"`
	ActorID     pgtype.UUID        `json:"actor_id"`
	Emoji       string             `json:"emoji"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type IssueSubscriber struct {
	IssueID   pgtype.UUID        `json:"issue_id"`
	UserType  string             `json:"user_type"`
	UserID    pgtype.UUID        `json:"user_id"`
	Reason    string             `json:"reason"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type IssueToLabel struct {
	IssueID pgtype.UUID `json:"issue_id"`
	LabelID pgtype.UUID `json:"label_id"`
}

type LarkBindingToken struct {
	TokenHash      string             `json:"token_hash"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	InstallationID pgtype.UUID        `json:"installation_id"`
	LarkOpenID     string             `json:"lark_open_id"`
	ExpiresAt      pgtype.Timestamptz `json:"expires_at"`
	ConsumedAt     pgtype.Timestamptz `json:"consumed_at"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
}

type LarkChatSessionBinding struct {
	ID             pgtype.UUID        `json:"id"`
	ChatSessionID  pgtype.UUID        `json:"chat_session_id"`
	InstallationID pgtype.UUID        `json:"installation_id"`
	LarkChatID     string             `json:"lark_chat_id"`
	LarkChatType   string             `json:"lark_chat_type"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
}

type LarkInboundAudit struct {
	ID             pgtype.UUID        `json:"id"`
	InstallationID pgtype.UUID        `json:"installation_id"`
	LarkChatID     pgtype.Text        `json:"lark_chat_id"`
	EventType      string             `json:"event_type"`
	LarkEventID    pgtype.Text        `json:"lark_event_id"`
	LarkMessageID  pgtype.Text        `json:"lark_message_id"`
	DropReason     string             `json:"drop_reason"`
	ReceivedAt     pgtype.Timestamptz `json:"received_at"`
}

type LarkInboundMessageDedup struct {
	InstallationID pgtype.UUID        `json:"installation_id"`
	MessageID      string             `json:"message_id"`
	ReceivedAt     pgtype.Timestamptz `json:"received_at"`
	ProcessedAt    pgtype.Timestamptz `json:"processed_at"`
	ClaimToken     pgtype.UUID        `json:"claim_token"`
}

type LarkInstallation struct {
	ID                 pgtype.UUID        `json:"id"`
	WorkspaceID        pgtype.UUID        `json:"workspace_id"`
	AgentID            pgtype.UUID        `json:"agent_id"`
	AppID              string             `json:"app_id"`
	AppSecretEncrypted []byte             `json:"app_secret_encrypted"`
	TenantKey          pgtype.Text        `json:"tenant_key"`
	BotOpenID          string             `json:"bot_open_id"`
	InstallerUserID    pgtype.UUID        `json:"installer_user_id"`
	Status             string             `json:"status"`
	WsLeaseToken       pgtype.Text        `json:"ws_lease_token"`
	WsLeaseExpiresAt   pgtype.Timestamptz `json:"ws_lease_expires_at"`
	InstalledAt        pgtype.Timestamptz `json:"installed_at"`
	CreatedAt          pgtype.Timestamptz `json:"created_at"`
	UpdatedAt          pgtype.Timestamptz `json:"updated_at"`
	BotUnionID         pgtype.Text        `json:"bot_union_id"`
	Region             string             `json:"region"`
}

type LarkOutboundCardMessage struct {
	ID                pgtype.UUID        `json:"id"`
	ChatSessionID     pgtype.UUID        `json:"chat_session_id"`
	TaskID            pgtype.UUID        `json:"task_id"`
	LarkChatID        string             `json:"lark_chat_id"`
	LarkCardMessageID string             `json:"lark_card_message_id"`
	Status            string             `json:"status"`
	LastPatchedAt     pgtype.Timestamptz `json:"last_patched_at"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
}

type LarkUserBinding struct {
	ID             pgtype.UUID        `json:"id"`
	WorkspaceID    pgtype.UUID        `json:"workspace_id"`
	MulticaUserID  pgtype.UUID        `json:"multica_user_id"`
	InstallationID pgtype.UUID        `json:"installation_id"`
	LarkOpenID     string             `json:"lark_open_id"`
	UnionID        pgtype.Text        `json:"union_id"`
	BoundAt        pgtype.Timestamptz `json:"bound_at"`
}

type Member struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	UserID      pgtype.UUID        `json:"user_id"`
	Role        string             `json:"role"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type NotificationPreference struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	UserID      pgtype.UUID        `json:"user_id"`
	Preferences []byte             `json:"preferences"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

type PersonalAccessToken struct {
	ID          pgtype.UUID        `json:"id"`
	UserID      pgtype.UUID        `json:"user_id"`
	Name        string             `json:"name"`
	TokenHash   string             `json:"token_hash"`
	TokenPrefix string             `json:"token_prefix"`
	ExpiresAt   pgtype.Timestamptz `json:"expires_at"`
	LastUsedAt  pgtype.Timestamptz `json:"last_used_at"`
	Revoked     bool               `json:"revoked"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type PinnedItem struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	UserID      pgtype.UUID        `json:"user_id"`
	ItemType    string             `json:"item_type"`
	ItemID      pgtype.UUID        `json:"item_id"`
	Position    float64            `json:"position"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type Project struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Title       string             `json:"title"`
	Description pgtype.Text        `json:"description"`
	Icon        pgtype.Text        `json:"icon"`
	Status      string             `json:"status"`
	LeadType    pgtype.Text        `json:"lead_type"`
	LeadID      pgtype.UUID        `json:"lead_id"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
	Priority    string             `json:"priority"`
}

type ProjectResource struct {
	ID           pgtype.UUID        `json:"id"`
	ProjectID    pgtype.UUID        `json:"project_id"`
	WorkspaceID  pgtype.UUID        `json:"workspace_id"`
	ResourceType string             `json:"resource_type"`
	ResourceRef  []byte             `json:"resource_ref"`
	Label        pgtype.Text        `json:"label"`
	Position     int32              `json:"position"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	CreatedBy    pgtype.UUID        `json:"created_by"`
}

type Skill struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Name        string             `json:"name"`
	Description string             `json:"description"`
	Content     string             `json:"content"`
	Config      []byte             `json:"config"`
	CreatedBy   pgtype.UUID        `json:"created_by"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

type SkillFile struct {
	ID        pgtype.UUID        `json:"id"`
	SkillID   pgtype.UUID        `json:"skill_id"`
	Path      string             `json:"path"`
	Content   string             `json:"content"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	UpdatedAt pgtype.Timestamptz `json:"updated_at"`
}

type Squad struct {
	ID           pgtype.UUID        `json:"id"`
	WorkspaceID  pgtype.UUID        `json:"workspace_id"`
	Name         string             `json:"name"`
	Description  string             `json:"description"`
	LeaderID     pgtype.UUID        `json:"leader_id"`
	CreatorID    pgtype.UUID        `json:"creator_id"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
	ArchivedAt   pgtype.Timestamptz `json:"archived_at"`
	ArchivedBy   pgtype.UUID        `json:"archived_by"`
	AvatarUrl    pgtype.Text        `json:"avatar_url"`
	Instructions string             `json:"instructions"`
}

type SquadMember struct {
	ID         pgtype.UUID        `json:"id"`
	SquadID    pgtype.UUID        `json:"squad_id"`
	MemberType string             `json:"member_type"`
	MemberID   pgtype.UUID        `json:"member_id"`
	Role       string             `json:"role"`
	CreatedAt  pgtype.Timestamptz `json:"created_at"`
}

type TaskMessage struct {
	ID        pgtype.UUID        `json:"id"`
	TaskID    pgtype.UUID        `json:"task_id"`
	Seq       int32              `json:"seq"`
	Type      string             `json:"type"`
	Tool      pgtype.Text        `json:"tool"`
	Content   pgtype.Text        `json:"content"`
	Input     []byte             `json:"input"`
	Output    pgtype.Text        `json:"output"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type TaskToken struct {
	ID          pgtype.UUID        `json:"id"`
	TokenHash   string             `json:"token_hash"`
	TaskID      pgtype.UUID        `json:"task_id"`
	AgentID     pgtype.UUID        `json:"agent_id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	UserID      pgtype.UUID        `json:"user_id"`
	ExpiresAt   pgtype.Timestamptz `json:"expires_at"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type TaskUsage struct {
	ID               pgtype.UUID        `json:"id"`
	TaskID           pgtype.UUID        `json:"task_id"`
	Provider         string             `json:"provider"`
	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"`
	CreatedAt        pgtype.Timestamptz `json:"created_at"`
	UpdatedAt        pgtype.Timestamptz `json:"updated_at"`
}

type TaskUsageHourly struct {
	BucketHour       pgtype.Timestamptz `json:"bucket_hour"`
	WorkspaceID      pgtype.UUID        `json:"workspace_id"`
	RuntimeID        pgtype.UUID        `json:"runtime_id"`
	AgentID          pgtype.UUID        `json:"agent_id"`
	ProjectID        pgtype.UUID        `json:"project_id"`
	Provider         string             `json:"provider"`
	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"`
	TaskCount        int64              `json:"task_count"`
	EventCount       int64              `json:"event_count"`
	UpdatedAt        pgtype.Timestamptz `json:"updated_at"`
}

type TaskUsageHourlyDirty struct {
	BucketHour  pgtype.Timestamptz `json:"bucket_hour"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	RuntimeID   pgtype.UUID        `json:"runtime_id"`
	AgentID     pgtype.UUID        `json:"agent_id"`
	ProjectID   pgtype.UUID        `json:"project_id"`
	Provider    string             `json:"provider"`
	Model       string             `json:"model"`
	EnqueuedAt  pgtype.Timestamptz `json:"enqueued_at"`
}

type TaskUsageHourlyRollupState struct {
	ID                int16              `json:"id"`
	WatermarkAt       pgtype.Timestamptz `json:"watermark_at"`
	LastRunStartedAt  pgtype.Timestamptz `json:"last_run_started_at"`
	LastRunFinishedAt pgtype.Timestamptz `json:"last_run_finished_at"`
	LastRunRows       int64              `json:"last_run_rows"`
	LastError         pgtype.Text        `json:"last_error"`
}

type User struct {
	ID                      pgtype.UUID        `json:"id"`
	Name                    string             `json:"name"`
	Email                   string             `json:"email"`
	AvatarUrl               pgtype.Text        `json:"avatar_url"`
	CreatedAt               pgtype.Timestamptz `json:"created_at"`
	UpdatedAt               pgtype.Timestamptz `json:"updated_at"`
	OnboardedAt             pgtype.Timestamptz `json:"onboarded_at"`
	OnboardingQuestionnaire []byte             `json:"onboarding_questionnaire"`
	CloudWaitlistEmail      pgtype.Text        `json:"cloud_waitlist_email"`
	CloudWaitlistReason     pgtype.Text        `json:"cloud_waitlist_reason"`
	StarterContentState     pgtype.Text        `json:"starter_content_state"`
	Language                pgtype.Text        `json:"language"`
	ProfileDescription      string             `json:"profile_description"`
	// User-preferred IANA timezone for report rendering (Viewing tz). NULL means "use the browser-detected tz at render time". Affects dashboards, charts, and any "today" label shown to this user. Does not affect data materialisation — all rollups remain in UTC.
	Timezone pgtype.Text `json:"timezone"`
}

type VerificationCode struct {
	ID        pgtype.UUID        `json:"id"`
	Email     string             `json:"email"`
	Code      string             `json:"code"`
	ExpiresAt pgtype.Timestamptz `json:"expires_at"`
	Used      bool               `json:"used"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	Attempts  int32              `json:"attempts"`
}

type WebhookDelivery struct {
	ID                     pgtype.UUID        `json:"id"`
	WorkspaceID            pgtype.UUID        `json:"workspace_id"`
	AutopilotID            pgtype.UUID        `json:"autopilot_id"`
	TriggerID              pgtype.UUID        `json:"trigger_id"`
	Provider               string             `json:"provider"`
	Event                  string             `json:"event"`
	DedupeKey              pgtype.Text        `json:"dedupe_key"`
	DedupeSource           pgtype.Text        `json:"dedupe_source"`
	SignatureStatus        string             `json:"signature_status"`
	Status                 string             `json:"status"`
	AttemptCount           int32              `json:"attempt_count"`
	SelectedHeaders        []byte             `json:"selected_headers"`
	ContentType            pgtype.Text        `json:"content_type"`
	RawBody                []byte             `json:"raw_body"`
	ResponseStatus         pgtype.Int4        `json:"response_status"`
	ResponseBody           pgtype.Text        `json:"response_body"`
	AutopilotRunID         pgtype.UUID        `json:"autopilot_run_id"`
	ReplayedFromDeliveryID pgtype.UUID        `json:"replayed_from_delivery_id"`
	Error                  pgtype.Text        `json:"error"`
	ReceivedAt             pgtype.Timestamptz `json:"received_at"`
	LastAttemptAt          pgtype.Timestamptz `json:"last_attempt_at"`
	CreatedAt              pgtype.Timestamptz `json:"created_at"`
}

type Workspace struct {
	ID           pgtype.UUID        `json:"id"`
	Name         string             `json:"name"`
	Slug         string             `json:"slug"`
	Description  pgtype.Text        `json:"description"`
	Settings     []byte             `json:"settings"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
	Context      pgtype.Text        `json:"context"`
	Repos        []byte             `json:"repos"`
	IssuePrefix  string             `json:"issue_prefix"`
	IssueCounter int32              `json:"issue_counter"`
	AvatarUrl    pgtype.Text        `json:"avatar_url"`
}

type WorkspaceInvitation struct {
	ID            pgtype.UUID        `json:"id"`
	WorkspaceID   pgtype.UUID        `json:"workspace_id"`
	InviterID     pgtype.UUID        `json:"inviter_id"`
	InviteeEmail  string             `json:"invitee_email"`
	InviteeUserID pgtype.UUID        `json:"invitee_user_id"`
	Role          string             `json:"role"`
	Status        string             `json:"status"`
	CreatedAt     pgtype.Timestamptz `json:"created_at"`
	UpdatedAt     pgtype.Timestamptz `json:"updated_at"`
	ExpiresAt     pgtype.Timestamptz `json:"expires_at"`
	InviteCode    pgtype.Text        `json:"invite_code"`
}
