@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.
Files changed (199) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +471 -0
  3. package/dist/ai-sdk-adapter.d.ts +113 -0
  4. package/dist/ai-sdk-adapter.d.ts.map +1 -0
  5. package/dist/ai-sdk-adapter.js +304 -0
  6. package/dist/ai-sdk-adapter.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +188 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/errors.d.ts +131 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +346 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/events.d.ts +185 -0
  16. package/dist/events.d.ts.map +1 -0
  17. package/dist/events.js +350 -0
  18. package/dist/events.js.map +1 -0
  19. package/dist/index.d.ts +117 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +323 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/parser/streaming-parser.d.ts +81 -0
  24. package/dist/parser/streaming-parser.d.ts.map +1 -0
  25. package/dist/parser/streaming-parser.js +522 -0
  26. package/dist/parser/streaming-parser.js.map +1 -0
  27. package/dist/performance.d.ts +139 -0
  28. package/dist/performance.d.ts.map +1 -0
  29. package/dist/performance.js +401 -0
  30. package/dist/performance.js.map +1 -0
  31. package/dist/plugins/index.d.ts +6 -0
  32. package/dist/plugins/index.d.ts.map +1 -0
  33. package/dist/plugins/index.js +22 -0
  34. package/dist/plugins/index.js.map +1 -0
  35. package/dist/plugins/plugin-system-inline.d.ts +116 -0
  36. package/dist/plugins/plugin-system-inline.d.ts.map +1 -0
  37. package/dist/plugins/plugin-system-inline.js +289 -0
  38. package/dist/plugins/plugin-system-inline.js.map +1 -0
  39. package/dist/plugins/plugin-system.d.ts +65 -0
  40. package/dist/plugins/plugin-system.d.ts.map +1 -0
  41. package/dist/plugins/plugin-system.js +202 -0
  42. package/dist/plugins/plugin-system.js.map +1 -0
  43. package/dist/plugins/rehype/harden.d.ts +15 -0
  44. package/dist/plugins/rehype/harden.d.ts.map +1 -0
  45. package/dist/plugins/rehype/harden.js +71 -0
  46. package/dist/plugins/rehype/harden.js.map +1 -0
  47. package/dist/plugins/rehype/index.d.ts +5 -0
  48. package/dist/plugins/rehype/index.d.ts.map +1 -0
  49. package/dist/plugins/rehype/index.js +21 -0
  50. package/dist/plugins/rehype/index.js.map +1 -0
  51. package/dist/plugins/remark/index.d.ts +6 -0
  52. package/dist/plugins/remark/index.d.ts.map +1 -0
  53. package/dist/plugins/remark/index.js +22 -0
  54. package/dist/plugins/remark/index.js.map +1 -0
  55. package/dist/plugins/remark/math.d.ts +7 -0
  56. package/dist/plugins/remark/math.d.ts.map +1 -0
  57. package/dist/plugins/remark/math.js +22 -0
  58. package/dist/plugins/remark/math.js.map +1 -0
  59. package/dist/plugins/remark/mermaid.d.ts +7 -0
  60. package/dist/plugins/remark/mermaid.d.ts.map +1 -0
  61. package/dist/plugins/remark/mermaid.js +19 -0
  62. package/dist/plugins/remark/mermaid.js.map +1 -0
  63. package/dist/plugins/types.d.ts +72 -0
  64. package/dist/plugins/types.d.ts.map +1 -0
  65. package/dist/plugins/types.js +3 -0
  66. package/dist/plugins/types.js.map +1 -0
  67. package/dist/renderer/blessed-renderer.d.ts +92 -0
  68. package/dist/renderer/blessed-renderer.d.ts.map +1 -0
  69. package/dist/renderer/blessed-renderer.js +610 -0
  70. package/dist/renderer/blessed-renderer.js.map +1 -0
  71. package/dist/renderers/index.d.ts +7 -0
  72. package/dist/renderers/index.d.ts.map +1 -0
  73. package/dist/renderers/index.js +21 -0
  74. package/dist/renderers/index.js.map +1 -0
  75. package/dist/renderers/math-renderer.d.ts +49 -0
  76. package/dist/renderers/math-renderer.d.ts.map +1 -0
  77. package/dist/renderers/math-renderer.js +193 -0
  78. package/dist/renderers/math-renderer.js.map +1 -0
  79. package/dist/renderers/mermaid-ascii.d.ts +14 -0
  80. package/dist/renderers/mermaid-ascii.d.ts.map +1 -0
  81. package/dist/renderers/mermaid-ascii.js +260 -0
  82. package/dist/renderers/mermaid-ascii.js.map +1 -0
  83. package/dist/renderers/mermaid-renderer.d.ts +79 -0
  84. package/dist/renderers/mermaid-renderer.d.ts.map +1 -0
  85. package/dist/renderers/mermaid-renderer.js +298 -0
  86. package/dist/renderers/mermaid-renderer.js.map +1 -0
  87. package/dist/renderers/shiki-ansi.d.ts +48 -0
  88. package/dist/renderers/shiki-ansi.d.ts.map +1 -0
  89. package/dist/renderers/shiki-ansi.js +206 -0
  90. package/dist/renderers/shiki-ansi.js.map +1 -0
  91. package/dist/renderers/table-ascii.d.ts +30 -0
  92. package/dist/renderers/table-ascii.d.ts.map +1 -0
  93. package/dist/renderers/table-ascii.js +243 -0
  94. package/dist/renderers/table-ascii.js.map +1 -0
  95. package/dist/renderers/table-renderer.d.ts +49 -0
  96. package/dist/renderers/table-renderer.d.ts.map +1 -0
  97. package/dist/renderers/table-renderer.js +224 -0
  98. package/dist/renderers/table-renderer.js.map +1 -0
  99. package/dist/renderers/unicode-math.d.ts +29 -0
  100. package/dist/renderers/unicode-math.d.ts.map +1 -0
  101. package/dist/renderers/unicode-math.js +181 -0
  102. package/dist/renderers/unicode-math.js.map +1 -0
  103. package/dist/security/ansi-sanitizer.d.ts +71 -0
  104. package/dist/security/ansi-sanitizer.d.ts.map +1 -0
  105. package/dist/security/ansi-sanitizer.js +275 -0
  106. package/dist/security/ansi-sanitizer.js.map +1 -0
  107. package/dist/security/chunk-processor.d.ts +81 -0
  108. package/dist/security/chunk-processor.d.ts.map +1 -0
  109. package/dist/security/chunk-processor.js +297 -0
  110. package/dist/security/chunk-processor.js.map +1 -0
  111. package/dist/security/index.d.ts +6 -0
  112. package/dist/security/index.d.ts.map +1 -0
  113. package/dist/security/index.js +22 -0
  114. package/dist/security/index.js.map +1 -0
  115. package/dist/security/input-validator.d.ts +55 -0
  116. package/dist/security/input-validator.d.ts.map +1 -0
  117. package/dist/security/input-validator.js +201 -0
  118. package/dist/security/input-validator.js.map +1 -0
  119. package/dist/stream-protocol.d.ts +61 -0
  120. package/dist/stream-protocol.d.ts.map +1 -0
  121. package/dist/stream-protocol.js +214 -0
  122. package/dist/stream-protocol.js.map +1 -0
  123. package/dist/streamdown-compat.d.ts +74 -0
  124. package/dist/streamdown-compat.d.ts.map +1 -0
  125. package/dist/streamdown-compat.js +241 -0
  126. package/dist/streamdown-compat.js.map +1 -0
  127. package/dist/streaming/stream-stats.d.ts +97 -0
  128. package/dist/streaming/stream-stats.d.ts.map +1 -0
  129. package/dist/streaming/stream-stats.js +217 -0
  130. package/dist/streaming/stream-stats.js.map +1 -0
  131. package/dist/streaming-integration.d.ts +71 -0
  132. package/dist/streaming-integration.d.ts.map +1 -0
  133. package/dist/streaming-integration.js +194 -0
  134. package/dist/streaming-integration.js.map +1 -0
  135. package/dist/themes/index.d.ts +59 -0
  136. package/dist/themes/index.d.ts.map +1 -0
  137. package/dist/themes/index.js +122 -0
  138. package/dist/themes/index.js.map +1 -0
  139. package/dist/types/index.d.ts +222 -0
  140. package/dist/types/index.d.ts.map +1 -0
  141. package/dist/types/index.js +3 -0
  142. package/dist/types/index.js.map +1 -0
  143. package/dist/types/plugin-types.d.ts +5 -0
  144. package/dist/types/plugin-types.d.ts.map +1 -0
  145. package/dist/types/plugin-types.js +6 -0
  146. package/dist/types/plugin-types.js.map +1 -0
  147. package/dist/types/stream-events.d.ts +71 -0
  148. package/dist/types/stream-events.d.ts.map +1 -0
  149. package/dist/types/stream-events.js +10 -0
  150. package/dist/types/stream-events.js.map +1 -0
  151. package/dist/utils/blessed-syntax-highlighter.d.ts +124 -0
  152. package/dist/utils/blessed-syntax-highlighter.d.ts.map +1 -0
  153. package/dist/utils/blessed-syntax-highlighter.js +440 -0
  154. package/dist/utils/blessed-syntax-highlighter.js.map +1 -0
  155. package/dist/utils/enhanced-table-renderer.d.ts +77 -0
  156. package/dist/utils/enhanced-table-renderer.d.ts.map +1 -0
  157. package/dist/utils/enhanced-table-renderer.js +376 -0
  158. package/dist/utils/enhanced-table-renderer.js.map +1 -0
  159. package/dist/utils/formatting.d.ts +100 -0
  160. package/dist/utils/formatting.d.ts.map +1 -0
  161. package/dist/utils/formatting.js +220 -0
  162. package/dist/utils/formatting.js.map +1 -0
  163. package/dist/utils/index.d.ts +5 -0
  164. package/dist/utils/index.d.ts.map +1 -0
  165. package/dist/utils/index.js +21 -0
  166. package/dist/utils/index.js.map +1 -0
  167. package/dist/utils/math-unicode-renderer.d.ts +38 -0
  168. package/dist/utils/math-unicode-renderer.d.ts.map +1 -0
  169. package/dist/utils/math-unicode-renderer.js +380 -0
  170. package/dist/utils/math-unicode-renderer.js.map +1 -0
  171. package/dist/utils/mermaid-ascii-renderer.d.ts +20 -0
  172. package/dist/utils/mermaid-ascii-renderer.d.ts.map +1 -0
  173. package/dist/utils/mermaid-ascii-renderer.js +325 -0
  174. package/dist/utils/mermaid-ascii-renderer.js.map +1 -0
  175. package/dist/utils/mermaid-ascii.d.ts +53 -0
  176. package/dist/utils/mermaid-ascii.d.ts.map +1 -0
  177. package/dist/utils/mermaid-ascii.js +181 -0
  178. package/dist/utils/mermaid-ascii.js.map +1 -0
  179. package/dist/utils/shiki-ansi-renderer.d.ts +29 -0
  180. package/dist/utils/shiki-ansi-renderer.d.ts.map +1 -0
  181. package/dist/utils/shiki-ansi-renderer.js +354 -0
  182. package/dist/utils/shiki-ansi-renderer.js.map +1 -0
  183. package/dist/utils/syntax-highlighter.d.ts +87 -0
  184. package/dist/utils/syntax-highlighter.d.ts.map +1 -0
  185. package/dist/utils/syntax-highlighter.js +265 -0
  186. package/dist/utils/syntax-highlighter.js.map +1 -0
  187. package/dist/utils/table-formatter-inline.d.ts +37 -0
  188. package/dist/utils/table-formatter-inline.d.ts.map +1 -0
  189. package/dist/utils/table-formatter-inline.js +337 -0
  190. package/dist/utils/table-formatter-inline.js.map +1 -0
  191. package/dist/utils/table.d.ts +35 -0
  192. package/dist/utils/table.d.ts.map +1 -0
  193. package/dist/utils/table.js +197 -0
  194. package/dist/utils/table.js.map +1 -0
  195. package/dist/widgets/stream-indicator.d.ts +130 -0
  196. package/dist/widgets/stream-indicator.d.ts.map +1 -0
  197. package/dist/widgets/stream-indicator.js +276 -0
  198. package/dist/widgets/stream-indicator.js.map +1 -0
  199. package/package.json +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../src/performance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ /**
3
+ * Performance Monitoring
4
+ *
5
+ * This module provides lightweight performance tracking for streamtty operations,
6
+ * including parse/render times, memory usage, and performance warnings.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.globalPerformanceMonitor = exports.PerformanceUtils = exports.PerformanceMonitor = void 0;
10
+ exports.trackPerformance = trackPerformance;
11
+ const events_1 = require("./events");
12
+ class PerformanceMonitor {
13
+ config;
14
+ metrics = [];
15
+ activeOperations = new Map();
16
+ eventEmitter;
17
+ sampleCounter = 0;
18
+ constructor(config = {}, eventEmitter) {
19
+ this.config = {
20
+ enabled: true,
21
+ thresholds: {
22
+ parseTime: 100, // 100ms
23
+ renderTime: 50, // 50ms
24
+ memoryUsage: 100, // 100MB
25
+ chunkSize: 1024 * 1024, // 1MB
26
+ tokenCount: 1000 // 1000 tokens
27
+ },
28
+ sampleRate: 1.0, // Track all operations by default
29
+ maxHistorySize: 1000,
30
+ enableWarnings: true,
31
+ enableMemoryTracking: true,
32
+ ...config
33
+ };
34
+ this.eventEmitter = eventEmitter || new events_1.StreamttyEventEmitter();
35
+ }
36
+ /**
37
+ * Start timing an operation
38
+ */
39
+ startOperation(operation, metadata) {
40
+ if (!this.shouldSample()) {
41
+ return '';
42
+ }
43
+ const operationId = `${operation}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
44
+ const metric = {
45
+ operation,
46
+ startTime: performance.now(),
47
+ memoryBefore: this.config.enableMemoryTracking ? process.memoryUsage() : undefined,
48
+ metadata
49
+ };
50
+ this.activeOperations.set(operationId, metric);
51
+ this.eventEmitter.emit('performance:operation_start', {
52
+ operationId,
53
+ operation,
54
+ metadata
55
+ });
56
+ return operationId;
57
+ }
58
+ /**
59
+ * End timing an operation
60
+ */
61
+ endOperation(operationId) {
62
+ if (!operationId || !this.activeOperations.has(operationId)) {
63
+ return null;
64
+ }
65
+ const metric = this.activeOperations.get(operationId);
66
+ this.activeOperations.delete(operationId);
67
+ const endTime = performance.now();
68
+ const duration = endTime - metric.startTime;
69
+ metric.endTime = endTime;
70
+ metric.duration = duration;
71
+ if (this.config.enableMemoryTracking) {
72
+ metric.memoryAfter = process.memoryUsage();
73
+ if (metric.memoryBefore && metric.memoryAfter) {
74
+ metric.memoryDelta = {
75
+ rss: metric.memoryAfter.rss - metric.memoryBefore.rss,
76
+ heapTotal: metric.memoryAfter.heapTotal - metric.memoryBefore.heapTotal,
77
+ heapUsed: metric.memoryAfter.heapUsed - metric.memoryBefore.heapUsed,
78
+ external: metric.memoryAfter.external - metric.memoryBefore.external,
79
+ arrayBuffers: metric.memoryAfter.arrayBuffers - metric.memoryBefore.arrayBuffers
80
+ };
81
+ }
82
+ }
83
+ this.addMetric(metric);
84
+ this.checkThresholds(metric);
85
+ this.eventEmitter.emit('performance:operation_end', metric);
86
+ return metric;
87
+ }
88
+ /**
89
+ * Measure a function execution
90
+ */
91
+ async measure(operation, fn, metadata) {
92
+ const operationId = this.startOperation(operation, metadata);
93
+ try {
94
+ const result = await fn();
95
+ this.endOperation(operationId);
96
+ return result;
97
+ }
98
+ catch (error) {
99
+ this.endOperation(operationId);
100
+ throw error;
101
+ }
102
+ }
103
+ /**
104
+ * Measure synchronous function execution
105
+ */
106
+ measureSync(operation, fn, metadata) {
107
+ const operationId = this.startOperation(operation, metadata);
108
+ try {
109
+ const result = fn();
110
+ this.endOperation(operationId);
111
+ return result;
112
+ }
113
+ catch (error) {
114
+ this.endOperation(operationId);
115
+ throw error;
116
+ }
117
+ }
118
+ /**
119
+ * Get performance statistics
120
+ */
121
+ getStats(operation) {
122
+ const relevantMetrics = operation
123
+ ? this.metrics.filter(m => m.operation === operation)
124
+ : this.metrics;
125
+ if (relevantMetrics.length === 0) {
126
+ return {
127
+ totalOperations: 0,
128
+ averageDuration: 0,
129
+ minDuration: 0,
130
+ maxDuration: 0,
131
+ slowOperations: 0,
132
+ memoryUsage: {
133
+ current: process.memoryUsage(),
134
+ peak: 0,
135
+ average: 0
136
+ },
137
+ recentMetrics: []
138
+ };
139
+ }
140
+ const durations = relevantMetrics.map(m => m.duration || 0);
141
+ const averageDuration = durations.reduce((a, b) => a + b, 0) / durations.length;
142
+ const minDuration = Math.min(...durations);
143
+ const maxDuration = Math.max(...durations);
144
+ const slowOperations = relevantMetrics.filter(m => this.isSlowOperation(m.operation, m.duration || 0)).length;
145
+ const memoryMetrics = relevantMetrics
146
+ .filter(m => m.memoryAfter)
147
+ .map(m => m.memoryAfter.heapUsed / 1024 / 1024); // Convert to MB
148
+ const memoryUsage = {
149
+ current: process.memoryUsage(),
150
+ peak: memoryMetrics.length > 0 ? Math.max(...memoryMetrics) : 0,
151
+ average: memoryMetrics.length > 0 ? memoryMetrics.reduce((a, b) => a + b, 0) / memoryMetrics.length : 0
152
+ };
153
+ const recentMetrics = relevantMetrics.slice(-10); // Last 10 operations
154
+ return {
155
+ totalOperations: relevantMetrics.length,
156
+ averageDuration,
157
+ minDuration,
158
+ maxDuration,
159
+ slowOperations,
160
+ memoryUsage,
161
+ recentMetrics
162
+ };
163
+ }
164
+ /**
165
+ * Get operation breakdown
166
+ */
167
+ getOperationBreakdown() {
168
+ const breakdown = {};
169
+ for (const metric of this.metrics) {
170
+ const operation = metric.operation;
171
+ const duration = metric.duration || 0;
172
+ if (!breakdown[operation]) {
173
+ breakdown[operation] = {
174
+ count: 0,
175
+ totalDuration: 0,
176
+ slowCount: 0
177
+ };
178
+ }
179
+ breakdown[operation].count++;
180
+ breakdown[operation].totalDuration += duration;
181
+ if (this.isSlowOperation(operation, duration)) {
182
+ breakdown[operation].slowCount++;
183
+ }
184
+ }
185
+ // Calculate averages
186
+ const result = {};
187
+ for (const [operation, data] of Object.entries(breakdown)) {
188
+ result[operation] = {
189
+ ...data,
190
+ averageDuration: data.totalDuration / data.count
191
+ };
192
+ }
193
+ return result;
194
+ }
195
+ /**
196
+ * Clear metrics history
197
+ */
198
+ clearMetrics() {
199
+ this.metrics = [];
200
+ this.activeOperations.clear();
201
+ this.eventEmitter.emit('performance:metrics_cleared');
202
+ }
203
+ /**
204
+ * Update configuration
205
+ */
206
+ updateConfig(config) {
207
+ this.config = { ...this.config, ...config };
208
+ this.eventEmitter.emit('performance:config_updated', this.config);
209
+ }
210
+ /**
211
+ * Get current configuration
212
+ */
213
+ getConfig() {
214
+ return { ...this.config };
215
+ }
216
+ /**
217
+ * Check if operation should be sampled
218
+ */
219
+ shouldSample() {
220
+ if (!this.config.enabled) {
221
+ return false;
222
+ }
223
+ this.sampleCounter++;
224
+ return (this.sampleCounter * this.config.sampleRate) % 1 < this.config.sampleRate;
225
+ }
226
+ /**
227
+ * Add metric to history
228
+ */
229
+ addMetric(metric) {
230
+ this.metrics.push(metric);
231
+ // Trim history if it exceeds max size
232
+ if (this.metrics.length > this.config.maxHistorySize) {
233
+ this.metrics = this.metrics.slice(-this.config.maxHistorySize);
234
+ }
235
+ }
236
+ /**
237
+ * Check if operation exceeds thresholds
238
+ */
239
+ checkThresholds(metric) {
240
+ if (!this.config.enableWarnings) {
241
+ return;
242
+ }
243
+ const operation = metric.operation;
244
+ const duration = metric.duration || 0;
245
+ // Check duration thresholds
246
+ if (this.isSlowOperation(operation, duration)) {
247
+ this.eventEmitter.emit('performance:slow_operation', {
248
+ operation,
249
+ duration,
250
+ threshold: this.getThresholdForOperation(operation),
251
+ metadata: metric.metadata
252
+ });
253
+ if (this.config.enableWarnings) {
254
+ console.warn(`⚠️ Slow ${operation} operation: ${duration.toFixed(2)}ms (threshold: ${this.getThresholdForOperation(operation)}ms)`);
255
+ }
256
+ }
257
+ // Check memory thresholds
258
+ if (metric.memoryAfter) {
259
+ const memoryMB = metric.memoryAfter.heapUsed / 1024 / 1024;
260
+ if (memoryMB > this.config.thresholds.memoryUsage) {
261
+ this.eventEmitter.emit('performance:high_memory', {
262
+ operation,
263
+ memoryMB,
264
+ threshold: this.config.thresholds.memoryUsage,
265
+ memoryUsage: metric.memoryAfter
266
+ });
267
+ if (this.config.enableWarnings) {
268
+ console.warn(`⚠️ High memory usage: ${memoryMB.toFixed(2)}MB (threshold: ${this.config.thresholds.memoryUsage}MB)`);
269
+ }
270
+ }
271
+ }
272
+ // Check chunk size if available
273
+ if (metric.metadata?.chunkSize) {
274
+ const chunkSize = metric.metadata.chunkSize;
275
+ if (chunkSize > this.config.thresholds.chunkSize) {
276
+ this.eventEmitter.emit('performance:large_chunk', {
277
+ operation,
278
+ chunkSize,
279
+ threshold: this.config.thresholds.chunkSize,
280
+ metadata: metric.metadata
281
+ });
282
+ }
283
+ }
284
+ // Check token count if available
285
+ if (metric.metadata?.tokenCount) {
286
+ const tokenCount = metric.metadata.tokenCount;
287
+ if (tokenCount > this.config.thresholds.tokenCount) {
288
+ this.eventEmitter.emit('performance:many_tokens', {
289
+ operation,
290
+ tokenCount,
291
+ threshold: this.config.thresholds.tokenCount,
292
+ metadata: metric.metadata
293
+ });
294
+ }
295
+ }
296
+ }
297
+ /**
298
+ * Check if operation is slow
299
+ */
300
+ isSlowOperation(operation, duration) {
301
+ const threshold = this.getThresholdForOperation(operation);
302
+ return duration > threshold;
303
+ }
304
+ /**
305
+ * Get threshold for operation type
306
+ */
307
+ getThresholdForOperation(operation) {
308
+ if (operation.includes('parse')) {
309
+ return this.config.thresholds.parseTime;
310
+ }
311
+ if (operation.includes('render')) {
312
+ return this.config.thresholds.renderTime;
313
+ }
314
+ return Math.max(this.config.thresholds.parseTime, this.config.thresholds.renderTime);
315
+ }
316
+ }
317
+ exports.PerformanceMonitor = PerformanceMonitor;
318
+ /**
319
+ * Performance utilities
320
+ */
321
+ class PerformanceUtils {
322
+ /**
323
+ * Format duration in human-readable format
324
+ */
325
+ static formatDuration(ms) {
326
+ if (ms < 1) {
327
+ return `${(ms * 1000).toFixed(0)}μs`;
328
+ }
329
+ if (ms < 1000) {
330
+ return `${ms.toFixed(2)}ms`;
331
+ }
332
+ return `${(ms / 1000).toFixed(2)}s`;
333
+ }
334
+ /**
335
+ * Format memory usage in human-readable format
336
+ */
337
+ static formatMemory(bytes) {
338
+ const units = ['B', 'KB', 'MB', 'GB'];
339
+ let size = bytes;
340
+ let unitIndex = 0;
341
+ while (size >= 1024 && unitIndex < units.length - 1) {
342
+ size /= 1024;
343
+ unitIndex++;
344
+ }
345
+ return `${size.toFixed(2)}${units[unitIndex]}`;
346
+ }
347
+ /**
348
+ * Create a performance report
349
+ */
350
+ static createReport(monitor) {
351
+ const stats = monitor.getStats();
352
+ const breakdown = monitor.getOperationBreakdown();
353
+ let report = '📊 Streamtty Performance Report\n';
354
+ report += '='.repeat(40) + '\n\n';
355
+ report += `Total Operations: ${stats.totalOperations}\n`;
356
+ report += `Average Duration: ${this.formatDuration(stats.averageDuration)}\n`;
357
+ report += `Min Duration: ${this.formatDuration(stats.minDuration)}\n`;
358
+ report += `Max Duration: ${this.formatDuration(stats.maxDuration)}\n`;
359
+ report += `Slow Operations: ${stats.slowOperations}\n\n`;
360
+ report += 'Memory Usage:\n';
361
+ report += ` Current: ${this.formatMemory(stats.memoryUsage.current.heapUsed)}\n`;
362
+ report += ` Peak: ${this.formatMemory(stats.memoryUsage.peak * 1024 * 1024)}\n`;
363
+ report += ` Average: ${this.formatMemory(stats.memoryUsage.average * 1024 * 1024)}\n\n`;
364
+ report += 'Operation Breakdown:\n';
365
+ for (const [operation, data] of Object.entries(breakdown)) {
366
+ report += ` ${operation}:\n`;
367
+ report += ` Count: ${data.count}\n`;
368
+ report += ` Avg Duration: ${this.formatDuration(data.averageDuration)}\n`;
369
+ report += ` Total Duration: ${this.formatDuration(data.totalDuration)}\n`;
370
+ report += ` Slow Count: ${data.slowCount}\n\n`;
371
+ }
372
+ return report;
373
+ }
374
+ }
375
+ exports.PerformanceUtils = PerformanceUtils;
376
+ /**
377
+ * Global performance monitor instance
378
+ */
379
+ exports.globalPerformanceMonitor = new PerformanceMonitor();
380
+ /**
381
+ * Decorator for automatic performance tracking
382
+ */
383
+ function trackPerformance(operation, metadata) {
384
+ return function (target, propertyKey, descriptor) {
385
+ const originalMethod = descriptor.value;
386
+ descriptor.value = async function (...args) {
387
+ const operationId = exports.globalPerformanceMonitor.startOperation(`${operation}_${propertyKey}`, metadata);
388
+ try {
389
+ const result = await originalMethod.apply(this, args);
390
+ exports.globalPerformanceMonitor.endOperation(operationId);
391
+ return result;
392
+ }
393
+ catch (error) {
394
+ exports.globalPerformanceMonitor.endOperation(operationId);
395
+ throw error;
396
+ }
397
+ };
398
+ return descriptor;
399
+ };
400
+ }
401
+ //# sourceMappingURL=performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../src/performance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Plugin System - Clean Exports
3
+ * Only exports the new inline plugin system
4
+ */
5
+ export * from './plugin-system-inline';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Plugin System - Clean Exports
4
+ * Only exports the new inline plugin system
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ __exportStar(require("./plugin-system-inline"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,yDAAuC"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Inline Plugin System for StreamTTY
3
+ * Minimal but powerful plugin architecture
4
+ */
5
+ import { ParsedToken } from '../types';
6
+ /**
7
+ * Plugin context - passed to all hooks
8
+ */
9
+ export interface PluginContext {
10
+ isStreaming: boolean;
11
+ totalChunksProcessed: number;
12
+ lastChunkSize: number;
13
+ }
14
+ /**
15
+ * Plugin definition
16
+ */
17
+ export interface StreamPlugin {
18
+ name: string;
19
+ version?: string;
20
+ description?: string;
21
+ onInit?(): Promise<void>;
22
+ onDestroy?(): Promise<void>;
23
+ onChunk?(chunk: string, ctx: PluginContext): Promise<string>;
24
+ onTokens?(tokens: ParsedToken[], ctx: PluginContext): Promise<ParsedToken[]>;
25
+ onRender?(content: string, ctx: PluginContext): Promise<string>;
26
+ onError?(error: Error, ctx: PluginContext): Promise<void>;
27
+ onComplete?(stats: StreamStats, ctx: PluginContext): Promise<void>;
28
+ }
29
+ /**
30
+ * Plugin registry and executor
31
+ */
32
+ export declare class PluginRegistry {
33
+ private plugins;
34
+ private context;
35
+ private initialized;
36
+ constructor();
37
+ /**
38
+ * Register a plugin
39
+ */
40
+ register(plugin: StreamPlugin): void;
41
+ /**
42
+ * Unregister a plugin
43
+ */
44
+ unregister(name: string): void;
45
+ /**
46
+ * Initialize all plugins
47
+ */
48
+ init(): Promise<void>;
49
+ /**
50
+ * Destroy all plugins
51
+ */
52
+ destroy(): Promise<void>;
53
+ /**
54
+ * Execute onChunk hooks
55
+ */
56
+ executeChunk(chunk: string): Promise<string>;
57
+ /**
58
+ * Execute onTokens hooks
59
+ */
60
+ executeTokens(tokens: ParsedToken[]): Promise<ParsedToken[]>;
61
+ /**
62
+ * Execute onRender hooks
63
+ */
64
+ executeRender(content: string): Promise<string>;
65
+ /**
66
+ * Execute onError hooks
67
+ */
68
+ executeError(error: Error): Promise<void>;
69
+ /**
70
+ * Execute onComplete hooks
71
+ */
72
+ executeComplete(stats: StreamStats): Promise<void>;
73
+ /**
74
+ * Get plugin by name
75
+ */
76
+ get(name: string): StreamPlugin | undefined;
77
+ /**
78
+ * List all plugins
79
+ */
80
+ list(): StreamPlugin[];
81
+ /**
82
+ * Check if plugin exists
83
+ */
84
+ has(name: string): boolean;
85
+ }
86
+ import { StreamStats } from '../streaming/stream-stats';
87
+ /**
88
+ * Math rendering plugin
89
+ */
90
+ export declare const mathPlugin: StreamPlugin;
91
+ /**
92
+ * Mermaid rendering plugin
93
+ */
94
+ export declare const mermaidPlugin: StreamPlugin;
95
+ /**
96
+ * Security/sanitization plugin
97
+ */
98
+ export declare const securityPlugin: StreamPlugin;
99
+ /**
100
+ * Syntax highlighting plugin
101
+ */
102
+ export declare const syntaxHighlightPlugin: StreamPlugin;
103
+ /**
104
+ * Create default plugin registry with built-in plugins
105
+ */
106
+ export declare function createDefaultRegistry(): PluginRegistry;
107
+ /**
108
+ * Preset plugin configurations
109
+ */
110
+ export declare const PLUGIN_PRESETS: {
111
+ minimal: StreamPlugin[];
112
+ standard: StreamPlugin[];
113
+ full: StreamPlugin[];
114
+ ai: StreamPlugin[];
115
+ };
116
+ //# sourceMappingURL=plugin-system-inline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-system-inline.d.ts","sourceRoot":"","sources":["../../src/plugins/plugin-system-inline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5B,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAGhE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,UAAU,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAS;;IAU5B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAOpC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBlD;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBlE;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBrD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,IAAI,IAAI,YAAY,EAAE;IAItB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3B;AAiBD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,YAiBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,YAiB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAW5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YA0BnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,cAAc,CAUtD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAY1B,CAAC"}