/**
* Content Extractor - Converts HTML to clean markdown with table support
* Enhanced with field-level confidence tracking (CX-002)
*/
import { type FieldConfidence } from '../types/field-confidence.js';
import { type SelectorAttempt, type TitleAttempt } from '../types/decision-trace.js';
export interface ExtractedTable {
headers: string[];
rows: string[][];
caption?: string;
id?: string;
}
export interface TableAsJSON {
data: Record[];
headers: string[];
caption?: string;
}
/**
* Title extraction metadata for confidence tracking
*/
export interface TitleExtraction {
title: string;
source: 'title_tag' | 'h1' | 'og_title' | 'unknown';
confidence: FieldConfidence;
}
/**
* Content extraction metadata for confidence tracking
*/
export interface ContentExtraction {
markdown: string;
text: string;
source: 'main' | 'article' | 'role_main' | 'content_class' | 'body_fallback';
selector: string;
confidence: FieldConfidence;
}
/**
* Enhanced extraction result with confidence tracking (CX-002)
*/
export interface ExtractionResultWithConfidence {
markdown: string;
text: string;
title: string;
confidence: {
title: FieldConfidence;
content: FieldConfidence;
overall: FieldConfidence;
};
metadata: {
titleSource: TitleExtraction['source'];
contentSource: ContentExtraction['source'];
contentSelector: string;
};
}
/**
* Enhanced extraction result with decision trace (CX-003)
*/
export interface ExtractionResultWithTrace extends ExtractionResultWithConfidence {
trace: {
titleAttempts: TitleAttempt[];
selectorAttempts: SelectorAttempt[];
};
}
export declare class ContentExtractor {
private turndown;
constructor();
/**
* Extract clean content from HTML
*/
extract(html: string, url: string): {
markdown: string;
text: string;
title: string;
};
/**
* Extract clean content with field-level confidence tracking (CX-002)
* Returns enhanced result with per-field confidence scores
*/
extractWithConfidence(html: string, url: string): ExtractionResultWithConfidence;
/**
* Extract clean content with decision trace (CX-003)
* Returns enhanced result with per-field confidence and decision trace
*/
extractWithTrace(html: string, url: string): ExtractionResultWithTrace;
/**
* Extract title with trace of all attempts (CX-003)
*/
private extractTitleWithTrace;
/**
* Extract content with trace of all selector attempts (CX-003)
*/
private extractContentWithTrace;
/**
* Extract title with confidence tracking
*/
private extractTitleWithConfidence;
/**
* Extract main content with confidence tracking
*/
private extractContentWithConfidence;
/**
* Extract structured data from HTML
*/
extractStructured(html: string, selectors: Record): Record[];
/**
* Extract all tables from HTML as structured data
*/
extractTables(html: string): ExtractedTable[];
/**
* Extract tables as JSON objects (headers become keys)
*/
extractTablesAsJSON(html: string): TableAsJSON[];
/**
* Find a specific table by ID, caption, or header content
*/
findTable(html: string, criteria: {
id?: string;
caption?: string;
headerContains?: string;
}): ExtractedTable | undefined;
/**
* Extract links from HTML with their context
*/
extractLinks(html: string): {
href: string;
text: string;
context: string;
}[];
}
//# sourceMappingURL=content-extractor.d.ts.map