@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
package/dist/errors.js
ADDED
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Comprehensive Error Handling
|
|
4
|
+
*
|
|
5
|
+
* This module provides enterprise-level error handling for streamtty,
|
|
6
|
+
* including custom error classes, graceful degradation, and safe rendering.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ErrorRecovery = exports.SafeOperation = exports.DefaultErrorHandler = exports.StreamttyPerformanceError = exports.StreamttyTTYError = exports.StreamttyConfigError = exports.StreamttyAISDKError = exports.StreamttyRenderError = exports.StreamttyParseError = exports.StreamttyError = void 0;
|
|
10
|
+
exports.setupGlobalErrorHandling = setupGlobalErrorHandling;
|
|
11
|
+
/**
|
|
12
|
+
* Base error class for all streamtty errors
|
|
13
|
+
*/
|
|
14
|
+
class StreamttyError extends Error {
|
|
15
|
+
code;
|
|
16
|
+
timestamp;
|
|
17
|
+
context;
|
|
18
|
+
constructor(message, code = 'STREAMTTY_ERROR', context) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'StreamttyError';
|
|
21
|
+
this.code = code;
|
|
22
|
+
this.timestamp = Date.now();
|
|
23
|
+
this.context = context;
|
|
24
|
+
// Maintain proper stack trace
|
|
25
|
+
if (Error.captureStackTrace) {
|
|
26
|
+
Error.captureStackTrace(this, StreamttyError);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.StreamttyError = StreamttyError;
|
|
31
|
+
/**
|
|
32
|
+
* Parser-related errors
|
|
33
|
+
*/
|
|
34
|
+
class StreamttyParseError extends StreamttyError {
|
|
35
|
+
chunk;
|
|
36
|
+
position;
|
|
37
|
+
constructor(message, chunk, position, context) {
|
|
38
|
+
super(message, 'PARSE_ERROR', { chunk, position, ...context });
|
|
39
|
+
this.name = 'StreamttyParseError';
|
|
40
|
+
this.chunk = chunk;
|
|
41
|
+
this.position = position;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.StreamttyParseError = StreamttyParseError;
|
|
45
|
+
/**
|
|
46
|
+
* Renderer-related errors
|
|
47
|
+
*/
|
|
48
|
+
class StreamttyRenderError extends StreamttyError {
|
|
49
|
+
tokens;
|
|
50
|
+
renderContext;
|
|
51
|
+
constructor(message, tokens, renderContext, context) {
|
|
52
|
+
super(message, 'RENDER_ERROR', { tokens, renderContext, ...context });
|
|
53
|
+
this.name = 'StreamttyRenderError';
|
|
54
|
+
this.tokens = tokens;
|
|
55
|
+
this.renderContext = renderContext;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.StreamttyRenderError = StreamttyRenderError;
|
|
59
|
+
/**
|
|
60
|
+
* AI SDK adapter errors
|
|
61
|
+
*/
|
|
62
|
+
class StreamttyAISDKError extends StreamttyError {
|
|
63
|
+
event;
|
|
64
|
+
adapterContext;
|
|
65
|
+
constructor(message, event, adapterContext, context) {
|
|
66
|
+
super(message, 'AI_SDK_ERROR', { event, adapterContext, ...context });
|
|
67
|
+
this.name = 'StreamttyAISDKError';
|
|
68
|
+
this.event = event;
|
|
69
|
+
this.adapterContext = adapterContext;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.StreamttyAISDKError = StreamttyAISDKError;
|
|
73
|
+
/**
|
|
74
|
+
* Configuration errors
|
|
75
|
+
*/
|
|
76
|
+
class StreamttyConfigError extends StreamttyError {
|
|
77
|
+
option;
|
|
78
|
+
value;
|
|
79
|
+
constructor(message, option, value, context) {
|
|
80
|
+
super(message, 'CONFIG_ERROR', { option, value, ...context });
|
|
81
|
+
this.name = 'StreamttyConfigError';
|
|
82
|
+
this.option = option;
|
|
83
|
+
this.value = value;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.StreamttyConfigError = StreamttyConfigError;
|
|
87
|
+
/**
|
|
88
|
+
* Blessed/TTY related errors
|
|
89
|
+
*/
|
|
90
|
+
class StreamttyTTYError extends StreamttyError {
|
|
91
|
+
ttyOperation;
|
|
92
|
+
blessedContext;
|
|
93
|
+
constructor(message, ttyOperation, blessedContext, context) {
|
|
94
|
+
super(message, 'TTY_ERROR', { ttyOperation, blessedContext, ...context });
|
|
95
|
+
this.name = 'StreamttyTTYError';
|
|
96
|
+
this.ttyOperation = ttyOperation;
|
|
97
|
+
this.blessedContext = blessedContext;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.StreamttyTTYError = StreamttyTTYError;
|
|
101
|
+
/**
|
|
102
|
+
* Performance-related errors
|
|
103
|
+
*/
|
|
104
|
+
class StreamttyPerformanceError extends StreamttyError {
|
|
105
|
+
operation;
|
|
106
|
+
duration;
|
|
107
|
+
threshold;
|
|
108
|
+
constructor(message, operation, duration, threshold, context) {
|
|
109
|
+
super(message, 'PERFORMANCE_ERROR', { operation, duration, threshold, ...context });
|
|
110
|
+
this.name = 'StreamttyPerformanceError';
|
|
111
|
+
this.operation = operation;
|
|
112
|
+
this.duration = duration;
|
|
113
|
+
this.threshold = threshold;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.StreamttyPerformanceError = StreamttyPerformanceError;
|
|
117
|
+
/**
|
|
118
|
+
* Default error handler implementation
|
|
119
|
+
*/
|
|
120
|
+
class DefaultErrorHandler {
|
|
121
|
+
maxRetries = 3;
|
|
122
|
+
fallbackEnabled = true;
|
|
123
|
+
constructor(options = {}) {
|
|
124
|
+
this.maxRetries = options.maxRetries ?? 3;
|
|
125
|
+
this.fallbackEnabled = options.fallbackEnabled ?? true;
|
|
126
|
+
}
|
|
127
|
+
handle(error, context) {
|
|
128
|
+
const errorInfo = this.formatErrorInfo(error, context);
|
|
129
|
+
// Log error based on severity
|
|
130
|
+
if (this.isCriticalError(error)) {
|
|
131
|
+
console.error('🚨 Streamtty Critical Error:', errorInfo);
|
|
132
|
+
}
|
|
133
|
+
else if (this.isWarning(error)) {
|
|
134
|
+
console.warn('⚠️ Streamtty Warning:', errorInfo);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.log('ℹ️ Streamtty Info:', errorInfo);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
shouldRetry(error, attempt) {
|
|
141
|
+
if (attempt >= this.maxRetries) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
// Don't retry critical errors
|
|
145
|
+
if (this.isCriticalError(error)) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
// Retry transient errors
|
|
149
|
+
if (error instanceof StreamttyParseError ||
|
|
150
|
+
error instanceof StreamttyRenderError) {
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
shouldFallback(error) {
|
|
156
|
+
if (!this.fallbackEnabled) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
// Fallback for rendering errors
|
|
160
|
+
if (error instanceof StreamttyRenderError) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
// Fallback for AI SDK errors
|
|
164
|
+
if (error instanceof StreamttyAISDKError) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
formatErrorInfo(error, context) {
|
|
170
|
+
const baseInfo = {
|
|
171
|
+
name: error.name,
|
|
172
|
+
message: error.message,
|
|
173
|
+
timestamp: new Date().toISOString()
|
|
174
|
+
};
|
|
175
|
+
if (error instanceof StreamttyError) {
|
|
176
|
+
return JSON.stringify({
|
|
177
|
+
...baseInfo,
|
|
178
|
+
code: error.code,
|
|
179
|
+
context: error.context,
|
|
180
|
+
additionalContext: context
|
|
181
|
+
}, null, 2);
|
|
182
|
+
}
|
|
183
|
+
return JSON.stringify({
|
|
184
|
+
...baseInfo,
|
|
185
|
+
additionalContext: context
|
|
186
|
+
}, null, 2);
|
|
187
|
+
}
|
|
188
|
+
isCriticalError(error) {
|
|
189
|
+
if (error instanceof StreamttyTTYError) {
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
if (error instanceof StreamttyConfigError) {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
isWarning(error) {
|
|
198
|
+
if (error instanceof StreamttyPerformanceError) {
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.DefaultErrorHandler = DefaultErrorHandler;
|
|
205
|
+
/**
|
|
206
|
+
* Safe operation wrapper
|
|
207
|
+
*/
|
|
208
|
+
class SafeOperation {
|
|
209
|
+
errorHandler;
|
|
210
|
+
retryCount = 0;
|
|
211
|
+
constructor(errorHandler = new DefaultErrorHandler()) {
|
|
212
|
+
this.errorHandler = errorHandler;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Execute an operation with error handling and retry logic
|
|
216
|
+
*/
|
|
217
|
+
async execute(operation, context) {
|
|
218
|
+
const maxAttempts = 3;
|
|
219
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
220
|
+
try {
|
|
221
|
+
const result = await operation();
|
|
222
|
+
this.retryCount = 0; // Reset on success
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
227
|
+
this.errorHandler.handle(err, { attempt, ...context });
|
|
228
|
+
if (this.errorHandler.shouldRetry(err, attempt) && attempt < maxAttempts - 1) {
|
|
229
|
+
// Exponential backoff
|
|
230
|
+
await this.delay(Math.pow(2, attempt) * 100);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (this.errorHandler.shouldFallback(err)) {
|
|
234
|
+
return this.executeFallback(operation, err, context);
|
|
235
|
+
}
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Execute with fallback
|
|
243
|
+
*/
|
|
244
|
+
async executeFallback(operation, originalError, context) {
|
|
245
|
+
try {
|
|
246
|
+
// Implement fallback logic based on error type
|
|
247
|
+
if (originalError instanceof StreamttyRenderError) {
|
|
248
|
+
return this.fallbackRender(originalError, context);
|
|
249
|
+
}
|
|
250
|
+
if (originalError instanceof StreamttyAISDKError) {
|
|
251
|
+
return this.fallbackAISDK(originalError, context);
|
|
252
|
+
}
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
catch (fallbackError) {
|
|
256
|
+
const err = fallbackError instanceof Error ? fallbackError : new Error(String(fallbackError));
|
|
257
|
+
this.errorHandler.handle(err, {
|
|
258
|
+
type: 'fallback_failed',
|
|
259
|
+
originalError: originalError.message,
|
|
260
|
+
...context
|
|
261
|
+
});
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
async fallbackRender(error, context) {
|
|
266
|
+
// Simple text fallback for render errors
|
|
267
|
+
if (error.tokens && Array.isArray(error.tokens)) {
|
|
268
|
+
return error.tokens
|
|
269
|
+
.filter(token => token && token.raw)
|
|
270
|
+
.map(token => token.raw)
|
|
271
|
+
.join(' ');
|
|
272
|
+
}
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
async fallbackAISDK(error, context) {
|
|
276
|
+
// Simple text fallback for AI SDK errors
|
|
277
|
+
if (error.event && error.event.content) {
|
|
278
|
+
return error.event.content;
|
|
279
|
+
}
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
delay(ms) {
|
|
283
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
exports.SafeOperation = SafeOperation;
|
|
287
|
+
/**
|
|
288
|
+
* Error recovery utilities
|
|
289
|
+
*/
|
|
290
|
+
class ErrorRecovery {
|
|
291
|
+
/**
|
|
292
|
+
* Attempt to recover from a parsing error
|
|
293
|
+
*/
|
|
294
|
+
static recoverFromParseError(error, content) {
|
|
295
|
+
if (!error.chunk) {
|
|
296
|
+
return content;
|
|
297
|
+
}
|
|
298
|
+
// Try to remove the problematic chunk
|
|
299
|
+
const recovered = content.replace(error.chunk, '[PARSE_ERROR]');
|
|
300
|
+
return recovered;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Attempt to recover from a render error
|
|
304
|
+
*/
|
|
305
|
+
static recoverFromRenderError(error, content) {
|
|
306
|
+
// Simple text recovery
|
|
307
|
+
return content.replace(/[^\x20-\x7E\n\r\t]/g, '?');
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Attempt to recover from an AI SDK error
|
|
311
|
+
*/
|
|
312
|
+
static recoverFromAISDKError(error) {
|
|
313
|
+
if (error.event) {
|
|
314
|
+
switch (error.event.type) {
|
|
315
|
+
case 'text_delta':
|
|
316
|
+
return error.event.content || '';
|
|
317
|
+
case 'tool_call':
|
|
318
|
+
return `Tool: ${error.event.toolName}`;
|
|
319
|
+
case 'tool_result':
|
|
320
|
+
return 'Tool result received';
|
|
321
|
+
case 'thinking':
|
|
322
|
+
case 'reasoning':
|
|
323
|
+
return `Thinking: ${error.event.content || ''}`;
|
|
324
|
+
default:
|
|
325
|
+
return `Event: ${error.event.type}`;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return 'AI SDK error occurred';
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
exports.ErrorRecovery = ErrorRecovery;
|
|
332
|
+
/**
|
|
333
|
+
* Global error handler setup
|
|
334
|
+
*/
|
|
335
|
+
function setupGlobalErrorHandling() {
|
|
336
|
+
process.on('uncaughtException', (error) => {
|
|
337
|
+
const handler = new DefaultErrorHandler();
|
|
338
|
+
handler.handle(error, { type: 'uncaughtException' });
|
|
339
|
+
});
|
|
340
|
+
process.on('unhandledRejection', (reason) => {
|
|
341
|
+
const handler = new DefaultErrorHandler();
|
|
342
|
+
const error = reason instanceof Error ? reason : new Error(String(reason));
|
|
343
|
+
handler.handle(error, { type: 'unhandledRejection' });
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event-Driven Architecture
|
|
3
|
+
*
|
|
4
|
+
* This module provides a comprehensive event system for streamtty,
|
|
5
|
+
* enabling lifecycle hooks, custom event handling, and inter-component communication.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import { StreamEvent } from './types/stream-events';
|
|
9
|
+
/**
|
|
10
|
+
* Streamtty event types
|
|
11
|
+
*/
|
|
12
|
+
export type StreamttyEventType = 'streamtty:init' | 'streamtty:destroy' | 'streamtty:clear' | 'streamtty:render' | 'streamtty:error' | 'parser:chunk' | 'parser:complete' | 'parser:error' | 'renderer:start' | 'renderer:complete' | 'renderer:error' | 'ai:event' | 'ai:stream_start' | 'ai:stream_complete' | 'ai:stream_error' | 'ui:keypress' | 'ui:scroll' | 'ui:resize' | 'performance:slow' | 'performance:memory' | 'custom';
|
|
13
|
+
/**
|
|
14
|
+
* Event data interfaces
|
|
15
|
+
*/
|
|
16
|
+
export interface StreamttyEventData {
|
|
17
|
+
timestamp: number;
|
|
18
|
+
source: string;
|
|
19
|
+
context?: Record<string, any>;
|
|
20
|
+
}
|
|
21
|
+
export interface ParserEventData extends StreamttyEventData {
|
|
22
|
+
chunk?: string;
|
|
23
|
+
tokens?: any[];
|
|
24
|
+
error?: Error;
|
|
25
|
+
}
|
|
26
|
+
export interface RendererEventData extends StreamttyEventData {
|
|
27
|
+
tokens?: any[];
|
|
28
|
+
duration?: number;
|
|
29
|
+
error?: Error;
|
|
30
|
+
}
|
|
31
|
+
export interface AIEventData extends StreamttyEventData {
|
|
32
|
+
event?: StreamEvent;
|
|
33
|
+
streamId?: string;
|
|
34
|
+
error?: Error;
|
|
35
|
+
}
|
|
36
|
+
export interface UIEventData extends StreamttyEventData {
|
|
37
|
+
key?: string;
|
|
38
|
+
direction?: 'up' | 'down' | 'left' | 'right';
|
|
39
|
+
delta?: number;
|
|
40
|
+
dimensions?: {
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export interface PerformanceEventData extends StreamttyEventData {
|
|
46
|
+
operation: string;
|
|
47
|
+
duration: number;
|
|
48
|
+
threshold: number;
|
|
49
|
+
memoryUsage?: NodeJS.MemoryUsage;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Event handler types
|
|
53
|
+
*/
|
|
54
|
+
export type StreamttyEventHandler<T = any> = (data: T) => void | Promise<void>;
|
|
55
|
+
export type StreamttyEventFilter<T = any> = (data: T) => boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Enhanced EventEmitter for Streamtty
|
|
58
|
+
*/
|
|
59
|
+
export declare class StreamttyEventEmitter extends EventEmitter {
|
|
60
|
+
private eventHistory;
|
|
61
|
+
private maxHistorySize;
|
|
62
|
+
private filters;
|
|
63
|
+
constructor(maxHistorySize?: number);
|
|
64
|
+
/**
|
|
65
|
+
* Emit an event with automatic timestamp and history tracking
|
|
66
|
+
*/
|
|
67
|
+
emit(event: string, data?: any): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Add event listener with optional filter
|
|
70
|
+
*/
|
|
71
|
+
on<T = any>(event: string, handler: StreamttyEventHandler<T>, filter?: StreamttyEventFilter<T>): this;
|
|
72
|
+
/**
|
|
73
|
+
* Add one-time event listener
|
|
74
|
+
*/
|
|
75
|
+
once<T = any>(event: string, handler: StreamttyEventHandler<T>, filter?: StreamttyEventFilter<T>): this;
|
|
76
|
+
/**
|
|
77
|
+
* Add event filter
|
|
78
|
+
*/
|
|
79
|
+
addFilter<T = any>(event: string, filter: StreamttyEventFilter<T>): this;
|
|
80
|
+
/**
|
|
81
|
+
* Remove event filter
|
|
82
|
+
*/
|
|
83
|
+
removeFilter(event: string, filter?: StreamttyEventFilter): this;
|
|
84
|
+
/**
|
|
85
|
+
* Get event history
|
|
86
|
+
*/
|
|
87
|
+
getHistory(event?: string, limit?: number): Array<{
|
|
88
|
+
type: string;
|
|
89
|
+
data: any;
|
|
90
|
+
timestamp: number;
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* Clear event history
|
|
94
|
+
*/
|
|
95
|
+
clearHistory(): this;
|
|
96
|
+
/**
|
|
97
|
+
* Get event statistics
|
|
98
|
+
*/
|
|
99
|
+
getEventStats(): Record<string, number>;
|
|
100
|
+
private shouldFilterEvent;
|
|
101
|
+
private addToHistory;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Event Bus for inter-component communication
|
|
105
|
+
*/
|
|
106
|
+
export declare class StreamttyEventBus extends StreamttyEventEmitter {
|
|
107
|
+
private components;
|
|
108
|
+
/**
|
|
109
|
+
* Register a component
|
|
110
|
+
*/
|
|
111
|
+
registerComponent(name: string, component: EventEmitter): this;
|
|
112
|
+
/**
|
|
113
|
+
* Unregister a component
|
|
114
|
+
*/
|
|
115
|
+
unregisterComponent(name: string): this;
|
|
116
|
+
/**
|
|
117
|
+
* Get a registered component
|
|
118
|
+
*/
|
|
119
|
+
getComponent<T extends EventEmitter = EventEmitter>(name: string): T | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* Broadcast event to all components
|
|
122
|
+
*/
|
|
123
|
+
broadcast(event: string, data?: any): this;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Lifecycle event manager
|
|
127
|
+
*/
|
|
128
|
+
export declare class StreamttyLifecycle {
|
|
129
|
+
private eventBus;
|
|
130
|
+
private hooks;
|
|
131
|
+
constructor(eventBus: StreamttyEventBus);
|
|
132
|
+
/**
|
|
133
|
+
* Register a lifecycle hook
|
|
134
|
+
*/
|
|
135
|
+
on(event: StreamttyEventType, handler: StreamttyEventHandler): this;
|
|
136
|
+
/**
|
|
137
|
+
* Remove a lifecycle hook
|
|
138
|
+
*/
|
|
139
|
+
off(event: StreamttyEventType, handler: StreamttyEventHandler): this;
|
|
140
|
+
/**
|
|
141
|
+
* Trigger a lifecycle event
|
|
142
|
+
*/
|
|
143
|
+
trigger(event: StreamttyEventType, data?: any): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Trigger multiple lifecycle events
|
|
146
|
+
*/
|
|
147
|
+
triggerMultiple(events: Array<{
|
|
148
|
+
event: StreamttyEventType;
|
|
149
|
+
data?: any;
|
|
150
|
+
}>): Promise<void>;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Event utilities
|
|
154
|
+
*/
|
|
155
|
+
export declare class EventUtils {
|
|
156
|
+
/**
|
|
157
|
+
* Create a debounced event handler
|
|
158
|
+
*/
|
|
159
|
+
static debounce<T>(handler: StreamttyEventHandler<T>, delay: number): StreamttyEventHandler<T>;
|
|
160
|
+
/**
|
|
161
|
+
* Create a throttled event handler
|
|
162
|
+
*/
|
|
163
|
+
static throttle<T>(handler: StreamttyEventHandler<T>, delay: number): StreamttyEventHandler<T>;
|
|
164
|
+
/**
|
|
165
|
+
* Create a retry event handler
|
|
166
|
+
*/
|
|
167
|
+
static retry<T>(handler: StreamttyEventHandler<T>, maxRetries?: number, delay?: number): StreamttyEventHandler<T>;
|
|
168
|
+
/**
|
|
169
|
+
* Create a conditional event handler
|
|
170
|
+
*/
|
|
171
|
+
static conditional<T>(condition: (data: T) => boolean, handler: StreamttyEventHandler<T>): StreamttyEventHandler<T>;
|
|
172
|
+
/**
|
|
173
|
+
* Create a chain of event handlers
|
|
174
|
+
*/
|
|
175
|
+
static chain<T>(...handlers: StreamttyEventHandler<T>[]): StreamttyEventHandler<T>;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Global event bus instance
|
|
179
|
+
*/
|
|
180
|
+
export declare const globalEventBus: StreamttyEventBus;
|
|
181
|
+
/**
|
|
182
|
+
* Setup global error handling for events
|
|
183
|
+
*/
|
|
184
|
+
export declare function setupEventErrorHandling(): void;
|
|
185
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|