UNPKG

ai-knowledge-hub

Version:

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

119 lines (118 loc) 4.28 kB
/** * Notion block builder utilities * Creates properly formatted Notion blocks from content */ import { NotionColor, NotionRichText } from '../types/notion.js'; import { MarkdownNode } from '../types/markdown.js'; export interface NotionBlockData { object: 'block'; type: string; [key: string]: unknown; } /** * Create rich text array from plain text with optional formatting */ export declare function createRichText(content: string, formatting?: { bold?: boolean; italic?: boolean; strikethrough?: boolean; code?: boolean; color?: NotionColor; link?: { url: string; }; }): NotionRichText[]; /** * Create rich text from markdown nodes with formatting */ export declare function createRichTextFromNodes(nodes: MarkdownNode[]): NotionRichText[]; /** * Build a paragraph block */ export declare function buildParagraphBlock(content: string | MarkdownNode[], formatting?: { color?: NotionColor; }): NotionBlockData; /** * Build a heading block (H1, H2, or H3) */ export declare function buildHeadingBlock(content: string | MarkdownNode[], level: 1 | 2 | 3, formatting?: { color?: NotionColor; }): NotionBlockData; /** * Build a bulleted list item block */ export declare function buildBulletedListItemBlock(content: string | MarkdownNode[], children?: NotionBlockData[], formatting?: { color?: NotionColor; }): NotionBlockData; /** * Build a numbered list item block */ export declare function buildNumberedListItemBlock(content: string | MarkdownNode[], children?: NotionBlockData[], formatting?: { color?: NotionColor; }): NotionBlockData; /** * Build a to-do list item block (for task lists) */ export declare function buildToDoBlock(content: string | MarkdownNode[], checked?: boolean, children?: NotionBlockData[], formatting?: { color?: NotionColor; }): NotionBlockData; /** * Build a code block */ export declare function buildCodeBlock(code: string, language?: string, caption?: string): NotionBlockData; /** * Build a quote block */ export declare function buildQuoteBlock(content: string | MarkdownNode[], children?: NotionBlockData[], formatting?: { color?: NotionColor; }): NotionBlockData; /** * Build a divider block (horizontal rule) */ export declare function buildDividerBlock(): NotionBlockData; /** * Build a callout block (used for special formatting) */ export declare function buildCalloutBlock(content: string | MarkdownNode[], icon?: string, color?: NotionColor, children?: NotionBlockData[]): NotionBlockData; /** * Build a toggle block (collapsible content) */ export declare function buildToggleBlock(content: string | MarkdownNode[], children?: NotionBlockData[], formatting?: { color?: NotionColor; }): NotionBlockData; /** * Build a table block * Note: Notion tables require table_row blocks as children within the table block */ export declare function buildTableBlock(rows: string[][], hasColumnHeader?: boolean, hasRowHeader?: boolean): NotionBlockData[]; /** * Build a table block from MarkdownNode arrays (supports rich text in cells) * Note: Notion tables require table_row blocks as children within the table block */ export declare function buildTableBlockFromNodes(rows: MarkdownNode[][], hasColumnHeader?: boolean, hasRowHeader?: boolean): NotionBlockData[]; /** * Build an image block */ export declare function buildImageBlock(url: string, caption?: string): NotionBlockData; /** * Build an embed block */ export declare function buildEmbedBlock(url: string, caption?: string): NotionBlockData; /** * Build a bookmark block */ export declare function buildBookmarkBlock(url: string, caption?: string): NotionBlockData; /** * Utility function to determine appropriate list block type */ export declare function buildListItemBlock(content: string | MarkdownNode[], listType: 'bulleted' | 'numbered' | 'todo', checked?: boolean, children?: NotionBlockData[], formatting?: { color?: NotionColor; }): NotionBlockData; /** * Utility function to normalize heading levels for Notion (max H3) */ export declare function normalizeHeadingLevel(level: number): 1 | 2 | 3; /** * Create a fallback block for unsupported content */ export declare function buildFallbackBlock(content: string, originalType?: string): NotionBlockData;