@nicomatt69/streamtty 0.0.1
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/LICENSE +21 -0
- package/README.md +471 -0
- package/dist/ai-sdk-adapter.d.ts +113 -0
- package/dist/ai-sdk-adapter.d.ts.map +1 -0
- package/dist/ai-sdk-adapter.js +304 -0
- package/dist/ai-sdk-adapter.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +188 -0
- package/dist/cli.js.map +1 -0
- package/dist/errors.d.ts +131 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +346 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +185 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +350 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +117 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +323 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/streaming-parser.d.ts +81 -0
- package/dist/parser/streaming-parser.d.ts.map +1 -0
- package/dist/parser/streaming-parser.js +522 -0
- package/dist/parser/streaming-parser.js.map +1 -0
- package/dist/performance.d.ts +139 -0
- package/dist/performance.d.ts.map +1 -0
- package/dist/performance.js +401 -0
- package/dist/performance.js.map +1 -0
- package/dist/plugins/index.d.ts +6 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +22 -0
- package/dist/plugins/index.js.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-inline.js +289 -0
- package/dist/plugins/plugin-system-inline.js.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/plugin-system.js +202 -0
- package/dist/plugins/plugin-system.js.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/harden.js +71 -0
- package/dist/plugins/rehype/harden.js.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/rehype/index.js +21 -0
- package/dist/plugins/rehype/index.js.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/index.js +22 -0
- package/dist/plugins/remark/index.js.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/math.js +22 -0
- package/dist/plugins/remark/math.js.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/remark/mermaid.js +19 -0
- package/dist/plugins/remark/mermaid.js.map +1 -0
- package/dist/plugins/types.d.ts +72 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +3 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/renderer/blessed-renderer.d.ts +92 -0
- package/dist/renderer/blessed-renderer.d.ts.map +1 -0
- package/dist/renderer/blessed-renderer.js +610 -0
- package/dist/renderer/blessed-renderer.js.map +1 -0
- package/dist/renderers/index.d.ts +7 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +21 -0
- package/dist/renderers/index.js.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/math-renderer.js +193 -0
- package/dist/renderers/math-renderer.js.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-ascii.js +260 -0
- package/dist/renderers/mermaid-ascii.js.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/mermaid-renderer.js +298 -0
- package/dist/renderers/mermaid-renderer.js.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/shiki-ansi.js +206 -0
- package/dist/renderers/shiki-ansi.js.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/table-ascii.js +243 -0
- package/dist/renderers/table-ascii.js.map +1 -0
- package/dist/renderers/table-renderer.d.ts +49 -0
- package/dist/renderers/table-renderer.d.ts.map +1 -0
- package/dist/renderers/table-renderer.js +224 -0
- package/dist/renderers/table-renderer.js.map +1 -0
- package/dist/renderers/unicode-math.d.ts +29 -0
- package/dist/renderers/unicode-math.d.ts.map +1 -0
- package/dist/renderers/unicode-math.js +181 -0
- package/dist/renderers/unicode-math.js.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/ansi-sanitizer.js +275 -0
- package/dist/security/ansi-sanitizer.js.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/chunk-processor.js +297 -0
- package/dist/security/chunk-processor.js.map +1 -0
- package/dist/security/index.d.ts +6 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +22 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-validator.d.ts +55 -0
- package/dist/security/input-validator.d.ts.map +1 -0
- package/dist/security/input-validator.js +201 -0
- package/dist/security/input-validator.js.map +1 -0
- package/dist/stream-protocol.d.ts +61 -0
- package/dist/stream-protocol.d.ts.map +1 -0
- package/dist/stream-protocol.js +214 -0
- package/dist/stream-protocol.js.map +1 -0
- package/dist/streamdown-compat.d.ts +74 -0
- package/dist/streamdown-compat.d.ts.map +1 -0
- package/dist/streamdown-compat.js +241 -0
- package/dist/streamdown-compat.js.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/stream-stats.js +217 -0
- package/dist/streaming/stream-stats.js.map +1 -0
- package/dist/streaming-integration.d.ts +71 -0
- package/dist/streaming-integration.d.ts.map +1 -0
- package/dist/streaming-integration.js +194 -0
- package/dist/streaming-integration.js.map +1 -0
- package/dist/themes/index.d.ts +59 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +122 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/types/index.d.ts +222 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.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/plugin-types.js +6 -0
- package/dist/types/plugin-types.js.map +1 -0
- package/dist/types/stream-events.d.ts +71 -0
- package/dist/types/stream-events.d.ts.map +1 -0
- package/dist/types/stream-events.js +10 -0
- package/dist/types/stream-events.js.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/blessed-syntax-highlighter.js +440 -0
- package/dist/utils/blessed-syntax-highlighter.js.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/enhanced-table-renderer.js +376 -0
- package/dist/utils/enhanced-table-renderer.js.map +1 -0
- package/dist/utils/formatting.d.ts +100 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +220 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.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/math-unicode-renderer.js +380 -0
- package/dist/utils/math-unicode-renderer.js.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-renderer.js +325 -0
- package/dist/utils/mermaid-ascii-renderer.js.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/mermaid-ascii.js +181 -0
- package/dist/utils/mermaid-ascii.js.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/shiki-ansi-renderer.js +354 -0
- package/dist/utils/shiki-ansi-renderer.js.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/syntax-highlighter.js +265 -0
- package/dist/utils/syntax-highlighter.js.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-formatter-inline.js +337 -0
- package/dist/utils/table-formatter-inline.js.map +1 -0
- package/dist/utils/table.d.ts +35 -0
- package/dist/utils/table.d.ts.map +1 -0
- package/dist/utils/table.js +197 -0
- package/dist/utils/table.js.map +1 -0
- package/dist/widgets/stream-indicator.d.ts +130 -0
- package/dist/widgets/stream-indicator.d.ts.map +1 -0
- package/dist/widgets/stream-indicator.js +276 -0
- package/dist/widgets/stream-indicator.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AI SDK Stream Adapter
|
|
4
|
+
*
|
|
5
|
+
* This module provides an adapter that handles AI SDK streaming events
|
|
6
|
+
* and formats them appropriately for TTY rendering using streamtty.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AISDKStreamAdapter = void 0;
|
|
10
|
+
const stream_protocol_1 = require("./stream-protocol");
|
|
11
|
+
class AISDKStreamAdapter {
|
|
12
|
+
renderer;
|
|
13
|
+
options;
|
|
14
|
+
constructor(renderer, options = {}) {
|
|
15
|
+
this.renderer = renderer;
|
|
16
|
+
this.options = {
|
|
17
|
+
parseIncompleteMarkdown: true,
|
|
18
|
+
syntaxHighlight: true,
|
|
19
|
+
formatToolCalls: true,
|
|
20
|
+
showThinking: true,
|
|
21
|
+
maxToolResultLength: 200,
|
|
22
|
+
renderTimestamps: false,
|
|
23
|
+
...options
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Handle a stream of AI SDK events
|
|
28
|
+
*/
|
|
29
|
+
async *handleAISDKStream(stream) {
|
|
30
|
+
for await (const event of stream) {
|
|
31
|
+
await this.processEvent(event);
|
|
32
|
+
yield;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Process a single stream event
|
|
37
|
+
*/
|
|
38
|
+
async processEvent(event) {
|
|
39
|
+
// Validate event
|
|
40
|
+
if (!stream_protocol_1.StreamProtocol.validateEvent(event)) {
|
|
41
|
+
console.warn('Invalid stream event:', event);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// Check if event should be rendered
|
|
45
|
+
if (!stream_protocol_1.StreamProtocol.shouldRenderEvent(event, this.options)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Transform and process event
|
|
49
|
+
const transformedEvent = stream_protocol_1.StreamProtocol.transformEvent(event);
|
|
50
|
+
await this.renderEvent(transformedEvent);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Render a validated stream event
|
|
54
|
+
*/
|
|
55
|
+
async renderEvent(event) {
|
|
56
|
+
switch (event.type) {
|
|
57
|
+
case 'text_delta':
|
|
58
|
+
await this.renderTextDelta(event);
|
|
59
|
+
break;
|
|
60
|
+
case 'tool_call':
|
|
61
|
+
await this.renderToolCall(event);
|
|
62
|
+
break;
|
|
63
|
+
case 'tool_result':
|
|
64
|
+
await this.renderToolResult(event);
|
|
65
|
+
break;
|
|
66
|
+
case 'thinking':
|
|
67
|
+
case 'reasoning':
|
|
68
|
+
await this.renderThinking(event);
|
|
69
|
+
break;
|
|
70
|
+
case 'status':
|
|
71
|
+
case 'step':
|
|
72
|
+
await this.renderStatus(event);
|
|
73
|
+
break;
|
|
74
|
+
case 'error':
|
|
75
|
+
await this.renderError(event);
|
|
76
|
+
break;
|
|
77
|
+
case 'start':
|
|
78
|
+
await this.renderStart(event);
|
|
79
|
+
break;
|
|
80
|
+
case 'complete':
|
|
81
|
+
await this.renderComplete(event);
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Render text delta events (streaming text)
|
|
87
|
+
*/
|
|
88
|
+
async renderTextDelta(event) {
|
|
89
|
+
if (event.content) {
|
|
90
|
+
this.renderer.stream(event.content);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Render tool call events
|
|
95
|
+
*/
|
|
96
|
+
async renderToolCall(event) {
|
|
97
|
+
if (!this.options.formatToolCalls) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const formatted = this.formatToolCall(event);
|
|
101
|
+
this.renderer.stream(formatted);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Format a tool call event for display
|
|
105
|
+
*/
|
|
106
|
+
formatToolCall(event) {
|
|
107
|
+
const timestamp = this.options.renderTimestamps && event.metadata?.timestamp
|
|
108
|
+
? `[${new Date(event.metadata.timestamp).toLocaleTimeString()}] `
|
|
109
|
+
: '';
|
|
110
|
+
const toolIcon = this.getToolIcon(event.toolName);
|
|
111
|
+
const formattedArgs = this.formatToolArgs(event.toolArgs);
|
|
112
|
+
return `\n\n${timestamp}${toolIcon} **${event.toolName}**\n\`\`\`json\n${formattedArgs}\n\`\`\`\n\n`;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Render tool result events
|
|
116
|
+
*/
|
|
117
|
+
async renderToolResult(event) {
|
|
118
|
+
const formatted = this.formatToolResult(event);
|
|
119
|
+
this.renderer.stream(formatted);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Format a tool result event for display
|
|
123
|
+
*/
|
|
124
|
+
formatToolResult(event) {
|
|
125
|
+
const timestamp = this.options.renderTimestamps && event.metadata?.timestamp
|
|
126
|
+
? `[${new Date(event.metadata.timestamp).toLocaleTimeString()}] `
|
|
127
|
+
: '';
|
|
128
|
+
const resultPreview = this.formatToolResultContent(event.toolResult);
|
|
129
|
+
const truncated = this.truncateContent(resultPreview, this.options.maxToolResultLength);
|
|
130
|
+
return `\n${timestamp}✓ **Result**: ${truncated}\n\n`;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Format tool result content for display
|
|
134
|
+
*/
|
|
135
|
+
formatToolResultContent(result) {
|
|
136
|
+
if (typeof result === 'string') {
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
if (typeof result === 'object' && result !== null) {
|
|
140
|
+
try {
|
|
141
|
+
return JSON.stringify(result, null, 2);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return String(result);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return String(result);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Truncate content to specified length
|
|
151
|
+
*/
|
|
152
|
+
truncateContent(content, maxLength) {
|
|
153
|
+
if (content.length <= maxLength) {
|
|
154
|
+
return content;
|
|
155
|
+
}
|
|
156
|
+
return content.slice(0, maxLength) + '...';
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Render thinking/reasoning events
|
|
160
|
+
*/
|
|
161
|
+
async renderThinking(event) {
|
|
162
|
+
if (!this.options.showThinking || !event.content) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const formatted = this.formatThinking(event);
|
|
166
|
+
this.renderer.stream(formatted);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Format thinking events for display
|
|
170
|
+
*/
|
|
171
|
+
formatThinking(event) {
|
|
172
|
+
const timestamp = this.options.renderTimestamps && event.metadata?.timestamp
|
|
173
|
+
? `[${new Date(event.metadata.timestamp).toLocaleTimeString()}] `
|
|
174
|
+
: '';
|
|
175
|
+
const icon = event.type === 'reasoning' ? '⚡' : '💭';
|
|
176
|
+
return `\n${timestamp}> ${icon} *${event.content}*\n\n`;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Render status events
|
|
180
|
+
*/
|
|
181
|
+
async renderStatus(event) {
|
|
182
|
+
const formatted = this.formatStatus(event);
|
|
183
|
+
this.renderer.stream(formatted);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Format status events for display
|
|
187
|
+
*/
|
|
188
|
+
formatStatus(event) {
|
|
189
|
+
const timestamp = this.options.renderTimestamps && event.metadata?.timestamp
|
|
190
|
+
? `[${new Date(event.metadata.timestamp).toLocaleTimeString()}] `
|
|
191
|
+
: '';
|
|
192
|
+
const status = event.metadata?.status || 'info';
|
|
193
|
+
const icon = this.getStatusIcon(status);
|
|
194
|
+
return `\n${timestamp}${icon} **${event.content}**\n\n`;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Render error events
|
|
198
|
+
*/
|
|
199
|
+
async renderError(event) {
|
|
200
|
+
const formatted = this.formatError(event);
|
|
201
|
+
this.renderer.stream(formatted);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Format error events for display
|
|
205
|
+
*/
|
|
206
|
+
formatError(event) {
|
|
207
|
+
const timestamp = this.options.renderTimestamps && event.metadata?.timestamp
|
|
208
|
+
? `[${new Date(event.metadata.timestamp).toLocaleTimeString()}] `
|
|
209
|
+
: '';
|
|
210
|
+
const code = event.metadata?.code ? ` (${event.metadata.code})` : '';
|
|
211
|
+
return `\n${timestamp}❌ **Error**${code}: ${event.content}\n\n`;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Render start events
|
|
215
|
+
*/
|
|
216
|
+
async renderStart(event) {
|
|
217
|
+
const timestamp = this.options.renderTimestamps && event.metadata?.timestamp
|
|
218
|
+
? `[${new Date(event.metadata.timestamp).toLocaleTimeString()}] `
|
|
219
|
+
: '';
|
|
220
|
+
this.renderer.stream(`\n${timestamp}🚀 **Starting**...\n\n`);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Render complete events
|
|
224
|
+
*/
|
|
225
|
+
async renderComplete(event) {
|
|
226
|
+
const timestamp = this.options.renderTimestamps && event.metadata?.timestamp
|
|
227
|
+
? `[${new Date(event.metadata.timestamp).toLocaleTimeString()}] `
|
|
228
|
+
: '';
|
|
229
|
+
this.renderer.stream(`\n${timestamp}✅ **Complete**\n\n`);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get appropriate icon for tool name
|
|
233
|
+
*/
|
|
234
|
+
getToolIcon(toolName) {
|
|
235
|
+
const iconMap = {
|
|
236
|
+
'read_file': '📖',
|
|
237
|
+
'write_file': '✏️',
|
|
238
|
+
'edit_file': '🔧',
|
|
239
|
+
'search': '🔍',
|
|
240
|
+
'run_command': '⚡',
|
|
241
|
+
'web_search': '🌐',
|
|
242
|
+
'create_file': '📄',
|
|
243
|
+
'delete_file': '🗑️',
|
|
244
|
+
'list_files': '📁',
|
|
245
|
+
'grep': '🔎',
|
|
246
|
+
'git': '🌿',
|
|
247
|
+
'npm': '📦',
|
|
248
|
+
'docker': '🐳',
|
|
249
|
+
'default': '🔧'
|
|
250
|
+
};
|
|
251
|
+
// Try exact match first
|
|
252
|
+
if (iconMap[toolName]) {
|
|
253
|
+
return iconMap[toolName];
|
|
254
|
+
}
|
|
255
|
+
// Try partial matches
|
|
256
|
+
for (const [key, icon] of Object.entries(iconMap)) {
|
|
257
|
+
if (toolName.includes(key)) {
|
|
258
|
+
return icon;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return iconMap.default;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get appropriate icon for status
|
|
265
|
+
*/
|
|
266
|
+
getStatusIcon(status) {
|
|
267
|
+
const iconMap = {
|
|
268
|
+
'pending': '⏳',
|
|
269
|
+
'running': '🔄',
|
|
270
|
+
'completed': '✅',
|
|
271
|
+
'failed': '❌',
|
|
272
|
+
'info': 'ℹ️',
|
|
273
|
+
'warning': '⚠️',
|
|
274
|
+
'success': '✅',
|
|
275
|
+
'error': '❌'
|
|
276
|
+
};
|
|
277
|
+
return iconMap[status] || iconMap.info;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Format tool arguments for display
|
|
281
|
+
*/
|
|
282
|
+
formatToolArgs(args) {
|
|
283
|
+
try {
|
|
284
|
+
return JSON.stringify(args, null, 2);
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return String(args);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Update adapter options
|
|
292
|
+
*/
|
|
293
|
+
updateOptions(options) {
|
|
294
|
+
this.options = { ...this.options, ...options };
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get current options
|
|
298
|
+
*/
|
|
299
|
+
getOptions() {
|
|
300
|
+
return { ...this.options };
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
exports.AISDKStreamAdapter = AISDKStreamAdapter;
|
|
304
|
+
//# sourceMappingURL=ai-sdk-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-sdk-adapter.js","sourceRoot":"","sources":["../src/ai-sdk-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const index_1 = require("./index");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
function showHelp() {
|
|
42
|
+
console.log(`
|
|
43
|
+
Streamtty - TTY Markdown Streaming Renderer
|
|
44
|
+
|
|
45
|
+
Usage:
|
|
46
|
+
streamtty [options] [file]
|
|
47
|
+
|
|
48
|
+
Options:
|
|
49
|
+
-h, --help Show this help message
|
|
50
|
+
-v, --version Show version
|
|
51
|
+
-s, --stream Enable streaming mode (simulates AI-like streaming)
|
|
52
|
+
--no-incomplete Disable incomplete markdown parsing
|
|
53
|
+
--no-syntax Disable syntax highlighting
|
|
54
|
+
--no-scroll Disable auto-scroll
|
|
55
|
+
-w, --width <number> Set max width (default: 120)
|
|
56
|
+
|
|
57
|
+
Examples:
|
|
58
|
+
streamtty document.md # Render markdown file
|
|
59
|
+
streamtty -s document.md # Render with streaming simulation
|
|
60
|
+
cat README.md | streamtty # Read from stdin
|
|
61
|
+
echo "# Hello **World**" | streamtty # Quick render
|
|
62
|
+
|
|
63
|
+
Keyboard Controls:
|
|
64
|
+
↑/k Scroll up
|
|
65
|
+
↓/j Scroll down
|
|
66
|
+
PageUp Scroll page up
|
|
67
|
+
PageDown Scroll page down
|
|
68
|
+
Home/g Go to top
|
|
69
|
+
End/G Go to bottom
|
|
70
|
+
q/Esc Quit
|
|
71
|
+
`);
|
|
72
|
+
}
|
|
73
|
+
function showVersion() {
|
|
74
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json'), 'utf-8'));
|
|
75
|
+
console.log(`streamtty v${packageJson.version}`);
|
|
76
|
+
}
|
|
77
|
+
async function main() {
|
|
78
|
+
// Parse args
|
|
79
|
+
const options = {
|
|
80
|
+
stream: false,
|
|
81
|
+
parseIncomplete: true,
|
|
82
|
+
syntaxHighlight: true,
|
|
83
|
+
autoScroll: true,
|
|
84
|
+
maxWidth: 120,
|
|
85
|
+
file: null,
|
|
86
|
+
};
|
|
87
|
+
for (let i = 0; i < args.length; i++) {
|
|
88
|
+
const arg = args[i];
|
|
89
|
+
switch (arg) {
|
|
90
|
+
case '-h':
|
|
91
|
+
case '--help':
|
|
92
|
+
showHelp();
|
|
93
|
+
process.exit(0);
|
|
94
|
+
break;
|
|
95
|
+
case '-v':
|
|
96
|
+
case '--version':
|
|
97
|
+
showVersion();
|
|
98
|
+
process.exit(0);
|
|
99
|
+
break;
|
|
100
|
+
case '-s':
|
|
101
|
+
case '--stream':
|
|
102
|
+
options.stream = true;
|
|
103
|
+
break;
|
|
104
|
+
case '--no-incomplete':
|
|
105
|
+
options.parseIncomplete = false;
|
|
106
|
+
break;
|
|
107
|
+
case '--no-syntax':
|
|
108
|
+
options.syntaxHighlight = false;
|
|
109
|
+
break;
|
|
110
|
+
case '--no-scroll':
|
|
111
|
+
options.autoScroll = false;
|
|
112
|
+
break;
|
|
113
|
+
case '-w':
|
|
114
|
+
case '--width':
|
|
115
|
+
i++;
|
|
116
|
+
options.maxWidth = parseInt(args[i], 10);
|
|
117
|
+
break;
|
|
118
|
+
default:
|
|
119
|
+
if (!arg.startsWith('-')) {
|
|
120
|
+
options.file = arg;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Read content
|
|
125
|
+
let content;
|
|
126
|
+
if (options.file) {
|
|
127
|
+
// Read from file
|
|
128
|
+
try {
|
|
129
|
+
content = fs.readFileSync(options.file, 'utf-8');
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
console.error(`Error reading file: ${options.file}`);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else if (!process.stdin.isTTY) {
|
|
137
|
+
// Read from stdin
|
|
138
|
+
const chunks = [];
|
|
139
|
+
for await (const chunk of process.stdin) {
|
|
140
|
+
chunks.push(chunk);
|
|
141
|
+
}
|
|
142
|
+
content = Buffer.concat(chunks).toString('utf-8');
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// No input provided
|
|
146
|
+
console.error('Error: No input provided. Use --help for usage information.');
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
// Create Streamtty instance
|
|
150
|
+
const streamtty = new index_1.Streamtty({
|
|
151
|
+
parseIncompleteMarkdown: options.parseIncomplete,
|
|
152
|
+
syntaxHighlight: options.syntaxHighlight,
|
|
153
|
+
autoScroll: options.autoScroll,
|
|
154
|
+
maxWidth: options.maxWidth,
|
|
155
|
+
});
|
|
156
|
+
// Render content
|
|
157
|
+
if (options.stream) {
|
|
158
|
+
// Simulate streaming
|
|
159
|
+
let index = 0;
|
|
160
|
+
const streamInterval = setInterval(() => {
|
|
161
|
+
if (index < content.length) {
|
|
162
|
+
const chunkSize = Math.floor(Math.random() * 10) + 1;
|
|
163
|
+
const chunk = content.slice(index, index + chunkSize);
|
|
164
|
+
streamtty.stream(chunk);
|
|
165
|
+
index += chunkSize;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
clearInterval(streamInterval);
|
|
169
|
+
}
|
|
170
|
+
}, 50);
|
|
171
|
+
// Handle cleanup
|
|
172
|
+
process.on('SIGINT', () => {
|
|
173
|
+
clearInterval(streamInterval);
|
|
174
|
+
streamtty.destroy();
|
|
175
|
+
process.exit(0);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// Render all at once
|
|
180
|
+
streamtty.setContent(content);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Run CLI
|
|
184
|
+
main().catch(error => {
|
|
185
|
+
console.error('Fatal error:', error);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
});
|
|
188
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive Error Handling
|
|
3
|
+
*
|
|
4
|
+
* This module provides enterprise-level error handling for streamtty,
|
|
5
|
+
* including custom error classes, graceful degradation, and safe rendering.
|
|
6
|
+
*/
|
|
7
|
+
import { StreamEvent } from './types/stream-events';
|
|
8
|
+
/**
|
|
9
|
+
* Base error class for all streamtty errors
|
|
10
|
+
*/
|
|
11
|
+
export declare class StreamttyError extends Error {
|
|
12
|
+
readonly code: string;
|
|
13
|
+
readonly timestamp: number;
|
|
14
|
+
readonly context?: Record<string, any>;
|
|
15
|
+
constructor(message: string, code?: string, context?: Record<string, any>);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parser-related errors
|
|
19
|
+
*/
|
|
20
|
+
export declare class StreamttyParseError extends StreamttyError {
|
|
21
|
+
readonly chunk?: string;
|
|
22
|
+
readonly position?: number;
|
|
23
|
+
constructor(message: string, chunk?: string, position?: number, context?: Record<string, any>);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Renderer-related errors
|
|
27
|
+
*/
|
|
28
|
+
export declare class StreamttyRenderError extends StreamttyError {
|
|
29
|
+
readonly tokens?: any[];
|
|
30
|
+
readonly renderContext?: Record<string, any>;
|
|
31
|
+
constructor(message: string, tokens?: any[], renderContext?: Record<string, any>, context?: Record<string, any>);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* AI SDK adapter errors
|
|
35
|
+
*/
|
|
36
|
+
export declare class StreamttyAISDKError extends StreamttyError {
|
|
37
|
+
readonly event?: StreamEvent;
|
|
38
|
+
readonly adapterContext?: Record<string, any>;
|
|
39
|
+
constructor(message: string, event?: StreamEvent, adapterContext?: Record<string, any>, context?: Record<string, any>);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Configuration errors
|
|
43
|
+
*/
|
|
44
|
+
export declare class StreamttyConfigError extends StreamttyError {
|
|
45
|
+
readonly option?: string;
|
|
46
|
+
readonly value?: any;
|
|
47
|
+
constructor(message: string, option?: string, value?: any, context?: Record<string, any>);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Blessed/TTY related errors
|
|
51
|
+
*/
|
|
52
|
+
export declare class StreamttyTTYError extends StreamttyError {
|
|
53
|
+
readonly ttyOperation?: string;
|
|
54
|
+
readonly blessedContext?: Record<string, any>;
|
|
55
|
+
constructor(message: string, ttyOperation?: string, blessedContext?: Record<string, any>, context?: Record<string, any>);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Performance-related errors
|
|
59
|
+
*/
|
|
60
|
+
export declare class StreamttyPerformanceError extends StreamttyError {
|
|
61
|
+
readonly operation?: string;
|
|
62
|
+
readonly duration?: number;
|
|
63
|
+
readonly threshold?: number;
|
|
64
|
+
constructor(message: string, operation?: string, duration?: number, threshold?: number, context?: Record<string, any>);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Error handler interface
|
|
68
|
+
*/
|
|
69
|
+
export interface ErrorHandler {
|
|
70
|
+
handle(error: Error, context?: Record<string, any>): void | Promise<void>;
|
|
71
|
+
shouldRetry(error: Error, attempt: number): boolean;
|
|
72
|
+
shouldFallback(error: Error): boolean;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Default error handler implementation
|
|
76
|
+
*/
|
|
77
|
+
export declare class DefaultErrorHandler implements ErrorHandler {
|
|
78
|
+
private maxRetries;
|
|
79
|
+
private fallbackEnabled;
|
|
80
|
+
constructor(options?: {
|
|
81
|
+
maxRetries?: number;
|
|
82
|
+
fallbackEnabled?: boolean;
|
|
83
|
+
});
|
|
84
|
+
handle(error: Error, context?: Record<string, any>): void;
|
|
85
|
+
shouldRetry(error: Error, attempt: number): boolean;
|
|
86
|
+
shouldFallback(error: Error): boolean;
|
|
87
|
+
private formatErrorInfo;
|
|
88
|
+
private isCriticalError;
|
|
89
|
+
private isWarning;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Safe operation wrapper
|
|
93
|
+
*/
|
|
94
|
+
export declare class SafeOperation {
|
|
95
|
+
private errorHandler;
|
|
96
|
+
private retryCount;
|
|
97
|
+
constructor(errorHandler?: ErrorHandler);
|
|
98
|
+
/**
|
|
99
|
+
* Execute an operation with error handling and retry logic
|
|
100
|
+
*/
|
|
101
|
+
execute<T>(operation: () => Promise<T>, context?: Record<string, any>): Promise<T | null>;
|
|
102
|
+
/**
|
|
103
|
+
* Execute with fallback
|
|
104
|
+
*/
|
|
105
|
+
private executeFallback;
|
|
106
|
+
private fallbackRender;
|
|
107
|
+
private fallbackAISDK;
|
|
108
|
+
private delay;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Error recovery utilities
|
|
112
|
+
*/
|
|
113
|
+
export declare class ErrorRecovery {
|
|
114
|
+
/**
|
|
115
|
+
* Attempt to recover from a parsing error
|
|
116
|
+
*/
|
|
117
|
+
static recoverFromParseError(error: StreamttyParseError, content: string): string;
|
|
118
|
+
/**
|
|
119
|
+
* Attempt to recover from a render error
|
|
120
|
+
*/
|
|
121
|
+
static recoverFromRenderError(error: StreamttyRenderError, content: string): string;
|
|
122
|
+
/**
|
|
123
|
+
* Attempt to recover from an AI SDK error
|
|
124
|
+
*/
|
|
125
|
+
static recoverFromAISDKError(error: StreamttyAISDKError): string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Global error handler setup
|
|
129
|
+
*/
|
|
130
|
+
export declare function setupGlobalErrorHandling(): void;
|
|
131
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|