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
TypeScript
/**
* 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;