UNPKG

ai-knowledge-hub

Version:

MCP server that provides unified access to organizational knowledge across multiple platforms (local docs, Guru, Notion)

125 lines (124 loc) 3.54 kB
/** * Markdown processing and conversion type definitions */ import { DocumentInfo } from './docs.js'; export interface MarkdownNode { type: 'heading' | 'paragraph' | 'list' | 'list_item' | 'code' | 'quote' | 'table' | 'table_row' | 'table_cell' | 'image' | 'divider' | 'text'; content?: string; level?: number; ordered?: boolean; checked?: boolean; language?: string; url?: string; alt?: string; title?: string; align?: 'left' | 'center' | 'right'; children?: MarkdownNode[]; attributes?: Record<string, unknown>; bold?: boolean; italic?: boolean; strikethrough?: boolean; code?: boolean; link?: { url: string; title?: string; }; } export interface MarkdownMetadata { title?: string; description?: string; tags?: string[]; categories?: string[]; author?: string; date?: string; lastModified?: string; frontMatter?: Record<string, unknown>; wordCount?: number; headings?: Array<{ level: number; text: string; anchor?: string; }>; } export interface MarkdownDocument extends DocumentInfo { content: string; metadata: MarkdownMetadata; lastModified?: Date; size?: number; } export interface ConversionOptions { preserveColors: boolean; preserveFormatting: boolean; maxHeadingLevel: number; handleUnsupportedBlocks: 'ignore' | 'convert' | 'error'; convertCallouts: boolean; convertToggles: boolean; includeMetadata: boolean; extractFrontMatter: boolean; preserveImageCaptions: boolean; tableAlignment: boolean; imageHandling: 'link' | 'upload' | 'ignore'; imageBaseUrl?: string; preserveNotionLinks: boolean; convertInternalLinks: boolean; linkBaseUrl?: string; lineBreaks: 'lf' | 'crlf' | 'auto'; indentSize: number; codeBlockStyle: 'fenced' | 'indented'; listMarker: '-' | '*' | '+'; emphasisMarker: '*' | '_'; } export interface ConversionResult { content: Record<string, unknown>[] | string; warnings: string[]; errors: string[]; metadata: ConversionMetadata; sourceDocument?: MarkdownDocument; statistics?: ConversionStatistics; } export interface ConversionMetadata { sourceFormat: 'markdown' | 'notion'; targetFormat: 'notion' | 'markdown'; conversionDate: Date; toolVersion: string; options: ConversionOptions; processingTime?: number; nodeCount?: number; } export interface ConversionStatistics { totalBlocks: number; convertedBlocks: number; skippedBlocks: number; errorBlocks: number; unsupportedBlocks: string[]; warnings: string[]; } export interface ValidationResult { isValid: boolean; errors: ValidationError[]; warnings: ValidationWarning[]; metadata?: MarkdownMetadata; } export interface ValidationError { type: 'syntax' | 'structure' | 'content'; message: string; line?: number; column?: number; severity: 'error' | 'warning'; } export interface ValidationWarning { type: 'formatting' | 'compatibility' | 'performance' | 'structure' | 'content'; message: string; line?: number; suggestion?: string; } export interface ParserOptions { extractMetadata: boolean; validateSyntax: boolean; includeSourceMap: boolean; preserveWhitespace: boolean; allowHtml: boolean; allowUnsafeHtml: boolean; } export declare const DEFAULT_CONVERSION_OPTIONS: ConversionOptions; export declare const DEFAULT_PARSER_OPTIONS: ParserOptions;