import type { Database as DatabaseType } from 'better-sqlite3'; export interface ArtifactRow { id: number; topic_id: number; artifact_class: string; kind: string; title: string; status: string; canonical_source: string; current_version_id: number | null; promoted_repo_path: string | null; promoted_commit_sha: string | null; created_by_agent: string | null; created_by_user_id: string | null; created_by_user_email: string | null; created_by_job_id: number | null; created_from_message_id: number | null; created_at: string; updated_at: string; } export interface ArtifactVersionRow { id: number; artifact_id: number; version: number; content_type: string; body: string; summary: string | null; created_by_agent: string | null; created_by_user_id: string | null; created_by_user_email: string | null; created_by_job_id: number | null; source_message_id: number | null; created_at: string; } export interface MessageArtifactRow { message_id: number; artifact_id: number; artifact_version_id: number; relation: string; } export interface CreateDocumentArtifactParams { topicId: number; kind: string; title: string; body: string; summary?: string; createdByAgent?: string; createdByUserId?: string; createdByUserEmail?: string; createdByJobId?: number; createdFromMessageId?: number; } export interface UpdateDocumentArtifactParams { artifactId: number; expectedTopicId?: number; baseVersion: number; body: string; summary?: string; createdByAgent?: string; createdByUserId?: string; createdByUserEmail?: string; createdByJobId?: number; sourceMessageId?: number; } export interface RestoreDocumentArtifactParams { artifactId: number; expectedTopicId?: number; baseVersion: number; restoreVersion: number; summary?: string; createdByAgent?: string; createdByUserId?: string; createdByUserEmail?: string; createdByJobId?: number; sourceMessageId?: number; } export interface RewriteDocumentArtifactFromVersionParams { artifactId: number; expectedTopicId?: number; baseVersion: number; sourceVersion: number; body: string; summary?: string; createdByAgent?: string; createdByUserId?: string; createdByUserEmail?: string; createdByJobId?: number; sourceMessageId?: number; } export interface CreateArtifactResult { artifact: ArtifactRow; version: ArtifactVersionRow; } export interface UpdateArtifactResult { artifact: ArtifactRow; version: ArtifactVersionRow; } export declare class ArtifactConflictError extends Error { artifactId: number; expectedVersion: number; actualVersion: number; constructor(artifactId: number, expectedVersion: number, actualVersion: number); } export declare function createDocumentArtifact(db: DatabaseType, params: CreateDocumentArtifactParams): CreateArtifactResult; export declare function updateDocumentArtifact(db: DatabaseType, params: UpdateDocumentArtifactParams): UpdateArtifactResult; export declare function listTopicArtifacts(db: DatabaseType, topicId: number): ArtifactRow[]; export declare function searchArtifacts(db: DatabaseType, query: string, limit: number): ArtifactRow[]; export declare function getArtifact(db: DatabaseType, artifactId: number): ArtifactRow | undefined; export declare function getArtifactVersions(db: DatabaseType, artifactId: number): ArtifactVersionRow[]; export declare function getArtifactVersion(db: DatabaseType, artifactId: number, versionId: number): ArtifactVersionRow | undefined; export declare function getArtifactVersionByNumber(db: DatabaseType, artifactId: number, versionNumber: number): ArtifactVersionRow | undefined; export declare function getCurrentArtifactVersion(db: DatabaseType, artifactId: number): ArtifactVersionRow | undefined; export declare function restoreDocumentArtifact(db: DatabaseType, params: RestoreDocumentArtifactParams): UpdateArtifactResult; export declare function rewriteDocumentArtifactFromVersion(db: DatabaseType, params: RewriteDocumentArtifactFromVersionParams): UpdateArtifactResult; export declare function linkMessageArtifact(db: DatabaseType, messageId: number, artifactId: number, artifactVersionId: number, relation: string): void; export declare function getMessageArtifacts(db: DatabaseType, messageId: number): MessageArtifactRow[]; export interface ArtifactContextInfo { id: number; kind: string; title: string; current_version: number; } export declare function listTopicArtifactContext(db: DatabaseType, topicId: number): ArtifactContextInfo[]; export interface ScopedArtifactContextInfo extends ArtifactContextInfo { topic_id: number; inherited: boolean; } /** * List artifacts visible to a topic: own artifacts + ancestors' artifacts. * Ordered by lineage distance (current first), then by id. * Cap total results to `limit`. */ export declare function listScopedArtifactContext(db: DatabaseType, topicLineage: number[], limit?: number): ScopedArtifactContextInfo[]; /** * List artifacts scoped to a topic lineage. * Ordered by current topic first, then nearest parent, then recency. */ export declare function listScopedArtifacts(db: DatabaseType, topicLineage: number[], limit?: number): ArtifactRow[]; /** * Search artifacts scoped to a topic lineage. * Returns artifacts belonging to any topic in the lineage, ranked by lineage distance first, * then title/path match quality, then recency. */ export declare function searchScopedArtifacts(db: DatabaseType, topicLineage: number[], query: string, limit: number): ArtifactRow[]; /** Count artifacts per topic (for sidebar indicators). */ export declare function countArtifactsByTopic(db: DatabaseType): Map; export interface EnrichedMessageArtifact { artifact_id: number; artifact_version_id: number; relation: string; kind: string; title: string; version: number; } export declare function getEnrichedMessageArtifacts(db: DatabaseType, messageId: number): EnrichedMessageArtifact[]; export declare function promoteArtifact(db: DatabaseType, artifactId: number, repoPath: string, commitSha?: string | null): void; //# sourceMappingURL=artifacts.d.ts.map