@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":"stream-protocol.d.ts","sourceRoot":"","sources":["../src/stream-protocol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EAEX,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,uBAAuB,CAAA;AAE9B,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAWvC;IAEF;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,WAAW;IA8BtD,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAMpC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAItC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAIrC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAKlC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;IAYtD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc;IAWvF;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,aAAa;IAYhB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CACrB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,eAAe;IAWlB;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,aAAa;IAWhB;;OAEG;IACH,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,aAAa;IAWhB;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,EACvD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,WAAW;IAYd;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,UAAU;IAab;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO;IAUvF;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;CAgBpD"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ /**
3
+ * Stream Protocol Implementation
4
+ *
5
+ * This module provides utilities for validating, transforming, and
6
+ * processing stream events according to the AI SDK protocol.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.StreamProtocol = void 0;
10
+ class StreamProtocol {
11
+ static VALID_EVENT_TYPES = new Set([
12
+ 'text_delta',
13
+ 'tool_call',
14
+ 'tool_result',
15
+ 'thinking',
16
+ 'start',
17
+ 'complete',
18
+ 'error',
19
+ 'reasoning',
20
+ 'step',
21
+ 'status'
22
+ ]);
23
+ /**
24
+ * Validate a stream event structure
25
+ */
26
+ static validateEvent(event) {
27
+ if (!event || typeof event !== 'object') {
28
+ return false;
29
+ }
30
+ if (!this.VALID_EVENT_TYPES.has(event.type)) {
31
+ return false;
32
+ }
33
+ // Type-specific validation
34
+ switch (event.type) {
35
+ case 'tool_call':
36
+ return this.validateToolCallEvent(event);
37
+ case 'tool_result':
38
+ return this.validateToolResultEvent(event);
39
+ case 'text_delta':
40
+ return this.validateTextDeltaEvent(event);
41
+ case 'thinking':
42
+ case 'reasoning':
43
+ return this.validateThinkingEvent(event);
44
+ case 'status':
45
+ case 'step':
46
+ return this.validateStatusEvent(event);
47
+ case 'error':
48
+ return this.validateErrorEvent(event);
49
+ default:
50
+ return true;
51
+ }
52
+ }
53
+ static validateToolCallEvent(event) {
54
+ return typeof event.toolName === 'string' &&
55
+ typeof event.toolArgs === 'object' &&
56
+ event.toolArgs !== null;
57
+ }
58
+ static validateToolResultEvent(event) {
59
+ return event.toolResult !== undefined;
60
+ }
61
+ static validateTextDeltaEvent(event) {
62
+ return typeof event.content === 'string';
63
+ }
64
+ static validateThinkingEvent(event) {
65
+ return typeof event.content === 'string';
66
+ }
67
+ static validateStatusEvent(event) {
68
+ return typeof event.content === 'string' &&
69
+ (!event.metadata || typeof event.metadata === 'object');
70
+ }
71
+ static validateErrorEvent(event) {
72
+ return typeof event.content === 'string';
73
+ }
74
+ /**
75
+ * Transform a generic event into a typed event
76
+ */
77
+ static transformEvent(event) {
78
+ const transformed = {
79
+ ...event,
80
+ metadata: {
81
+ timestamp: Date.now(),
82
+ ...event.metadata
83
+ }
84
+ };
85
+ return transformed;
86
+ }
87
+ /**
88
+ * Create a text delta event
89
+ */
90
+ static createTextDelta(content, metadata) {
91
+ return {
92
+ type: 'text_delta',
93
+ content,
94
+ metadata: {
95
+ timestamp: Date.now(),
96
+ ...metadata
97
+ }
98
+ };
99
+ }
100
+ /**
101
+ * Create a tool call event
102
+ */
103
+ static createToolCall(toolName, toolArgs, metadata) {
104
+ return {
105
+ type: 'tool_call',
106
+ toolName,
107
+ toolArgs,
108
+ metadata: {
109
+ timestamp: Date.now(),
110
+ ...metadata
111
+ }
112
+ };
113
+ }
114
+ /**
115
+ * Create a tool result event
116
+ */
117
+ static createToolResult(toolResult, metadata) {
118
+ return {
119
+ type: 'tool_result',
120
+ toolResult,
121
+ metadata: {
122
+ timestamp: Date.now(),
123
+ ...metadata
124
+ }
125
+ };
126
+ }
127
+ /**
128
+ * Create a thinking event
129
+ */
130
+ static createThinking(content, metadata) {
131
+ return {
132
+ type: 'thinking',
133
+ content,
134
+ metadata: {
135
+ timestamp: Date.now(),
136
+ ...metadata
137
+ }
138
+ };
139
+ }
140
+ /**
141
+ * Create a reasoning event
142
+ */
143
+ static createReasoning(content, metadata) {
144
+ return {
145
+ type: 'reasoning',
146
+ content,
147
+ metadata: {
148
+ timestamp: Date.now(),
149
+ ...metadata
150
+ }
151
+ };
152
+ }
153
+ /**
154
+ * Create a status event
155
+ */
156
+ static createStatus(content, status, metadata) {
157
+ return {
158
+ type: 'status',
159
+ content,
160
+ metadata: {
161
+ timestamp: Date.now(),
162
+ status,
163
+ ...metadata
164
+ }
165
+ };
166
+ }
167
+ /**
168
+ * Create an error event
169
+ */
170
+ static createError(content, error, metadata) {
171
+ return {
172
+ type: 'error',
173
+ content,
174
+ metadata: {
175
+ timestamp: Date.now(),
176
+ error,
177
+ code: error?.name || 'UNKNOWN_ERROR',
178
+ ...metadata
179
+ }
180
+ };
181
+ }
182
+ /**
183
+ * Check if an event should be rendered based on options
184
+ */
185
+ static shouldRenderEvent(event, options = {}) {
186
+ switch (event.type) {
187
+ case 'thinking':
188
+ case 'reasoning':
189
+ return options.showThinking !== false;
190
+ default:
191
+ return true;
192
+ }
193
+ }
194
+ /**
195
+ * Get event priority for rendering order
196
+ */
197
+ static getEventPriority(event) {
198
+ const priorities = {
199
+ 'error': 0,
200
+ 'start': 1,
201
+ 'complete': 1,
202
+ 'status': 2,
203
+ 'step': 2,
204
+ 'tool_call': 3,
205
+ 'tool_result': 3,
206
+ 'thinking': 4,
207
+ 'reasoning': 4,
208
+ 'text_delta': 5
209
+ };
210
+ return priorities[event.type] || 10;
211
+ }
212
+ }
213
+ exports.StreamProtocol = StreamProtocol;
214
+ //# sourceMappingURL=stream-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-protocol.js","sourceRoot":"","sources":["../src/stream-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Streamdown-Compatible API
3
+ *
4
+ * This module provides a streamdown-inspired API for streamtty,
5
+ * offering familiar patterns for web developers transitioning to TTY.
6
+ */
7
+ import { Widgets } from 'blessed';
8
+ import { StreamttyOptions } from './index';
9
+ import { StreamEvent, StreamEventType } from './types/stream-events';
10
+ import { MarkdownStyles } from './types';
11
+ export interface StreamRendererOptions extends StreamttyOptions {
12
+ screen?: Widgets.Screen;
13
+ parseIncompleteMarkdown?: boolean;
14
+ syntaxHighlight?: boolean;
15
+ autoScroll?: boolean;
16
+ styles?: Partial<MarkdownStyles>;
17
+ formatToolCalls?: boolean;
18
+ showThinking?: boolean;
19
+ maxToolResultLength?: number;
20
+ renderTimestamps?: boolean;
21
+ }
22
+ export interface StreamRenderer {
23
+ append: (chunk: string) => void;
24
+ appendStructured: (event: StreamEvent) => Promise<void>;
25
+ complete: () => void;
26
+ error: (err: Error) => void;
27
+ destroy: () => void;
28
+ on: (event: string, handler: Function) => void;
29
+ off: (event: string, handler: Function) => void;
30
+ emit: (event: string, ...args: any[]) => void;
31
+ isActive: () => boolean;
32
+ getContent: () => string;
33
+ clear: () => void;
34
+ streamEvents: (events: AsyncGenerator<StreamEvent>) => Promise<void>;
35
+ handleAISDKStream: (stream: AsyncGenerator<StreamEvent>) => AsyncGenerator<void>;
36
+ updateOptions: (options: Partial<StreamRendererOptions>) => void;
37
+ getOptions: () => StreamRendererOptions;
38
+ }
39
+ export interface HookOptions {
40
+ screen?: Widgets.Screen;
41
+ autoDestroy?: boolean;
42
+ }
43
+ export interface StreamHook {
44
+ renderer: StreamRenderer | null;
45
+ isActive: boolean;
46
+ destroy: () => void;
47
+ append: (chunk: string) => void;
48
+ appendStructured: (event: StreamEvent) => Promise<void>;
49
+ complete: () => void;
50
+ error: (err: Error) => void;
51
+ }
52
+ /**
53
+ * Create a streamdown-compatible renderer
54
+ */
55
+ export declare function createStreamRenderer(options?: StreamRendererOptions): StreamRenderer;
56
+ /**
57
+ * Hook-style API for React-like patterns
58
+ */
59
+ export declare function useStreamRenderer(options?: HookOptions): StreamHook;
60
+ /**
61
+ * Utility function to create a simple text streamer
62
+ */
63
+ export declare function createTextStreamer(options?: StreamRendererOptions): StreamRenderer;
64
+ /**
65
+ * Utility function to create an AI SDK streamer
66
+ */
67
+ export declare function createAIStreamer(options?: StreamRendererOptions): StreamRenderer;
68
+ /**
69
+ * Utility function to create a debug streamer with timestamps
70
+ */
71
+ export declare function createDebugStreamer(options?: StreamRendererOptions): StreamRenderer;
72
+ export type { StreamEvent, StreamEventType };
73
+ export { StreamProtocol } from './stream-protocol';
74
+ //# sourceMappingURL=streamdown-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamdown-compat.d.ts","sourceRoot":"","sources":["../src/streamdown-compat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ /**
3
+ * Streamdown-Compatible API
4
+ *
5
+ * This module provides a streamdown-inspired API for streamtty,
6
+ * offering familiar patterns for web developers transitioning to TTY.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.StreamProtocol = void 0;
10
+ exports.createStreamRenderer = createStreamRenderer;
11
+ exports.useStreamRenderer = useStreamRenderer;
12
+ exports.createTextStreamer = createTextStreamer;
13
+ exports.createAIStreamer = createAIStreamer;
14
+ exports.createDebugStreamer = createDebugStreamer;
15
+ const events_1 = require("events");
16
+ const index_1 = require("./index");
17
+ /**
18
+ * Create a streamdown-compatible renderer
19
+ */
20
+ function createStreamRenderer(options = {}) {
21
+ const streamtty = new index_1.Streamtty(options);
22
+ const eventEmitter = new events_1.EventEmitter();
23
+ let isDestroyed = false;
24
+ const renderer = {
25
+ // Core streaming methods
26
+ append: (chunk) => {
27
+ if (isDestroyed)
28
+ return;
29
+ try {
30
+ streamtty.stream(chunk);
31
+ eventEmitter.emit('chunk', chunk);
32
+ eventEmitter.emit('append', chunk);
33
+ }
34
+ catch (error) {
35
+ eventEmitter.emit('error', error);
36
+ }
37
+ },
38
+ appendStructured: async (event) => {
39
+ if (isDestroyed)
40
+ return;
41
+ try {
42
+ await streamtty.streamEvent(event);
43
+ eventEmitter.emit('event', event);
44
+ eventEmitter.emit('structured', event);
45
+ }
46
+ catch (error) {
47
+ eventEmitter.emit('error', error);
48
+ }
49
+ },
50
+ complete: () => {
51
+ if (isDestroyed)
52
+ return;
53
+ eventEmitter.emit('complete');
54
+ eventEmitter.emit('finish');
55
+ },
56
+ error: (err) => {
57
+ eventEmitter.emit('error', err);
58
+ },
59
+ destroy: () => {
60
+ if (isDestroyed)
61
+ return;
62
+ isDestroyed = true;
63
+ streamtty.destroy();
64
+ eventEmitter.removeAllListeners();
65
+ eventEmitter.emit('destroy');
66
+ },
67
+ // Event system
68
+ on: (event, handler) => {
69
+ eventEmitter.on(event, handler);
70
+ },
71
+ off: (event, handler) => {
72
+ eventEmitter.off(event, handler);
73
+ },
74
+ emit: (event, ...args) => {
75
+ eventEmitter.emit(event, ...args);
76
+ },
77
+ // State management
78
+ isActive: () => !isDestroyed,
79
+ getContent: () => {
80
+ if (isDestroyed)
81
+ return '';
82
+ return streamtty.getContent();
83
+ },
84
+ clear: () => {
85
+ if (isDestroyed)
86
+ return;
87
+ streamtty.clear();
88
+ eventEmitter.emit('clear');
89
+ },
90
+ // AI SDK specific methods
91
+ streamEvents: async (events) => {
92
+ if (isDestroyed)
93
+ return;
94
+ try {
95
+ await streamtty.streamEvents(events);
96
+ eventEmitter.emit('eventsComplete');
97
+ }
98
+ catch (error) {
99
+ eventEmitter.emit('error', error);
100
+ }
101
+ },
102
+ handleAISDKStream: async function* (stream) {
103
+ if (isDestroyed)
104
+ return;
105
+ try {
106
+ for await (const _ of streamtty.handleAISDKStream(stream)) {
107
+ yield;
108
+ }
109
+ }
110
+ catch (error) {
111
+ eventEmitter.emit('error', error);
112
+ }
113
+ },
114
+ // Configuration
115
+ updateOptions: (newOptions) => {
116
+ if (isDestroyed)
117
+ return;
118
+ // Update streamtty options
119
+ streamtty.updateAIOptions(newOptions);
120
+ eventEmitter.emit('optionsUpdated', newOptions);
121
+ },
122
+ getOptions: () => {
123
+ return {
124
+ ...streamtty.getAIOptions(),
125
+ screen: streamtty.getScreen(),
126
+ parseIncompleteMarkdown: streamtty.getAIOptions().parseIncompleteMarkdown,
127
+ syntaxHighlight: streamtty.getAIOptions().syntaxHighlight,
128
+ autoScroll: true, // streamtty default
129
+ styles: {}, // Could be enhanced to expose streamtty styles
130
+ formatToolCalls: streamtty.getAIOptions().formatToolCalls,
131
+ showThinking: streamtty.getAIOptions().showThinking,
132
+ maxToolResultLength: streamtty.getAIOptions().maxToolResultLength,
133
+ renderTimestamps: streamtty.getAIOptions().renderTimestamps
134
+ };
135
+ }
136
+ };
137
+ return renderer;
138
+ }
139
+ /**
140
+ * Hook-style API for React-like patterns
141
+ */
142
+ function useStreamRenderer(options = {}) {
143
+ let renderer = null;
144
+ let isActive = false;
145
+ const createRenderer = () => {
146
+ if (renderer)
147
+ return;
148
+ renderer = createStreamRenderer({
149
+ screen: options.screen
150
+ });
151
+ renderer.on('destroy', () => {
152
+ isActive = false;
153
+ renderer = null;
154
+ });
155
+ isActive = true;
156
+ };
157
+ const destroy = () => {
158
+ if (renderer) {
159
+ renderer.destroy();
160
+ }
161
+ renderer = null;
162
+ isActive = false;
163
+ };
164
+ const append = (chunk) => {
165
+ if (!renderer)
166
+ createRenderer();
167
+ renderer?.append(chunk);
168
+ };
169
+ const appendStructured = async (event) => {
170
+ if (!renderer)
171
+ createRenderer();
172
+ await renderer?.appendStructured(event);
173
+ };
174
+ const complete = () => {
175
+ if (!renderer)
176
+ createRenderer();
177
+ renderer?.complete();
178
+ };
179
+ const error = (err) => {
180
+ if (!renderer)
181
+ createRenderer();
182
+ renderer?.error(err);
183
+ };
184
+ // Auto-cleanup on process exit if enabled
185
+ if (options.autoDestroy !== false) {
186
+ process.on('exit', destroy);
187
+ process.on('SIGINT', destroy);
188
+ process.on('SIGTERM', destroy);
189
+ }
190
+ return {
191
+ renderer,
192
+ isActive,
193
+ destroy,
194
+ append,
195
+ appendStructured,
196
+ complete,
197
+ error
198
+ };
199
+ }
200
+ /**
201
+ * Utility function to create a simple text streamer
202
+ */
203
+ function createTextStreamer(options = {}) {
204
+ const renderer = createStreamRenderer(options);
205
+ // Enhanced append method for text streaming
206
+ const originalAppend = renderer.append;
207
+ renderer.append = (chunk) => {
208
+ // Add some basic formatting for text streams
209
+ const formattedChunk = chunk.replace(/\n/g, '\n\n');
210
+ originalAppend(formattedChunk);
211
+ };
212
+ return renderer;
213
+ }
214
+ /**
215
+ * Utility function to create an AI SDK streamer
216
+ */
217
+ function createAIStreamer(options = {}) {
218
+ const aiOptions = {
219
+ formatToolCalls: true,
220
+ showThinking: true,
221
+ maxToolResultLength: 200,
222
+ renderTimestamps: false,
223
+ ...options
224
+ };
225
+ return createStreamRenderer(aiOptions);
226
+ }
227
+ /**
228
+ * Utility function to create a debug streamer with timestamps
229
+ */
230
+ function createDebugStreamer(options = {}) {
231
+ const debugOptions = {
232
+ renderTimestamps: true,
233
+ formatToolCalls: true,
234
+ showThinking: true,
235
+ ...options
236
+ };
237
+ return createStreamRenderer(debugOptions);
238
+ }
239
+ var stream_protocol_1 = require("./stream-protocol");
240
+ Object.defineProperty(exports, "StreamProtocol", { enumerable: true, get: function () { return stream_protocol_1.StreamProtocol; } });
241
+ //# sourceMappingURL=streamdown-compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamdown-compat.js","sourceRoot":"","sources":["../src/streamdown-compat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Stream Statistics Tracker
3
+ * Lightweight metrics for streaming progress
4
+ */
5
+ export interface StreamStats {
6
+ chunksReceived: number;
7
+ bytesReceived: number;
8
+ tokensGenerated: number;
9
+ elapsedMs: number;
10
+ throughputBytesPerSec: number;
11
+ parseErrors: number;
12
+ }
13
+ /**
14
+ * Track streaming statistics without overhead
15
+ */
16
+ export declare class StreamStatsTracker {
17
+ private startTime;
18
+ private stats;
19
+ private lastUpdateTime;
20
+ private sampleWindow;
21
+ constructor();
22
+ /**
23
+ * Record a processed chunk
24
+ */
25
+ recordChunk(bytes: number, tokens?: number): void;
26
+ /**
27
+ * Record parse error
28
+ */
29
+ recordError(): void;
30
+ /**
31
+ * Update calculated metrics
32
+ */
33
+ private updateMetrics;
34
+ /**
35
+ * Get current stats
36
+ */
37
+ getStats(): StreamStats;
38
+ /**
39
+ * Get formatted progress string
40
+ */
41
+ getProgressString(total?: number): string;
42
+ /**
43
+ * Get compact progress bar
44
+ */
45
+ getProgressBar(width?: number, total?: number): string;
46
+ /**
47
+ * Format bytes to human readable
48
+ */
49
+ private formatBytes;
50
+ /**
51
+ * Reset tracker
52
+ */
53
+ reset(): void;
54
+ /**
55
+ * Get estimated time remaining
56
+ */
57
+ getETA(total: number): string;
58
+ /**
59
+ * Get average throughput
60
+ */
61
+ getAverageThroughput(): number;
62
+ }
63
+ /**
64
+ * Simple progress reporter
65
+ */
66
+ export interface ProgressReporter {
67
+ onProgress?(stats: StreamStats, message?: string): void;
68
+ onComplete?(stats: StreamStats): void;
69
+ onError?(error: Error): void;
70
+ }
71
+ /**
72
+ * Stream processor with stats
73
+ */
74
+ export declare class StreamProcessor {
75
+ private tracker;
76
+ private reporter?;
77
+ private reportInterval;
78
+ private totalBytes?;
79
+ constructor(reporter?: ProgressReporter, totalBytes?: number);
80
+ /**
81
+ * Process chunk with tracking
82
+ */
83
+ processChunk(chunk: string, processor: (c: string) => Promise<void>): Promise<void>;
84
+ /**
85
+ * Get stats
86
+ */
87
+ getStats(): StreamStats;
88
+ /**
89
+ * Complete processing
90
+ */
91
+ complete(): void;
92
+ /**
93
+ * Reset
94
+ */
95
+ reset(): void;
96
+ }
97
+ //# sourceMappingURL=stream-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-stats.d.ts","sourceRoot":"","sources":["../../src/streaming/stream-stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,YAAY,CAAgB;;IAcpC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,IAAI;IAOpD;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,QAAQ,IAAI,WAAW;IAKvB;;OAEG;IACH,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAkBzC;;OAEG;IACH,cAAc,CAAC,KAAK,GAAE,MAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAS1D;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAmB7B;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAK/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,UAAU,CAAC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM;IAK5D;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzF;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}