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