@nicomatt69/streamdown-tty 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +113 -0
- package/LICENSE +21 -0
- package/README.md +287 -0
- package/dist/adapters/index.d.ts +185 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/ai-sdk-adapter.d.ts +113 -0
- package/dist/ai-sdk-adapter.d.ts.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/core/index.d.ts +209 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/math-renderer.d.ts +40 -0
- package/dist/core/math-renderer.d.ts.map +1 -0
- package/dist/core/parser.d.ts +139 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/protocol.d.ts +319 -0
- package/dist/core/protocol.d.ts.map +1 -0
- package/dist/core/remend-tty.d.ts +68 -0
- package/dist/core/remend-tty.d.ts.map +1 -0
- package/dist/core/renderer.d.ts +286 -0
- package/dist/core/renderer.d.ts.map +1 -0
- package/dist/errors.d.ts +131 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/events.d.ts +185 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12921 -0
- package/dist/parser/streaming-parser.d.ts +81 -0
- package/dist/parser/streaming-parser.d.ts.map +1 -0
- package/dist/performance.d.ts +139 -0
- package/dist/performance.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +6 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/plugin-system-inline.d.ts +116 -0
- package/dist/plugins/plugin-system-inline.d.ts.map +1 -0
- package/dist/plugins/plugin-system.d.ts +65 -0
- package/dist/plugins/plugin-system.d.ts.map +1 -0
- package/dist/plugins/rehype/harden.d.ts +15 -0
- package/dist/plugins/rehype/harden.d.ts.map +1 -0
- package/dist/plugins/rehype/index.d.ts +5 -0
- package/dist/plugins/rehype/index.d.ts.map +1 -0
- package/dist/plugins/remark/index.d.ts +6 -0
- package/dist/plugins/remark/index.d.ts.map +1 -0
- package/dist/plugins/remark/math.d.ts +7 -0
- package/dist/plugins/remark/math.d.ts.map +1 -0
- package/dist/plugins/remark/mermaid.d.ts +7 -0
- package/dist/plugins/remark/mermaid.d.ts.map +1 -0
- package/dist/plugins/types.d.ts +72 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/renderer/ansi-renderer.d.ts +76 -0
- package/dist/renderer/ansi-renderer.d.ts.map +1 -0
- package/dist/renderers/index.d.ts +7 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/math-renderer.d.ts +49 -0
- package/dist/renderers/math-renderer.d.ts.map +1 -0
- package/dist/renderers/mermaid-ascii.d.ts +14 -0
- package/dist/renderers/mermaid-ascii.d.ts.map +1 -0
- package/dist/renderers/mermaid-renderer.d.ts +79 -0
- package/dist/renderers/mermaid-renderer.d.ts.map +1 -0
- package/dist/renderers/shiki-ansi.d.ts +48 -0
- package/dist/renderers/shiki-ansi.d.ts.map +1 -0
- package/dist/renderers/table-ascii.d.ts +30 -0
- package/dist/renderers/table-ascii.d.ts.map +1 -0
- package/dist/renderers/unicode-math.d.ts +29 -0
- package/dist/renderers/unicode-math.d.ts.map +1 -0
- package/dist/security/ansi-sanitizer.d.ts +71 -0
- package/dist/security/ansi-sanitizer.d.ts.map +1 -0
- package/dist/security/chunk-processor.d.ts +81 -0
- package/dist/security/chunk-processor.d.ts.map +1 -0
- package/dist/security/index.d.ts +6 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/input-validator.d.ts +55 -0
- package/dist/security/input-validator.d.ts.map +1 -0
- package/dist/stream-protocol.d.ts +61 -0
- package/dist/stream-protocol.d.ts.map +1 -0
- package/dist/streamdown-compat.d.ts +72 -0
- package/dist/streamdown-compat.d.ts.map +1 -0
- package/dist/streaming/stream-stats.d.ts +97 -0
- package/dist/streaming/stream-stats.d.ts.map +1 -0
- package/dist/streaming-integration.d.ts +71 -0
- package/dist/streaming-integration.d.ts.map +1 -0
- package/dist/themes/index.d.ts +59 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +168 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/plugin-types.d.ts +5 -0
- package/dist/types/plugin-types.d.ts.map +1 -0
- package/dist/types/stream-events.d.ts +71 -0
- package/dist/types/stream-events.d.ts.map +1 -0
- package/dist/utils/blessed-syntax-highlighter.d.ts +124 -0
- package/dist/utils/blessed-syntax-highlighter.d.ts.map +1 -0
- package/dist/utils/enhanced-table-renderer.d.ts +77 -0
- package/dist/utils/enhanced-table-renderer.d.ts.map +1 -0
- package/dist/utils/formatting.d.ts +100 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/math-unicode-renderer.d.ts +38 -0
- package/dist/utils/math-unicode-renderer.d.ts.map +1 -0
- package/dist/utils/mermaid-ascii-renderer.d.ts +20 -0
- package/dist/utils/mermaid-ascii-renderer.d.ts.map +1 -0
- package/dist/utils/mermaid-ascii.d.ts +53 -0
- package/dist/utils/mermaid-ascii.d.ts.map +1 -0
- package/dist/utils/shiki-ansi-renderer.d.ts +29 -0
- package/dist/utils/shiki-ansi-renderer.d.ts.map +1 -0
- package/dist/utils/syntax-highlighter.d.ts +87 -0
- package/dist/utils/syntax-highlighter.d.ts.map +1 -0
- package/dist/utils/table-formatter-inline.d.ts +37 -0
- package/dist/utils/table-formatter-inline.d.ts.map +1 -0
- package/dist/utils/table.d.ts +35 -0
- package/dist/utils/table.d.ts.map +1 -0
- package/dist/widgets/stream-indicator.d.ts +130 -0
- package/dist/widgets/stream-indicator.d.ts.map +1 -0
- package/package.json +129 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI SDK Stream Adapter
|
|
3
|
+
*
|
|
4
|
+
* This module provides an adapter that handles AI SDK streaming events
|
|
5
|
+
* and formats them appropriately for TTY rendering using streamtty.
|
|
6
|
+
*/
|
|
7
|
+
import { StreamEvent, StreamEventOptions } from './types/stream-events.js';
|
|
8
|
+
export interface AISDKStreamAdapterOptions extends StreamEventOptions {
|
|
9
|
+
maxToolResultLength?: number;
|
|
10
|
+
formatToolCalls?: boolean;
|
|
11
|
+
showThinking?: boolean;
|
|
12
|
+
renderTimestamps?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class AISDKStreamAdapter {
|
|
15
|
+
private renderer;
|
|
16
|
+
private options;
|
|
17
|
+
constructor(renderer: {
|
|
18
|
+
stream: (content: string) => void;
|
|
19
|
+
}, options?: AISDKStreamAdapterOptions);
|
|
20
|
+
/**
|
|
21
|
+
* Handle a stream of AI SDK events
|
|
22
|
+
*/
|
|
23
|
+
handleAISDKStream(stream: AsyncGenerator<StreamEvent>): AsyncGenerator<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Process a single stream event
|
|
26
|
+
*/
|
|
27
|
+
processEvent(event: StreamEvent): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Render a validated stream event
|
|
30
|
+
*/
|
|
31
|
+
private renderEvent;
|
|
32
|
+
/**
|
|
33
|
+
* Render text delta events (streaming text)
|
|
34
|
+
*/
|
|
35
|
+
private renderTextDelta;
|
|
36
|
+
/**
|
|
37
|
+
* Render tool call events
|
|
38
|
+
*/
|
|
39
|
+
private renderToolCall;
|
|
40
|
+
/**
|
|
41
|
+
* Format a tool call event for display
|
|
42
|
+
*/
|
|
43
|
+
private formatToolCall;
|
|
44
|
+
/**
|
|
45
|
+
* Render tool result events
|
|
46
|
+
*/
|
|
47
|
+
private renderToolResult;
|
|
48
|
+
/**
|
|
49
|
+
* Format a tool result event for display
|
|
50
|
+
*/
|
|
51
|
+
private formatToolResult;
|
|
52
|
+
/**
|
|
53
|
+
* Format tool result content for display
|
|
54
|
+
*/
|
|
55
|
+
private formatToolResultContent;
|
|
56
|
+
/**
|
|
57
|
+
* Truncate content to specified length
|
|
58
|
+
*/
|
|
59
|
+
private truncateContent;
|
|
60
|
+
/**
|
|
61
|
+
* Render thinking/reasoning events
|
|
62
|
+
*/
|
|
63
|
+
private renderThinking;
|
|
64
|
+
/**
|
|
65
|
+
* Format thinking events for display
|
|
66
|
+
*/
|
|
67
|
+
private formatThinking;
|
|
68
|
+
/**
|
|
69
|
+
* Render status events
|
|
70
|
+
*/
|
|
71
|
+
private renderStatus;
|
|
72
|
+
/**
|
|
73
|
+
* Format status events for display
|
|
74
|
+
*/
|
|
75
|
+
private formatStatus;
|
|
76
|
+
/**
|
|
77
|
+
* Render error events
|
|
78
|
+
*/
|
|
79
|
+
private renderError;
|
|
80
|
+
/**
|
|
81
|
+
* Format error events for display
|
|
82
|
+
*/
|
|
83
|
+
private formatError;
|
|
84
|
+
/**
|
|
85
|
+
* Render start events
|
|
86
|
+
*/
|
|
87
|
+
private renderStart;
|
|
88
|
+
/**
|
|
89
|
+
* Render complete events
|
|
90
|
+
*/
|
|
91
|
+
private renderComplete;
|
|
92
|
+
/**
|
|
93
|
+
* Get appropriate icon for tool name
|
|
94
|
+
*/
|
|
95
|
+
private getToolIcon;
|
|
96
|
+
/**
|
|
97
|
+
* Get appropriate icon for status
|
|
98
|
+
*/
|
|
99
|
+
private getStatusIcon;
|
|
100
|
+
/**
|
|
101
|
+
* Format tool arguments for display
|
|
102
|
+
*/
|
|
103
|
+
private formatToolArgs;
|
|
104
|
+
/**
|
|
105
|
+
* Update adapter options
|
|
106
|
+
*/
|
|
107
|
+
updateOptions(options: Partial<AISDKStreamAdapterOptions>): void;
|
|
108
|
+
/**
|
|
109
|
+
* Get current options
|
|
110
|
+
*/
|
|
111
|
+
getOptions(): AISDKStreamAdapterOptions;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=ai-sdk-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-sdk-adapter.d.ts","sourceRoot":"","sources":["../src/ai-sdk-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EAEX,kBAAkB,EAOnB,MAAM,0BAA0B,CAAA;AAGjC,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ;IAHlB,OAAO,CAAC,OAAO,CAAqC;gBAG1C,QAAQ,EAAE;QAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,EACvD,OAAO,GAAE,yBAA8B;IAazC;;OAEG;IACI,iBAAiB,CACtB,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,GAClC,cAAc,CAAC,IAAI,CAAC;IAOvB;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;OAEG;YACW,WAAW;IA+BzB;;OAEG;YACW,eAAe;IAM7B;;OAEG;YACW,cAAc;IAS5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;YACW,gBAAgB;IAK9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;YACW,cAAc;IAS5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;YACW,YAAY;IAK1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;YACW,WAAW;IAKzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;YACW,WAAW;IAQzB;;OAEG;YACW,cAAc;IAQ5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAiCnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI;IAIhE;;OAEG;IACH,UAAU,IAAI,yBAAyB;CAGxC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streamdown-TTY Enterprise
|
|
3
|
+
*
|
|
4
|
+
* The main entry point for enterprise-grade markdown streaming in terminals.
|
|
5
|
+
* Drop-in compatible with Vercel's Streamdown, optimized for TTY/ANSI output.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Zero-dependency core (parser + renderer)
|
|
9
|
+
* - Self-healing markdown (remend-tty)
|
|
10
|
+
* - Universal stream protocol
|
|
11
|
+
* - Cross-runtime support (Node, Bun, Deno, Browser terminals)
|
|
12
|
+
* - AI SDK adapters (Anthropic, OpenAI, Vercel AI)
|
|
13
|
+
* - Performance optimized (object pooling, memoization, LRU cache)
|
|
14
|
+
* - Theme support (dark, light, custom)
|
|
15
|
+
* - Security hardening (ANSI sanitization)
|
|
16
|
+
*
|
|
17
|
+
* @module streamdown-tty
|
|
18
|
+
* @author NikCLI
|
|
19
|
+
* @license MIT
|
|
20
|
+
*/
|
|
21
|
+
import { StreamingParser, type Token, type ParserOptions } from './parser.js';
|
|
22
|
+
import { ANSIRenderer, type RendererOptions, type Theme, darkTheme, lightTheme, ANSI } from './renderer.js';
|
|
23
|
+
import { StreamProtocol, createStreamProtocol, type StreamProtocolOptions, type AnyStreamEvent, type StreamStats } from './protocol.js';
|
|
24
|
+
import { remendTTY, remendTTYDetailed, clearRemendCache, type RemendOptions, type RemendResult } from './remend-tty.js';
|
|
25
|
+
/**
|
|
26
|
+
* Streamdown-TTY options
|
|
27
|
+
*/
|
|
28
|
+
export interface StreamdownTTYOptions {
|
|
29
|
+
/** Output stream (defaults to process.stdout) */
|
|
30
|
+
output?: NodeJS.WritableStream;
|
|
31
|
+
/** Parser options */
|
|
32
|
+
parser?: ParserOptions;
|
|
33
|
+
/** Renderer options */
|
|
34
|
+
renderer?: RendererOptions;
|
|
35
|
+
/** Protocol options for event handling */
|
|
36
|
+
protocol?: StreamProtocolOptions;
|
|
37
|
+
/** Remend (self-healing) options */
|
|
38
|
+
remend?: RemendOptions;
|
|
39
|
+
/** Theme ('dark', 'light', or custom Theme object) */
|
|
40
|
+
theme?: 'dark' | 'light' | Theme;
|
|
41
|
+
/** Maximum width for rendering */
|
|
42
|
+
maxWidth?: number;
|
|
43
|
+
/** Enable syntax highlighting */
|
|
44
|
+
syntaxHighlight?: boolean;
|
|
45
|
+
/** Show line numbers in code blocks */
|
|
46
|
+
lineNumbers?: boolean;
|
|
47
|
+
/** Enable GFM (GitHub Flavored Markdown) */
|
|
48
|
+
gfm?: boolean;
|
|
49
|
+
/** Enable math rendering */
|
|
50
|
+
math?: boolean;
|
|
51
|
+
/** Enable mermaid diagram detection */
|
|
52
|
+
mermaid?: boolean;
|
|
53
|
+
/** Enable thinking block parsing */
|
|
54
|
+
thinking?: boolean;
|
|
55
|
+
/** Auto-heal incomplete markdown */
|
|
56
|
+
autoHeal?: boolean;
|
|
57
|
+
/** Render debounce interval in ms */
|
|
58
|
+
debounceMs?: number;
|
|
59
|
+
/** Custom code highlighter */
|
|
60
|
+
highlighter?: (code: string, lang: string) => string;
|
|
61
|
+
/** Custom math renderer */
|
|
62
|
+
mathRenderer?: (math: string, block: boolean) => string;
|
|
63
|
+
/** Custom mermaid renderer */
|
|
64
|
+
mermaidRenderer?: (code: string) => string | Promise<string>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* AI-specific options for streaming
|
|
68
|
+
*/
|
|
69
|
+
export interface AIOptions {
|
|
70
|
+
parseIncompleteMarkdown: boolean;
|
|
71
|
+
syntaxHighlight: boolean;
|
|
72
|
+
formatToolCalls: boolean;
|
|
73
|
+
showThinking: boolean;
|
|
74
|
+
maxToolResultLength: number;
|
|
75
|
+
renderTimestamps: boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Main Streamdown-TTY class
|
|
79
|
+
*/
|
|
80
|
+
export declare class StreamdownTTY {
|
|
81
|
+
private parser;
|
|
82
|
+
private renderer;
|
|
83
|
+
private protocol;
|
|
84
|
+
private output;
|
|
85
|
+
private options;
|
|
86
|
+
private aiOptions;
|
|
87
|
+
private state;
|
|
88
|
+
private renderTimeout;
|
|
89
|
+
constructor(options?: StreamdownTTYOptions);
|
|
90
|
+
/**
|
|
91
|
+
* Get terminal width
|
|
92
|
+
*/
|
|
93
|
+
private getTerminalWidth;
|
|
94
|
+
/**
|
|
95
|
+
* Setup protocol event handlers
|
|
96
|
+
*/
|
|
97
|
+
private setupProtocolHandlers;
|
|
98
|
+
/**
|
|
99
|
+
* Stream a chunk of markdown content
|
|
100
|
+
*/
|
|
101
|
+
stream(chunk: string): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Set complete markdown content (replaces buffer)
|
|
104
|
+
*/
|
|
105
|
+
setContent(markdown: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* Schedule a debounced render
|
|
108
|
+
*/
|
|
109
|
+
private scheduleRender;
|
|
110
|
+
/**
|
|
111
|
+
* Render current content
|
|
112
|
+
*/
|
|
113
|
+
render(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Render and return string (no output)
|
|
116
|
+
*/
|
|
117
|
+
renderToString(markdown?: string): string;
|
|
118
|
+
/**
|
|
119
|
+
* Process AI stream (async generator)
|
|
120
|
+
*/
|
|
121
|
+
processStream(stream: AsyncIterable<string>): Promise<StreamStats>;
|
|
122
|
+
/**
|
|
123
|
+
* Process stream with protocol events
|
|
124
|
+
*/
|
|
125
|
+
processStreamWithEvents(stream: AsyncIterable<string>): AsyncGenerator<AnyStreamEvent>;
|
|
126
|
+
/**
|
|
127
|
+
* Get current buffer content
|
|
128
|
+
*/
|
|
129
|
+
getContent(): string;
|
|
130
|
+
/**
|
|
131
|
+
* Get current tokens
|
|
132
|
+
*/
|
|
133
|
+
getTokens(): Token[];
|
|
134
|
+
/**
|
|
135
|
+
* Get protocol instance for advanced usage
|
|
136
|
+
*/
|
|
137
|
+
getProtocol(): StreamProtocol;
|
|
138
|
+
/**
|
|
139
|
+
* Get parser instance
|
|
140
|
+
*/
|
|
141
|
+
getParser(): StreamingParser;
|
|
142
|
+
/**
|
|
143
|
+
* Get renderer instance
|
|
144
|
+
*/
|
|
145
|
+
getRenderer(): ANSIRenderer;
|
|
146
|
+
/**
|
|
147
|
+
* Check if currently streaming
|
|
148
|
+
*/
|
|
149
|
+
isStreaming(): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Clear content and reset state
|
|
152
|
+
*/
|
|
153
|
+
clear(): void;
|
|
154
|
+
/**
|
|
155
|
+
* Complete streaming and final render
|
|
156
|
+
*/
|
|
157
|
+
complete(): void;
|
|
158
|
+
/**
|
|
159
|
+
* Abort streaming
|
|
160
|
+
*/
|
|
161
|
+
abort(): void;
|
|
162
|
+
/**
|
|
163
|
+
* Destroy instance and cleanup
|
|
164
|
+
*/
|
|
165
|
+
destroy(): void;
|
|
166
|
+
/**
|
|
167
|
+
* Stream a single event (AI SDK compatibility)
|
|
168
|
+
*/
|
|
169
|
+
streamEvent(event: AnyStreamEvent): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Stream events from an async generator (AI SDK compatibility)
|
|
172
|
+
*/
|
|
173
|
+
streamEvents(events: AsyncGenerator<AnyStreamEvent>): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Handle AI SDK stream (AI SDK compatibility)
|
|
176
|
+
*/
|
|
177
|
+
handleAISDKStream(stream: AsyncGenerator<AnyStreamEvent>): AsyncGenerator<void>;
|
|
178
|
+
/**
|
|
179
|
+
* Update AI-specific options
|
|
180
|
+
*/
|
|
181
|
+
updateAIOptions(options: Partial<AIOptions>): void;
|
|
182
|
+
/**
|
|
183
|
+
* Get current AI-specific options
|
|
184
|
+
*/
|
|
185
|
+
getAIOptions(): AIOptions;
|
|
186
|
+
/**
|
|
187
|
+
* Get the output stream
|
|
188
|
+
*/
|
|
189
|
+
getOutput(): NodeJS.WritableStream;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Quick render markdown to ANSI string
|
|
193
|
+
*/
|
|
194
|
+
export declare function render(markdown: string, options?: StreamdownTTYOptions): string;
|
|
195
|
+
/**
|
|
196
|
+
* Quick stream markdown to output
|
|
197
|
+
*/
|
|
198
|
+
export declare function stream(source: AsyncIterable<string> | string, options?: StreamdownTTYOptions): Promise<StreamStats | void>;
|
|
199
|
+
/**
|
|
200
|
+
* Heal incomplete markdown
|
|
201
|
+
*/
|
|
202
|
+
export declare function heal(markdown: string, options?: RemendOptions): string;
|
|
203
|
+
/**
|
|
204
|
+
* Heal with detailed diagnostics
|
|
205
|
+
*/
|
|
206
|
+
export declare function healDetailed(markdown: string, options?: RemendOptions): RemendResult;
|
|
207
|
+
export { StreamingParser, type Token, type ParserOptions, ANSIRenderer, type RendererOptions, type Theme, darkTheme, lightTheme, ANSI, StreamProtocol, createStreamProtocol, type StreamProtocolOptions, type AnyStreamEvent, type StreamStats, remendTTY, remendTTYDetailed, clearRemendCache, type RemendOptions, type RemendResult, };
|
|
208
|
+
export default StreamdownTTY;
|
|
209
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LaTeX Math to Unicode Renderer for TTY
|
|
3
|
+
*
|
|
4
|
+
* Converts LaTeX math expressions to Unicode characters
|
|
5
|
+
* for beautiful terminal rendering without external dependencies.
|
|
6
|
+
*
|
|
7
|
+
* Supports:
|
|
8
|
+
* - Greek letters (α, β, γ, δ, etc.)
|
|
9
|
+
* - Mathematical operators (∑, ∏, ∫, √, etc.)
|
|
10
|
+
* - Subscripts and superscripts
|
|
11
|
+
* - Fractions (approximate)
|
|
12
|
+
* - Common symbols
|
|
13
|
+
*
|
|
14
|
+
* @module math-renderer
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Renderer options
|
|
18
|
+
*/
|
|
19
|
+
export interface MathRendererOptions {
|
|
20
|
+
/** Use Unicode fractions when possible */
|
|
21
|
+
unicodeFractions?: boolean;
|
|
22
|
+
/** Show original LaTeX on parse failure */
|
|
23
|
+
fallbackToLatex?: boolean;
|
|
24
|
+
/** Maximum recursion depth */
|
|
25
|
+
maxDepth?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Render LaTeX math to Unicode
|
|
29
|
+
*/
|
|
30
|
+
export declare function renderMathToUnicode(latex: string, options?: MathRendererOptions): string;
|
|
31
|
+
/**
|
|
32
|
+
* Render math block with box
|
|
33
|
+
*/
|
|
34
|
+
export declare function renderMathBlock(latex: string, options?: MathRendererOptions): string;
|
|
35
|
+
/**
|
|
36
|
+
* Create math renderer function for use with StreamdownTTY
|
|
37
|
+
*/
|
|
38
|
+
export declare function createMathRenderer(options?: MathRendererOptions): (math: string, block: boolean) => string;
|
|
39
|
+
export default renderMathToUnicode;
|
|
40
|
+
//# sourceMappingURL=math-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math-renderer.d.ts","sourceRoot":"","sources":["../../src/core/math-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwJH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4DD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB,GAChC,MAAM,CA0KR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,mBAAwB,GAChC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,CAO1C;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zero-Dependency Streaming Markdown Parser for TTY
|
|
3
|
+
*
|
|
4
|
+
* A lightweight, high-performance markdown parser designed for terminal output.
|
|
5
|
+
* No external dependencies - pure TypeScript.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Streaming-optimized with incremental parsing
|
|
9
|
+
* - Integrated remend-tty for self-healing
|
|
10
|
+
* - GFM support (tables, task lists, strikethrough)
|
|
11
|
+
* - Context-aware parsing (code blocks, math, thinking)
|
|
12
|
+
* - Object pooling for performance
|
|
13
|
+
*
|
|
14
|
+
* @module parser
|
|
15
|
+
*/
|
|
16
|
+
import { type RemendOptions } from './remend-tty.js';
|
|
17
|
+
export interface Token {
|
|
18
|
+
type: TokenType;
|
|
19
|
+
content: string;
|
|
20
|
+
raw: string;
|
|
21
|
+
depth?: number;
|
|
22
|
+
lang?: string;
|
|
23
|
+
ordered?: boolean;
|
|
24
|
+
checked?: boolean;
|
|
25
|
+
url?: string;
|
|
26
|
+
alt?: string;
|
|
27
|
+
title?: string;
|
|
28
|
+
align?: ('left' | 'center' | 'right' | null)[];
|
|
29
|
+
header?: string[];
|
|
30
|
+
rows?: string[][];
|
|
31
|
+
incomplete?: boolean;
|
|
32
|
+
children?: Token[];
|
|
33
|
+
meta?: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
export type TokenType = 'heading' | 'paragraph' | 'text' | 'strong' | 'em' | 'code' | 'codeblock' | 'blockquote' | 'list' | 'listitem' | 'task' | 'link' | 'image' | 'table' | 'hr' | 'br' | 'del' | 'math-inline' | 'math-block' | 'mermaid' | 'thinking' | 'html' | 'newline';
|
|
36
|
+
export interface ParserOptions {
|
|
37
|
+
/** Enable GFM extensions */
|
|
38
|
+
gfm?: boolean;
|
|
39
|
+
/** Enable math parsing */
|
|
40
|
+
math?: boolean;
|
|
41
|
+
/** Enable mermaid detection */
|
|
42
|
+
mermaid?: boolean;
|
|
43
|
+
/** Enable thinking block parsing */
|
|
44
|
+
thinking?: boolean;
|
|
45
|
+
/** Enable self-healing with remend */
|
|
46
|
+
autoHeal?: boolean;
|
|
47
|
+
/** Remend options */
|
|
48
|
+
remendOptions?: RemendOptions;
|
|
49
|
+
/** Preserve whitespace */
|
|
50
|
+
preserveWhitespace?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Zero-dependency streaming markdown parser
|
|
54
|
+
*/
|
|
55
|
+
export declare class StreamingParser {
|
|
56
|
+
private buffer;
|
|
57
|
+
private tokens;
|
|
58
|
+
private options;
|
|
59
|
+
private lastParsedLength;
|
|
60
|
+
constructor(options?: ParserOptions);
|
|
61
|
+
/**
|
|
62
|
+
* Add a chunk of markdown and return updated tokens
|
|
63
|
+
*/
|
|
64
|
+
addChunk(chunk: string): Token[];
|
|
65
|
+
/**
|
|
66
|
+
* Set complete content
|
|
67
|
+
*/
|
|
68
|
+
setContent(content: string): Token[];
|
|
69
|
+
/**
|
|
70
|
+
* Parse the current buffer
|
|
71
|
+
*/
|
|
72
|
+
parse(): Token[];
|
|
73
|
+
/**
|
|
74
|
+
* Parse block-level elements
|
|
75
|
+
*/
|
|
76
|
+
private parseBlocks;
|
|
77
|
+
/**
|
|
78
|
+
* Parse thinking block
|
|
79
|
+
*/
|
|
80
|
+
private parseThinkingBlock;
|
|
81
|
+
/**
|
|
82
|
+
* Parse code block
|
|
83
|
+
*/
|
|
84
|
+
private parseCodeBlock;
|
|
85
|
+
/**
|
|
86
|
+
* Check if code looks like mermaid
|
|
87
|
+
*/
|
|
88
|
+
private isMermaidCode;
|
|
89
|
+
/**
|
|
90
|
+
* Parse math block
|
|
91
|
+
*/
|
|
92
|
+
private parseMathBlock;
|
|
93
|
+
/**
|
|
94
|
+
* Parse heading
|
|
95
|
+
*/
|
|
96
|
+
private parseHeading;
|
|
97
|
+
/**
|
|
98
|
+
* Parse blockquote
|
|
99
|
+
*/
|
|
100
|
+
private parseBlockquote;
|
|
101
|
+
/**
|
|
102
|
+
* Parse list
|
|
103
|
+
*/
|
|
104
|
+
private parseList;
|
|
105
|
+
/**
|
|
106
|
+
* Parse table (GFM)
|
|
107
|
+
*/
|
|
108
|
+
private parseTable;
|
|
109
|
+
/**
|
|
110
|
+
* Parse a table row
|
|
111
|
+
*/
|
|
112
|
+
private parseTableRow;
|
|
113
|
+
/**
|
|
114
|
+
* Parse table alignments from separator row
|
|
115
|
+
*/
|
|
116
|
+
private parseTableAlignments;
|
|
117
|
+
/**
|
|
118
|
+
* Parse paragraph with inline elements
|
|
119
|
+
*/
|
|
120
|
+
private parseParagraph;
|
|
121
|
+
/**
|
|
122
|
+
* Parse inline elements
|
|
123
|
+
*/
|
|
124
|
+
parseInline(text: string): Token[];
|
|
125
|
+
/**
|
|
126
|
+
* Get current buffer
|
|
127
|
+
*/
|
|
128
|
+
getBuffer(): string;
|
|
129
|
+
/**
|
|
130
|
+
* Get current tokens
|
|
131
|
+
*/
|
|
132
|
+
getTokens(): Token[];
|
|
133
|
+
/**
|
|
134
|
+
* Clear the parser state
|
|
135
|
+
*/
|
|
136
|
+
clear(): void;
|
|
137
|
+
}
|
|
138
|
+
export default StreamingParser;
|
|
139
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"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"}
|