Project Files
src / sources / types.ts
export type SourceKind = "file" | "https" | "github" | "huggingface" | "conversation" | "confluence";
export type RawContentType = "markdown" | "html" | "text";
export interface ImageRef {
url: string;
altText?: string;
title?: string;
sourceId: string;
sourceKind: SourceKind;
baseUrl?: string;
}
export interface SourceDocument {
sourceId: string;
sourceKind: SourceKind;
canonicalUrl?: string;
title?: string;
rawContent: string;
rawContentType: RawContentType;
baseUrl?: string;
fetchedAt: string;
version?: string;
metadata?: Record<string, unknown>;
}
export interface IndexedDocument {
sourceId: string;
sourceKind: SourceKind;
canonicalUrl?: string;
title?: string;
content: string;
contentHash: string;
baseUrl?: string;
version?: string;
imageRefs: ImageRef[];
metadata: Record<string, unknown>;
}
export interface SourceAdapterContext {
fetchTimeoutMs: number;
maxBytes: number;
maxPages: number;
githubToken?: string;
huggingFaceToken?: string;
}
export interface SourceAdapter {
canHandle(source: string): boolean;
load(source: string, context: SourceAdapterContext): Promise<SourceDocument[]>;
}