@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,243 @@
1
+ "use strict";
2
+ /**
3
+ * Table rendering to ASCII art
4
+ * Handles markdown table parsing and ASCII box generation
5
+ * Inline rendering, no dependencies
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.renderTableToASCII = renderTableToASCII;
9
+ exports.renderMarkdownTableToASCII = renderMarkdownTableToASCII;
10
+ exports.isMarkdownTable = isMarkdownTable;
11
+ exports.extractTable = extractTable;
12
+ /**
13
+ * Parse markdown table format
14
+ * | Header 1 | Header 2 |
15
+ * |----------|----------|
16
+ * | Cell 1 | Cell 2 |
17
+ */
18
+ function parseMarkdownTable(content) {
19
+ const lines = content
20
+ .split('\n')
21
+ .map(l => l.trim())
22
+ .filter(l => l.length > 0 && l.startsWith('|'));
23
+ if (lines.length < 2) {
24
+ return null;
25
+ }
26
+ // Parse header
27
+ const headerLine = lines[0];
28
+ const headers = headerLine
29
+ .split('|')
30
+ .map(h => h.trim())
31
+ .filter(h => h.length > 0);
32
+ // Parse alignment from separator line
33
+ const separatorLine = lines[1];
34
+ const separators = separatorLine
35
+ .split('|')
36
+ .map(s => s.trim())
37
+ .filter(s => s.length > 0);
38
+ const align = separators.map(sep => {
39
+ if (sep.startsWith(':') && sep.endsWith(':'))
40
+ return 'center';
41
+ if (sep.endsWith(':'))
42
+ return 'right';
43
+ if (sep.startsWith(':'))
44
+ return 'left';
45
+ return 'left';
46
+ });
47
+ // Parse rows
48
+ const rows = lines.slice(2).map(line => line
49
+ .split('|')
50
+ .map(cell => cell.trim())
51
+ .filter(cell => cell.length > 0));
52
+ return { headers, rows, align };
53
+ }
54
+ /**
55
+ * Calculate optimal column widths
56
+ */
57
+ function calculateColumnWidths(headers, rows, options = {}) {
58
+ const minWidth = 3;
59
+ const maxWidth = options.maxWidth || 30;
60
+ const colCount = headers.length;
61
+ // Start with header widths
62
+ let widths = headers.map(h => Math.min(h.length + 2, maxWidth));
63
+ // Check row widths
64
+ for (const row of rows) {
65
+ for (let i = 0; i < colCount; i++) {
66
+ const cell = row[i] || '';
67
+ const cellWidth = Math.min(cell.length + 2, maxWidth);
68
+ widths[i] = Math.max(widths[i], cellWidth);
69
+ }
70
+ }
71
+ // Enforce minimums
72
+ widths = widths.map(w => Math.max(w, minWidth));
73
+ return widths;
74
+ }
75
+ /**
76
+ * Wrap text to fit column width
77
+ */
78
+ function wrapCell(text, width) {
79
+ if (text.length <= width) {
80
+ return [text];
81
+ }
82
+ const lines = [];
83
+ let current = text;
84
+ while (current.length > 0) {
85
+ lines.push(current.substring(0, width));
86
+ current = current.substring(width);
87
+ }
88
+ return lines;
89
+ }
90
+ /**
91
+ * Align text within column
92
+ */
93
+ function alignText(text, width, align) {
94
+ const padding = width - text.length;
95
+ if (padding <= 0) {
96
+ return text.substring(0, width);
97
+ }
98
+ switch (align) {
99
+ case 'right':
100
+ return ' '.repeat(padding) + text;
101
+ case 'center':
102
+ return ' '.repeat(Math.floor(padding / 2)) + text + ' '.repeat(Math.ceil(padding / 2));
103
+ case 'left':
104
+ default:
105
+ return text + ' '.repeat(padding);
106
+ }
107
+ }
108
+ /**
109
+ * Get border characters for style
110
+ */
111
+ function getBorderChars(style = 'simple') {
112
+ const chars = {
113
+ simple: {
114
+ topLeft: '┌', topRight: '┐', bottomLeft: '└', bottomRight: '┘',
115
+ horizontal: '─', vertical: '│',
116
+ topTee: '┬', bottomTee: '┴', leftTee: '├', rightTee: '┤',
117
+ cross: '┼',
118
+ },
119
+ rounded: {
120
+ topLeft: '╭', topRight: '╮', bottomLeft: '╰', bottomRight: '╯',
121
+ horizontal: '─', vertical: '│',
122
+ topTee: '┬', bottomTee: '┴', leftTee: '├', rightTee: '┤',
123
+ cross: '┼',
124
+ },
125
+ double: {
126
+ topLeft: '╔', topRight: '╗', bottomLeft: '╚', bottomRight: '╝',
127
+ horizontal: '═', vertical: '║',
128
+ topTee: '╦', bottomTee: '╩', leftTee: '╠', rightTee: '╣',
129
+ cross: '╬',
130
+ },
131
+ };
132
+ return chars[style];
133
+ }
134
+ /**
135
+ * Render table to ASCII art
136
+ */
137
+ function renderTableToASCII(headers, rows, options = {}) {
138
+ if (!headers || headers.length === 0) {
139
+ return '[Empty table]';
140
+ }
141
+ const widths = calculateColumnWidths(headers, rows, options);
142
+ const border = getBorderChars(options.borderStyle || 'simple');
143
+ const align = options.align || headers.map(() => 'left');
144
+ let output = '';
145
+ // Top border
146
+ output += border.topLeft;
147
+ for (let i = 0; i < headers.length; i++) {
148
+ output += border.horizontal.repeat(widths[i]);
149
+ output += i < headers.length - 1 ? border.topTee : border.topRight;
150
+ }
151
+ output += '\n';
152
+ // Header row
153
+ output += border.vertical;
154
+ for (let i = 0; i < headers.length; i++) {
155
+ const aligned = alignText(headers[i], widths[i], align[i] || 'left');
156
+ output += aligned;
157
+ output += border.vertical;
158
+ }
159
+ output += '\n';
160
+ // Header separator
161
+ output += border.leftTee;
162
+ for (let i = 0; i < headers.length; i++) {
163
+ output += border.horizontal.repeat(widths[i]);
164
+ output += i < headers.length - 1 ? border.cross : border.rightTee;
165
+ }
166
+ output += '\n';
167
+ // Data rows
168
+ for (const row of rows) {
169
+ output += border.vertical;
170
+ for (let i = 0; i < headers.length; i++) {
171
+ const cell = row[i] || '';
172
+ const aligned = alignText(cell, widths[i], align[i] || 'left');
173
+ output += aligned;
174
+ output += border.vertical;
175
+ }
176
+ output += '\n';
177
+ }
178
+ // Bottom border
179
+ output += border.bottomLeft;
180
+ for (let i = 0; i < headers.length; i++) {
181
+ output += border.horizontal.repeat(widths[i]);
182
+ output += i < headers.length - 1 ? border.bottomTee : border.bottomRight;
183
+ }
184
+ output += '\n';
185
+ return output;
186
+ }
187
+ /**
188
+ * Parse and render markdown table in one go
189
+ */
190
+ function renderMarkdownTableToASCII(content, options = {}) {
191
+ const parsed = parseMarkdownTable(content);
192
+ if (!parsed) {
193
+ return '[Invalid table format]';
194
+ }
195
+ // Align from separator if not provided
196
+ const finalAlign = options.align || parsed.align;
197
+ return renderTableToASCII(parsed.headers, parsed.rows, {
198
+ ...options,
199
+ align: finalAlign,
200
+ });
201
+ }
202
+ /**
203
+ * Check if content looks like a markdown table
204
+ */
205
+ function isMarkdownTable(content) {
206
+ const lines = content.split('\n').filter(l => l.trim().length > 0);
207
+ if (lines.length < 2) {
208
+ return false;
209
+ }
210
+ // First line has pipes
211
+ if (!lines[0].includes('|')) {
212
+ return false;
213
+ }
214
+ // Second line is separator
215
+ const secondLine = lines[1].trim();
216
+ return /^\|?[\s\-:|]+\|?$/.test(secondLine);
217
+ }
218
+ /**
219
+ * Extract table from markdown content
220
+ */
221
+ function extractTable(content) {
222
+ const lines = content.split('\n');
223
+ let tableStart = -1;
224
+ let tableEnd = -1;
225
+ for (let i = 0; i < lines.length; i++) {
226
+ const line = lines[i].trim();
227
+ if (line.startsWith('|') && tableStart === -1) {
228
+ tableStart = i;
229
+ }
230
+ if (tableStart !== -1 && line.length > 0 && !line.startsWith('|')) {
231
+ tableEnd = i;
232
+ break;
233
+ }
234
+ if (tableStart !== -1 && i === lines.length - 1) {
235
+ tableEnd = i + 1;
236
+ }
237
+ }
238
+ if (tableStart !== -1 && tableEnd !== -1) {
239
+ return lines.slice(tableStart, tableEnd).join('\n');
240
+ }
241
+ return null;
242
+ }
243
+ //# sourceMappingURL=table-ascii.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-ascii.js","sourceRoot":"","sources":["../../src/renderers/table-ascii.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { Widgets } from 'blessed';
2
+ import { ParsedToken } from '../types';
3
+ /**
4
+ * Advanced table renderer for TTY
5
+ * Renders markdown tables with proper alignment and formatting
6
+ */
7
+ export declare class TableRenderer {
8
+ /**
9
+ * Render a table token to a blessed table widget
10
+ */
11
+ render(token: ParsedToken, yOffset: number, parent: Widgets.BoxElement, interactive?: boolean): Widgets.BoxElement;
12
+ /**
13
+ * Parse table token to structured data
14
+ */
15
+ private parseTableToken;
16
+ /**
17
+ * Parse raw markdown table
18
+ */
19
+ private parseMarkdownTable;
20
+ /**
21
+ * Render table with blessed
22
+ */
23
+ private renderTable;
24
+ /**
25
+ * Calculate column widths
26
+ */
27
+ private calculateColumnWidths;
28
+ /**
29
+ * Build table content string
30
+ */
31
+ private buildTableContent;
32
+ /**
33
+ * Align text within column width
34
+ */
35
+ private alignText;
36
+ /**
37
+ * Setup interactive table controls
38
+ */
39
+ private setupTableControls;
40
+ /**
41
+ * Fallback renderer for invalid tables
42
+ */
43
+ private renderFallback;
44
+ }
45
+ /**
46
+ * Singleton instance
47
+ */
48
+ export declare const tableRenderer: TableRenderer;
49
+ //# sourceMappingURL=table-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/table-renderer.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;;GAGG;AACH,qBAAa,aAAa;IACtB;;OAEG;IACH,MAAM,CACF,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,WAAW,GAAE,OAAe,GAC7B,OAAO,CAAC,UAAU;IAgBrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgDnB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACH,OAAO,CAAC,SAAS;IAkBjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,OAAO,CAAC,cAAc;CAuBzB;AAQD;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.tableRenderer = exports.TableRenderer = void 0;
7
+ const blessed_1 = __importDefault(require("blessed"));
8
+ /**
9
+ * Advanced table renderer for TTY
10
+ * Renders markdown tables with proper alignment and formatting
11
+ */
12
+ class TableRenderer {
13
+ /**
14
+ * Render a table token to a blessed table widget
15
+ */
16
+ render(token, yOffset, parent, interactive = false) {
17
+ try {
18
+ // Parse table data from token
19
+ const tableData = this.parseTableToken(token);
20
+ if (!tableData) {
21
+ return this.renderFallback(token, yOffset, parent);
22
+ }
23
+ return this.renderTable(tableData, yOffset, parent, interactive);
24
+ }
25
+ catch (error) {
26
+ console.warn('Failed to render table:', error);
27
+ return this.renderFallback(token, yOffset, parent);
28
+ }
29
+ }
30
+ /**
31
+ * Parse table token to structured data
32
+ */
33
+ parseTableToken(token) {
34
+ try {
35
+ // Token content should be JSON stringified table data
36
+ const parsed = JSON.parse(token.content);
37
+ if (!parsed.header || !parsed.rows) {
38
+ return null;
39
+ }
40
+ return {
41
+ headers: parsed.header.map((h) => h.text || String(h)),
42
+ rows: parsed.rows.map((row) => row.map((cell) => cell.text || String(cell))),
43
+ align: parsed.align || [],
44
+ };
45
+ }
46
+ catch (error) {
47
+ // Try to parse from raw markdown table
48
+ return this.parseMarkdownTable(token.raw || token.content);
49
+ }
50
+ }
51
+ /**
52
+ * Parse raw markdown table
53
+ */
54
+ parseMarkdownTable(markdown) {
55
+ const lines = markdown.trim().split('\n');
56
+ if (lines.length < 3)
57
+ return null;
58
+ // Parse header
59
+ const headers = lines[0]
60
+ .split('|')
61
+ .map(h => h.trim())
62
+ .filter(h => h);
63
+ // Parse alignment from separator line
64
+ const alignLine = lines[1];
65
+ const align = alignLine
66
+ .split('|')
67
+ .map(a => a.trim())
68
+ .filter(a => a)
69
+ .map(a => {
70
+ if (a.startsWith(':') && a.endsWith(':'))
71
+ return 'center';
72
+ if (a.endsWith(':'))
73
+ return 'right';
74
+ return 'left';
75
+ });
76
+ // Parse rows
77
+ const rows = lines.slice(2).map(line => line
78
+ .split('|')
79
+ .map(c => c.trim())
80
+ .filter(c => c));
81
+ return { headers, rows, align };
82
+ }
83
+ /**
84
+ * Render table with blessed
85
+ */
86
+ renderTable(data, yOffset, parent, interactive) {
87
+ const { headers, rows, align } = data;
88
+ // Calculate column widths
89
+ const colWidths = this.calculateColumnWidths(headers, rows);
90
+ // Build table content
91
+ const content = this.buildTableContent(headers, rows, colWidths, align);
92
+ // Create box with table content
93
+ const tableBox = blessed_1.default.box({
94
+ parent,
95
+ top: yOffset,
96
+ left: 0,
97
+ width: '100%-4',
98
+ height: 'shrink',
99
+ content,
100
+ tags: true,
101
+ border: {
102
+ type: 'line',
103
+ },
104
+ style: {
105
+ border: {
106
+ fg: 'cyan',
107
+ },
108
+ },
109
+ padding: {
110
+ left: 1,
111
+ right: 1,
112
+ },
113
+ scrollable: true,
114
+ keys: interactive,
115
+ vi: interactive,
116
+ mouse: interactive,
117
+ });
118
+ if (interactive) {
119
+ this.setupTableControls(tableBox);
120
+ }
121
+ return tableBox;
122
+ }
123
+ /**
124
+ * Calculate column widths
125
+ */
126
+ calculateColumnWidths(headers, rows) {
127
+ const widths = headers.map(h => h.length);
128
+ for (const row of rows) {
129
+ row.forEach((cell, i) => {
130
+ widths[i] = Math.max(widths[i] || 0, cell.length);
131
+ });
132
+ }
133
+ return widths.map(w => Math.min(w + 2, 30)); // Cap at 30 chars
134
+ }
135
+ /**
136
+ * Build table content string
137
+ */
138
+ buildTableContent(headers, rows, widths, align) {
139
+ const lines = [];
140
+ // Header row
141
+ const headerLine = headers
142
+ .map((h, i) => this.alignText(h, widths[i], align[i] || 'left'))
143
+ .join(' │ ');
144
+ lines.push(`{bold}${headerLine}{/bold}`);
145
+ // Separator
146
+ const separator = widths.map(w => '─'.repeat(w)).join('─┼─');
147
+ lines.push(separator);
148
+ // Data rows
149
+ for (const row of rows) {
150
+ const rowLine = row
151
+ .map((cell, i) => this.alignText(cell, widths[i], align[i] || 'left'))
152
+ .join(' │ ');
153
+ lines.push(rowLine);
154
+ }
155
+ return lines.join('\n');
156
+ }
157
+ /**
158
+ * Align text within column width
159
+ */
160
+ alignText(text, width, align) {
161
+ const trimmed = text.substring(0, width);
162
+ switch (align) {
163
+ case 'center':
164
+ const totalPadding = width - trimmed.length;
165
+ const leftPad = Math.floor(totalPadding / 2);
166
+ const rightPad = totalPadding - leftPad;
167
+ return ' '.repeat(leftPad) + trimmed + ' '.repeat(rightPad);
168
+ case 'right':
169
+ return trimmed.padStart(width);
170
+ default: // left
171
+ return trimmed.padEnd(width);
172
+ }
173
+ }
174
+ /**
175
+ * Setup interactive table controls
176
+ */
177
+ setupTableControls(box) {
178
+ // Scroll with arrow keys
179
+ box.key(['up', 'k'], () => {
180
+ box.scroll(-1);
181
+ box.screen.render();
182
+ });
183
+ box.key(['down', 'j'], () => {
184
+ box.scroll(1);
185
+ box.screen.render();
186
+ });
187
+ box.key(['pageup'], () => {
188
+ box.scroll(-(box.height || 10));
189
+ box.screen.render();
190
+ });
191
+ box.key(['pagedown'], () => {
192
+ box.scroll(box.height || 10);
193
+ box.screen.render();
194
+ });
195
+ }
196
+ /**
197
+ * Fallback renderer for invalid tables
198
+ */
199
+ renderFallback(token, yOffset, parent) {
200
+ return blessed_1.default.box({
201
+ parent,
202
+ top: yOffset,
203
+ left: 0,
204
+ width: '100%',
205
+ height: 'shrink',
206
+ content: '{cyan-fg}[Table]{/cyan-fg}',
207
+ tags: true,
208
+ border: {
209
+ type: 'line',
210
+ },
211
+ style: {
212
+ border: {
213
+ fg: 'cyan',
214
+ },
215
+ },
216
+ });
217
+ }
218
+ }
219
+ exports.TableRenderer = TableRenderer;
220
+ /**
221
+ * Singleton instance
222
+ */
223
+ exports.tableRenderer = new TableRenderer();
224
+ //# sourceMappingURL=table-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-renderer.js","sourceRoot":"","sources":["../../src/renderers/table-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * KaTeX/LaTeX → Unicode inline rendering
3
+ * Semplice, niente HTML/blessed, output string puro
4
+ * Compatibile con streaming chunks
5
+ */
6
+ /**
7
+ * Render LaTeX/KaTeX to Unicode string
8
+ * @param latex LaTeX source string
9
+ * @param inline Whether it's inline (true) or display (false) mode
10
+ * @returns Rendered Unicode string
11
+ */
12
+ export declare function renderMathToUnicode(latex: string, inline?: boolean): string;
13
+ /**
14
+ * Render display mode math (block, possibly multi-line)
15
+ */
16
+ export declare function renderMathBlock(latex: string): string;
17
+ /**
18
+ * Render inline math (no newlines)
19
+ */
20
+ export declare function renderMathInline(latex: string): string;
21
+ /**
22
+ * Detect if text contains math expressions
23
+ */
24
+ export declare function containsMath(text: string): boolean;
25
+ /**
26
+ * Extract and process all math expressions in text
27
+ */
28
+ export declare function processMathInText(text: string): string;
29
+ //# sourceMappingURL=unicode-math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicode-math.d.ts","sourceRoot":"","sources":["../../src/renderers/unicode-math.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsDH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,OAAc,GAAG,MAAM,CAyFjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUtD"}