lorehub
Version:
Capture and surface the collective wisdom of your codebase
83 lines • 3.6 kB
TypeScript
import BetterSqlite3 from 'better-sqlite3';
import type { Lore, LoreType, CreateLoreInput, UpdateLoreInput, Realm, CreateRealmInput, CreateRelationInput, Relation, LoreRelation, Workspace, CreateWorkspaceInput, UpdateWorkspaceInput } from '../core/types.js';
export declare class Database {
sqlite: BetterSqlite3.Database;
private db;
private embeddingService;
private changeTracker;
constructor(dbPath: string);
private loadSqliteVec;
private runMigrations;
private runMigrationsForInMemory;
close(): void;
listTables(): string[];
transaction<T>(fn: () => T): T;
createRealm(input: CreateRealmInput): Realm;
findRealm(id: string): Realm | null;
findRealmByPath(path: string): Realm | null;
updateRealmLastSeen(id: string): Realm | null;
listRealms(): Realm[];
getCurrentRealm(): Realm | null;
createLore(input: CreateLoreInput): Promise<Lore>;
findLore(id: string): Lore | null;
updateLore(id: string, input: UpdateLoreInput): Promise<Lore | null>;
deleteLore(id: string): Promise<void>;
softDeleteLore(id: string): Promise<void>;
restoreLore(id: string): void;
listLoresByRealm(realmId: string): Lore[];
listLoresByType(realmId: string, type: LoreType): Lore[];
listLoresByProvince(realmId: string, province: string): Lore[];
searchLores(realmId: string, query: string, limit?: number): Lore[];
searchLoresGlobal(query: string, limit?: number): Lore[];
getRealmLoreCount(realmId: string): number;
semanticSearchLores(query: string, options?: {
realmId?: string;
threshold?: number;
limit?: number;
includeScore?: boolean;
}): Promise<(Lore & {
similarity?: number;
})[]>;
findSimilarLores(loreId: string, options?: {
limit?: number;
threshold?: number;
}): Promise<(Lore & {
similarity: number;
})[]>;
generateLoreEmbedding(loreId: string): Promise<void>;
recreateLoresVecTable(dimensions: number): void;
generateMissingEmbeddings(realmId?: string, batchSize?: number, force?: boolean): Promise<number>;
checkForDuplicates(content: string, realmId: string, threshold?: number): Promise<(Lore & {
similarity: number;
})[]>;
createRelation(input: CreateRelationInput): Promise<Relation>;
listRelationsByLore(loreId: string): LoreRelation[];
deleteRelation(fromLoreId: string, toLoreId: string, type: string): Promise<void>;
exportData(realmId?: string): {
realms: Realm[];
lores: Lore[];
relations: Relation[];
};
importData(data: {
realms: CreateRealmInput[];
lores: CreateLoreInput[];
relations: CreateRelationInput[];
}, mode?: 'replace' | 'merge'): Promise<void>;
private dbRealmToRealm;
private dbLoreToLore;
private dbRelationToRelation;
createWorkspace(input: CreateWorkspaceInput): Workspace;
findWorkspace(id: string): Workspace | null;
findWorkspaceByName(name: string): Workspace | null;
getDefaultWorkspace(): Workspace | null;
listWorkspaces(): Workspace[];
updateWorkspace(id: string, input: UpdateWorkspaceInput): Workspace | null;
deleteWorkspace(id: string): void;
linkRealmToWorkspace(realmId: string, workspaceId: string): void;
unlinkRealmFromWorkspace(realmId: string, workspaceId: string): void;
getRealmWorkspaces(realmId: string): Workspace[];
getWorkspaceRealms(workspaceId: string): Realm[];
ensureDefaultWorkspace(): Workspace;
private dbWorkspaceToWorkspace;
}
//# sourceMappingURL=database.d.ts.map