0.0.10 • Published 1 year ago

optimistic-markdown v0.0.10

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Optimistic Markdown Parser for AI Chat Applications

A specialized markdown parser designed for handling AI-generated markdown content in real-time chat applications. This parser ensures that partially generated or potentially malformed markdown from AI responses renders correctly without breaking the UI.

Why This Parser?

When working with AI chat applications:

  • AI models often generate markdown content in chunks or streams
  • Responses may be cut off mid-generation
  • Markdown syntax might be incomplete during streaming
  • Traditional markdown parsers can break or display incorrectly with partial content

Features

  • Handles streaming AI responses gracefully
  • Maintains clean rendering even with incomplete markdown
  • Supports common AI chat elements:
    • Code blocks (prevents broken syntax highlighting)
    • Tables (maintains structure during generation)
    • Links (handles incomplete URLs)
    • Emphasis and formatting
    • HTML blocks
  • Zero dependencies
  • TypeScript ready

Usage

import { optimisticMarkdown } from "optimistic-markdown";

// Handle streaming AI response chunks
function processAIResponse(chunk: string) {
  const formattedMarkdown = optimisticMarkdown(chunk, {
    isLoading: true, // Indicates content is still being generated
  });

  // Update your UI with the formatted markdown
  updateChatUI(formattedMarkdown);
}

Options

interface OptimisticMarkdownOptions {
  isLoading?: boolean; // Whether the AI is still generating content
  markdownLinkTarget?: string; // Default target for incomplete links
}

Common AI Chat Scenarios

Incomplete Code Blocks

AI: Here's an example in Python:

```py
def hello_wor

-> Parser maintains code block integrity even when cut off

Partial Tables

AI: Here's the data:
| Model | Perf
| GPT-4 | 95.

-> Parser maintains table structure during generation

Cut-off Formatting

AI: This is \*\*very impor

-> Parser handles incomplete emphasis markers

Implementation Notes

  • The parser assumes content is being generated from left to right
  • Optimized for streaming performance
  • Safe to run on every chunk update
  • Preserves original formatting where possible

License

MIT License

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.1

1 year ago